@visactor/vtable 0.23.1-alpha.0 → 0.23.1-alpha.2

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.
Files changed (155) hide show
  1. package/cjs/ListTable.js +1 -1
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.d.ts +1 -0
  4. package/cjs/PivotChart.js +4 -0
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/components/axis/axis.js +3 -2
  7. package/cjs/components/axis/axis.js.map +1 -1
  8. package/cjs/components/legend/discrete-legend/discrete-legend.js +2 -1
  9. package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  10. package/cjs/core/BaseTable.d.ts +15 -0
  11. package/cjs/core/BaseTable.js +74 -29
  12. package/cjs/core/BaseTable.js.map +1 -1
  13. package/cjs/core/FouseInput.d.ts +1 -0
  14. package/cjs/core/FouseInput.js +5 -2
  15. package/cjs/core/FouseInput.js.map +1 -1
  16. package/cjs/data/DataSource.d.ts +1 -1
  17. package/cjs/data/DataSource.js +14 -3
  18. package/cjs/data/DataSource.js.map +1 -1
  19. package/cjs/event/event.d.ts +4 -0
  20. package/cjs/event/event.js +6 -5
  21. package/cjs/event/event.js.map +1 -1
  22. package/cjs/event/listener/container-dom.js +66 -27
  23. package/cjs/event/listener/container-dom.js.map +1 -1
  24. package/cjs/event/listener/table-group.js +1 -1
  25. package/cjs/event/listener/table-group.js.map +1 -1
  26. package/cjs/event/listener/touch.js +7 -18
  27. package/cjs/event/listener/touch.js.map +1 -1
  28. package/cjs/event/scroll.d.ts +16 -1
  29. package/cjs/event/scroll.js +38 -5
  30. package/cjs/event/scroll.js.map +1 -1
  31. package/cjs/event/util.js +2 -2
  32. package/cjs/event/util.js.map +1 -1
  33. package/cjs/index.d.ts +1 -1
  34. package/cjs/index.js +1 -1
  35. package/cjs/index.js.map +1 -1
  36. package/cjs/layout/simple-header-layout.js +1 -1
  37. package/cjs/layout/simple-header-layout.js.map +1 -1
  38. package/cjs/scenegraph/component/table-component.js +1 -1
  39. package/cjs/scenegraph/component/table-component.js.map +1 -1
  40. package/cjs/scenegraph/debug-tool/debug-tool.js +4 -1
  41. package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
  42. package/cjs/scenegraph/graphic/chart.d.ts +1 -0
  43. package/cjs/scenegraph/graphic/chart.js +34 -20
  44. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  45. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +20 -8
  46. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  47. package/cjs/scenegraph/graphic/contributions/chart-render.d.ts +2 -1
  48. package/cjs/scenegraph/graphic/contributions/chart-render.js +40 -24
  49. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  50. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -1
  51. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  52. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +2 -1
  53. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  54. package/cjs/scenegraph/icon/icon-update.js +2 -0
  55. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  56. package/cjs/scenegraph/layout/update-row.js +2 -3
  57. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  58. package/cjs/scenegraph/refresh-node/update-chart.d.ts +1 -0
  59. package/cjs/scenegraph/refresh-node/update-chart.js +9 -2
  60. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  61. package/cjs/scenegraph/scenegraph.js +14 -8
  62. package/cjs/scenegraph/scenegraph.js.map +1 -1
  63. package/cjs/state/cell-move/index.js +2 -2
  64. package/cjs/state/cell-move/index.js.map +1 -1
  65. package/cjs/state/select/update-position.d.ts +1 -1
  66. package/cjs/state/select/update-position.js +4 -4
  67. package/cjs/state/select/update-position.js.map +1 -1
  68. package/cjs/state/state.d.ts +1 -1
  69. package/cjs/state/state.js +8 -4
  70. package/cjs/state/state.js.map +1 -1
  71. package/cjs/tools/diff-cell.d.ts +1 -1
  72. package/cjs/tools/diff-cell.js +3 -3
  73. package/cjs/tools/diff-cell.js.map +1 -1
  74. package/cjs/ts-types/base-table.d.ts +23 -1
  75. package/cjs/ts-types/base-table.js.map +1 -1
  76. package/cjs/vrender.js.map +1 -1
  77. package/dist/vtable.js +1372 -786
  78. package/dist/vtable.min.js +2 -2
  79. package/es/ListTable.js +1 -1
  80. package/es/ListTable.js.map +1 -1
  81. package/es/PivotChart.d.ts +1 -0
  82. package/es/PivotChart.js +5 -2
  83. package/es/PivotChart.js.map +1 -1
  84. package/es/components/axis/axis.js +3 -1
  85. package/es/components/axis/axis.js.map +1 -1
  86. package/es/components/legend/discrete-legend/discrete-legend.js +2 -1
  87. package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  88. package/es/core/BaseTable.d.ts +15 -0
  89. package/es/core/BaseTable.js +73 -28
  90. package/es/core/BaseTable.js.map +1 -1
  91. package/es/core/FouseInput.d.ts +1 -0
  92. package/es/core/FouseInput.js +5 -2
  93. package/es/core/FouseInput.js.map +1 -1
  94. package/es/data/DataSource.d.ts +1 -1
  95. package/es/data/DataSource.js +13 -4
  96. package/es/data/DataSource.js.map +1 -1
  97. package/es/event/event.d.ts +4 -0
  98. package/es/event/event.js +7 -4
  99. package/es/event/event.js.map +1 -1
  100. package/es/event/listener/container-dom.js +67 -26
  101. package/es/event/listener/container-dom.js.map +1 -1
  102. package/es/event/listener/table-group.js +1 -1
  103. package/es/event/listener/table-group.js.map +1 -1
  104. package/es/event/listener/touch.js +7 -18
  105. package/es/event/listener/touch.js.map +1 -1
  106. package/es/event/scroll.d.ts +16 -1
  107. package/es/event/scroll.js +33 -2
  108. package/es/event/scroll.js.map +1 -1
  109. package/es/event/util.js +2 -2
  110. package/es/event/util.js.map +1 -1
  111. package/es/index.d.ts +1 -1
  112. package/es/index.js +1 -1
  113. package/es/index.js.map +1 -1
  114. package/es/layout/simple-header-layout.js +1 -1
  115. package/es/layout/simple-header-layout.js.map +1 -1
  116. package/es/scenegraph/component/table-component.js +1 -1
  117. package/es/scenegraph/component/table-component.js.map +1 -1
  118. package/es/scenegraph/debug-tool/debug-tool.js +4 -1
  119. package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
  120. package/es/scenegraph/graphic/chart.d.ts +1 -0
  121. package/es/scenegraph/graphic/chart.js +33 -21
  122. package/es/scenegraph/graphic/chart.js.map +1 -1
  123. package/es/scenegraph/graphic/contributions/chart-render-helper.js +20 -8
  124. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  125. package/es/scenegraph/graphic/contributions/chart-render.d.ts +2 -1
  126. package/es/scenegraph/graphic/contributions/chart-render.js +41 -25
  127. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  128. package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -1
  129. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  130. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +2 -1
  131. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  132. package/es/scenegraph/icon/icon-update.js +2 -0
  133. package/es/scenegraph/icon/icon-update.js.map +1 -1
  134. package/es/scenegraph/layout/update-row.js +2 -3
  135. package/es/scenegraph/layout/update-row.js.map +1 -1
  136. package/es/scenegraph/refresh-node/update-chart.d.ts +1 -0
  137. package/es/scenegraph/refresh-node/update-chart.js +6 -0
  138. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  139. package/es/scenegraph/scenegraph.js +14 -8
  140. package/es/scenegraph/scenegraph.js.map +1 -1
  141. package/es/state/cell-move/index.js +2 -2
  142. package/es/state/cell-move/index.js.map +1 -1
  143. package/es/state/select/update-position.d.ts +1 -1
  144. package/es/state/select/update-position.js +4 -4
  145. package/es/state/select/update-position.js.map +1 -1
  146. package/es/state/state.d.ts +1 -1
  147. package/es/state/state.js +8 -4
  148. package/es/state/state.js.map +1 -1
  149. package/es/tools/diff-cell.d.ts +1 -1
  150. package/es/tools/diff-cell.js +3 -3
  151. package/es/tools/diff-cell.js.map +1 -1
  152. package/es/ts-types/base-table.d.ts +23 -1
  153. package/es/ts-types/base-table.js.map +1 -1
  154. package/es/vrender.js.map +1 -1
  155. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/layout/update-row.ts"],"names":[],"mappings":"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","file":"update-row.js","sourcesContent":["import { isNumber, isValid } from '@visactor/vutils';\nimport type { CellAddress, CellRange } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { Group } from '../graphic/group';\nimport { updateCell } from '../group-creater/cell-helper';\nimport type { Scenegraph } from '../scenegraph';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\nimport { deduplication } from '../../tools/util';\n\n/**\n * add and remove rows in scenegraph\n */\nexport function updateRow(\n removeCells: CellAddress[],\n addCells: CellAddress[],\n updateCells: CellAddress[],\n table: BaseTableAPI\n) {\n const scene = table.scenegraph;\n // deduplication\n const removeRows = deduplication(removeCells.map(cell => cell.row)).sort((a, b) => b - a);\n const addRows = deduplication(addCells.map(cell => cell.row)).sort((a, b) => a - b);\n const updateRows = deduplication(updateCells.map(cell => cell.row)).sort((a, b) => a - b);\n\n // remove cells\n removeRows.forEach(row => {\n removeRow(row, scene);\n });\n\n const rowHeightsMap = table.rowHeightsMap;\n removeRows.forEach(row => {\n rowHeightsMap.delete(row);\n });\n\n if (removeRows.length) {\n resetRowNumber(scene);\n const beforeRow = removeRows[removeRows.length - 1] - 1;\n const afterRow = removeRows[0] - removeRows.length + 1;\n const rowUpdatePos = updateMergeCellGroup(beforeRow, afterRow, scene);\n isNumber(rowUpdatePos) && (scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, rowUpdatePos));\n }\n\n scene.table._clearRowRangeHeightsMap();\n\n // add cells\n let updateAfter: number;\n addRows.forEach(row => {\n const needUpdateAfter = addRow(row, scene);\n updateAfter = updateAfter ?? needUpdateAfter;\n rowHeightsMap.insert(row);\n });\n\n // reset attribute y and row number in CellGroup\n // const newTotalHeight = resetRowNumberAndY(scene);\n resetRowNumberAndY(scene);\n\n if (addRows.length) {\n const beforeRow = addRows[0] - 1;\n const afterRow = addRows[addRows.length - 1] + 1;\n const rowUpdatePos = updateMergeCellGroup(beforeRow, afterRow, scene);\n isNumber(rowUpdatePos) && (scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, rowUpdatePos));\n }\n\n for (let col = 0; col < table.colCount; col++) {\n // add cells\n updateRows.forEach(r => {\n // updateRowAttr(row, scene);\n const mergeInfo = getCellMergeInfo(scene.table, col, r);\n if (mergeInfo) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++) {\n updateCell(col, row, scene.table, false);\n }\n }\n } else {\n updateCell(col, r, scene.table, false);\n }\n });\n }\n\n if (updateRows.length) {\n const beforeRow = updateRows[0] - 1;\n const afterRow = updateRows[updateRows.length - 1] + 1;\n const rowUpdatePos = updateMergeCellGroup(beforeRow, afterRow, scene);\n isNumber(rowUpdatePos) && (scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, rowUpdatePos));\n }\n\n if (isNumber(updateAfter)) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = updateAfter; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, updateAfter);\n }\n\n if (addRows.length) {\n if (!isNumber(updateAfter)) {\n const minRow = Math.min(...addRows);\n scene.proxy.rowUpdatePos = Math.min(minRow, scene.proxy.rowUpdatePos);\n }\n scene.proxy.rowUpdateDirection = 'up';\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n updateBottomFrozeCellGroups();\n // scene.proxy.progress();\n } else if (removeRows.length) {\n setRowSeriesNumberCellNeedUpdate(removeRows[removeRows.length - 1], scene);\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n\n updateBottomFrozeCellGroups();\n scene.proxy.progress();\n }\n scene.proxy.progress();\n\n // update table size\n const newTotalHeight = table.getRowsHeight(table.frozenRowCount, table.rowCount - 1 - table.bottomFrozenRowCount);\n scene.updateContainerHeight(scene.table.frozenRowCount, newTotalHeight - scene.bodyGroup.attribute.height);\n\n function updateBottomFrozeCellGroups() {\n if (\n addRows?.[addRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n updateRows?.[updateRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n removeRows?.[0] >= table.rowCount - table.bottomFrozenRowCount\n ) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = table.rowCount - table.bottomFrozenRowCount; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.updateBottomFrozenCellGroups();\n }\n }\n}\nfunction removeRow(row: number, scene: Scenegraph) {\n // const infectCellRange = removeCellGroup(row, scene);\n // for (let i = 0; i < infectCellRange.length; i++) {\n // const { mergeStartCol, mergeEndCol, mergeStartRow, mergeEndRow } = infectCellRange[i];\n // for (let col = mergeStartCol; col <= mergeEndCol; col++) {\n // for (let row = mergeStartRow; row <= mergeEndRow; row++) {\n // const cellGroup = scene.getCell(col, row, true);\n // if (cellGroup) {\n // cellGroup.needUpdate = true;\n // }\n // }\n // }\n // }\n removeCellGroup(row, scene);\n\n const proxy = scene.proxy;\n\n // TODO 需要整体更新proxy的状态\n if (row >= proxy.rowStart && row <= proxy.rowEnd) {\n proxy.rowEnd--;\n proxy.currentRow--;\n }\n proxy.bodyBottomRow--;\n // proxy.totalRow--;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n}\n\nfunction addRow(row: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n proxy.bodyBottomRow++;\n // proxy.totalRow++;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n\n if (row < proxy.rowStart) {\n return undefined;\n } else if (row > proxy.rowEnd) {\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n return undefined;\n }\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n\n // update rows after\n return row;\n\n // return undefined;\n\n // // TODO 需要整体更新proxy的状态\n // scene.proxy.bodyBottomRow++;\n // scene.proxy.totalRow++;\n // scene.proxy.rowEnd++;\n // scene.proxy.currentRow++;\n}\nfunction resetRowNumber(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number) {\n cellGroup.row = rowIndex;\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeStartRow = merge.start.row;\n cellGroup.mergeEndRow = merge.end.row;\n } else {\n cellGroup.mergeStartCol = undefined;\n cellGroup.mergeEndCol = undefined;\n cellGroup.mergeStartRow = undefined;\n cellGroup.mergeEndRow = undefined;\n }\n }\n}\n\nfunction resetRowNumberAndY(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number, y: number) {\n cellGroup.row = rowIndex;\n cellGroup.setAttribute('y', y);\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeStartRow = merge.start.row;\n cellGroup.mergeEndRow = merge.end.row;\n } else {\n cellGroup.mergeStartCol = undefined;\n cellGroup.mergeEndCol = undefined;\n cellGroup.mergeStartRow = undefined;\n cellGroup.mergeEndRow = undefined;\n }\n }\n}\nfunction addRowCellGroup(row: number, scene: Scenegraph) {\n for (let col = 0; col < scene.table.colCount; col++) {\n // create cellGroup\n // const cellGroup = updateCell(col, row, scene.table, true);\n const cellGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: scene.table.getRowHeight(row)\n });\n cellGroup.role = 'cell';\n cellGroup.col = col;\n cellGroup.row = row;\n cellGroup.needUpdate = true;\n\n if (!cellGroup) {\n // TODO: deal with data promise situation\n continue;\n }\n\n // insert cellGroup in colGroup\n const colGroup = scene.getColGroup(col);\n if (!colGroup) {\n continue;\n }\n\n if (colGroup.firstChild && row < (colGroup.firstChild as Group).row) {\n colGroup.insertBefore(cellGroup, colGroup.firstChild);\n (colGroup.firstChild as Group).row = (colGroup.firstChild as Group).row + 1;\n // if (\n // isNumber((colGroup.firstChild as Group).mergeStartRow) &&\n // isNumber((colGroup.firstChild as Group).mergeEndRow)\n // ) {\n // (colGroup.firstChild as Group).mergeStartRow = (colGroup.firstChild as Group).mergeStartRow + 1;\n // (colGroup.firstChild as Group).mergeEndRow = (colGroup.firstChild as Group).mergeEndRow + 1;\n // }\n } else if (colGroup.lastChild && row > (colGroup.lastChild as Group).row) {\n colGroup.appendChild(cellGroup);\n } else {\n // let cellBefore: Group;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // if (cellGroup.row === row) {\n // cellBefore = cellGroup;\n // return true;\n // }\n // return false;\n // });\n\n const cellBefore = scene.highPerformanceGetCell(col, row, true);\n if (cellBefore !== cellGroup) {\n colGroup.insertBefore(cellGroup, cellBefore);\n cellBefore && (cellBefore.row = cellBefore.row + 1);\n // if (isNumber(cellBefore.mergeStartRow) && isNumber(cellBefore.mergeEndRow)) {\n // cellBefore.mergeStartRow = cellBefore.mergeStartRow + 1;\n // cellBefore.mergeEndRow = cellBefore.mergeEndRow + 1;\n // }\n if (cellBefore !== colGroup.lastChild) {\n colGroup.lastChild && ((colGroup.lastChild as Group).row = (colGroup.lastChild as Group).row + 1);\n // if (\n // isNumber((colGroup.lastChild as Group).mergeStartRow) &&\n // isNumber((colGroup.lastChild as Group).mergeEndRow)\n // ) {\n // (colGroup.lastChild as Group).mergeStartRow = (colGroup.lastChild as Group).mergeStartRow + 1;\n // (colGroup.lastChild as Group).mergeEndRow = (colGroup.lastChild as Group).mergeEndRow + 1;\n // }\n }\n }\n }\n\n // // reset row number\n // let rowIndex = (colGroup.firstChild as Group)?.row;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // cellGroup.row = rowIndex;\n // rowIndex++;\n // });\n }\n}\n\nfunction removeCellGroup(row: number, scene: Scenegraph) {\n // const infectCellRange = [];\n for (let col = 0; col < scene.table.colCount; col++) {\n // const headerColGroup = scene.getColGroup(col, true);\n const colGroup = scene.getColGroup(col, false);\n if (!colGroup) {\n continue;\n }\n\n // remove cellGroup in colGroup\n let cellGroup: Group;\n colGroup.forEachChildren((cell: Group) => {\n if (cell.row === row) {\n cellGroup = cell;\n return true;\n }\n return false;\n });\n if (cellGroup) {\n colGroup.updateColumnHeight(-(cellGroup as Group).attribute.height);\n colGroup.removeChild(cellGroup);\n // if (\n // isValid(cellGroup.mergeStartCol) &&\n // isValid(cellGroup.mergeEndCol) &&\n // isValid(cellGroup.mergeStartRow) &&\n // isValid(cellGroup.mergeEndRow)\n // ) {\n // infectCellRange.push({\n // col: cellGroup.col,\n // row: cellGroup.row,\n // mergeStartCol: cellGroup.mergeStartCol,\n // mergeEndCol: cellGroup.mergeEndCol,\n // mergeStartRow: cellGroup.mergeStartRow,\n // mergeEndRow: cellGroup.mergeEndRow\n // });\n // }\n }\n }\n // return infectCellRange;\n}\n\nfunction updateMergeCellGroup(beforeRow: number, afterRow: number, scene: Scenegraph) {\n let updateRow;\n for (let col = 0; col < scene.table.colCount; col++) {\n const rangeBefore = scene.table.getCellRange(col, beforeRow);\n if (rangeBefore.start.row <= beforeRow + 1 && rangeBefore.end.row >= beforeRow + 1) {\n updateCellGroup(rangeBefore, scene);\n updateRow = rangeBefore.start.row;\n }\n\n const rangeAfter = scene.table.getCellRange(col, afterRow);\n if (rangeAfter.start.row <= afterRow - 1 && rangeAfter.end.row >= afterRow - 1) {\n updateCellGroup(rangeAfter, scene);\n updateRow = rangeBefore.start.row;\n }\n }\n return updateRow;\n}\n\nfunction updateCellGroup(range: CellRange, scene: Scenegraph) {\n const { start, end } = range;\n for (let col = start.col; col <= end.col; col++) {\n for (let row = start.row; row <= end.row; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n if (!cellGroup) {\n continue;\n }\n cellGroup.needUpdate = true;\n }\n }\n}\n\nfunction setRowSeriesNumberCellNeedUpdate(startUpdateRow: number, scene: Scenegraph) {\n if (scene.table.isHasSeriesNumber()) {\n for (let row = startUpdateRow; row <= scene.table.rowCount - 1; row++) {\n updateCell(0, row, scene.table, false);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/layout/update-row.ts"],"names":[],"mappings":"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","file":"update-row.js","sourcesContent":["import { isNumber, isValid } from '@visactor/vutils';\nimport type { CellAddress, CellRange } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { Group } from '../graphic/group';\nimport { updateCell } from '../group-creater/cell-helper';\nimport type { Scenegraph } from '../scenegraph';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\nimport { deduplication } from '../../tools/util';\n\n/**\n * add and remove rows in scenegraph\n */\nexport function updateRow(\n removeCells: CellAddress[],\n addCells: CellAddress[],\n updateCells: CellAddress[],\n table: BaseTableAPI\n) {\n const scene = table.scenegraph;\n // deduplication\n const removeRows = deduplication(removeCells.map(cell => cell.row)).sort((a, b) => b - a);\n const addRows = deduplication(addCells.map(cell => cell.row)).sort((a, b) => a - b);\n const updateRows = deduplication(updateCells.map(cell => cell.row)).sort((a, b) => a - b);\n\n // remove cells\n removeRows.forEach(row => {\n removeRow(row, scene);\n });\n\n const rowHeightsMap = table.rowHeightsMap;\n removeRows.forEach(row => {\n rowHeightsMap.delete(row);\n });\n\n if (removeRows.length) {\n resetRowNumber(scene);\n const beforeRow = removeRows[removeRows.length - 1] - 1;\n const afterRow = removeRows[0] - removeRows.length + 1;\n const rowUpdatePos = updateMergeCellGroup(beforeRow, afterRow, scene);\n isNumber(rowUpdatePos) && (scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, rowUpdatePos));\n }\n\n scene.table._clearRowRangeHeightsMap();\n\n // add cells\n let updateAfter: number;\n addRows.forEach(row => {\n const needUpdateAfter = addRow(row, scene);\n updateAfter = updateAfter ?? needUpdateAfter;\n rowHeightsMap.insert(row);\n });\n\n // reset attribute y and row number in CellGroup\n // const newTotalHeight = resetRowNumberAndY(scene);\n resetRowNumberAndY(scene);\n\n if (addRows.length) {\n const beforeRow = addRows[0] - 1;\n const afterRow = addRows[addRows.length - 1] + 1;\n const rowUpdatePos = updateMergeCellGroup(beforeRow, afterRow, scene);\n isNumber(rowUpdatePos) && (scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, rowUpdatePos));\n }\n\n for (let col = 0; col < table.colCount; col++) {\n // add cells\n updateRows.forEach(r => {\n // updateRowAttr(row, scene);\n const mergeInfo = getCellMergeInfo(scene.table, col, r);\n if (mergeInfo) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++) {\n updateCell(col, row, scene.table, false);\n }\n }\n } else {\n updateCell(col, r, scene.table, false);\n }\n });\n }\n\n if (updateRows.length) {\n const beforeRow = updateRows[0] - 1;\n const afterRow = updateRows[updateRows.length - 1] + 1;\n const rowUpdatePos = updateMergeCellGroup(beforeRow, afterRow, scene);\n isNumber(rowUpdatePos) && (scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, rowUpdatePos));\n }\n\n if (isNumber(updateAfter)) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = updateAfter; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.rowUpdatePos = Math.min(scene.proxy.rowUpdatePos, updateAfter);\n }\n\n if (addRows.length) {\n if (!isNumber(updateAfter)) {\n const minRow = Math.min(...addRows);\n scene.proxy.rowUpdatePos = Math.min(minRow, scene.proxy.rowUpdatePos);\n }\n scene.proxy.rowUpdateDirection = 'up';\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n updateBottomFrozeCellGroups();\n // scene.proxy.progress();\n } else if (removeRows.length) {\n setRowSeriesNumberCellNeedUpdate(removeRows[removeRows.length - 1], scene);\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n\n updateBottomFrozeCellGroups();\n scene.proxy.progress();\n }\n scene.proxy.progress();\n\n // update table size\n const newTotalHeight = table.getRowsHeight(table.frozenRowCount, table.rowCount - 1 - table.bottomFrozenRowCount);\n scene.updateContainerHeight(scene.table.frozenRowCount, newTotalHeight - scene.bodyGroup.attribute.height);\n\n function updateBottomFrozeCellGroups() {\n if (\n addRows?.[addRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n updateRows?.[updateRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n removeRows?.[0] >= table.rowCount - table.bottomFrozenRowCount\n ) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = table.rowCount - table.bottomFrozenRowCount; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.updateBottomFrozenCellGroups();\n }\n }\n}\nfunction removeRow(row: number, scene: Scenegraph) {\n // const infectCellRange = removeCellGroup(row, scene);\n // for (let i = 0; i < infectCellRange.length; i++) {\n // const { mergeStartCol, mergeEndCol, mergeStartRow, mergeEndRow } = infectCellRange[i];\n // for (let col = mergeStartCol; col <= mergeEndCol; col++) {\n // for (let row = mergeStartRow; row <= mergeEndRow; row++) {\n // const cellGroup = scene.getCell(col, row, true);\n // if (cellGroup) {\n // cellGroup.needUpdate = true;\n // }\n // }\n // }\n // }\n\n const proxy = scene.proxy;\n\n // TODO 需要整体更新proxy的状态\n if (row >= proxy.rowStart && row <= proxy.rowEnd) {\n removeCellGroup(row, scene);\n proxy.rowEnd--;\n proxy.currentRow--;\n }\n proxy.bodyBottomRow--;\n // proxy.totalRow--;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n}\n\nfunction addRow(row: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n proxy.bodyBottomRow++;\n // proxy.totalRow++;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n\n if (row < proxy.rowStart) {\n return undefined;\n } else if (row > proxy.rowEnd) {\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n return undefined;\n }\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n\n // update rows after\n return row;\n\n // return undefined;\n\n // // TODO 需要整体更新proxy的状态\n // scene.proxy.bodyBottomRow++;\n // scene.proxy.totalRow++;\n // scene.proxy.rowEnd++;\n // scene.proxy.currentRow++;\n}\nfunction resetRowNumber(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number) {\n cellGroup.row = rowIndex;\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeStartRow = merge.start.row;\n cellGroup.mergeEndRow = merge.end.row;\n } else {\n cellGroup.mergeStartCol = undefined;\n cellGroup.mergeEndCol = undefined;\n cellGroup.mergeStartRow = undefined;\n cellGroup.mergeEndRow = undefined;\n }\n }\n}\n\nfunction resetRowNumberAndY(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number, y: number) {\n cellGroup.row = rowIndex;\n cellGroup.setAttribute('y', y);\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeStartRow = merge.start.row;\n cellGroup.mergeEndRow = merge.end.row;\n } else {\n cellGroup.mergeStartCol = undefined;\n cellGroup.mergeEndCol = undefined;\n cellGroup.mergeStartRow = undefined;\n cellGroup.mergeEndRow = undefined;\n }\n }\n}\nfunction addRowCellGroup(row: number, scene: Scenegraph) {\n for (let col = 0; col < scene.table.colCount; col++) {\n // create cellGroup\n // const cellGroup = updateCell(col, row, scene.table, true);\n const cellGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: scene.table.getRowHeight(row)\n });\n cellGroup.role = 'cell';\n cellGroup.col = col;\n cellGroup.row = row;\n cellGroup.needUpdate = true;\n\n if (!cellGroup) {\n // TODO: deal with data promise situation\n continue;\n }\n\n // insert cellGroup in colGroup\n const colGroup = scene.getColGroup(col);\n if (!colGroup) {\n continue;\n }\n\n if (colGroup.firstChild && row < (colGroup.firstChild as Group).row) {\n colGroup.insertBefore(cellGroup, colGroup.firstChild);\n (colGroup.firstChild as Group).row = (colGroup.firstChild as Group).row + 1;\n // if (\n // isNumber((colGroup.firstChild as Group).mergeStartRow) &&\n // isNumber((colGroup.firstChild as Group).mergeEndRow)\n // ) {\n // (colGroup.firstChild as Group).mergeStartRow = (colGroup.firstChild as Group).mergeStartRow + 1;\n // (colGroup.firstChild as Group).mergeEndRow = (colGroup.firstChild as Group).mergeEndRow + 1;\n // }\n } else if (colGroup.lastChild && row > (colGroup.lastChild as Group).row) {\n colGroup.appendChild(cellGroup);\n } else {\n // let cellBefore: Group;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // if (cellGroup.row === row) {\n // cellBefore = cellGroup;\n // return true;\n // }\n // return false;\n // });\n\n const cellBefore = scene.highPerformanceGetCell(col, row, true);\n if (cellBefore !== cellGroup) {\n colGroup.insertBefore(cellGroup, cellBefore);\n cellBefore && (cellBefore.row = cellBefore.row + 1);\n // if (isNumber(cellBefore.mergeStartRow) && isNumber(cellBefore.mergeEndRow)) {\n // cellBefore.mergeStartRow = cellBefore.mergeStartRow + 1;\n // cellBefore.mergeEndRow = cellBefore.mergeEndRow + 1;\n // }\n if (cellBefore !== colGroup.lastChild) {\n colGroup.lastChild && ((colGroup.lastChild as Group).row = (colGroup.lastChild as Group).row + 1);\n // if (\n // isNumber((colGroup.lastChild as Group).mergeStartRow) &&\n // isNumber((colGroup.lastChild as Group).mergeEndRow)\n // ) {\n // (colGroup.lastChild as Group).mergeStartRow = (colGroup.lastChild as Group).mergeStartRow + 1;\n // (colGroup.lastChild as Group).mergeEndRow = (colGroup.lastChild as Group).mergeEndRow + 1;\n // }\n }\n }\n }\n\n // // reset row number\n // let rowIndex = (colGroup.firstChild as Group)?.row;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // cellGroup.row = rowIndex;\n // rowIndex++;\n // });\n }\n}\n\nfunction removeCellGroup(row: number, scene: Scenegraph) {\n // const infectCellRange = [];\n for (let col = 0; col < scene.table.colCount; col++) {\n // const headerColGroup = scene.getColGroup(col, true);\n const colGroup = scene.getColGroup(col, false);\n if (!colGroup) {\n continue;\n }\n\n // remove cellGroup in colGroup\n let cellGroup: Group;\n colGroup.forEachChildren((cell: Group) => {\n if (cell.row === row) {\n cellGroup = cell;\n return true;\n }\n return false;\n });\n if (cellGroup) {\n colGroup.updateColumnHeight(-(cellGroup as Group).attribute.height);\n colGroup.removeChild(cellGroup);\n // if (\n // isValid(cellGroup.mergeStartCol) &&\n // isValid(cellGroup.mergeEndCol) &&\n // isValid(cellGroup.mergeStartRow) &&\n // isValid(cellGroup.mergeEndRow)\n // ) {\n // infectCellRange.push({\n // col: cellGroup.col,\n // row: cellGroup.row,\n // mergeStartCol: cellGroup.mergeStartCol,\n // mergeEndCol: cellGroup.mergeEndCol,\n // mergeStartRow: cellGroup.mergeStartRow,\n // mergeEndRow: cellGroup.mergeEndRow\n // });\n // }\n }\n }\n // return infectCellRange;\n}\n\nfunction updateMergeCellGroup(beforeRow: number, afterRow: number, scene: Scenegraph) {\n let updateRow;\n for (let col = 0; col < scene.table.colCount; col++) {\n const rangeBefore = scene.table.getCellRange(col, beforeRow);\n if (rangeBefore.start.row <= beforeRow + 1 && rangeBefore.end.row >= beforeRow + 1) {\n updateCellGroup(rangeBefore, scene);\n updateRow = rangeBefore.start.row;\n }\n\n const rangeAfter = scene.table.getCellRange(col, afterRow);\n if (rangeAfter.start.row <= afterRow - 1 && rangeAfter.end.row >= afterRow - 1) {\n updateCellGroup(rangeAfter, scene);\n updateRow = rangeBefore.start.row;\n }\n }\n return updateRow;\n}\n\nfunction updateCellGroup(range: CellRange, scene: Scenegraph) {\n const { start, end } = range;\n for (let col = start.col; col <= end.col; col++) {\n for (let row = start.row; row <= end.row; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n if (!cellGroup) {\n continue;\n }\n cellGroup.needUpdate = true;\n }\n }\n}\n\nfunction setRowSeriesNumberCellNeedUpdate(startUpdateRow: number, scene: Scenegraph) {\n if (scene.table.isHasSeriesNumber()) {\n for (let row = startUpdateRow; row <= scene.table.rowCount - 1; row++) {\n updateCell(0, row, scene.table, false);\n }\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import type { Scenegraph } from '../scenegraph';
2
2
  export declare function updateChartSize(scenegraph: Scenegraph, col: number): void;
3
3
  export declare function clearChartCacheImage(scenegraph: Scenegraph): void;
4
+ export declare function clearCellChartCacheImage(col: number, row: number, scenegraph: Scenegraph): void;
4
5
  export declare function updateChartData(scenegraph: Scenegraph): void;
5
6
  export declare function updateChartState(scenegraph: Scenegraph, datum: any): void;
@@ -42,6 +42,12 @@ export function clearChartCacheImage(scenegraph) {
42
42
  }
43
43
  }
44
44
 
45
+ export function clearCellChartCacheImage(col, row, scenegraph) {
46
+ scenegraph.getCell(col, row).children.forEach((node => {
47
+ "chart" === node.type && (node.cacheCanvas = null, node.addUpdateBoundTag());
48
+ }));
49
+ }
50
+
45
51
  export function updateChartData(scenegraph) {
46
52
  var _a;
47
53
  const table = scenegraph.table;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/refresh-node/update-chart.ts"],"names":[],"mappings":"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","file":"update-chart.js","sourcesContent":["import { isEqual } from '@visactor/vutils';\nimport type { PivotChart } from '../../PivotChart';\nimport { CartesianAxis } from '../../components/axis/axis';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Chart } from '../graphic/chart';\nimport type { Group } from '../graphic/group';\nimport type { Scenegraph } from '../scenegraph';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { getQuadProps } from '../utils/padding';\nimport { getProp } from '../utils/get-prop';\n\n/** 供调整列宽后更新chart使用 */\nexport function updateChartSize(scenegraph: Scenegraph, col: number) {\n // 将调整列宽的后面的面也都一起需要调整viewbox。 TODO:columnResizeType支持后需要根据变化的列去调整,范围可能变多或者变少\n for (let c = col; c <= scenegraph.proxy.colEnd; c++) {\n const columnGroup = scenegraph.getColGroup(c);\n // const chartInstance = (columnGroup.attribute as any)?.chartInstance;\n // if (chartInstance) {\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n const width = scenegraph.table.getColWidth(cellNode.col);\n const height = scenegraph.table.getRowHeight(cellNode.row);\n\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n // 调试问题使用\n // if (columnGroup.col === 2) {\n // columnGroup.AABBBounds.width();\n // node.AABBBounds.width();\n // console.log(\n // 'set viewbox y1',\n // Math.ceil(cellNode.globalAABBBounds.y1 + node.attribute.cellPadding[0] + scenegraph.table.scrollTop),\n // node.globalAABBBounds.height()\n // );\n\n // console.log(\n // 'updateChartSize',\n // columnGroup,\n // columnGroup.globalAABBBounds.y1,\n // cellNode.globalAABBBounds.y1,\n // node.globalAABBBounds.y1\n // );\n // }\n\n node.cacheCanvas = null;\n node.setAttribute('width', Math.ceil(width - node.attribute.cellPadding[3] - node.attribute.cellPadding[1]));\n node.setAttribute(\n 'height',\n Math.ceil(height - node.attribute.cellPadding[0] - node.attribute.cellPadding[2])\n );\n\n // node.setAttribute('viewBox', {\n // x1: Math.ceil(cellNode.globalAABBBounds.x1 + node.attribute.cellPadding[3] + scenegraph.table.scrollLeft),\n // x2: Math.ceil(\n // cellNode.globalAABBBounds.x1 + width - node.attribute.cellPadding[1] + scenegraph.table.scrollLeft\n // ),\n // y1: Math.ceil(cellNode.globalAABBBounds.y1 + node.attribute.cellPadding[0] + scenegraph.table.scrollTop),\n // y2: Math.ceil(\n // cellNode.globalAABBBounds.y1 + height - node.attribute.cellPadding[2] + scenegraph.table.scrollTop\n // )\n // });\n }\n });\n });\n // }\n }\n // 右侧冻结的单元格也需要调整\n if (!scenegraph.table.isPivotChart() && scenegraph.table.rightFrozenColCount >= 1) {\n for (\n let c = scenegraph.table.colCount - scenegraph.table.rightFrozenColCount;\n c <= scenegraph.table.colCount - 1;\n c++\n ) {\n const columnGroup = scenegraph.getColGroup(c);\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n const width = scenegraph.table.getColWidth(cellNode.col);\n const height = scenegraph.table.getRowHeight(cellNode.row);\n\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n node.cacheCanvas = null;\n node.setAttribute(\n 'width',\n Math.ceil(width - node.attribute.cellPadding[3] - node.attribute.cellPadding[1])\n );\n node.setAttribute(\n 'height',\n Math.ceil(height - node.attribute.cellPadding[0] - node.attribute.cellPadding[2])\n );\n }\n });\n });\n }\n }\n}\n\n/** 清理所有chart节点的 图表缓存图片 */\nexport function clearChartCacheImage(scenegraph: Scenegraph) {\n // 将调整列宽的后面的面也都一起需要调整viewbox。 TODO:columnResizeType支持后需要根据变化的列去调整,范围可能变多或者变少\n for (let c = scenegraph.proxy.colStart; c <= scenegraph.proxy.colEnd; c++) {\n const columnGroup = scenegraph.getColGroup(c);\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n node.cacheCanvas = null;\n node.addUpdateBoundTag();\n }\n });\n });\n }\n}\n\n/** 更新所有的图表chart节点上缓存attribute中的data数据 */\nexport function updateChartData(scenegraph: Scenegraph) {\n const table = scenegraph.table;\n // 将调整列宽的后面的面也都一起需要调整viewbox。 TODO:columnResizeType支持后需要根据变化的列去调整,范围可能变多或者变少\n for (let c = scenegraph.proxy.colStart; c <= scenegraph.proxy.colEnd; c++) {\n const columnGroup = scenegraph.getColGroup(c);\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n const col = cellNode.col;\n const row = cellNode.row;\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n node.updateData(table.getCellValue(col, row));\n const newAxes = table.internalProps.layoutMap.getChartAxes(col, row);\n node.setAttribute('axes', newAxes);\n const chartSpec = node.attribute.spec;\n chartSpec.axes = newAxes;\n node.setAttribute('spec', chartSpec);\n // node.addUpdateBoundTag();\n }\n });\n });\n }\n\n // update left axes\n updateTableAxes(scenegraph.rowHeaderGroup, scenegraph.table);\n // update top axes\n updateTableAxes(scenegraph.colHeaderGroup, scenegraph.table);\n // update right axes\n updateTableAxes(scenegraph.rightFrozenGroup, scenegraph.table);\n // update bottom axes\n updateTableAxes(scenegraph.bottomFrozenGroup, scenegraph.table);\n}\n/** 组织图表数据状态_selectedDataItemsInChart 更新选中的图表图元状态 */\nexport function updateChartState(scenegraph: Scenegraph, datum: any) {\n const table = scenegraph.table;\n if (table.isPivotChart()) {\n const preSelectItemsCount = (table as PivotChart)._selectedDataItemsInChart.length;\n if ((datum === null || datum?.length === 0 || Object.keys(datum).length === 0) && preSelectItemsCount === 0) {\n //避免无效的更新\n return;\n }\n // (table as PivotChart)._selectedDataItemsInChart = [];\n const newSelectedDataItemsInChart = [];\n if (Array.isArray(datum)) {\n datum.forEach((dataItem: any) => {\n if (dataItem && dataItem.key !== 0 && Object.keys(dataItem).length > 0) {\n //本以为没有点击到图元上 datum为空 发现是{key:0}或者{}\n const selectedState = {};\n for (const itemKey in dataItem) {\n if (!itemKey.startsWith('VGRAMMAR_') && !itemKey.startsWith('__VCHART')) {\n selectedState[itemKey] = dataItem[itemKey];\n }\n }\n newSelectedDataItemsInChart.push(selectedState);\n }\n });\n } else if (datum && datum.key !== 0 && Object.keys(datum).length > 0) {\n //本以为没有点击到图元上 datum为空 发现是{key:0}或者{}\n const selectedState = {};\n for (const itemKey in datum) {\n if (!itemKey.startsWith('VGRAMMAR_') && !itemKey.startsWith('__VCHART')) {\n selectedState[itemKey] = datum[itemKey];\n }\n }\n newSelectedDataItemsInChart.push(selectedState);\n }\n //避免无效的更新\n if (!isEqual((table as PivotChart)._selectedDataItemsInChart, newSelectedDataItemsInChart)) {\n (table as PivotChart)._selectedDataItemsInChart = newSelectedDataItemsInChart;\n (table.internalProps.layoutMap as PivotHeaderLayoutMap).updateDataStateToChartInstance();\n // 清楚chart缓存图片\n clearChartCacheImage(scenegraph);\n table.scenegraph.updateNextFrame();\n }\n }\n}\n\n/**\n * @description: update table axis component\n * @param {Group} containerGroup\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction updateTableAxes(containerGroup: Group, table: BaseTableAPI) {\n containerGroup.forEachChildren((column: Group) => {\n if (column.role === 'column') {\n column.forEachChildren((cell: Group) => {\n if (cell.role === 'cell') {\n let isAxisComponent = false;\n cell.forEachChildren((mark: Group) => {\n if (mark.name === 'axis') {\n isAxisComponent = true;\n return true;\n }\n return false;\n });\n if (isAxisComponent) {\n const axisConfig = table.internalProps.layoutMap.getAxisConfigInPivotChart(cell.col, cell.row);\n const cellStyle = table._getCellStyle(cell.col, cell.row);\n const padding = getQuadProps(getProp('padding', cellStyle, cell.col, cell.row, table));\n const axis = new CartesianAxis(axisConfig, cell.attribute.width, cell.attribute.height, padding, table);\n cell.clear();\n cell.appendChild(axis.component);\n axis.overlap();\n }\n }\n });\n }\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/refresh-node/update-chart.ts"],"names":[],"mappings":"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","file":"update-chart.js","sourcesContent":["import { isEqual } from '@visactor/vutils';\nimport type { PivotChart } from '../../PivotChart';\nimport { CartesianAxis } from '../../components/axis/axis';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Chart } from '../graphic/chart';\nimport type { Group } from '../graphic/group';\nimport type { Scenegraph } from '../scenegraph';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { getQuadProps } from '../utils/padding';\nimport { getProp } from '../utils/get-prop';\n\n/** 供调整列宽后更新chart使用 */\nexport function updateChartSize(scenegraph: Scenegraph, col: number) {\n // 将调整列宽的后面的面也都一起需要调整viewbox。 TODO:columnResizeType支持后需要根据变化的列去调整,范围可能变多或者变少\n for (let c = col; c <= scenegraph.proxy.colEnd; c++) {\n const columnGroup = scenegraph.getColGroup(c);\n // const chartInstance = (columnGroup.attribute as any)?.chartInstance;\n // if (chartInstance) {\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n const width = scenegraph.table.getColWidth(cellNode.col);\n const height = scenegraph.table.getRowHeight(cellNode.row);\n\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n // 调试问题使用\n // if (columnGroup.col === 2) {\n // columnGroup.AABBBounds.width();\n // node.AABBBounds.width();\n // console.log(\n // 'set viewbox y1',\n // Math.ceil(cellNode.globalAABBBounds.y1 + node.attribute.cellPadding[0] + scenegraph.table.scrollTop),\n // node.globalAABBBounds.height()\n // );\n\n // console.log(\n // 'updateChartSize',\n // columnGroup,\n // columnGroup.globalAABBBounds.y1,\n // cellNode.globalAABBBounds.y1,\n // node.globalAABBBounds.y1\n // );\n // }\n\n node.cacheCanvas = null;\n node.setAttribute('width', Math.ceil(width - node.attribute.cellPadding[3] - node.attribute.cellPadding[1]));\n node.setAttribute(\n 'height',\n Math.ceil(height - node.attribute.cellPadding[0] - node.attribute.cellPadding[2])\n );\n\n // node.setAttribute('viewBox', {\n // x1: Math.ceil(cellNode.globalAABBBounds.x1 + node.attribute.cellPadding[3] + scenegraph.table.scrollLeft),\n // x2: Math.ceil(\n // cellNode.globalAABBBounds.x1 + width - node.attribute.cellPadding[1] + scenegraph.table.scrollLeft\n // ),\n // y1: Math.ceil(cellNode.globalAABBBounds.y1 + node.attribute.cellPadding[0] + scenegraph.table.scrollTop),\n // y2: Math.ceil(\n // cellNode.globalAABBBounds.y1 + height - node.attribute.cellPadding[2] + scenegraph.table.scrollTop\n // )\n // });\n }\n });\n });\n // }\n }\n // 右侧冻结的单元格也需要调整\n if (!scenegraph.table.isPivotChart() && scenegraph.table.rightFrozenColCount >= 1) {\n for (\n let c = scenegraph.table.colCount - scenegraph.table.rightFrozenColCount;\n c <= scenegraph.table.colCount - 1;\n c++\n ) {\n const columnGroup = scenegraph.getColGroup(c);\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n const width = scenegraph.table.getColWidth(cellNode.col);\n const height = scenegraph.table.getRowHeight(cellNode.row);\n\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n node.cacheCanvas = null;\n node.setAttribute(\n 'width',\n Math.ceil(width - node.attribute.cellPadding[3] - node.attribute.cellPadding[1])\n );\n node.setAttribute(\n 'height',\n Math.ceil(height - node.attribute.cellPadding[0] - node.attribute.cellPadding[2])\n );\n }\n });\n });\n }\n }\n}\n\n/** 清理所有chart节点的 图表缓存图片 */\nexport function clearChartCacheImage(scenegraph: Scenegraph) {\n // 将调整列宽的后面的面也都一起需要调整viewbox。 TODO:columnResizeType支持后需要根据变化的列去调整,范围可能变多或者变少\n for (let c = scenegraph.proxy.colStart; c <= scenegraph.proxy.colEnd; c++) {\n const columnGroup = scenegraph.getColGroup(c);\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n node.cacheCanvas = null;\n node.addUpdateBoundTag();\n }\n });\n });\n }\n}\n\nexport function clearCellChartCacheImage(col: number, row: number, scenegraph: Scenegraph) {\n // 将调整列宽的后面的面也都一起需要调整viewbox。 TODO:columnResizeType支持后需要根据变化的列去调整,范围可能变多或者变少\n const cellGroup = scenegraph.getCell(col, row);\n cellGroup.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n node.cacheCanvas = null;\n node.addUpdateBoundTag();\n }\n });\n}\n\n/** 更新所有的图表chart节点上缓存attribute中的data数据 */\nexport function updateChartData(scenegraph: Scenegraph) {\n const table = scenegraph.table;\n // 将调整列宽的后面的面也都一起需要调整viewbox。 TODO:columnResizeType支持后需要根据变化的列去调整,范围可能变多或者变少\n for (let c = scenegraph.proxy.colStart; c <= scenegraph.proxy.colEnd; c++) {\n const columnGroup = scenegraph.getColGroup(c);\n columnGroup?.getChildren()?.forEach((cellNode: Group) => {\n const col = cellNode.col;\n const row = cellNode.row;\n cellNode.children.forEach((node: Chart) => {\n if ((node as any).type === 'chart') {\n node.updateData(table.getCellValue(col, row));\n const newAxes = table.internalProps.layoutMap.getChartAxes(col, row);\n node.setAttribute('axes', newAxes);\n const chartSpec = node.attribute.spec;\n chartSpec.axes = newAxes;\n node.setAttribute('spec', chartSpec);\n // node.addUpdateBoundTag();\n }\n });\n });\n }\n\n // update left axes\n updateTableAxes(scenegraph.rowHeaderGroup, scenegraph.table);\n // update top axes\n updateTableAxes(scenegraph.colHeaderGroup, scenegraph.table);\n // update right axes\n updateTableAxes(scenegraph.rightFrozenGroup, scenegraph.table);\n // update bottom axes\n updateTableAxes(scenegraph.bottomFrozenGroup, scenegraph.table);\n}\n/** 组织图表数据状态_selectedDataItemsInChart 更新选中的图表图元状态 */\nexport function updateChartState(scenegraph: Scenegraph, datum: any) {\n const table = scenegraph.table;\n if (table.isPivotChart()) {\n const preSelectItemsCount = (table as PivotChart)._selectedDataItemsInChart.length;\n if ((datum === null || datum?.length === 0 || Object.keys(datum).length === 0) && preSelectItemsCount === 0) {\n //避免无效的更新\n return;\n }\n // (table as PivotChart)._selectedDataItemsInChart = [];\n const newSelectedDataItemsInChart = [];\n if (Array.isArray(datum)) {\n datum.forEach((dataItem: any) => {\n if (dataItem && dataItem.key !== 0 && Object.keys(dataItem).length > 0) {\n //本以为没有点击到图元上 datum为空 发现是{key:0}或者{}\n const selectedState = {};\n for (const itemKey in dataItem) {\n if (!itemKey.startsWith('VGRAMMAR_') && !itemKey.startsWith('__VCHART')) {\n selectedState[itemKey] = dataItem[itemKey];\n }\n }\n newSelectedDataItemsInChart.push(selectedState);\n }\n });\n } else if (datum && datum.key !== 0 && Object.keys(datum).length > 0) {\n //本以为没有点击到图元上 datum为空 发现是{key:0}或者{}\n const selectedState = {};\n for (const itemKey in datum) {\n if (!itemKey.startsWith('VGRAMMAR_') && !itemKey.startsWith('__VCHART')) {\n selectedState[itemKey] = datum[itemKey];\n }\n }\n newSelectedDataItemsInChart.push(selectedState);\n }\n //避免无效的更新\n if (!isEqual((table as PivotChart)._selectedDataItemsInChart, newSelectedDataItemsInChart)) {\n (table as PivotChart)._selectedDataItemsInChart = newSelectedDataItemsInChart;\n (table.internalProps.layoutMap as PivotHeaderLayoutMap).updateDataStateToChartInstance();\n // 清楚chart缓存图片\n clearChartCacheImage(scenegraph);\n table.scenegraph.updateNextFrame();\n }\n }\n}\n\n/**\n * @description: update table axis component\n * @param {Group} containerGroup\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction updateTableAxes(containerGroup: Group, table: BaseTableAPI) {\n containerGroup.forEachChildren((column: Group) => {\n if (column.role === 'column') {\n column.forEachChildren((cell: Group) => {\n if (cell.role === 'cell') {\n let isAxisComponent = false;\n cell.forEachChildren((mark: Group) => {\n if (mark.name === 'axis') {\n isAxisComponent = true;\n return true;\n }\n return false;\n });\n if (isAxisComponent) {\n const axisConfig = table.internalProps.layoutMap.getAxisConfigInPivotChart(cell.col, cell.row);\n const cellStyle = table._getCellStyle(cell.col, cell.row);\n const padding = getQuadProps(getProp('padding', cellStyle, cell.col, cell.row, table));\n const axis = new CartesianAxis(axisConfig, cell.attribute.width, cell.attribute.height, padding, table);\n cell.clear();\n cell.appendChild(axis.component);\n axis.overlap();\n }\n }\n });\n }\n });\n}\n"]}
@@ -74,7 +74,8 @@ export class Scenegraph {
74
74
  constructor(table) {
75
75
  let width, height;
76
76
  this._needUpdateContainer = !1, this.table = table, this.hasFrozen = !1, this.clear = !0,
77
- this.mergeMap = new Map, setPoptipTheme(this.table.theme.textPopTipStyle), "node" === Env.mode ? (vglobal.setEnv("node", table.options.modeParams),
77
+ this.mergeMap = new Map, setPoptipTheme(this.table.theme.textPopTipStyle), table.options.canvas && table.options.viewBox ? (vglobal.setEnv("browser"),
78
+ width = table.options.viewBox.x2 - table.options.viewBox.x1, height = table.options.viewBox.y2 - table.options.viewBox.y1) : "node" === Env.mode ? (vglobal.setEnv("node", table.options.modeParams),
78
79
  width = table.canvasWidth, height = table.canvasHeight) : (vglobal.setEnv("browser"),
79
80
  width = table.canvas.width, height = table.canvas.height), this.stage = createStage({
80
81
  canvas: table.canvas,
@@ -84,9 +85,14 @@ export class Scenegraph {
84
85
  background: table.theme.underlayBackgroundColor,
85
86
  dpr: table.internalProps.pixelRatio,
86
87
  enableLayout: !0,
87
- afterRender: () => {
88
- this.table.fireListeners("after_render", null);
89
- }
88
+ beforeRender: stage => {
89
+ this.table.options.beforeRender && this.table.options.beforeRender(stage);
90
+ },
91
+ afterRender: stage => {
92
+ this.table.options.afterRender && this.table.options.afterRender(stage), this.table.fireListeners("after_render", null);
93
+ },
94
+ canvasControled: !table.options.canvas,
95
+ viewBox: table.options.viewBox
90
96
  }), this.stage.defaultLayer.setTheme({
91
97
  group: {
92
98
  boundsPadding: 0,
@@ -483,9 +489,9 @@ export class Scenegraph {
483
489
  }
484
490
  _updateContainerHeight(row, detaY) {
485
491
  row < this.table.frozenRowCount ? (this.colHeaderGroup.setDeltaHeight(detaY), this.cornerHeaderGroup.setDeltaHeight(detaY),
486
- this.rowHeaderGroup.setDeltaY(detaY), this.bodyGroup.setDeltaY(detaY), this.rightFrozenGroup.setDeltaY(detaY)) : row >= this.table.rowCount - this.table.bottomFrozenRowCount ? (this.leftBottomCornerGroup.setDeltaHeight(detaY),
487
- this.bottomFrozenGroup.setDeltaHeight(detaY), this.rightBottomCornerGroup.setDeltaHeight(detaY)) : (this.rowHeaderGroup.setDeltaHeight(detaY),
488
- this.bodyGroup.setDeltaHeight(detaY), this.rightFrozenGroup.setDeltaHeight(detaY));
492
+ this.rowHeaderGroup.setDeltaY(detaY), this.bodyGroup.setDeltaY(detaY), this.table.rightFrozenColCount && this.rightFrozenGroup.setDeltaY(detaY)) : row >= this.table.rowCount - this.table.bottomFrozenRowCount ? (this.leftBottomCornerGroup.setDeltaHeight(detaY),
493
+ this.bottomFrozenGroup.setDeltaHeight(detaY), this.table.rightFrozenColCount && this.rightBottomCornerGroup.setDeltaHeight(detaY)) : (this.rowHeaderGroup.setDeltaHeight(detaY),
494
+ this.bodyGroup.setDeltaHeight(detaY), this.table.rightFrozenColCount && this.rightFrozenGroup.setDeltaHeight(detaY));
489
495
  }
490
496
  updateContainerHeight(row, detaY) {
491
497
  this._updateContainerHeight(row, detaY), this.updateTableSize(), this.component.updateScrollBar(),
@@ -497,7 +503,7 @@ export class Scenegraph {
497
503
  }
498
504
  setRowHeight(row, height) {
499
505
  const oldHeight = this.table.getRowHeight(row);
500
- oldHeight !== height && ((row >= this.proxy.rowStart && row <= this.proxy.rowEnd || row >= this.table.rowCount - this.table.bottomFrozenRowCount && row <= this.table.rowCount - 1) && this.updateRowHeight(row, height - oldHeight),
506
+ oldHeight !== height && ((row >= this.proxy.rowStart && row <= this.proxy.rowEnd || row >= this.table.rowCount - this.table.bottomFrozenRowCount && row <= this.table.rowCount - 1 || row < this.table.frozenRowCount) && this.updateRowHeight(row, height - oldHeight),
501
507
  this.table._clearRowRangeHeightsMap(row));
502
508
  }
503
509
  setX(x, isEnd = !1) {