dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
122 lines (121 loc) • 5.33 kB
TypeScript
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;
}