import { RenderManager } from '../render/RenderManager'; import { CompactModeSettings } from '../index'; import { ComponentUI } from './extensionMixin.ts'; export declare const ToolbarActionDivider = "divider"; export type ToolbarActionGroup = { key: string; actions: (ToolbarAction | "divider")[]; selectedAction?: ToolbarAction; showDropdown?: boolean; isOnlyCompact?: boolean; isOnlyFull?: boolean; }; export type ToolbarAction = { key: string; notSelectable?: boolean; desc: string; action: Function; iconName: string; iconRender?: Function; isActive?: () => boolean; isHidden?: () => boolean; }; export type HelperAction = { key: string; desc: string; iconName: string; iconRender?: Function; isActive?: () => boolean; dialogRender: (container: HTMLElement) => ComponentUI; }; /** * Base class for any extension for render manager. */ export declare abstract class ExtensionBase extends EventTarget { get [Symbol.toStringTag](): string; /**Owner viewer name. */ readonly viewerName: string; /**Any extension data which can be stored in browser local storage and restored after (any extension settings, buttons state and so one). *State will be saved in local storage with 'tangl-ext-extensionName' key. */ state: any; /**Extension type (ext, mode, control).*/ readonly type: string; /**Is extension need to hide toolbar or not.*/ hideToolbar: boolean; /** * Toolbar action groups exposed by this extension (shown as dropdown buttons). * Populate in {@link added} or update dynamically at runtime. */ actions: Array; /** * Helper dialog actions exposed by this extension. * Populate in {@link added} or update dynamically at runtime. */ helpers: Array; /**Get unique extension name. */ static getName: () => string; /**Get extension title. */ title: string; /**Get compact mode settings. */ compactModeSettings: CompactModeSettings; /**Get unique extension name. */ getName: () => string; private restoreStateHandler; private saveStateHandler; /** * Render function for rendering dedicated toolbar content. * @param container - Parent DOM container. * @group Hooks */ dedicatedToolbarRender(container: HTMLElement): void; /** * Render function for rendering shared toolbar content. * @param container - Parent DOM container. * @group Hooks */ sharedToolbarRender(container: HTMLElement): void; /** * Render function for rendering additional UI above viewer canvas. * @param container - Parent DOM container. * @group Hooks */ uiRender(container: HTMLElement): void; selectGroupAction(group: ToolbarActionGroup, actionKey: string, forceAction?: boolean): void; /** * @param viewerName - Owner viewer name. * @protected */ protected constructor(viewerName: string); /** * Get current {@link RenderManager} instance. */ getRenderManager(): RenderManager; /** * Sets external hook handler for restoring extension state in the local storage. * @param handler - handler hook function. */ setRestoreStateHandler(handler: (stateName: string, state: any) => Promise): this; /** * Sets external hook handler for storing extension state in the local storage. * @param handler - handler hook function. */ setSaveStateHandler(handler: (stateName: string, state: any) => void): this; /** * Save extension state in the local storage. */ saveState(): Promise; /** * Restore extension state from the local storage. */ restoreState(): Promise; /** * Hook when current extension command is changed or finished. * Called by ExtensionManager.setCurrentCommandExtension(). * @group Hooks */ commandChanged(oldCommandName: string, newCommandName: string): void; /** * Hook when extension is added to ExtensionManager. * Called by ExtensionManager.addExtension(). * @group Hooks */ abstract added(): void; /** * Hook when extension is deleted from ExtensionManager. * Called by ExtensionManager.clear(). * @group Hooks */ abstract deleted(): void; }