@visactor/vtable
Version:
canvas table width high performance
207 lines (206 loc) • 8.27 kB
TypeScript
import type { Group } from '../scenegraph/graphic/group';
import type { Icon } from '../scenegraph/graphic/icon';
import type { CellAddress, CellPosition, CellRange, DropDownMenuHighlightInfo, MenuListItem, SortOrder, SortState } from '../ts-types';
import { HighlightScope, InteractionState } from '../ts-types';
import { Bounds } from '@visactor/vutils';
import type { FederatedWheelEvent } from './../vrender';
import type { BaseTableAPI } from '../ts-types/base-table';
export type CustomSelectionStyle = {
cellBorderColor?: string;
cellBorderLineWidth?: number;
cellBorderLineDash?: number[];
cellBgColor?: string;
};
export declare class StateManager {
table: BaseTableAPI;
interactionState: InteractionState;
interactionStateBeforeScroll?: InteractionState;
select: {
ranges: (CellRange & {
skipBodyMerge?: boolean;
})[];
highlightScope: HighlightScope;
cellPos: CellPosition;
singleStyle?: boolean;
disableHeader?: boolean;
disableCtrlMultiSelect?: boolean;
headerSelectMode?: 'inline' | 'cell' | 'body';
highlightInRange?: boolean;
selecting: boolean;
customSelectRanges?: {
range: CellRange;
style: CustomSelectionStyle;
}[];
};
fillHandle: {
direction?: 'top' | 'bottom' | 'left' | 'right';
directionRow?: boolean;
isFilling: boolean;
startX: number;
startY: number;
beforeFillMinCol?: number;
beforeFillMinRow?: number;
beforeFillMaxCol?: number;
beforeFillMaxRow?: number;
};
hover: {
highlightScope: HighlightScope;
singleStyle?: boolean;
disableHeader?: boolean;
cellPos: CellPosition;
cellPosContainHeader?: CellPosition;
};
hoverIcon: {
col: number;
row: number;
icon: Icon | null;
};
residentHoverIcon?: {
col: number;
row: number;
icon: Icon | null;
};
columnResize: {
col: number;
x: number;
resizing: boolean;
isRightFrozen?: boolean;
};
rowResize: {
row: number;
y: number;
resizing: boolean;
isBottomFrozen?: boolean;
};
columnMove: {
colSource: number;
colTarget: number;
rowSource: number;
rowTarget: number;
x: number;
y: number;
moving: boolean;
};
menu: {
x: number;
y: number;
isShow: boolean;
itemList: MenuListItem[];
bounds: Bounds;
highlightIndex: number;
dropDownMenuHighlight?: DropDownMenuHighlightInfo[];
};
sort: Array<{
col: number;
row: number;
field?: string;
order: SortOrder;
icon?: Icon;
}>;
frozen: {
col: number;
row: number;
icon?: Icon;
};
scroll: {
horizontalBarPos: number;
verticalBarPos: number;
};
tablePosition: {
absoluteX: number;
absoluteY: number;
};
drill: {
dimensionKey?: string;
title?: string;
drillDown?: boolean;
drillUp?: boolean;
col: number;
row: number;
};
sparkLine: {
col: number;
row: number;
};
_clearVerticalScrollBar: any;
_clearHorizontalScrollBar: any;
fastScrolling: boolean;
checkedState: Map<string | number, Record<string | number, boolean | 'indeterminate'>>;
headerCheckedState: Record<string | number, boolean | 'indeterminate'>;
_checkboxCellTypeFields: (string | number)[];
_headerCheckFuncs: Record<string | number, Function>;
radioState: Record<string | number, boolean | number | Record<number, number>>;
resetInteractionState: (this: any, ...args: any) => any;
constructor(table: BaseTableAPI);
initState(): void;
updateOptionSetState(): void;
_updateOptionSetState(): void;
_initState(): void;
setHoverState(): void;
setSelectState(): void;
isSelected(col: number, row: number): boolean;
setSortState(sortState: SortState | SortState[]): void;
setFrozenState(): void;
updateInteractionState(mode: InteractionState): void;
updateHoverhighlightScope(mode: HighlightScope): void;
updateHoverPos(col: number, row: number): void;
updateSelectPos(col: number, row: number, isShift?: boolean, isCtrl?: boolean, isSelectAll?: boolean, makeSelectCellVisible?: boolean, skipBodyMerge?: boolean): void;
checkCellRangeInSelect(cellPosStart: CellAddress, cellPosEnd: CellAddress): boolean;
updateHoverIcon(col: number, row: number, target: any, cellGroup: Group): void;
isResizeCol(): boolean;
isResizeRow(): boolean;
isFillHandle(): boolean;
isSelecting(): boolean;
endSelectCells(fireListener?: boolean, fireClear?: boolean): void;
endResizeCol(): void;
startResizeCol(col: number, x: number, y: number, isRightFrozen?: boolean): void;
updateResizeCol(xInTable: number, yInTable: number): void;
endResizeRow(): void;
startResizeRow(row: number, x: number, y: number, isBottomFrozen?: boolean): void;
updateResizeRow(xInTable: number, yInTable: number): void;
startFillSelect(x: number, y: number): void;
endFillSelect(): void;
startMoveCol(col: number, row: number, x: number, y: number, event: MouseEvent | PointerEvent | TouchEvent): void;
updateMoveCol(col: number, row: number, x: number, y: number, event: MouseEvent | PointerEvent | TouchEvent): void;
isMoveCol(): boolean;
endMoveCol(): boolean;
checkFrozen(): void;
setFrozenCol(col: number): void;
setFrozenRow(row: number): void;
checkVerticalScrollBarEnd(): void;
checkHorizontalScrollBarEnd(): void;
updateVerticalScrollBar(yRatio: number): void;
updateHorizontalScrollBar(xRatio: number): void;
setScrollTop(top: number, event?: FederatedWheelEvent, triggerEvent?: boolean): void;
setScrollLeft(left: number, event?: FederatedWheelEvent, triggerEvent?: boolean): void;
hideVerticalScrollBar(): void;
showVerticalScrollBar(autoHide?: boolean): void;
hideHorizontalScrollBar(): void;
showHorizontalScrollBar(autoHide?: boolean): void;
triggerContextMenu(col: number, row: number, x: number, y: number): void;
showContextMenu(col: number, row: number, x: number, y: number): void;
triggerDropDownMenu(col: number, row: number, x: number, y: number, event: Event): void;
showDropDownMenu(col: number, row: number, x: number, y: number): void;
hideMenu(): void;
setDropDownMenuHighlight(dropDownMenuInfo: DropDownMenuHighlightInfo[]): void;
dropDownMenuIsHighlight(colNow: number, rowNow: number, index: number): boolean;
triggerSort(col: number, row: number, iconMark: Icon, event: Event): void;
updateSortState(sortState: SortState[]): void;
triggerFreeze(col: number, row: number, iconMark: Icon): void;
updateCursor(mode?: string): void;
updateDrillState(dimensionKey: string, title: string, drillDown: boolean, drillUp: boolean, col: number, row: number): void;
updateSparklineHoverPose(col: number, row: number, x: number, y: number): void;
setCheckedState(col: number, row: number, field: string | number, checked: boolean | 'indeterminate'): void;
setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate'): void;
syncCheckedState(col: number, row: number, field: string | number, checked: boolean): boolean | 'indeterminate';
initCheckedState(records: any[]): void;
updateHeaderCheckedState(field: string | number, col: number, row: number): boolean | 'indeterminate';
initLeftRecordsCheckState(records: any[]): void;
setRadioState(col: number, row: number, field: string | number, radioType: 'column' | 'cell', indexInCell: number | undefined): void;
syncRadioState(col: number, row: number, field: string | number, radioType: 'column' | 'cell', indexInCell: number | undefined, isChecked: boolean): boolean;
changeCheckboxAndRadioOrder(sourceIndex: number, targetIndex: number): void;
setCustomSelectRanges(customSelectRanges: {
range: CellRange;
style: CustomSelectionStyle;
}[]): void;
}