k-vtable 1.0.13 → 1.0.15
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 +0 -4
- package/cjs/ListTable.js +11 -18
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotChart.js +6 -4
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/PivotTable.d.ts +0 -8
- package/cjs/PivotTable.js +4 -32
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/body-helper/style.js +2 -1
- package/cjs/components/legend/discrete-legend/discrete-legend.js +6 -4
- package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/cjs/components/menu/dom/MenuHandler.js +42 -4
- package/cjs/components/menu/dom/MenuHandler.js.map +1 -1
- package/cjs/components/menu/dom/logic/MenuElement.js +1 -0
- package/cjs/components/menu/dom/logic/MenuElement.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +3 -1
- package/cjs/core/BaseTable.js +37 -7
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/FouseInput.js +1 -2
- package/cjs/core/TABLE_EVENT_TYPE.d.ts +1 -0
- package/cjs/core/TABLE_EVENT_TYPE.js +1 -0
- package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/cjs/data/CachedDataSource.js +1 -1
- package/cjs/data/CachedDataSource.js.map +1 -1
- package/cjs/data/DataSource.d.ts +1 -1
- package/cjs/data/DataSource.js +11 -12
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/event/event.js +16 -5
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/container-dom.js.map +1 -1
- package/cjs/event/listener/table-group.js +33 -21
- package/cjs/event/listener/table-group.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 +5 -5
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/layout/simple-header-layout.js +1 -1
- package/cjs/layout/simple-header-layout.js.map +1 -1
- package/cjs/layout/tree-helper.js +2 -2
- package/cjs/layout/tree-helper.js.map +1 -1
- package/cjs/scenegraph/component/table-component.js +12 -11
- package/cjs/scenegraph/component/table-component.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/column-helper.js +2 -2
- package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
- package/cjs/scenegraph/icon/icon-update.js +1 -1
- package/cjs/scenegraph/icon/icon-update.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +47 -2
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/layout/frozen-react.js +3 -5
- package/cjs/scenegraph/layout/frozen-react.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +2 -1
- package/cjs/scenegraph/scenegraph.js +19 -3
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/select/update-select-border.js +33 -15
- package/cjs/scenegraph/select/update-select-border.js.map +1 -1
- package/cjs/scenegraph/utils/text-icon-layout.js +1 -0
- package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
- package/cjs/state/resize/update-resize-column.js +1 -1
- package/cjs/state/resize/update-resize-column.js.map +1 -1
- package/cjs/state/resize/update-resize-row.js +1 -1
- package/cjs/state/resize/update-resize-row.js.map +1 -1
- package/cjs/themes/theme-define.js +4 -0
- package/cjs/themes/theme-define.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +12 -0
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/events.d.ts +2 -0
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +20 -13
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/ts-types/theme.d.ts +1 -0
- package/cjs/ts-types/theme.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +499 -223
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +0 -4
- package/es/ListTable.js +11 -18
- package/es/ListTable.js.map +1 -1
- package/es/PivotChart.js +6 -4
- package/es/PivotChart.js.map +1 -1
- package/es/PivotTable.d.ts +0 -8
- package/es/PivotTable.js +4 -32
- package/es/PivotTable.js.map +1 -1
- package/es/body-helper/style.js +2 -1
- package/es/components/legend/discrete-legend/discrete-legend.js +6 -4
- package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/es/components/menu/dom/MenuHandler.js +42 -4
- package/es/components/menu/dom/MenuHandler.js.map +1 -1
- package/es/components/menu/dom/logic/MenuElement.js +1 -0
- package/es/components/menu/dom/logic/MenuElement.js.map +1 -1
- package/es/core/BaseTable.d.ts +3 -1
- package/es/core/BaseTable.js +37 -7
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/FouseInput.js +1 -2
- package/es/core/TABLE_EVENT_TYPE.d.ts +1 -0
- package/es/core/TABLE_EVENT_TYPE.js +1 -0
- package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/es/data/CachedDataSource.js +1 -1
- package/es/data/CachedDataSource.js.map +1 -1
- package/es/data/DataSource.d.ts +1 -1
- package/es/data/DataSource.js +11 -12
- package/es/data/DataSource.js.map +1 -1
- package/es/event/event.js +16 -5
- package/es/event/event.js.map +1 -1
- package/es/event/listener/container-dom.js.map +1 -1
- package/es/event/listener/table-group.js +32 -20
- package/es/event/listener/table-group.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 +5 -5
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/layout/simple-header-layout.js +1 -1
- package/es/layout/simple-header-layout.js.map +1 -1
- package/es/layout/tree-helper.js +2 -2
- package/es/layout/tree-helper.js.map +1 -1
- package/es/scenegraph/component/table-component.js +12 -11
- package/es/scenegraph/component/table-component.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.js +1 -1
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/column-helper.js +2 -2
- package/es/scenegraph/group-creater/column-helper.js.map +1 -1
- package/es/scenegraph/icon/icon-update.js +1 -1
- package/es/scenegraph/icon/icon-update.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.js +47 -2
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/layout/frozen-react.js +3 -5
- package/es/scenegraph/layout/frozen-react.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +2 -1
- package/es/scenegraph/scenegraph.js +23 -3
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/select/update-select-border.js +33 -15
- package/es/scenegraph/select/update-select-border.js.map +1 -1
- package/es/scenegraph/utils/text-icon-layout.js +1 -0
- package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
- package/es/state/resize/update-resize-column.js +1 -1
- package/es/state/resize/update-resize-column.js.map +1 -1
- package/es/state/resize/update-resize-row.js +1 -1
- package/es/state/resize/update-resize-row.js.map +1 -1
- package/es/themes/theme-define.js +4 -0
- package/es/themes/theme-define.js.map +1 -1
- package/es/ts-types/base-table.d.ts +12 -0
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/events.d.ts +2 -0
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +20 -13
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/ts-types/theme.d.ts +1 -0
- package/es/ts-types/theme.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +7 -4
- package/cjs/event/self-event-listener/base-table/right-button-click.d.ts +0 -2
- package/cjs/event/self-event-listener/base-table/right-button-click.js +0 -25
- package/cjs/event/self-event-listener/base-table/right-button-click.js.map +0 -1
- package/es/event/self-event-listener/base-table/right-button-click.d.ts +0 -2
- package/es/event/self-event-listener/base-table/right-button-click.js +0 -17
- package/es/event/self-event-listener/base-table/right-button-click.js.map +0 -1
|
@@ -7,16 +7,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const get_cell_merge_1 = require("../utils/get-cell-merge");
|
|
8
8
|
|
|
9
9
|
function updateAllSelectComponent(scene) {
|
|
10
|
+
const size0 = scene.customSelectedRangeComponents.size;
|
|
11
|
+
let index0 = 0;
|
|
10
12
|
scene.customSelectedRangeComponents.forEach(((selectComp, key) => {
|
|
11
|
-
updateComponent(selectComp, key, scene
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
updateComponent(selectComp, key, scene, {
|
|
14
|
+
size: size0,
|
|
15
|
+
index: ++index0
|
|
16
|
+
});
|
|
17
|
+
}));
|
|
18
|
+
const size1 = scene.selectingRangeComponents.size;
|
|
19
|
+
let index1 = 0;
|
|
20
|
+
scene.selectingRangeComponents.forEach(((selectComp, key) => {
|
|
21
|
+
updateComponent(selectComp, key, scene, {
|
|
22
|
+
size: size1,
|
|
23
|
+
index: ++index1
|
|
24
|
+
});
|
|
25
|
+
}));
|
|
26
|
+
const size2 = scene.selectedRangeComponents.size;
|
|
27
|
+
let index2 = 0;
|
|
28
|
+
scene.selectedRangeComponents.forEach(((selectComp, key) => {
|
|
29
|
+
updateComponent(selectComp, key, scene, {
|
|
30
|
+
size: size2,
|
|
31
|
+
index: ++index2
|
|
32
|
+
});
|
|
16
33
|
}));
|
|
17
34
|
}
|
|
18
35
|
|
|
19
|
-
function updateComponent(selectComp, key, scene) {
|
|
36
|
+
function updateComponent(selectComp, key, scene, other) {
|
|
20
37
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
21
38
|
const table = scene.table, [startColStr, startRowStr, endColStr, endRowStr] = key.split("-"), startCol = parseInt(startColStr, 10), startRow = parseInt(startRowStr, 10), endCol = parseInt(endColStr, 10), endRow = parseInt(endRowStr, 10);
|
|
22
39
|
let visibleCellRange, computeRectCellRangeStartCol = startCol, computeRectCellRangeStartRow = startRow, computeRectCellRangeEndCol = endCol, computeRectCellRangeEndRow = endRow;
|
|
@@ -50,21 +67,22 @@ function updateComponent(selectComp, key, scene) {
|
|
|
50
67
|
}
|
|
51
68
|
const colsWidth = table.getColsWidth(computeRectCellRangeStartCol, computeRectCellRangeEndCol), rowsHeight = table.getRowsHeight(computeRectCellRangeStartRow, computeRectCellRangeEndRow), firstCellBound = scene.highPerformanceGetCell(computeRectCellRangeStartCol, computeRectCellRangeStartRow).globalAABBBounds;
|
|
52
69
|
if (selectComp.rect.setAttributes({
|
|
53
|
-
x: firstCellBound.x1 - scene.tableGroup.attribute.x
|
|
54
|
-
y: firstCellBound.y1 - scene.tableGroup.attribute.y
|
|
55
|
-
width: colsWidth
|
|
56
|
-
height: rowsHeight
|
|
70
|
+
x: firstCellBound.x1 - scene.tableGroup.attribute.x,
|
|
71
|
+
y: firstCellBound.y1 - scene.tableGroup.attribute.y,
|
|
72
|
+
width: colsWidth,
|
|
73
|
+
height: rowsHeight,
|
|
57
74
|
visible: !0,
|
|
58
|
-
cornerRadius: 2
|
|
75
|
+
cornerRadius: other ? 1 === other.size ? 2 : 1 === other.index ? [ 2, 0, 0, 2 ] : other.index === other.size ? [ 0, 2, 2, 0 ] : 0 : 0
|
|
59
76
|
}), selectComp.fillhandle) {
|
|
60
77
|
const fillHandle = null === (_a = scene.table.options.excelOptions) || void 0 === _a ? void 0 : _a.fillHandle;
|
|
61
|
-
let lastCellBound, visible = !0;
|
|
78
|
+
let lastCellBound, handlerX, visible = !0;
|
|
62
79
|
"function" == typeof fillHandle && (visible = fillHandle({
|
|
63
80
|
selectRanges: scene.table.stateManager.select.ranges,
|
|
64
81
|
table: scene.table
|
|
65
|
-
})),
|
|
66
|
-
|
|
67
|
-
|
|
82
|
+
})), endCol < table.colCount - 1 ? (lastCellBound = scene.highPerformanceGetCell(endCol, endRow).globalAABBBounds,
|
|
83
|
+
handlerX = lastCellBound.x2 - scene.tableGroup.attribute.x - 3) : 0 === startCol ? (lastCellBound = scene.highPerformanceGetCell(0, endRow).globalAABBBounds,
|
|
84
|
+
handlerX = lastCellBound.x1 - scene.tableGroup.attribute.x) : (lastCellBound = scene.highPerformanceGetCell(startCol - 1, endRow).globalAABBBounds,
|
|
85
|
+
handlerX = lastCellBound.x2 - scene.tableGroup.attribute.x - 3), lastCellBound = endRow < table.rowCount - 1 ? scene.highPerformanceGetCell(endCol, endRow).globalAABBBounds : scene.highPerformanceGetCell(endCol, startRow - 1).globalAABBBounds;
|
|
68
86
|
const handlerY = lastCellBound.y2 - scene.tableGroup.attribute.y - 3;
|
|
69
87
|
null === (_b = selectComp.fillhandle) || void 0 === _b || _b.setAttributes({
|
|
70
88
|
x: handlerX,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/select/update-select-border.ts"],"names":[],"mappings":"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","file":"update-select-border.js","sourcesContent":["import { type IRect } from './../../vrender';\nimport type { Scenegraph } from '../scenegraph';\nimport type { CellRange, CellSubLocation } from '../../ts-types';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\n\nexport function updateAllSelectComponent(scene: Scenegraph) {\n scene.customSelectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n });\n\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n }\n );\n scene.selectedRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n }\n );\n}\n\nfunction updateComponent(\n selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation },\n key: string,\n scene: Scenegraph\n) {\n const table = scene.table;\n const [startColStr, startRowStr, endColStr, endRowStr] = key.split('-');\n const startCol = parseInt(startColStr, 10);\n const startRow = parseInt(startRowStr, 10);\n const endCol = parseInt(endColStr, 10);\n const endRow = parseInt(endRowStr, 10);\n // 下面为计算选中区域使用的行列值\n let computeRectCellRangeStartCol = startCol;\n let computeRectCellRangeStartRow = startRow;\n let computeRectCellRangeEndCol = endCol;\n let computeRectCellRangeEndRow = endRow;\n // 下面逻辑根据选中区域所属表格部分 来判断可视区域内容的选中单元格范围\n let visibleCellRange;\n switch (selectComp.role) {\n case 'rowHeader':\n visibleCellRange = table.getBodyVisibleRowRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'columnHeader':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'cornerHeader':\n break;\n case 'bottomFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'rightFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'rightTopCorner':\n break;\n case 'leftBottomCorner':\n break;\n case 'rightBottomCorner':\n break;\n default:\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n }\n // const cellRange = table.getCellRange(startCol, startRow);\n // const colsWidth = table.getColsWidth(cellRange.start.col, endCol);\n // const rowsHeight = table.getRowsHeight(cellRange.start.row, endRow);\n const colsWidth = table.getColsWidth(computeRectCellRangeStartCol, computeRectCellRangeEndCol);\n const rowsHeight = table.getRowsHeight(computeRectCellRangeStartRow, computeRectCellRangeEndRow);\n const firstCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeStartCol,\n computeRectCellRangeStartRow\n ).globalAABBBounds;\n\n selectComp.rect.setAttributes({\n x: firstCellBound.x1 - scene.tableGroup.attribute.x + 1, //坐标xy在下面的逻辑中会做适当调整\n y: firstCellBound.y1 - scene.tableGroup.attribute.y + 1,\n width: colsWidth - 2,\n height: rowsHeight - 2,\n visible: true,\n cornerRadius: 2\n });\n if (selectComp.fillhandle) {\n const fillHandle = scene.table.options.excelOptions?.fillHandle;\n let visible = true;\n if (typeof fillHandle === 'function') {\n visible = fillHandle({ selectRanges: scene.table.stateManager.select.ranges, table: scene.table });\n }\n //#region 计算填充柄小方块的位置\n\n let lastCellBound;\n //当选择区域没有到到最后一列时\n if (computeRectCellRangeEndCol < table.colCount - 1) {\n lastCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeEndCol,\n computeRectCellRangeEndRow\n ).globalAABBBounds;\n } else {\n // 最后一列\n lastCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeStartCol - 1,\n computeRectCellRangeEndRow\n ).globalAABBBounds;\n }\n const handlerX = lastCellBound.x2 - scene.tableGroup.attribute.x - 3;\n //当选择区域没有到到最后一行时\n if (computeRectCellRangeEndRow < table.rowCount - 1) {\n lastCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeEndCol,\n computeRectCellRangeEndRow\n ).globalAABBBounds;\n } else {\n // 最后一行\n lastCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeEndCol,\n computeRectCellRangeStartRow - 1\n ).globalAABBBounds;\n }\n const handlerY = lastCellBound.y2 - scene.tableGroup.attribute.y - 3;\n //#endregion\n\n selectComp.fillhandle?.setAttributes({\n x: handlerX, // 调整小方块位置\n y: handlerY, // 调整小方块位置\n width: 6,\n height: 6,\n visible\n });\n }\n\n //#region 判断是不是按着表头部分的选中框 因为绘制层级的原因 线宽会被遮住一半,因此需要动态调整层级\n let isNearRowHeader = table.frozenColCount ? startCol === table.frozenColCount : false;\n if (!isNearRowHeader && table.frozenColCount && table.scrollLeft > 0 && startCol >= table.frozenColCount) {\n const startColRelativePosition = table.getColsWidth(0, startCol - 1) - table.scrollLeft;\n if (startColRelativePosition < table.getFrozenColsWidth()) {\n isNearRowHeader = true;\n }\n }\n\n let isNearRightRowHeader = table.rightFrozenColCount\n ? table.rightFrozenColCount > 0 && endCol === table.colCount - table.rightFrozenColCount - 1\n : false;\n if (!isNearRightRowHeader && table.rightFrozenColCount && endCol < table.colCount - table.rightFrozenColCount) {\n const endColRelativePosition = table.getColsWidth(0, endCol) - table.scrollLeft;\n if (endColRelativePosition > table.tableNoFrameWidth - table.getRightFrozenColsWidth()) {\n isNearRightRowHeader = true;\n }\n }\n\n let isNearColHeader = table.frozenRowCount ? startRow === table.frozenRowCount : true;\n if (!isNearColHeader && table.frozenRowCount && table.scrollTop > 0 && startRow >= table.frozenRowCount) {\n const startRowRelativePosition = table.getRowsHeight(0, startRow - 1) - table.scrollTop;\n if (startRowRelativePosition < table.getFrozenRowsHeight()) {\n isNearColHeader = true;\n }\n }\n\n let isNearBottomColHeader = table.bottomFrozenRowCount\n ? endRow === table.rowCount - table.bottomFrozenRowCount - 1\n : false;\n if (!isNearBottomColHeader && table.bottomFrozenRowCount && endRow < table.rowCount - table.bottomFrozenRowCount) {\n const endRowRelativePosition = table.getRowsHeight(0, endRow) - table.scrollTop;\n if (endRowRelativePosition > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight()) {\n isNearBottomColHeader = true;\n }\n }\n\n const { dynamicUpdateSelectionSize } = table.theme.selectionStyle;\n if (\n (isNearRowHeader && (selectComp.rect.attribute.stroke[3] || dynamicUpdateSelectionSize)) ||\n (isNearRightRowHeader && (selectComp.rect.attribute.stroke[1] || dynamicUpdateSelectionSize)) ||\n (isNearColHeader && (selectComp.rect.attribute.stroke[0] || dynamicUpdateSelectionSize)) ||\n (isNearBottomColHeader && (selectComp.rect.attribute.stroke[2] || dynamicUpdateSelectionSize))\n ) {\n if (isNearRowHeader && selectComp.rect.attribute.stroke[3]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.leftBottomCornerGroup\n : scene.rowHeaderGroup\n );\n }\n\n if (isNearBottomColHeader && selectComp.rect.attribute.stroke[2]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightBottomCornerGroup\n : scene.bottomFrozenGroup\n );\n }\n\n if (isNearColHeader && selectComp.rect.attribute.stroke[0]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightTopCornerGroup\n : scene.colHeaderGroup\n );\n }\n if (isNearRightRowHeader && selectComp.rect.attribute.stroke[1]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.rightBottomCornerGroup\n : scene.rightFrozenGroup\n );\n }\n\n //#region 调整层级后 滚动情况下会出现绘制范围出界 如body的选中框 渲染在了rowheader上面,所有需要调整选中框rect的 边界\n if (\n selectComp.rect.attribute.x < table.getFrozenColsWidth() &&\n // selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rowHeaderGroup.attribute.width &&\n table.scrollLeft > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = selectComp.rect.attribute.width - (table.getFrozenColsWidth() - selectComp.rect.attribute.x);\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + (table.getFrozenColsWidth() - selectComp.rect.attribute.x),\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width > 0\n });\n }\n if (\n // selectComp.rect.attribute.x < scene.rightFrozenGroup.attribute.x &&\n table.getRightFrozenColsWidth() > 0 && // right冻结列存在的情况下\n scene.rightFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rightFrozenGroup.attribute.x &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = scene.rightFrozenGroup.attribute.x - selectComp.rect.attribute.x;\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x,\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width - colsWidth > 0\n });\n }\n if (\n selectComp.rect.attribute.y < scene.colHeaderGroup.attribute.height &&\n table.scrollTop > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height =\n selectComp.rect.attribute.height - (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y);\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y),\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height > 0\n });\n }\n if (\n scene.bottomFrozenGroup.attribute.width > 0 &&\n scene.bottomFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.y + selectComp.rect.attribute.height > scene.bottomFrozenGroup.attribute.y &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height = scene.bottomFrozenGroup.attribute.y - selectComp.rect.attribute.y;\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y,\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height - rowsHeight > 0\n });\n }\n //#endregion\n } else {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'body'\n ? scene.bodyGroup\n : selectComp.role === 'columnHeader'\n ? scene.colHeaderGroup\n : selectComp.role === 'rowHeader'\n ? scene.rowHeaderGroup\n : selectComp.role === 'cornerHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightTopCorner'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightFrozenGroup\n : selectComp.role === 'leftBottomCorner'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.bottomFrozenGroup\n : scene.rightBottomCornerGroup\n );\n }\n //#endregion\n\n //#region 处理边缘被截问题\n let diffSize = 0;\n if (typeof selectComp.rect.attribute.lineWidth === 'number') {\n diffSize = Math.ceil(selectComp.rect.attribute.lineWidth / 2);\n }\n if (endCol === table.colCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[1] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (startCol === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[3] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + diffSize,\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // x: selectComp.rect.attribute.x + diffSize,\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (endRow === table.rowCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[2] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n if (startRow === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[0] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + diffSize,\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // y: selectComp.rect.attribute.y + diffSize,\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n //#endregion\n}\n\nconst resetGroupCell = (table: any, col: number, row: number, mergeInfo: CellRange | false) => {\n if (mergeInfo) {\n const record = table.getRecordByRowCol(mergeInfo.start.col, mergeInfo.start.row);\n if (record && record.vtableMerge) {\n mergeInfo.start = {\n col,\n row\n };\n mergeInfo.end = {\n col,\n row\n };\n }\n }\n};\n\nexport function updateCellSelectBorder(\n scene: Scenegraph,\n selectRange: CellRange & { skipBodyMerge?: boolean },\n ifExtendSelectRange: boolean = true\n) {\n const table = scene.table;\n const newStartCol = selectRange.start.col;\n const newStartRow = selectRange.start.row;\n const newEndCol = selectRange.end.col;\n const newEndRow = selectRange.end.row;\n const skipBodyMerge = selectRange.skipBodyMerge;\n\n let startCol = Math.max(Math.min(newEndCol, newStartCol), 0);\n let startRow = Math.max(Math.min(newEndRow, newStartRow), 0);\n let endCol = Math.min(Math.max(newEndCol, newStartCol), table.colCount - 1);\n let endRow = Math.min(Math.max(newEndRow, newStartRow), table.rowCount - 1);\n //#region region 校验四周的单元格有没有合并的情况,如有则扩大范围\n const extendSelectRange = () => {\n let isExtend = false;\n for (let col = startCol; col <= endCol; col++) {\n if (col === startCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && mergeInfo.start.col < startCol) {\n startCol = mergeInfo.start.col;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && col === endCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && Math.min(mergeInfo.end.col, table.colCount - 1) > endCol) {\n endCol = mergeInfo.end.col;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n if (!isExtend) {\n for (let row = startRow; row <= endRow; row++) {\n if (row === startRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && mergeInfo.start.row < startRow) {\n startRow = mergeInfo.start.row;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && row === endRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && Math.min(mergeInfo.end.row, table.rowCount - 1) > endRow) {\n endRow = mergeInfo.end.row;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n }\n if (isExtend) {\n extendSelectRange();\n }\n };\n if (ifExtendSelectRange) {\n extendSelectRange();\n if (selectRange.start.col > selectRange.end.col) {\n selectRange.start.col = Math.max(startCol, endCol);\n selectRange.end.col = Math.min(startCol, endCol);\n } else {\n selectRange.start.col = Math.min(startCol, endCol);\n selectRange.end.col = Math.max(startCol, endCol);\n }\n if (selectRange.start.row > selectRange.end.row) {\n selectRange.start.row = Math.max(startRow, endRow);\n selectRange.end.row = Math.min(startRow, endRow);\n } else {\n selectRange.start.row = Math.min(startRow, endRow);\n selectRange.end.row = Math.max(startRow, endRow);\n }\n }\n //#endregion\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.delete();\n selectComp.fillhandle?.delete();\n }\n );\n scene.selectingRangeComponents = new Map();\n\n let needRowHeader = false;\n let needRightRowHeader = false; // 右侧冻结\n let needColumnHeader = false;\n let needBottomColumnHeader = false; // 底部冻结\n let needBody = false;\n let needCornerHeader = false;\n let needRightTopCornerHeader = false;\n let needRightBottomCornerHeader = false;\n let needLeftBottomCornerHeader = false;\n if (startCol <= table.frozenColCount - 1 && startRow <= table.frozenRowCount - 1) {\n needCornerHeader = true;\n }\n if (endCol >= table.colCount - table.rightFrozenColCount && startRow <= table.frozenRowCount - 1) {\n needRightTopCornerHeader = true;\n }\n\n if (startCol <= table.frozenColCount - 1 && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needLeftBottomCornerHeader = true;\n }\n\n if (endCol >= table.colCount - table.rightFrozenColCount && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needRightBottomCornerHeader = true;\n }\n\n if (\n startCol <= table.frozenColCount - 1 &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRowHeader = true;\n }\n if (\n endCol >= table.colCount - table.rightFrozenColCount &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRightRowHeader = true;\n }\n\n if (\n startRow <= table.frozenRowCount - 1 &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needColumnHeader = true;\n }\n if (\n endRow >= table.rowCount - table.bottomFrozenRowCount &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needBottomColumnHeader = true;\n }\n if (\n startCol <= table.colCount - table.rightFrozenColCount - 1 &&\n endCol >= table.frozenColCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1 &&\n endRow >= table.frozenRowCount\n ) {\n needBody = true;\n }\n\n // TODO 可以尝试不拆分三个表头和body【前提是theme中合并配置】 用一个SelectBorder 需要结合clip,并动态设置border的范围【依据区域范围 已经是否跨表头及body】\n if (needCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needColumnHeader, !needRowHeader, true];\n scene.createCellSelectBorder(\n startCol,\n startRow,\n cornerEndCol,\n cornerEndRow,\n 'cornerHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightTopCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, true, !needRightRowHeader, !needColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n startRow,\n endCol,\n cornerEndRow,\n 'rightTopCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n\n if (needLeftBottomCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRowHeader, !needBottomColumnHeader, true, true];\n scene.createCellSelectBorder(\n startCol,\n cornerStartRow,\n cornerEndCol,\n endRow,\n 'leftBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightBottomCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRightRowHeader, true, true, !needBottomColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n cornerStartRow,\n endCol,\n endRow,\n 'rightBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needRightTopCornerHeader, !needBody, !needCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n startRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'columnHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBottomColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needBody, !needRightBottomCornerHeader, true, !needLeftBottomCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n endRow,\n 'bottomFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderEndCol = Math.min(endCol, table.frozenColCount - 1);\n const strokeArray = [!needCornerHeader, !needBody, !needLeftBottomCornerHeader, true];\n scene.createCellSelectBorder(\n startCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'rowHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const strokeArray = [!needRightTopCornerHeader, true, !needRightBottomCornerHeader, !needBody];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n endCol,\n columnHeaderEndRow,\n 'rightFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBody) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const strokeArray = [!needColumnHeader, !needRightRowHeader, !needBottomColumnHeader, !needRowHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'body',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n}\n\nexport function hideCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n}\n\nexport function restoreCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/select/update-select-border.ts"],"names":[],"mappings":"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","file":"update-select-border.js","sourcesContent":["import { type IRect } from './../../vrender';\nimport type { Scenegraph } from '../scenegraph';\nimport type { CellRange, CellSubLocation } from '../../ts-types';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\n\nexport function updateAllSelectComponent(scene: Scenegraph) {\n const size0 = scene.customSelectedRangeComponents.size;\n let index0 = 0;\n scene.customSelectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene, {\n size: size0,\n index: ++index0\n });\n });\n\n const size1 = scene.selectingRangeComponents.size;\n let index1 = 0;\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene, {\n size: size1,\n index: ++index1\n });\n }\n );\n\n const size2 = scene.selectedRangeComponents.size;\n let index2 = 0;\n scene.selectedRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene, {\n size: size2,\n index: ++index2\n });\n }\n );\n}\n\nfunction updateComponent(\n selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation },\n key: string,\n scene: Scenegraph,\n other: {\n size: number;\n index: number;\n }\n) {\n const table = scene.table;\n const [startColStr, startRowStr, endColStr, endRowStr] = key.split('-');\n const startCol = parseInt(startColStr, 10);\n const startRow = parseInt(startRowStr, 10);\n const endCol = parseInt(endColStr, 10);\n const endRow = parseInt(endRowStr, 10);\n // 下面为计算选中区域使用的行列值\n let computeRectCellRangeStartCol = startCol;\n let computeRectCellRangeStartRow = startRow;\n let computeRectCellRangeEndCol = endCol;\n let computeRectCellRangeEndRow = endRow;\n // 下面逻辑根据选中区域所属表格部分 来判断可视区域内容的选中单元格范围\n let visibleCellRange;\n switch (selectComp.role) {\n case 'rowHeader':\n visibleCellRange = table.getBodyVisibleRowRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'columnHeader':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'cornerHeader':\n break;\n case 'bottomFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'rightFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'rightTopCorner':\n break;\n case 'leftBottomCorner':\n break;\n case 'rightBottomCorner':\n break;\n default:\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n }\n // const cellRange = table.getCellRange(startCol, startRow);\n // const colsWidth = table.getColsWidth(cellRange.start.col, endCol);\n // const rowsHeight = table.getRowsHeight(cellRange.start.row, endRow);\n const colsWidth = table.getColsWidth(computeRectCellRangeStartCol, computeRectCellRangeEndCol);\n const rowsHeight = table.getRowsHeight(computeRectCellRangeStartRow, computeRectCellRangeEndRow);\n const firstCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeStartCol,\n computeRectCellRangeStartRow\n ).globalAABBBounds;\n\n selectComp.rect.setAttributes({\n x: firstCellBound.x1 - scene.tableGroup.attribute.x, //坐标xy在下面的逻辑中会做适当调整\n y: firstCellBound.y1 - scene.tableGroup.attribute.y,\n width: colsWidth,\n height: rowsHeight,\n visible: true,\n cornerRadius: other\n ? other.size === 1\n ? 2\n : other.index === 1\n ? [2, 0, 0, 2]\n : other.index === other.size\n ? [0, 2, 2, 0]\n : 0\n : 0\n });\n if (selectComp.fillhandle) {\n const fillHandle = scene.table.options.excelOptions?.fillHandle;\n let visible = true;\n if (typeof fillHandle === 'function') {\n visible = fillHandle({ selectRanges: scene.table.stateManager.select.ranges, table: scene.table });\n }\n //#region 计算填充柄小方块的位置\n\n let lastCellBound;\n let handlerX;\n //当选择区域没有到到最后一列时\n if (endCol < table.colCount - 1) {\n lastCellBound = scene.highPerformanceGetCell(endCol, endRow).globalAABBBounds;\n handlerX = lastCellBound.x2 - scene.tableGroup.attribute.x - 3;\n } else {\n // 最后一列\n // computeRectCellRangeStartCol 而且是第一列时\n if (startCol === 0) {\n //解决issue #4376 但还是有问题当存在冻结的时候。以及需要处理类似情况下面逻辑最后一行的情况\n lastCellBound = scene.highPerformanceGetCell(0, endRow).globalAABBBounds;\n handlerX = lastCellBound.x1 - scene.tableGroup.attribute.x;\n } else {\n lastCellBound = scene.highPerformanceGetCell(startCol - 1, endRow).globalAABBBounds;\n handlerX = lastCellBound.x2 - scene.tableGroup.attribute.x - 3;\n }\n }\n // const handlerX = lastCellBound.x2 - scene.tableGroup.attribute.x - 3;\n //当选择区域没有到到最后一行时\n if (endRow < table.rowCount - 1) {\n lastCellBound = scene.highPerformanceGetCell(endCol, endRow).globalAABBBounds;\n } else {\n // 最后一行\n lastCellBound = scene.highPerformanceGetCell(endCol, startRow - 1).globalAABBBounds;\n }\n const handlerY = lastCellBound.y2 - scene.tableGroup.attribute.y - 3;\n //#endregion\n\n selectComp.fillhandle?.setAttributes({\n x: handlerX, // 调整小方块位置\n y: handlerY, // 调整小方块位置\n width: 6,\n height: 6,\n visible\n });\n }\n\n //#region 判断是不是按着表头部分的选中框 因为绘制层级的原因 线宽会被遮住一半,因此需要动态调整层级\n let isNearRowHeader = table.frozenColCount ? startCol === table.frozenColCount : false;\n if (!isNearRowHeader && table.frozenColCount && table.scrollLeft > 0 && startCol >= table.frozenColCount) {\n const startColRelativePosition = table.getColsWidth(0, startCol - 1) - table.scrollLeft;\n if (startColRelativePosition < table.getFrozenColsWidth()) {\n isNearRowHeader = true;\n }\n }\n\n let isNearRightRowHeader = table.rightFrozenColCount\n ? table.rightFrozenColCount > 0 && endCol === table.colCount - table.rightFrozenColCount - 1\n : false;\n if (!isNearRightRowHeader && table.rightFrozenColCount && endCol < table.colCount - table.rightFrozenColCount) {\n const endColRelativePosition = table.getColsWidth(0, endCol) - table.scrollLeft;\n if (endColRelativePosition > table.tableNoFrameWidth - table.getRightFrozenColsWidth()) {\n isNearRightRowHeader = true;\n }\n }\n\n let isNearColHeader = table.frozenRowCount ? startRow === table.frozenRowCount : true;\n if (!isNearColHeader && table.frozenRowCount && table.scrollTop > 0 && startRow >= table.frozenRowCount) {\n const startRowRelativePosition = table.getRowsHeight(0, startRow - 1) - table.scrollTop;\n if (startRowRelativePosition < table.getFrozenRowsHeight()) {\n isNearColHeader = true;\n }\n }\n\n let isNearBottomColHeader = table.bottomFrozenRowCount\n ? endRow === table.rowCount - table.bottomFrozenRowCount - 1\n : false;\n if (!isNearBottomColHeader && table.bottomFrozenRowCount && endRow < table.rowCount - table.bottomFrozenRowCount) {\n const endRowRelativePosition = table.getRowsHeight(0, endRow) - table.scrollTop;\n if (endRowRelativePosition > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight()) {\n isNearBottomColHeader = true;\n }\n }\n\n const { dynamicUpdateSelectionSize } = table.theme.selectionStyle;\n if (\n (isNearRowHeader && (selectComp.rect.attribute.stroke[3] || dynamicUpdateSelectionSize)) ||\n (isNearRightRowHeader && (selectComp.rect.attribute.stroke[1] || dynamicUpdateSelectionSize)) ||\n (isNearColHeader && (selectComp.rect.attribute.stroke[0] || dynamicUpdateSelectionSize)) ||\n (isNearBottomColHeader && (selectComp.rect.attribute.stroke[2] || dynamicUpdateSelectionSize))\n ) {\n if (isNearRowHeader && selectComp.rect.attribute.stroke[3]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.leftBottomCornerGroup\n : scene.rowHeaderGroup\n );\n }\n\n if (isNearBottomColHeader && selectComp.rect.attribute.stroke[2]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightBottomCornerGroup\n : scene.bottomFrozenGroup\n );\n }\n\n if (isNearColHeader && selectComp.rect.attribute.stroke[0]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightTopCornerGroup\n : scene.colHeaderGroup\n );\n }\n if (isNearRightRowHeader && selectComp.rect.attribute.stroke[1]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.rightBottomCornerGroup\n : scene.rightFrozenGroup\n );\n }\n\n //#region 调整层级后 滚动情况下会出现绘制范围出界 如body的选中框 渲染在了rowheader上面,所有需要调整选中框rect的 边界\n if (\n selectComp.rect.attribute.x < table.getFrozenColsWidth() &&\n // selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rowHeaderGroup.attribute.width &&\n table.scrollLeft > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = selectComp.rect.attribute.width - (table.getFrozenColsWidth() - selectComp.rect.attribute.x);\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + (table.getFrozenColsWidth() - selectComp.rect.attribute.x),\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width > 0\n });\n }\n if (\n // selectComp.rect.attribute.x < scene.rightFrozenGroup.attribute.x &&\n table.getRightFrozenColsWidth() > 0 && // right冻结列存在的情况下\n scene.rightFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rightFrozenGroup.attribute.x &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = scene.rightFrozenGroup.attribute.x - selectComp.rect.attribute.x;\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x,\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width - colsWidth > 0\n });\n }\n if (\n selectComp.rect.attribute.y < scene.colHeaderGroup.attribute.height &&\n table.scrollTop > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height =\n selectComp.rect.attribute.height - (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y);\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y),\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height > 0\n });\n }\n if (\n scene.bottomFrozenGroup.attribute.width > 0 &&\n scene.bottomFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.y + selectComp.rect.attribute.height > scene.bottomFrozenGroup.attribute.y &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height = scene.bottomFrozenGroup.attribute.y - selectComp.rect.attribute.y;\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y,\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height - rowsHeight > 0\n });\n }\n //#endregion\n } else {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'body'\n ? scene.bodyGroup\n : selectComp.role === 'columnHeader'\n ? scene.colHeaderGroup\n : selectComp.role === 'rowHeader'\n ? scene.rowHeaderGroup\n : selectComp.role === 'cornerHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightTopCorner'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightFrozenGroup\n : selectComp.role === 'leftBottomCorner'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.bottomFrozenGroup\n : scene.rightBottomCornerGroup\n );\n }\n //#endregion\n\n //#region 处理边缘被截问题\n let diffSize = 0;\n if (typeof selectComp.rect.attribute.lineWidth === 'number') {\n diffSize = Math.ceil(selectComp.rect.attribute.lineWidth / 2);\n }\n if (endCol === table.colCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[1] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (startCol === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[3] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + diffSize,\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // x: selectComp.rect.attribute.x + diffSize,\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (endRow === table.rowCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[2] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n if (startRow === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[0] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + diffSize,\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // y: selectComp.rect.attribute.y + diffSize,\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n //#endregion\n}\n\nconst resetGroupCell = (table: any, col: number, row: number, mergeInfo: CellRange | false) => {\n if (mergeInfo) {\n const record = table.getRecordByRowCol(mergeInfo.start.col, mergeInfo.start.row);\n if (record && record.vtableMerge) {\n mergeInfo.start = {\n col,\n row\n };\n mergeInfo.end = {\n col,\n row\n };\n }\n }\n};\n\nexport function updateCellSelectBorder(\n scene: Scenegraph,\n selectRange: CellRange & { skipBodyMerge?: boolean },\n ifExtendSelectRange: boolean = true\n) {\n const table = scene.table;\n const newStartCol = selectRange.start.col;\n const newStartRow = selectRange.start.row;\n const newEndCol = selectRange.end.col;\n const newEndRow = selectRange.end.row;\n const skipBodyMerge = selectRange.skipBodyMerge;\n\n let startCol = Math.max(Math.min(newEndCol, newStartCol), 0);\n let startRow = Math.max(Math.min(newEndRow, newStartRow), 0);\n let endCol = Math.min(Math.max(newEndCol, newStartCol), table.colCount - 1);\n let endRow = Math.min(Math.max(newEndRow, newStartRow), table.rowCount - 1);\n //#region region 校验四周的单元格有没有合并的情况,如有则扩大范围\n const extendSelectRange = () => {\n let isExtend = false;\n for (let col = startCol; col <= endCol; col++) {\n if (col === startCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && mergeInfo.start.col < startCol) {\n startCol = mergeInfo.start.col;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && col === endCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && Math.min(mergeInfo.end.col, table.colCount - 1) > endCol) {\n endCol = mergeInfo.end.col;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n if (!isExtend) {\n for (let row = startRow; row <= endRow; row++) {\n if (row === startRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && mergeInfo.start.row < startRow) {\n startRow = mergeInfo.start.row;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && row === endRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n resetGroupCell(table, col, row, mergeInfo);\n if (mergeInfo && Math.min(mergeInfo.end.row, table.rowCount - 1) > endRow) {\n endRow = mergeInfo.end.row;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n }\n if (isExtend) {\n extendSelectRange();\n }\n };\n if (ifExtendSelectRange) {\n extendSelectRange();\n if (selectRange.start.col > selectRange.end.col) {\n selectRange.start.col = Math.max(startCol, endCol);\n selectRange.end.col = Math.min(startCol, endCol);\n } else {\n selectRange.start.col = Math.min(startCol, endCol);\n selectRange.end.col = Math.max(startCol, endCol);\n }\n if (selectRange.start.row > selectRange.end.row) {\n selectRange.start.row = Math.max(startRow, endRow);\n selectRange.end.row = Math.min(startRow, endRow);\n } else {\n selectRange.start.row = Math.min(startRow, endRow);\n selectRange.end.row = Math.max(startRow, endRow);\n }\n }\n //#endregion\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.delete();\n selectComp.fillhandle?.delete();\n }\n );\n scene.selectingRangeComponents = new Map();\n\n let needRowHeader = false;\n let needRightRowHeader = false; // 右侧冻结\n let needColumnHeader = false;\n let needBottomColumnHeader = false; // 底部冻结\n let needBody = false;\n let needCornerHeader = false;\n let needRightTopCornerHeader = false;\n let needRightBottomCornerHeader = false;\n let needLeftBottomCornerHeader = false;\n if (startCol <= table.frozenColCount - 1 && startRow <= table.frozenRowCount - 1) {\n needCornerHeader = true;\n }\n if (endCol >= table.colCount - table.rightFrozenColCount && startRow <= table.frozenRowCount - 1) {\n needRightTopCornerHeader = true;\n }\n\n if (startCol <= table.frozenColCount - 1 && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needLeftBottomCornerHeader = true;\n }\n\n if (endCol >= table.colCount - table.rightFrozenColCount && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needRightBottomCornerHeader = true;\n }\n\n if (\n startCol <= table.frozenColCount - 1 &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRowHeader = true;\n }\n if (\n endCol >= table.colCount - table.rightFrozenColCount &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRightRowHeader = true;\n }\n\n if (\n startRow <= table.frozenRowCount - 1 &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needColumnHeader = true;\n }\n if (\n endRow >= table.rowCount - table.bottomFrozenRowCount &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needBottomColumnHeader = true;\n }\n if (\n startCol <= table.colCount - table.rightFrozenColCount - 1 &&\n endCol >= table.frozenColCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1 &&\n endRow >= table.frozenRowCount\n ) {\n needBody = true;\n }\n\n // TODO 可以尝试不拆分三个表头和body【前提是theme中合并配置】 用一个SelectBorder 需要结合clip,并动态设置border的范围【依据区域范围 已经是否跨表头及body】\n if (needCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needColumnHeader, !needRowHeader, true];\n scene.createCellSelectBorder(\n startCol,\n startRow,\n cornerEndCol,\n cornerEndRow,\n 'cornerHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightTopCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, true, !needRightRowHeader, !needColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n startRow,\n endCol,\n cornerEndRow,\n 'rightTopCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n\n if (needLeftBottomCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRowHeader, !needBottomColumnHeader, true, true];\n scene.createCellSelectBorder(\n startCol,\n cornerStartRow,\n cornerEndCol,\n endRow,\n 'leftBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightBottomCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRightRowHeader, true, true, !needBottomColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n cornerStartRow,\n endCol,\n endRow,\n 'rightBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needRightTopCornerHeader, !needBody, !needCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n startRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'columnHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBottomColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needBody, !needRightBottomCornerHeader, true, !needLeftBottomCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n endRow,\n 'bottomFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderEndCol = Math.min(endCol, table.frozenColCount - 1);\n const strokeArray = [!needCornerHeader, !needBody, !needLeftBottomCornerHeader, true];\n scene.createCellSelectBorder(\n startCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'rowHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const strokeArray = [!needRightTopCornerHeader, true, !needRightBottomCornerHeader, !needBody];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n endCol,\n columnHeaderEndRow,\n 'rightFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBody) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const strokeArray = [!needColumnHeader, !needRightRowHeader, !needBottomColumnHeader, !needRowHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'body',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n}\n\nexport function hideCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n}\n\nexport function restoreCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n}\n"]}
|
|
@@ -114,6 +114,7 @@ function createCellContent(cellGroup, icons, textStr, padding, autoColWidth, aut
|
|
|
114
114
|
|
|
115
115
|
function dealWithIcon(icon, mark, col, row, range, table, dealWithIconComputeVar) {
|
|
116
116
|
var _a, _b, _c, _d, _e, _f;
|
|
117
|
+
if (!icon) return;
|
|
117
118
|
const iconAttribute = {};
|
|
118
119
|
"image" === icon.type ? icon.isGif ? (iconAttribute.gif = icon.src, iconAttribute.image = icon.src) : iconAttribute.image = icon.src : ("svg" === icon.type || "svg" in icon) && (iconAttribute.image = icon.svg),
|
|
119
120
|
iconAttribute.width = icon.width, iconAttribute.height = icon.height, iconAttribute.visibleTime = null !== (_a = icon.visibleTime) && void 0 !== _a ? _a : "always",
|