UNPKG

dockview

Version:

Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support

125 lines (124 loc) 4.03 kB
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; }