import {AbsQuickLook} from 'scriptable-abstract'; import {MockData} from '../data'; import {MockImage} from '../media/image'; interface QuickLookState { lastPreviewedItem: string | Image | Data | null; } /** * Mock implementation of Scriptable's QuickLook global variable * Provides functionality for previewing various types of content * * @implements QuickLook */ export class MockQuickLook extends AbsQuickLook { static get instance(): MockQuickLook { return super.instance as MockQuickLook; } constructor() { super({ lastPreviewedItem: null, }); } /** * @inheritdoc */ async present(item: string | Image | Data): Promise { // Validate input if (item instanceof MockImage || item instanceof MockData || typeof item === 'string') { this.setState({lastPreviewedItem: item}); } else { throw new Error('Invalid item type for QuickLook preview'); } } /** * @additional * Get the last previewed item */ getLastPreviewedItem(): string | Image | Data | null { return this.state.lastPreviewedItem; } /** * @additional * Clear the preview history */ clear(): void { this.setState({lastPreviewedItem: null}); } }