import { SplitPanel } from "@lumino/widgets"; import type { HTMLPerspectiveViewerElement, ViewerConfigUpdate } from "@finos/perspective-viewer"; import type * as psp from "@finos/perspective"; import { PerspectiveDockPanel } from "./dockpanel"; import { WorkspaceMenu } from "./menu"; import { PerspectiveViewerWidget } from "./widget"; import { ObservableMap } from "../utils/observable_map"; export interface PerspectiveLayout { children?: PerspectiveLayout[]; widgets?: T[]; sizes: number[]; } export interface ViewerConfigUpdateExt extends ViewerConfigUpdate { table: string; } export interface PerspectiveWorkspaceConfig { sizes: number[]; master: PerspectiveLayout; detail: PerspectiveLayout; viewers: Record; } export declare class PerspectiveWorkspace extends SplitPanel { private dockpanel; private detailPanel; private masterPanel; element: HTMLElement; menu_elem: HTMLElement; private _tables; private listeners; private indicator; private commands; private _menu?; private _minimizedLayoutSlots?; private _minimizedLayout?; private _maximizedWidget?; private _last_updated_state?; constructor(element: HTMLElement); get_context_menu(): WorkspaceMenu | undefined; get_dock_panel(): PerspectiveDockPanel; init_indicator(): HTMLElement; apply_indicator_theme(): void; /*************************************************************************** * * `` Public API * */ addTable(name: string, table: Promise): void; getTable(name: string): psp.Table | Promise; removeTable(name: string): boolean; replaceTable(name: string, table: Promise): void; get tables(): ObservableMap>; save(): Promise<{ viewers: Record; sizes: number[]; detail: import("@lumino/widgets").DockLayout.ILayoutConfig | undefined; master: { widgets: string[]; sizes: number[]; } | undefined; }>; restore(value: PerspectiveWorkspaceConfig): Promise; _capture_widgets(): Generator; _capture_viewers(): Generator; _restore_callback(viewers: Record, starting_viewers: HTMLPerspectiveViewerElement[], starting_widgets: PerspectiveViewerWidget[], master: boolean, widgetName: string): PerspectiveViewerWidget; _validate(table: any): any; _set_listener(name: string, table: psp.Table | Promise): void; _delete_listener(name: string): void; update_widget_for_viewer(viewer: HTMLPerspectiveViewerElement): void; remove_unslotted_widgets(viewers: HTMLPerspectiveViewerElement[]): void; update_details_panel(viewers: HTMLPerspectiveViewerElement[]): void; /*************************************************************************** * * Workspace-level contextmenu actions * */ duplicate(widget: PerspectiveViewerWidget): Promise; toggleMasterDetail(widget: PerspectiveViewerWidget): void; _maximize(widget: PerspectiveViewerWidget): void; _unmaximize(): void; toggleSingleDocument(widget: PerspectiveViewerWidget): void; _filterViewer(viewer: HTMLPerspectiveViewerElement, filters: [string, string, string][], candidates: Set): Promise; onPerspectiveSelect(event: CustomEvent): Promise; makeMaster(widget: PerspectiveViewerWidget): Promise; makeDetail(widget: PerspectiveViewerWidget): void; /*************************************************************************** * * Context Menu * */ createContextMenu(widget: PerspectiveViewerWidget | null): WorkspaceMenu; showContextMenu(widget: PerspectiveViewerWidget | null, event: MouseEvent): void; /*************************************************************************** * * Context Menu * */ clearLayout(): void; setupMasterPanel(sizes: number[]): void; addViewer(config: ViewerConfigUpdateExt, is_global_filter?: boolean): void; /********************************************************************* * Widget helper methods */ _createWidgetAndNode({ config, slot: slotname, }: { config: ViewerConfigUpdateExt; slot?: string; }): PerspectiveViewerWidget; _gen_id(): string; _createNode(slotname?: string): HTMLElement; _createWidget({ config, elem, viewer, }: { config: ViewerConfigUpdateExt; elem?: Element; viewer: HTMLPerspectiveViewerElement; }): PerspectiveViewerWidget; _addWidgetEventListeners(widget: PerspectiveViewerWidget): void; getWidgetByName(name: string): PerspectiveViewerWidget | null; getAllWidgets(): PerspectiveViewerWidget[]; /*************************************************************************** * * `workspace-layout-update` event * */ workspaceUpdated(): Promise; }