dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
114 lines (113 loc) • 4.05 kB
TypeScript
import { Event } from '../events';
import { CompositeDisposable, IDisposable } from '../lifecycle';
import { LayoutPriority, Orientation } from '../splitview/core/splitview';
import { PaneviewComponentOptions } from './options';
import { Paneview } from './paneview';
import { IPaneBodyPart, IPaneHeaderPart, PaneviewPanel, IPaneviewPanel } from './paneviewPanel';
import { DraggablePaneviewPanel, PaneviewDropEvent2 } from './draggablePaneviewPanel';
export interface SerializedPaneviewPanel {
snap?: boolean;
priority?: LayoutPriority;
minimumSize?: number;
maximumSize?: number;
data: {
id: string;
component: string;
title: string;
headerComponent?: string;
params?: {
[index: string]: any;
};
state?: {
[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: IPaneBodyPart;
header: IPaneHeaderPart;
orientation: Orientation;
isExpanded: boolean;
disableDnd: boolean;
});
getBodyComponent(): IPaneBodyPart;
getHeaderComponent(): IPaneHeaderPart;
}
export interface AddPaneviewCompponentOptions {
id: string;
component: string;
headerComponent?: string;
params?: {
[key: string]: any;
};
minimumBodySize?: number;
maximumBodySize?: number;
isExpanded?: boolean;
title: string;
index?: number;
size?: number;
}
export interface IPaneviewComponent extends IDisposable {
readonly width: number;
readonly height: number;
readonly minimumSize: number;
readonly maximumSize: number;
readonly onDidDrop: Event<PaneviewDropEvent2>;
readonly onDidLayoutChange: Event<void>;
addPanel(options: AddPaneviewCompponentOptions): IDisposable;
layout(width: number, height: number): void;
toJSON(): SerializedPaneview;
fromJSON(serializedPaneview: SerializedPaneview, deferComponentLayout?: boolean): void;
resizeToFit(): void;
focus(): void;
getPanels(): IPaneviewPanel[];
removePanel(panel: IPaneviewPanel): void;
getPanel(id: string): IPaneviewPanel | undefined;
movePanel(from: number, to: number): void;
updateOptions(options: Partial<PaneviewComponentOptions>): void;
}
export declare class PaneviewComponent extends CompositeDisposable implements IPaneviewComponent {
private element;
private _disposable;
private _paneview;
private readonly _onDidLayoutChange;
readonly onDidLayoutChange: Event<void>;
private readonly _onDidDrop;
readonly onDidDrop: Event<PaneviewDropEvent2>;
get onDidAddView(): Event<PaneviewPanel>;
get onDidRemoveView(): Event<PaneviewPanel>;
set paneview(value: Paneview);
get paneview(): Paneview;
get minimumSize(): number;
get maximumSize(): number;
get height(): number;
get width(): number;
private _options;
get options(): PaneviewComponentOptions;
constructor(element: HTMLElement, options: PaneviewComponentOptions);
focus(): void;
updateOptions(options: Partial<PaneviewComponentOptions>): void;
addPanel(options: AddPaneviewCompponentOptions): IDisposable;
getPanels(): PaneviewPanel[];
removePanel(panel: PaneviewPanel): void;
movePanel(from: number, to: number): void;
getPanel(id: string): PaneviewPanel | undefined;
layout(width: number, height: number): void;
/**
* Resize the layout to fit the parent container
*/
resizeToFit(): void;
toJSON(): SerializedPaneview;
fromJSON(serializedPaneview: SerializedPaneview, deferComponentLayout?: boolean): void;
}