import { VNode } from 'snabbdom/vnode'; import { Renderable, AddChildArgs, RenderableConfig, RemoveChildArgs } from '../dom'; import { XYDirection, RenderableConstructorArg } from '../common'; import { XYItemContainer, XYItemContainerConfig } from './XYItemContainer'; import { Splitter } from './Splitter'; import { Stack } from '../stack'; export interface XYContainerConfig extends RenderableConfig { /** * The size in pixels of the splitter. * @type {number} */ splitterSize?: number; /** * Determines whether the Row or Column should persist when only a single item remains. * The default behavior is to unwrap and destroy the row or column. * @type {boolean} */ static?: boolean; children: Array>; } export interface XYSizingOptions { render?: boolean; resize?: boolean; } export interface ContainerAddChildArgs extends AddChildArgs { distribute?: boolean; } export declare type AdjacentResults = { before: XYItemContainer | null; after: XYItemContainer | null; }; export declare const MAX_RATIO_DISTRIBUTION_ITERATIONS = 5; export declare class XYContainer extends Renderable { protected _height: number; protected _width: number; protected _direction: XYDirection; protected _className: string; protected _contentItems: XYItemContainer[]; protected _splitters: Splitter[]; protected _dragLimitMin: number; protected _dragLimitMax: number; protected _container: Renderable | null; protected _config: XYContainerConfig | null; protected _Stack: typeof Stack; protected _XYItemContainer: typeof XYItemContainer; protected _Splitter: typeof Splitter; readonly height: number; readonly width: number; readonly direction: XYDirection; readonly isRow: boolean; readonly splitters: Splitter[]; readonly splitterSize: number; readonly isStatic: boolean; protected readonly _totalSplitterSize: number; protected readonly _totalContainerSize: number; initialize(): void; createChildItem(config: XYItemContainerConfig, options?: { index?: number; }): XYItemContainer; addChild(item: Renderable, options?: ContainerAddChildArgs): void; removeChild(item: XYItemContainer, options?: RemoveChildArgs): void; render(): VNode; resize(): void; setSizeOf(item: XYItemContainer, size: number, options?: XYSizingOptions): void; getChildren(): XYItemContainer[]; getAdjacentItems(item: XYItemContainer): AdjacentResults; getSplitterFromItem(item: XYItemContainer): Splitter | null; getTotalSplitterSizes(start?: number, end?: number): number; isRenderable(): boolean; private _getRenderableSplitters; private _getRenderableSplitterSize; private _getRenderableContainerSize; private _createSplitter; private _isSplitterDisabled; private _dragStatusChanged; private _getSplitterItems; private _dragStart; private _dragEnd; private _updateSplitterItems; private _dragMove; private _setDimensions; private _calculateRatios; private _distributeRatios; private _createStackWrapper; }