@visactor/vtable 1.22.11-alpha.9 → 1.22.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ListTable.d.ts +7 -34
- package/cjs/ListTable.js +18 -138
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotTable-all.js.map +1 -1
- package/cjs/components/index.js +1 -1
- package/cjs/core/BaseTable.d.ts +3 -0
- package/cjs/core/BaseTable.js +22 -6
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/TABLE_EVENT_TYPE.d.ts +0 -1
- package/cjs/core/TABLE_EVENT_TYPE.js +0 -1
- package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/cjs/core/record-helper.d.ts +2 -4
- package/cjs/core/record-helper.js +47 -120
- package/cjs/core/record-helper.js.map +1 -1
- package/cjs/data/DataSource.d.ts +4 -13
- package/cjs/data/DataSource.js +60 -174
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/dataset.js +92 -84
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/edit/edit-manager.js +10 -9
- package/cjs/edit/edit-manager.js.map +1 -1
- package/cjs/event/event.d.ts +1 -2
- package/cjs/event/event.js +9 -20
- package/cjs/event/event.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/pivot-header-layout.js +1 -1
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/plugins/custom-cell-style.d.ts +5 -5
- package/cjs/plugins/custom-cell-style.js +64 -25
- package/cjs/plugins/custom-cell-style.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/cjs/scenegraph/layout/update-row.js +16 -1
- package/cjs/scenegraph/layout/update-row.js.map +1 -1
- package/cjs/scenegraph/select/update-select-border.js.map +1 -1
- package/cjs/state/select/update-position.js +3 -3
- package/cjs/state/select/update-position.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +5 -2
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/events.d.ts +0 -15
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/new-data-set.d.ts +1 -0
- package/cjs/ts-types/new-data-set.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +6 -33
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +332 -735
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +7 -34
- package/es/ListTable.js +18 -134
- package/es/ListTable.js.map +1 -1
- package/es/PivotTable-all.js.map +1 -1
- package/es/components/index.js +1 -1
- package/es/core/BaseTable.d.ts +3 -0
- package/es/core/BaseTable.js +22 -6
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/TABLE_EVENT_TYPE.d.ts +0 -1
- package/es/core/TABLE_EVENT_TYPE.js +0 -1
- package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/es/core/record-helper.d.ts +2 -4
- package/es/core/record-helper.js +43 -114
- package/es/core/record-helper.js.map +1 -1
- package/es/data/DataSource.d.ts +4 -13
- package/es/data/DataSource.js +60 -174
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/dataset.js +92 -84
- package/es/dataset/dataset.js.map +1 -1
- package/es/edit/edit-manager.js +10 -9
- package/es/edit/edit-manager.js.map +1 -1
- package/es/event/event.d.ts +1 -2
- package/es/event/event.js +9 -20
- package/es/event/event.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/pivot-header-layout.js +1 -1
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/plugins/custom-cell-style.d.ts +5 -5
- package/es/plugins/custom-cell-style.js +62 -25
- package/es/plugins/custom-cell-style.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/es/scenegraph/layout/update-row.js +16 -1
- package/es/scenegraph/layout/update-row.js.map +1 -1
- package/es/scenegraph/select/update-select-border.js.map +1 -1
- package/es/state/select/update-position.js +4 -2
- package/es/state/select/update-position.js.map +1 -1
- package/es/ts-types/base-table.d.ts +5 -2
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/events.d.ts +0 -15
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/new-data-set.d.ts +1 -0
- package/es/ts-types/new-data-set.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +6 -33
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +3 -3
- package/cjs/core/index.d.ts +0 -1
- package/cjs/core/index.js +0 -30
- package/cjs/core/index.js.map +0 -1
- package/es/core/index.d.ts +0 -1
- package/es/core/index.js +0 -2
- package/es/core/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/select/update-position.ts"],"names":[],"mappings":"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","file":"update-position.js","sourcesContent":["import type { ListTable } from '../..';\nimport type { SimpleHeaderLayoutMap } from '../../layout';\nimport type { Scenegraph } from '../../scenegraph/scenegraph';\nimport type { SelectAllOnCtrlAOption } from '../../ts-types';\nimport { InteractionState } from '../../ts-types';\nimport type { StateManager } from '../state';\n/**\n * @description: 更新select位置\n * @param {StateManager} state\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\nexport function updateSelectPosition(\n state: StateManager,\n col: number,\n row: number,\n enableShiftSelectMode: boolean,\n enableCtrlSelectMode: boolean,\n isSelectAll: boolean,\n makeSelectCellVisible: boolean = true,\n skipBodyMerge: boolean = false\n // forceSelect: boolean = false\n) {\n const { table, interactionState } = state;\n const { scenegraph } = table;\n const { cellPos } = state.select;\n state.select.isSelectAll = isSelectAll;\n\n if (col !== -1 && row !== -1 && makeSelectCellVisible) {\n table._makeVisibleCell(col, row);\n }\n // col = -1;\n // row = -1;\n // }\n\n /** 完整显示选中单元格 自动滚动效果*/\n if (col !== -1 && row !== -1 && makeSelectCellVisible) {\n if (interactionState === InteractionState.grabing && state.select.ranges.length > 0) {\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n if (col > currentRange.start.col && col > currentRange.end.col) {\n //向右扩展\n table._makeVisibleCell(col + 1, row);\n }\n if (row > currentRange.start.row && row > currentRange.end.row) {\n //向右扩展\n table._makeVisibleCell(col, row + 1);\n }\n if (col < currentRange.start.col && col < currentRange.end.col) {\n //向右扩展\n table._makeVisibleCell(col - 1, row);\n }\n if (row < currentRange.start.row && row < currentRange.end.row) {\n //向右扩展\n table._makeVisibleCell(col, row - 1);\n }\n } else {\n table._makeVisibleCell(col, row);\n }\n }\n if (isSelectAll) {\n state.select.ranges = [];\n scenegraph.deleteAllSelectBorder();\n let _startCol = 0;\n let _startRow = 0;\n const { disableHeaderSelect, disableRowSeriesNumberSelect } =\n (table.options.keyboardOptions?.selectAllOnCtrlA as SelectAllOnCtrlAOption) || {};\n\n // 表头选中\n if (disableHeaderSelect) {\n _startCol = table.rowHeaderLevelCount;\n _startRow = table.columnHeaderLevelCount;\n }\n // 行号列选中\n if (\n (disableRowSeriesNumberSelect || (disableHeaderSelect && (table as ListTable).transpose)) &&\n table.options.rowSeriesNumber\n ) {\n _startCol += 1;\n }\n\n state.select.ranges.push({\n start: { col: _startCol, row: _startRow },\n end: { col: table.colCount - 1, row: table.rowCount - 1 }\n });\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n scenegraph.updateCellSelectBorder(currentRange, false);\n } else if (cellPos.col !== -1 && cellPos.row !== -1 && (col === -1 || row === -1)) {\n // 输入-1清空选中状态\n // clearMultiSelect(scenegraph, ranges, highlightScope, singleStyle);\n cellPos.col = -1;\n cellPos.row = -1;\n state.select.ranges = [];\n // 隐藏select border\n scenegraph.deleteAllSelectBorder();\n } else if (\n interactionState === InteractionState.default &&\n !table.eventManager.isDraging &&\n !table.stateManager.isResizeCol()\n ) {\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n if (enableShiftSelectMode && currentRange) {\n if (state.select.headerSelectMode !== 'cell' && table.isColumnHeader(col, row)) {\n const startCol = Math.min(currentRange.start.col, currentRange.end.col, col);\n const endCol = Math.max(currentRange.start.col, currentRange.end.col, col);\n const startRow = Math.min(currentRange.start.row, currentRange.end.row, row);\n const endRow = table.rowCount - 1;\n if (state.select.headerSelectMode === 'body') {\n currentRange.start = { col: startCol, row: table.columnHeaderLevelCount };\n currentRange.end = { col: endCol, row: table.rowCount - 1 };\n } else {\n currentRange.start = { col: startCol, row: startRow };\n currentRange.end = { col: endCol, row: endRow };\n }\n } else if (state.select.headerSelectMode !== 'cell' && table.isRowHeader(col, row)) {\n const startCol = Math.min(currentRange.start.col, currentRange.end.col, col);\n const endCol = table.colCount - 1;\n const startRow = Math.min(currentRange.start.row, currentRange.end.row, row);\n const endRow = Math.max(currentRange.start.row, currentRange.end.row, row);\n if (state.select.headerSelectMode === 'body') {\n currentRange.start = { col: table.leftRowSeriesNumberCount + table.rowHeaderLevelCount, row: startRow };\n currentRange.end = { col: table.colCount - 1, row: endRow };\n } else {\n currentRange.start = { col: startCol, row: startRow };\n currentRange.end = { col: endCol, row: endRow };\n }\n } else if (state.select.headerSelectMode !== 'cell' && table.isSeriesNumberInBody(col, row)) {\n const startCol = Math.min(currentRange.start.col, currentRange.end.col, col);\n const endCol = table.colCount - 1;\n const startRow = Math.min(currentRange.start.row, currentRange.end.row, row);\n const endRow = Math.max(currentRange.start.row, currentRange.end.row, row);\n if (state.select.headerSelectMode === 'body') {\n currentRange.start = { col: table.leftRowSeriesNumberCount, row: startRow };\n currentRange.end = { col: table.colCount - 1, row: endRow };\n } else {\n currentRange.start = { col: startCol, row: startRow };\n currentRange.end = { col: endCol, row: endRow };\n }\n } else {\n currentRange.end = { col, row };\n }\n // 禁用shift多选时,选中范围的end应该和start一致\n if (!enableShiftSelectMode) {\n currentRange.end = currentRange.start;\n }\n scenegraph.deleteLastSelectedRangeComponents();\n scenegraph.updateCellSelectBorder(currentRange);\n // } else if (isCtrl) {\n // cellPos.col = col;\n // cellPos.row = row;\n // state.select.ranges.push({\n // start: { col: cellPos.col, row: cellPos.row },\n // end: { col: cellPos.col, row: cellPos.row },\n // });\n // // 单选或多选的开始,只选中第一个单元格\n // // updateCellSelect(scenegraph, col, row, ranges, highlightScope, singleStyle);\n // scenegraph.setCellNormalStyle(col, row);\n // // 更新select border\n // // calculateAndUpdateMultiSelectBorder(scenegraph, col, row, col, row, state.select.ranges);\n // // 更新select border\n // scenegraph.updateCellSelectBorder(cellPos);\n } else {\n let extendSelectRange = true;\n // 单选或多选开始\n if (cellPos.col !== -1 && cellPos.row !== -1 && !enableCtrlSelectMode) {\n state.select.ranges = [];\n scenegraph.deleteAllSelectBorder();\n }\n\n if (state.select.headerSelectMode !== 'cell' && table.isColumnHeader(col, row)) {\n // 选中行表头\n const cellRange = table.getCellRange(col, row);\n if (state.select.headerSelectMode === 'body') {\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: table.columnHeaderLevelCount },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n }\n } else if (state.select.headerSelectMode !== 'cell' && table.isRowHeader(col, row)) {\n // 选中列表头\n const cellRange = table.getCellRange(col, row);\n if (state.select.headerSelectMode === 'body') {\n state.select.ranges.push({\n start: { col: table.rowHeaderLevelCount + table.leftRowSeriesNumberCount, row: cellRange.start.row },\n end: { col: table.colCount - 1, row: cellRange.end.row },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: table.colCount - 1, row: cellRange.end.row },\n skipBodyMerge: true\n });\n }\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInHeader(col, row)) {\n // 选中表头行号单元格\n extendSelectRange = false;\n\n const { cornerHeaderSelectMode } = state.select;\n if (cornerHeaderSelectMode === 'body') {\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row: table.columnHeaderLevelCount\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'inline') {\n // inline 选中行号所在单元格下所有列\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'cell') {\n // 选中行号单元格\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: cellRange.end.row },\n skipBodyMerge: skipBodyMerge || undefined\n });\n } else {\n state.select.ranges.push({\n start: { col: 0, row: 0 },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n }\n // 旧逻辑\n // if (state.select.headerSelectMode === 'body') {\n // state.select.ranges.push({\n // start: {\n // col: table.leftRowSeriesNumberCount,\n // row: table.columnHeaderLevelCount\n // },\n // end: { col: table.colCount - 1, row: table.rowCount - 1 },\n // skipBodyMerge: true\n // });\n // } else {\n // state.select.ranges.push({\n // start: { col: 0, row: 0 },\n // end: { col: table.colCount - 1, row: table.rowCount - 1 },\n // skipBodyMerge: true\n // });\n // }\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInBody(col, row)) {\n // 选中内容行号单元格\n extendSelectRange = false;\n if (state.select.headerSelectMode === 'body') {\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row\n },\n end: { col: table.colCount - 1, row: row },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: { col, row },\n end: { col: table.colCount - 1, row: row },\n skipBodyMerge: true\n });\n }\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isCornerHeader(col, row)) {\n // 选中表头行号单元格\n extendSelectRange = false;\n const { cornerHeaderSelectMode } = state.select;\n\n if (cornerHeaderSelectMode === 'body') {\n state.select.ranges.push({\n start: {\n col: table.rowHeaderLevelCount + table.leftRowSeriesNumberCount,\n row: table.columnHeaderLevelCount\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'cell') {\n // 选中普通单元格\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: cellRange.end.row },\n skipBodyMerge: skipBodyMerge || undefined\n });\n } else if (cornerHeaderSelectMode === 'inline') {\n // inline\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'all') {\n // all 或者用户传的其他的什么值 :'' | 'test',虽然类型会提示用户不能为其他的值,\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row: 0\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row: 0\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n }\n } else if (col >= 0 && row >= 0) {\n // 选中普通单元格\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: cellRange.end.row },\n skipBodyMerge: skipBodyMerge || undefined\n });\n }\n cellPos.col = col;\n cellPos.row = row;\n // scenegraph.setCellNormalStyle(col, row);\n const currentRange = state.select.ranges?.[state.select.ranges.length - 1];\n if (\n currentRange &&\n currentRange.start.row <= table.rowCount - 1 &&\n currentRange.end.row <= table.rowCount - 1 &&\n currentRange.start.col <= table.colCount - 1 &&\n currentRange.end.col <= table.colCount - 1\n ) {\n scenegraph.updateCellSelectBorder(currentRange, extendSelectRange);\n }\n }\n } else if (\n (interactionState === InteractionState.grabing || table.eventManager.isDraging) &&\n !table.stateManager.isResizeCol()\n ) {\n let extendSelectRange = true;\n // 可能有cellPosStart从-1开始grabing的情况\n if (cellPos.col === -1) {\n cellPos.col = col;\n }\n if (cellPos.row === -1) {\n cellPos.row = row;\n }\n cellPos.col = col;\n cellPos.row = row;\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n if (currentRange) {\n if (\n (table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInBody(\n currentRange.start.col,\n currentRange.start.row\n )\n ) {\n // 如果选中起始位置是序号 那么选中范围都是整行整行的选中\n extendSelectRange = false;\n currentRange.end = {\n col: table.colCount - 1,\n row\n };\n } else {\n if (state.fillHandle.isFilling) {\n // 修正拖拽填充柄选中范围 和 不拖填充柄是有区别的 解决选中区域缩小问题\n if (state.fillHandle.direction === 'top') {\n if (row === state.fillHandle.beforeFillMinRow && row === state.fillHandle.beforeFillMaxRow) {\n currentRange.start.row = currentRange.end.row = row;\n } else if (row <= state.fillHandle.beforeFillMinRow) {\n if (currentRange.start.row < currentRange.end.row) {\n const temp = currentRange.start.row;\n currentRange.start.row = currentRange.end.row;\n currentRange.end.row = temp;\n }\n currentRange.end.row = row;\n } else if (row === state.fillHandle.beforeFillMaxRow) {\n if (currentRange.start.row > currentRange.end.row) {\n currentRange.start.row = row;\n } else {\n currentRange.end.row = row;\n }\n }\n } else if (state.fillHandle.direction === 'bottom') {\n if (row >= state.fillHandle.beforeFillMaxRow) {\n if (currentRange.start.row > currentRange.end.row) {\n const temp = currentRange.start.row;\n currentRange.start.row = currentRange.end.row;\n currentRange.end.row = temp;\n }\n currentRange.end.row = row;\n }\n } else if (state.fillHandle.direction === 'left') {\n if (col === state.fillHandle.beforeFillMinCol && col === state.fillHandle.beforeFillMaxCol) {\n currentRange.start.col = currentRange.end.col = col;\n } else if (col <= state.fillHandle.beforeFillMinCol) {\n if (currentRange.start.col < currentRange.end.col) {\n const temp = currentRange.start.col;\n currentRange.start.col = currentRange.end.col;\n currentRange.end.col = temp;\n }\n currentRange.end.col = col;\n } else if (col === state.fillHandle.beforeFillMaxCol) {\n if (currentRange.start.col > currentRange.end.col) {\n currentRange.start.col = col;\n } else {\n currentRange.end.col = col;\n }\n }\n } else if (state.fillHandle.direction === 'right') {\n if (col >= state.fillHandle.beforeFillMaxCol) {\n if (currentRange.start.col > currentRange.end.col) {\n const temp = currentRange.start.col;\n currentRange.start.col = currentRange.end.col;\n currentRange.end.col = temp;\n }\n currentRange.end.col = col;\n }\n }\n } else {\n currentRange.end = {\n col,\n row\n };\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n if (currentRange.start.col < cellRange.end.col) {\n currentRange.end.col = cellRange.end.col;\n } else if (currentRange.start.col > cellRange.start.col) {\n currentRange.end.col = cellRange.start.col;\n }\n\n if (currentRange.start.row < cellRange.end.row) {\n currentRange.end.row = cellRange.end.row;\n } else if (currentRange.start.row > cellRange.start.row) {\n currentRange.end.row = cellRange.start.row;\n }\n\n if (state.select.headerSelectMode === 'body') {\n if (table.isRowHeader(col, row)) {\n currentRange.start.col = table.rowHeaderLevelCount + table.leftRowSeriesNumberCount;\n currentRange.end.col = table.colCount - 1;\n } else if (table.isColumnHeader(col, row)) {\n currentRange.start.row = table.columnHeaderLevelCount;\n currentRange.end.row = table.rowCount - 1;\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInBody(col, row)) {\n currentRange.start.col = table.leftRowSeriesNumberCount;\n currentRange.end.col = table.colCount - 1;\n } else if (table.isCornerHeader(col, row)) {\n currentRange.start.col = table.rowHeaderLevelCount + table.leftRowSeriesNumberCount;\n currentRange.start.row = table.columnHeaderLevelCount;\n currentRange.end.col = table.colCount - 1;\n currentRange.end.row = table.rowCount - 1;\n } else if (table.isSeriesNumber(col, row)) {\n currentRange.start.col = table.leftRowSeriesNumberCount;\n currentRange.start.row = table.columnHeaderLevelCount;\n currentRange.end.col = table.colCount - 1;\n currentRange.end.row = table.rowCount - 1;\n }\n }\n if (skipBodyMerge) {\n currentRange.skipBodyMerge = true;\n }\n }\n }\n if (\n currentRange &&\n currentRange.start.row <= table.rowCount - 1 &&\n currentRange.end.row <= table.rowCount - 1 &&\n currentRange.start.col <= table.colCount - 1 &&\n currentRange.end.col <= table.colCount - 1\n ) {\n scenegraph.updateCellSelectBorder(currentRange, extendSelectRange);\n }\n }\n }\n scenegraph.updateNextFrame();\n}\nexport function selectEnd(scenegraph: Scenegraph) {\n scenegraph.moveSelectingRangeComponentsToSelectedRangeComponents();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/select/update-position.ts"],"names":[],"mappings":"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","file":"update-position.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { ListTable } from '../..';\nimport type { SimpleHeaderLayoutMap } from '../../layout';\nimport type { Scenegraph } from '../../scenegraph/scenegraph';\nimport type { SelectAllOnCtrlAOption } from '../../ts-types';\nimport { InteractionState } from '../../ts-types';\nimport type { StateManager } from '../state';\n/**\n * @description: 更新select位置\n * @param {StateManager} state\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\nexport function updateSelectPosition(\n state: StateManager,\n col: number,\n row: number,\n enableShiftSelectMode: boolean,\n enableCtrlSelectMode: boolean,\n isSelectAll: boolean,\n makeSelectCellVisible: boolean = true,\n skipBodyMerge: boolean = false\n // forceSelect: boolean = false\n) {\n const { table, interactionState } = state;\n const { scenegraph } = table;\n const { cellPos } = state.select;\n state.select.isSelectAll = isSelectAll;\n\n if (col !== -1 && row !== -1 && makeSelectCellVisible) {\n table._makeVisibleCell(col, row);\n }\n // col = -1;\n // row = -1;\n // }\n\n /** 完整显示选中单元格 自动滚动效果*/\n if (col !== -1 && row !== -1 && makeSelectCellVisible) {\n if (interactionState === InteractionState.grabing && state.select.ranges.length > 0) {\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n if (col > currentRange.start.col && col > currentRange.end.col) {\n //向右扩展\n table._makeVisibleCell(col + 1, row);\n }\n if (row > currentRange.start.row && row > currentRange.end.row) {\n //向右扩展\n table._makeVisibleCell(col, row + 1);\n }\n if (col < currentRange.start.col && col < currentRange.end.col) {\n //向右扩展\n table._makeVisibleCell(col - 1, row);\n }\n if (row < currentRange.start.row && row < currentRange.end.row) {\n //向右扩展\n table._makeVisibleCell(col, row - 1);\n }\n } else {\n table._makeVisibleCell(col, row);\n }\n }\n if (isSelectAll) {\n state.select.ranges = [];\n scenegraph.deleteAllSelectBorder();\n let _startCol = 0;\n let _startRow = 0;\n const { disableHeaderSelect, disableRowSeriesNumberSelect } =\n (table.options.keyboardOptions?.selectAllOnCtrlA as SelectAllOnCtrlAOption) || {};\n\n // 表头选中\n if (disableHeaderSelect) {\n _startCol = table.rowHeaderLevelCount;\n _startRow = table.columnHeaderLevelCount;\n }\n // 行号列选中\n if (\n (disableRowSeriesNumberSelect || (disableHeaderSelect && (table as ListTable).transpose)) &&\n table.options.rowSeriesNumber\n ) {\n _startCol += 1;\n }\n\n state.select.ranges.push({\n start: { col: _startCol, row: _startRow },\n end: { col: table.colCount - 1, row: table.rowCount - 1 }\n });\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n scenegraph.updateCellSelectBorder(currentRange, false);\n } else if (cellPos.col !== -1 && cellPos.row !== -1 && (col === -1 || row === -1)) {\n // 输入-1清空选中状态\n // clearMultiSelect(scenegraph, ranges, highlightScope, singleStyle);\n cellPos.col = -1;\n cellPos.row = -1;\n state.select.ranges = [];\n // 隐藏select border\n scenegraph.deleteAllSelectBorder();\n } else if (\n interactionState === InteractionState.default &&\n !table.eventManager.isDraging &&\n !table.stateManager.isResizeCol()\n ) {\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n if (enableShiftSelectMode && currentRange) {\n if (state.select.headerSelectMode !== 'cell' && table.isColumnHeader(col, row)) {\n const startCol = Math.min(currentRange.start.col, currentRange.end.col, col);\n const endCol = Math.max(currentRange.start.col, currentRange.end.col, col);\n const startRow = Math.min(currentRange.start.row, currentRange.end.row, row);\n const endRow = table.rowCount - 1;\n if (state.select.headerSelectMode === 'body') {\n currentRange.start = { col: startCol, row: table.columnHeaderLevelCount };\n currentRange.end = { col: endCol, row: table.rowCount - 1 };\n } else {\n currentRange.start = { col: startCol, row: startRow };\n currentRange.end = { col: endCol, row: endRow };\n }\n } else if (state.select.headerSelectMode !== 'cell' && table.isRowHeader(col, row)) {\n const startCol = Math.min(currentRange.start.col, currentRange.end.col, col);\n const endCol = table.colCount - 1;\n const startRow = Math.min(currentRange.start.row, currentRange.end.row, row);\n const endRow = Math.max(currentRange.start.row, currentRange.end.row, row);\n if (state.select.headerSelectMode === 'body') {\n currentRange.start = { col: table.leftRowSeriesNumberCount + table.rowHeaderLevelCount, row: startRow };\n currentRange.end = { col: table.colCount - 1, row: endRow };\n } else {\n currentRange.start = { col: startCol, row: startRow };\n currentRange.end = { col: endCol, row: endRow };\n }\n } else if (state.select.headerSelectMode !== 'cell' && table.isSeriesNumberInBody(col, row)) {\n const startCol = Math.min(currentRange.start.col, currentRange.end.col, col);\n const endCol = table.colCount - 1;\n const startRow = Math.min(currentRange.start.row, currentRange.end.row, row);\n const endRow = Math.max(currentRange.start.row, currentRange.end.row, row);\n if (state.select.headerSelectMode === 'body') {\n currentRange.start = { col: table.leftRowSeriesNumberCount, row: startRow };\n currentRange.end = { col: table.colCount - 1, row: endRow };\n } else {\n currentRange.start = { col: startCol, row: startRow };\n currentRange.end = { col: endCol, row: endRow };\n }\n } else {\n currentRange.end = { col, row };\n }\n // 禁用shift多选时,选中范围的end应该和start一致\n if (!enableShiftSelectMode) {\n currentRange.end = currentRange.start;\n }\n scenegraph.deleteLastSelectedRangeComponents();\n scenegraph.updateCellSelectBorder(currentRange);\n // } else if (isCtrl) {\n // cellPos.col = col;\n // cellPos.row = row;\n // state.select.ranges.push({\n // start: { col: cellPos.col, row: cellPos.row },\n // end: { col: cellPos.col, row: cellPos.row },\n // });\n // // 单选或多选的开始,只选中第一个单元格\n // // updateCellSelect(scenegraph, col, row, ranges, highlightScope, singleStyle);\n // scenegraph.setCellNormalStyle(col, row);\n // // 更新select border\n // // calculateAndUpdateMultiSelectBorder(scenegraph, col, row, col, row, state.select.ranges);\n // // 更新select border\n // scenegraph.updateCellSelectBorder(cellPos);\n } else {\n let extendSelectRange = isValid(skipBodyMerge) ? !skipBodyMerge : true;\n // 单选或多选开始\n if (cellPos.col !== -1 && cellPos.row !== -1 && !enableCtrlSelectMode) {\n state.select.ranges = [];\n scenegraph.deleteAllSelectBorder();\n }\n\n if (state.select.headerSelectMode !== 'cell' && table.isColumnHeader(col, row)) {\n // 选中行表头\n const cellRange = table.getCellRange(col, row);\n if (state.select.headerSelectMode === 'body') {\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: table.columnHeaderLevelCount },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n }\n } else if (state.select.headerSelectMode !== 'cell' && table.isRowHeader(col, row)) {\n // 选中列表头\n const cellRange = table.getCellRange(col, row);\n if (state.select.headerSelectMode === 'body') {\n state.select.ranges.push({\n start: { col: table.rowHeaderLevelCount + table.leftRowSeriesNumberCount, row: cellRange.start.row },\n end: { col: table.colCount - 1, row: cellRange.end.row },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: table.colCount - 1, row: cellRange.end.row },\n skipBodyMerge: true\n });\n }\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInHeader(col, row)) {\n // 选中表头行号单元格\n extendSelectRange = false;\n\n const { cornerHeaderSelectMode } = state.select;\n if (cornerHeaderSelectMode === 'body') {\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row: table.columnHeaderLevelCount\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'inline') {\n // inline 选中行号所在单元格下所有列\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'cell') {\n // 选中行号单元格\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: cellRange.end.row },\n skipBodyMerge: skipBodyMerge || undefined\n });\n } else {\n state.select.ranges.push({\n start: { col: 0, row: 0 },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n }\n // 旧逻辑\n // if (state.select.headerSelectMode === 'body') {\n // state.select.ranges.push({\n // start: {\n // col: table.leftRowSeriesNumberCount,\n // row: table.columnHeaderLevelCount\n // },\n // end: { col: table.colCount - 1, row: table.rowCount - 1 },\n // skipBodyMerge: true\n // });\n // } else {\n // state.select.ranges.push({\n // start: { col: 0, row: 0 },\n // end: { col: table.colCount - 1, row: table.rowCount - 1 },\n // skipBodyMerge: true\n // });\n // }\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInBody(col, row)) {\n // 选中内容行号单元格\n extendSelectRange = false;\n if (state.select.headerSelectMode === 'body') {\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row\n },\n end: { col: table.colCount - 1, row: row },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: { col, row },\n end: { col: table.colCount - 1, row: row },\n skipBodyMerge: true\n });\n }\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isCornerHeader(col, row)) {\n // 选中表头行号单元格\n extendSelectRange = false;\n const { cornerHeaderSelectMode } = state.select;\n\n if (cornerHeaderSelectMode === 'body') {\n state.select.ranges.push({\n start: {\n col: table.rowHeaderLevelCount + table.leftRowSeriesNumberCount,\n row: table.columnHeaderLevelCount\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'cell') {\n // 选中普通单元格\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: cellRange.end.row },\n skipBodyMerge: skipBodyMerge || undefined\n });\n } else if (cornerHeaderSelectMode === 'inline') {\n // inline\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else if (cornerHeaderSelectMode === 'all') {\n // all 或者用户传的其他的什么值 :'' | 'test',虽然类型会提示用户不能为其他的值,\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row: 0\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n } else {\n state.select.ranges.push({\n start: {\n col: table.leftRowSeriesNumberCount,\n row: 0\n },\n end: { col: table.colCount - 1, row: table.rowCount - 1 },\n skipBodyMerge: true\n });\n }\n } else if (col >= 0 && row >= 0) {\n // 选中普通单元格\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n state.select.ranges.push({\n start: { col: cellRange.start.col, row: cellRange.start.row },\n end: { col: cellRange.end.col, row: cellRange.end.row },\n skipBodyMerge: skipBodyMerge || undefined\n });\n }\n cellPos.col = col;\n cellPos.row = row;\n // scenegraph.setCellNormalStyle(col, row);\n const currentRange = state.select.ranges?.[state.select.ranges.length - 1];\n if (\n currentRange &&\n currentRange.start.row <= table.rowCount - 1 &&\n currentRange.end.row <= table.rowCount - 1 &&\n currentRange.start.col <= table.colCount - 1 &&\n currentRange.end.col <= table.colCount - 1\n ) {\n scenegraph.updateCellSelectBorder(currentRange, extendSelectRange);\n }\n }\n } else if (\n (interactionState === InteractionState.grabing || table.eventManager.isDraging) &&\n !table.stateManager.isResizeCol()\n ) {\n let extendSelectRange = isValid(skipBodyMerge) ? !skipBodyMerge : true;\n // 可能有cellPosStart从-1开始grabing的情况\n if (cellPos.col === -1) {\n cellPos.col = col;\n }\n if (cellPos.row === -1) {\n cellPos.row = row;\n }\n cellPos.col = col;\n cellPos.row = row;\n const currentRange = state.select.ranges[state.select.ranges.length - 1];\n if (currentRange) {\n if (\n (table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInBody(\n currentRange.start.col,\n currentRange.start.row\n )\n ) {\n // 如果选中起始位置是序号 那么选中范围都是整行整行的选中\n extendSelectRange = false;\n currentRange.end = {\n col: table.colCount - 1,\n row\n };\n } else {\n if (state.fillHandle.isFilling) {\n // 修正拖拽填充柄选中范围 和 不拖填充柄是有区别的 解决选中区域缩小问题\n if (state.fillHandle.direction === 'top') {\n if (row === state.fillHandle.beforeFillMinRow && row === state.fillHandle.beforeFillMaxRow) {\n currentRange.start.row = currentRange.end.row = row;\n } else if (row <= state.fillHandle.beforeFillMinRow) {\n if (currentRange.start.row < currentRange.end.row) {\n const temp = currentRange.start.row;\n currentRange.start.row = currentRange.end.row;\n currentRange.end.row = temp;\n }\n currentRange.end.row = row;\n } else if (row === state.fillHandle.beforeFillMaxRow) {\n if (currentRange.start.row > currentRange.end.row) {\n currentRange.start.row = row;\n } else {\n currentRange.end.row = row;\n }\n }\n } else if (state.fillHandle.direction === 'bottom') {\n if (row >= state.fillHandle.beforeFillMaxRow) {\n if (currentRange.start.row > currentRange.end.row) {\n const temp = currentRange.start.row;\n currentRange.start.row = currentRange.end.row;\n currentRange.end.row = temp;\n }\n currentRange.end.row = row;\n }\n } else if (state.fillHandle.direction === 'left') {\n if (col === state.fillHandle.beforeFillMinCol && col === state.fillHandle.beforeFillMaxCol) {\n currentRange.start.col = currentRange.end.col = col;\n } else if (col <= state.fillHandle.beforeFillMinCol) {\n if (currentRange.start.col < currentRange.end.col) {\n const temp = currentRange.start.col;\n currentRange.start.col = currentRange.end.col;\n currentRange.end.col = temp;\n }\n currentRange.end.col = col;\n } else if (col === state.fillHandle.beforeFillMaxCol) {\n if (currentRange.start.col > currentRange.end.col) {\n currentRange.start.col = col;\n } else {\n currentRange.end.col = col;\n }\n }\n } else if (state.fillHandle.direction === 'right') {\n if (col >= state.fillHandle.beforeFillMaxCol) {\n if (currentRange.start.col > currentRange.end.col) {\n const temp = currentRange.start.col;\n currentRange.start.col = currentRange.end.col;\n currentRange.end.col = temp;\n }\n currentRange.end.col = col;\n }\n }\n } else {\n currentRange.end = {\n col,\n row\n };\n const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);\n if (currentRange.start.col < cellRange.end.col) {\n currentRange.end.col = cellRange.end.col;\n } else if (currentRange.start.col > cellRange.start.col) {\n currentRange.end.col = cellRange.start.col;\n }\n\n if (currentRange.start.row < cellRange.end.row) {\n currentRange.end.row = cellRange.end.row;\n } else if (currentRange.start.row > cellRange.start.row) {\n currentRange.end.row = cellRange.start.row;\n }\n\n if (state.select.headerSelectMode === 'body') {\n if (table.isRowHeader(col, row)) {\n currentRange.start.col = table.rowHeaderLevelCount + table.leftRowSeriesNumberCount;\n currentRange.end.col = table.colCount - 1;\n } else if (table.isColumnHeader(col, row)) {\n currentRange.start.row = table.columnHeaderLevelCount;\n currentRange.end.row = table.rowCount - 1;\n } else if ((table.internalProps.layoutMap as SimpleHeaderLayoutMap).isSeriesNumberInBody(col, row)) {\n currentRange.start.col = table.leftRowSeriesNumberCount;\n currentRange.end.col = table.colCount - 1;\n } else if (table.isCornerHeader(col, row)) {\n currentRange.start.col = table.rowHeaderLevelCount + table.leftRowSeriesNumberCount;\n currentRange.start.row = table.columnHeaderLevelCount;\n currentRange.end.col = table.colCount - 1;\n currentRange.end.row = table.rowCount - 1;\n } else if (table.isSeriesNumber(col, row)) {\n currentRange.start.col = table.leftRowSeriesNumberCount;\n currentRange.start.row = table.columnHeaderLevelCount;\n currentRange.end.col = table.colCount - 1;\n currentRange.end.row = table.rowCount - 1;\n }\n }\n if (skipBodyMerge) {\n currentRange.skipBodyMerge = true;\n }\n }\n }\n if (\n currentRange &&\n currentRange.start.row <= table.rowCount - 1 &&\n currentRange.end.row <= table.rowCount - 1 &&\n currentRange.start.col <= table.colCount - 1 &&\n currentRange.end.col <= table.colCount - 1\n ) {\n scenegraph.updateCellSelectBorder(currentRange, extendSelectRange);\n }\n }\n }\n scenegraph.updateNextFrame();\n}\nexport function selectEnd(scenegraph: Scenegraph) {\n scenegraph.moveSelectingRangeComponentsToSelectedRangeComponents();\n}\n"]}
|
|
@@ -480,9 +480,9 @@ export interface BaseTableAPI {
|
|
|
480
480
|
off: (id: EventListenerId) => void;
|
|
481
481
|
getBodyField: (col: number, row: number) => FieldDef | undefined;
|
|
482
482
|
getRecordByCell: (col: number, row: number) => MaybePromiseOrUndefined;
|
|
483
|
-
getTableIndexByRecordIndex: (recordIndex: number
|
|
483
|
+
getTableIndexByRecordIndex: (recordIndex: number) => number;
|
|
484
484
|
getTableIndexByField: (field: FieldDef) => number;
|
|
485
|
-
getCellAddrByFieldRecord: (field: FieldDef, recordIndex: number
|
|
485
|
+
getCellAddrByFieldRecord: (field: FieldDef, recordIndex: number) => CellAddress;
|
|
486
486
|
getRecordShowIndexByCell: (col: number, row: number) => number;
|
|
487
487
|
getRecordStartRowByRecordIndex: (index: number) => number;
|
|
488
488
|
getHeaderField: (col: number, row: number) => any | undefined;
|
|
@@ -639,6 +639,9 @@ export interface BaseTableAPI {
|
|
|
639
639
|
_getComputedFrozenColCount: (frozenColCount: number) => number;
|
|
640
640
|
isColumnSelected: (col: number) => boolean;
|
|
641
641
|
isRowSelected: (row: number) => boolean;
|
|
642
|
+
updateCellContentRanges: (ranges: CellRange[]) => void;
|
|
643
|
+
updateCellContent: (col: number, row: number) => void;
|
|
644
|
+
updateCellContentRange: (startCol: number, startRow: number, endCol: number, endRow: number) => void;
|
|
642
645
|
}
|
|
643
646
|
export interface ListTableProtected extends IBaseTableProtected {
|
|
644
647
|
records: any[] | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ts-types/base-table.ts"],"names":[],"mappings":"","file":"base-table.js","sourcesContent":["import type { IBoundsLike, ITextSize } from '@visactor/vutils';\nimport type {\n RectProps,\n MaybePromiseOrUndefined,\n ICellHeaderPaths,\n CellInfo,\n CustomCellStyle,\n CustomCellStyleArrangement,\n IDimensionInfo\n} from './common';\nimport type {\n TableEventListener,\n TableEventHandlersEventArgumentMap,\n TableEventHandlersReturnMap,\n EventListenerId,\n MousePointerCellEvent\n} from './events';\nimport type { MenuListItem, DropDownMenuEventInfo, DropDownMenuHighlightInfo } from './menu';\nimport type { CellStyle } from './style-define';\nimport type { ColumnIconOption } from './icon';\nimport type {\n ColumnData,\n ColumnDefine,\n ColumnsDefine,\n HeaderData,\n IndicatorData,\n SeriesNumberColumnData\n} from './list-table/layout-map/api';\nexport type { HeaderData } from './list-table/layout-map/api';\nimport type { TableTheme } from '../themes/theme-define';\nimport type { ICustomRender } from './customElement';\nimport type { GroupByOption, LayoutObjectId } from './table-engine';\nimport type { Rect } from '../tools/Rect';\nimport type { Scenegraph } from '../scenegraph/scenegraph';\nimport type { StateManager } from '../state/state';\nimport type { EventManager } from '../event/event';\nimport type {\n CellAddress,\n CellRange,\n CellLocation,\n ColumnTypeOption,\n DataSourceAPI,\n FieldData,\n FieldDef,\n FieldFormat,\n FullExtendStyle,\n HeaderValues,\n HeightModeDef,\n HierarchyState,\n IPivotTableDataConfig,\n IPagination,\n ITableThemeDefine,\n SortState,\n TableKeyboardOptions,\n WidthModeDef,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n StickCell,\n CustomMergeCell,\n CustomMerge,\n IColumnDimension,\n IRowDimension,\n TableEventOptions,\n IPivotChartDataConfig,\n IListTableDataConfig,\n IRowSeriesNumber,\n ColumnSeriesNumber,\n ColumnStyleOption,\n WidthAdaptiveModeDef,\n HeightAdaptiveModeDef,\n ColumnInfo,\n RowInfo,\n CellAddressWithBound,\n Placement,\n CustomMergeCellFunc\n} from '.';\nimport type { TooltipOptions } from './tooltip';\nimport type { IWrapTextGraphicAttribute } from '../scenegraph/graphic/text';\nimport type { ICustomLayout } from './customLayout';\nimport type { CachedDataSource, DataSource } from '../data';\nimport type { MenuHandler } from '../components/menu/dom/MenuHandler';\nimport type { PivotHeaderLayoutMap } from '../layout/pivot-header-layout';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport type { TooltipHandler } from '../components/tooltip/TooltipHandler';\nimport type { BodyHelper } from '../body-helper/body-helper';\nimport type { HeaderHelper } from '../header-helper/header-helper';\nimport type { EventHandler } from '../event/EventHandler';\nimport type { NumberMap } from '../tools/NumberMap';\nimport type { FocusInput } from '../core/FouseInput';\nimport type { ITableLegendOption } from './component/legend';\nimport type { DataSet } from '@visactor/vdataset';\nimport type { Title } from '../components/title/title';\nimport type { ITitle } from './component/title';\nimport type { DiscreteTableLegend } from '../components/legend/discrete-legend/discrete-legend';\nimport type { ContinueTableLegend } from '../components/legend/continue-legend/continue-legend';\nimport type { NumberRangeMap } from '../layout/row-height-map';\nimport type { RowSeriesNumberHelper } from '../core/row-series-number-helper';\nimport type { ReactCustomLayout } from '../components/react/react-custom-layout';\nimport type { ISortedMapItem } from '../data/DataSource';\nimport type { IAnimationAppear, ITableAnimationOption } from './animation/appear';\nimport type { IEmptyTip } from './component/empty-tip';\nimport type { EmptyTip } from '../components/empty-tip/empty-tip';\nimport type { EditManager } from '../edit/edit-manager';\nimport type { TableAnimationManager } from '../core/animation';\nimport type { CustomCellStylePlugin } from '../plugins/custom-cell-style';\nimport type { IVTablePlugin } from '../plugins/interface';\nimport type { FederatedPointerEvent } from './../vrender';\n\nexport interface IBaseTableProtected {\n element: HTMLElement;\n // scrollable: Scrollable;\n handler: EventHandler;\n focusControl: FocusInput;\n canvas: HTMLCanvasElement;\n context: CanvasRenderingContext2D;\n rowCount: number;\n colCount: number;\n frozenColCount: number;\n unfreezeAllOnExceedsMaxWidth: boolean;\n allowFrozenColCount: number;\n\n frozenRowCount: number;\n rightFrozenColCount: number;\n bottomFrozenRowCount: number;\n defaultRowHeight: number | 'auto';\n /**表头默认行高 可以按逐行设置 如果没有就取defaultRowHeight */\n defaultHeaderRowHeight: (number | 'auto') | (number | 'auto')[];\n defaultColWidth: number;\n defaultHeaderColWidth: (number | 'auto') | (number | 'auto')[];\n // font?: string;\n // underlayBackgroundColor?: string;\n keyboardOptions?: TableKeyboardOptions;\n eventOptions?: TableEventOptions;\n rowSeriesNumber?: IRowSeriesNumber;\n /** 启动复选框级联 */\n enableCheckboxCascade?: boolean;\n /** 表头复选框是否级联整列状态 */\n enableHeaderCheckboxCascade?: boolean;\n columnSeriesNumber?: ColumnSeriesNumber[];\n // disableRowHeaderColumnResize?: boolean;\n\n columnResizeMode?: 'all' | 'none' | 'header' | 'body';\n canResizeColumn?: (col: number, row: number, table: BaseTableAPI) => boolean;\n\n rowResizeMode?: 'all' | 'none' | 'header' | 'body';\n\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n\n rowResizeType?: 'row' | 'indicator' | 'all' | 'indicatorGroup';\n /** 控制拖拽表头移动位置顺序开关 */\n dragHeaderMode?: 'all' | 'none' | 'column' | 'row';\n /** 拖拽表头移动位置 针对冻结部分的规则\n * \"disabled\"(禁止调整冻结列位置):不允许其他列的表头移入冻结列,也不允许冻结列移出,冻结列保持不变。\n * \"adjustFrozenCount\"(根据交互结果调整冻结数量):允许其他列的表头移入冻结列,及冻结列移出,并根据拖拽的动作调整冻结列的数量。当其他列的表头被拖拽进入冻结列位置时,冻结列数量增加;当其他列的表头被拖拽移出冻结列位置时,冻结列数量减少。\n * \"fixedFrozenCount\"(可调整冻结列,并维持冻结数量不变):允许自由拖拽其他列的表头移入或移出冻结列位置,同时保持冻结列的数量不变。\n */\n frozenColDragHeaderMode?: 'disabled' | 'adjustFrozenCount' | 'fixedFrozenCount';\n cachedRecordsRowHeightMap: NumberMap<string | number>; //存储每一条记录对应行的行高,只有当设置为自动换行随内容撑开才会起作用\n // headerRowHeightsMap: NumberMap<number>; //目前是用来存储了表头各行的高度,从headerRowHeight计算而来,headerRowHeight可以设置为数组的形式\n _rowHeightsMap: NumberRangeMap; //存储数据条目每行高度\n _colWidthsMap: NumberMap<string | number>; //存储各列的宽度\n _colContentWidthsMap: NumberMap<string | number>; //存储各列的内容宽度\n _colWidthsLimit: {\n //存储各列的宽度限制\n [col: number]: {\n max?: string | number;\n min?: string | number;\n };\n };\n calcWidthContext: {\n _: IBaseTableProtected;\n full: number;\n // em: number;\n };\n\n _rowRangeHeightsMap: Map<string, number>; //存储指定行范围的总高度\n _colRangeWidthsMap: Map<string, number>; //存储指定列范围的总宽度\n\n _widthResizedColMap: Set<number>; //记录下被手动调整过列宽的列号\n _heightResizedRowMap: Set<number>; //记录下被手动调整过行高的行号\n\n bodyHelper: BodyHelper;\n headerHelper: HeaderHelper;\n rowSeriesNumberHelper: RowSeriesNumberHelper;\n\n cellTextOverflows: { [at: string]: string };\n // headerDescriptions: { [at: string]: string };\n focusedTable: boolean;\n\n // scroll: {\n // left: number;\n // top: number;\n // };\n releaseList?: { release: () => void }[] | null;\n theme: TableTheme;\n transpose?: boolean; //是否转置\n // autoRowHeight?: boolean; //是否自动撑开高度 对于设置了autoWrapText的multilineText的列生效\n pixelRatio?: number;\n /** 下拉菜单的相关配置。消失时机:显示后点击菜单区域外自动消失*/\n menu: {\n /** 代替原来的option.menuType */\n renderMode?: 'canvas' | 'html';\n /** 内置下拉菜单的全局设置项 目前只针对基本表格有效 会对每个表头单元格开启默认的下拉菜单功能。代替原来的option.dropDownMenu*/\n defaultHeaderMenuItems?:\n | MenuListItem[]\n | ((args: { row: number; col: number; table: BaseTableAPI }) => MenuListItem[]);\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | MenuListItem[]\n | ((field: FieldDef, row: number, col: number, table?: BaseTableAPI) => MenuListItem[]);\n /** 设置选中状态的菜单。代替原来的option.dropDownMenuHighlight */\n dropDownMenuHighlight?: DropDownMenuHighlightInfo[];\n /** 右键菜单是否只工作在单元格上。默认true只在单元格上显示右键菜单, 配置false在空白处也弹出右键菜单 */\n contextMenuWorkOnlyCell?: boolean;\n parentElement?: HTMLElement;\n };\n /** 提示弹框的相关配置。消失时机:显示后鼠标移动到指定区域外或者进入新的单元格后自动消失*/\n tooltip: {\n parentElement: HTMLElement;\n renderMode: 'html' | 'canvas';\n /** 代替原来hover:isShowTooltip配置 */\n isShowOverflowTextTooltip: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean);\n /** 缩略文字提示框 延迟消失时间 */\n overflowTextTooltipDisappearDelay?: number;\n /** 弹框是否需要限定在表格区域内 */\n confine: boolean;\n position: Placement;\n };\n\n dataSourceEventIds?: EventListenerId[];\n // headerEvents?: EventListenerId[];\n layoutMap: SimpleHeaderLayoutMap | PivotHeaderLayoutMap;\n headerValues?: HeaderValues;\n tooltipHandler: TooltipHandler;\n\n // headerRowHeight: number[] | number;//移到了BaseTable\n sortState: SortState | SortState[];\n multipleSort?: boolean;\n\n dataSource: DataSource | CachedDataSource;\n records?: any;\n allowRangePaste: boolean;\n //重新思考逻辑:如果为false,行高按设置的rowHeight;如果设置为true,则按lineHeight及是否自动换行综合计算行高 2021.11.19 by:lff\n\n autoWrapText?: boolean;\n enableLineBreak?: boolean;\n\n menuHandler: MenuHandler;\n\n /**\n * 计算列宽时 指定最大列宽 可设置boolean或者具体的值 默认为450\n */\n limitMaxAutoWidth?: boolean | number;\n\n /**\n * 限制列宽最小值。\n */\n limitMinWidth?: number;\n\n limitMinHeight?: number;\n\n title?: Title;\n legends?: (DiscreteTableLegend | ContinueTableLegend)[];\n\n emptyTip?: EmptyTip;\n //是否开启图表异步渲染\n renderChartAsync?: boolean;\n // // 开启图表异步渲染 每批次渐进渲染图表个数\n // renderChartAsyncBatchCount?: number;\n\n stick: { changedCells: Map<string, StickCell> };\n\n customMergeCell?: CustomMergeCellFunc;\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n modifiedViewBoxTransform?: boolean;\n // react component container\n bodyDomContainer?: HTMLElement;\n headerDomContainer?: HTMLElement;\n frozenBodyDomContainer?: HTMLElement;\n frozenHeaderDomContainer?: HTMLElement;\n rightFrozenBodyDomContainer?: HTMLElement;\n rightFrozenHeaderDomContainer?: HTMLElement;\n frozenBottomDomContainer?: HTMLElement;\n bottomDomContainer?: HTMLElement;\n rightFrozenBottomDomContainer?: HTMLElement;\n\n // 已使用一行的高度填充所有行\n useOneRowHeightFillAll?: boolean;\n\n // 启用树形结构数据内的merge配置\n enableTreeNodeMerge?: boolean;\n\n _oldRowCount?: number;\n _oldColCount?: number;\n\n columnWidthConfig?: any;\n rowHeightConfig?: any;\n}\nexport interface BaseTableConstructorOptions {\n // /** 指定表格的行数 */\n // rowCount?: number;\n\n // /** 指定表格的列数 */\n // colCount?: number;\n /**\n * 当前需要冻结的列数 基本表格生效\n */\n frozenColCount?: number;\n frozenRowCount?: number;\n rightFrozenColCount?: number;\n bottomFrozenRowCount?: number;\n /** 最大冻结宽度,固定值 or 百分比。默认为'80%' */\n maxFrozenWidth?: number | string;\n /** 超过最大冻结宽度后是否全部解冻,默认true */\n unfreezeAllOnExceedsMaxWidth?: boolean;\n\n // /** 待实现 TODO */\n // frozenRowCount?: number;\n /** 可冻结列数,表示前多少列会出现冻结操作按钮 基本表格生效 */\n allowFrozenColCount?: number;\n /**\n * 默认行高. 默认 40\n */\n defaultRowHeight?: number | 'auto';\n /** 列表头默认行高 可以按逐行设置 如果没有就取defaultRowHeight */\n defaultHeaderRowHeight?: (number | 'auto') | (number | 'auto')[];\n /**\n * 默认列宽. 默认 80\n */\n defaultColWidth?: number;\n /** 行表头默认列宽 可以按逐列设置 如果没有就取defaultColWidth */\n defaultHeaderColWidth?: (number | 'auto') | (number | 'auto')[];\n /** 快捷键功能设置 */\n keyboardOptions?: TableKeyboardOptions;\n excelOptions?: {\n fillHandle?: boolean | ((args: { selectRanges: CellRange[]; table: BaseTableAPI }) => boolean);\n };\n /** 事件触发相关设置 */\n eventOptions?: TableEventOptions;\n /**\n * Canvas container\n */\n container?: HTMLElement | null;\n\n /**\n * @deprecated\n * 请使用resize.columnResizeMode\n * 调整列宽 可操作范围。'all' | 'none' | 'header' | 'body'; 整列间隔线|禁止调整|只能在表头处间隔线|只能在body间隔线\n */\n columnResizeMode?: 'all' | 'none' | 'header' | 'body';\n /**\n * @deprecated\n * 请使用resize.rowResizeMode\n */\n rowResizeMode?: 'all' | 'none' | 'header' | 'body';\n\n /**\n * @deprecated\n * dragOrder.dragHeaderMode\n * 控制拖拽表头移动位置顺序开关\n */\n dragHeaderMode?: 'all' | 'none' | 'column' | 'row';\n\n /**\n * 是否显示固定列图钉 基本表格生效\n */\n showFrozenIcon?: boolean;\n\n padding?:\n | {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n }\n | number;\n /** hover交互配置 */\n hover?: {\n /** hover交互响应模式:十字交叉 整列 整行 或者单个单元格 */\n highlightMode?: 'cross' | 'column' | 'row' | 'cell';\n /** 不响应鼠标hover交互 */\n disableHover?: boolean;\n /** 单独设置表头不响应鼠标hover交互 */\n disableHeaderHover?: boolean;\n /** 单独设置坐标轴不响应鼠标hover交互 */\n disableAxisHover?: boolean;\n };\n /** 选择单元格交互配置 */\n select?: {\n /** 高亮范围模式:十字交叉 整列 整行 或者单个单元格。默认`cell` */\n highlightMode?: 'cross' | 'column' | 'row' | 'cell';\n /** 点击表头单元格效果\n * 'inline': 点击行表头则整行选中,选择列表头则整列选中;\n * 'cell': 仅仅选择当前点击的表头单元格;\n * 'body': 不选择表头,点击行表头则选择该行所有 body 单元格,点击列表头则选择该列所有 body 单元格。\n */\n headerSelectMode?: 'inline' | 'cell' | 'body';\n /** 点击表头corner单元格效果\n * 'inline': 点击corner选择列表头则整列选中;\n * 'cell': 仅仅选择当前点击的corner表头单元格;\n * 'body': 点击corner列表头则选择该列所有 body 单元格;\n * 'all': 点击corner选择整个图表。\n */\n cornerHeaderSelectMode?: 'inline' | 'cell' | 'body' | 'all';\n /** 不响应鼠标select交互 */\n disableSelect?: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean);\n /** 单独设置表头不响应鼠标select交互 */\n disableHeaderSelect?: boolean;\n /** 点击空白区域是否取消选中 */\n blankAreaClickDeselect?: boolean;\n /** 点击外部区域是否取消选中 */\n outsideClickDeselect?: boolean; //\n /** 禁止拖拽框选 */\n disableDragSelect?: boolean;\n /** 是否在选择多行或多列时高亮范围 */\n highlightInRange?: boolean;\n /** 是否将选中的单元格自动滚动到视口内 默认为true */\n makeSelectCellVisible?: boolean;\n /** 右键点击单元格是否禁用选择单元格 */\n disableSelectOnContextMenu?: boolean;\n };\n /** 下拉菜单的相关配置。消失时机:显示后点击菜单区域外自动消失*/\n menu?: {\n /** 代替原来的option.menuType html目前实现较完整 先默认html渲染方式*/\n renderMode?: 'canvas' | 'html';\n /** 内置下拉菜单的全局设置项 目前只针对基本表格有效 会对每个表头单元格开启默认的下拉菜单功能。代替原来的option.dropDownMenu*/\n defaultHeaderMenuItems?:\n | MenuListItem[]\n | ((args: { row: number; col: number; table: BaseTableAPI }) => MenuListItem[]);\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | MenuListItem[]\n | ((field: string, row: number, col: number, table?: BaseTableAPI) => MenuListItem[]);\n /** 设置选中状态的菜单。代替原来的option.dropDownMenuHighlight */\n dropDownMenuHighlight?: DropDownMenuHighlightInfo[];\n /** 右键菜单是否只工作在单元格上。默认true只在单元格上显示右键菜单, 配置false在空白处也弹出右键菜单 */\n contextMenuWorkOnlyCell?: boolean;\n parentElement?: HTMLElement;\n };\n /** tooltip相关配置 */\n tooltip?: {\n parentElement?: HTMLElement;\n /** html目前实现较完整 先默认html渲染方式 */\n renderMode?: 'html'; // 目前暂不支持canvas方案\n /** 是否显示缩略文字提示框。 代替原来hover:isShowTooltip配置 暂时需要将renderMode配置为html才能显示,canvas的还未开发*/\n isShowOverflowTextTooltip?: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean);\n /** 缩略文字提示框 延迟消失时间 */\n overflowTextTooltipDisappearDelay?: number;\n /** 是否将 tooltip 框限制在画布区域内,默认开启。针对renderMode:\"html\"有效 */\n confine?: boolean;\n position?: Placement;\n };\n /**\n * Theme\n */\n theme?: ITableThemeDefine;\n /** 宽度模式 */\n widthMode?: 'standard' | 'adaptive' | 'autoWidth';\n /** 高度模式 */\n heightMode?: 'standard' | 'adaptive' | 'autoHeight';\n /** 当列宽度不能占满容器时,是否需要自动拉宽来填充容器的宽度。默认false */\n autoFillWidth?: boolean;\n /** 当行高度不能占满容器时,是否需要自动拉高来填充容器的高度。默认false */\n autoFillHeight?: boolean;\n /** 内容自适应模式,确保表格大小始终等于容器大小,保持原有的列宽/行高不变。默认false */\n containerFit?: {\n width?: boolean; // 是否自适应宽度,默认true\n height?: boolean; // 是否自适应高度,默认true\n };\n\n /** adaptive 模式下宽度的适应策略 **/\n widthAdaptiveMode?: WidthAdaptiveModeDef;\n /** adaptive 模式下高度的适应策略 **/\n heightAdaptiveMode?: HeightAdaptiveModeDef;\n /** 当配置adaptive模式时,默认true,即在计算每行行高的基础上去等比拉伸行高撑满容器宽度的。如果不需要计算行高用默认行高撑满的话请配置为false */\n autoHeightInAdaptiveMode?: boolean;\n\n // /** 行高是否根据内容来计算 */\n // autoRowHeight?: boolean;\n /** 设备的像素比 不配的话默认获取window.devicePixelRatio */\n pixelRatio?: number;\n /** 自定义渲染 函数形式*/\n customRender?: ICustomRender;\n /** 开启自动换行 默认false */\n autoWrapText?: boolean;\n /** 是否处理换行符 */\n enableLineBreak?: boolean;\n /** 单元格中可显示最大字符数 默认200 */\n maxCharactersNumber?: number; //\n // /** toolip最大字符数 */\n // maxTooltipCharactersNumber?: number;\n /** 最大可操作条目数 如copy操作可复制出最大数据条目数 */\n maxOperatableRecordCount?: number;\n /**\n * 计算列宽时 指定最大列宽 可设置boolean或者具体的值 默认为450。手动拖拽列宽的话不收这个限制\n */\n limitMaxAutoWidth?: boolean | number;\n /**\n * 限制列宽最小值。如设置为true 则拖拽改变列宽时限制列宽最小为10px,设置为false则不进行限制。默认为10px\n */\n limitMinWidth?: boolean | number;\n limitMinHeight?: boolean | number;\n\n // maximum number of data items maintained in table instance\n maintainedDataCount?: number;\n // maximum number of columns maintained in table instance\n maintainedColumnCount?: number;\n\n legends?: ITableLegendOption | ITableLegendOption[];\n title?: ITitle;\n emptyTip?: true | IEmptyTip;\n /** 是否开启图表异步渲染 */\n renderChartAsync?: boolean;\n /** 开启图表异步渲染 每批次渐进渲染图表个数 默认是5个 */\n renderChartAsyncBatchCount?: number;\n\n customMergeCell?: CustomMergeCell;\n\n // #region for nodejs\n mode?: 'node' | 'browser';\n modeParams?: any;\n canvasWidth?: number | 'auto';\n canvasHeight?: number | 'auto';\n maxCanvasWidth?: number;\n maxCanvasHeight?: number;\n /** 表格的x偏移量(会影响width), 内部适配的表格边框或者title等组件的占位不算在内 */\n contentOffsetX?: number;\n /** 表格的y偏移量(会影响height), 内部适配的表格边框或者title等组件的占位不算在内 */\n contentOffsetY?: number;\n\n // #endregion\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n // resize response time\n resizeTime?: number;\n\n canvas?: HTMLCanvasElement;\n viewBox?: IBoundsLike;\n chartOption?: any;\n disableInteraction?: boolean;\n\n // 渲染时的 spec 改变\n specFormat?: (\n spec: any,\n chartInstance: any,\n chart: any\n ) => { needFormatSpec: boolean; spec?: any; updateSpec?: boolean };\n // chart 单元格 的 spec 生成时的转换\n specTransformInCell?: (spec: any, col: number, row: number) => any;\n\n beforeRender?: (stage: any) => void;\n afterRender?: (stage: any) => void;\n rowSeriesNumber?: IRowSeriesNumber;\n /** 启用复选框级联 */\n enableCheckboxCascade?: boolean;\n /** 表头复选框是否级联整列状态 */\n enableHeaderCheckboxCascade?: boolean;\n // columnSeriesNumber?: ColumnSeriesNumber[];\n customCellStyle?: CustomCellStyle[];\n customCellStyleArrangement?: CustomCellStyleArrangement[];\n\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n clearDOM?: boolean;\n customConfig?: {\n /** xTable对于没有配置autoWrapText并且有'\\n'的文本,在计算行高是会当做一行处理,但是在渲染时会解析'\\n';显示效果就是单元格高度为一行文本高度,只显示第一个'\\n'前的文字,后面显示'...';multilinesForXTable配置实现和该功能对齐的样式 */\n multilinesForXTable?: boolean;\n /** 这里可以配置为false 来走flatDataToObject的数据处理逻辑 而不走dataset的分析 */\n enableDataAnalysis?: boolean;\n /** 禁用行高列宽计算取整数逻辑 对齐xTable */\n _disableColumnAndRowSizeRound?: boolean;\n imageMargin?: number;\n // 是否创建react custom container\n createReactContainer?: boolean;\n // adaptive 模式下优先缩小迷你图\n shrinkSparklineFirst?: boolean;\n\n // 行列移动不更新表格\n notUpdateInColumnRowMove?: boolean;\n\n // 表格是否限制内容高度\n limitContentHeight?: boolean;\n\n // 图片资源请求时是否使用anonymous模式\n imageAnonymous?: boolean;\n\n // 滚动到边界是否继续触发滚动事件\n scrollEventAlwaysTrigger?: boolean;\n\n // 开启透视结构缓存\n enablePivotPathCache?: boolean;\n\n // 是否禁用内置图表激活\n disableBuildInChartActive?: boolean;\n\n /** 是否检测图表内具体元素的点击事件,用于 chart-render-helper.ts中 contains方法判断是否选中图表(图表助手需求),默认false */\n detectPickChartItem?: boolean;\n /** 强制计算所有行高,用于某些场景下,如vtable-gantt中,需要一次性计算所有行高 */\n forceComputeAllRowHeight?: boolean;\n\n /** 是否取消当前单元格选中状态的判断钩子,用在table-group文件的pointertap事件中,当点击空白区域时,取消选中状态 */\n cancelSelectCellHook?: (e: FederatedPointerEvent) => boolean;\n\n /** 当编辑器没有退出情况时,可继续选中其他单元格,比如在vtable-sheet中,当编辑器没有退出情况时,可继续选中其他单元格 */\n selectCellWhenCellEditorNotExists?: boolean;\n }; // 部分特殊配置,兼容xTable等作用\n\n animationAppear?: boolean | IAnimationAppear;\n\n renderOption?: any;\n\n formatCopyValue?: (value: string) => string;\n customComputeRowHeight?: (computeArgs: { row: number; table: BaseTableAPI }) => number | 'auto' | undefined;\n /** 当表格出现抖动情况,请排查是否上层dom容器的宽高是小数引起的。如果不能保证是整数,请配置这个配置项为true */\n tableSizeAntiJitter?: boolean;\n\n /**\n * @deprecated 请使用resize.disableDblclickAutoResizeColWidth\n */\n disableDblclickAutoResizeColWidth?: boolean;\n\n /** resize交互配置 **/\n resize?: {\n /**\n * 调整列宽 可操作范围。'all' | 'none' | 'header' | 'body'; 整列间隔线|禁止调整|只能在表头处间隔线|只能在body间隔线\n */\n columnResizeMode?: 'all' | 'none' | 'header' | 'body';\n canResizeColumn?: (col: number, row: number, table: BaseTableAPI) => boolean;\n rowResizeMode?: 'all' | 'none' | 'header' | 'body';\n /** 是否禁用双击列边框自动调整列宽 **/\n disableDblclickAutoResizeColWidth?: boolean;\n };\n dragOrder?: {\n /** 控制拖拽表头移动位置顺序开关 */\n dragHeaderMode?: 'all' | 'none' | 'column' | 'row';\n /** 拖拽移动位置结束时进行验证 */\n validateDragOrderOnEnd?: (source: CellAddress, target: CellAddress) => boolean;\n };\n /** 插件配置 */\n plugins?: IVTablePlugin[];\n /** 默认的鼠标样式 */\n defaultCursor?: string;\n}\nexport interface BaseTableAPI {\n id: string;\n /** 数据总条目数 */\n recordsCount: number;\n /** 表格的行数 */\n rowCount: number;\n /** 表格的列数 */\n colCount: number;\n /** 表格除去外层frame后的宽度 */\n tableNoFrameWidth: number;\n /** 表格除去外层frame后的高度 */\n tableNoFrameHeight: number;\n /** 表格的冻结行数 包括表头在内 */\n frozenRowCount: number;\n /** 表格的冻结列数 包括表头在内 */\n frozenColCount: number;\n\n bottomFrozenRowCount: number;\n rightFrozenColCount: number;\n /** 当前表格默认表头行高 */\n defaultHeaderRowHeight: (number | 'auto') | (number | 'auto')[];\n /** 当前表格默认行高 */\n defaultRowHeight: number;\n /** 当前表格默认列宽 */\n defaultColWidth: number;\n /** 当前表格默认表头列宽 */\n defaultHeaderColWidth: (number | 'auto') | (number | 'auto')[];\n /** 当前表格快捷键设置 */\n keyboardOptions: TableKeyboardOptions | null;\n /** 当前表格事件相关设置 */\n eventOptions: TableEventOptions | null;\n /**\n * 是否显示图钉\n */\n showFrozenIcon: boolean;\n readonly canvas: HTMLCanvasElement;\n /** 表格可视区域的行数 */\n readonly visibleRowCount: number;\n /** 表格可视区域的列数 */\n readonly visibleColCount: number;\n /** 表格滚动值left */\n scrollLeft: number;\n /** 表格滚动值top */\n scrollTop: number;\n /** 用户设置的options 不要修改这个这个 */\n options: BaseTableConstructorOptions;\n /** 设置的全局下拉菜单列表项配置 */\n globalDropDownMenu?: MenuListItem[] | ((args: { row: number; col: number; table: BaseTableAPI }) => MenuListItem[]);\n /** 设置的全局自定义渲染函数 */\n customRender?: ICustomRender;\n\n /** 表格数据管理对象 */\n dataSource: DataSourceAPI;\n /** 设置的表格主题 */\n theme: TableTheme;\n /** 可允许设置冻结的最大列数 */\n allowFrozenColCount: number;\n\n /** 存储内部用到的属性 变量等 */\n internalProps: IBaseTableProtected;\n /** 分页信息 */\n pagination?: IPagination;\n\n /** 表格偏移像素值 水平方向 */\n tableX: number;\n /** 表格偏移像素值 垂直方向 */\n tableY: number;\n /** 表格宽度模式 */\n widthMode: WidthModeDef;\n /** 表格宽度模式 */\n heightMode: HeightModeDef;\n /** 当列宽度不能占满容器时,是否需要自动拉宽来填充容器的宽度。默认false */\n autoFillWidth: boolean;\n /** 当行高度不能占满容器时,是否需要自动拉高来填充容器的高度。默认false */\n autoFillHeight?: boolean;\n /** 内容自适应模式,确保表格大小始终等于容器大小,保持原有的列宽/行高不变。默认false */\n containerFit?: { width: boolean; height: boolean };\n\n /** adaptive 模式下宽度的适应策略 **/\n widthAdaptiveMode: WidthAdaptiveModeDef;\n /** adaptive 模式下高度的适应策略 **/\n heightAdaptiveMode: HeightAdaptiveModeDef;\n\n isReleased: boolean;\n\n // rowHeightsMap: NumberMap<number>;\n rowHeightsMap: NumberRangeMap;\n colWidthsMap: NumberMap<string | number>;\n hasListeners: (type: string) => boolean;\n on: <TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE> //(event: TableEventHandlersEventArgumentMap[TYPE]) => TableEventHandlersReturnMap[TYPE]\n ) => EventListenerId;\n // &(<T extends keyof TableEventHandlersEventArgumentMap>(type: string, listener: AnyListener<T>) => EventListenerId);\n\n _vDataSet?: DataSet;\n /** 场景树对象 */\n scenegraph: Scenegraph;\n /** 状态管理模块 */\n stateManager: StateManager;\n /** 事件管理模块 */\n eventManager: EventManager;\n /** 动画管理模块 */\n animationManager: TableAnimationManager;\n\n editorManager: EditManager;\n /** 行表头的层数 */\n rowHeaderLevelCount: number;\n /** 列表头的层数 */\n columnHeaderLevelCount: number;\n\n canvasWidth?: number;\n canvasHeight?: number;\n\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n\n _rowRangeHeightsMap: Map<string, number>;\n _colRangeWidthsMap: Map<string, number>;\n canvasSizeSeted?: boolean;\n\n pixelRatio: number;\n rotateDegree?: number;\n /** 获取表格绘制的范围 不包括frame的宽度 */\n getDrawRange: () => Rect;\n /** 将鼠标坐标值 转换成表格坐标系中的坐标位置 */\n _getMouseAbstractPoint: (evt: TouchEvent | MouseEvent | undefined) => { x: number; y: number; inTable: boolean };\n getElement: () => HTMLElement;\n getContainer: () => HTMLElement;\n\n setFrozenColCount: (count: number) => void;\n _setFrozenColCount: (count: number) => void;\n _updateSize: () => void;\n\n render: () => void;\n throttleInvalidate: () => void;\n getRowHeight: (row: number) => number;\n getDefaultRowHeight: (row: number) => number | 'auto';\n getDefaultColumnWidth: (col: number) => number | 'auto';\n _setRowHeight: (row: number, height: number, clearCache?: boolean) => void;\n setRowHeight: (row: number, height: number) => void;\n getColWidth: (col: number) => number;\n getColWidthDefined: (col: number) => string | number;\n // setColWidthDefined: (col: number, width: number) => void;\n getColWidthDefinedNumber: (col: number) => number;\n // getColWidthDefine: (col: number) => string | number;\n _setColWidth: (col: number, width: number | string, clearCache?: boolean, skipCheckFrozen?: boolean) => void;\n setColWidth: (col: number, width: number) => void;\n _getColContentWidth: (col: number) => number;\n _setColContentWidth: (col: number, width: number | string, clearCache?: boolean) => void;\n getMaxColWidth: (col: number) => number;\n setMaxColWidth: (col: number, maxwidth: string | number) => void;\n getMinColWidth: (col: number) => number;\n setMinColWidth: (col: number, minwidth: string | number) => void;\n getCellRect: (col: number, row: number) => Rect;\n getCellRelativeRect: (col: number, row: number) => Rect;\n getCellsRect: (startCol: number, startRow: number, endCol: number, endRow: number) => Rect;\n getCellRangeRect: (cellRange: CellRange | CellAddress) => Rect;\n getCellRangeRelativeRect: (cellRange: CellRange | CellAddress) => Rect;\n getVisibleCellRangeRelativeRect: (cellRange: CellRange | CellAddress) => Rect;\n isFrozenCell: (col: number, row: number) => { row: boolean; col: boolean } | null;\n getRowAt: (absoluteY: number) => { top: number; row: number; bottom: number };\n getColAt: (absoluteX: number) => { left: number; col: number; right: number };\n getCellAt: (absoluteX: number, absoluteY: number) => CellAddressWithBound;\n getCellAtRelativePosition: (absoluteX: number, absoluteY: number) => CellAddressWithBound;\n getColAtRelativePosition: (absoluteX: number) => number;\n getRowAtRelativePosition: (absoluteY: number) => number;\n _makeVisibleCell: (col: number, row: number) => void;\n // setFocusCursor(col: number, row: number): void;\n // focusCell(col: number, row: number): void;\n getCellOverflowText: (col: number, row: number) => string | null;\n getColsWidth: (startCol: number, endCol: number) => number;\n getColsWidths: () => number[];\n getRowsHeight: (startRow: number, endRow: number) => number;\n _getRangeSizeForContainerFit: (start: number, end: number, totalSize: number, type: 'col' | 'row') => number;\n\n release: () => void;\n addReleaseObj: (releaseObj: { release: () => void }) => void;\n _getCellStyle: (col: number, row: number) => FullExtendStyle;\n clearCellStyleCache: () => void;\n\n getFrozenRowsHeight: () => number;\n getFrozenColsWidth: () => number;\n getBottomFrozenRowsHeight: () => number;\n getRightFrozenColsWidth: () => number;\n selectCell: (\n col: number,\n row: number,\n isShift?: boolean,\n isCtrl?: boolean,\n makeSelectCellVisible?: boolean,\n skipBodyMerge?: boolean\n ) => void;\n clearSelected: () => void;\n selectCells: (cellRanges: CellRange[]) => void;\n getAllRowsHeight: () => number;\n getAllColsWidth: () => number;\n\n off: (id: EventListenerId) => void;\n getBodyField: (col: number, row: number) => FieldDef | undefined;\n /**\n * 根据单元格获取对应的源数据\n * @param col\n * @param row\n * @returns\n */\n getRecordByCell: (col: number, row: number) => MaybePromiseOrUndefined;\n /**\n * 根据数据源的index 获取显示到表格中的index 行号或者列号(与转置相关)。注:ListTable特有接口\n * @param recordIndex\n */\n getTableIndexByRecordIndex: (recordIndex: number | number[]) => number;\n /**\n * 根据数据源的field 获取显示到表格中的index 行号或者列号(与转置相关)。注:ListTable特有接口\n * @param recordIndex\n */\n getTableIndexByField: (field: FieldDef) => number;\n /**\n * 根据数据源中的index和field获取单元格行列号。注:ListTable特有接口\n * @param field\n * @param recordIndex\n * @returns\n */\n getCellAddrByFieldRecord: (field: FieldDef, recordIndex: number | number[]) => CellAddress;\n getRecordShowIndexByCell: (col: number, row: number) => number;\n getRecordStartRowByRecordIndex: (index: number) => number;\n\n getHeaderField: (col: number, row: number) => any | undefined;\n\n _getHeaderCellBySortState: (sortState: SortState) => CellAddress | undefined;\n getHeaderDefine: (col: number, row: number) => ColumnDefine | IRowSeriesNumber | ColumnSeriesNumber;\n _getHeaderLayoutMap: (col: number, row: number) => HeaderData | SeriesNumberColumnData;\n getContext: () => CanvasRenderingContext2D;\n getCellRange: (col: number, row: number) => CellRange;\n _resetFrozenColCount: () => void;\n isCellRangeEqual: (col: number, row: number, targetCol: number, targetRow: number) => boolean;\n _getLayoutCellId: (col: number, row: number) => LayoutObjectId;\n _getBodyLayoutMap: (col: number, row: number) => ColumnData | IndicatorData | SeriesNumberColumnData;\n getBodyColumnDefine: (col: number, row: number) => ColumnDefine | IRowSeriesNumber | ColumnSeriesNumber;\n getBodyColumnType: (col: number, row: number) => ColumnTypeOption;\n getCellType: (col: number, row: number) => ColumnTypeOption;\n fireListeners: <TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n event: TableEventHandlersEventArgumentMap[TYPE]\n ) => TableEventHandlersReturnMap[TYPE][];\n\n //更新分页\n updatePagination: (cof: IPagination) => void;\n //hover\n\n getHeaderDescription: (col: number, row: number) => string | undefined;\n /** 获取单元格展示值 */\n getCellValue: (col: number, row: number, skipCustomMerge?: boolean) => string | null;\n /** 获取单元格展示数据的format前的值 */\n getCellOriginValue: (col: number, row: number) => any;\n /** 获取单元格展示数据源最原始值 */\n getCellRawValue: (col: number, row: number) => FieldData;\n /** 获取单元格展示数据的format前的record源数据 */\n getCellOriginRecord: (col: number, row: number) => MaybePromiseOrUndefined;\n /** 获取单元格展示源数据 */\n getCellRawRecord: (col: number, row: number) => MaybePromiseOrUndefined;\n\n _dropDownMenuIsHighlight: (col: number, row: number, index: number) => boolean;\n // bindEvents(): void;\n refreshRowColCount: () => void;\n // getFieldData: (field: FieldDef | FieldFormat | undefined, col: number, row: number) => FieldData;\n _hasField: (field: FieldDef, col: number, row: number) => boolean;\n getCellHeaderPaths: (col: number, row: number) => ICellHeaderPaths;\n getCellLocation: (col: number, row: number) => CellLocation;\n // isHitIcon(col: number, row: number, x: number, y: number, iconType: IconFuncTypeEnum): boolean;\n getCellIcons: (col: number, row: number) => ColumnIconOption[];\n\n getMenuInfo: (col: number, row: number, type: string) => DropDownMenuEventInfo;\n /**\n * 获取某个单元格的样式 共业务方调用\n * @param col\n * @param row\n */\n getCellStyle: (col: number, row: number) => CellStyle; // 计算后style\n\n getHierarchyState: (col: number, row: number) => HierarchyState | null;\n\n _canDragHeaderPosition: (col: number, row: number) => boolean;\n\n isHeader: (col: number, row: number) => boolean;\n\n isColumnHeader: (col: number, row: number) => boolean;\n\n isCornerHeader: (col: number, row: number) => boolean;\n\n isRowHeader: (col: number, row: number) => boolean;\n\n getCopyValue: (getCellValueFunction?: (col: number, row: number) => string | number) => string;\n\n getSelectedCellInfos: () => CellInfo[][];\n getSelectedCellRanges: () => CellRange[];\n getCellInfo: (col: number, row: number) => Omit<MousePointerCellEvent, 'target'>;\n\n showTooltip: (col: number, row: number, tooltipOptions?: TooltipOptions) => void;\n\n measureText: (\n text: string,\n font: { fontSize: number; fontWeight?: string | number; fontFamily: string }\n ) => ITextSize;\n\n _canResizeColumn: (col: number, row: number) => boolean;\n _canResizeRow: (col: number, row: number) => boolean;\n\n getCustomRender: (col: number, row: number) => ICustomRender;\n getCustomLayout: (col: number, row: number) => ICustomLayout;\n isListTable: () => boolean;\n isPivotTable: (() => boolean) & (() => boolean);\n isPivotChart: (() => boolean) & (() => boolean);\n _clearColRangeWidthsMap: (col?: number) => void;\n _clearRowRangeHeightsMap: (row?: number) => void;\n clearRowHeightCache: () => void;\n clearColWidthCache: () => void;\n toggleHierarchyState: (col: number, row: number) => void;\n\n resize: () => void;\n /** 直接设置canvas的宽高 不根据容器宽高来决定表格的尺寸 */\n setCanvasSize: (width: number, height: number) => void;\n getMergeCellRect: (col: number, row: number) => Rect;\n\n getTargetColAt: (absoluteX: number) => ColumnInfo | null;\n getTargetRowAt: (absoluteY: number) => RowInfo | null;\n getTargetColAtConsiderRightFrozen: (absoluteX: number, isConsider: boolean) => ColumnInfo | null;\n getTargetRowAtConsiderBottomFrozen: (absoluteY: number, isConsider: boolean) => RowInfo | null;\n renderWithRecreateCells: () => void;\n //#endregion tableAPI\n\n _adjustColWidth: (col: number, orgWidth: number) => number;\n _colWidthDefineToPxWidth: (width: string | number) => number;\n isFrozenColumn: (col: number, row?: number) => boolean;\n isLeftFrozenColumn: (col: number, row?: number) => boolean;\n isRightFrozenColumn: (col: number, row?: number) => boolean;\n isFrozenRow: (col: number, row?: number) => boolean;\n isTopFrozenRow: (col: number, row?: number) => boolean;\n isBottomFrozenRow: (col: number, row?: number) => boolean;\n\n hasCustomMerge: () => boolean;\n getCustomMerge: (col: number, row: number) => undefined | (Omit<CustomMerge, 'style'> & { style?: FullExtendStyle });\n /** 获取表格body部分的显示单元格范围 */\n getBodyVisibleCellRange: () => { rowStart: number; colStart: number; rowEnd: number; colEnd: number };\n /** 获取表格body部分的显示列号范围 */\n getBodyVisibleColRange: (start_deltaX?: number, end_deltaX?: number) => { colStart: number; colEnd: number };\n /** 获取表格body部分的显示行号范围 */\n getBodyVisibleRowRange: (start_deltaY?: number, end_deltaY?: number) => { rowStart: number; rowEnd: number };\n\n _hasCustomRenderOrLayout: () => boolean;\n /** 根据表格单元格的行列号 获取在body部分的列索引及行索引 */\n getBodyIndexByTableIndex: (col: number, row: number) => CellAddress;\n /** 根据body部分的列索引及行索引,获取单元格的行列号 */\n getTableIndexByBodyIndex: (col: number, row: number) => CellAddress;\n /**\n * 滚动到具体某个单元格位置\n * @param cellAddr 要滚动到的单元格位置\n */\n scrollToCell: (cellAddr: { col?: number; row?: number }, animationOption?: ITableAnimationOption | boolean) => void;\n scrollToRow: (row: number, animationOption?: ITableAnimationOption | boolean) => void;\n scrollToCol: (col: number, animationOption?: ITableAnimationOption | boolean) => void;\n registerCustomCellStyle: (customStyleId: string, customStyle: ColumnStyleOption | undefined | null) => void;\n arrangeCustomCellStyle: (cellPos: { col?: number; row?: number; range?: CellRange }, customStyleId: string) => void;\n /** 是否有列是自动计算列宽 */\n checkHasColumnAutoWidth: () => boolean;\n _moveHeaderPosition: (\n source: CellAddress,\n target: CellAddress\n ) => {\n sourceIndex: number;\n targetIndex: any;\n sourceSize: any;\n targetSize: any;\n moveType: 'column' | 'row';\n };\n changeRecordOrder: (source: number, target: number) => void;\n isSeriesNumber: (col: number, row?: number) => boolean;\n isHasSeriesNumber: () => boolean;\n leftRowSeriesNumberCount: number;\n isAutoRowHeight: (row?: number) => boolean;\n\n reactCustomLayout?: ReactCustomLayout;\n checkReactCustomLayout: (removeAllContainer: () => void) => void;\n setSortedIndexMap: (field: FieldDef, filedMap: ISortedMapItem) => void;\n\n exportImg: () => string;\n exportCellImg: (\n col: number,\n row: number,\n options?: { disableBackground?: boolean; disableBorder?: boolean }\n ) => string;\n exportCellRangeImg: (cellRange: CellRange) => string;\n exportCanvas: () => HTMLCanvasElement;\n setPixelRatio: (pixelRatio: number) => void;\n\n bodyDomContainer?: HTMLElement;\n headerDomContainer?: HTMLElement;\n frozenBodyDomContainer?: HTMLElement;\n frozenHeaderDomContainer?: HTMLElement;\n rightFrozenBodyDomContainer?: HTMLElement;\n rightFrozenHeaderDomContainer?: HTMLElement;\n frozenBottomDomContainer?: HTMLElement;\n bottomDomContainer?: HTMLElement;\n rightFrozenBottomDomContainer?: HTMLElement;\n\n showMoverLine: (col: number, row: number) => void;\n hideMoverLine: (col: number, row: number) => void;\n /** 关闭表格的滚动 */\n disableScroll: () => void;\n /** 开启表格的滚动 */\n enableScroll: () => void;\n\n customCellStylePlugin?: CustomCellStylePlugin;\n headerStyleCache: Map<string, any>;\n bodyBottomStyleCache: Map<string, any>;\n bodyStyleCache: Map<string, any>;\n bodyMergeTitleCache: Map<string, any>;\n isSeriesNumberInBody: (col: number, row: number) => boolean;\n getGroupTitleLevel: (col: number, row: number) => number | undefined;\n _getMaxFrozenWidth: () => number;\n _getComputedFrozenColCount: (frozenColCount: number) => number;\n isColumnSelected: (col: number) => boolean;\n isRowSelected: (row: number) => boolean;\n}\nexport interface ListTableProtected extends IBaseTableProtected {\n /** 表格数据 */\n records: any[] | null;\n dataConfig?: IListTableDataConfig;\n columns: ColumnsDefine;\n layoutMap: SimpleHeaderLayoutMap;\n columnWidthConfig?: {\n key: string | number;\n width: number;\n }[];\n rowHeightConfig?: {\n key: number;\n height: number;\n }[];\n\n groupBy: GroupByOption;\n groupTitleFieldFormat?: (record: any, col?: number, row?: number, table?: BaseTableAPI) => string;\n groupTitleCustomLayout?: ICustomLayout;\n enableTreeStickCell?: boolean;\n groupTitleCheckbox?: boolean;\n}\n\nexport interface PivotTableProtected extends IBaseTableProtected {\n /** 表格数据 */\n records: any[] | undefined;\n recordsIsTwoDimensionalArray?: boolean;\n layoutMap: PivotHeaderLayoutMap;\n dataConfig?: IPivotTableDataConfig;\n\n /** 列表头树型结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头树型结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n columnWidthConfig?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n columnWidthConfigForRowHeader?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n}\nexport interface PivotChartProtected extends IBaseTableProtected {\n /** 表格数据 */\n records: any[] | Record<string, any[]>;\n layoutMap: PivotHeaderLayoutMap;\n dataConfig?: IPivotChartDataConfig;\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n columnWidthConfig?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n columnWidthConfigForRowHeader?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ts-types/base-table.ts"],"names":[],"mappings":"","file":"base-table.js","sourcesContent":["import type { IBoundsLike, ITextSize } from '@visactor/vutils';\nimport type {\n RectProps,\n MaybePromiseOrUndefined,\n ICellHeaderPaths,\n CellInfo,\n CustomCellStyle,\n CustomCellStyleArrangement,\n IDimensionInfo\n} from './common';\nimport type {\n TableEventListener,\n TableEventHandlersEventArgumentMap,\n TableEventHandlersReturnMap,\n EventListenerId,\n MousePointerCellEvent\n} from './events';\nimport type { MenuListItem, DropDownMenuEventInfo, DropDownMenuHighlightInfo } from './menu';\nimport type { CellStyle } from './style-define';\nimport type { ColumnIconOption } from './icon';\nimport type {\n ColumnData,\n ColumnDefine,\n ColumnsDefine,\n HeaderData,\n IndicatorData,\n SeriesNumberColumnData\n} from './list-table/layout-map/api';\nexport type { HeaderData } from './list-table/layout-map/api';\nimport type { TableTheme } from '../themes/theme-define';\nimport type { ICustomRender } from './customElement';\nimport type { GroupByOption, LayoutObjectId } from './table-engine';\nimport type { Rect } from '../tools/Rect';\nimport type { Scenegraph } from '../scenegraph/scenegraph';\nimport type { StateManager } from '../state/state';\nimport type { EventManager } from '../event/event';\nimport type {\n CellAddress,\n CellRange,\n CellLocation,\n ColumnTypeOption,\n DataSourceAPI,\n FieldData,\n FieldDef,\n FieldFormat,\n FullExtendStyle,\n HeaderValues,\n HeightModeDef,\n HierarchyState,\n IPivotTableDataConfig,\n IPagination,\n ITableThemeDefine,\n SortState,\n TableKeyboardOptions,\n WidthModeDef,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n StickCell,\n CustomMergeCell,\n CustomMerge,\n IColumnDimension,\n IRowDimension,\n TableEventOptions,\n IPivotChartDataConfig,\n IListTableDataConfig,\n IRowSeriesNumber,\n ColumnSeriesNumber,\n ColumnStyleOption,\n WidthAdaptiveModeDef,\n HeightAdaptiveModeDef,\n ColumnInfo,\n RowInfo,\n CellAddressWithBound,\n Placement,\n CustomMergeCellFunc\n} from '.';\nimport type { TooltipOptions } from './tooltip';\nimport type { IWrapTextGraphicAttribute } from '../scenegraph/graphic/text';\nimport type { ICustomLayout } from './customLayout';\nimport type { CachedDataSource, DataSource } from '../data';\nimport type { MenuHandler } from '../components/menu/dom/MenuHandler';\nimport type { PivotHeaderLayoutMap } from '../layout/pivot-header-layout';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport type { TooltipHandler } from '../components/tooltip/TooltipHandler';\nimport type { BodyHelper } from '../body-helper/body-helper';\nimport type { HeaderHelper } from '../header-helper/header-helper';\nimport type { EventHandler } from '../event/EventHandler';\nimport type { NumberMap } from '../tools/NumberMap';\nimport type { FocusInput } from '../core/FouseInput';\nimport type { ITableLegendOption } from './component/legend';\nimport type { DataSet } from '@visactor/vdataset';\nimport type { Title } from '../components/title/title';\nimport type { ITitle } from './component/title';\nimport type { DiscreteTableLegend } from '../components/legend/discrete-legend/discrete-legend';\nimport type { ContinueTableLegend } from '../components/legend/continue-legend/continue-legend';\nimport type { NumberRangeMap } from '../layout/row-height-map';\nimport type { RowSeriesNumberHelper } from '../core/row-series-number-helper';\nimport type { ReactCustomLayout } from '../components/react/react-custom-layout';\nimport type { ISortedMapItem } from '../data/DataSource';\nimport type { IAnimationAppear, ITableAnimationOption } from './animation/appear';\nimport type { IEmptyTip } from './component/empty-tip';\nimport type { EmptyTip } from '../components/empty-tip/empty-tip';\nimport type { EditManager } from '../edit/edit-manager';\nimport type { TableAnimationManager } from '../core/animation';\nimport type { CustomCellStylePlugin } from '../plugins/custom-cell-style';\nimport type { IVTablePlugin } from '../plugins/interface';\nimport type { FederatedPointerEvent } from './../vrender';\n\nexport interface IBaseTableProtected {\n element: HTMLElement;\n // scrollable: Scrollable;\n handler: EventHandler;\n focusControl: FocusInput;\n canvas: HTMLCanvasElement;\n context: CanvasRenderingContext2D;\n rowCount: number;\n colCount: number;\n frozenColCount: number;\n unfreezeAllOnExceedsMaxWidth: boolean;\n allowFrozenColCount: number;\n\n frozenRowCount: number;\n rightFrozenColCount: number;\n bottomFrozenRowCount: number;\n defaultRowHeight: number | 'auto';\n /**表头默认行高 可以按逐行设置 如果没有就取defaultRowHeight */\n defaultHeaderRowHeight: (number | 'auto') | (number | 'auto')[];\n defaultColWidth: number;\n defaultHeaderColWidth: (number | 'auto') | (number | 'auto')[];\n // font?: string;\n // underlayBackgroundColor?: string;\n keyboardOptions?: TableKeyboardOptions;\n eventOptions?: TableEventOptions;\n rowSeriesNumber?: IRowSeriesNumber;\n /** 启动复选框级联 */\n enableCheckboxCascade?: boolean;\n /** 表头复选框是否级联整列状态 */\n enableHeaderCheckboxCascade?: boolean;\n columnSeriesNumber?: ColumnSeriesNumber[];\n // disableRowHeaderColumnResize?: boolean;\n\n columnResizeMode?: 'all' | 'none' | 'header' | 'body';\n canResizeColumn?: (col: number, row: number, table: BaseTableAPI) => boolean;\n\n rowResizeMode?: 'all' | 'none' | 'header' | 'body';\n\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n\n rowResizeType?: 'row' | 'indicator' | 'all' | 'indicatorGroup';\n /** 控制拖拽表头移动位置顺序开关 */\n dragHeaderMode?: 'all' | 'none' | 'column' | 'row';\n /** 拖拽表头移动位置 针对冻结部分的规则\n * \"disabled\"(禁止调整冻结列位置):不允许其他列的表头移入冻结列,也不允许冻结列移出,冻结列保持不变。\n * \"adjustFrozenCount\"(根据交互结果调整冻结数量):允许其他列的表头移入冻结列,及冻结列移出,并根据拖拽的动作调整冻结列的数量。当其他列的表头被拖拽进入冻结列位置时,冻结列数量增加;当其他列的表头被拖拽移出冻结列位置时,冻结列数量减少。\n * \"fixedFrozenCount\"(可调整冻结列,并维持冻结数量不变):允许自由拖拽其他列的表头移入或移出冻结列位置,同时保持冻结列的数量不变。\n */\n frozenColDragHeaderMode?: 'disabled' | 'adjustFrozenCount' | 'fixedFrozenCount';\n cachedRecordsRowHeightMap: NumberMap<string | number>; //存储每一条记录对应行的行高,只有当设置为自动换行随内容撑开才会起作用\n // headerRowHeightsMap: NumberMap<number>; //目前是用来存储了表头各行的高度,从headerRowHeight计算而来,headerRowHeight可以设置为数组的形式\n _rowHeightsMap: NumberRangeMap; //存储数据条目每行高度\n _colWidthsMap: NumberMap<string | number>; //存储各列的宽度\n _colContentWidthsMap: NumberMap<string | number>; //存储各列的内容宽度\n _colWidthsLimit: {\n //存储各列的宽度限制\n [col: number]: {\n max?: string | number;\n min?: string | number;\n };\n };\n calcWidthContext: {\n _: IBaseTableProtected;\n full: number;\n // em: number;\n };\n\n _rowRangeHeightsMap: Map<string, number>; //存储指定行范围的总高度\n _colRangeWidthsMap: Map<string, number>; //存储指定列范围的总宽度\n\n _widthResizedColMap: Set<number>; //记录下被手动调整过列宽的列号\n _heightResizedRowMap: Set<number>; //记录下被手动调整过行高的行号\n\n bodyHelper: BodyHelper;\n headerHelper: HeaderHelper;\n rowSeriesNumberHelper: RowSeriesNumberHelper;\n\n cellTextOverflows: { [at: string]: string };\n // headerDescriptions: { [at: string]: string };\n focusedTable: boolean;\n\n // scroll: {\n // left: number;\n // top: number;\n // };\n releaseList?: { release: () => void }[] | null;\n theme: TableTheme;\n transpose?: boolean; //是否转置\n // autoRowHeight?: boolean; //是否自动撑开高度 对于设置了autoWrapText的multilineText的列生效\n pixelRatio?: number;\n /** 下拉菜单的相关配置。消失时机:显示后点击菜单区域外自动消失*/\n menu: {\n /** 代替原来的option.menuType */\n renderMode?: 'canvas' | 'html';\n /** 内置下拉菜单的全局设置项 目前只针对基本表格有效 会对每个表头单元格开启默认的下拉菜单功能。代替原来的option.dropDownMenu*/\n defaultHeaderMenuItems?:\n | MenuListItem[]\n | ((args: { row: number; col: number; table: BaseTableAPI }) => MenuListItem[]);\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | MenuListItem[]\n | ((field: FieldDef, row: number, col: number, table?: BaseTableAPI) => MenuListItem[]);\n /** 设置选中状态的菜单。代替原来的option.dropDownMenuHighlight */\n dropDownMenuHighlight?: DropDownMenuHighlightInfo[];\n /** 右键菜单是否只工作在单元格上。默认true只在单元格上显示右键菜单, 配置false在空白处也弹出右键菜单 */\n contextMenuWorkOnlyCell?: boolean;\n parentElement?: HTMLElement;\n };\n /** 提示弹框的相关配置。消失时机:显示后鼠标移动到指定区域外或者进入新的单元格后自动消失*/\n tooltip: {\n parentElement: HTMLElement;\n renderMode: 'html' | 'canvas';\n /** 代替原来hover:isShowTooltip配置 */\n isShowOverflowTextTooltip: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean);\n /** 缩略文字提示框 延迟消失时间 */\n overflowTextTooltipDisappearDelay?: number;\n /** 弹框是否需要限定在表格区域内 */\n confine: boolean;\n position: Placement;\n };\n\n dataSourceEventIds?: EventListenerId[];\n // headerEvents?: EventListenerId[];\n layoutMap: SimpleHeaderLayoutMap | PivotHeaderLayoutMap;\n headerValues?: HeaderValues;\n tooltipHandler: TooltipHandler;\n\n // headerRowHeight: number[] | number;//移到了BaseTable\n sortState: SortState | SortState[];\n multipleSort?: boolean;\n\n dataSource: DataSource | CachedDataSource;\n records?: any;\n allowRangePaste: boolean;\n //重新思考逻辑:如果为false,行高按设置的rowHeight;如果设置为true,则按lineHeight及是否自动换行综合计算行高 2021.11.19 by:lff\n\n autoWrapText?: boolean;\n enableLineBreak?: boolean;\n\n menuHandler: MenuHandler;\n\n /**\n * 计算列宽时 指定最大列宽 可设置boolean或者具体的值 默认为450\n */\n limitMaxAutoWidth?: boolean | number;\n\n /**\n * 限制列宽最小值。\n */\n limitMinWidth?: number;\n\n limitMinHeight?: number;\n\n title?: Title;\n legends?: (DiscreteTableLegend | ContinueTableLegend)[];\n\n emptyTip?: EmptyTip;\n //是否开启图表异步渲染\n renderChartAsync?: boolean;\n // // 开启图表异步渲染 每批次渐进渲染图表个数\n // renderChartAsyncBatchCount?: number;\n\n stick: { changedCells: Map<string, StickCell> };\n\n customMergeCell?: CustomMergeCellFunc;\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n modifiedViewBoxTransform?: boolean;\n // react component container\n bodyDomContainer?: HTMLElement;\n headerDomContainer?: HTMLElement;\n frozenBodyDomContainer?: HTMLElement;\n frozenHeaderDomContainer?: HTMLElement;\n rightFrozenBodyDomContainer?: HTMLElement;\n rightFrozenHeaderDomContainer?: HTMLElement;\n frozenBottomDomContainer?: HTMLElement;\n bottomDomContainer?: HTMLElement;\n rightFrozenBottomDomContainer?: HTMLElement;\n\n // 已使用一行的高度填充所有行\n useOneRowHeightFillAll?: boolean;\n\n // 启用树形结构数据内的merge配置\n enableTreeNodeMerge?: boolean;\n\n _oldRowCount?: number;\n _oldColCount?: number;\n\n columnWidthConfig?: any;\n rowHeightConfig?: any;\n}\nexport interface BaseTableConstructorOptions {\n // /** 指定表格的行数 */\n // rowCount?: number;\n\n // /** 指定表格的列数 */\n // colCount?: number;\n /**\n * 当前需要冻结的列数 基本表格生效\n */\n frozenColCount?: number;\n frozenRowCount?: number;\n rightFrozenColCount?: number;\n bottomFrozenRowCount?: number;\n /** 最大冻结宽度,固定值 or 百分比。默认为'80%' */\n maxFrozenWidth?: number | string;\n /** 超过最大冻结宽度后是否全部解冻,默认true */\n unfreezeAllOnExceedsMaxWidth?: boolean;\n\n // /** 待实现 TODO */\n // frozenRowCount?: number;\n /** 可冻结列数,表示前多少列会出现冻结操作按钮 基本表格生效 */\n allowFrozenColCount?: number;\n /**\n * 默认行高. 默认 40\n */\n defaultRowHeight?: number | 'auto';\n /** 列表头默认行高 可以按逐行设置 如果没有就取defaultRowHeight */\n defaultHeaderRowHeight?: (number | 'auto') | (number | 'auto')[];\n /**\n * 默认列宽. 默认 80\n */\n defaultColWidth?: number;\n /** 行表头默认列宽 可以按逐列设置 如果没有就取defaultColWidth */\n defaultHeaderColWidth?: (number | 'auto') | (number | 'auto')[];\n /** 快捷键功能设置 */\n keyboardOptions?: TableKeyboardOptions;\n excelOptions?: {\n fillHandle?: boolean | ((args: { selectRanges: CellRange[]; table: BaseTableAPI }) => boolean);\n };\n /** 事件触发相关设置 */\n eventOptions?: TableEventOptions;\n /**\n * Canvas container\n */\n container?: HTMLElement | null;\n\n /**\n * @deprecated\n * 请使用resize.columnResizeMode\n * 调整列宽 可操作范围。'all' | 'none' | 'header' | 'body'; 整列间隔线|禁止调整|只能在表头处间隔线|只能在body间隔线\n */\n columnResizeMode?: 'all' | 'none' | 'header' | 'body';\n /**\n * @deprecated\n * 请使用resize.rowResizeMode\n */\n rowResizeMode?: 'all' | 'none' | 'header' | 'body';\n\n /**\n * @deprecated\n * dragOrder.dragHeaderMode\n * 控制拖拽表头移动位置顺序开关\n */\n dragHeaderMode?: 'all' | 'none' | 'column' | 'row';\n\n /**\n * 是否显示固定列图钉 基本表格生效\n */\n showFrozenIcon?: boolean;\n\n padding?:\n | {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n }\n | number;\n /** hover交互配置 */\n hover?: {\n /** hover交互响应模式:十字交叉 整列 整行 或者单个单元格 */\n highlightMode?: 'cross' | 'column' | 'row' | 'cell';\n /** 不响应鼠标hover交互 */\n disableHover?: boolean;\n /** 单独设置表头不响应鼠标hover交互 */\n disableHeaderHover?: boolean;\n /** 单独设置坐标轴不响应鼠标hover交互 */\n disableAxisHover?: boolean;\n };\n /** 选择单元格交互配置 */\n select?: {\n /** 高亮范围模式:十字交叉 整列 整行 或者单个单元格。默认`cell` */\n highlightMode?: 'cross' | 'column' | 'row' | 'cell';\n /** 点击表头单元格效果\n * 'inline': 点击行表头则整行选中,选择列表头则整列选中;\n * 'cell': 仅仅选择当前点击的表头单元格;\n * 'body': 不选择表头,点击行表头则选择该行所有 body 单元格,点击列表头则选择该列所有 body 单元格。\n */\n headerSelectMode?: 'inline' | 'cell' | 'body';\n /** 点击表头corner单元格效果\n * 'inline': 点击corner选择列表头则整列选中;\n * 'cell': 仅仅选择当前点击的corner表头单元格;\n * 'body': 点击corner列表头则选择该列所有 body 单元格;\n * 'all': 点击corner选择整个图表。\n */\n cornerHeaderSelectMode?: 'inline' | 'cell' | 'body' | 'all';\n /** 不响应鼠标select交互 */\n disableSelect?: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean);\n /** 单独设置表头不响应鼠标select交互 */\n disableHeaderSelect?: boolean;\n /** 点击空白区域是否取消选中 */\n blankAreaClickDeselect?: boolean;\n /** 点击外部区域是否取消选中 */\n outsideClickDeselect?: boolean; //\n /** 禁止拖拽框选 */\n disableDragSelect?: boolean;\n /** 是否在选择多行或多列时高亮范围 */\n highlightInRange?: boolean;\n /** 是否将选中的单元格自动滚动到视口内 默认为true */\n makeSelectCellVisible?: boolean;\n /** 右键点击单元格是否禁用选择单元格 */\n disableSelectOnContextMenu?: boolean;\n };\n /** 下拉菜单的相关配置。消失时机:显示后点击菜单区域外自动消失*/\n menu?: {\n /** 代替原来的option.menuType html目前实现较完整 先默认html渲染方式*/\n renderMode?: 'canvas' | 'html';\n /** 内置下拉菜单的全局设置项 目前只针对基本表格有效 会对每个表头单元格开启默认的下拉菜单功能。代替原来的option.dropDownMenu*/\n defaultHeaderMenuItems?:\n | MenuListItem[]\n | ((args: { row: number; col: number; table: BaseTableAPI }) => MenuListItem[]);\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | MenuListItem[]\n | ((field: string, row: number, col: number, table?: BaseTableAPI) => MenuListItem[]);\n /** 设置选中状态的菜单。代替原来的option.dropDownMenuHighlight */\n dropDownMenuHighlight?: DropDownMenuHighlightInfo[];\n /** 右键菜单是否只工作在单元格上。默认true只在单元格上显示右键菜单, 配置false在空白处也弹出右键菜单 */\n contextMenuWorkOnlyCell?: boolean;\n parentElement?: HTMLElement;\n };\n /** tooltip相关配置 */\n tooltip?: {\n parentElement?: HTMLElement;\n /** html目前实现较完整 先默认html渲染方式 */\n renderMode?: 'html'; // 目前暂不支持canvas方案\n /** 是否显示缩略文字提示框。 代替原来hover:isShowTooltip配置 暂时需要将renderMode配置为html才能显示,canvas的还未开发*/\n isShowOverflowTextTooltip?: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean);\n /** 缩略文字提示框 延迟消失时间 */\n overflowTextTooltipDisappearDelay?: number;\n /** 是否将 tooltip 框限制在画布区域内,默认开启。针对renderMode:\"html\"有效 */\n confine?: boolean;\n position?: Placement;\n };\n /**\n * Theme\n */\n theme?: ITableThemeDefine;\n /** 宽度模式 */\n widthMode?: 'standard' | 'adaptive' | 'autoWidth';\n /** 高度模式 */\n heightMode?: 'standard' | 'adaptive' | 'autoHeight';\n /** 当列宽度不能占满容器时,是否需要自动拉宽来填充容器的宽度。默认false */\n autoFillWidth?: boolean;\n /** 当行高度不能占满容器时,是否需要自动拉高来填充容器的高度。默认false */\n autoFillHeight?: boolean;\n /** 内容自适应模式,确保表格大小始终等于容器大小,保持原有的列宽/行高不变。默认false */\n containerFit?: {\n width?: boolean; // 是否自适应宽度,默认true\n height?: boolean; // 是否自适应高度,默认true\n };\n\n /** adaptive 模式下宽度的适应策略 **/\n widthAdaptiveMode?: WidthAdaptiveModeDef;\n /** adaptive 模式下高度的适应策略 **/\n heightAdaptiveMode?: HeightAdaptiveModeDef;\n /** 当配置adaptive模式时,默认true,即在计算每行行高的基础上去等比拉伸行高撑满容器宽度的。如果不需要计算行高用默认行高撑满的话请配置为false */\n autoHeightInAdaptiveMode?: boolean;\n\n // /** 行高是否根据内容来计算 */\n // autoRowHeight?: boolean;\n /** 设备的像素比 不配的话默认获取window.devicePixelRatio */\n pixelRatio?: number;\n /** 自定义渲染 函数形式*/\n customRender?: ICustomRender;\n /** 开启自动换行 默认false */\n autoWrapText?: boolean;\n /** 是否处理换行符 */\n enableLineBreak?: boolean;\n /** 单元格中可显示最大字符数 默认200 */\n maxCharactersNumber?: number; //\n // /** toolip最大字符数 */\n // maxTooltipCharactersNumber?: number;\n /** 最大可操作条目数 如copy操作可复制出最大数据条目数 */\n maxOperatableRecordCount?: number;\n /**\n * 计算列宽时 指定最大列宽 可设置boolean或者具体的值 默认为450。手动拖拽列宽的话不收这个限制\n */\n limitMaxAutoWidth?: boolean | number;\n /**\n * 限制列宽最小值。如设置为true 则拖拽改变列宽时限制列宽最小为10px,设置为false则不进行限制。默认为10px\n */\n limitMinWidth?: boolean | number;\n limitMinHeight?: boolean | number;\n\n // maximum number of data items maintained in table instance\n maintainedDataCount?: number;\n // maximum number of columns maintained in table instance\n maintainedColumnCount?: number;\n\n legends?: ITableLegendOption | ITableLegendOption[];\n title?: ITitle;\n emptyTip?: true | IEmptyTip;\n /** 是否开启图表异步渲染 */\n renderChartAsync?: boolean;\n /** 开启图表异步渲染 每批次渐进渲染图表个数 默认是5个 */\n renderChartAsyncBatchCount?: number;\n\n customMergeCell?: CustomMergeCell;\n\n // #region for nodejs\n mode?: 'node' | 'browser';\n modeParams?: any;\n canvasWidth?: number | 'auto';\n canvasHeight?: number | 'auto';\n maxCanvasWidth?: number;\n maxCanvasHeight?: number;\n /** 表格的x偏移量(会影响width), 内部适配的表格边框或者title等组件的占位不算在内 */\n contentOffsetX?: number;\n /** 表格的y偏移量(会影响height), 内部适配的表格边框或者title等组件的占位不算在内 */\n contentOffsetY?: number;\n\n // #endregion\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n // resize response time\n resizeTime?: number;\n\n canvas?: HTMLCanvasElement;\n viewBox?: IBoundsLike;\n chartOption?: any;\n disableInteraction?: boolean;\n\n // 渲染时的 spec 改变\n specFormat?: (\n spec: any,\n chartInstance: any,\n chart: any\n ) => { needFormatSpec: boolean; spec?: any; updateSpec?: boolean };\n // chart 单元格 的 spec 生成时的转换\n specTransformInCell?: (spec: any, col: number, row: number) => any;\n\n beforeRender?: (stage: any) => void;\n afterRender?: (stage: any) => void;\n rowSeriesNumber?: IRowSeriesNumber;\n /** 启用复选框级联 */\n enableCheckboxCascade?: boolean;\n /** 表头复选框是否级联整列状态 */\n enableHeaderCheckboxCascade?: boolean;\n // columnSeriesNumber?: ColumnSeriesNumber[];\n customCellStyle?: CustomCellStyle[];\n customCellStyleArrangement?: CustomCellStyleArrangement[];\n\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n clearDOM?: boolean;\n customConfig?: {\n /** xTable对于没有配置autoWrapText并且有'\\n'的文本,在计算行高是会当做一行处理,但是在渲染时会解析'\\n';显示效果就是单元格高度为一行文本高度,只显示第一个'\\n'前的文字,后面显示'...';multilinesForXTable配置实现和该功能对齐的样式 */\n multilinesForXTable?: boolean;\n /** 这里可以配置为false 来走flatDataToObject的数据处理逻辑 而不走dataset的分析 */\n enableDataAnalysis?: boolean;\n /** 禁用行高列宽计算取整数逻辑 对齐xTable */\n _disableColumnAndRowSizeRound?: boolean;\n imageMargin?: number;\n // 是否创建react custom container\n createReactContainer?: boolean;\n // adaptive 模式下优先缩小迷你图\n shrinkSparklineFirst?: boolean;\n\n // 行列移动不更新表格\n notUpdateInColumnRowMove?: boolean;\n\n // 表格是否限制内容高度\n limitContentHeight?: boolean;\n\n // 图片资源请求时是否使用anonymous模式\n imageAnonymous?: boolean;\n\n // 滚动到边界是否继续触发滚动事件\n scrollEventAlwaysTrigger?: boolean;\n\n // 开启透视结构缓存\n enablePivotPathCache?: boolean;\n\n // 是否禁用内置图表激活\n disableBuildInChartActive?: boolean;\n\n /** 是否检测图表内具体元素的点击事件,用于 chart-render-helper.ts中 contains方法判断是否选中图表(图表助手需求),默认false */\n detectPickChartItem?: boolean;\n /** 强制计算所有行高,用于某些场景下,如vtable-gantt中,需要一次性计算所有行高 */\n forceComputeAllRowHeight?: boolean;\n\n /** 是否取消当前单元格选中状态的判断钩子,用在table-group文件的pointertap事件中,当点击空白区域时,取消选中状态 */\n cancelSelectCellHook?: (e: FederatedPointerEvent) => boolean;\n\n /** 当编辑器没有退出情况时,可继续选中其他单元格,比如在vtable-sheet中,当编辑器没有退出情况时,可继续选中其他单元格 */\n selectCellWhenCellEditorNotExists?: boolean;\n }; // 部分特殊配置,兼容xTable等作用\n\n animationAppear?: boolean | IAnimationAppear;\n\n renderOption?: any;\n\n formatCopyValue?: (value: string) => string;\n customComputeRowHeight?: (computeArgs: { row: number; table: BaseTableAPI }) => number | 'auto' | undefined;\n /** 当表格出现抖动情况,请排查是否上层dom容器的宽高是小数引起的。如果不能保证是整数,请配置这个配置项为true */\n tableSizeAntiJitter?: boolean;\n\n /**\n * @deprecated 请使用resize.disableDblclickAutoResizeColWidth\n */\n disableDblclickAutoResizeColWidth?: boolean;\n\n /** resize交互配置 **/\n resize?: {\n /**\n * 调整列宽 可操作范围。'all' | 'none' | 'header' | 'body'; 整列间隔线|禁止调整|只能在表头处间隔线|只能在body间隔线\n */\n columnResizeMode?: 'all' | 'none' | 'header' | 'body';\n canResizeColumn?: (col: number, row: number, table: BaseTableAPI) => boolean;\n rowResizeMode?: 'all' | 'none' | 'header' | 'body';\n /** 是否禁用双击列边框自动调整列宽 **/\n disableDblclickAutoResizeColWidth?: boolean;\n };\n dragOrder?: {\n /** 控制拖拽表头移动位置顺序开关 */\n dragHeaderMode?: 'all' | 'none' | 'column' | 'row';\n /** 拖拽移动位置结束时进行验证 */\n validateDragOrderOnEnd?: (source: CellAddress, target: CellAddress) => boolean;\n };\n /** 插件配置 */\n plugins?: IVTablePlugin[];\n /** 默认的鼠标样式 */\n defaultCursor?: string;\n}\nexport interface BaseTableAPI {\n id: string;\n /** 数据总条目数 */\n recordsCount: number;\n /** 表格的行数 */\n rowCount: number;\n /** 表格的列数 */\n colCount: number;\n /** 表格除去外层frame后的宽度 */\n tableNoFrameWidth: number;\n /** 表格除去外层frame后的高度 */\n tableNoFrameHeight: number;\n /** 表格的冻结行数 包括表头在内 */\n frozenRowCount: number;\n /** 表格的冻结列数 包括表头在内 */\n frozenColCount: number;\n\n bottomFrozenRowCount: number;\n rightFrozenColCount: number;\n /** 当前表格默认表头行高 */\n defaultHeaderRowHeight: (number | 'auto') | (number | 'auto')[];\n /** 当前表格默认行高 */\n defaultRowHeight: number;\n /** 当前表格默认列宽 */\n defaultColWidth: number;\n /** 当前表格默认表头列宽 */\n defaultHeaderColWidth: (number | 'auto') | (number | 'auto')[];\n /** 当前表格快捷键设置 */\n keyboardOptions: TableKeyboardOptions | null;\n /** 当前表格事件相关设置 */\n eventOptions: TableEventOptions | null;\n /**\n * 是否显示图钉\n */\n showFrozenIcon: boolean;\n readonly canvas: HTMLCanvasElement;\n /** 表格可视区域的行数 */\n readonly visibleRowCount: number;\n /** 表格可视区域的列数 */\n readonly visibleColCount: number;\n /** 表格滚动值left */\n scrollLeft: number;\n /** 表格滚动值top */\n scrollTop: number;\n /** 用户设置的options 不要修改这个这个 */\n options: BaseTableConstructorOptions;\n /** 设置的全局下拉菜单列表项配置 */\n globalDropDownMenu?: MenuListItem[] | ((args: { row: number; col: number; table: BaseTableAPI }) => MenuListItem[]);\n /** 设置的全局自定义渲染函数 */\n customRender?: ICustomRender;\n\n /** 表格数据管理对象 */\n dataSource: DataSourceAPI;\n /** 设置的表格主题 */\n theme: TableTheme;\n /** 可允许设置冻结的最大列数 */\n allowFrozenColCount: number;\n\n /** 存储内部用到的属性 变量等 */\n internalProps: IBaseTableProtected;\n /** 分页信息 */\n pagination?: IPagination;\n\n /** 表格偏移像素值 水平方向 */\n tableX: number;\n /** 表格偏移像素值 垂直方向 */\n tableY: number;\n /** 表格宽度模式 */\n widthMode: WidthModeDef;\n /** 表格宽度模式 */\n heightMode: HeightModeDef;\n /** 当列宽度不能占满容器时,是否需要自动拉宽来填充容器的宽度。默认false */\n autoFillWidth: boolean;\n /** 当行高度不能占满容器时,是否需要自动拉高来填充容器的高度。默认false */\n autoFillHeight?: boolean;\n /** 内容自适应模式,确保表格大小始终等于容器大小,保持原有的列宽/行高不变。默认false */\n containerFit?: { width: boolean; height: boolean };\n\n /** adaptive 模式下宽度的适应策略 **/\n widthAdaptiveMode: WidthAdaptiveModeDef;\n /** adaptive 模式下高度的适应策略 **/\n heightAdaptiveMode: HeightAdaptiveModeDef;\n\n isReleased: boolean;\n\n // rowHeightsMap: NumberMap<number>;\n rowHeightsMap: NumberRangeMap;\n colWidthsMap: NumberMap<string | number>;\n hasListeners: (type: string) => boolean;\n on: <TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE> //(event: TableEventHandlersEventArgumentMap[TYPE]) => TableEventHandlersReturnMap[TYPE]\n ) => EventListenerId;\n // &(<T extends keyof TableEventHandlersEventArgumentMap>(type: string, listener: AnyListener<T>) => EventListenerId);\n\n _vDataSet?: DataSet;\n /** 场景树对象 */\n scenegraph: Scenegraph;\n /** 状态管理模块 */\n stateManager: StateManager;\n /** 事件管理模块 */\n eventManager: EventManager;\n /** 动画管理模块 */\n animationManager: TableAnimationManager;\n\n editorManager: EditManager;\n /** 行表头的层数 */\n rowHeaderLevelCount: number;\n /** 列表头的层数 */\n columnHeaderLevelCount: number;\n\n canvasWidth?: number;\n canvasHeight?: number;\n\n columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';\n\n _rowRangeHeightsMap: Map<string, number>;\n _colRangeWidthsMap: Map<string, number>;\n canvasSizeSeted?: boolean;\n\n pixelRatio: number;\n rotateDegree?: number;\n /** 获取表格绘制的范围 不包括frame的宽度 */\n getDrawRange: () => Rect;\n /** 将鼠标坐标值 转换成表格坐标系中的坐标位置 */\n _getMouseAbstractPoint: (evt: TouchEvent | MouseEvent | undefined) => { x: number; y: number; inTable: boolean };\n getElement: () => HTMLElement;\n getContainer: () => HTMLElement;\n\n setFrozenColCount: (count: number) => void;\n _setFrozenColCount: (count: number) => void;\n _updateSize: () => void;\n\n render: () => void;\n throttleInvalidate: () => void;\n getRowHeight: (row: number) => number;\n getDefaultRowHeight: (row: number) => number | 'auto';\n getDefaultColumnWidth: (col: number) => number | 'auto';\n _setRowHeight: (row: number, height: number, clearCache?: boolean) => void;\n setRowHeight: (row: number, height: number) => void;\n getColWidth: (col: number) => number;\n getColWidthDefined: (col: number) => string | number;\n // setColWidthDefined: (col: number, width: number) => void;\n getColWidthDefinedNumber: (col: number) => number;\n // getColWidthDefine: (col: number) => string | number;\n _setColWidth: (col: number, width: number | string, clearCache?: boolean, skipCheckFrozen?: boolean) => void;\n setColWidth: (col: number, width: number) => void;\n _getColContentWidth: (col: number) => number;\n _setColContentWidth: (col: number, width: number | string, clearCache?: boolean) => void;\n getMaxColWidth: (col: number) => number;\n setMaxColWidth: (col: number, maxwidth: string | number) => void;\n getMinColWidth: (col: number) => number;\n setMinColWidth: (col: number, minwidth: string | number) => void;\n getCellRect: (col: number, row: number) => Rect;\n getCellRelativeRect: (col: number, row: number) => Rect;\n getCellsRect: (startCol: number, startRow: number, endCol: number, endRow: number) => Rect;\n getCellRangeRect: (cellRange: CellRange | CellAddress) => Rect;\n getCellRangeRelativeRect: (cellRange: CellRange | CellAddress) => Rect;\n getVisibleCellRangeRelativeRect: (cellRange: CellRange | CellAddress) => Rect;\n isFrozenCell: (col: number, row: number) => { row: boolean; col: boolean } | null;\n getRowAt: (absoluteY: number) => { top: number; row: number; bottom: number };\n getColAt: (absoluteX: number) => { left: number; col: number; right: number };\n getCellAt: (absoluteX: number, absoluteY: number) => CellAddressWithBound;\n getCellAtRelativePosition: (absoluteX: number, absoluteY: number) => CellAddressWithBound;\n getColAtRelativePosition: (absoluteX: number) => number;\n getRowAtRelativePosition: (absoluteY: number) => number;\n _makeVisibleCell: (col: number, row: number) => void;\n // setFocusCursor(col: number, row: number): void;\n // focusCell(col: number, row: number): void;\n getCellOverflowText: (col: number, row: number) => string | null;\n getColsWidth: (startCol: number, endCol: number) => number;\n getColsWidths: () => number[];\n getRowsHeight: (startRow: number, endRow: number) => number;\n _getRangeSizeForContainerFit: (start: number, end: number, totalSize: number, type: 'col' | 'row') => number;\n\n release: () => void;\n addReleaseObj: (releaseObj: { release: () => void }) => void;\n _getCellStyle: (col: number, row: number) => FullExtendStyle;\n clearCellStyleCache: () => void;\n\n getFrozenRowsHeight: () => number;\n getFrozenColsWidth: () => number;\n getBottomFrozenRowsHeight: () => number;\n getRightFrozenColsWidth: () => number;\n selectCell: (\n col: number,\n row: number,\n isShift?: boolean,\n isCtrl?: boolean,\n makeSelectCellVisible?: boolean,\n skipBodyMerge?: boolean\n ) => void;\n clearSelected: () => void;\n selectCells: (cellRanges: CellRange[]) => void;\n getAllRowsHeight: () => number;\n getAllColsWidth: () => number;\n\n off: (id: EventListenerId) => void;\n getBodyField: (col: number, row: number) => FieldDef | undefined;\n /**\n * 根据单元格获取对应的源数据\n * @param col\n * @param row\n * @returns\n */\n getRecordByCell: (col: number, row: number) => MaybePromiseOrUndefined;\n /**\n * 根据数据源的index 获取显示到表格中的index 行号或者列号(与转置相关)。注:ListTable特有接口\n * @param recordIndex\n */\n getTableIndexByRecordIndex: (recordIndex: number) => number;\n /**\n * 根据数据源的field 获取显示到表格中的index 行号或者列号(与转置相关)。注:ListTable特有接口\n * @param recordIndex\n */\n getTableIndexByField: (field: FieldDef) => number;\n /**\n * 根据数据源中的index和field获取单元格行列号。注:ListTable特有接口\n * @param field\n * @param recordIndex\n * @returns\n */\n getCellAddrByFieldRecord: (field: FieldDef, recordIndex: number) => CellAddress;\n getRecordShowIndexByCell: (col: number, row: number) => number;\n getRecordStartRowByRecordIndex: (index: number) => number;\n\n getHeaderField: (col: number, row: number) => any | undefined;\n\n _getHeaderCellBySortState: (sortState: SortState) => CellAddress | undefined;\n getHeaderDefine: (col: number, row: number) => ColumnDefine | IRowSeriesNumber | ColumnSeriesNumber;\n _getHeaderLayoutMap: (col: number, row: number) => HeaderData | SeriesNumberColumnData;\n getContext: () => CanvasRenderingContext2D;\n getCellRange: (col: number, row: number) => CellRange;\n _resetFrozenColCount: () => void;\n isCellRangeEqual: (col: number, row: number, targetCol: number, targetRow: number) => boolean;\n _getLayoutCellId: (col: number, row: number) => LayoutObjectId;\n _getBodyLayoutMap: (col: number, row: number) => ColumnData | IndicatorData | SeriesNumberColumnData;\n getBodyColumnDefine: (col: number, row: number) => ColumnDefine | IRowSeriesNumber | ColumnSeriesNumber;\n getBodyColumnType: (col: number, row: number) => ColumnTypeOption;\n getCellType: (col: number, row: number) => ColumnTypeOption;\n fireListeners: <TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n event: TableEventHandlersEventArgumentMap[TYPE]\n ) => TableEventHandlersReturnMap[TYPE][];\n\n //更新分页\n updatePagination: (cof: IPagination) => void;\n //hover\n\n getHeaderDescription: (col: number, row: number) => string | undefined;\n /** 获取单元格展示值 */\n getCellValue: (col: number, row: number, skipCustomMerge?: boolean) => string | null;\n /** 获取单元格展示数据的format前的值 */\n getCellOriginValue: (col: number, row: number) => any;\n /** 获取单元格展示数据源最原始值 */\n getCellRawValue: (col: number, row: number) => FieldData;\n /** 获取单元格展示数据的format前的record源数据 */\n getCellOriginRecord: (col: number, row: number) => MaybePromiseOrUndefined;\n /** 获取单元格展示源数据 */\n getCellRawRecord: (col: number, row: number) => MaybePromiseOrUndefined;\n\n _dropDownMenuIsHighlight: (col: number, row: number, index: number) => boolean;\n // bindEvents(): void;\n refreshRowColCount: () => void;\n // getFieldData: (field: FieldDef | FieldFormat | undefined, col: number, row: number) => FieldData;\n _hasField: (field: FieldDef, col: number, row: number) => boolean;\n getCellHeaderPaths: (col: number, row: number) => ICellHeaderPaths;\n getCellLocation: (col: number, row: number) => CellLocation;\n // isHitIcon(col: number, row: number, x: number, y: number, iconType: IconFuncTypeEnum): boolean;\n getCellIcons: (col: number, row: number) => ColumnIconOption[];\n\n getMenuInfo: (col: number, row: number, type: string) => DropDownMenuEventInfo;\n /**\n * 获取某个单元格的样式 共业务方调用\n * @param col\n * @param row\n */\n getCellStyle: (col: number, row: number) => CellStyle; // 计算后style\n\n getHierarchyState: (col: number, row: number) => HierarchyState | null;\n\n _canDragHeaderPosition: (col: number, row: number) => boolean;\n\n isHeader: (col: number, row: number) => boolean;\n\n isColumnHeader: (col: number, row: number) => boolean;\n\n isCornerHeader: (col: number, row: number) => boolean;\n\n isRowHeader: (col: number, row: number) => boolean;\n\n getCopyValue: (getCellValueFunction?: (col: number, row: number) => string | number) => string;\n\n getSelectedCellInfos: () => CellInfo[][];\n getSelectedCellRanges: () => CellRange[];\n getCellInfo: (col: number, row: number) => Omit<MousePointerCellEvent, 'target'>;\n\n showTooltip: (col: number, row: number, tooltipOptions?: TooltipOptions) => void;\n\n measureText: (\n text: string,\n font: { fontSize: number; fontWeight?: string | number; fontFamily: string }\n ) => ITextSize;\n\n _canResizeColumn: (col: number, row: number) => boolean;\n _canResizeRow: (col: number, row: number) => boolean;\n\n getCustomRender: (col: number, row: number) => ICustomRender;\n getCustomLayout: (col: number, row: number) => ICustomLayout;\n isListTable: () => boolean;\n isPivotTable: (() => boolean) & (() => boolean);\n isPivotChart: (() => boolean) & (() => boolean);\n _clearColRangeWidthsMap: (col?: number) => void;\n _clearRowRangeHeightsMap: (row?: number) => void;\n clearRowHeightCache: () => void;\n clearColWidthCache: () => void;\n toggleHierarchyState: (col: number, row: number) => void;\n\n resize: () => void;\n /** 直接设置canvas的宽高 不根据容器宽高来决定表格的尺寸 */\n setCanvasSize: (width: number, height: number) => void;\n getMergeCellRect: (col: number, row: number) => Rect;\n\n getTargetColAt: (absoluteX: number) => ColumnInfo | null;\n getTargetRowAt: (absoluteY: number) => RowInfo | null;\n getTargetColAtConsiderRightFrozen: (absoluteX: number, isConsider: boolean) => ColumnInfo | null;\n getTargetRowAtConsiderBottomFrozen: (absoluteY: number, isConsider: boolean) => RowInfo | null;\n renderWithRecreateCells: () => void;\n //#endregion tableAPI\n\n _adjustColWidth: (col: number, orgWidth: number) => number;\n _colWidthDefineToPxWidth: (width: string | number) => number;\n isFrozenColumn: (col: number, row?: number) => boolean;\n isLeftFrozenColumn: (col: number, row?: number) => boolean;\n isRightFrozenColumn: (col: number, row?: number) => boolean;\n isFrozenRow: (col: number, row?: number) => boolean;\n isTopFrozenRow: (col: number, row?: number) => boolean;\n isBottomFrozenRow: (col: number, row?: number) => boolean;\n\n hasCustomMerge: () => boolean;\n getCustomMerge: (col: number, row: number) => undefined | (Omit<CustomMerge, 'style'> & { style?: FullExtendStyle });\n /** 获取表格body部分的显示单元格范围 */\n getBodyVisibleCellRange: () => { rowStart: number; colStart: number; rowEnd: number; colEnd: number };\n /** 获取表格body部分的显示列号范围 */\n getBodyVisibleColRange: (start_deltaX?: number, end_deltaX?: number) => { colStart: number; colEnd: number };\n /** 获取表格body部分的显示行号范围 */\n getBodyVisibleRowRange: (start_deltaY?: number, end_deltaY?: number) => { rowStart: number; rowEnd: number };\n\n _hasCustomRenderOrLayout: () => boolean;\n /** 根据表格单元格的行列号 获取在body部分的列索引及行索引 */\n getBodyIndexByTableIndex: (col: number, row: number) => CellAddress;\n /** 根据body部分的列索引及行索引,获取单元格的行列号 */\n getTableIndexByBodyIndex: (col: number, row: number) => CellAddress;\n /**\n * 滚动到具体某个单元格位置\n * @param cellAddr 要滚动到的单元格位置\n */\n scrollToCell: (cellAddr: { col?: number; row?: number }, animationOption?: ITableAnimationOption | boolean) => void;\n scrollToRow: (row: number, animationOption?: ITableAnimationOption | boolean) => void;\n scrollToCol: (col: number, animationOption?: ITableAnimationOption | boolean) => void;\n registerCustomCellStyle: (customStyleId: string, customStyle: ColumnStyleOption | undefined | null) => void;\n arrangeCustomCellStyle: (cellPos: { col?: number; row?: number; range?: CellRange }, customStyleId: string) => void;\n /** 是否有列是自动计算列宽 */\n checkHasColumnAutoWidth: () => boolean;\n _moveHeaderPosition: (\n source: CellAddress,\n target: CellAddress\n ) => {\n sourceIndex: number;\n targetIndex: any;\n sourceSize: any;\n targetSize: any;\n moveType: 'column' | 'row';\n };\n changeRecordOrder: (source: number, target: number) => void;\n isSeriesNumber: (col: number, row?: number) => boolean;\n isHasSeriesNumber: () => boolean;\n leftRowSeriesNumberCount: number;\n isAutoRowHeight: (row?: number) => boolean;\n\n reactCustomLayout?: ReactCustomLayout;\n checkReactCustomLayout: (removeAllContainer: () => void) => void;\n setSortedIndexMap: (field: FieldDef, filedMap: ISortedMapItem) => void;\n\n exportImg: () => string;\n exportCellImg: (\n col: number,\n row: number,\n options?: { disableBackground?: boolean; disableBorder?: boolean }\n ) => string;\n exportCellRangeImg: (cellRange: CellRange) => string;\n exportCanvas: () => HTMLCanvasElement;\n setPixelRatio: (pixelRatio: number) => void;\n\n bodyDomContainer?: HTMLElement;\n headerDomContainer?: HTMLElement;\n frozenBodyDomContainer?: HTMLElement;\n frozenHeaderDomContainer?: HTMLElement;\n rightFrozenBodyDomContainer?: HTMLElement;\n rightFrozenHeaderDomContainer?: HTMLElement;\n frozenBottomDomContainer?: HTMLElement;\n bottomDomContainer?: HTMLElement;\n rightFrozenBottomDomContainer?: HTMLElement;\n\n showMoverLine: (col: number, row: number) => void;\n hideMoverLine: (col: number, row: number) => void;\n /** 关闭表格的滚动 */\n disableScroll: () => void;\n /** 开启表格的滚动 */\n enableScroll: () => void;\n\n customCellStylePlugin?: CustomCellStylePlugin;\n headerStyleCache: Map<string, any>;\n bodyBottomStyleCache: Map<string, any>;\n bodyStyleCache: Map<string, any>;\n bodyMergeTitleCache: Map<string, any>;\n isSeriesNumberInBody: (col: number, row: number) => boolean;\n getGroupTitleLevel: (col: number, row: number) => number | undefined;\n _getMaxFrozenWidth: () => number;\n _getComputedFrozenColCount: (frozenColCount: number) => number;\n isColumnSelected: (col: number) => boolean;\n isRowSelected: (row: number) => boolean;\n updateCellContentRanges: (ranges: CellRange[]) => void;\n updateCellContent: (col: number, row: number) => void;\n updateCellContentRange: (startCol: number, startRow: number, endCol: number, endRow: number) => void;\n}\nexport interface ListTableProtected extends IBaseTableProtected {\n /** 表格数据 */\n records: any[] | null;\n dataConfig?: IListTableDataConfig;\n columns: ColumnsDefine;\n layoutMap: SimpleHeaderLayoutMap;\n columnWidthConfig?: {\n key: string | number;\n width: number;\n }[];\n rowHeightConfig?: {\n key: number;\n height: number;\n }[];\n\n groupBy: GroupByOption;\n groupTitleFieldFormat?: (record: any, col?: number, row?: number, table?: BaseTableAPI) => string;\n groupTitleCustomLayout?: ICustomLayout;\n enableTreeStickCell?: boolean;\n groupTitleCheckbox?: boolean;\n}\n\nexport interface PivotTableProtected extends IBaseTableProtected {\n /** 表格数据 */\n records: any[] | undefined;\n recordsIsTwoDimensionalArray?: boolean;\n layoutMap: PivotHeaderLayoutMap;\n dataConfig?: IPivotTableDataConfig;\n\n /** 列表头树型结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头树型结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n columnWidthConfig?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n columnWidthConfigForRowHeader?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n}\nexport interface PivotChartProtected extends IBaseTableProtected {\n /** 表格数据 */\n records: any[] | Record<string, any[]>;\n layoutMap: PivotHeaderLayoutMap;\n dataConfig?: IPivotChartDataConfig;\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n columnWidthConfig?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n columnWidthConfigForRowHeader?: {\n dimensions: IDimensionInfo[];\n width: number;\n }[];\n}\n"]}
|
package/es/ts-types/events.d.ts
CHANGED
|
@@ -313,23 +313,10 @@ export interface TableEventHandlersEventArgumentMap {
|
|
|
313
313
|
change_cell_value: {
|
|
314
314
|
col: number;
|
|
315
315
|
row: number;
|
|
316
|
-
recordIndex?: number | number[];
|
|
317
|
-
field?: FieldDef;
|
|
318
316
|
rawValue: string | number;
|
|
319
317
|
currentValue: string | number;
|
|
320
318
|
changedValue: string | number;
|
|
321
319
|
};
|
|
322
|
-
change_cell_values: {
|
|
323
|
-
values: {
|
|
324
|
-
col: number;
|
|
325
|
-
row: number;
|
|
326
|
-
recordIndex?: number | number[];
|
|
327
|
-
field?: FieldDef;
|
|
328
|
-
rawValue: string | number;
|
|
329
|
-
currentValue: string | number;
|
|
330
|
-
changedValue: string | number;
|
|
331
|
-
}[];
|
|
332
|
-
};
|
|
333
320
|
mousedown_fill_handle: {};
|
|
334
321
|
drag_fill_handle_end: {
|
|
335
322
|
direction?: 'top' | 'bottom' | 'left' | 'right';
|
|
@@ -363,7 +350,6 @@ export interface TableEventHandlersEventArgumentMap {
|
|
|
363
350
|
};
|
|
364
351
|
delete_record: {
|
|
365
352
|
recordIndexs: number[] | number[][];
|
|
366
|
-
records: any[];
|
|
367
353
|
rowIndexs: number[];
|
|
368
354
|
deletedCount: number;
|
|
369
355
|
};
|
|
@@ -459,7 +445,6 @@ export interface TableEventHandlersReturnMap {
|
|
|
459
445
|
after_update_cell_content_width: void;
|
|
460
446
|
after_update_select_border_height: void;
|
|
461
447
|
change_cell_value: void;
|
|
462
|
-
change_cell_values: void;
|
|
463
448
|
mousedown_fill_handle: void;
|
|
464
449
|
drag_fill_handle_end: void;
|
|
465
450
|
dblclick_fill_handle: void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ts-types/events.ts"],"names":[],"mappings":"","file":"events.js","sourcesContent":["import type {\n CellAddress,\n CellRange,\n CellLocation,\n FieldDef,\n CellAddressWithBound,\n ListTableConstructorOptions,\n PivotTableConstructorOptions\n} from './table-engine';\nimport type { DropDownMenuEventArgs, MenuListItem, PivotInfo } from './menu';\n\nimport type { IDimensionInfo, MergeCellInfo, RectProps, SortOrder } from './common';\nimport type { IconFuncTypeEnum, CellInfo, HierarchyState, ColumnsDefine } from '.';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport type { FederatedPointerEvent, Group, IEventTarget } from './../vrender';\nimport type { BaseTableConstructorOptions, BaseTableAPI } from './base-table';\n\nexport type KeyboardEventListener = (e: KeyboardEvent) => void;\nexport type TableEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap> = (\n args: TableEventHandlersEventArgumentMap[TYPE]\n) => TableEventHandlersReturnMap[TYPE]; //AnyFunction;\nexport type EventListenerId = number;\n\nexport type SelectedCellEvent = CellAddress & {\n ranges: CellRange[];\n};\n\n// export type MouseCellEvent = CellAddress & {\n// event: MouseEvent | PointerEvent | TouchEvent;\n// };\n\nexport type MenuEvent = CellAddress & {\n dropDownMenu: MenuListItem[];\n pivotInfo: PivotInfo;\n};\n\nexport type TouchCellEvent = CellAddress & {\n event: TouchEvent;\n};\n\nexport type KeydownEvent = {\n keyCode: number;\n code: string;\n event: KeyboardEvent;\n stopCellMoving?: () => void;\n scaleRatio?: number;\n};\n\nexport type MousePointerCellEvent = CellAddressWithBound &\n CellInfo & {\n scaleRatio?: number;\n targetIcon?: { name: string; position: RectProps; funcType: string };\n event?: MouseEvent | PointerEvent | TouchEvent;\n federatedEvent?: FederatedPointerEvent;\n target: IEventTarget | undefined;\n\n mergeCellInfo?: MergeCellInfo;\n };\n// 多单元格的事件传出参数 需要将当前鼠标处的单元格的信息FocusedCellInfo也带着\nexport type MousePointerMultiCellEvent = MousePointerCellEvent & {\n cells: CellInfo[][];\n // menuKey?: string;\n};\n\nexport type MousePointerSparklineEvent = MousePointerCellEvent & {\n sparkline: {\n pointData: any;\n };\n};\n\nexport interface TableEventHandlersEventArgumentMap {\n selected_cell: SelectedCellEvent;\n selected_clear: {};\n click_cell: MousePointerCellEvent;\n dblclick_cell: MousePointerCellEvent;\n mouseenter_table: { event?: MouseEvent | PointerEvent | TouchEvent };\n mouseleave_table: { event?: MouseEvent | PointerEvent | TouchEvent };\n mousedown_table: { event?: MouseEvent | PointerEvent | TouchEvent };\n mousemove_table: MousePointerCellEvent;\n mouseenter_cell: MousePointerCellEvent;\n mouseleave_cell: MousePointerCellEvent;\n mousemove_cell: MousePointerCellEvent;\n mousedown_cell: MousePointerCellEvent;\n mouseup_cell: MousePointerCellEvent;\n contextmenu_cell: MousePointerMultiCellEvent;\n contextmenu_canvas: MousePointerCellEvent;\n before_keydown: KeydownEvent;\n keydown: KeydownEvent;\n scroll: {\n event: WheelEvent;\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n scrollDirection: 'horizontal' | 'vertical';\n scrollRatioX?: number;\n scrollRatioY?: number;\n dx?: number;\n dy?: number;\n };\n can_scroll: {\n event: WheelEvent;\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n scrollDirection: 'horizontal' | 'vertical';\n scrollRatioX?: number;\n scrollRatioY?: number;\n dx?: number;\n dy?: number;\n };\n scroll_vertical_end: {\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n };\n scroll_horizontal_end: {\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n };\n resize_column: { col: number; colWidth: number };\n resize_column_end: { col: number; colWidths: number[] };\n resize_row: { row: number; rowHeight: number };\n resize_row_end: { row: number; rowHeight: number };\n change_header_position: {\n source: CellAddress;\n target: CellAddress;\n movingColumnOrRow?: 'column' | 'row';\n event: Event;\n };\n change_header_position_start: {\n col: number;\n row: number;\n x: number;\n y: number;\n backX: number;\n lineX: number;\n backY: number;\n lineY: number;\n event: Event;\n movingColumnOrRow?: 'column' | 'row';\n };\n changing_header_position: {\n col: number;\n row: number;\n x: number;\n y: number;\n backX: number;\n lineX: number;\n backY: number;\n lineY: number;\n event: Event;\n movingColumnOrRow?: 'column' | 'row';\n };\n change_header_position_fail: {\n source: CellAddress;\n target: CellAddress;\n movingColumnOrRow?: 'column' | 'row';\n event: Event;\n };\n sort_click: {\n field: FieldDef;\n order: SortOrder;\n event: Event;\n };\n after_sort: {\n field: FieldDef;\n order: SortOrder;\n event: Event;\n };\n freeze_click: { col: number; row: number; fields: FieldDef[]; colCount: number };\n dropdown_menu_click: DropDownMenuEventArgs;\n\n mouseover_chart_symbol: MousePointerSparklineEvent;\n\n drag_select_end: MousePointerMultiCellEvent;\n selected_changed: {\n col: number;\n row: number;\n ranges: CellRange[];\n };\n copy_data: { cellRange: CellRange[]; copyData: string; isCut: boolean };\n drillmenu_click: DrillMenuEventInfo;\n\n dropdown_icon_click: CellAddress & { event: Event };\n dropdown_menu_clear: CellAddress;\n\n show_menu: {\n x: number;\n y: number;\n col: number;\n row: number;\n type: 'dropDown' | 'contextmenu' | 'custom';\n };\n hide_menu: [];\n icon_click: {\n name: string;\n col: number;\n row: number;\n x: number;\n y: number;\n funcType?: IconFuncTypeEnum | string;\n icon: Icon;\n event: Event;\n };\n\n pivot_sort_click: {\n col: number;\n row: number;\n order: SortOrder;\n dimensionInfo: IDimensionInfo[];\n cellLocation: CellLocation;\n event: Event;\n };\n tree_hierarchy_state_change: {\n col: number;\n row: number;\n changeAll?: boolean;\n hierarchyState: HierarchyState;\n dimensionInfo?: IDimensionInfo[];\n /**整条数据-原始数据 */\n originData?: any;\n cellLocation?: CellLocation;\n };\n vchart_event_type: {\n eventName: string;\n col: number;\n row: number;\n chartEventArguments: any;\n };\n //datasource部分的事件\n change_order: [];\n source_length_update: number;\n\n legend_item_click: { model: any; value: any; event: PointerEvent };\n legend_item_hover: { model: any; value: any; event: PointerEvent };\n legend_item_unHover: { model: any; value: any; event: PointerEvent };\n legend_change: { model: any; value: any; event: PointerEvent };\n\n mouseenter_axis: MousePointerCellEvent & { axisPosition: 'left' | 'right' | 'top' | 'bottom' };\n mouseleave_axis: MousePointerCellEvent & { axisPosition: 'left' | 'right' | 'top' | 'bottom' };\n\n checkbox_state_change: MousePointerCellEvent & { checked: boolean };\n radio_state_change: MousePointerCellEvent & { radioIndexInCell: number | undefined };\n switch_state_change: MousePointerCellEvent & { checked: boolean };\n before_init: { options: BaseTableConstructorOptions; container: HTMLElement | null };\n before_update_option: { options: BaseTableConstructorOptions; container: HTMLElement | null };\n before_set_size: { width: number; height: number };\n after_render: null;\n initialized: null;\n updated: null;\n after_update_cell_content_width: {\n col: number;\n row: number;\n cellHeight: number;\n cellGroup: Group;\n padding: [number, number, number, number];\n textBaseline: CanvasTextBaseline;\n };\n\n after_update_select_border_height: {\n startRow: number;\n endRow: number;\n currentHeight: number;\n selectComp: { rect: any; fillhandle?: any; role: string };\n };\n\n change_cell_value: {\n col: number;\n row: number;\n recordIndex?: number | number[];\n field?: FieldDef;\n rawValue: string | number;\n currentValue: string | number;\n changedValue: string | number;\n };\n change_cell_values: {\n values: {\n col: number;\n row: number;\n recordIndex?: number | number[];\n field?: FieldDef;\n rawValue: string | number;\n currentValue: string | number;\n changedValue: string | number;\n }[];\n };\n\n mousedown_fill_handle: {};\n drag_fill_handle_end: { direction?: 'top' | 'bottom' | 'left' | 'right' };\n dblclick_fill_handle: {};\n\n empty_tip_click: {};\n empty_tip_dblclick: {};\n\n button_click: {\n col: number;\n row: number;\n event: Event;\n };\n before_cache_chart_image: { chartInstance: any };\n pasted_data: {\n col: number;\n row: number;\n pasteData: (string | number)[][];\n changedCellResults: boolean[][];\n };\n plugin_event: {\n event: any;\n plugin: any;\n pluginEventInfo: any;\n };\n\n add_record: {\n records: any[];\n recordIndex?: number | number[];\n recordCount: number;\n };\n\n delete_record: {\n recordIndexs: number[] | number[][];\n records: any[];\n rowIndexs: number[];\n deletedCount: number;\n };\n\n update_record: {\n records: any[];\n recordIndexs: (number | number[])[];\n updateCount: number;\n };\n add_column: {\n columnIndex: number;\n columnCount: number;\n columns: ColumnsDefine;\n };\n delete_column: {\n // deleteBeforeColumns: ColumnsDefine;\n deleteColIndexs: number[];\n columns: ColumnsDefine;\n };\n}\nexport interface DrillMenuEventInfo {\n dimensionKey: string | number;\n title: string;\n drillDown: boolean;\n drillUp: boolean;\n col: number;\n row: number;\n event: Event;\n}\nexport interface TableEventHandlersReturnMap {\n selected_cell: void;\n selected_clear: void;\n click_cell: void;\n dblclick_cell: void;\n mouseenter_table: void;\n mouseleave_table: void;\n mousedown_table: void;\n mousemove_table: void;\n mouseenter_cell: void;\n mouseleave_cell: void;\n // mouseover_cell: void;\n mouseout_cell: void;\n mousemove_cell: void;\n mousedown_cell: void;\n mouseup_cell: void;\n contextmenu_cell: void;\n contextmenu_canvas: void;\n before_keydown: void;\n keydown: void;\n scroll: void;\n can_scroll: void | boolean;\n focus_table: void;\n blur_table: void;\n resize_column: void;\n resize_column_end: void;\n resize_row: void;\n resize_row_end: void;\n change_header_position: void;\n change_header_position_start: void;\n changing_header_position: void;\n change_header_position_fail: void;\n sort_click: boolean;\n after_sort: void;\n freeze_click: void;\n dropdown_menu_click: void;\n\n mouseover_chart_symbol: void;\n drag_select_end: void;\n selected_changed: void;\n copy_data: void;\n drillmenu_click: void;\n\n dropdown_icon_click: void;\n dropdown_menu_clear: void;\n\n show_menu: void;\n hide_menu: void;\n icon_click: void;\n\n pivot_sort_click: void;\n\n tree_hierarchy_state_change: void;\n\n vchart_event_type: void;\n //datasource部分的事件\n change_order: void;\n source_length_update: void;\n legend_item_click: void;\n legend_item_hover: void;\n legend_item_unHover: void;\n legend_change: void;\n\n mouseenter_axis: void;\n mouseleave_axis: void;\n\n checkbox_state_change: void;\n radio_state_change: void;\n switch_state_change: void;\n before_init: void;\n before_update_option: void;\n before_set_size: void;\n after_render: void;\n initialized: void;\n updated: void;\n after_update_cell_content_width: void;\n\n after_update_select_border_height: void;\n change_cell_value: void;\n change_cell_values: void;\n mousedown_fill_handle: void;\n drag_fill_handle_end: void;\n dblclick_fill_handle: void;\n\n scroll_vertical_end: void;\n\n scroll_horizontal_end: void;\n\n empty_tip_click: void;\n empty_tip_dblclick: void;\n\n button_click: void;\n before_cache_chart_image: void;\n pasted_data: void;\n plugin_event: void;\n\n add_record: void;\n delete_record: void;\n update_record: void;\n add_column: void;\n delete_column: void;\n\n filter_menu_show: { col: number; row: number };\n filter_menu_hide: { col: number; row: number };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ts-types/events.ts"],"names":[],"mappings":"","file":"events.js","sourcesContent":["import type {\n CellAddress,\n CellRange,\n CellLocation,\n FieldDef,\n CellAddressWithBound,\n ListTableConstructorOptions,\n PivotTableConstructorOptions\n} from './table-engine';\nimport type { DropDownMenuEventArgs, MenuListItem, PivotInfo } from './menu';\n\nimport type { IDimensionInfo, MergeCellInfo, RectProps, SortOrder } from './common';\nimport type { IconFuncTypeEnum, CellInfo, HierarchyState, ColumnsDefine } from '.';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport type { FederatedPointerEvent, Group, IEventTarget } from './../vrender';\nimport type { BaseTableConstructorOptions, BaseTableAPI } from './base-table';\n\nexport type KeyboardEventListener = (e: KeyboardEvent) => void;\nexport type TableEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap> = (\n args: TableEventHandlersEventArgumentMap[TYPE]\n) => TableEventHandlersReturnMap[TYPE]; //AnyFunction;\nexport type EventListenerId = number;\n\nexport type SelectedCellEvent = CellAddress & {\n ranges: CellRange[];\n};\n\n// export type MouseCellEvent = CellAddress & {\n// event: MouseEvent | PointerEvent | TouchEvent;\n// };\n\nexport type MenuEvent = CellAddress & {\n dropDownMenu: MenuListItem[];\n pivotInfo: PivotInfo;\n};\n\nexport type TouchCellEvent = CellAddress & {\n event: TouchEvent;\n};\n\nexport type KeydownEvent = {\n keyCode: number;\n code: string;\n event: KeyboardEvent;\n stopCellMoving?: () => void;\n scaleRatio?: number;\n};\n\nexport type MousePointerCellEvent = CellAddressWithBound &\n CellInfo & {\n scaleRatio?: number;\n targetIcon?: { name: string; position: RectProps; funcType: string };\n event?: MouseEvent | PointerEvent | TouchEvent;\n federatedEvent?: FederatedPointerEvent;\n target: IEventTarget | undefined;\n\n mergeCellInfo?: MergeCellInfo;\n };\n// 多单元格的事件传出参数 需要将当前鼠标处的单元格的信息FocusedCellInfo也带着\nexport type MousePointerMultiCellEvent = MousePointerCellEvent & {\n cells: CellInfo[][];\n // menuKey?: string;\n};\n\nexport type MousePointerSparklineEvent = MousePointerCellEvent & {\n sparkline: {\n pointData: any;\n };\n};\n\nexport interface TableEventHandlersEventArgumentMap {\n selected_cell: SelectedCellEvent;\n selected_clear: {};\n click_cell: MousePointerCellEvent;\n dblclick_cell: MousePointerCellEvent;\n mouseenter_table: { event?: MouseEvent | PointerEvent | TouchEvent };\n mouseleave_table: { event?: MouseEvent | PointerEvent | TouchEvent };\n mousedown_table: { event?: MouseEvent | PointerEvent | TouchEvent };\n mousemove_table: MousePointerCellEvent;\n mouseenter_cell: MousePointerCellEvent;\n mouseleave_cell: MousePointerCellEvent;\n mousemove_cell: MousePointerCellEvent;\n mousedown_cell: MousePointerCellEvent;\n mouseup_cell: MousePointerCellEvent;\n contextmenu_cell: MousePointerMultiCellEvent;\n contextmenu_canvas: MousePointerCellEvent;\n before_keydown: KeydownEvent;\n keydown: KeydownEvent;\n scroll: {\n event: WheelEvent;\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n scrollDirection: 'horizontal' | 'vertical';\n scrollRatioX?: number;\n scrollRatioY?: number;\n dx?: number;\n dy?: number;\n };\n can_scroll: {\n event: WheelEvent;\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n scrollDirection: 'horizontal' | 'vertical';\n scrollRatioX?: number;\n scrollRatioY?: number;\n dx?: number;\n dy?: number;\n };\n scroll_vertical_end: {\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n };\n scroll_horizontal_end: {\n scrollLeft: number;\n scrollTop: number;\n scrollWidth: number;\n scrollHeight: number;\n viewWidth: number;\n viewHeight: number;\n };\n resize_column: { col: number; colWidth: number };\n resize_column_end: { col: number; colWidths: number[] };\n resize_row: { row: number; rowHeight: number };\n resize_row_end: { row: number; rowHeight: number };\n change_header_position: {\n source: CellAddress;\n target: CellAddress;\n movingColumnOrRow?: 'column' | 'row';\n event: Event;\n };\n change_header_position_start: {\n col: number;\n row: number;\n x: number;\n y: number;\n backX: number;\n lineX: number;\n backY: number;\n lineY: number;\n event: Event;\n movingColumnOrRow?: 'column' | 'row';\n };\n changing_header_position: {\n col: number;\n row: number;\n x: number;\n y: number;\n backX: number;\n lineX: number;\n backY: number;\n lineY: number;\n event: Event;\n movingColumnOrRow?: 'column' | 'row';\n };\n change_header_position_fail: {\n source: CellAddress;\n target: CellAddress;\n movingColumnOrRow?: 'column' | 'row';\n event: Event;\n };\n sort_click: {\n field: FieldDef;\n order: SortOrder;\n event: Event;\n };\n after_sort: {\n field: FieldDef;\n order: SortOrder;\n event: Event;\n };\n freeze_click: { col: number; row: number; fields: FieldDef[]; colCount: number };\n dropdown_menu_click: DropDownMenuEventArgs;\n\n mouseover_chart_symbol: MousePointerSparklineEvent;\n\n drag_select_end: MousePointerMultiCellEvent;\n selected_changed: {\n col: number;\n row: number;\n ranges: CellRange[];\n };\n copy_data: { cellRange: CellRange[]; copyData: string; isCut: boolean };\n drillmenu_click: DrillMenuEventInfo;\n\n dropdown_icon_click: CellAddress & { event: Event };\n dropdown_menu_clear: CellAddress;\n\n show_menu: {\n x: number;\n y: number;\n col: number;\n row: number;\n type: 'dropDown' | 'contextmenu' | 'custom';\n };\n hide_menu: [];\n icon_click: {\n name: string;\n col: number;\n row: number;\n x: number;\n y: number;\n funcType?: IconFuncTypeEnum | string;\n icon: Icon;\n event: Event;\n };\n\n pivot_sort_click: {\n col: number;\n row: number;\n order: SortOrder;\n dimensionInfo: IDimensionInfo[];\n cellLocation: CellLocation;\n event: Event;\n };\n tree_hierarchy_state_change: {\n col: number;\n row: number;\n changeAll?: boolean;\n hierarchyState: HierarchyState;\n dimensionInfo?: IDimensionInfo[];\n /**整条数据-原始数据 */\n originData?: any;\n cellLocation?: CellLocation;\n };\n vchart_event_type: {\n eventName: string;\n col: number;\n row: number;\n chartEventArguments: any;\n };\n //datasource部分的事件\n change_order: [];\n source_length_update: number;\n\n legend_item_click: { model: any; value: any; event: PointerEvent };\n legend_item_hover: { model: any; value: any; event: PointerEvent };\n legend_item_unHover: { model: any; value: any; event: PointerEvent };\n legend_change: { model: any; value: any; event: PointerEvent };\n\n mouseenter_axis: MousePointerCellEvent & { axisPosition: 'left' | 'right' | 'top' | 'bottom' };\n mouseleave_axis: MousePointerCellEvent & { axisPosition: 'left' | 'right' | 'top' | 'bottom' };\n\n checkbox_state_change: MousePointerCellEvent & { checked: boolean };\n radio_state_change: MousePointerCellEvent & { radioIndexInCell: number | undefined };\n switch_state_change: MousePointerCellEvent & { checked: boolean };\n before_init: { options: BaseTableConstructorOptions; container: HTMLElement | null };\n before_update_option: { options: BaseTableConstructorOptions; container: HTMLElement | null };\n before_set_size: { width: number; height: number };\n after_render: null;\n initialized: null;\n updated: null;\n after_update_cell_content_width: {\n col: number;\n row: number;\n cellHeight: number;\n cellGroup: Group;\n padding: [number, number, number, number];\n textBaseline: CanvasTextBaseline;\n };\n\n after_update_select_border_height: {\n startRow: number;\n endRow: number;\n currentHeight: number;\n selectComp: { rect: any; fillhandle?: any; role: string };\n };\n\n change_cell_value: {\n col: number;\n row: number;\n rawValue: string | number;\n currentValue: string | number;\n changedValue: string | number;\n };\n\n mousedown_fill_handle: {};\n drag_fill_handle_end: { direction?: 'top' | 'bottom' | 'left' | 'right' };\n dblclick_fill_handle: {};\n\n empty_tip_click: {};\n empty_tip_dblclick: {};\n\n button_click: {\n col: number;\n row: number;\n event: Event;\n };\n before_cache_chart_image: { chartInstance: any };\n pasted_data: {\n col: number;\n row: number;\n pasteData: (string | number)[][];\n changedCellResults: boolean[][];\n };\n plugin_event: {\n event: any;\n plugin: any;\n pluginEventInfo: any;\n };\n\n add_record: {\n records: any[];\n recordIndex?: number | number[];\n recordCount: number;\n };\n\n delete_record: {\n recordIndexs: number[] | number[][];\n rowIndexs: number[];\n deletedCount: number;\n };\n\n update_record: {\n records: any[];\n recordIndexs: (number | number[])[];\n updateCount: number;\n };\n add_column: {\n columnIndex: number;\n columnCount: number;\n columns: ColumnsDefine;\n };\n delete_column: {\n // deleteBeforeColumns: ColumnsDefine;\n deleteColIndexs: number[];\n columns: ColumnsDefine;\n };\n}\nexport interface DrillMenuEventInfo {\n dimensionKey: string | number;\n title: string;\n drillDown: boolean;\n drillUp: boolean;\n col: number;\n row: number;\n event: Event;\n}\nexport interface TableEventHandlersReturnMap {\n selected_cell: void;\n selected_clear: void;\n click_cell: void;\n dblclick_cell: void;\n mouseenter_table: void;\n mouseleave_table: void;\n mousedown_table: void;\n mousemove_table: void;\n mouseenter_cell: void;\n mouseleave_cell: void;\n // mouseover_cell: void;\n mouseout_cell: void;\n mousemove_cell: void;\n mousedown_cell: void;\n mouseup_cell: void;\n contextmenu_cell: void;\n contextmenu_canvas: void;\n before_keydown: void;\n keydown: void;\n scroll: void;\n can_scroll: void | boolean;\n focus_table: void;\n blur_table: void;\n resize_column: void;\n resize_column_end: void;\n resize_row: void;\n resize_row_end: void;\n change_header_position: void;\n change_header_position_start: void;\n changing_header_position: void;\n change_header_position_fail: void;\n sort_click: boolean;\n after_sort: void;\n freeze_click: void;\n dropdown_menu_click: void;\n\n mouseover_chart_symbol: void;\n drag_select_end: void;\n selected_changed: void;\n copy_data: void;\n drillmenu_click: void;\n\n dropdown_icon_click: void;\n dropdown_menu_clear: void;\n\n show_menu: void;\n hide_menu: void;\n icon_click: void;\n\n pivot_sort_click: void;\n\n tree_hierarchy_state_change: void;\n\n vchart_event_type: void;\n //datasource部分的事件\n change_order: void;\n source_length_update: void;\n legend_item_click: void;\n legend_item_hover: void;\n legend_item_unHover: void;\n legend_change: void;\n\n mouseenter_axis: void;\n mouseleave_axis: void;\n\n checkbox_state_change: void;\n radio_state_change: void;\n switch_state_change: void;\n before_init: void;\n before_update_option: void;\n before_set_size: void;\n after_render: void;\n initialized: void;\n updated: void;\n after_update_cell_content_width: void;\n\n after_update_select_border_height: void;\n change_cell_value: void;\n mousedown_fill_handle: void;\n drag_fill_handle_end: void;\n dblclick_fill_handle: void;\n\n scroll_vertical_end: void;\n\n scroll_horizontal_end: void;\n\n empty_tip_click: void;\n empty_tip_dblclick: void;\n\n button_click: void;\n before_cache_chart_image: void;\n pasted_data: void;\n plugin_event: void;\n\n add_record: void;\n delete_record: void;\n update_record: void;\n add_column: void;\n delete_column: void;\n\n filter_menu_show: { col: number; row: number };\n filter_menu_hide: { col: number; row: number };\n}\n"]}
|