UNPKG

dockview

Version:

Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support

122 lines (121 loc) 5.33 kB
import { SerializedGridObject } from '../gridview/gridview'; import { Position } from '../dnd/droptarget'; import { GroupviewPanelState, IGroupPanel } from '../groupview/groupPanel'; import { Event } from '../events'; import { IWatermarkRenderer } from '../groupview/types'; import { IPanelDeserializer } from './deserializer'; import { AddGroupOptions, AddPanelOptions, DockviewOptions as DockviewComponentOptions, MovementOptions, TabContextMenuEvent } from './options'; import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview'; import { LayoutMouseEvent } from '../groupview/tab'; import { Orientation } from '../splitview/core/splitview'; import { GroupOptions, GroupPanelViewState } from '../groupview/groupview'; import { GroupviewPanel } from '../groupview/groupviewPanel'; export interface PanelReference { update: (event: { params: { [key: string]: any; }; }) => void; remove: () => void; } export interface SerializedDockview { grid: { root: SerializedGridObject<GroupPanelViewState>; height: number; width: number; orientation: Orientation; }; panels: { [key: string]: GroupviewPanelState; }; activeGroup?: string; options: { tabHeight?: number; }; } export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents'>; export interface IDockviewComponent extends IBaseGrid<GroupviewPanel> { readonly activePanel: IGroupPanel | undefined; readonly totalPanels: number; readonly panels: IGroupPanel[]; tabHeight: number | undefined; deserializer: IPanelDeserializer | undefined; updateOptions(options: DockviewComponentUpdateOptions): void; moveGroupOrPanel(referenceGroup: GroupviewPanel, groupId: string, itemId: string, target: Position, index?: number): void; doSetGroupActive: (group: GroupviewPanel, skipFocus?: boolean) => void; removeGroup: (group: GroupviewPanel) => void; options: DockviewComponentOptions; addPanel(options: AddPanelOptions): IGroupPanel; removePanel(panel: IGroupPanel): void; getGroupPanel: (id: string) => IGroupPanel | undefined; fireMouseEvent(event: LayoutMouseEvent): void; createWatermarkComponent(): IWatermarkRenderer; addEmptyGroup(options?: AddGroupOptions): void; closeAllGroups: () => Promise<boolean>; onTabInteractionEvent: Event<LayoutMouseEvent>; onTabContextMenu: Event<TabContextMenuEvent>; moveToNext(options?: MovementOptions): void; moveToPrevious(options?: MovementOptions): void; setActivePanel(panel: IGroupPanel): void; focus(): void; toJSON(): SerializedDockview; fromJSON(data: SerializedDockview): void; } export declare class DockviewComponent extends BaseGrid<GroupviewPanel> implements IDockviewComponent { private readonly _panels; private readonly dirtyPanels; private readonly debouncedDeque; private readonly _onTabInteractionEvent; readonly onTabInteractionEvent: Event<LayoutMouseEvent>; private readonly _onTabContextMenu; readonly onTabContextMenu: Event<TabContextMenuEvent>; private _deserializer; private panelState; private _api; private _options; get totalPanels(): number; get panels(): IGroupPanel[]; get deserializer(): IPanelDeserializer | undefined; set deserializer(value: IPanelDeserializer | undefined); get options(): DockviewComponentOptions; get activePanel(): IGroupPanel | undefined; set tabHeight(height: number | undefined); get tabHeight(): number | undefined; constructor(element: HTMLElement, options: DockviewComponentOptions); updateOptions(options: DockviewComponentUpdateOptions): void; focus(): void; getGroupPanel(id: string): IGroupPanel | undefined; setActivePanel(panel: IGroupPanel): void; moveToNext(options?: MovementOptions): void; moveToPrevious(options?: MovementOptions): void; private registerPanel; private unregisterPanel; /** * Serialize the current state of the layout * * @returns A JSON respresentation of the layout */ toJSON(): SerializedDockview; fromJSON(data: SerializedDockview): void; closeAllGroups(): Promise<boolean>; fireMouseEvent(event: LayoutMouseEvent): void; addPanel(options: AddPanelOptions): IGroupPanel; removePanel(panel: IGroupPanel): void; createWatermarkComponent(): IWatermarkRenderer; addEmptyGroup(options: AddGroupOptions): void; removeGroup(group: GroupviewPanel): void; moveGroupOrPanel(referenceGroup: GroupviewPanel, groupId: string, itemId: string, target: Position, index?: number): void; doSetGroupActive(group: GroupviewPanel | undefined, skipFocus?: boolean): void; createGroup(options?: GroupOptions): GroupviewPanel; dispose(): void; /** * Ensure the local copy of the layout state is up-to-date */ private syncConfigs; private _addPanel; private createContentComponent; private createTabComponent; private addPanelToNewGroup; private findGroup; private addDirtyPanel; }