@column-resizer/core
Version:
[](https://github.com/Runjuu/column-resizer/blob/main/LICENSE) [](#contributing) [ • 3.72 kB
text/typescript
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 };