@visactor/vtable 1.26.7 → 1.26.8

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 (183) hide show
  1. package/cjs/ListTable.d.ts +1 -1
  2. package/cjs/ListTable.js +21 -13
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.js +16 -16
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable.d.ts +1 -1
  7. package/cjs/PivotTable.js +65 -63
  8. package/cjs/PivotTable.js.map +1 -1
  9. package/cjs/body-helper/body-helper.js +2 -1
  10. package/cjs/components/index.js +1 -2
  11. package/cjs/core/BaseTable.js +2 -2
  12. package/cjs/core/BaseTable.js.map +1 -1
  13. package/cjs/core/record-helper.d.ts +1 -1
  14. package/cjs/core/record-helper.js +60 -12
  15. package/cjs/core/record-helper.js.map +1 -1
  16. package/cjs/core/tableHelper.js +2 -1
  17. package/cjs/data/DataSource.d.ts +3 -1
  18. package/cjs/data/DataSource.js +71 -23
  19. package/cjs/data/DataSource.js.map +1 -1
  20. package/cjs/dataset/dataset.d.ts +9 -1
  21. package/cjs/dataset/dataset.js +344 -187
  22. package/cjs/dataset/dataset.js.map +1 -1
  23. package/cjs/event/event.d.ts +94 -8
  24. package/cjs/event/event.js +698 -191
  25. package/cjs/event/event.js.map +1 -1
  26. package/cjs/event/helper.js +1 -1
  27. package/cjs/event/media-click.js +4 -1
  28. package/cjs/event/media-click.js.map +1 -1
  29. package/cjs/event/scroll.js +1 -1
  30. package/cjs/event/sparkline-event.js +1 -2
  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/pivot-header-layout.js +33 -17
  37. package/cjs/layout/pivot-header-layout.js.map +1 -1
  38. package/cjs/plugins/custom-cell-style.js +1 -1
  39. package/cjs/plugins/index.js +2 -1
  40. package/cjs/plugins/interface.js +1 -1
  41. package/cjs/plugins/invert-highlight.js +1 -1
  42. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  43. package/cjs/plugins/plugin-manager.js +1 -1
  44. package/cjs/scenegraph/group-creater/cell-helper.js +27 -10
  45. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  46. package/cjs/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
  47. package/cjs/scenegraph/group-creater/cell-type/text-cell.js +14 -10
  48. package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  49. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +17 -4
  50. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  51. package/cjs/scenegraph/layout/compute-col-width.js +6 -1
  52. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  53. package/cjs/scenegraph/layout/compute-row-height.js +11 -3
  54. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  55. package/cjs/scenegraph/layout/update-height.d.ts +4 -3
  56. package/cjs/scenegraph/layout/update-height.js +43 -29
  57. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  58. package/cjs/scenegraph/layout/update-width.d.ts +2 -1
  59. package/cjs/scenegraph/layout/update-width.js +49 -37
  60. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  61. package/cjs/scenegraph/scenegraph.d.ts +2 -2
  62. package/cjs/scenegraph/scenegraph.js +6 -5
  63. package/cjs/scenegraph/scenegraph.js.map +1 -1
  64. package/cjs/scenegraph/utils/corner-custom-merge.d.ts +10 -0
  65. package/cjs/scenegraph/utils/corner-custom-merge.js +68 -0
  66. package/cjs/scenegraph/utils/corner-custom-merge.js.map +1 -0
  67. package/cjs/state/resize/update-resize-column.js +25 -13
  68. package/cjs/state/resize/update-resize-column.js.map +1 -1
  69. package/cjs/state/resize/update-resize-row.js +24 -12
  70. package/cjs/state/resize/update-resize-row.js.map +1 -1
  71. package/cjs/themes.d.ts +4 -2
  72. package/cjs/themes.js +12 -4
  73. package/cjs/themes.js.map +1 -1
  74. package/cjs/tools/get-data-path/create-dataset.js +4 -4
  75. package/cjs/tools/get-data-path/create-dataset.js.map +1 -1
  76. package/cjs/tools/get-data-path/index.js +4 -4
  77. package/cjs/tools/get-data-path/index.js.map +1 -1
  78. package/cjs/tools/style.d.ts +3 -1
  79. package/cjs/tools/style.js +2 -2
  80. package/cjs/tools/style.js.map +1 -1
  81. package/cjs/ts-types/common.d.ts +1 -0
  82. package/cjs/ts-types/common.js.map +1 -1
  83. package/cjs/ts-types/dataset/aggregation.d.ts +1 -0
  84. package/cjs/ts-types/dataset/aggregation.js +21 -3
  85. package/cjs/ts-types/dataset/aggregation.js.map +1 -1
  86. package/cjs/ts-types/new-data-set.d.ts +1 -0
  87. package/cjs/ts-types/new-data-set.js.map +1 -1
  88. package/cjs/ts-types/table-engine.d.ts +3 -2
  89. package/cjs/ts-types/table-engine.js.map +1 -1
  90. package/cjs/vrender.js.map +1 -1
  91. package/dist/vtable.js +2224 -779
  92. package/dist/vtable.min.js +1 -1
  93. package/es/ListTable.d.ts +1 -1
  94. package/es/ListTable.js +21 -15
  95. package/es/ListTable.js.map +1 -1
  96. package/es/PivotChart.js +16 -16
  97. package/es/PivotChart.js.map +1 -1
  98. package/es/PivotTable.d.ts +1 -1
  99. package/es/PivotTable.js +65 -63
  100. package/es/PivotTable.js.map +1 -1
  101. package/es/body-helper/body-helper.js +2 -1
  102. package/es/components/index.js +1 -2
  103. package/es/core/BaseTable.js +2 -2
  104. package/es/core/BaseTable.js.map +1 -1
  105. package/es/core/record-helper.d.ts +1 -1
  106. package/es/core/record-helper.js +60 -12
  107. package/es/core/record-helper.js.map +1 -1
  108. package/es/core/tableHelper.js +2 -1
  109. package/es/data/DataSource.d.ts +3 -1
  110. package/es/data/DataSource.js +70 -23
  111. package/es/data/DataSource.js.map +1 -1
  112. package/es/dataset/dataset.d.ts +9 -1
  113. package/es/dataset/dataset.js +341 -187
  114. package/es/dataset/dataset.js.map +1 -1
  115. package/es/event/event.d.ts +94 -8
  116. package/es/event/event.js +696 -191
  117. package/es/event/event.js.map +1 -1
  118. package/es/event/helper.js +1 -1
  119. package/es/event/media-click.js +4 -1
  120. package/es/event/media-click.js.map +1 -1
  121. package/es/event/scroll.js +1 -1
  122. package/es/event/sparkline-event.js +1 -2
  123. package/es/event/util.js +2 -2
  124. package/es/event/util.js.map +1 -1
  125. package/es/index.d.ts +1 -1
  126. package/es/index.js +1 -1
  127. package/es/index.js.map +1 -1
  128. package/es/layout/pivot-header-layout.js +29 -17
  129. package/es/layout/pivot-header-layout.js.map +1 -1
  130. package/es/plugins/custom-cell-style.js +1 -1
  131. package/es/plugins/index.js +2 -1
  132. package/es/plugins/interface.js +1 -1
  133. package/es/plugins/invert-highlight.js +1 -1
  134. package/es/plugins/list-tree-stick-cell.js +1 -1
  135. package/es/plugins/plugin-manager.js +1 -1
  136. package/es/scenegraph/group-creater/cell-helper.js +23 -9
  137. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  138. package/es/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
  139. package/es/scenegraph/group-creater/cell-type/text-cell.js +13 -8
  140. package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  141. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +17 -5
  142. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  143. package/es/scenegraph/layout/compute-col-width.js +6 -1
  144. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  145. package/es/scenegraph/layout/compute-row-height.js +11 -3
  146. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  147. package/es/scenegraph/layout/update-height.d.ts +4 -3
  148. package/es/scenegraph/layout/update-height.js +40 -26
  149. package/es/scenegraph/layout/update-height.js.map +1 -1
  150. package/es/scenegraph/layout/update-width.d.ts +2 -1
  151. package/es/scenegraph/layout/update-width.js +46 -34
  152. package/es/scenegraph/layout/update-width.js.map +1 -1
  153. package/es/scenegraph/scenegraph.d.ts +2 -2
  154. package/es/scenegraph/scenegraph.js +7 -5
  155. package/es/scenegraph/scenegraph.js.map +1 -1
  156. package/es/scenegraph/utils/corner-custom-merge.d.ts +10 -0
  157. package/es/scenegraph/utils/corner-custom-merge.js +59 -0
  158. package/es/scenegraph/utils/corner-custom-merge.js.map +1 -0
  159. package/es/state/resize/update-resize-column.js +19 -10
  160. package/es/state/resize/update-resize-column.js.map +1 -1
  161. package/es/state/resize/update-resize-row.js +19 -9
  162. package/es/state/resize/update-resize-row.js.map +1 -1
  163. package/es/themes.d.ts +4 -2
  164. package/es/themes.js +11 -3
  165. package/es/themes.js.map +1 -1
  166. package/es/tools/get-data-path/create-dataset.js +4 -4
  167. package/es/tools/get-data-path/create-dataset.js.map +1 -1
  168. package/es/tools/get-data-path/index.js +4 -4
  169. package/es/tools/get-data-path/index.js.map +1 -1
  170. package/es/tools/style.d.ts +3 -1
  171. package/es/tools/style.js +2 -2
  172. package/es/tools/style.js.map +1 -1
  173. package/es/ts-types/common.d.ts +1 -0
  174. package/es/ts-types/common.js.map +1 -1
  175. package/es/ts-types/dataset/aggregation.d.ts +1 -0
  176. package/es/ts-types/dataset/aggregation.js +21 -3
  177. package/es/ts-types/dataset/aggregation.js.map +1 -1
  178. package/es/ts-types/new-data-set.d.ts +1 -0
  179. package/es/ts-types/new-data-set.js.map +1 -1
  180. package/es/ts-types/table-engine.d.ts +3 -2
  181. package/es/ts-types/table-engine.js.map +1 -1
  182. package/es/vrender.js.map +1 -1
  183. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/layout/compute-row-height.ts"],"names":[],"mappings":"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","file":"compute-row-height.js","sourcesContent":["import type { Group as VGroup } from './../../vrender';\nimport { RichText, Text } from './../../vrender';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { validToString } from '../../tools/util';\nimport type {\n ColumnIconOption,\n ColumnTypeOption,\n IRowSeriesNumber,\n ListTableAPI,\n ListTableConstructorOptions\n} from '../../ts-types';\nimport { IconPosition } from '../../ts-types';\nimport type { BaseTableAPI, HeaderData } from '../../ts-types/base-table';\nimport type { ColumnData, ColumnDefine, TextColumnDefine } from '../../ts-types/list-table/layout-map/api';\nimport { getProp } from '../utils/get-prop';\nimport { getQuadProps } from '../utils/padding';\nimport { dealWithRichTextIcon } from '../utils/text-icon-layout';\nimport type { ComputeAxisComponentHeight } from '../../components/axis/get-axis-component-size';\nimport { Factory } from '../../core/factory';\nimport { isArray, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport { CheckBox } from './../../vrender';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\nimport { getCellMergeRange } from '../../tools/merge-range';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\nimport { getHierarchyOffset } from '../utils/get-hierarchy-offset';\nimport {\n computeButtonCellHeight,\n computeCheckboxCellHeight,\n computeRadioCellHeight,\n computeSwitchCellHeight\n} from './height-util';\nimport { measureTextBounds } from '../utils/text-measure';\nimport { breakString } from '../utils/break-string';\nimport { emptyCustomLayout } from '../../components/react/react-custom-layout';\n\nconst utilRichTextMark = new RichText({\n width: 0,\n height: 0,\n textConfig: []\n});\n\nexport function computeRowsHeight(\n table: BaseTableAPI,\n rowStart?: number,\n rowEnd?: number,\n isClearRowRangeHeightsMap: boolean = true,\n update?: boolean\n): void {\n // const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n\n const oldRowHeights: number[] = [];\n const newHeights: number[] = [];\n if (update) {\n for (let row = rowStart; row <= rowEnd; row++) {\n // oldRowHeights.push(table.getRowHeight(row));\n oldRowHeights[row] = table.getRowHeight(row);\n }\n }\n\n const layoutMap = table.internalProps.layoutMap;\n if (table.isPivotTable()) {\n (layoutMap as PivotHeaderLayoutMap).enableUseGetBodyCache();\n (layoutMap as PivotHeaderLayoutMap).enableUseHeaderPathCache();\n }\n\n table.defaultHeaderRowHeight;\n table.defaultHeaderColWidth;\n const isDefaultHeaderHasAuto =\n table.defaultHeaderRowHeight === 'auto' ||\n (isArray(table.defaultHeaderRowHeight) && table.defaultHeaderRowHeight.some(item => item === 'auto'));\n const isAllRowsAuto =\n table.isAutoRowHeight(rowStart) ||\n (table.heightMode === 'adaptive' && table.options.autoHeightInAdaptiveMode !== false);\n const isDefaultRowHeightIsAuto = table.options.defaultRowHeight === 'auto';\n\n if (isAllRowsAuto || isDefaultHeaderHasAuto || isDefaultRowHeightIsAuto) {\n rowStart = rowStart ?? 0;\n rowEnd = rowEnd ?? table.rowCount - 1;\n\n // clear rowRangeHeightsMap\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n // else {\n // for (let row = rowStart; row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);\n // }\n // }\n\n // compute header row in column header row\n for (let row = rowStart; row < table.columnHeaderLevelCount; row++) {\n let startCol = 0;\n let endCol = table.colCount - 1;\n if (\n ((table.isPivotTable() && !table.isPivotChart()) ||\n (table.isPivotChart() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)) && // no top axis\n checkPivotFixedStyleAndNoWrap(table, row) &&\n !getCellMergeInfo(table, table.rowHeaderLevelCount, row)\n ) {\n // 列表头样式一致,只计算第一列行高,作为整行行高\n startCol = 0;\n endCol = table.rowHeaderLevelCount;\n }\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, startCol, endCol, table);\n newHeights[row] = Math.round(height);\n //表头部分需要马上设置到缓存中 因为adaptive不会调整表头的高度 另外后面adaptive处理过程中有取值 table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n if (table.heightAdaptiveMode === 'only-body' || !update) {\n table._setRowHeight(row, height);\n }\n }\n }\n\n // compute bottom frozen row\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n if (rowEnd < table.columnHeaderLevelCount || (!isAllRowsAuto && !isDefaultRowHeightIsAuto)) {\n // do nothing\n } else {\n // compute body row\n if (\n // 以列展示 且符合只需要计算第一行其他行可复用行高的条条件\n !(\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) &&\n !(table.options as ListTableConstructorOptions).customComputeRowHeight &&\n !(table.options as ListTableConstructorOptions).rowHeightConfig &&\n checkFixedStyleAndNoWrap(table, rowStart)\n ) {\n // check fixed style and no wrap situation, fill all row width single compute\n // traspose table and row indicator pivot table cannot use single row height\n const height = computeRowHeight(table.columnHeaderLevelCount, 0, table.colCount - 1, table);\n fillRowsHeight(\n height,\n table.columnHeaderLevelCount,\n table.rowCount - 1 - table.bottomFrozenRowCount,\n table,\n update ? newHeights : undefined\n );\n //底部冻结的行行高需要单独计算\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else if (\n // 以行展示\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) {\n // check fixed style and no wrap situation, just compute 0-table.rowHeaderLevelCount column(the column after row header) in ervey row\n // in traspose table and row indicator pivot table\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);//注释掉 注意有无缓存问题\n let height;\n if (checkFixedStyleAndNoWrapForTranspose(table, row)) {\n // 以行展示 只计算到body第一列样式的情况即可\n height = computeRowHeight(row, 0, table.rowHeaderLevelCount, table);\n } else {\n height = computeRowHeight(row, 0, table.colCount - 1, table);\n }\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else {\n // 以列展示 需要逐行计算情况\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row); //注释掉 注意有无缓存问题\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n }\n } else {\n if (table.heightMode === 'adaptive' || table.autoFillHeight) {\n // for tree mode\n // getRowHeight() in adaptive will return scaled height\n table.clearRowHeightCache();\n }\n if (update) {\n for (let row = rowStart; row <= rowEnd; row++) {\n newHeights[row] = table.getRowHeight(row);\n }\n }\n }\n\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n\n // 处理adaptive高度\n if (table.heightMode === 'adaptive') {\n table._clearRowRangeHeightsMap();\n // const canvasWidth = table.internalProps.canvas.width;\n let totalDrawHeight = table.tableNoFrameHeight;\n let startRow = 0;\n let endRow = table.rowCount;\n if (table.heightAdaptiveMode === 'only-body') {\n const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\n totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\n startRow = table.columnHeaderLevelCount;\n endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n }\n let actualHeight = 0;\n for (let row = startRow; row < endRow; row++) {\n actualHeight += update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row);\n }\n const factor = totalDrawHeight / actualHeight;\n for (let row = startRow; row < endRow; row++) {\n let rowHeight;\n if (row === endRow - 1) {\n rowHeight =\n totalDrawHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= startRow && index <= endRow - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(startRow, endRow - 2));\n } else {\n rowHeight = Math.round(\n (update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row)) * factor\n );\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n } else if (table.autoFillHeight) {\n table._clearRowRangeHeightsMap();\n const canvasHeight = table.tableNoFrameHeight;\n let actualHeight = 0;\n let actualHeaderHeight = 0;\n for (let row = 0; row < table.rowCount; row++) {\n const rowHeight = update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row);\n if (\n row < table.columnHeaderLevelCount ||\n (table.isPivotChart() && row >= table.rowCount - table.bottomFrozenRowCount)\n ) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n table.scenegraph._dealAutoFillHeightOriginRowsHeight = actualHeight;\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (actualHeight < canvasHeight && actualHeight - actualHeaderHeight > 0) {\n const startRow = table.columnHeaderLevelCount;\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = startRow; row < endRow; row++) {\n // if (update) {\n // newHeights[row] = newHeights[row] * factor;\n // } else {\n // table.setRowHeight(row, table.getRowHeight(row) * factor);\n // }\n let rowHeight;\n if (row === endRow - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= startRow && index <= endRow - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(startRow, endRow - 2));\n } else {\n rowHeight = Math.round(\n (update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row)) * factor\n );\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n }\n }\n\n if (update) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const newRowHeight = newHeights[row] ?? table.getRowHeight(row);\n // if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // table._setRowHeight(row, newRowHeight);\n // }\n if (isValid(newRowHeight)) {\n table._setRowHeight(row, newRowHeight);\n }\n }\n\n for (let row = 0; row <= table.frozenRowCount - 1; row++) {\n const newRowHeight = table.getRowHeight(row);\n if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - (oldRowHeights[row] ?? table.getRowHeight(row)), true);\n }\n }\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= table.rowCount - 1; row++) {\n const newRowHeight = table.getRowHeight(row);\n if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - (oldRowHeights[row] ?? table.getRowHeight(row)), true);\n }\n }\n\n // update body row\n for (let row = table.scenegraph.proxy.rowStart; row <= table.scenegraph.proxy.rowEnd; row++) {\n const newRowHeight = table.getRowHeight(row);\n if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - (oldRowHeights[row] ?? table.getRowHeight(row)), true);\n }\n }\n }\n // console.log('computeRowsHeight time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, rowStart, rowEnd);\n\n if (table.isPivotTable()) {\n (layoutMap as PivotHeaderLayoutMap).disableUseGetBodyCache();\n (layoutMap as PivotHeaderLayoutMap).disableUseHeaderPathCache();\n }\n}\n\nexport function computeRowHeight(row: number, startCol: number, endCol: number, table: BaseTableAPI): number {\n return computeRowHeightInternal(row, startCol, endCol, table, true);\n}\n\nfunction computeRowHeightInternal(\n row: number,\n startCol: number,\n endCol: number,\n table: BaseTableAPI,\n enableCustomCompute: boolean\n): number {\n const isAllRowsAuto =\n table.isAutoRowHeight(row) || (table.heightMode === 'adaptive' && table.options.autoHeightInAdaptiveMode !== false);\n if (!isAllRowsAuto && table.getDefaultRowHeight(row) !== 'auto') {\n return table.getDefaultRowHeight(row) as number;\n }\n\n let maxHeight;\n if (enableCustomCompute && table.options.customComputeRowHeight) {\n let realHeight: number;\n let hasRealHeight = false;\n const getRealHeight = () => {\n if (!hasRealHeight) {\n realHeight = computeRowHeightInternal(row, startCol, endCol, table, false);\n hasRealHeight = true;\n }\n return realHeight;\n };\n const computeArgs = {\n row,\n table\n } as Parameters<NonNullable<BaseTableAPI['options']['customComputeRowHeight']>>[0];\n Object.defineProperty(computeArgs, 'realHeight', {\n get: getRealHeight,\n enumerable: false,\n configurable: true\n });\n const customRowHeight = table.options.customComputeRowHeight(computeArgs);\n if (typeof customRowHeight === 'number') {\n return customRowHeight;\n } else if (customRowHeight === 'auto') {\n return getRealHeight();\n }\n return table.getDefaultRowHeight(row) as number;\n }\n if (table.internalProps.rowHeightConfig) {\n const rowHeightConfig = table.internalProps.rowHeightConfig.find((item: { key: number }) => item.key === row);\n if (rowHeightConfig) {\n if (!table.internalProps._heightResizedRowMap.has(row)) {\n table._setRowHeight(row, rowHeightConfig.height);\n table.internalProps._heightResizedRowMap.add(row); // add resize tag\n }\n return rowHeightConfig.height;\n }\n }\n // 如果是透视图\n if (\n table.isPivotChart() &&\n row >= table.columnHeaderLevelCount &&\n row < table.rowCount - table.bottomFrozenRowCount\n ) {\n let ifNeedComputeRowHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol;\n let isHeatmap = false;\n if (!(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n const chartSpec = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getChartSpec(\n table.rowHeaderLevelCount,\n row\n );\n if (chartSpec.type === 'heatmap') {\n isHeatmap = true;\n ifNeedComputeRowHeight = true;\n }\n }\n if (ifNeedComputeRowHeight) {\n //并且指标是以列展示 计算行高需要根据y轴的值域范围\n const optimunHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunHeightForChart(\n row,\n isHeatmap\n );\n if (optimunHeight > 0) {\n return optimunHeight;\n }\n } else {\n //直接拿默认行高\n const defaultHeight = table.getDefaultRowHeight(row);\n if (isNumber(defaultHeight)) {\n return defaultHeight;\n }\n }\n }\n for (let col = startCol; col <= endCol; col++) {\n // CustomRender height calculation\n const customHeight = computeCustomRenderHeight(col, row, table);\n if (customHeight) {\n maxHeight = isValid(maxHeight) ? Math.max(customHeight.height, maxHeight) : customHeight.height;\n if (!customHeight.renderDefault) {\n continue;\n }\n }\n\n // Axis component height calculation\n if (table.isPivotChart()) {\n const layout = table.internalProps.layoutMap as PivotHeaderLayoutMap;\n const axisConfig = layout.getAxisConfigInPivotChart(col, row);\n if (axisConfig) {\n const computeAxisComponentHeight: ComputeAxisComponentHeight =\n Factory.getFunction('computeAxisComponentHeight');\n const axisWidth = computeAxisComponentHeight(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxHeight = isValid(maxHeight) ? Math.max(axisWidth, maxHeight) : axisWidth;\n continue;\n }\n }\n }\n\n if (\n table.isPivotChart() &&\n ((table.isLeftFrozenColumn(col) && table.isBottomFrozenRow(row)) ||\n (table.isRightFrozenColumn(col) && table.isBottomFrozenRow(row)))\n ) {\n continue;\n }\n\n const cellType = table.getCellType(col, row);\n // if ( isValid(cellType) && cellType !== 'text' && cellType !== 'link' && cellType !== 'progressbar' && cellType !== 'checkbox') {\n // // text&link&progressbar测量文字宽度\n // // image&video&sparkline使用默认宽度\n // const defaultHeight = table.getDefaultRowHeight(row);\n // maxHeight = Math.max(maxHeight, isNumber(defaultHeight) ? defaultHeight : table.defaultRowHeight);\n // continue;\n // }\n\n // text height calculation\n const textHeight = computeTextHeight(col, row, cellType, table);\n maxHeight = isValid(maxHeight) ? Math.max(textHeight, maxHeight) : textHeight;\n }\n if (isValid(maxHeight)) {\n return maxHeight;\n }\n\n const defaultHeight = table.getDefaultRowHeight(row);\n return isNumber(defaultHeight) ? defaultHeight : table.defaultRowHeight;\n}\n\nfunction checkFixedStyleAndNoWrap(table: BaseTableAPI, rowStart: number): boolean {\n const { layoutMap } = table.internalProps;\n const row = table.columnHeaderLevelCount;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.internalProps.enableLineBreak || table.isPivotChart()) &&\n (table.isAutoRowHeight(rowStart) || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n for (let col = 0; col < table.colCount; col++) {\n const cellDefine = layoutMap.getBody(col, row);\n if (cellDefine.cellType === 'radio') {\n return false;\n }\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n (cellDefine.define as ColumnDefine)?.customRender ||\n (cellDefine.define as ColumnDefine)?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(col, row); //获取的style是结合了theme配置的style\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction checkFixedStyleAndNoWrapForTranspose(table: BaseTableAPI, row: number): boolean {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.internalProps.enableLineBreak) &&\n (table.isAutoRowHeight(row) || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n\n const cellDefine = layoutMap.getBody(table.rowHeaderLevelCount, row);\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n (cellDefine.define as ColumnDefine)?.customRender ||\n (cellDefine.define as ColumnDefine)?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction checkPivotFixedStyleAndNoWrap(table: BaseTableAPI, row: number) {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (table.internalProps.autoWrapText && (table.isAutoRowHeight(row) || table.options.heightMode === 'adaptive')) {\n return false;\n }\n\n const headerDefine = layoutMap.getHeader(table.rowHeaderLevelCount, row);\n if (\n typeof headerDefine.style === 'function' ||\n typeof (headerDefine as HeaderData).icons === 'function' ||\n (headerDefine.define as ColumnDefine)?.headerCustomRender ||\n (headerDefine.define as ColumnDefine)?.headerCustomLayout ||\n typeof headerDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const headerStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof headerStyle.padding === 'function' ||\n typeof headerStyle.fontSize === 'function' ||\n typeof headerStyle.lineHeight === 'function' ||\n headerStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction fillRowsHeight(\n height: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n newHeights: number[] | undefined\n) {\n if (table.internalProps.useOneRowHeightFillAll) {\n return;\n }\n for (let row = startRow; row <= endRow; row++) {\n if (newHeights) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n table.internalProps.useOneRowHeightFillAll = true;\n}\n\n/**\n * @description: compute customRender height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeCustomRenderHeight(col: number, row: number, table: BaseTableAPI) {\n const customRender = table.getCustomRender(col, row);\n let customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanRow = 1;\n let height = 0;\n let renderDefault = false;\n let enableCellPadding = false;\n let cellRange;\n if (\n table.isHeader(col, row) ||\n (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell ||\n table.hasCustomMerge()\n ) {\n cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n }\n const skipCellValue = shouldSkipCustomRenderCellValueForComputation(col, row, table);\n const arg = {\n col: cellRange?.start.col ?? col,\n row: cellRange?.start.row ?? row,\n dataValue: skipCellValue ? undefined : table.getCellOriginValue(col, row),\n value: skipCellValue ? undefined : table.getCellValue(col, row),\n rect: getCellRect(col, row, table),\n table,\n originCol: col,\n originRow: row,\n forComputation: true\n };\n if (customLayout === 'react-custom-layout') {\n // customLayout = table._reactCreateGraphic;\n customLayout = table.reactCustomLayout?.getCustomLayoutFunc(col, row) || emptyCustomLayout;\n }\n if (isFunction(customLayout)) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer) {\n customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n dealPercentCalc(customLayoutObj.rootContainer, table.getColWidth(col), 0);\n customLayoutObj.rootContainer.setStage(table.scenegraph.stage);\n height = (customLayoutObj.rootContainer as VGroup).AABBBounds.height() ?? 0;\n renderDefault = customLayoutObj.renderDefault;\n enableCellPadding = customLayoutObj.enableCellPadding;\n } else {\n height = 0;\n renderDefault = customLayoutObj.renderDefault;\n enableCellPadding = customLayoutObj.enableCellPadding;\n }\n } else if (typeof customRender === 'function') {\n // 处理customRender\n const customRenderObj = customRender(arg);\n height = customRenderObj?.expectedHeight ?? 0;\n renderDefault = customRenderObj?.renderDefault;\n } else {\n height = customRender?.expectedHeight ?? 0;\n renderDefault = customRender?.renderDefault;\n }\n if (enableCellPadding) {\n const actStyle = table._getCellStyle(col, row);\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n height += padding[0] + padding[2];\n }\n return {\n height: getMergedCellSingleRowHeight(height / spanRow, spanRow, table),\n renderDefault\n };\n }\n return undefined;\n}\n\nfunction shouldSkipCustomRenderCellValueForComputation(col: number, row: number, table: BaseTableAPI) {\n return (\n table.isListTable() && !table.isHeader(col, row) && !(table.internalProps.dataSource as any)?.dataSourceObj?.records\n );\n}\n\n/**\n * @description: compute text height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeTextHeight(col: number, row: number, cellType: ColumnTypeOption, table: BaseTableAPI): number {\n let maxHeight = 0;\n const cellValue = table.getCellValue(col, row);\n // const dataValue = table.getCellOriginValue(col, row);\n const actStyle = table._getCellStyle(col, row);\n let iconHeight = 0;\n let iconWidth = 0;\n const iconInlineFront: ColumnIconOption[] = [];\n let iconInlineFrontHeight = 0;\n const iconInlineEnd: ColumnIconOption[] = [];\n let iconInlineEndHeight = 0;\n // const define = table.getBodyColumnDefine(col, row);\n // const mayHaveIcon = table.getCellLocation(col, row) !== 'body' ? true : !!define?.icon || !!define?.tree;\n\n let mayHaveIcon = false;\n if (table.getCellLocation(col, row) !== 'body') {\n mayHaveIcon = true;\n } else {\n const define = table.getBodyColumnDefine(col, row);\n mayHaveIcon = !!define?.icon || !!(define as ColumnDefine)?.tree || (define as IRowSeriesNumber)?.dragOrder;\n }\n\n if (mayHaveIcon) {\n const icons = table.getCellIcons(col, row);\n icons?.forEach(icon => {\n if (\n icon.positionType !== IconPosition.absoluteRight &&\n icon.positionType !== IconPosition.inlineFront &&\n icon.positionType !== IconPosition.inlineEnd\n ) {\n iconWidth += (icon.width ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0);\n iconHeight = Math.max(iconHeight, icon.height ?? 0);\n } else if (icon.positionType === IconPosition.inlineFront) {\n iconInlineFront.push(icon);\n iconInlineFrontHeight = Math.max(\n iconInlineFrontHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n } else if (icon.positionType === IconPosition.inlineEnd) {\n iconInlineEnd.push(icon);\n iconInlineEndHeight = Math.max(\n iconInlineEndHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n }\n });\n }\n let spanRow = 1;\n let endCol = col;\n if (\n table.isHeader(col, row) ||\n (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell ||\n table.hasCustomMerge()\n ) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n col = cellRange.start.col;\n endCol = cellRange.end.col;\n }\n\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n const fontSize = getProp('fontSize', actStyle, col, row, table);\n const fontStyle = getProp('fontStyle', actStyle, col, row, table);\n const fontWeight = getProp('fontWeight', actStyle, col, row, table);\n const lineHeight = getProp('lineHeight', actStyle, col, row, table) ?? fontSize;\n const fontFamily = getProp('fontFamily', actStyle, col, row, table);\n const autoWrapText = getProp('autoWrapText', actStyle, col, row, table);\n const lineClamp = getProp('lineClamp', actStyle, col, row, table);\n\n // underline\n const underline = getProp('underline', actStyle, col, row, table); // boolean\n const underlineOffset = getProp('underlineOffset', actStyle, col, row, table) ?? 0;\n\n let text;\n if (\n cellType !== 'text' &&\n cellType !== 'link' &&\n cellType !== 'progressbar' &&\n cellType !== 'checkbox' &&\n cellType !== 'radio' &&\n cellType !== 'switch' &&\n cellType !== 'button'\n ) {\n maxHeight = lineHeight;\n } else if (cellType === 'checkbox') {\n maxHeight = computeCheckboxCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else if (cellType === 'radio') {\n maxHeight = computeRadioCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else if (cellType === 'switch') {\n maxHeight = computeSwitchCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else if (cellType === 'button') {\n maxHeight = computeButtonCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else {\n // text\n text = cellValue;\n const lines = breakString(text, table).text;\n const cellWidth = table.getColsWidth(col, endCol);\n\n if (iconInlineFront.length || iconInlineEnd.length) {\n if (autoWrapText) {\n const textOption = Object.assign({\n text: cellValue?.toString(),\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n lineHeight\n });\n textOption.textBaseline = 'middle';\n const textConfig = [\n ...iconInlineFront.map(icon => dealWithRichTextIcon(icon)),\n textOption,\n ...iconInlineEnd.map(icon => dealWithRichTextIcon(icon))\n ];\n utilRichTextMark.setAttributes({\n width: cellWidth - (padding[1] + padding[3]) - iconWidth,\n height: 0,\n textConfig\n });\n maxHeight = utilRichTextMark.AABBBounds.height();\n } else {\n maxHeight = 0;\n lines.forEach((line: string, index: number) => {\n if (table.options.customConfig?.multilinesForXTable && index !== 0) {\n return;\n }\n if (index === 0 && iconInlineFront.length) {\n maxHeight += Math.max(lineHeight, iconInlineFrontHeight);\n } else if (index === lines.length - 1 && iconInlineEnd.length) {\n maxHeight += Math.max(lineHeight, iconInlineEndHeight);\n } else {\n maxHeight += lineHeight;\n }\n });\n }\n } else if (autoWrapText) {\n const hierarchyOffset = getHierarchyOffset(col, row, table);\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth - hierarchyOffset;\n const bounds = measureTextBounds({\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word',\n whiteSpace: lines.length === 1 && !autoWrapText ? 'no-wrap' : 'normal',\n lineClamp\n });\n maxHeight =\n (bounds.height() || (typeof lineHeight === 'number' ? lineHeight : fontSize)) +\n (underline ? underlineOffset : 0);\n } else {\n // autoWrapText = false\n if (table.options.customConfig?.multilinesForXTable) {\n maxHeight = lineHeight;\n } else {\n maxHeight = lines.length * lineHeight;\n }\n }\n }\n return getMergedCellSingleRowHeight(\n (Math.max(maxHeight, iconHeight) + padding[0] + padding[2]) / spanRow,\n spanRow,\n table\n );\n}\n\nfunction getMergedCellSingleRowHeight(height: number, spanRow: number, table: BaseTableAPI) {\n if (spanRow <= 1) {\n return height;\n }\n const configuredMinHeight = table.options.customConfig?.minSingleRowHeight;\n const minSingleRowHeight = isNumber(configuredMinHeight) && configuredMinHeight > 0 ? configuredMinHeight : 2;\n return Math.max(height, minSingleRowHeight);\n}\n\nfunction getCellRect(col: number, row: number, table: BaseTableAPI) {\n return {\n left: 0,\n top: 0,\n right: table.getColWidth(col),\n bottom: table.getRowHeight(row),\n width: table.getColWidth(col),\n height: 0\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/layout/compute-row-height.ts"],"names":[],"mappings":"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","file":"compute-row-height.js","sourcesContent":["import type { Group as VGroup } from './../../vrender';\nimport { RichText, Text } from './../../vrender';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { validToString } from '../../tools/util';\nimport type {\n ColumnIconOption,\n ColumnTypeOption,\n IRowSeriesNumber,\n ListTableAPI,\n ListTableConstructorOptions\n} from '../../ts-types';\nimport { IconPosition } from '../../ts-types';\nimport type { BaseTableAPI, HeaderData } from '../../ts-types/base-table';\nimport type { ColumnData, ColumnDefine, TextColumnDefine } from '../../ts-types/list-table/layout-map/api';\nimport { getProp } from '../utils/get-prop';\nimport { getQuadProps } from '../utils/padding';\nimport { dealWithRichTextIcon } from '../utils/text-icon-layout';\nimport type { ComputeAxisComponentHeight } from '../../components/axis/get-axis-component-size';\nimport { Factory } from '../../core/factory';\nimport { isArray, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport { CheckBox } from './../../vrender';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\nimport { getCellMergeRange } from '../../tools/merge-range';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\nimport { getHierarchyOffset } from '../utils/get-hierarchy-offset';\nimport {\n computeButtonCellHeight,\n computeCheckboxCellHeight,\n computeRadioCellHeight,\n computeSwitchCellHeight\n} from './height-util';\nimport { measureTextBounds } from '../utils/text-measure';\nimport { breakString } from '../utils/break-string';\nimport { emptyCustomLayout } from '../../components/react/react-custom-layout';\n\nconst utilRichTextMark = new RichText({\n width: 0,\n height: 0,\n textConfig: []\n});\n\nexport function computeRowsHeight(\n table: BaseTableAPI,\n rowStart?: number,\n rowEnd?: number,\n isClearRowRangeHeightsMap: boolean = true,\n update?: boolean\n): void {\n // const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n\n const oldRowHeights: number[] = [];\n const newHeights: number[] = [];\n if (update) {\n for (let row = rowStart; row <= rowEnd; row++) {\n // oldRowHeights.push(table.getRowHeight(row));\n oldRowHeights[row] = table.getRowHeight(row);\n }\n }\n\n const layoutMap = table.internalProps.layoutMap;\n if (table.isPivotTable()) {\n (layoutMap as PivotHeaderLayoutMap).enableUseGetBodyCache();\n (layoutMap as PivotHeaderLayoutMap).enableUseHeaderPathCache();\n }\n\n table.defaultHeaderRowHeight;\n table.defaultHeaderColWidth;\n const isDefaultHeaderHasAuto =\n table.defaultHeaderRowHeight === 'auto' ||\n (isArray(table.defaultHeaderRowHeight) && table.defaultHeaderRowHeight.some(item => item === 'auto'));\n const isAllRowsAuto =\n table.isAutoRowHeight(rowStart) ||\n (table.heightMode === 'adaptive' && table.options.autoHeightInAdaptiveMode !== false);\n const isDefaultRowHeightIsAuto = table.options.defaultRowHeight === 'auto';\n\n if (isAllRowsAuto || isDefaultHeaderHasAuto || isDefaultRowHeightIsAuto) {\n rowStart = rowStart ?? 0;\n rowEnd = rowEnd ?? table.rowCount - 1;\n\n // clear rowRangeHeightsMap\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n // else {\n // for (let row = rowStart; row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);\n // }\n // }\n\n // compute header row in column header row\n for (let row = rowStart; row < table.columnHeaderLevelCount; row++) {\n let startCol = 0;\n let endCol = table.colCount - 1;\n if (\n ((table.isPivotTable() && !table.isPivotChart()) ||\n (table.isPivotChart() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)) && // no top axis\n checkPivotFixedStyleAndNoWrap(table, row) &&\n !getCellMergeInfo(table, table.rowHeaderLevelCount, row)\n ) {\n // 列表头样式一致,只计算第一列行高,作为整行行高\n startCol = 0;\n endCol = table.rowHeaderLevelCount;\n }\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, startCol, endCol, table);\n newHeights[row] = Math.round(height);\n //表头部分需要马上设置到缓存中 因为adaptive不会调整表头的高度 另外后面adaptive处理过程中有取值 table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n if (table.heightAdaptiveMode === 'only-body' || !update) {\n table._setRowHeight(row, height);\n }\n }\n }\n\n // compute bottom frozen row\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n if (rowEnd < table.columnHeaderLevelCount || (!isAllRowsAuto && !isDefaultRowHeightIsAuto)) {\n // do nothing\n } else {\n // compute body row\n if (\n // 以列展示 且符合只需要计算第一行其他行可复用行高的条条件\n !(\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) &&\n !(table.options as ListTableConstructorOptions).customComputeRowHeight &&\n !(table.options as ListTableConstructorOptions).rowHeightConfig &&\n checkFixedStyleAndNoWrap(table, rowStart)\n ) {\n // check fixed style and no wrap situation, fill all row width single compute\n // traspose table and row indicator pivot table cannot use single row height\n const fillStartRow = table.columnHeaderLevelCount;\n const fillEndRow = table.rowCount - 1 - table.bottomFrozenRowCount;\n const rowForCompute = getFirstUnresizedRow(table, fillStartRow, fillEndRow);\n if (rowForCompute >= 0) {\n const height = computeRowHeight(rowForCompute, 0, table.colCount - 1, table);\n fillRowsHeight(height, fillStartRow, fillEndRow, table, update ? newHeights : undefined);\n }\n //底部冻结的行行高需要单独计算\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else if (\n // 以行展示\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) {\n // check fixed style and no wrap situation, just compute 0-table.rowHeaderLevelCount column(the column after row header) in ervey row\n // in traspose table and row indicator pivot table\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);//注释掉 注意有无缓存问题\n let height;\n if (checkFixedStyleAndNoWrapForTranspose(table, row)) {\n // 以行展示 只计算到body第一列样式的情况即可\n height = computeRowHeight(row, 0, table.rowHeaderLevelCount, table);\n } else {\n height = computeRowHeight(row, 0, table.colCount - 1, table);\n }\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else {\n // 以列展示 需要逐行计算情况\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row); //注释掉 注意有无缓存问题\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = Math.round(height);\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n }\n } else {\n if (table.heightMode === 'adaptive' || table.autoFillHeight) {\n // for tree mode\n // getRowHeight() in adaptive will return scaled height\n table.clearRowHeightCache();\n }\n if (update) {\n for (let row = rowStart; row <= rowEnd; row++) {\n newHeights[row] = table.getRowHeight(row);\n }\n }\n }\n\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n\n // 处理adaptive高度\n if (table.heightMode === 'adaptive') {\n table._clearRowRangeHeightsMap();\n // const canvasWidth = table.internalProps.canvas.width;\n let totalDrawHeight = table.tableNoFrameHeight;\n let startRow = 0;\n let endRow = table.rowCount;\n if (table.heightAdaptiveMode === 'only-body') {\n const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\n totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\n startRow = table.columnHeaderLevelCount;\n endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n }\n let actualHeight = 0;\n for (let row = startRow; row < endRow; row++) {\n actualHeight += update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row);\n }\n const factor = totalDrawHeight / actualHeight;\n for (let row = startRow; row < endRow; row++) {\n let rowHeight;\n if (row === endRow - 1) {\n rowHeight =\n totalDrawHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= startRow && index <= endRow - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(startRow, endRow - 2));\n } else {\n rowHeight = Math.round(\n (update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row)) * factor\n );\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n } else if (table.autoFillHeight) {\n table._clearRowRangeHeightsMap();\n const canvasHeight = table.tableNoFrameHeight;\n let actualHeight = 0;\n let actualHeaderHeight = 0;\n for (let row = 0; row < table.rowCount; row++) {\n const rowHeight = update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row);\n if (\n row < table.columnHeaderLevelCount ||\n (table.isPivotChart() && row >= table.rowCount - table.bottomFrozenRowCount)\n ) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n table.scenegraph._dealAutoFillHeightOriginRowsHeight = actualHeight;\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (actualHeight < canvasHeight && actualHeight - actualHeaderHeight > 0) {\n const startRow = table.columnHeaderLevelCount;\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = startRow; row < endRow; row++) {\n // if (update) {\n // newHeights[row] = newHeights[row] * factor;\n // } else {\n // table.setRowHeight(row, table.getRowHeight(row) * factor);\n // }\n let rowHeight;\n if (row === endRow - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= startRow && index <= endRow - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(startRow, endRow - 2));\n } else {\n rowHeight = Math.round(\n (update ? newHeights[row] ?? table.getRowHeight(row) : table.getRowHeight(row)) * factor\n );\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n }\n }\n\n if (update) {\n for (let row = rowStart; row <= rowEnd; row++) {\n const newRowHeight = newHeights[row] ?? table.getRowHeight(row);\n // if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // table._setRowHeight(row, newRowHeight);\n // }\n if (isValid(newRowHeight)) {\n table._setRowHeight(row, newRowHeight);\n }\n }\n\n for (let row = 0; row <= table.frozenRowCount - 1; row++) {\n const newRowHeight = table.getRowHeight(row);\n if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - (oldRowHeights[row] ?? table.getRowHeight(row)), true);\n }\n }\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= table.rowCount - 1; row++) {\n const newRowHeight = table.getRowHeight(row);\n if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - (oldRowHeights[row] ?? table.getRowHeight(row)), true);\n }\n }\n\n // update body row\n for (let row = table.scenegraph.proxy.rowStart; row <= table.scenegraph.proxy.rowEnd; row++) {\n const newRowHeight = table.getRowHeight(row);\n if (newRowHeight !== (oldRowHeights[row] ?? table.getRowHeight(row))) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - (oldRowHeights[row] ?? table.getRowHeight(row)), true);\n }\n }\n }\n // console.log('computeRowsHeight time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, rowStart, rowEnd);\n\n if (table.isPivotTable()) {\n (layoutMap as PivotHeaderLayoutMap).disableUseGetBodyCache();\n (layoutMap as PivotHeaderLayoutMap).disableUseHeaderPathCache();\n }\n}\n\nexport function computeRowHeight(row: number, startCol: number, endCol: number, table: BaseTableAPI): number {\n if (table.internalProps._heightResizedRowMap.has(row)) {\n return table.getRowHeight(row);\n }\n\n return computeRowHeightInternal(row, startCol, endCol, table, true);\n}\n\nfunction computeRowHeightInternal(\n row: number,\n startCol: number,\n endCol: number,\n table: BaseTableAPI,\n enableCustomCompute: boolean\n): number {\n const isAllRowsAuto =\n table.isAutoRowHeight(row) || (table.heightMode === 'adaptive' && table.options.autoHeightInAdaptiveMode !== false);\n if (!isAllRowsAuto && table.getDefaultRowHeight(row) !== 'auto') {\n return table.getDefaultRowHeight(row) as number;\n }\n\n let maxHeight;\n if (enableCustomCompute && table.options.customComputeRowHeight) {\n let realHeight: number;\n let hasRealHeight = false;\n const getRealHeight = () => {\n if (!hasRealHeight) {\n realHeight = computeRowHeightInternal(row, startCol, endCol, table, false);\n hasRealHeight = true;\n }\n return realHeight;\n };\n const computeArgs = {\n row,\n table\n } as Parameters<NonNullable<BaseTableAPI['options']['customComputeRowHeight']>>[0];\n Object.defineProperty(computeArgs, 'realHeight', {\n get: getRealHeight,\n enumerable: false,\n configurable: true\n });\n const customRowHeight = table.options.customComputeRowHeight(computeArgs);\n if (typeof customRowHeight === 'number') {\n return customRowHeight;\n } else if (customRowHeight === 'auto') {\n return getRealHeight();\n }\n return table.getDefaultRowHeight(row) as number;\n }\n if (table.internalProps.rowHeightConfig) {\n const rowHeightConfig = table.internalProps.rowHeightConfig.find((item: { key: number }) => item.key === row);\n if (rowHeightConfig) {\n if (!table.internalProps._heightResizedRowMap.has(row)) {\n table._setRowHeight(row, rowHeightConfig.height);\n table.internalProps._heightResizedRowMap.add(row); // add resize tag\n }\n return rowHeightConfig.height;\n }\n }\n // 如果是透视图\n if (\n table.isPivotChart() &&\n row >= table.columnHeaderLevelCount &&\n row < table.rowCount - table.bottomFrozenRowCount\n ) {\n let ifNeedComputeRowHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol;\n let isHeatmap = false;\n if (!(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n const chartSpec = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getChartSpec(\n table.rowHeaderLevelCount,\n row\n );\n if (chartSpec.type === 'heatmap') {\n isHeatmap = true;\n ifNeedComputeRowHeight = true;\n }\n }\n if (ifNeedComputeRowHeight) {\n //并且指标是以列展示 计算行高需要根据y轴的值域范围\n const optimunHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunHeightForChart(\n row,\n isHeatmap\n );\n if (optimunHeight > 0) {\n return optimunHeight;\n }\n } else {\n //直接拿默认行高\n const defaultHeight = table.getDefaultRowHeight(row);\n if (isNumber(defaultHeight)) {\n return defaultHeight;\n }\n }\n }\n for (let col = startCol; col <= endCol; col++) {\n // CustomRender height calculation\n const customHeight = computeCustomRenderHeight(col, row, table);\n if (customHeight) {\n maxHeight = isValid(maxHeight) ? Math.max(customHeight.height, maxHeight) : customHeight.height;\n if (!customHeight.renderDefault) {\n continue;\n }\n }\n\n // Axis component height calculation\n if (table.isPivotChart()) {\n const layout = table.internalProps.layoutMap as PivotHeaderLayoutMap;\n const axisConfig = layout.getAxisConfigInPivotChart(col, row);\n if (axisConfig) {\n const computeAxisComponentHeight: ComputeAxisComponentHeight =\n Factory.getFunction('computeAxisComponentHeight');\n const axisWidth = computeAxisComponentHeight(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxHeight = isValid(maxHeight) ? Math.max(axisWidth, maxHeight) : axisWidth;\n continue;\n }\n }\n }\n\n if (\n table.isPivotChart() &&\n ((table.isLeftFrozenColumn(col) && table.isBottomFrozenRow(row)) ||\n (table.isRightFrozenColumn(col) && table.isBottomFrozenRow(row)))\n ) {\n continue;\n }\n\n const cellType = table.getCellType(col, row);\n // if ( isValid(cellType) && cellType !== 'text' && cellType !== 'link' && cellType !== 'progressbar' && cellType !== 'checkbox') {\n // // text&link&progressbar测量文字宽度\n // // image&video&sparkline使用默认宽度\n // const defaultHeight = table.getDefaultRowHeight(row);\n // maxHeight = Math.max(maxHeight, isNumber(defaultHeight) ? defaultHeight : table.defaultRowHeight);\n // continue;\n // }\n\n // text height calculation\n const textHeight = computeTextHeight(col, row, cellType, table);\n maxHeight = isValid(maxHeight) ? Math.max(textHeight, maxHeight) : textHeight;\n }\n if (isValid(maxHeight)) {\n return maxHeight;\n }\n\n const defaultHeight = table.getDefaultRowHeight(row);\n return isNumber(defaultHeight) ? defaultHeight : table.defaultRowHeight;\n}\n\nfunction checkFixedStyleAndNoWrap(table: BaseTableAPI, rowStart: number): boolean {\n const { layoutMap } = table.internalProps;\n const row = table.columnHeaderLevelCount;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.internalProps.enableLineBreak || table.isPivotChart()) &&\n (table.isAutoRowHeight(rowStart) || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n for (let col = 0; col < table.colCount; col++) {\n const cellDefine = layoutMap.getBody(col, row);\n if (cellDefine.cellType === 'radio') {\n return false;\n }\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n (cellDefine.define as ColumnDefine)?.customRender ||\n (cellDefine.define as ColumnDefine)?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(col, row); //获取的style是结合了theme配置的style\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction checkFixedStyleAndNoWrapForTranspose(table: BaseTableAPI, row: number): boolean {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.internalProps.enableLineBreak) &&\n (table.isAutoRowHeight(row) || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n\n const cellDefine = layoutMap.getBody(table.rowHeaderLevelCount, row);\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n (cellDefine.define as ColumnDefine)?.customRender ||\n (cellDefine.define as ColumnDefine)?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction checkPivotFixedStyleAndNoWrap(table: BaseTableAPI, row: number) {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (table.internalProps.autoWrapText && (table.isAutoRowHeight(row) || table.options.heightMode === 'adaptive')) {\n return false;\n }\n\n const headerDefine = layoutMap.getHeader(table.rowHeaderLevelCount, row);\n if (\n typeof headerDefine.style === 'function' ||\n typeof (headerDefine as HeaderData).icons === 'function' ||\n (headerDefine.define as ColumnDefine)?.headerCustomRender ||\n (headerDefine.define as ColumnDefine)?.headerCustomLayout ||\n typeof headerDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const headerStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof headerStyle.padding === 'function' ||\n typeof headerStyle.fontSize === 'function' ||\n typeof headerStyle.lineHeight === 'function' ||\n headerStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction fillRowsHeight(\n height: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n newHeights: number[] | undefined\n) {\n if (table.internalProps.useOneRowHeightFillAll) {\n return;\n }\n for (let row = startRow; row <= endRow; row++) {\n if (table.internalProps._heightResizedRowMap.has(row)) {\n continue;\n }\n if (newHeights) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n table.internalProps.useOneRowHeightFillAll = true;\n}\n\nfunction getFirstUnresizedRow(table: BaseTableAPI, startRow: number, endRow: number): number {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.internalProps._heightResizedRowMap.has(row)) {\n return row;\n }\n }\n return -1;\n}\n\n/**\n * @description: compute customRender height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeCustomRenderHeight(col: number, row: number, table: BaseTableAPI) {\n const customRender = table.getCustomRender(col, row);\n let customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanRow = 1;\n let height = 0;\n let renderDefault = false;\n let enableCellPadding = false;\n let cellRange;\n if (\n table.isHeader(col, row) ||\n (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell ||\n table.hasCustomMerge()\n ) {\n cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n }\n const skipCellValue = shouldSkipCustomRenderCellValueForComputation(col, row, table);\n const arg = {\n col: cellRange?.start.col ?? col,\n row: cellRange?.start.row ?? row,\n dataValue: skipCellValue ? undefined : table.getCellOriginValue(col, row),\n value: skipCellValue ? undefined : table.getCellValue(col, row),\n rect: getCellRect(col, row, table),\n table,\n originCol: col,\n originRow: row,\n forComputation: true\n };\n if (customLayout === 'react-custom-layout') {\n // customLayout = table._reactCreateGraphic;\n customLayout = table.reactCustomLayout?.getCustomLayoutFunc(col, row) || emptyCustomLayout;\n }\n if (isFunction(customLayout)) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer) {\n customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n dealPercentCalc(customLayoutObj.rootContainer, table.getColWidth(col), 0);\n customLayoutObj.rootContainer.setStage(table.scenegraph.stage);\n height = (customLayoutObj.rootContainer as VGroup).AABBBounds.height() ?? 0;\n renderDefault = customLayoutObj.renderDefault;\n enableCellPadding = customLayoutObj.enableCellPadding;\n } else {\n height = 0;\n renderDefault = customLayoutObj.renderDefault;\n enableCellPadding = customLayoutObj.enableCellPadding;\n }\n } else if (typeof customRender === 'function') {\n // 处理customRender\n const customRenderObj = customRender(arg);\n height = customRenderObj?.expectedHeight ?? 0;\n renderDefault = customRenderObj?.renderDefault;\n } else {\n height = customRender?.expectedHeight ?? 0;\n renderDefault = customRender?.renderDefault;\n }\n if (enableCellPadding) {\n const actStyle = table._getCellStyle(col, row);\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n height += padding[0] + padding[2];\n }\n return {\n height: getMergedCellSingleRowHeight(height / spanRow, spanRow, table),\n renderDefault\n };\n }\n return undefined;\n}\n\nfunction shouldSkipCustomRenderCellValueForComputation(col: number, row: number, table: BaseTableAPI) {\n return (\n table.isListTable() && !table.isHeader(col, row) && !(table.internalProps.dataSource as any)?.dataSourceObj?.records\n );\n}\n\n/**\n * @description: compute text height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeTextHeight(col: number, row: number, cellType: ColumnTypeOption, table: BaseTableAPI): number {\n let maxHeight = 0;\n const cellValue = table.getCellValue(col, row);\n // const dataValue = table.getCellOriginValue(col, row);\n const actStyle = table._getCellStyle(col, row);\n let iconHeight = 0;\n let iconWidth = 0;\n const iconInlineFront: ColumnIconOption[] = [];\n let iconInlineFrontHeight = 0;\n const iconInlineEnd: ColumnIconOption[] = [];\n let iconInlineEndHeight = 0;\n // const define = table.getBodyColumnDefine(col, row);\n // const mayHaveIcon = table.getCellLocation(col, row) !== 'body' ? true : !!define?.icon || !!define?.tree;\n\n let mayHaveIcon = false;\n if (table.getCellLocation(col, row) !== 'body') {\n mayHaveIcon = true;\n } else {\n const define = table.getBodyColumnDefine(col, row);\n mayHaveIcon = !!define?.icon || !!(define as ColumnDefine)?.tree || (define as IRowSeriesNumber)?.dragOrder;\n }\n\n if (mayHaveIcon) {\n const icons = table.getCellIcons(col, row);\n icons?.forEach(icon => {\n if (\n icon.positionType !== IconPosition.absoluteRight &&\n icon.positionType !== IconPosition.inlineFront &&\n icon.positionType !== IconPosition.inlineEnd\n ) {\n iconWidth += (icon.width ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0);\n iconHeight = Math.max(iconHeight, icon.height ?? 0);\n } else if (icon.positionType === IconPosition.inlineFront) {\n iconInlineFront.push(icon);\n iconInlineFrontHeight = Math.max(\n iconInlineFrontHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n } else if (icon.positionType === IconPosition.inlineEnd) {\n iconInlineEnd.push(icon);\n iconInlineEndHeight = Math.max(\n iconInlineEndHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n }\n });\n }\n let spanRow = 1;\n let endCol = col;\n if (\n table.isHeader(col, row) ||\n (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell ||\n table.hasCustomMerge()\n ) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n col = cellRange.start.col;\n endCol = cellRange.end.col;\n }\n\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n const fontSize = getProp('fontSize', actStyle, col, row, table);\n const fontStyle = getProp('fontStyle', actStyle, col, row, table);\n const fontWeight = getProp('fontWeight', actStyle, col, row, table);\n const lineHeight = getProp('lineHeight', actStyle, col, row, table) ?? fontSize;\n const fontFamily = getProp('fontFamily', actStyle, col, row, table);\n const autoWrapText = getProp('autoWrapText', actStyle, col, row, table);\n const lineClamp = getProp('lineClamp', actStyle, col, row, table);\n\n // underline\n const underline = getProp('underline', actStyle, col, row, table); // boolean\n const underlineOffset = getProp('underlineOffset', actStyle, col, row, table) ?? 0;\n\n let text;\n if (\n cellType !== 'text' &&\n cellType !== 'link' &&\n cellType !== 'progressbar' &&\n cellType !== 'checkbox' &&\n cellType !== 'radio' &&\n cellType !== 'switch' &&\n cellType !== 'button'\n ) {\n maxHeight = lineHeight;\n } else if (cellType === 'checkbox') {\n maxHeight = computeCheckboxCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else if (cellType === 'radio') {\n maxHeight = computeRadioCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else if (cellType === 'switch') {\n maxHeight = computeSwitchCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else if (cellType === 'button') {\n maxHeight = computeButtonCellHeight(\n cellValue,\n col,\n row,\n endCol,\n actStyle,\n autoWrapText,\n iconWidth,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n lineClamp,\n padding,\n table\n );\n } else {\n // text\n text = cellValue;\n const lines = breakString(text, table).text;\n const cellWidth = table.getColsWidth(col, endCol);\n\n if (iconInlineFront.length || iconInlineEnd.length) {\n if (autoWrapText) {\n const textOption = Object.assign({\n text: cellValue?.toString(),\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n lineHeight\n });\n textOption.textBaseline = 'middle';\n const textConfig = [\n ...iconInlineFront.map(icon => dealWithRichTextIcon(icon)),\n textOption,\n ...iconInlineEnd.map(icon => dealWithRichTextIcon(icon))\n ];\n utilRichTextMark.setAttributes({\n width: cellWidth - (padding[1] + padding[3]) - iconWidth,\n height: 0,\n textConfig\n });\n maxHeight = utilRichTextMark.AABBBounds.height();\n } else {\n maxHeight = 0;\n lines.forEach((line: string, index: number) => {\n if (table.options.customConfig?.multilinesForXTable && index !== 0) {\n return;\n }\n if (index === 0 && iconInlineFront.length) {\n maxHeight += Math.max(lineHeight, iconInlineFrontHeight);\n } else if (index === lines.length - 1 && iconInlineEnd.length) {\n maxHeight += Math.max(lineHeight, iconInlineEndHeight);\n } else {\n maxHeight += lineHeight;\n }\n });\n }\n } else if (autoWrapText) {\n const hierarchyOffset = getHierarchyOffset(col, row, table);\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth - hierarchyOffset;\n const bounds = measureTextBounds({\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word',\n whiteSpace: lines.length === 1 && !autoWrapText ? 'no-wrap' : 'normal',\n lineClamp\n });\n maxHeight =\n (bounds.height() || (typeof lineHeight === 'number' ? lineHeight : fontSize)) +\n (underline ? underlineOffset : 0);\n } else {\n // autoWrapText = false\n if (table.options.customConfig?.multilinesForXTable) {\n maxHeight = lineHeight;\n } else {\n maxHeight = lines.length * lineHeight;\n }\n }\n }\n return getMergedCellSingleRowHeight(\n (Math.max(maxHeight, iconHeight) + padding[0] + padding[2]) / spanRow,\n spanRow,\n table\n );\n}\n\nfunction getMergedCellSingleRowHeight(height: number, spanRow: number, table: BaseTableAPI) {\n if (spanRow <= 1) {\n return height;\n }\n const configuredMinHeight = table.options.customConfig?.minSingleRowHeight;\n const minSingleRowHeight = isNumber(configuredMinHeight) && configuredMinHeight > 0 ? configuredMinHeight : 2;\n return Math.max(height, minSingleRowHeight);\n}\n\nfunction getCellRect(col: number, row: number, table: BaseTableAPI) {\n return {\n left: 0,\n top: 0,\n right: table.getColWidth(col),\n bottom: table.getRowHeight(row),\n width: table.getColWidth(col),\n height: 0\n };\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { Group } from '../graphic/group';
2
2
  import type { Scenegraph } from '../scenegraph';
3
- export declare function updateRowHeight(scene: Scenegraph, row: number, detaY: number, skipTableHeightMap?: boolean): void;
4
- export declare function updateCellHeightForRow(scene: Scenegraph, cell: Group, col: number, row: number, height: number, detaY: number, isHeader: boolean): void;
3
+ import { type CornerCustomMergeRangeUpdateMap } from '../utils/corner-custom-merge';
4
+ export declare function updateRowHeight(scene: Scenegraph, row: number, detaY: number, skipTableHeightMap?: boolean, pendingCornerCustomMergeRanges?: CornerCustomMergeRangeUpdateMap): void;
5
+ export declare function updateCellHeightForRow(scene: Scenegraph, cell: Group, col: number, row: number, height: number, detaY: number, isHeader: boolean, pendingCornerCustomMergeRanges?: CornerCustomMergeRangeUpdateMap): void;
5
6
  export declare function updateCellHeightForColumn(scene: Scenegraph, cell: Group, col: number, row: number, height: number, detaY: number, isHeader: boolean): void;
6
- export declare function updateCellHeight(scene: Scenegraph, cell: Group, col: number, row: number, distHeight: number, detaY: number, isHeader: boolean): void;
7
+ export declare function updateCellHeight(scene: Scenegraph, cell: Group, col: number, row: number, distHeight: number, detaY: number, isHeader: boolean, pendingCornerCustomMergeRanges?: CornerCustomMergeRangeUpdateMap): void;
@@ -4,16 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.updateCellHeight = exports.updateCellHeightForColumn = exports.updateCellHeightForRow = exports.updateRowHeight = void 0;
6
6
 
7
- const get_cell_merge_1 = require("../utils/get-cell-merge"), get_prop_1 = require("../utils/get-prop"), padding_1 = require("../utils/padding"), text_icon_layout_1 = require("../utils/text-icon-layout"), custom_1 = require("../component/custom"), image_cell_1 = require("../group-creater/cell-type/image-cell"), tableHelper_1 = require("../../core/tableHelper"), is_merge_cell_group_1 = require("../utils/is-merge-cell-group"), cell_helper_1 = require("../group-creater/cell-helper"), merge_range_1 = require("../../tools/merge-range"), factory_1 = require("../../core/factory");
7
+ const get_cell_merge_1 = require("../utils/get-cell-merge"), get_prop_1 = require("../utils/get-prop"), padding_1 = require("../utils/padding"), text_icon_layout_1 = require("../utils/text-icon-layout"), custom_1 = require("../component/custom"), image_cell_1 = require("../group-creater/cell-type/image-cell"), tableHelper_1 = require("../../core/tableHelper"), is_merge_cell_group_1 = require("../utils/is-merge-cell-group"), cell_helper_1 = require("../group-creater/cell-helper"), merge_range_1 = require("../../tools/merge-range"), factory_1 = require("../../core/factory"), corner_custom_merge_1 = require("../utils/corner-custom-merge");
8
8
 
9
- function updateRowHeight(scene, row, detaY, skipTableHeightMap) {
9
+ function updateRowHeight(scene, row, detaY, skipTableHeightMap, pendingCornerCustomMergeRanges) {
10
+ const shouldFlushCornerCustomMergeRanges = !pendingCornerCustomMergeRanges;
11
+ null != pendingCornerCustomMergeRanges || (pendingCornerCustomMergeRanges = new Map),
10
12
  !skipTableHeightMap && detaY && scene.table._setRowHeight(row, scene.table.getRowHeight(row) + detaY, !0);
11
13
  for (let col = 0; col < scene.table.colCount; col++) {
12
14
  const cell = scene.getCell(col, row);
13
15
  if ("empty" === cell.role) continue;
14
16
  const mergeInfo = (0, get_cell_merge_1.getCellMergeInfo)(scene.table, col, row);
15
17
  if (mergeInfo && mergeInfo.start.col !== col) continue;
16
- updateCellHeightForRow(scene, cell, col, row, cell.attribute.height + detaY, detaY, scene.table.isHeader(col, row)),
18
+ updateCellHeightForRow(scene, cell, col, row, cell.attribute.height + detaY, detaY, scene.table.isHeader(col, row), pendingCornerCustomMergeRanges),
17
19
  scene.updateCellContentWhileResize(col, row);
18
20
  }
19
21
  let rowStart = 0, rowEnd = 0;
@@ -23,17 +25,18 @@ function updateRowHeight(scene, row, detaY, skipTableHeightMap) {
23
25
  const cellGroup = scene.highPerformanceGetCell(colIndex, rowIndex);
24
26
  "cell" === cellGroup.role && cellGroup.setAttribute("y", cellGroup.attribute.y + detaY);
25
27
  }
28
+ shouldFlushCornerCustomMergeRanges && (0, corner_custom_merge_1.flushCornerCustomMergeContentUpdates)(pendingCornerCustomMergeRanges, scene.table);
26
29
  }
27
30
 
28
- function updateCellHeightForRow(scene, cell, col, row, height, detaY, isHeader) {
29
- cell && updateCellHeight(scene, cell, col, row, height, detaY, isHeader);
31
+ function updateCellHeightForRow(scene, cell, col, row, height, detaY, isHeader, pendingCornerCustomMergeRanges) {
32
+ cell && updateCellHeight(scene, cell, col, row, height, detaY, isHeader, pendingCornerCustomMergeRanges);
30
33
  }
31
34
 
32
35
  function updateCellHeightForColumn(scene, cell, col, row, height, detaY, isHeader) {
33
36
  updateCellHeight(scene, cell, col, row, height, 0, isHeader);
34
37
  }
35
38
 
36
- function updateCellHeight(scene, cell, col, row, distHeight, detaY, isHeader) {
39
+ function updateCellHeight(scene, cell, col, row, distHeight, detaY, isHeader, pendingCornerCustomMergeRanges) {
37
40
  var _a, _b, _c;
38
41
  if (cell.attribute.height === distHeight && !cell.needUpdateHeight) return;
39
42
  cell.needUpdateHeight = !1, cell.setAttribute("height", distHeight);
@@ -45,7 +48,7 @@ function updateCellHeight(scene, cell, col, row, distHeight, detaY, isHeader) {
45
48
  (null == columnDefine ? void 0 : columnDefine.mergeCell) && (range = scene.table.getCellRange(col, row));
46
49
  const newBarCell = factory_1.Factory.getFunction("createProgressBarCell")(columnDefine, style, cell.attribute.width, value, dataValue, col, row, padding, scene.table, range), oldBarCell = cell.getChildByName("progress-bar");
47
50
  cell.insertBefore(newBarCell, oldBarCell), cell.removeChild(oldBarCell), oldBarCell.removeAllChild(),
48
- oldBarCell.release(), updateMergeCellContentHeight(cell, distHeight, detaY, scene.table.isAutoRowHeight(row), !0, scene.table);
51
+ oldBarCell.release(), updateMergeCellContentHeight(cell, distHeight, detaY, scene.table.isAutoRowHeight(row), !0, scene.table, !0, pendingCornerCustomMergeRanges);
49
52
  } else if ("sparkline" === type) {
50
53
  cell.removeAllChild();
51
54
  const headerStyle = scene.table._getCellStyle(col, row), padding = (0, padding_1.getQuadProps)((0,
@@ -56,13 +59,19 @@ function updateCellHeight(scene, cell, col, row, distHeight, detaY, isHeader) {
56
59
  let renderDefault = !0;
57
60
  const customContainer = cell.getChildByName(custom_1.CUSTOM_CONTAINER_NAME) || cell.getChildByName(custom_1.CUSTOM_MERGE_CONTAINER_NAME);
58
61
  if (customContainer) {
62
+ if (scene.table.reactCustomLayout) {
63
+ const mergeRange = (0, is_merge_cell_group_1.isMergeCellGroup)(cell) ? scene.table.getCellRange(cell.mergeStartCol, cell.mergeStartRow) : void 0, shouldUseMergeStart = mergeRange && (0,
64
+ corner_custom_merge_1.isCornerCustomMergeRange)(mergeRange, scene.table), removeCol = shouldUseMergeStart ? mergeRange.start.col : col, removeRow = shouldUseMergeStart ? mergeRange.start.row : row;
65
+ scene.table.reactCustomLayout.removeCustomCell(removeCol, removeRow);
66
+ }
59
67
  let customElementsGroup;
60
68
  cell.removeChild(customContainer);
61
69
  const customMergeRange = (0, cell_helper_1.getCustomCellMergeCustom)(col, row, cell, scene.table);
62
70
  if (customMergeRange) for (let mergeRow = customMergeRange.start.row; mergeRow <= customMergeRange.end.row; mergeRow++) {
63
71
  if (mergeRow === row) continue;
64
72
  const mergedCell = scene.getCell(col, mergeRow), customContainer = mergedCell.getChildByName(custom_1.CUSTOM_CONTAINER_NAME) || mergedCell.getChildByName(custom_1.CUSTOM_MERGE_CONTAINER_NAME);
65
- customContainer.removeAllChild(), mergedCell.removeChild(customContainer), (0, cell_helper_1.getCustomCellMergeCustom)(col, mergeRow, mergedCell, scene.table);
73
+ customContainer && (customContainer.removeAllChild(), mergedCell.removeChild(customContainer)),
74
+ (0, cell_helper_1.getCustomCellMergeCustom)(col, mergeRow, mergedCell, scene.table);
66
75
  } else {
67
76
  let customRender, customLayout;
68
77
  const cellLocation = scene.table.getCellLocation(col, row), {vtableMerge: vtableMerge} = scene.table.getCellRawRecord(col, row) || {};
@@ -75,33 +84,35 @@ function updateCellHeight(scene, cell, col, row, distHeight, detaY, isHeader) {
75
84
  customLayout = null == define ? void 0 : define.customLayout;
76
85
  }
77
86
  if ((customRender || customLayout) && (0, is_merge_cell_group_1.isMergeCellGroup)(cell)) for (let mergeCol = cell.mergeStartCol; mergeCol <= cell.mergeEndCol; mergeCol++) for (let mergeRow = cell.mergeStartRow; mergeRow <= cell.mergeEndRow; mergeRow++) mergeRow !== row && scene.updateCellContent(mergeCol, mergeRow);
78
- if (customLayout || customRender) {
79
- const style = scene.table._getCellStyle(col, row), padding = (0, padding_1.getQuadProps)((0,
80
- get_prop_1.getProp)("padding", style, col, row, scene.table));
81
- let width = cell.attribute.width, height = cell.attribute.height;
82
- (0, is_merge_cell_group_1.isMergeCellGroup)(cell) && (width = scene.table.getColsWidth(cell.mergeStartCol, cell.mergeEndCol),
83
- height = scene.table.getRowsHeight(cell.mergeStartRow, cell.mergeEndRow));
84
- const customResult = (0, custom_1.dealWithCustom)(customLayout, customRender, col, row, width, height, !1, scene.table.isAutoRowHeight(row), padding, (0,
85
- is_merge_cell_group_1.isMergeCellGroup)(cell) ? {
86
- start: {
87
- col: cell.mergeStartCol,
88
- row: cell.mergeStartRow
89
- },
90
- end: {
91
- col: cell.mergeEndCol,
92
- row: cell.mergeEndRow
93
- }
94
- } : void 0, scene.table);
95
- customElementsGroup = customResult.elementsGroup, renderDefault = customResult.renderDefault;
87
+ const mergeRange = (0, is_merge_cell_group_1.isMergeCellGroup)(cell) ? scene.table.getCellRange(cell.mergeStartCol, cell.mergeStartRow) : void 0;
88
+ if ((0, corner_custom_merge_1.shouldRenderCornerCustomMergeContent)(col, row, mergeRange, scene.table)) {
89
+ if (customLayout || customRender) {
90
+ const style = scene.table._getCellStyle(col, row), padding = (0, padding_1.getQuadProps)((0,
91
+ get_prop_1.getProp)("padding", style, col, row, scene.table));
92
+ let width = cell.attribute.width, height = cell.attribute.height;
93
+ (0, is_merge_cell_group_1.isMergeCellGroup)(cell) && (width = scene.table.getColsWidth(cell.mergeStartCol, cell.mergeEndCol),
94
+ height = scene.table.getRowsHeight(cell.mergeStartRow, cell.mergeEndRow));
95
+ let customCol = col, customRow = row;
96
+ mergeRange && (0, corner_custom_merge_1.isCornerCustomMergeRange)(mergeRange, scene.table) && (customCol = mergeRange.start.col,
97
+ customRow = mergeRange.start.row);
98
+ const customResult = (0, custom_1.dealWithCustom)(customLayout, customRender, customCol, customRow, width, height, !1, scene.table.isAutoRowHeight(row), padding, mergeRange, scene.table);
99
+ customElementsGroup = (0, corner_custom_merge_1.createCornerCustomMergeContainer)(customResult.elementsGroup, width, height, mergeRange, scene.table),
100
+ renderDefault = customResult.renderDefault;
101
+ }
102
+ } else renderDefault = !1;
103
+ if (cell.childrenCount > 0 && customElementsGroup ? cell.insertBefore(customElementsGroup, cell.firstChild) : customElementsGroup && cell.appendChild(customElementsGroup),
104
+ (0, is_merge_cell_group_1.isMergeCellGroup)(cell)) {
105
+ const mergeRange = scene.table.getCellRange(cell.mergeStartCol, cell.mergeStartRow);
106
+ (0, corner_custom_merge_1.isCornerCustomMergeRange)(mergeRange, scene.table) && cell.setAttribute("clip", !(0,
107
+ corner_custom_merge_1.shouldRenderCornerCustomMergeContent)(col, row, mergeRange, scene.table));
96
108
  }
97
- cell.childrenCount > 0 && customElementsGroup ? cell.insertBefore(customElementsGroup, cell.firstChild) : customElementsGroup && cell.appendChild(customElementsGroup);
98
109
  }
99
110
  }
100
- updateMergeCellContentHeight(cell, distHeight, detaY, scene.table.isAutoRowHeight(row), renderDefault, scene.table);
111
+ updateMergeCellContentHeight(cell, distHeight, detaY, scene.table.isAutoRowHeight(row), renderDefault, scene.table, !customContainer, pendingCornerCustomMergeRanges);
101
112
  }
102
113
  }
103
114
 
104
- function updateMergeCellContentHeight(cellGroup, distHeight, detaY, autoRowHeight, renderDefault, table) {
115
+ function updateMergeCellContentHeight(cellGroup, distHeight, detaY, autoRowHeight, renderDefault, table, refreshCornerCustomMergeContent = !0, pendingCornerCustomMergeRanges) {
105
116
  if ((0, is_merge_cell_group_1.isMergeCellGroup)(cellGroup)) {
106
117
  distHeight = 0;
107
118
  for (let row = cellGroup.mergeStartRow; row <= cellGroup.mergeEndRow; row++) distHeight += table.getRowHeight(row);
@@ -134,6 +145,9 @@ function updateMergeCellContentHeight(cellGroup, distHeight, detaY, autoRowHeigh
134
145
  }, table);
135
146
  widthChange && (singleCellGroup.needUpdateWidth = !0);
136
147
  }
148
+ const mergeRange = table.getCellRange(cellGroup.mergeStartCol, cellGroup.mergeStartRow);
149
+ refreshCornerCustomMergeContent && (0, corner_custom_merge_1.isCornerCustomMergeRange)(mergeRange, table) && (0,
150
+ corner_custom_merge_1.queueCornerCustomMergeContentUpdate)(mergeRange, table, pendingCornerCustomMergeRanges);
137
151
  } else {
138
152
  const style = table._getCellStyle(cellGroup.col, cellGroup.row), padding = (0, padding_1.getQuadProps)((0,
139
153
  get_prop_1.getProp)("padding", style, cellGroup.col, cellGroup.row, table));