import type { IBoundsLike, ITextSize } from '@visactor/vutils'; import type { MaybePromiseOrUndefined, ICellHeaderPaths, CellInfo, CustomCellStyle, CustomCellStyleArrangement, IDimensionInfo } from './common'; import type { TableEventListener, TableEventHandlersEventArgumentMap, TableEventHandlersReturnMap, EventListenerId, MousePointerCellEvent } from './events'; import type { MenuListItem, DropDownMenuEventInfo, DropDownMenuHighlightInfo } from './menu'; import type { CellStyle } from './style-define'; import type { ColumnIconOption } from './icon'; import type { ColumnData, ColumnDefine, ColumnsDefine, HeaderData, IndicatorData, SeriesNumberColumnData } from './list-table/layout-map/api'; export type { HeaderData } from './list-table/layout-map/api'; import type { TableTheme } from '../themes/theme-define'; import type { ICustomRender } from './customElement'; import type { GroupByOption, LayoutObjectId } from './table-engine'; import type { Rect } from '../tools/Rect'; import type { Scenegraph } from '../scenegraph/scenegraph'; import type { StateManager } from '../state/state'; import type { EventManager } from '../event/event'; import type { CellAddress, CellRange, CellLocation, ColumnTypeOption, DataSourceAPI, FieldData, FieldDef, FullExtendStyle, HeaderValues, HeightModeDef, HierarchyState, IPivotTableDataConfig, IPagination, ITableThemeDefine, SortState, TableKeyboardOptions, WidthModeDef, IHeaderTreeDefine, IIndicator, StickCell, CustomMergeCell, CustomMerge, IColumnDimension, IRowDimension, TableEventOptions, IPivotChartDataConfig, IListTableDataConfig, IRowSeriesNumber, ColumnSeriesNumber, ColumnStyleOption, WidthAdaptiveModeDef, HeightAdaptiveModeDef, ColumnInfo, RowInfo, CellAddressWithBound, Placement, CustomMergeCellFunc } from '.'; import type { TooltipOptions } from './tooltip'; import type { ICustomLayout } from './customLayout'; import type { CachedDataSource, DataSource } from '../data'; import type { MenuHandler } from '../components/menu/dom/MenuHandler'; import type { PivotHeaderLayoutMap } from '../layout/pivot-header-layout'; import type { SimpleHeaderLayoutMap } from '../layout'; import type { TooltipHandler } from '../components/tooltip/TooltipHandler'; import type { BodyHelper } from '../body-helper/body-helper'; import type { HeaderHelper } from '../header-helper/header-helper'; import type { EventHandler } from '../event/EventHandler'; import type { NumberMap } from '../tools/NumberMap'; import type { FocusInput } from '../core/FouseInput'; import type { ITableLegendOption } from './component/legend'; import type { DataSet } from '@visactor/vdataset'; import type { Title } from '../components/title/title'; import type { ITitle } from './component/title'; import type { DiscreteTableLegend } from '../components/legend/discrete-legend/discrete-legend'; import type { ContinueTableLegend } from '../components/legend/continue-legend/continue-legend'; import type { NumberRangeMap } from '../layout/row-height-map'; import type { RowSeriesNumberHelper } from '../core/row-series-number-helper'; import type { ReactCustomLayout } from '../components/react/react-custom-layout'; import type { ISortedMapItem } from '../data/DataSource'; import type { IAnimationAppear, ITableAnimationOption } from './animation/appear'; import type { IEmptyTip } from './component/empty-tip'; import type { EmptyTip } from '../components/empty-tip/empty-tip'; import type { EditManager } from '../edit/edit-manager'; import type { TableAnimationManager } from '../core/animation'; import type { CustomCellStylePlugin } from '../plugins/custom-cell-style'; import type { IVTablePlugin } from '../plugins/interface'; import type { FederatedPointerEvent } from './../vrender'; export interface IBaseTableProtected { element: HTMLElement; handler: EventHandler; focusControl: FocusInput; canvas: HTMLCanvasElement; context: CanvasRenderingContext2D; rowCount: number; colCount: number; frozenColCount: number; unfreezeAllOnExceedsMaxWidth: boolean; allowFrozenColCount: number; frozenRowCount: number; rightFrozenColCount: number; bottomFrozenRowCount: number; defaultRowHeight: number | 'auto'; defaultHeaderRowHeight: (number | 'auto') | (number | 'auto')[]; defaultColWidth: number; defaultHeaderColWidth: (number | 'auto') | (number | 'auto')[]; keyboardOptions?: TableKeyboardOptions; eventOptions?: TableEventOptions; rowSeriesNumber?: IRowSeriesNumber; enableCheckboxCascade?: boolean; enableHeaderCheckboxCascade?: boolean; columnSeriesNumber?: ColumnSeriesNumber[]; columnResizeMode?: 'all' | 'none' | 'header' | 'body'; canResizeColumn?: (col: number, row: number, table: BaseTableAPI) => boolean; rowResizeMode?: 'all' | 'none' | 'header' | 'body'; columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup'; rowResizeType?: 'row' | 'indicator' | 'all' | 'indicatorGroup'; dragHeaderMode?: 'all' | 'none' | 'column' | 'row'; frozenColDragHeaderMode?: 'disabled' | 'adjustFrozenCount' | 'fixedFrozenCount'; cachedRecordsRowHeightMap: NumberMap; _rowHeightsMap: NumberRangeMap; _colWidthsMap: NumberMap; _colContentWidthsMap: NumberMap; _colWidthsLimit: { [col: number]: { max?: string | number; min?: string | number; }; }; calcWidthContext: { _: IBaseTableProtected; full: number; }; _rowRangeHeightsMap: Map; _colRangeWidthsMap: Map; _widthResizedColMap: Set; _heightResizedRowMap: Set; bodyHelper: BodyHelper; headerHelper: HeaderHelper; rowSeriesNumberHelper: RowSeriesNumberHelper; cellTextOverflows: { [at: string]: string; }; focusedTable: boolean; releaseList?: { release: () => void; }[] | null; theme: TableTheme; transpose?: boolean; pixelRatio?: number; menu: { renderMode?: 'canvas' | 'html'; defaultHeaderMenuItems?: MenuListItem[] | ((args: { row: number; col: number; table: BaseTableAPI; }) => MenuListItem[]); contextMenuItems?: MenuListItem[] | ((field: FieldDef, row: number, col: number, table?: BaseTableAPI) => MenuListItem[]); dropDownMenuHighlight?: DropDownMenuHighlightInfo[]; contextMenuWorkOnlyCell?: boolean; parentElement?: HTMLElement; }; tooltip: { parentElement: HTMLElement; renderMode: 'html' | 'canvas'; isShowOverflowTextTooltip: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean); overflowTextTooltipDisappearDelay?: number; confine: boolean; position: Placement; }; dataSourceEventIds?: EventListenerId[]; layoutMap: SimpleHeaderLayoutMap | PivotHeaderLayoutMap; headerValues?: HeaderValues; tooltipHandler: TooltipHandler; sortState: SortState | SortState[]; multipleSort?: boolean; dataSource: DataSource | CachedDataSource; records?: any; allowRangePaste: boolean; autoWrapText?: boolean; enableLineBreak?: boolean; menuHandler: MenuHandler; limitMaxAutoWidth?: boolean | number; limitMinWidth?: number; limitMinHeight?: number; title?: Title; legends?: (DiscreteTableLegend | ContinueTableLegend)[]; emptyTip?: EmptyTip; renderChartAsync?: boolean; stick: { changedCells: Map; }; customMergeCell?: CustomMergeCellFunc; overscrollBehavior?: 'auto' | 'none'; modifiedViewBoxTransform?: boolean; bodyDomContainer?: HTMLElement; headerDomContainer?: HTMLElement; frozenBodyDomContainer?: HTMLElement; frozenHeaderDomContainer?: HTMLElement; rightFrozenBodyDomContainer?: HTMLElement; rightFrozenHeaderDomContainer?: HTMLElement; frozenBottomDomContainer?: HTMLElement; bottomDomContainer?: HTMLElement; rightFrozenBottomDomContainer?: HTMLElement; useOneRowHeightFillAll?: boolean; enableTreeNodeMerge?: boolean; _oldRowCount?: number; _oldColCount?: number; columnWidthConfig?: any; rowHeightConfig?: any; } export interface BaseTableConstructorOptions { frozenColCount?: number; frozenRowCount?: number; rightFrozenColCount?: number; bottomFrozenRowCount?: number; maxFrozenWidth?: number | string; maxRightFrozenWidth?: number | string; unfreezeAllOnExceedsMaxWidth?: boolean; scrollFrozenCols?: boolean; scrollRightFrozenCols?: boolean; scrollFrozenColsPassThroughToBody?: boolean; allowFrozenColCount?: number; defaultRowHeight?: number | 'auto'; defaultHeaderRowHeight?: (number | 'auto') | (number | 'auto')[]; defaultColWidth?: number; defaultHeaderColWidth?: (number | 'auto') | (number | 'auto')[]; keyboardOptions?: TableKeyboardOptions; excelOptions?: { fillHandle?: boolean | ((args: { selectRanges: CellRange[]; table: BaseTableAPI; }) => boolean); }; eventOptions?: TableEventOptions; container?: HTMLElement | null; columnResizeMode?: 'all' | 'none' | 'header' | 'body'; rowResizeMode?: 'all' | 'none' | 'header' | 'body'; dragHeaderMode?: 'all' | 'none' | 'column' | 'row'; showFrozenIcon?: boolean; padding?: { top?: number; bottom?: number; left?: number; right?: number; } | number; hover?: { highlightMode?: 'cross' | 'column' | 'row' | 'cell'; disableHover?: boolean; disableHeaderHover?: boolean; disableAxisHover?: boolean; }; select?: { highlightMode?: 'cross' | 'column' | 'row' | 'cell'; headerSelectMode?: 'inline' | 'cell' | 'body'; cornerHeaderSelectMode?: 'inline' | 'cell' | 'body' | 'all'; disableSelect?: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean); disableHeaderSelect?: boolean; blankAreaClickDeselect?: boolean; outsideClickDeselect?: boolean; disableDragSelect?: boolean; highlightInRange?: boolean; makeSelectCellVisible?: boolean; disableSelectOnContextMenu?: boolean; }; menu?: { renderMode?: 'canvas' | 'html'; defaultHeaderMenuItems?: MenuListItem[] | ((args: { row: number; col: number; table: BaseTableAPI; }) => MenuListItem[]); contextMenuItems?: MenuListItem[] | ((field: string, row: number, col: number, table?: BaseTableAPI) => MenuListItem[]); dropDownMenuHighlight?: DropDownMenuHighlightInfo[]; contextMenuWorkOnlyCell?: boolean; parentElement?: HTMLElement; }; tooltip?: { parentElement?: HTMLElement; renderMode?: 'html'; isShowOverflowTextTooltip?: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean); overflowTextTooltipDisappearDelay?: number; confine?: boolean; position?: Placement; }; theme?: ITableThemeDefine; widthMode?: 'standard' | 'adaptive' | 'autoWidth'; heightMode?: 'standard' | 'adaptive' | 'autoHeight'; autoFillWidth?: boolean; autoFillHeight?: boolean; containerFit?: { width?: boolean; height?: boolean; }; widthAdaptiveMode?: WidthAdaptiveModeDef; heightAdaptiveMode?: HeightAdaptiveModeDef; autoHeightInAdaptiveMode?: boolean; pixelRatio?: number; customRender?: ICustomRender; autoWrapText?: boolean; enableLineBreak?: boolean; maxCharactersNumber?: number; maxOperatableRecordCount?: number; limitMaxAutoWidth?: boolean | number; limitMinWidth?: boolean | number; limitMinHeight?: boolean | number; maintainedDataCount?: number; maintainedColumnCount?: number; legends?: ITableLegendOption | ITableLegendOption[]; title?: ITitle; componentLayoutOrder?: ('legend' | 'title')[]; emptyTip?: true | IEmptyTip; renderChartAsync?: boolean; renderChartAsyncBatchCount?: number; customMergeCell?: CustomMergeCell; mode?: 'node' | 'browser'; modeParams?: any; canvasWidth?: number | 'auto'; canvasHeight?: number | 'auto'; maxCanvasWidth?: number; maxCanvasHeight?: number; contentOffsetX?: number; contentOffsetY?: number; overscrollBehavior?: 'auto' | 'none'; resizeTime?: number; canvas?: HTMLCanvasElement; viewBox?: IBoundsLike; chartOption?: any; disableInteraction?: boolean; specFormat?: (spec: any, chartInstance: any, chart: any) => { needFormatSpec: boolean; spec?: any; updateSpec?: boolean; }; specTransformInCell?: (spec: any, col: number, row: number) => any; beforeRender?: (stage: any) => void; afterRender?: (stage: any) => void; rowSeriesNumber?: IRowSeriesNumber; enableCheckboxCascade?: boolean; enableHeaderCheckboxCascade?: boolean; customCellStyle?: CustomCellStyle[]; customCellStyleArrangement?: CustomCellStyleArrangement[]; columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body'; clearDOM?: boolean; customConfig?: { multilinesForXTable?: boolean; enableDataAnalysis?: boolean; _disableColumnAndRowSizeRound?: boolean; imageMargin?: number; createReactContainer?: boolean; shrinkSparklineFirst?: boolean; notUpdateInColumnRowMove?: boolean; limitContentHeight?: boolean; imageAnonymous?: boolean; scrollEventAlwaysTrigger?: boolean; enablePivotPathCache?: boolean; disableBuildInChartActive?: boolean; detectPickChartItem?: boolean; forceComputeAllRowHeight?: boolean; cancelSelectCellHook?: (e: FederatedPointerEvent) => boolean; selectCellWhenCellEditorNotExists?: boolean; shouldTreatAsClickOnTable?: (e: MouseEvent) => boolean; }; animationAppear?: boolean | IAnimationAppear; renderOption?: any; formatCopyValue?: (value: string) => string; customComputeRowHeight?: (computeArgs: { row: number; table: BaseTableAPI; }) => number | 'auto' | undefined; tableSizeAntiJitter?: boolean; disableDblclickAutoResizeColWidth?: boolean; resize?: { columnResizeMode?: 'all' | 'none' | 'header' | 'body'; canResizeColumn?: (col: number, row: number, table: BaseTableAPI) => boolean; rowResizeMode?: 'all' | 'none' | 'header' | 'body'; disableDblclickAutoResizeColWidth?: boolean; }; dragOrder?: { dragHeaderMode?: 'all' | 'none' | 'column' | 'row'; validateDragOrderOnEnd?: (source: CellAddress, target: CellAddress) => boolean; }; plugins?: IVTablePlugin[]; defaultCursor?: string; } export interface BaseTableAPI { id: string; recordsCount: number; rowCount: number; colCount: number; tableNoFrameWidth: number; tableNoFrameHeight: number; frozenRowCount: number; frozenColCount: number; bottomFrozenRowCount: number; rightFrozenColCount: number; defaultHeaderRowHeight: (number | 'auto') | (number | 'auto')[]; defaultRowHeight: number; defaultColWidth: number; defaultHeaderColWidth: (number | 'auto') | (number | 'auto')[]; keyboardOptions: TableKeyboardOptions | null; eventOptions: TableEventOptions | null; showFrozenIcon: boolean; readonly canvas: HTMLCanvasElement; readonly visibleRowCount: number; readonly visibleColCount: number; scrollLeft: number; scrollTop: number; options: BaseTableConstructorOptions; globalDropDownMenu?: MenuListItem[] | ((args: { row: number; col: number; table: BaseTableAPI; }) => MenuListItem[]); customRender?: ICustomRender; dataSource: DataSourceAPI; theme: TableTheme; allowFrozenColCount: number; internalProps: IBaseTableProtected; pagination?: IPagination; tableX: number; tableY: number; _tableBorderWidth_left: number; _tableBorderWidth_right: number; _tableBorderWidth_top: number; _tableBorderWidth_bottom: number; widthMode: WidthModeDef; heightMode: HeightModeDef; autoFillWidth: boolean; autoFillHeight?: boolean; containerFit?: { width: boolean; height: boolean; }; widthAdaptiveMode: WidthAdaptiveModeDef; heightAdaptiveMode: HeightAdaptiveModeDef; isReleased: boolean; rowHeightsMap: NumberRangeMap; colWidthsMap: NumberMap; hasListeners: (type: string) => boolean; on: (type: TYPE, listener: TableEventListener) => EventListenerId; _vDataSet?: DataSet; scenegraph: Scenegraph; stateManager: StateManager; eventManager: EventManager; animationManager: TableAnimationManager; editorManager: EditManager; rowHeaderLevelCount: number; columnHeaderLevelCount: number; canvasWidth?: number; canvasHeight?: number; columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body'; _rowRangeHeightsMap: Map; _colRangeWidthsMap: Map; canvasSizeSeted?: boolean; pixelRatio: number; rotateDegree?: number; getDrawRange: () => Rect; _getMouseAbstractPoint: (evt: TouchEvent | MouseEvent | undefined) => { x: number; y: number; inTable: boolean; }; getElement: () => HTMLElement; getContainer: () => HTMLElement; setFrozenColCount: (count: number) => void; _setFrozenColCount: (count: number) => void; _updateSize: () => void; render: () => void; throttleInvalidate: () => void; getRowHeight: (row: number) => number; getDefaultRowHeight: (row: number) => number | 'auto'; getDefaultColumnWidth: (col: number) => number | 'auto'; _setRowHeight: (row: number, height: number, clearCache?: boolean) => void; setRowHeight: (row: number, height: number) => void; getColWidth: (col: number) => number; getColWidthDefined: (col: number) => string | number; getColWidthDefinedNumber: (col: number) => number; _setColWidth: (col: number, width: number | string, clearCache?: boolean, skipCheckFrozen?: boolean) => void; setColWidth: (col: number, width: number) => void; _getColContentWidth: (col: number) => number; _setColContentWidth: (col: number, width: number | string, clearCache?: boolean) => void; getMaxColWidth: (col: number) => number; setMaxColWidth: (col: number, maxwidth: string | number) => void; getMinColWidth: (col: number) => number; setMinColWidth: (col: number, minwidth: string | number) => void; getCellRect: (col: number, row: number) => Rect; getCellRelativeRect: (col: number, row: number) => Rect; getCellsRect: (startCol: number, startRow: number, endCol: number, endRow: number) => Rect; getCellRangeRect: (cellRange: CellRange | CellAddress) => Rect; getCellRangeRelativeRect: (cellRange: CellRange | CellAddress) => Rect; getVisibleCellRangeRelativeRect: (cellRange: CellRange | CellAddress) => Rect; isFrozenCell: (col: number, row: number) => { row: boolean; col: boolean; } | null; getRowAt: (absoluteY: number) => { top: number; row: number; bottom: number; }; getColAt: (absoluteX: number) => { left: number; col: number; right: number; }; getCellAt: (absoluteX: number, absoluteY: number) => CellAddressWithBound; getCellAtRelativePosition: (absoluteX: number, absoluteY: number) => CellAddressWithBound; getColAtRelativePosition: (absoluteX: number) => number; getRowAtRelativePosition: (absoluteY: number) => number; _makeVisibleCell: (col: number, row: number) => void; getCellOverflowText: (col: number, row: number) => string | null; getColsWidth: (startCol: number, endCol: number) => number; getColsWidths: () => number[]; getRowsHeight: (startRow: number, endRow: number) => number; _getRangeSizeForContainerFit: (start: number, end: number, totalSize: number, type: 'col' | 'row') => number; release: () => void; addReleaseObj: (releaseObj: { release: () => void; }) => void; _getCellStyle: (col: number, row: number) => FullExtendStyle; clearCellStyleCache: () => void; getFrozenRowsHeight: () => number; getFrozenColsWidth: () => number; getFrozenColsContentWidth: () => number; getFrozenColsOffset: () => number; getFrozenColsScrollLeft: () => number; getBottomFrozenRowsHeight: () => number; getRightFrozenColsWidth: () => number; getRightFrozenColsContentWidth: () => number; getRightFrozenColsOffset: () => number; getRightFrozenColsScrollLeft: () => number; selectCell: (col: number, row: number, isShift?: boolean, isCtrl?: boolean, makeSelectCellVisible?: boolean, skipBodyMerge?: boolean) => void; clearSelected: () => void; selectCells: (cellRanges: CellRange[]) => void; getAllRowsHeight: () => number; getAllColsWidth: () => number; off: (id: EventListenerId) => void; getBodyField: (col: number, row: number) => FieldDef | undefined; getRecordByCell: (col: number, row: number) => MaybePromiseOrUndefined; getTableIndexByRecordIndex: (recordIndex: number | number[]) => number; getTableIndexByField: (field: FieldDef) => number; getCellAddrByFieldRecord: (field: FieldDef, recordIndex: number | number[]) => CellAddress; getRecordShowIndexByCell: (col: number, row: number) => number; getRecordStartRowByRecordIndex: (index: number) => number; getHeaderField: (col: number, row: number) => any | undefined; _getHeaderCellBySortState: (sortState: SortState) => CellAddress | undefined; getHeaderDefine: (col: number, row: number) => ColumnDefine | IRowSeriesNumber | ColumnSeriesNumber; _getHeaderLayoutMap: (col: number, row: number) => HeaderData | SeriesNumberColumnData; getContext: () => CanvasRenderingContext2D; getCellRange: (col: number, row: number) => CellRange; _resetFrozenColCount: () => void; isCellRangeEqual: (col: number, row: number, targetCol: number, targetRow: number) => boolean; _getLayoutCellId: (col: number, row: number) => LayoutObjectId; _getBodyLayoutMap: (col: number, row: number) => ColumnData | IndicatorData | SeriesNumberColumnData; getBodyColumnDefine: (col: number, row: number) => ColumnDefine | IRowSeriesNumber | ColumnSeriesNumber; getBodyColumnType: (col: number, row: number) => ColumnTypeOption; getCellType: (col: number, row: number) => ColumnTypeOption; fireListeners: (type: TYPE, event: TableEventHandlersEventArgumentMap[TYPE]) => TableEventHandlersReturnMap[TYPE][]; updatePagination: (cof: IPagination) => void; getHeaderDescription: (col: number, row: number) => string | undefined; getCellValue: (col: number, row: number, skipCustomMerge?: boolean) => string | null; getCellOriginValue: (col: number, row: number) => any; getCellRawValue: (col: number, row: number) => FieldData; getCellOriginRecord: (col: number, row: number) => MaybePromiseOrUndefined; getCellRawRecord: (col: number, row: number) => MaybePromiseOrUndefined; _dropDownMenuIsHighlight: (col: number, row: number, index: number) => boolean; refreshRowColCount: () => void; _hasField: (field: FieldDef, col: number, row: number) => boolean; getCellHeaderPaths: (col: number, row: number) => ICellHeaderPaths; getCellLocation: (col: number, row: number) => CellLocation; getCellIcons: (col: number, row: number) => ColumnIconOption[]; getMenuInfo: (col: number, row: number, type: string) => DropDownMenuEventInfo; getCellStyle: (col: number, row: number) => CellStyle; getHierarchyState: (col: number, row: number) => HierarchyState | null; _canDragHeaderPosition: (col: number, row: number) => boolean; changeHeaderPosition: (args: { source: CellAddress; target: CellAddress; movingColumnOrRow?: 'column' | 'row'; }) => boolean; isHeader: (col: number, row: number) => boolean; isColumnHeader: (col: number, row: number) => boolean; isCornerHeader: (col: number, row: number) => boolean; isRowHeader: (col: number, row: number) => boolean; getCopyValue: (getCellValueFunction?: (col: number, row: number) => string | number) => string; getSelectedCellInfos: () => CellInfo[][]; getSelectedCellRanges: () => CellRange[]; getCellInfo: (col: number, row: number) => Omit; showTooltip: (col: number, row: number, tooltipOptions?: TooltipOptions) => void; measureText: (text: string, font: { fontSize: number; fontWeight?: string | number; fontFamily: string; }) => ITextSize; _canResizeColumn: (col: number, row: number) => boolean; _canResizeRow: (col: number, row: number) => boolean; getCustomRender: (col: number, row: number) => ICustomRender; getCustomLayout: (col: number, row: number) => ICustomLayout; isListTable: () => boolean; isPivotTable: (() => boolean) & (() => boolean); isPivotChart: (() => boolean) & (() => boolean); _clearColRangeWidthsMap: (col?: number) => void; _clearRowRangeHeightsMap: (row?: number) => void; clearRowHeightCache: () => void; clearColWidthCache: () => void; toggleHierarchyState: (col: number, row: number) => void; resize: () => void; setCanvasSize: (width: number, height: number) => void; getMergeCellRect: (col: number, row: number) => Rect; getTargetColAt: (absoluteX: number) => ColumnInfo | null; getTargetRowAt: (absoluteY: number) => RowInfo | null; getTargetColAtConsiderRightFrozen: (absoluteX: number, isConsider: boolean) => ColumnInfo | null; getTargetRowAtConsiderBottomFrozen: (absoluteY: number, isConsider: boolean) => RowInfo | null; renderWithRecreateCells: () => void; _adjustColWidth: (col: number, orgWidth: number) => number; _colWidthDefineToPxWidth: (width: string | number) => number; isFrozenColumn: (col: number, row?: number) => boolean; isLeftFrozenColumn: (col: number, row?: number) => boolean; isRightFrozenColumn: (col: number, row?: number) => boolean; isFrozenRow: (col: number, row?: number) => boolean; isTopFrozenRow: (col: number, row?: number) => boolean; isBottomFrozenRow: (col: number, row?: number) => boolean; hasCustomMerge: () => boolean; getCustomMerge: (col: number, row: number) => undefined | (Omit & { style?: FullExtendStyle; }); getBodyVisibleCellRange: () => { rowStart: number; colStart: number; rowEnd: number; colEnd: number; }; getBodyVisibleColRange: (start_deltaX?: number, end_deltaX?: number) => { colStart: number; colEnd: number; }; getBodyVisibleRowRange: (start_deltaY?: number, end_deltaY?: number) => { rowStart: number; rowEnd: number; }; _hasCustomRenderOrLayout: () => boolean; getBodyIndexByTableIndex: (col: number, row: number) => CellAddress; getTableIndexByBodyIndex: (col: number, row: number) => CellAddress; scrollToCell: (cellAddr: { col?: number; row?: number; }, animationOption?: ITableAnimationOption | boolean) => void; scrollToRow: (row: number, animationOption?: ITableAnimationOption | boolean) => void; scrollToCol: (col: number, animationOption?: ITableAnimationOption | boolean) => void; registerCustomCellStyle: (customStyleId: string, customStyle: ColumnStyleOption | undefined | null) => void; arrangeCustomCellStyle: (cellPos: { col?: number; row?: number; range?: CellRange; }, customStyleId: string) => void; checkHasColumnAutoWidth: () => boolean; _moveHeaderPosition: (source: CellAddress, target: CellAddress) => { sourceIndex: number; targetIndex: any; sourceSize: any; targetSize: any; moveType: 'column' | 'row'; }; changeRecordOrder: (source: number, target: number) => void; isSeriesNumber: (col: number, row?: number) => boolean; isHasSeriesNumber: () => boolean; leftRowSeriesNumberCount: number; isAutoRowHeight: (row?: number) => boolean; reactCustomLayout?: ReactCustomLayout; checkReactCustomLayout: (removeAllContainer: () => void) => void; setSortedIndexMap: (field: FieldDef, filedMap: ISortedMapItem) => void; exportImg: () => string; exportCellImg: (col: number, row: number, options?: { disableBackground?: boolean; disableBorder?: boolean; }) => string; exportCellRangeImg: (cellRange: CellRange) => string; exportCanvas: () => HTMLCanvasElement; setPixelRatio: (pixelRatio: number) => void; bodyDomContainer?: HTMLElement; headerDomContainer?: HTMLElement; frozenBodyDomContainer?: HTMLElement; frozenHeaderDomContainer?: HTMLElement; rightFrozenBodyDomContainer?: HTMLElement; rightFrozenHeaderDomContainer?: HTMLElement; frozenBottomDomContainer?: HTMLElement; bottomDomContainer?: HTMLElement; rightFrozenBottomDomContainer?: HTMLElement; showMoverLine: (col: number, row: number) => void; hideMoverLine: (col: number, row: number) => void; disableScroll: () => void; enableScroll: () => void; customCellStylePlugin?: CustomCellStylePlugin; headerStyleCache: Map; bodyBottomStyleCache: Map; bodyStyleCache: Map; bodyMergeTitleCache: Map; isSeriesNumberInBody: (col: number, row: number) => boolean; getGroupTitleLevel: (col: number, row: number) => number | undefined; _getMaxFrozenWidth: () => number; _getComputedFrozenColCount: (frozenColCount: number) => number; isColumnSelected: (col: number) => boolean; isRowSelected: (row: number) => boolean; updateCellContentRanges: (ranges: CellRange[]) => void; updateCellContent: (col: number, row: number) => void; updateCellContentRange: (startCol: number, startRow: number, endCol: number, endRow: number) => void; } export interface ListTableProtected extends IBaseTableProtected { records: any[] | null; dataConfig?: IListTableDataConfig; columns: ColumnsDefine; layoutMap: SimpleHeaderLayoutMap; columnWidthConfig?: { key: string | number; width: number; }[]; rowHeightConfig?: { key: number; height: number; }[]; groupBy: GroupByOption; groupTitleFieldFormat?: (record: any, col?: number, row?: number, table?: BaseTableAPI) => string; groupTitleCustomLayout?: ICustomLayout; enableTreeStickCell?: boolean; groupTitleCheckbox?: boolean; } export interface PivotTableProtected extends IBaseTableProtected { records: any[] | undefined; recordsIsTwoDimensionalArray?: boolean; layoutMap: PivotHeaderLayoutMap; dataConfig?: IPivotTableDataConfig; columnTree?: IHeaderTreeDefine[]; rowTree?: IHeaderTreeDefine[]; rows?: (IRowDimension | string)[]; columns?: (IColumnDimension | string)[]; indicators?: (IIndicator | string)[]; columnWidthConfig?: { dimensions: IDimensionInfo[]; width: number; }[]; columnWidthConfigForRowHeader?: { dimensions: IDimensionInfo[]; width: number; }[]; } export interface PivotChartProtected extends IBaseTableProtected { records: any[] | Record; layoutMap: PivotHeaderLayoutMap; dataConfig?: IPivotChartDataConfig; columnTree?: IHeaderTreeDefine[]; rowTree?: IHeaderTreeDefine[]; rows?: (IRowDimension | string)[]; columns?: (IColumnDimension | string)[]; indicators?: (IIndicator | string)[]; columnWidthConfig?: { dimensions: IDimensionInfo[]; width: number; }[]; columnWidthConfigForRowHeader?: { dimensions: IDimensionInfo[]; width: number; }[]; }