dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
101 lines (100 loc) • 3.86 kB
TypeScript
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;
}