UNPKG

dockview

Version:

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

99 lines (98 loc) 3.86 kB
import { Emitter, Event } from '../events'; import { Gridview, IGridView } from './gridview'; import { Position } from '../dnd/droptarget'; import { CompositeDisposable, IValueDisposable } from '../lifecycle'; import { ISplitviewStyles, Orientation } from '../splitview/core/splitview'; import { IPanel } from '../panel/types'; import { MovementOptions2 } from '../dockview/options'; import { IGroupPanel } from '../groupview/groupPanel'; export declare enum GroupChangeKind { ADD_PANEL = "ADD_PANEL", REMOVE_PANEL = "REMOVE_PANEL", PANEL_ACTIVE = "PANEL_ACTIVE", GROUP_ACTIVE = "GROUP_ACTIVE", ADD_GROUP = "ADD_GROUP", REMOVE_GROUP = "REMOVE_GROUP", LAYOUT_FROM_JSON = "LAYOUT_FROM_JSON", LAYOUT = "LAYOUT" } export interface GroupChangeEvent { readonly kind: GroupChangeKind; readonly panel?: IGroupPanel; } export declare type Direction = 'left' | 'right' | 'above' | 'below' | 'within'; export declare function toTarget(direction: Direction): Position; export interface BaseGridOptions { readonly proportionalLayout?: boolean; readonly orientation: Orientation; readonly styles?: ISplitviewStyles; } export interface IGridPanelView extends IGridView, IPanel { setActive(isActive: boolean): void; readonly isActive: boolean; } export interface IBaseGrid<T extends IGridPanelView> { readonly element: HTMLElement; readonly id: string; readonly width: number; readonly height: number; readonly minimumHeight: number; readonly maximumHeight: number; readonly minimumWidth: number; readonly maximumWidth: number; readonly activeGroup: T | undefined; readonly size: number; readonly groups: T[]; readonly onGridEvent: Event<GroupChangeEvent>; readonly onDidLayoutChange: Event<void>; getPanel(id: string): T | undefined; toJSON(): object; fromJSON(data: any): void; layout(width: number, height: number, force?: boolean): void; resizeToFit(): void; setVisible(panel: T, visible: boolean): void; isVisible(panel: T): boolean; } export declare abstract class BaseGrid<T extends IGridPanelView> extends CompositeDisposable implements IBaseGrid<T> { private readonly _element; private readonly _id; protected readonly _groups: Map<string, IValueDisposable<T>>; protected readonly gridview: Gridview; protected _activeGroup: T | undefined; protected readonly _onGridEvent: Emitter<GroupChangeEvent>; readonly onGridEvent: Event<GroupChangeEvent>; private _onDidLayoutChange; readonly onDidLayoutChange: Event<void>; get id(): string; get element(): HTMLElement; get size(): number; get groups(): T[]; get width(): number; get height(): number; get minimumHeight(): number; get maximumHeight(): number; get minimumWidth(): number; get maximumWidth(): number; get activeGroup(): T | undefined; constructor(_element: HTMLElement, options: BaseGridOptions); abstract toJSON(): object; abstract fromJSON(data: any): void; setVisible(panel: T, visible: boolean): void; isVisible(panel: T): boolean; protected doAddGroup(group: T, location?: number[], size?: number): void; protected doRemoveGroup(group: T, options?: { skipActive?: boolean; skipDispose?: boolean; }): T; getPanel(id: string): T | undefined; doSetGroupActive(group: T | undefined, skipFocus?: boolean): void; removeGroup(group: T): void; moveToNext(options?: MovementOptions2): void; moveToPrevious(options?: MovementOptions2): void; layout(width: number, height: number, forceResize?: boolean): void; /** * Resize the layout to fit the parent container */ resizeToFit(): void; dispose(): void; }