dockview-core
Version: 
Zero dependency layout manager supporting tabs, grids and splitviews
102 lines (101 loc) • 3.93 kB
TypeScript
import { IDisposable } from '../lifecycle';
import { IView, LayoutPriority, Orientation, Sizing, Splitview, SplitViewOptions } from './splitview';
import { SplitviewComponentOptions } from './options';
import { BaseComponentOptions, Parameters } from '../panel/types';
import { Event } from '../events';
import { SplitviewPanel, ISplitviewPanel } from './splitviewPanel';
import { Resizable } from '../resizable';
export interface SerializedSplitviewPanelData {
    id: string;
    component: string;
    minimumSize?: number;
    maximumSize?: number;
    params?: {
        [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<T extends Parameters = Parameters> extends BaseComponentOptions<T> {
    index?: number;
    minimumSize?: number;
    maximumSize?: number;
}
export interface ISplitviewComponent extends IDisposable {
    readonly minimumSize: number;
    readonly maximumSize: number;
    readonly height: number;
    readonly width: number;
    readonly length: number;
    readonly orientation: Orientation;
    readonly onDidAddView: Event<IView>;
    readonly onDidRemoveView: Event<IView>;
    readonly onDidLayoutFromJSON: Event<void>;
    readonly panels: SplitviewPanel[];
    updateOptions(options: Partial<SplitViewOptions>): void;
    addPanel<T extends object = Parameters>(options: AddSplitviewComponentOptions<T>): ISplitviewPanel;
    layout(width: number, height: number): void;
    onDidLayoutChange: Event<void>;
    toJSON(): SerializedSplitview;
    fromJSON(serializedSplitview: SerializedSplitview): void;
    focus(): void;
    getPanel(id: string): ISplitviewPanel | undefined;
    removePanel(panel: ISplitviewPanel, sizing?: Sizing): void;
    setVisible(panel: ISplitviewPanel, visible: boolean): void;
    movePanel(from: number, to: number): void;
    clear(): void;
}
/**
 * A high-level implementation of splitview that works using 'panels'
 */
export declare class SplitviewComponent extends Resizable implements ISplitviewComponent {
    private readonly _splitviewChangeDisposable;
    private _splitview;
    private _activePanel;
    private readonly _panels;
    private _options;
    private readonly _onDidLayoutfromJSON;
    readonly onDidLayoutFromJSON: Event<void>;
    private readonly _onDidAddView;
    readonly onDidAddView: Event<IView>;
    private readonly _onDidRemoveView;
    readonly onDidRemoveView: Event<IView>;
    private readonly _onDidLayoutChange;
    readonly onDidLayoutChange: Event<void>;
    private readonly _classNames;
    get panels(): SplitviewPanel[];
    get options(): SplitviewComponentOptions;
    get length(): number;
    get orientation(): Orientation;
    get splitview(): Splitview;
    set splitview(value: Splitview);
    get minimumSize(): number;
    get maximumSize(): number;
    get height(): number;
    get width(): number;
    constructor(container: HTMLElement, options: SplitviewComponentOptions);
    updateOptions(options: Partial<SplitviewComponentOptions>): void;
    focus(): void;
    movePanel(from: number, to: number): void;
    setVisible(panel: SplitviewPanel, visible: boolean): void;
    setActive(panel: SplitviewPanel, skipFocus?: boolean): void;
    removePanel(panel: SplitviewPanel, sizing?: Sizing): void;
    getPanel(id: string): SplitviewPanel | undefined;
    addPanel<T extends object = Parameters>(options: AddSplitviewComponentOptions<T>): SplitviewPanel;
    layout(width: number, height: number): void;
    private doAddView;
    toJSON(): SerializedSplitview;
    fromJSON(serializedSplitview: SerializedSplitview): void;
    clear(): void;
    dispose(): void;
}