dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
125 lines (124 loc) • 4.03 kB
TypeScript
import { Event } from '../../events';
export declare enum Orientation {
HORIZONTAL = "HORIZONTAL",
VERTICAL = "VERTICAL"
}
export declare enum SashState {
MAXIMUM = 0,
MINIMUM = 1,
DISABLED = 2,
ENABLED = 3
}
export interface ISplitviewStyles {
separatorBorder: string;
}
export interface SplitViewOptions {
readonly orientation: Orientation;
readonly descriptor?: ISplitViewDescriptor;
readonly proportionalLayout?: boolean;
readonly styles?: ISplitviewStyles;
}
export declare enum LayoutPriority {
Low = "low",
High = "high",
Normal = "normal"
}
export interface IBaseView {
minimumSize: number;
maximumSize: number;
snap?: boolean;
priority?: LayoutPriority;
}
export interface IView extends IBaseView {
readonly element: HTMLElement | DocumentFragment;
readonly onDidChange: Event<number | undefined>;
layout(size: number, orthogonalSize: number): void;
setVisible(visible: boolean): void;
}
export declare type DistributeSizing = {
type: 'distribute';
};
export declare type SplitSizing = {
type: 'split';
index: number;
};
export declare type InvisibleSizing = {
type: 'invisible';
cachedVisibleSize: number;
};
export declare type Sizing = DistributeSizing | SplitSizing | InvisibleSizing;
export declare namespace Sizing {
const Distribute: DistributeSizing;
function Split(index: number): SplitSizing;
function Invisible(cachedVisibleSize: number): InvisibleSizing;
}
export interface ISplitViewDescriptor {
size: number;
views: {
visible?: boolean;
size: number;
view: IView;
}[];
}
export declare class Splitview {
private readonly container;
private element;
private viewContainer;
private sashContainer;
private views;
private sashes;
private _orientation;
private _size;
private _orthogonalSize;
private contentSize;
private _proportions;
private proportionalLayout;
private readonly _onDidSashEnd;
readonly onDidSashEnd: Event<void>;
private readonly _onDidAddView;
readonly onDidAddView: Event<IView>;
private readonly _onDidRemoveView;
readonly onDidRemoveView: Event<IView>;
get size(): number;
set size(value: number);
get orthogonalSize(): number;
set orthogonalSize(value: number);
get length(): number;
get proportions(): number[] | undefined;
get orientation(): Orientation;
set orientation(value: Orientation);
get minimumSize(): number;
get maximumSize(): number;
private _startSnappingEnabled;
get startSnappingEnabled(): boolean;
set startSnappingEnabled(startSnappingEnabled: boolean);
private _endSnappingEnabled;
get endSnappingEnabled(): boolean;
set endSnappingEnabled(endSnappingEnabled: boolean);
constructor(container: HTMLElement, options: SplitViewOptions);
style(styles?: ISplitviewStyles): void;
isViewVisible(index: number): boolean;
setViewVisible(index: number, visible: boolean): void;
getViewSize(index: number): number;
resizeView(index: number, size: number): void;
getViews<T extends IView>(): T[];
private onDidChange;
addView(view: IView, size?: number | Sizing, index?: number, skipLayout?: boolean): void;
distributeViewSizes(): void;
removeView(index: number, sizing?: Sizing, skipLayout?: boolean): IView;
getViewCachedVisibleSize(index: number): number | undefined;
moveView(from: number, to: number): void;
layout(size: number, orthogonalSize: number): void;
private relayout;
private distributeEmptySpace;
private saveProportions;
private layoutViews;
private findFirstSnapIndex;
private updateSashEnablement;
private updateSash;
private resize;
private createViewContainer;
private createSashContainer;
private createContainer;
dispose(): void;
}