dockview-core
Version: 
Zero dependency layout manager supporting tabs, grids and splitviews
134 lines (133 loc) • 4.92 kB
TypeScript
import { Event } from '../events';
import { IDisposable } from '../lifecycle';
import { LayoutPriority, Orientation } from '../splitview/splitview';
import { PaneviewComponentOptions, PaneviewDndOverlayEvent } from './options';
import { Paneview } from './paneview';
import { IPanePart, PaneviewPanel, IPaneviewPanel } from './paneviewPanel';
import { DraggablePaneviewPanel, PaneviewDidDropEvent } from './draggablePaneviewPanel';
import { Resizable } from '../resizable';
import { Parameters } from '../panel/types';
export interface SerializedPaneviewPanel {
    snap?: boolean;
    priority?: LayoutPriority;
    minimumSize?: number;
    maximumSize?: number;
    headerSize?: number;
    data: {
        id: string;
        component: string;
        title: string;
        headerComponent?: string;
        params?: {
            [index: string]: any;
        };
    };
    size: number;
    expanded?: boolean;
}
export interface SerializedPaneview {
    size: number;
    views: SerializedPaneviewPanel[];
}
export declare class PaneFramework extends DraggablePaneviewPanel {
    private readonly options;
    constructor(options: {
        id: string;
        component: string;
        headerComponent: string | undefined;
        body: IPanePart;
        header: IPanePart;
        orientation: Orientation;
        isExpanded: boolean;
        disableDnd: boolean;
        accessor: IPaneviewComponent;
        headerSize: number;
        minimumBodySize: number;
        maximumBodySize: number;
    });
    getBodyComponent(): IPanePart;
    getHeaderComponent(): IPanePart;
}
export interface AddPaneviewComponentOptions<T extends object = Parameters> {
    id: string;
    component: string;
    headerComponent?: string;
    params?: T;
    minimumBodySize?: number;
    maximumBodySize?: number;
    headerSize?: number;
    isExpanded?: boolean;
    title: string;
    index?: number;
    size?: number;
}
export interface IPaneviewComponent extends IDisposable {
    readonly id: string;
    readonly width: number;
    readonly height: number;
    readonly minimumSize: number;
    readonly maximumSize: number;
    readonly panels: IPaneviewPanel[];
    readonly options: PaneviewComponentOptions;
    readonly onDidAddView: Event<PaneviewPanel>;
    readonly onDidRemoveView: Event<PaneviewPanel>;
    readonly onDidDrop: Event<PaneviewDidDropEvent>;
    readonly onDidLayoutChange: Event<void>;
    readonly onDidLayoutFromJSON: Event<void>;
    readonly onUnhandledDragOverEvent: Event<PaneviewDndOverlayEvent>;
    addPanel<T extends object = Parameters>(options: AddPaneviewComponentOptions<T>): IPaneviewPanel;
    layout(width: number, height: number): void;
    toJSON(): SerializedPaneview;
    fromJSON(serializedPaneview: SerializedPaneview): void;
    focus(): void;
    removePanel(panel: IPaneviewPanel): void;
    getPanel(id: string): IPaneviewPanel | undefined;
    movePanel(from: number, to: number): void;
    updateOptions(options: Partial<PaneviewComponentOptions>): void;
    setVisible(panel: IPaneviewPanel, visible: boolean): void;
    clear(): void;
}
export declare class PaneviewComponent extends Resizable implements IPaneviewComponent {
    private readonly _id;
    private _options;
    private readonly _disposable;
    private readonly _viewDisposables;
    private _paneview;
    private readonly _onDidLayoutfromJSON;
    readonly onDidLayoutFromJSON: Event<void>;
    private readonly _onDidLayoutChange;
    readonly onDidLayoutChange: Event<void>;
    private readonly _onDidDrop;
    readonly onDidDrop: Event<PaneviewDidDropEvent>;
    private readonly _onDidAddView;
    readonly onDidAddView: Event<PaneviewPanel>;
    private readonly _onDidRemoveView;
    readonly onDidRemoveView: Event<PaneviewPanel>;
    private readonly _onUnhandledDragOverEvent;
    readonly onUnhandledDragOverEvent: Event<PaneviewDndOverlayEvent>;
    private readonly _classNames;
    get id(): string;
    get panels(): PaneviewPanel[];
    set paneview(value: Paneview);
    get paneview(): Paneview;
    get minimumSize(): number;
    get maximumSize(): number;
    get height(): number;
    get width(): number;
    get options(): PaneviewComponentOptions;
    constructor(container: HTMLElement, options: PaneviewComponentOptions);
    setVisible(panel: PaneviewPanel, visible: boolean): void;
    focus(): void;
    updateOptions(options: Partial<PaneviewComponentOptions>): void;
    addPanel<T extends object = Parameters>(options: AddPaneviewComponentOptions<T>): IPaneviewPanel;
    removePanel(panel: PaneviewPanel): void;
    movePanel(from: number, to: number): void;
    getPanel(id: string): PaneviewPanel | undefined;
    layout(width: number, height: number): void;
    toJSON(): SerializedPaneview;
    fromJSON(serializedPaneview: SerializedPaneview): void;
    clear(): void;
    private doAddPanel;
    private doRemovePanel;
    dispose(): void;
}