UNPKG

@column-resizer/core

Version:

[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Runjuu/column-resizer/blob/main/LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#contributing) [![code style: prettier](https://i

136 lines (129 loc) 3.72 kB
type Coordinate = { x: number; y: number; }; declare enum ItemType { BAR = "BAR", SECTION = "SECTION" } type Trend = -1 | 0 | 1; declare enum BarActionType { ACTIVATE = "activate", MOVE = "move", DEACTIVATE = "deactivate" } type BarAction = { type: BarActionType; coordinate: Coordinate; barIndex: number; }; type SizeInfo = { elm: HTMLElement; isSolid: boolean; currentSize: number; maxSize?: number; minSize?: number; disableResponsive?: boolean; }; type SizeRelatedInfo = { discard?: boolean; sizeInfoArray: SizeInfo[]; flexGrowRatio: number; }; type ColumnResizerEventMap = { 'bar:click': null; 'bar:status-change': { isActive: boolean; }; 'section:size-change': { size: number; }; 'column:activate': null; 'column:after-resizing': null; }; interface BarActionScanResult extends SizeRelatedInfo { barIndex: number; offset: number; type: BarActionType; originalCoordinate: Coordinate; defaultSizeInfoArray: SizeInfo[]; } type ColumnBarConfig = { size: number; }; type ColumnSectionConfig = { size?: number; defaultSize?: number; maxSize?: number; minSize?: number; disableResponsive?: boolean; }; type ResizeResult = SizeRelatedInfo | BarActionScanResult; declare class Resizer { private resizeResult; private isDiscarded; constructor(resizeResult: ResizeResult); resizeSection(indexOfSection: number, config: { toSize: number; preferMoveLeftBar?: boolean; }): void; moveBar(indexOfBar: number, config: { withOffset: number; }): void; discard(): void; isSectionResized(indexOfSection: number): boolean; isBarActivated(indexOfBar: number): boolean; getSectionSize(indexOfSection: number): number; getResult(): SizeRelatedInfo; getTotalSize(): number; private getSize; } type ColumnResizerConfig = { vertical: boolean; rtl?: boolean; beforeApplyResizer?: (resizer: Resizer) => void; }; declare class ColumnResizer { readonly config: Readonly<ColumnResizerConfig>; styles: { container: <T>(style?: T) => { readonly display: "flex"; readonly flexDirection: "column" | "row"; }; section: <T>(config: ColumnSectionConfig, style?: T) => { overflow: string; }; bar: <T>(config: ColumnBarConfig, style?: T) => { flex: string; }; }; attributes: { bar: (config: unknown) => { 'data-item-type': ItemType; 'data-item-config': string; }; section: (config: unknown) => { 'data-item-type': ItemType; 'data-item-config': string; }; }; private itemsCache; private eventHub; private container; private barStore; private get axis(); private get dimension(); private get direction(); get on(): <E extends Element, K extends keyof ColumnResizerEventMap>(elm: E | null, key: K, callback: (event: CustomEvent<ColumnResizerEventMap[K]>) => void) => () => void; constructor(config: Readonly<ColumnResizerConfig>); init(container: HTMLElement | null): void; dispose(): void; getResizer(): Resizer; applyResizer(resizer: Resizer): void; private dispatchBarAction; private sizeRelatedInfoChange; private monitorBarStatusChanges; private makeSizeInfos; private initStyles; } export { type BarAction, BarActionType, type ColumnBarConfig, ColumnResizer, type ColumnResizerConfig, type ColumnResizerEventMap, type ColumnSectionConfig, type Coordinate, ItemType, Resizer, type SizeInfo, type SizeRelatedInfo, type Trend };