import { Dialog } from "./Dialog.js"; import { AutoHideManager } from './AutoHideManager.js'; import { DockConfig, TabStripMode } from "./DockConfig.js"; import { DockLayoutEngine } from "./DockLayoutEngine.js"; import { DockManagerContext } from "./DockManagerContext.js"; import { DockModel } from "./DockModel.js"; import { DockNode } from "./DockNode.js"; import { DockWheel } from "./DockWheel.js"; import { EventHandler } from "./EventHandler.js"; import { NewWindowParams } from "./index.js"; import { IDockContainer } from "./interfaces/IDockContainer.js"; import { ILayoutEventListener } from "./interfaces/ILayoutEventListener.js"; import { IState } from "./interfaces/IState.js"; import { PanelContainer } from "./PanelContainer.js"; import { Point } from "./Point.js"; import { TabPage } from "./TabPage.js"; /** * Dock manager manages all the dock panels in a hierarchy, similar to visual studio. * It owns a Html Div element inside which all panels are docked * Initially the document manager takes up the central space and acts as the root node */ export declare class DockManager { autoHideManager: AutoHideManager; fullscreenPanel?: PanelContainer; /** Toggle container fullscreen controls for existing and future panels. */ setFullscreenEnabled(enabled: boolean): void; element: HTMLElement; context: DockManagerContext; dockWheel: DockWheel; layoutEngine: DockLayoutEngine; mouseMoveHandler: EventHandler; touchMoveHandler: EventHandler; layoutEventListeners: ILayoutEventListener[]; closePanelContainerCallback: (panelContainer: PanelContainer) => Promise; defaultDialogPosition: Point; backgroundContext: HTMLElement; zIndexCounter: number; zIndexTabHost: number; zIndexTabHandle: number; zIndexDialogCounter: number; onKeyPressBound: any; iframes: HTMLIFrameElement[]; _undockEnabled: boolean; getElementCallback: (state: IState) => Promise<{ element: HTMLElement; title: string; }>; private _config; private _activePanel; private _lastPanelNotADialog; private _activeDocument; constructor(element: HTMLElement, config?: DockConfig); get config(): DockConfig; /** Set the default and update all docked and floating tab strips. */ setTabStripMode(mode: TabStripMode): Promise; initialize(): void; onKeyPress(e: KeyboardEvent): void; checkXBounds(container: HTMLElement, currentMousePosition: Point, previousMousePosition: Point, resizeWest: boolean, resizeEast: boolean): number; checkXBoundsWithinDockContainer(container: HTMLElement, currentMousePosition: Point, previousMousePosition: Point, resizeWest: boolean, resizeEast: boolean): number; checkYBounds(container: HTMLElement, currentMousePosition: Point, previousMousePosition: Point, resizeNorth: boolean, resizeSouth: boolean): number; checkYBoundsWithinDockContainer(container: HTMLElement, currentMousePosition: Point, previousMousePosition: Point, resizeNorth: boolean, resizeSouth: boolean): number; rebuildLayout(node: DockNode): void; invalidate(): Promise; resize(width: number, height: number): Promise; /** * Reset the dock model . This happens when the state is loaded from json */ setModel(model: DockModel): void; loadResize(node: DockNode): void; setRootNode(node: DockNode): void; _onDialogDragStarted(sender: Dialog, e: any): void; _onDialogDragEnded(sender: Dialog, e: any): void; private _onMouseMoved; private floatingGroupTarget?; private showFloatingGroupTarget; private findFloatingGroupTarget; /** Merge two floating windows, preserving target order and the dragged active tab. */ mergeDialogs(source: Dialog, target: Dialog): Dialog; /** Disable grouping at runtime, splitting floating groups into individual windows. */ setTabGroupsEnabled(enabled: boolean): void; /** * Perform a DFS (DeepFirstSearch) on the dock model's tree to find the * deepest level panel (i.e. the top-most non-overlapping panel) * that is under the mouse cursor * Retuns null if no node is found under this point */ private _findNodeOnPoint; /** Dock the [dialog] to the left of the [referenceNode] node */ dockDialogLeft(referenceNode: DockNode, dialog: Dialog, outerDock?: boolean): DockNode; /** Dock the [dialog] to the right of the [referenceNode] node */ dockDialogRight(referenceNode: DockNode, dialog: Dialog, outerDock?: boolean): DockNode; /** Dock the [dialog] above the [referenceNode] node */ dockDialogUp(referenceNode: DockNode, dialog: Dialog, outerDock?: boolean): DockNode; /** Dock the [dialog] below the [referenceNode] node */ dockDialogDown(referenceNode: DockNode, dialog: Dialog, outerDock?: boolean): DockNode; /** Dock the [dialog] as a tab inside the [referenceNode] node */ dockDialogFill(referenceNode: DockNode, dialog: Dialog): DockNode; /** Dock the [container] to the left of the [referenceNode] node */ dockLeft(referenceNode: DockNode, container: PanelContainer, ratio: number): DockNode; /** Dock the [container] to the right of the [referenceNode] node */ dockRight(referenceNode: DockNode, container: PanelContainer, ratio: number): DockNode; /** Dock the [container] above the [referenceNode] node */ dockUp(referenceNode: DockNode, container: PanelContainer, ratio: number): DockNode; /** Dock the [container] below the [referenceNode] node */ dockDown(referenceNode: DockNode, container: PanelContainer, ratio: number): DockNode; /** Dock the [container] as a tab inside the [referenceNode] node */ dockFill(referenceNode: DockNode, container: PanelContainer): DockNode; floatDialog(container: PanelContainer, x: number, y: number, grayoutParent?: PanelContainer, disableResize?: boolean): Dialog; private _requestDockDialog; private _checkShowBackgroundContext; private _requestDockContainer; _requestTabReorder(container: IDockContainer, e: any): void; /** Float tabs from one host together, preserving their order and active member. */ requestUndockGroup(panels: PanelContainer[], event?: any, dragOffset?: Point, activePanel?: PanelContainer): Dialog; /** * Undocks a panel and converts it into a floating dialog window * It is assumed that only leaf nodes (panels) can be undocked */ requestUndockToDialog(container: PanelContainer, event: any, dragOffset: Point): Dialog; /** * closes a Panel */ requestClose(container: PanelContainer): void; /** * Opens a Element in a Dialog * It is assumed that only leaf nodes (panels) can be undocked */ openInDialog(container: PanelContainer, event: any, dragOffset: Point, disableResize?: boolean): Dialog; /** Undocks a panel and converts it into a floating dialog window * It is assumed that only leaf nodes (panels) can be undocked */ requestUndock(container: PanelContainer): void; /** * Removes a dock container from the dock layout hierarcy * Returns the node that was removed from the dock tree */ requestRemove(container: PanelContainer): DockNode; getNodeByElementId(id: string): DockNode; getNodeByElement(element: Element): DockNode; /** Finds the node that owns the specified [container] */ private _findNodeFromContainer; findNodeFromContainerElement(containerElement: HTMLElement): DockNode; addLayoutListener(listener: ILayoutEventListener): void; removeLayoutListener(listener: ILayoutEventListener): void; suspendLayout(panel: IDockContainer): void; resumeLayout(panel: IDockContainer): void; notifyOnDock(dockNode: DockNode): void; notifyOnTabsReorder(dockNode: DockNode): void; notifyOnUnDock(dockNode: DockNode): void; notifyOnClosePanel(panel: PanelContainer): void; notifyOnCreateDialog(dialog: Dialog): void; notifyOnHideDialog(dialog: Dialog): void; notifyOnShowDialog(dialog: Dialog): void; notifyOnChangeDialogPosition(dialog: Dialog, x: number, y: number): void; notifyOnContainerResized(dockContainer: IDockContainer): void; notifyOnTabChange(tabpage: TabPage): void; notifyOnActivePanelChange(panel: PanelContainer, oldActive: PanelContainer): void; notifyOnActiveDocumentChange(panel: PanelContainer, oldActive: PanelContainer): Promise; prepareElementForNewWindow: (element: HTMLElement, params: NewWindowParams, newWindow: Window) => HTMLElement; notifyOnNewWindow(panel: PanelContainer, win: Window): void; saveState(): string; loadState(json: string): Promise; getPanels(): PanelContainer[]; undockEnabled(state: boolean): void; /** Toggle auto-hide at runtime. Disabling it re-pins all collapsed panels. */ setAutoHideEnabled(enabled: boolean): void; lockDockState(state: boolean): void; hideCloseButton(state: boolean): void; updatePanels(ids: string[]): PanelContainer[]; getVisiblePanels(): PanelContainer[]; _allPanels(node: DockNode, panels: PanelContainer[]): void; get activeDocument(): PanelContainer; get activePanel(): PanelContainer; set activePanel(value: PanelContainer); }