UNPKG

dockview

Version:

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

101 lines (100 loc) 3.86 kB
import { CompositeDisposable, IDisposable } from '../lifecycle'; import { LayoutPriority, Orientation, Sizing, Splitview } from './core/splitview'; import { SplitviewComponentOptions } from './core/options'; import { BaseComponentOptions } from '../panel/types'; import { Event } from '../events'; import { SplitviewPanel, ISplitviewPanel } from './splitviewPanel'; export interface SerializedSplitviewPanelData { id: string; component: string; minimumSize?: number; maximumSize?: number; params?: { [index: string]: any; }; state?: { [index: string]: any; }; } export interface SerializedSplitviewPanel { snap?: boolean; priority?: LayoutPriority; data: SerializedSplitviewPanelData; size: number; } export interface SerializedSplitview { orientation: Orientation; size: number; activeView?: string; views: SerializedSplitviewPanel[]; } export interface AddSplitviewComponentOptions extends BaseComponentOptions { size?: number; index?: number; minimumSize?: number; maximumSize?: number; } export declare type SplitviewComponentUpdateOptions = Pick<SplitviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents'>; export interface ISplitviewComponent extends IDisposable { readonly minimumSize: number; readonly maximumSize: number; readonly height: number; readonly width: number; readonly length: number; readonly orientation: Orientation; updateOptions(options: SplitviewComponentUpdateOptions): void; addPanel(options: AddSplitviewComponentOptions): void; layout(width: number, height: number): void; onDidLayoutChange: Event<void>; toJSON(): SerializedSplitview; fromJSON(serializedSplitview: SerializedSplitview, deferComponentLayout?: boolean): void; resizeToFit(): void; focus(): void; getPanel(id: string): ISplitviewPanel | undefined; setActive(view: ISplitviewPanel, skipFocus?: boolean): void; removePanel(panel: ISplitviewPanel, sizing?: Sizing): void; getPanels(): SplitviewPanel[]; setVisible(panel: ISplitviewPanel, visible: boolean): void; movePanel(from: number, to: number): void; } /** * A high-level implementation of splitview that works using 'panels' */ export declare class SplitviewComponent extends CompositeDisposable implements ISplitviewComponent { private readonly element; private _disposable; private _splitview; private _activePanel; private panels; private _options; get options(): SplitviewComponentOptions; get orientation(): Orientation; get splitview(): Splitview; set splitview(value: Splitview); private readonly _onDidLayoutChange; readonly onDidLayoutChange: Event<void>; get minimumSize(): number; get maximumSize(): number; get height(): number; get width(): number; get length(): number; constructor(element: HTMLElement, options: SplitviewComponentOptions); updateOptions(options: SplitviewComponentUpdateOptions): void; focus(): void; movePanel(from: number, to: number): void; setVisible(panel: SplitviewPanel, visible: boolean): void; setActive(view: SplitviewPanel, skipFocus?: boolean): void; getPanels(): SplitviewPanel[]; removePanel(panel: SplitviewPanel, sizing?: Sizing): void; getPanel(id: string): SplitviewPanel | undefined; addPanel(options: AddSplitviewComponentOptions): void; /** * Resize the layout to fit the parent container */ resizeToFit(): void; layout(width: number, height: number): void; private doAddView; toJSON(): SerializedSplitview; fromJSON(serializedSplitview: SerializedSplitview, deferComponentLayout?: boolean): void; dispose(): void; }