UNPKG

dockview

Version:

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

155 lines (154 loc) 5.44 kB
import { Position } from '../dnd/droptarget'; import { IDockviewComponent } from '../dockview/dockviewComponent'; import { Event } from '../events'; import { IGridPanelView } from '../gridview/baseComponentGridview'; import { IViewSize } from '../gridview/gridview'; import { CompositeDisposable, IDisposable } from '../lifecycle'; import { PanelInitParameters, PanelUpdateEvent } from '../panel/types'; import { IGroupPanel } from './groupPanel'; import { GroupviewPanel } from './groupviewPanel'; import { DockviewDropTargets } from './dnd'; export declare enum GroupChangeKind2 { ADD_PANEL = "ADD_PANEL", REMOVE_PANEL = "REMOVE_PANEL", PANEL_ACTIVE = "PANEL_ACTIVE", GROUP_ACTIVE = "GROUP_ACTIVE" } export interface DndService { canDisplayOverlay(group: IGroupview, event: DragEvent, target: DockviewDropTargets): boolean; onDrop(group: IGroupview, event: DragEvent, position: Position, index?: number): void; } export interface IGroupItem { id: string; header: { element: HTMLElement; }; body: { element: HTMLElement; }; } interface GroupMoveEvent { groupId: string; itemId: string; target: Position; index?: number; } export interface GroupOptions { readonly panels?: IGroupPanel[]; readonly activePanel?: IGroupPanel; readonly id?: string; tabHeight?: number; } export interface GroupviewChangeEvent { readonly kind: GroupChangeKind2; readonly panel?: IGroupPanel; } export interface GroupPanelViewState { views: string[]; activeView?: string; id: string; } export interface IGroupview extends IDisposable, IGridPanelView { readonly isActive: boolean; readonly size: number; readonly panels: IGroupPanel[]; readonly tabHeight: number | undefined; isPanelActive: (panel: IGroupPanel) => boolean; activePanel: IGroupPanel | undefined; indexOf(panel: IGroupPanel): number; openPanel(panel: IGroupPanel, options?: { index?: number; skipFocus?: boolean; }): void; closePanel(panel: IGroupPanel): Promise<boolean>; closeAllPanels(): Promise<boolean>; containsPanel(panel: IGroupPanel): boolean; removePanel: (panelOrId: IGroupPanel | string) => IGroupPanel; onDidGroupChange: Event<GroupviewChangeEvent>; onMove: Event<GroupMoveEvent>; moveToNext(options?: { panel?: IGroupPanel; suppressRoll?: boolean; }): void; moveToPrevious(options?: { panel?: IGroupPanel; suppressRoll?: boolean; }): void; isContentFocused(): boolean; updateActions(): void; canDisplayOverlay(event: DragEvent, target: DockviewDropTargets): boolean; } export declare class Groupview extends CompositeDisposable implements IGroupview { private readonly container; private accessor; id: string; private readonly options; private readonly parent; private readonly tabsContainer; private readonly contentContainer; private readonly dropTarget; private _activePanel?; private watermark?; private _isGroupActive; private mostRecentlyUsed; private readonly _onDidChange; readonly onDidChange: Event<IViewSize | undefined>; private _width; private _height; private _panels; private readonly _onMove; readonly onMove: Event<GroupMoveEvent>; private readonly _onDidGroupChange; readonly onDidGroupChange: Event<GroupviewChangeEvent>; get element(): HTMLElement; get activePanel(): IGroupPanel | undefined; get tabHeight(): number | undefined; set tabHeight(height: number | undefined); get isActive(): boolean; get panels(): IGroupPanel[]; get size(): number; get isEmpty(): boolean; get minimumHeight(): number; get maximumHeight(): number; get minimumWidth(): number; get maximumWidth(): number; constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupviewPanel); initialize(): void; isContentFocused(): boolean; indexOf(panel: IGroupPanel): number; toJSON(): GroupPanelViewState; moveToNext(options?: { panel?: IGroupPanel; suppressRoll?: boolean; }): void; moveToPrevious(options?: { panel?: IGroupPanel; suppressRoll?: boolean; }): void; containsPanel(panel: IGroupPanel): boolean; init(params: PanelInitParameters): void; update(params: PanelUpdateEvent): void; focus(): void; openPanel(panel: IGroupPanel, options?: { index?: number; skipFocus?: boolean; }): void; removePanel(groupItemOrId: IGroupPanel | string): IGroupPanel; closeAllPanels(): Promise<boolean>; closePanel: (panel: IGroupPanel) => Promise<boolean>; private doClose; isPanelActive(panel: IGroupPanel): boolean; updateActions(): void; setActive(isGroupActive: boolean, skipFocus?: boolean, force?: boolean): void; layout(width: number, height: number): void; private _removePanel; private doRemovePanel; private doAddPanel; private doSetActivePanel; private updateMru; private updateContainer; canDisplayOverlay(dragOverEvent: DragEvent, target: DockviewDropTargets): boolean; private handleDropEvent; dispose(): void; } export {};