@visactor/vtable 0.15.4-alpha.0 → 0.15.5-alpha.1

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 (109) hide show
  1. package/cjs/ListTable.js +11 -6
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotTable.js +24 -20
  4. package/cjs/PivotTable.js.map +1 -1
  5. package/cjs/components/axis/axis.d.ts +3 -1
  6. package/cjs/components/axis/axis.js +10 -8
  7. package/cjs/components/axis/axis.js.map +1 -1
  8. package/cjs/core/BaseTable.js +23 -9
  9. package/cjs/core/BaseTable.js.map +1 -1
  10. package/cjs/event/media-click.js +2 -1
  11. package/cjs/event/scroll.js +0 -1
  12. package/cjs/index.d.ts +1 -1
  13. package/cjs/index.js +1 -1
  14. package/cjs/index.js.map +1 -1
  15. package/cjs/layout/chart-helper/get-axis-config.d.ts +2 -0
  16. package/cjs/layout/chart-helper/get-axis-config.js +23 -2
  17. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
  18. package/cjs/layout/pivot-header-layout.d.ts +9 -4
  19. package/cjs/layout/pivot-header-layout.js +39 -29
  20. package/cjs/layout/pivot-header-layout.js.map +1 -1
  21. package/cjs/scenegraph/group-creater/cell-helper.js +1 -1
  22. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  23. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +1 -0
  24. package/cjs/scenegraph/group-creater/progress/proxy.js +12 -0
  25. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  26. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +3 -3
  27. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  28. package/cjs/scenegraph/layout/compute-col-width.js +41 -27
  29. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  30. package/cjs/scenegraph/layout/compute-row-height.js +12 -9
  31. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  32. package/cjs/scenegraph/layout/update-row.js +8 -3
  33. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  34. package/cjs/scenegraph/layout/update-width.js +3 -2
  35. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  36. package/cjs/scenegraph/refresh-node/update-chart.js +3 -2
  37. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  38. package/cjs/scenegraph/scenegraph.js +2 -2
  39. package/cjs/scenegraph/scenegraph.js.map +1 -1
  40. package/cjs/state/hover/is-cell-hover.js +2 -2
  41. package/cjs/state/hover/is-cell-hover.js.map +1 -1
  42. package/cjs/themes/theme.js +5 -5
  43. package/cjs/themes/theme.js.map +1 -1
  44. package/cjs/tools/Rect.js +1 -1
  45. package/cjs/ts-types/base-table.d.ts +5 -5
  46. package/cjs/ts-types/base-table.js.map +1 -1
  47. package/cjs/ts-types/pivot-table/dimension/index.d.ts +3 -1
  48. package/cjs/ts-types/pivot-table/dimension/index.js.map +1 -1
  49. package/cjs/ts-types/table-engine.d.ts +6 -6
  50. package/cjs/ts-types/table-engine.js.map +1 -1
  51. package/dist/vtable.js +320 -138
  52. package/dist/vtable.min.js +2 -2
  53. package/es/ListTable.js +14 -9
  54. package/es/ListTable.js.map +1 -1
  55. package/es/PivotTable.js +24 -20
  56. package/es/PivotTable.js.map +1 -1
  57. package/es/components/axis/axis.d.ts +3 -1
  58. package/es/components/axis/axis.js +7 -5
  59. package/es/components/axis/axis.js.map +1 -1
  60. package/es/core/BaseTable.js +24 -8
  61. package/es/core/BaseTable.js.map +1 -1
  62. package/es/event/media-click.js +2 -1
  63. package/es/event/scroll.js +1 -2
  64. package/es/index.d.ts +1 -1
  65. package/es/index.js +1 -1
  66. package/es/index.js.map +1 -1
  67. package/es/layout/chart-helper/get-axis-config.d.ts +2 -0
  68. package/es/layout/chart-helper/get-axis-config.js +20 -0
  69. package/es/layout/chart-helper/get-axis-config.js.map +1 -1
  70. package/es/layout/pivot-header-layout.d.ts +9 -4
  71. package/es/layout/pivot-header-layout.js +40 -29
  72. package/es/layout/pivot-header-layout.js.map +1 -1
  73. package/es/scenegraph/group-creater/cell-helper.js +1 -1
  74. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  75. package/es/scenegraph/group-creater/progress/proxy.d.ts +1 -0
  76. package/es/scenegraph/group-creater/progress/proxy.js +12 -0
  77. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  78. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +3 -3
  79. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  80. package/es/scenegraph/layout/compute-col-width.js +41 -27
  81. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  82. package/es/scenegraph/layout/compute-row-height.js +12 -9
  83. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  84. package/es/scenegraph/layout/update-row.js +8 -3
  85. package/es/scenegraph/layout/update-row.js.map +1 -1
  86. package/es/scenegraph/layout/update-width.js +2 -2
  87. package/es/scenegraph/layout/update-width.js.map +1 -1
  88. package/es/scenegraph/refresh-node/update-chart.js +5 -1
  89. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  90. package/es/scenegraph/scenegraph.js +2 -2
  91. package/es/scenegraph/scenegraph.js.map +1 -1
  92. package/es/state/hover/is-cell-hover.js +2 -2
  93. package/es/state/hover/is-cell-hover.js.map +1 -1
  94. package/es/themes/theme.js +5 -5
  95. package/es/themes/theme.js.map +1 -1
  96. package/es/tools/Rect.js +1 -1
  97. package/es/ts-types/base-table.d.ts +5 -5
  98. package/es/ts-types/base-table.js.map +1 -1
  99. package/es/ts-types/pivot-table/dimension/index.d.ts +3 -1
  100. package/es/ts-types/pivot-table/dimension/index.js.map +1 -1
  101. package/es/ts-types/table-engine.d.ts +6 -6
  102. package/es/ts-types/table-engine.js.map +1 -1
  103. package/package.json +4 -4
  104. package/cjs/event/VChartEventProxy.d.ts +0 -1
  105. package/cjs/event/VChartEventProxy.js +0 -1
  106. package/cjs/event/VChartEventProxy.js.map +0 -1
  107. package/es/event/VChartEventProxy.d.ts +0 -1
  108. package/es/event/VChartEventProxy.js +0 -1
  109. package/es/event/VChartEventProxy.js.map +0 -1
@@ -29,39 +29,34 @@ export function computeColsWidth(table, colStart, colEnd, update) {
29
29
  let maxWidth;
30
30
  if (!table.internalProps.transpose && "only-header" === (null === (_b = null === (_a = table.internalProps.layoutMap.columnWidths) || void 0 === _a ? void 0 : _a[col]) || void 0 === _b ? void 0 : _b.columnWidthComputeMode) && "showHeader" in table.internalProps.layoutMap) {
31
31
  const temp = table.internalProps.layoutMap.showHeader;
32
- table.internalProps.layoutMap.showHeader = !0, maxWidth = computeColWidth(col, 0, table.internalProps.layoutMap.headerLevelCount, table),
32
+ table.internalProps.layoutMap.showHeader = !0, maxWidth = computeColWidth(col, 0, table.internalProps.layoutMap.headerLevelCount - 1, table),
33
33
  table.internalProps.layoutMap.showHeader = temp;
34
34
  } else maxWidth = table.internalProps.transpose || "only-body" !== (null === (_d = null === (_c = table.internalProps.layoutMap.columnWidths) || void 0 === _c ? void 0 : _c[col]) || void 0 === _d ? void 0 : _d.columnWidthComputeMode) ? computeColWidth(col, 0, table.rowCount - 1, table) : computeColWidth(col, table.internalProps.layoutMap.getBodyRange().start.row, table.internalProps.layoutMap.getBodyRange().end.row, table);
35
35
  table._setColContentWidth(col, maxWidth);
36
- table.getColWidth(col) !== maxWidth && table._clearColRangeWidthsMap(col), update ? newWidths[col] = maxWidth : table._setColWidth(col, maxWidth, !1, !0);
36
+ table.getColWidth(col) !== maxWidth && table._clearColRangeWidthsMap(col), update ? newWidths[col] = table._adjustColWidth(col, maxWidth) : table._setColWidth(col, table._adjustColWidth(col, maxWidth), !1, !0);
37
37
  }
38
38
  if ("adaptive" === table.widthMode) {
39
+ const rowHeaderWidth = table.getColsWidth(0, table.rowHeaderLevelCount - 1), rightHeaderWidth = table.isPivotChart() ? table.getRightFrozenColsWidth() : 0;
40
+ table.tableNoFrameWidth;
39
41
  table._clearColRangeWidthsMap();
40
- const rowHeaderWidth = table.getColsWidth(0, table.rowHeaderLevelCount - 1), rightHeaderWidth = table.isPivotChart() ? table.getRightFrozenColsWidth() : 0, totalDrawWidth = table.tableNoFrameWidth - rowHeaderWidth - rightHeaderWidth, startCol = table.rowHeaderLevelCount, endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;
41
- let actualWidth = 0;
42
- for (let col = startCol; col < endCol; col++) actualWidth += update ? newWidths[col] : table.getColWidth(col);
43
- const factor = totalDrawWidth / actualWidth;
44
- for (let col = startCol; col < endCol; col++) {
45
- let colWidth;
46
- colWidth = col === endCol - 1 ? totalDrawWidth - (update ? newWidths.reduce(((acr, cur, index) => index >= startCol && index <= endCol - 2 ? acr + cur : acr), 0) : table.getColsWidth(startCol, endCol - 2)) : Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor),
47
- update ? newWidths[col] = colWidth : table._setColWidth(col, colWidth, !1, !0);
42
+ const canvasWidth = table.tableNoFrameWidth;
43
+ let actualHeaderWidth = 0;
44
+ for (let col = 0; col < table.colCount; col++) {
45
+ const colWidth = update ? newWidths[col] : table.getColWidth(col);
46
+ (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) && (actualHeaderWidth += colWidth);
48
47
  }
48
+ getAdaptiveWidth(canvasWidth - actualHeaderWidth, table.frozenColCount, table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount, update, newWidths, table);
49
49
  } else if (table.autoFillWidth) {
50
50
  table._clearColRangeWidthsMap();
51
51
  const canvasWidth = table.tableNoFrameWidth;
52
- let actualWidth = 0, actualHeaderWidth = 0;
52
+ let actualHeaderWidth = 0, actualWidth = 0;
53
53
  for (let col = 0; col < table.colCount; col++) {
54
54
  const colWidth = update ? newWidths[col] : table.getColWidth(col);
55
55
  (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) && (actualHeaderWidth += colWidth),
56
56
  actualWidth += colWidth;
57
57
  }
58
- if (actualWidth < canvasWidth && actualWidth - actualHeaderWidth > 0) {
59
- const factor = (canvasWidth - actualHeaderWidth) / (actualWidth - actualHeaderWidth);
60
- for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {
61
- let colWidth;
62
- colWidth = col === table.colCount - table.rightFrozenColCount - 1 ? canvasWidth - actualHeaderWidth - (update ? newWidths.reduce(((acr, cur, index) => index >= table.frozenColCount && index <= table.colCount - table.rightFrozenColCount - 2 ? acr + cur : acr), 0) : table.getColsWidth(table.frozenColCount, table.colCount - table.rightFrozenColCount - 2)) : Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor),
63
- update ? newWidths[col] = colWidth : table._setColWidth(col, colWidth, !1, !0);
64
- }
58
+ if (actualWidth < canvasWidth && actualWidth > actualHeaderWidth) {
59
+ getAdaptiveWidth(canvasWidth - actualHeaderWidth, table.frozenColCount, table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount, update, newWidths, table);
65
60
  }
66
61
  }
67
62
  if (update) {
@@ -101,10 +96,7 @@ function computeAutoColWidth(widthDeifne, col, startRow, endRow, forceCompute, t
101
96
  } else if (layout.isLeftBottomCorner(col, row) || layout.isRightTopCorner(col, row) || layout.isRightBottomCorner(col, row)) continue;
102
97
  }
103
98
  const customWidth = computeCustomRenderWidth(col, row, table);
104
- if ("number" == typeof customWidth) {
105
- maxWidth = Math.max(customWidth, maxWidth);
106
- continue;
107
- }
99
+ if (customWidth && (maxWidth = Math.max(customWidth.width, maxWidth), !customWidth.renderDefault)) continue;
108
100
  const indicatorWidth = widthDeifne;
109
101
  if ("number" == typeof indicatorWidth && "standard" === table.widthMode && !forceCompute) {
110
102
  maxWidth = Math.max(indicatorWidth, maxWidth);
@@ -141,7 +133,7 @@ function computeCustomRenderWidth(col, row, table) {
141
133
  var _a, _b, _c, _d;
142
134
  const customRender = table.getCustomRender(col, row), customLayout = table.getCustomLayout(col, row);
143
135
  if (customRender || customLayout) {
144
- let spanCol = 1, width = 0;
136
+ let spanCol = 1, width = 0, renderDefault = !1;
145
137
  if (table.isHeader(col, row) || (null === (_a = table.getBodyColumnDefine(col, row)) || void 0 === _a ? void 0 : _a.mergeCell)) {
146
138
  const cellRange = table.getCellRange(col, row);
147
139
  spanCol = cellRange.end.col - cellRange.start.col + 1;
@@ -158,12 +150,18 @@ function computeCustomRenderWidth(col, row, table) {
158
150
  const customLayoutObj = customLayout(arg);
159
151
  customLayoutObj.rootContainer instanceof VGroup ? (customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer),
160
152
  dealPercentCalc(customLayoutObj.rootContainer, 0, table.getRowHeight(row)), customLayoutObj.rootContainer.setStage(table.scenegraph.stage),
161
- width = null !== (_b = customLayoutObj.rootContainer.AABBBounds.width()) && void 0 !== _b ? _b : 0) : width = 0;
153
+ width = null !== (_b = customLayoutObj.rootContainer.AABBBounds.width()) && void 0 !== _b ? _b : 0,
154
+ renderDefault = customLayoutObj.renderDefault) : width = 0;
162
155
  } else if ("function" == typeof customRender) {
163
156
  const customRenderObj = customRender(arg);
164
- width = null !== (_c = null == customRenderObj ? void 0 : customRenderObj.expectedWidth) && void 0 !== _c ? _c : 0;
165
- } else width = null !== (_d = null == customRender ? void 0 : customRender.expectedWidth) && void 0 !== _d ? _d : 0;
166
- return width / spanCol;
157
+ width = null !== (_c = null == customRenderObj ? void 0 : customRenderObj.expectedWidth) && void 0 !== _c ? _c : 0,
158
+ renderDefault = null == customRenderObj ? void 0 : customRenderObj.renderDefault;
159
+ } else width = null !== (_d = null == customRender ? void 0 : customRender.expectedWidth) && void 0 !== _d ? _d : 0,
160
+ renderDefault = null == customRender ? void 0 : customRender.renderDefault;
161
+ return {
162
+ width: width / spanCol,
163
+ renderDefault: renderDefault
164
+ };
167
165
  }
168
166
  }
169
167
 
@@ -232,4 +230,20 @@ function getColWidthDefinedWidthResizedWidth(col, table) {
232
230
  const widthDefined = table.getColWidthDefined(col);
233
231
  return table.internalProps._widthResizedColMap.has(col) ? table.getColWidth(col) : widthDefined;
234
232
  }
233
+
234
+ function getAdaptiveWidth(totalDrawWidth, startCol, endColPlus1, update, newWidths, table) {
235
+ let actualWidth = 0;
236
+ const adaptiveColumns = [];
237
+ for (let col = startCol; col < endColPlus1; col++) {
238
+ const width = update ? newWidths[col] : table.getColWidth(col), maxWidth = table.getMaxColWidth(col), minWidth = table.getMinColWidth(col);
239
+ width !== maxWidth && width !== minWidth ? (actualWidth += width, adaptiveColumns.push(col)) : totalDrawWidth -= width;
240
+ }
241
+ const factor = totalDrawWidth / actualWidth;
242
+ for (let i = 0; i < adaptiveColumns.length; i++) {
243
+ const col = adaptiveColumns[i];
244
+ let colWidth;
245
+ colWidth = i === adaptiveColumns.length - 1 ? totalDrawWidth - adaptiveColumns.reduce(((acr, cur, index) => cur !== col ? acr + (update ? newWidths[cur] : table.getColWidth(cur)) : acr), 0) : Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor),
246
+ update ? newWidths[col] = table._adjustColWidth(col, colWidth) : table._setColWidth(col, table._adjustColWidth(col, colWidth), !1, !0);
247
+ }
248
+ }
235
249
  //# sourceMappingURL=compute-col-width.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/layout/compute-col-width.ts"],"names":[],"mappings":"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","file":"compute-col-width.js","sourcesContent":["import type { SimpleHeaderLayoutMap } from '../../layout';\nimport type { ColumnTypeOption, TextColumnDefine } from '../../ts-types';\nimport { HierarchyState, IconPosition } from '../../ts-types';\nimport * as calc from '../../tools/calc';\nimport { validToString } from '../../tools/util';\nimport { getQuadProps } from '../utils/padding';\nimport { getProp } from '../utils/get-prop';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { computeAxisComponentWidth } from '../../components/axis/get-axis-component-size';\nimport { Group as VGroup } from '@visactor/vrender';\nimport { isObject } from '@visactor/vutils';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\n\nexport function computeColsWidth(table: BaseTableAPI, colStart?: number, colEnd?: number, update?: boolean): void {\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n colStart = colStart ?? 0;\n colEnd = colEnd ?? table.colCount - 1;\n // table._clearColRangeWidthsMap();\n // clear colRangeWidthsMap\n if (colStart === 0 && colEnd === table.colCount - 1) {\n table._clearColRangeWidthsMap();\n // } else {\n // for (let col = colStart; col <= colEnd; col++) {\n // table._clearColRangeWidthsMap(col);\n // }\n }\n\n const oldColWidths: number[] = [];\n const newWidths: number[] = [];\n if (update) {\n for (let col = 0; col < table.colCount; col++) {\n oldColWidths[col] = table.getColWidth(col);\n }\n }\n for (let col = colStart; col <= colEnd; col++) {\n let maxWidth;\n if (\n !table.internalProps.transpose &&\n table.internalProps.layoutMap.columnWidths?.[col]?.columnWidthComputeMode === 'only-header' &&\n 'showHeader' in table.internalProps.layoutMap\n ) {\n const temp = table.internalProps.layoutMap.showHeader;\n table.internalProps.layoutMap.showHeader = true;\n maxWidth = computeColWidth(col, 0, table.internalProps.layoutMap.headerLevelCount, table);\n table.internalProps.layoutMap.showHeader = temp;\n } else if (\n !table.internalProps.transpose &&\n table.internalProps.layoutMap.columnWidths?.[col]?.columnWidthComputeMode === 'only-body'\n ) {\n maxWidth = computeColWidth(\n col,\n table.internalProps.layoutMap.getBodyRange().start.row,\n table.internalProps.layoutMap.getBodyRange().end.row,\n table\n );\n } else {\n maxWidth = computeColWidth(col, 0, table.rowCount - 1, table);\n }\n\n table._setColContentWidth(col, maxWidth);\n\n const oldWidth = table.getColWidth(col);\n if (oldWidth !== maxWidth) {\n table._clearColRangeWidthsMap(col);\n }\n if (update) {\n newWidths[col] = maxWidth;\n } else {\n table._setColWidth(col, maxWidth, false, true);\n }\n }\n\n // 处理adaptive宽度\n if (table.widthMode === 'adaptive') {\n table._clearColRangeWidthsMap();\n // const canvasWidth = table.internalProps.canvas.width;\n const rowHeaderWidth = table.getColsWidth(0, table.rowHeaderLevelCount - 1);\n const rightHeaderWidth = table.isPivotChart() ? table.getRightFrozenColsWidth() : 0;\n const totalDrawWidth = table.tableNoFrameWidth - rowHeaderWidth - rightHeaderWidth;\n const startCol = table.rowHeaderLevelCount;\n const endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;\n let actualWidth = 0;\n for (let col = startCol; col < endCol; col++) {\n actualWidth += update ? newWidths[col] : table.getColWidth(col);\n }\n const factor = totalDrawWidth / actualWidth;\n for (let col = startCol; col < endCol; col++) {\n let colWidth;\n if (col === endCol - 1) {\n colWidth =\n totalDrawWidth -\n (update\n ? newWidths.reduce((acr, cur, index) => {\n if (index >= startCol && index <= endCol - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getColsWidth(startCol, endCol - 2));\n } else {\n colWidth = Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor);\n }\n if (update) {\n newWidths[col] = colWidth;\n } else {\n table._setColWidth(col, colWidth, false, true);\n }\n }\n } else if (table.autoFillWidth) {\n // 处理风神列宽特殊逻辑\n table._clearColRangeWidthsMap();\n const canvasWidth = table.tableNoFrameWidth;\n let actualWidth = 0;\n let actualHeaderWidth = 0;\n for (let col = 0; col < table.colCount; col++) {\n const colWidth = update ? newWidths[col] : table.getColWidth(col);\n if (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) {\n actualHeaderWidth += colWidth;\n }\n\n actualWidth += colWidth;\n }\n\n // 如果内容宽度小于canvas宽度,执行adaptive放大\n if (actualWidth < canvasWidth && actualWidth - actualHeaderWidth > 0) {\n const factor = (canvasWidth - actualHeaderWidth) / (actualWidth - actualHeaderWidth);\n for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {\n let colWidth;\n if (col === table.colCount - table.rightFrozenColCount - 1) {\n colWidth =\n canvasWidth -\n actualHeaderWidth -\n (update\n ? newWidths.reduce((acr, cur, index) => {\n if (index >= table.frozenColCount && index <= table.colCount - table.rightFrozenColCount - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getColsWidth(table.frozenColCount, table.colCount - table.rightFrozenColCount - 2));\n } else {\n colWidth = Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor);\n }\n if (update) {\n // newWidths[col] = newWidths[col] * factor;\n newWidths[col] = colWidth;\n } else {\n // table.setColWidth(col, table.getColWidth(col) * factor, false, true);\n table._setColWidth(col, colWidth, false, true);\n }\n }\n }\n }\n // console.log('computeColsWidth time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time);\n\n if (update) {\n for (let col = 0; col < table.colCount; col++) {\n // newColWidth could not be in column min max range possibly\n // const newColWidth = table._adjustColWidth(col, newWidths[col]) ?? table.getColWidth(col);\n const newColWidth = newWidths[col] ?? table.getColWidth(col);\n if (newColWidth !== oldColWidths[col]) {\n // update the column width in scenegraph\n table.scenegraph.updateColWidth(col, newColWidth - oldColWidths[col], true);\n }\n }\n table.scenegraph.updateContainer();\n }\n // console.log('computeColsWidth time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, colStart, colEnd);\n}\n\n/**\n * @description: 计算列宽\n * @param {number} col\n * @param {number} startRow\n * @param {number} endRow\n * @param {BaseTableAPI} table\n * @param {boolean} forceCompute\n * @return {*}\n */\nexport function computeColWidth(\n col: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n forceCompute: boolean = false //forceCompute如果设置为true 即便不是自动列宽的列也会按内容计算列宽\n): number {\n // const { layoutMap, transpose } = table.internalProps;\n // let { width } = layoutMap?.getColumnWidthDefined(col) ?? {};\n\n // if (transpose) {\n // // 转置模式\n // if (table.widthMode === 'standard') {\n // // return table.getColWidth(col);\n // // standard模式使用默认值\n // if (table.isRowHeader(col, 0) || table.isCornerHeader(col, 0)) {\n // const defaultWidth = Array.isArray(table.defaultHeaderColWidth)\n // ? table.defaultHeaderColWidth[col] ?? table.defaultColWidth\n // : table.defaultHeaderColWidth;\n // if (defaultWidth === 'auto') {\n // widthfffff = 'auto';\n // } else {\n // return defaultWidth;\n // }\n // }\n\n // if (widthfffff !== 'auto') {\n // // if (width && (typeof width === 'string' || width > 0)) return width;\n // if (typeof widthfffff === 'string') {\n // return calc.toPx(widthfffff, table.internalProps.calcWidthContext);\n // } else if (widthfffff) {\n // return widthfffff;\n // }\n // return table.defaultColWidth;\n // }\n // } else if (\n // table.widthMode === 'adaptive' &&\n // col === 0 &&\n // widthfffff !== 'auto' &&\n // (layoutMap as SimpleHeaderLayoutMap)?.showHeader\n // ) {\n // // ToBeFixed hack逻辑,转置第一列列宽为header[0]\n // if (typeof widthfffff === 'string') {\n // return calc.toPx(widthfffff, table.internalProps.calcWidthContext);\n // } else if (widthfffff) {\n // return widthfffff;\n // }\n // }\n // // autoWidth adaptive 需要计算内容宽度\n // // do nothing\n // } else if (widthfffff !== 'auto' && table.widthMode !== 'autoWidth' && !forceCompute) {\n // // if (width && (typeof width === 'string' || width > 0)) return width;\n // if (typeof widthfffff === 'string') {\n // return calc.toPx(widthfffff, table.internalProps.calcWidthContext);\n // } else if (widthfffff) {\n // return widthfffff;\n // }\n // //是透视表的行表头部分 则宽度按defaultHeaderColWidth设置\n // const defaultWidth = table.getColWidthDefine(col);\n // if (defaultWidth !== 'auto') {\n // return table.getColWidth(col);\n // }\n // }\n const width = getColWidthDefinedWidthResizedWidth(col, table);\n if (forceCompute && !table.internalProps.transpose) {\n return computeAutoColWidth(width, col, startRow, endRow, forceCompute, table);\n } else if (typeof width === 'number') {\n return width;\n } else if (width !== 'auto' && typeof width === 'string') {\n // return calc.toPx(width, table.internalProps.calcWidthContext);\n return table._adjustColWidth(col, table._colWidthDefineToPxWidth(width));\n }\n return computeAutoColWidth(width, col, startRow, endRow, forceCompute, table);\n}\n\n/**\n * @description: 计算width: auto情况下的列宽\n * @param {number} col\n * @param {number} startRow\n * @param {number} endRow\n * @param {boolean} forceCompute\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeAutoColWidth(\n widthDeifne: string | number,\n col: number,\n startRow: number,\n endRow: number,\n forceCompute: boolean,\n table: BaseTableAPI\n): number {\n // 处理 auto width\n let maxWidth = 0;\n let deltaRow = 1;\n let prepareDeltaRow = 1; // 当计算完表头单元格的宽度后再采用采用逻辑,prepareDeltaRow这个值为期body部分做准备\n if (endRow - startRow > 5000) {\n // 超过5000行启动列宽自动计算采样\n prepareDeltaRow = Math.ceil((endRow - startRow) / 5000);\n }\n // 如果是透视图\n if (table.isPivotChart() && col >= table.rowHeaderLevelCount && col < table.colCount - table.rightFrozenColCount) {\n if (!(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n //并且指标是以行展示 计算列宽需要根据x轴的值域范围\n const optimunWidth = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunWidthForChart(col);\n if (optimunWidth > 0) {\n return optimunWidth;\n }\n } else {\n //直接拿表头的默认列宽\n return table.defaultColWidth;\n }\n }\n\n for (let row = startRow; row <= endRow; row += deltaRow) {\n // 判断透视图轴组件\n if (table.isPivotChart()) {\n const layout = table.internalProps.layoutMap as PivotHeaderLayoutMap;\n const axisConfig = getAxisConfigInPivotChart(col, row, layout);\n if (axisConfig) {\n const axisWidth = computeAxisComponentWidth(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxWidth = Math.max(axisWidth, maxWidth);\n continue;\n }\n } else if (\n layout.isLeftBottomCorner(col, row) ||\n layout.isRightTopCorner(col, row) ||\n layout.isRightBottomCorner(col, row)\n ) {\n // 透视图三角为无效单元格,不参与宽度计算\n continue;\n }\n }\n\n // 判断CustomRender\n const customWidth = computeCustomRenderWidth(col, row, table);\n if (typeof customWidth === 'number') {\n maxWidth = Math.max(customWidth, maxWidth);\n continue;\n }\n\n // 判断透视表如果在指标\n // const indicatorWidth = computeIndicatorWidth(col, row, forceCompute, table);\n // const indicatorWidth = table.internalProps.layoutMap.getColumnWidthDefined(col);\n const indicatorWidth = widthDeifne;\n if (typeof indicatorWidth === 'number' && table.widthMode === 'standard' && !forceCompute) {\n maxWidth = Math.max(indicatorWidth, maxWidth);\n continue;\n }\n\n const cellType = table.isHeader(col, row)\n ? table._getHeaderLayoutMap(col, row)?.headerType\n : table.getBodyColumnType(col, row);\n if (cellType !== 'text' && cellType !== 'link' && cellType !== 'progressbar' && cellType !== 'checkbox') {\n // text&link&progressbar测量文字宽度\n // image&video&sparkline使用默认宽度\n maxWidth = Math.max(maxWidth, table.getColWidthDefinedNumber(col) || 0);\n continue;\n }\n\n // 处理树形展开\n let cellHierarchyIndent = 0;\n const layoutMap = table.internalProps.layoutMap;\n //判断是否为表头\n if (layoutMap.isHeader(col, row)) {\n const hd = layoutMap.getHeader(col, row);\n // 如果某级表头设置了only-body,在计算表头内容宽度时跳过改级表头\n if (hd?.define?.columnWidthComputeMode === 'only-body') {\n continue;\n }\n if (hd?.hierarchyLevel) {\n cellHierarchyIndent = (hd.hierarchyLevel ?? 0) * ((layoutMap as PivotHeaderLayoutMap).rowHierarchyIndent ?? 0);\n }\n } else {\n deltaRow = prepareDeltaRow;\n // 基本表格表身body单元格 如果是树形展开 需要考虑缩进值\n // const cellHierarchyState = table.getHierarchyState(col, row);\n // if (cellHierarchyState === HierarchyState.expand || cellHierarchyState === HierarchyState.collapse) {\n const define = table.getBodyColumnDefine(col, row);\n if (define?.tree) {\n const indexArr = table.dataSource.getIndexKey(table.getRecordIndexByCell(col, row));\n cellHierarchyIndent =\n Array.isArray(indexArr) && table.getHierarchyState(col, row) !== HierarchyState.none\n ? (indexArr.length - 1) * ((layoutMap as SimpleHeaderLayoutMap).hierarchyIndent ?? 0)\n : 0;\n }\n }\n\n // 测量文字宽度\n const textWidth = computeTextWidth(col, row, cellType, table);\n maxWidth = Math.max(textWidth + cellHierarchyIndent, maxWidth);\n //在前面设置了采用规则的情况下,为了确保底部冻结的每一行都测到\n if (\n deltaRow > 1 &&\n table.bottomFrozenRowCount > 0 &&\n row < table.rowCount - table.bottomFrozenRowCount &&\n row + deltaRow >= table.rowCount - table.bottomFrozenRowCount\n ) {\n row = table.rowCount - table.bottomFrozenRowCount - deltaRow;\n deltaRow = 1;\n prepareDeltaRow = 1;\n }\n }\n\n // 处理宽度限制\n const colMinWidth = table.getMinColWidth(col);\n const colMaxWidth = table.getMaxColWidth(col);\n if (maxWidth < colMinWidth) {\n return colMinWidth;\n } else if (maxWidth > colMaxWidth) {\n return colMaxWidth;\n }\n return maxWidth;\n}\n\n/**\n * @description: 计算customRender相关列宽\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeCustomRenderWidth(col: number, row: number, table: BaseTableAPI): number | undefined {\n const customRender = table.getCustomRender(col, row);\n const customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanCol = 1;\n let width = 0;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanCol = cellRange.end.col - cellRange.start.col + 1;\n }\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: getCellRect(col, row, table),\n table\n };\n if (customLayout) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer instanceof VGroup) {\n customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n dealPercentCalc(customLayoutObj.rootContainer, 0, table.getRowHeight(row));\n customLayoutObj.rootContainer.setStage(table.scenegraph.stage);\n width = (customLayoutObj.rootContainer as VGroup).AABBBounds.width() ?? 0;\n // width = (customLayoutObj.rootContainer as VGroup).attribute.width ?? 0;\n // } else if (customLayoutObj.rootContainer) {\n // customLayoutObj.rootContainer.isRoot = true;\n // const size = customLayoutObj.rootContainer.getContentSize();\n // width = size.width ?? 0;\n } else {\n width = 0;\n }\n } else if (typeof customRender === 'function') {\n // 处理customRender\n const customRenderObj = customRender(arg);\n width = customRenderObj?.expectedWidth ?? 0;\n } else {\n width = customRender?.expectedWidth ?? 0;\n }\n return width / spanCol;\n }\n return undefined;\n}\n\n/**\n * @description: 计算指标相关列宽\n * @param {number} col\n * @param {number} row\n * @param {boolean} forceCompute\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeIndicatorWidth(\n col: number,\n row: number,\n forceCompute: boolean,\n table: BaseTableAPI\n): number | undefined {\n const { layoutMap } = table.internalProps;\n if (table.isPivotTable() && (layoutMap as PivotHeaderLayoutMap).isColumnIndicatorHeader(col, row)) {\n // 透视表如果在指标中配置了宽度,使用该宽度作为指标单元格及下面内容单元格的列宽\n const body = layoutMap.getBody(col, row);\n if (body && body.width && body.width !== 'auto' && !forceCompute) {\n const width = Math.round(calc.toPx(body.width, table.internalProps.calcWidthContext));\n return width;\n }\n }\n return undefined;\n}\n\n/**\n * @description: 计算文字宽度\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeTextWidth(col: number, row: number, cellType: ColumnTypeOption, table: BaseTableAPI): number {\n let maxWidth = 0;\n const cellValue = table.getCellValue(col, row);\n // const dataValue = table.getCellOriginValue(col, row);\n const actStyle = table._getCellStyle(col, row);\n let iconWidth = 0;\n const define = table.getBodyColumnDefine(col, row);\n const mayHaveIcon = table.getCellLocation(col, row) !== 'body' ? true : !!define?.icon || !!define?.tree;\n if (mayHaveIcon) {\n const icons = table.getCellIcons(col, row);\n icons?.forEach(icon => {\n if (icon.positionType !== IconPosition.absoluteRight) {\n iconWidth += (icon.width ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0);\n }\n });\n }\n let spanCol = 1;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanCol = cellRange.end.col - cellRange.start.col + 1;\n }\n\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n const paddingWidth = padding[1] + padding[3]; // + cellHierarchyIndent\n\n const fontSize = getProp('fontSize', actStyle, col, row, table);\n const fontFamily = getProp('fontFamily', actStyle, col, row, table);\n const fontWeight = getProp('fontWeight', actStyle, col, row, table);\n let text;\n if (cellType === 'checkbox') {\n text = isObject(cellValue) ? (cellValue as any).text : cellValue;\n } else {\n text = cellValue;\n }\n const lines = validToString(text).split('\\n') || [];\n if (lines.length >= 1) {\n // eslint-disable-next-line no-loop-func\n lines.forEach((line: string) => {\n const width = table.measureText(line.slice(0, table.options.maxCharactersNumber || 200), {\n fontSize,\n fontFamily,\n fontWeight\n }).width;\n maxWidth = Math.max(\n // 最大字符上限控制测量的字符\n (width + paddingWidth + 4 + iconWidth) / spanCol, // 这里+4为列宽测量结果的buffer\n maxWidth\n );\n });\n } else {\n maxWidth = Math.max(\n // 最大字符上限控制测量的字符\n (paddingWidth + 4 + iconWidth) / spanCol,\n maxWidth\n );\n }\n // 判断是否需要限制最大宽度 之前写死的450 需要使用配置来判断\n if (table.internalProps.limitMaxAutoWidth !== false) {\n maxWidth = Math.min(\n typeof table.internalProps.limitMaxAutoWidth === 'number' ? table.internalProps.limitMaxAutoWidth : 450,\n maxWidth\n );\n }\n\n if (cellType === 'checkbox') {\n const size = getProp('size', actStyle, col, row, table);\n maxWidth += size;\n\n if (text) {\n const spaceBetweenTextAndIcon = getProp('spaceBetweenTextAndIcon', actStyle, col, row, table);\n maxWidth += spaceBetweenTextAndIcon;\n }\n }\n\n return maxWidth;\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: 0,\n height: 0\n };\n}\n\nfunction getColWidthDefinedWidthResizedWidth(col: number, table: BaseTableAPI) {\n const widthDefined = table.getColWidthDefined(col);\n if (table.internalProps._widthResizedColMap.has(col)) {\n return table.getColWidth(col);\n }\n return widthDefined;\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/layout/compute-col-width.ts"],"names":[],"mappings":"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","file":"compute-col-width.js","sourcesContent":["import type { SimpleHeaderLayoutMap } from '../../layout';\nimport type { ColumnTypeOption, TextColumnDefine } from '../../ts-types';\nimport { HierarchyState, IconPosition } from '../../ts-types';\nimport * as calc from '../../tools/calc';\nimport { validToString } from '../../tools/util';\nimport { getQuadProps } from '../utils/padding';\nimport { getProp } from '../utils/get-prop';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { computeAxisComponentWidth } from '../../components/axis/get-axis-component-size';\nimport { Group as VGroup } from '@visactor/vrender';\nimport { isObject } from '@visactor/vutils';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\n\nexport function computeColsWidth(table: BaseTableAPI, colStart?: number, colEnd?: number, update?: boolean): void {\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n colStart = colStart ?? 0;\n colEnd = colEnd ?? table.colCount - 1;\n // table._clearColRangeWidthsMap();\n // clear colRangeWidthsMap\n if (colStart === 0 && colEnd === table.colCount - 1) {\n table._clearColRangeWidthsMap();\n // } else {\n // for (let col = colStart; col <= colEnd; col++) {\n // table._clearColRangeWidthsMap(col);\n // }\n }\n\n const oldColWidths: number[] = [];\n const newWidths: number[] = [];\n if (update) {\n for (let col = 0; col < table.colCount; col++) {\n oldColWidths[col] = table.getColWidth(col);\n }\n }\n for (let col = colStart; col <= colEnd; col++) {\n let maxWidth;\n if (\n !table.internalProps.transpose &&\n table.internalProps.layoutMap.columnWidths?.[col]?.columnWidthComputeMode === 'only-header' &&\n 'showHeader' in table.internalProps.layoutMap\n ) {\n const temp = table.internalProps.layoutMap.showHeader;\n table.internalProps.layoutMap.showHeader = true;\n maxWidth = computeColWidth(col, 0, table.internalProps.layoutMap.headerLevelCount - 1, table);\n table.internalProps.layoutMap.showHeader = temp;\n } else if (\n !table.internalProps.transpose &&\n table.internalProps.layoutMap.columnWidths?.[col]?.columnWidthComputeMode === 'only-body'\n ) {\n maxWidth = computeColWidth(\n col,\n table.internalProps.layoutMap.getBodyRange().start.row,\n table.internalProps.layoutMap.getBodyRange().end.row,\n table\n );\n } else {\n maxWidth = computeColWidth(col, 0, table.rowCount - 1, table);\n }\n\n table._setColContentWidth(col, maxWidth);\n\n const oldWidth = table.getColWidth(col);\n if (oldWidth !== maxWidth) {\n table._clearColRangeWidthsMap(col);\n }\n if (update) {\n newWidths[col] = table._adjustColWidth(col, maxWidth);\n } else {\n table._setColWidth(col, table._adjustColWidth(col, maxWidth), false, true);\n }\n }\n\n // 处理adaptive宽度\n if (table.widthMode === 'adaptive') {\n const rowHeaderWidth = table.getColsWidth(0, table.rowHeaderLevelCount - 1);\n const rightHeaderWidth = table.isPivotChart() ? table.getRightFrozenColsWidth() : 0;\n const totalDrawWidth = table.tableNoFrameWidth - rowHeaderWidth - rightHeaderWidth;\n\n table._clearColRangeWidthsMap();\n const canvasWidth = table.tableNoFrameWidth;\n let actualHeaderWidth = 0;\n for (let col = 0; col < table.colCount; col++) {\n const colWidth = update ? newWidths[col] : table.getColWidth(col);\n if (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) {\n actualHeaderWidth += colWidth;\n }\n }\n const startCol = table.frozenColCount;\n const endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;\n getAdaptiveWidth(canvasWidth - actualHeaderWidth, startCol, endCol, update, newWidths, table);\n // const canvasWidth = table.internalProps.canvas.width;\n // const rowHeaderWidth = table.getColsWidth(0, table.rowHeaderLevelCount - 1);\n // const rightHeaderWidth = table.isPivotChart() ? table.getRightFrozenColsWidth() : 0;\n // const totalDrawWidth = table.tableNoFrameWidth - rowHeaderWidth - rightHeaderWidth;\n // const startCol = table.rowHeaderLevelCount;\n // const endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;\n // let actualWidth = 0;\n // for (let col = startCol; col < endCol; col++) {\n // actualWidth += update ? newWidths[col] : table.getColWidth(col);\n // }\n // const factor = totalDrawWidth / actualWidth;\n // for (let col = startCol; col < endCol; col++) {\n // let colWidth;\n // if (col === endCol - 1) {\n // colWidth =\n // totalDrawWidth -\n // (update\n // ? newWidths.reduce((acr, cur, index) => {\n // if (index >= startCol && index <= endCol - 2) {\n // return acr + cur;\n // }\n // return acr;\n // }, 0)\n // : table.getColsWidth(startCol, endCol - 2));\n // } else {\n // colWidth = Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor);\n // }\n // if (update) {\n // newWidths[col] = table._adjustColWidth(col, colWidth);\n // } else {\n // table._setColWidth(col, table._adjustColWidth(col, colWidth), false, true);\n // }\n // }\n } else if (table.autoFillWidth) {\n // 处理风神列宽特殊逻辑\n table._clearColRangeWidthsMap();\n const canvasWidth = table.tableNoFrameWidth;\n let actualHeaderWidth = 0;\n let actualWidth = 0;\n for (let col = 0; col < table.colCount; col++) {\n const colWidth = update ? newWidths[col] : table.getColWidth(col);\n if (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) {\n actualHeaderWidth += colWidth;\n }\n actualWidth += colWidth;\n }\n // 如果内容宽度小于canvas宽度,执行adaptive放大\n if (actualWidth < canvasWidth && actualWidth > actualHeaderWidth) {\n const startCol = table.frozenColCount;\n const endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;\n getAdaptiveWidth(canvasWidth - actualHeaderWidth, startCol, endCol, update, newWidths, table);\n }\n\n // // 如果内容宽度小于canvas宽度,执行adaptive放大\n // if (actualWidth < canvasWidth && actualWidth - actualHeaderWidth > 0) {\n // const factor = (canvasWidth - actualHeaderWidth) / (actualWidth - actualHeaderWidth);\n // for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {\n // let colWidth;\n // if (col === table.colCount - table.rightFrozenColCount - 1) {\n // colWidth =\n // canvasWidth -\n // actualHeaderWidth -\n // (update\n // ? newWidths.reduce((acr, cur, index) => {\n // if (index >= table.frozenColCount && index <= table.colCount - table.rightFrozenColCount - 2) {\n // return acr + cur;\n // }\n // return acr;\n // }, 0)\n // : table.getColsWidth(table.frozenColCount, table.colCount - table.rightFrozenColCount - 2));\n // } else {\n // colWidth = Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor);\n // }\n // if (update) {\n // // newWidths[col] = newWidths[col] * factor;\n // newWidths[col] = table._adjustColWidth(col, colWidth);\n // } else {\n // // table.setColWidth(col, table.getColWidth(col) * factor, false, true);\n // table._setColWidth(col, table._adjustColWidth(col, colWidth), false, true);\n // }\n // }\n // }\n }\n // console.log('computeColsWidth time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time);\n\n if (update) {\n for (let col = 0; col < table.colCount; col++) {\n // newColWidth could not be in column min max range possibly\n // const newColWidth = table._adjustColWidth(col, newWidths[col]) ?? table.getColWidth(col);\n const newColWidth = newWidths[col] ?? table.getColWidth(col);\n if (newColWidth !== oldColWidths[col]) {\n // update the column width in scenegraph\n table.scenegraph.updateColWidth(col, newColWidth - oldColWidths[col], true);\n }\n }\n table.scenegraph.updateContainer();\n }\n // console.log('computeColsWidth time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, colStart, colEnd);\n}\n\n/**\n * @description: 计算列宽\n * @param {number} col\n * @param {number} startRow\n * @param {number} endRow\n * @param {BaseTableAPI} table\n * @param {boolean} forceCompute\n * @return {*}\n */\nexport function computeColWidth(\n col: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n forceCompute: boolean = false //forceCompute如果设置为true 即便不是自动列宽的列也会按内容计算列宽\n): number {\n // const { layoutMap, transpose } = table.internalProps;\n // let { width } = layoutMap?.getColumnWidthDefined(col) ?? {};\n\n // if (transpose) {\n // // 转置模式\n // if (table.widthMode === 'standard') {\n // // return table.getColWidth(col);\n // // standard模式使用默认值\n // if (table.isRowHeader(col, 0) || table.isCornerHeader(col, 0)) {\n // const defaultWidth = Array.isArray(table.defaultHeaderColWidth)\n // ? table.defaultHeaderColWidth[col] ?? table.defaultColWidth\n // : table.defaultHeaderColWidth;\n // if (defaultWidth === 'auto') {\n // widthfffff = 'auto';\n // } else {\n // return defaultWidth;\n // }\n // }\n\n // if (widthfffff !== 'auto') {\n // // if (width && (typeof width === 'string' || width > 0)) return width;\n // if (typeof widthfffff === 'string') {\n // return calc.toPx(widthfffff, table.internalProps.calcWidthContext);\n // } else if (widthfffff) {\n // return widthfffff;\n // }\n // return table.defaultColWidth;\n // }\n // } else if (\n // table.widthMode === 'adaptive' &&\n // col === 0 &&\n // widthfffff !== 'auto' &&\n // (layoutMap as SimpleHeaderLayoutMap)?.showHeader\n // ) {\n // // ToBeFixed hack逻辑,转置第一列列宽为header[0]\n // if (typeof widthfffff === 'string') {\n // return calc.toPx(widthfffff, table.internalProps.calcWidthContext);\n // } else if (widthfffff) {\n // return widthfffff;\n // }\n // }\n // // autoWidth adaptive 需要计算内容宽度\n // // do nothing\n // } else if (widthfffff !== 'auto' && table.widthMode !== 'autoWidth' && !forceCompute) {\n // // if (width && (typeof width === 'string' || width > 0)) return width;\n // if (typeof widthfffff === 'string') {\n // return calc.toPx(widthfffff, table.internalProps.calcWidthContext);\n // } else if (widthfffff) {\n // return widthfffff;\n // }\n // //是透视表的行表头部分 则宽度按defaultHeaderColWidth设置\n // const defaultWidth = table.getColWidthDefine(col);\n // if (defaultWidth !== 'auto') {\n // return table.getColWidth(col);\n // }\n // }\n const width = getColWidthDefinedWidthResizedWidth(col, table);\n if (forceCompute && !table.internalProps.transpose) {\n return computeAutoColWidth(width, col, startRow, endRow, forceCompute, table);\n } else if (typeof width === 'number') {\n return width;\n } else if (width !== 'auto' && typeof width === 'string') {\n // return calc.toPx(width, table.internalProps.calcWidthContext);\n return table._adjustColWidth(col, table._colWidthDefineToPxWidth(width));\n }\n return computeAutoColWidth(width, col, startRow, endRow, forceCompute, table);\n}\n\n/**\n * @description: 计算width: auto情况下的列宽\n * @param {number} col\n * @param {number} startRow\n * @param {number} endRow\n * @param {boolean} forceCompute\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeAutoColWidth(\n widthDeifne: string | number,\n col: number,\n startRow: number,\n endRow: number,\n forceCompute: boolean,\n table: BaseTableAPI\n): number {\n // 处理 auto width\n let maxWidth = 0;\n let deltaRow = 1;\n let prepareDeltaRow = 1; // 当计算完表头单元格的宽度后再采用采用逻辑,prepareDeltaRow这个值为期body部分做准备\n if (endRow - startRow > 5000) {\n // 超过5000行启动列宽自动计算采样\n prepareDeltaRow = Math.ceil((endRow - startRow) / 5000);\n }\n // 如果是透视图\n if (table.isPivotChart() && col >= table.rowHeaderLevelCount && col < table.colCount - table.rightFrozenColCount) {\n if (!(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n //并且指标是以行展示 计算列宽需要根据x轴的值域范围\n const optimunWidth = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunWidthForChart(col);\n if (optimunWidth > 0) {\n return optimunWidth;\n }\n } else {\n //直接拿表头的默认列宽\n return table.defaultColWidth;\n }\n }\n\n for (let row = startRow; row <= endRow; row += deltaRow) {\n // 判断透视图轴组件\n if (table.isPivotChart()) {\n const layout = table.internalProps.layoutMap as PivotHeaderLayoutMap;\n const axisConfig = getAxisConfigInPivotChart(col, row, layout);\n if (axisConfig) {\n const axisWidth = computeAxisComponentWidth(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxWidth = Math.max(axisWidth, maxWidth);\n continue;\n }\n } else if (\n layout.isLeftBottomCorner(col, row) ||\n layout.isRightTopCorner(col, row) ||\n layout.isRightBottomCorner(col, row)\n ) {\n // 透视图三角为无效单元格,不参与宽度计算\n continue;\n }\n }\n\n // 判断CustomRender\n const customWidth = computeCustomRenderWidth(col, row, table);\n if (customWidth) {\n maxWidth = Math.max(customWidth.width, maxWidth);\n if (!customWidth.renderDefault) {\n continue;\n }\n }\n\n // 判断透视表如果在指标\n // const indicatorWidth = computeIndicatorWidth(col, row, forceCompute, table);\n // const indicatorWidth = table.internalProps.layoutMap.getColumnWidthDefined(col);\n const indicatorWidth = widthDeifne;\n if (typeof indicatorWidth === 'number' && table.widthMode === 'standard' && !forceCompute) {\n maxWidth = Math.max(indicatorWidth, maxWidth);\n continue;\n }\n\n const cellType = table.isHeader(col, row)\n ? table._getHeaderLayoutMap(col, row)?.headerType\n : table.getBodyColumnType(col, row);\n if (cellType !== 'text' && cellType !== 'link' && cellType !== 'progressbar' && cellType !== 'checkbox') {\n // text&link&progressbar测量文字宽度\n // image&video&sparkline使用默认宽度\n maxWidth = Math.max(maxWidth, table.getColWidthDefinedNumber(col) || 0);\n continue;\n }\n\n // 处理树形展开\n let cellHierarchyIndent = 0;\n const layoutMap = table.internalProps.layoutMap;\n //判断是否为表头\n if (layoutMap.isHeader(col, row)) {\n const hd = layoutMap.getHeader(col, row);\n // 如果某级表头设置了only-body,在计算表头内容宽度时跳过改级表头\n if (hd?.define?.columnWidthComputeMode === 'only-body') {\n continue;\n }\n if (hd?.hierarchyLevel) {\n cellHierarchyIndent = (hd.hierarchyLevel ?? 0) * ((layoutMap as PivotHeaderLayoutMap).rowHierarchyIndent ?? 0);\n }\n } else {\n deltaRow = prepareDeltaRow;\n // 基本表格表身body单元格 如果是树形展开 需要考虑缩进值\n // const cellHierarchyState = table.getHierarchyState(col, row);\n // if (cellHierarchyState === HierarchyState.expand || cellHierarchyState === HierarchyState.collapse) {\n const define = table.getBodyColumnDefine(col, row);\n if (define?.tree) {\n const indexArr = table.dataSource.getIndexKey(table.getRecordIndexByCell(col, row));\n cellHierarchyIndent =\n Array.isArray(indexArr) && table.getHierarchyState(col, row) !== HierarchyState.none\n ? (indexArr.length - 1) * ((layoutMap as SimpleHeaderLayoutMap).hierarchyIndent ?? 0)\n : 0;\n }\n }\n\n // 测量文字宽度\n const textWidth = computeTextWidth(col, row, cellType, table);\n maxWidth = Math.max(textWidth + cellHierarchyIndent, maxWidth);\n //在前面设置了采用规则的情况下,为了确保底部冻结的每一行都测到\n if (\n deltaRow > 1 &&\n table.bottomFrozenRowCount > 0 &&\n row < table.rowCount - table.bottomFrozenRowCount &&\n row + deltaRow >= table.rowCount - table.bottomFrozenRowCount\n ) {\n row = table.rowCount - table.bottomFrozenRowCount - deltaRow;\n deltaRow = 1;\n prepareDeltaRow = 1;\n }\n }\n\n // 处理宽度限制\n const colMinWidth = table.getMinColWidth(col);\n const colMaxWidth = table.getMaxColWidth(col);\n if (maxWidth < colMinWidth) {\n return colMinWidth;\n } else if (maxWidth > colMaxWidth) {\n return colMaxWidth;\n }\n return maxWidth;\n}\n\n/**\n * @description: 计算customRender相关列宽\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeCustomRenderWidth(col: number, row: number, table: BaseTableAPI) {\n const customRender = table.getCustomRender(col, row);\n const customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanCol = 1;\n let width = 0;\n let renderDefault = false;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanCol = cellRange.end.col - cellRange.start.col + 1;\n }\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: getCellRect(col, row, table),\n table\n };\n if (customLayout) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer instanceof VGroup) {\n customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n dealPercentCalc(customLayoutObj.rootContainer, 0, table.getRowHeight(row));\n customLayoutObj.rootContainer.setStage(table.scenegraph.stage);\n width = (customLayoutObj.rootContainer as VGroup).AABBBounds.width() ?? 0;\n renderDefault = customLayoutObj.renderDefault;\n } else {\n width = 0;\n }\n } else if (typeof customRender === 'function') {\n // 处理customRender\n const customRenderObj = customRender(arg);\n width = customRenderObj?.expectedWidth ?? 0;\n renderDefault = customRenderObj?.renderDefault;\n } else {\n width = customRender?.expectedWidth ?? 0;\n renderDefault = customRender?.renderDefault;\n }\n return {\n width: width / spanCol,\n renderDefault\n };\n }\n return undefined;\n}\n\n/**\n * @description: 计算指标相关列宽\n * @param {number} col\n * @param {number} row\n * @param {boolean} forceCompute\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeIndicatorWidth(\n col: number,\n row: number,\n forceCompute: boolean,\n table: BaseTableAPI\n): number | undefined {\n const { layoutMap } = table.internalProps;\n if (table.isPivotTable() && (layoutMap as PivotHeaderLayoutMap).isColumnIndicatorHeader(col, row)) {\n // 透视表如果在指标中配置了宽度,使用该宽度作为指标单元格及下面内容单元格的列宽\n const body = layoutMap.getBody(col, row);\n if (body && body.width && body.width !== 'auto' && !forceCompute) {\n const width = Math.round(calc.toPx(body.width, table.internalProps.calcWidthContext));\n return width;\n }\n }\n return undefined;\n}\n\n/**\n * @description: 计算文字宽度\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeTextWidth(col: number, row: number, cellType: ColumnTypeOption, table: BaseTableAPI): number {\n let maxWidth = 0;\n const cellValue = table.getCellValue(col, row);\n // const dataValue = table.getCellOriginValue(col, row);\n const actStyle = table._getCellStyle(col, row);\n let iconWidth = 0;\n const define = table.getBodyColumnDefine(col, row);\n const mayHaveIcon = table.getCellLocation(col, row) !== 'body' ? true : !!define?.icon || !!define?.tree;\n if (mayHaveIcon) {\n const icons = table.getCellIcons(col, row);\n icons?.forEach(icon => {\n if (icon.positionType !== IconPosition.absoluteRight) {\n iconWidth += (icon.width ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0);\n }\n });\n }\n let spanCol = 1;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanCol = cellRange.end.col - cellRange.start.col + 1;\n }\n\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n const paddingWidth = padding[1] + padding[3]; // + cellHierarchyIndent\n\n const fontSize = getProp('fontSize', actStyle, col, row, table);\n const fontFamily = getProp('fontFamily', actStyle, col, row, table);\n const fontWeight = getProp('fontWeight', actStyle, col, row, table);\n let text;\n if (cellType === 'checkbox') {\n text = isObject(cellValue) ? (cellValue as any).text : cellValue;\n } else {\n text = cellValue;\n }\n const lines = validToString(text).split('\\n') || [];\n if (lines.length >= 1) {\n // eslint-disable-next-line no-loop-func\n lines.forEach((line: string) => {\n const width = table.measureText(line.slice(0, table.options.maxCharactersNumber || 200), {\n fontSize,\n fontFamily,\n fontWeight\n }).width;\n maxWidth = Math.max(\n // 最大字符上限控制测量的字符\n (width + paddingWidth + 4 + iconWidth) / spanCol, // 这里+4为列宽测量结果的buffer\n maxWidth\n );\n });\n } else {\n maxWidth = Math.max(\n // 最大字符上限控制测量的字符\n (paddingWidth + 4 + iconWidth) / spanCol,\n maxWidth\n );\n }\n // 判断是否需要限制最大宽度 之前写死的450 需要使用配置来判断\n if (table.internalProps.limitMaxAutoWidth !== false) {\n maxWidth = Math.min(\n typeof table.internalProps.limitMaxAutoWidth === 'number' ? table.internalProps.limitMaxAutoWidth : 450,\n maxWidth\n );\n }\n\n if (cellType === 'checkbox') {\n const size = getProp('size', actStyle, col, row, table);\n maxWidth += size;\n\n if (text) {\n const spaceBetweenTextAndIcon = getProp('spaceBetweenTextAndIcon', actStyle, col, row, table);\n maxWidth += spaceBetweenTextAndIcon;\n }\n }\n\n return maxWidth;\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: 0,\n height: 0\n };\n}\n\nfunction getColWidthDefinedWidthResizedWidth(col: number, table: BaseTableAPI) {\n const widthDefined = table.getColWidthDefined(col);\n if (table.internalProps._widthResizedColMap.has(col)) {\n return table.getColWidth(col);\n }\n return widthDefined;\n}\n\nfunction getAdaptiveWidth(\n totalDrawWidth: number,\n startCol: number,\n endColPlus1: number,\n update: boolean,\n newWidths: number[],\n table: BaseTableAPI\n) {\n let actualWidth = 0;\n const adaptiveColumns: number[] = [];\n for (let col = startCol; col < endColPlus1; col++) {\n const width = update ? newWidths[col] : table.getColWidth(col);\n const maxWidth = table.getMaxColWidth(col);\n const minWidth = table.getMinColWidth(col);\n if (width !== maxWidth && width !== minWidth) {\n actualWidth += width;\n adaptiveColumns.push(col);\n } else {\n // fixed width, do not adaptive\n totalDrawWidth -= width;\n }\n }\n\n const factor = totalDrawWidth / actualWidth;\n\n for (let i = 0; i < adaptiveColumns.length; i++) {\n const col = adaptiveColumns[i];\n let colWidth;\n if (i === adaptiveColumns.length - 1) {\n colWidth =\n totalDrawWidth -\n adaptiveColumns.reduce((acr, cur, index) => {\n if (cur !== col) {\n return acr + (update ? newWidths[cur] : table.getColWidth(cur));\n }\n return acr;\n }, 0);\n } else {\n colWidth = Math.round((update ? newWidths[col] : table.getColWidth(col)) * factor);\n }\n if (update) {\n newWidths[col] = table._adjustColWidth(col, colWidth);\n } else {\n table._setColWidth(col, table._adjustColWidth(col, colWidth), false, true);\n }\n }\n}\n"]}
@@ -111,10 +111,7 @@ export function computeRowHeight(row, startCol, endCol, table) {
111
111
  }
112
112
  for (let col = startCol; col <= endCol; col++) {
113
113
  const customHeight = computeCustomRenderHeight(col, row, table);
114
- if ("number" == typeof customHeight) {
115
- maxHeight = Math.max(customHeight, maxHeight);
116
- continue;
117
- }
114
+ if (customHeight && (maxHeight = Math.max(customHeight.height, maxHeight), !customHeight.renderDefault)) continue;
118
115
  if (table.isPivotChart()) {
119
116
  const layout = table.internalProps.layoutMap, axisConfig = getAxisConfigInPivotChart(col, row, layout);
120
117
  if (axisConfig) {
@@ -168,7 +165,7 @@ function computeCustomRenderHeight(col, row, table) {
168
165
  var _a, _b, _c, _d;
169
166
  const customRender = table.getCustomRender(col, row), customLayout = table.getCustomLayout(col, row);
170
167
  if (customRender || customLayout) {
171
- let spanRow = 1, height = 0;
168
+ let spanRow = 1, height = 0, renderDefault = !1;
172
169
  if (table.isHeader(col, row) || (null === (_a = table.getBodyColumnDefine(col, row)) || void 0 === _a ? void 0 : _a.mergeCell)) {
173
170
  const cellRange = table.getCellRange(col, row);
174
171
  spanRow = cellRange.end.row - cellRange.start.row + 1;
@@ -185,12 +182,18 @@ function computeCustomRenderHeight(col, row, table) {
185
182
  const customLayoutObj = customLayout(arg);
186
183
  customLayoutObj.rootContainer instanceof VGroup ? (customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer),
187
184
  dealPercentCalc(customLayoutObj.rootContainer, table.getColWidth(col), 0), customLayoutObj.rootContainer.setStage(table.scenegraph.stage),
188
- height = null !== (_b = customLayoutObj.rootContainer.AABBBounds.height()) && void 0 !== _b ? _b : 0) : height = 0;
185
+ height = null !== (_b = customLayoutObj.rootContainer.AABBBounds.height()) && void 0 !== _b ? _b : 0,
186
+ renderDefault = customLayoutObj.renderDefault) : height = 0;
189
187
  } else if ("function" == typeof customRender) {
190
188
  const customRenderObj = customRender(arg);
191
- height = null !== (_c = null == customRenderObj ? void 0 : customRenderObj.expectedHeight) && void 0 !== _c ? _c : 0;
192
- } else height = null !== (_d = null == customRender ? void 0 : customRender.expectedHeight) && void 0 !== _d ? _d : 0;
193
- return height / spanRow;
189
+ height = null !== (_c = null == customRenderObj ? void 0 : customRenderObj.expectedHeight) && void 0 !== _c ? _c : 0,
190
+ renderDefault = null == customRenderObj ? void 0 : customRenderObj.renderDefault;
191
+ } else height = null !== (_d = null == customRender ? void 0 : customRender.expectedHeight) && void 0 !== _d ? _d : 0,
192
+ renderDefault = null == customRender ? void 0 : customRender.renderDefault;
193
+ return {
194
+ height: height / spanRow,
195
+ renderDefault: renderDefault
196
+ };
194
197
  }
195
198
  }
196
199
 
@@ -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 { RichText, Group as VGroup } from '@visactor/vrender';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { validToString } from '../../tools/util';\nimport type { ColumnIconOption, ColumnTypeOption } from '../../ts-types';\nimport { IconPosition } from '../../ts-types';\nimport type { BaseTableAPI, HeaderData } from '../../ts-types/base-table';\nimport type { ColumnData, TextColumnDefine } from '../../ts-types/list-table/layout-map/api';\nimport { WrapText } from '../graphic/text';\nimport { getProp } from '../utils/get-prop';\nimport { getQuadProps } from '../utils/padding';\nimport { dealWithRichTextIcon } from '../utils/text-icon-layout';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { computeAxisComponentHeight } from '../../components/axis/get-axis-component-size';\nimport { isArray, isNumber, isObject } from '@visactor/vutils';\nimport { CheckBox } from '@visactor/vrender-components';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\n\nconst utilTextMark = new WrapText({\n ignoreBuf: true\n // autoWrapText: true\n});\nconst utilRichTextMark = new RichText({\n width: 0,\n height: 0,\n textConfig: []\n});\nconst utilCheckBoxMark = new CheckBox({});\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 = 0; row < table.rowCount; row++) {\n // oldRowHeights.push(table.getRowHeight(row));\n oldRowHeights[row] = table.getRowHeight(row);\n }\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 = table.heightMode === 'autoHeight' || table.heightMode === 'adaptive';\n\n if (isAllRowsAuto || isDefaultHeaderHasAuto) {\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 if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = height;\n } else {\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] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n if (rowEnd < table.columnHeaderLevelCount || !isAllRowsAuto) {\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 checkFixedStyleAndNoWrap(table)\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] = 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] = 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] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\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 const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\n const totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\n const startRow = table.columnHeaderLevelCount;\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n let actualHeight = 0;\n for (let row = startRow; row < endRow; row++) {\n actualHeight += update ? newHeights[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((update ? newHeights[row] : table.getRowHeight(row)) * factor);\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);\n if (row < table.frozenRowCount || row >= table.rowCount - table.bottomFrozenRowCount) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (actualHeight < canvasHeight && actualHeight - actualHeaderHeight > 0) {\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; 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 === table.rowCount - table.bottomFrozenRowCount - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= table.frozenRowCount && index <= table.rowCount - table.bottomFrozenRowCount - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2));\n } else {\n rowHeight = Math.round((update ? newHeights[row] : table.getRowHeight(row)) * factor);\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 = 0; row < table.rowCount; row++) {\n const newRowHeight = newHeights[row] ?? table.getRowHeight(row);\n if (newRowHeight !== oldRowHeights[row]) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - oldRowHeights[row]);\n }\n }\n }\n // console.log('computeRowsHeight time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, rowStart, rowEnd);\n}\n\nexport function computeRowHeight(row: number, startCol: number, endCol: number, table: BaseTableAPI): number {\n let maxHeight = 0;\n // 如果是透视图\n if (\n table.isPivotChart() &&\n row >= table.columnHeaderLevelCount &&\n row < table.rowCount - table.bottomFrozenRowCount\n ) {\n if ((table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n //并且指标是以列展示 计算行高需要根据y轴的值域范围\n const optimunHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunHeightForChart(row);\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 (typeof customHeight === 'number') {\n maxHeight = Math.max(customHeight, maxHeight);\n continue;\n }\n\n // Axis component height calculation\n if (table.isPivotChart()) {\n const layout = table.internalProps.layoutMap as PivotHeaderLayoutMap;\n const axisConfig = getAxisConfigInPivotChart(col, row, layout);\n if (axisConfig) {\n const axisWidth = computeAxisComponentHeight(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxHeight = Math.max(axisWidth, maxHeight);\n continue;\n }\n }\n }\n\n const cellType = table.isHeader(col, row)\n ? table._getHeaderLayoutMap(col, row)?.headerType\n : table.getBodyColumnType(col, row);\n if (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 = Math.max(textHeight, maxHeight);\n }\n return maxHeight;\n}\n\nfunction checkFixedStyleAndNoWrap(table: BaseTableAPI): boolean {\n const { layoutMap } = table.internalProps;\n const row = table.columnHeaderLevelCount;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.isPivotChart()) &&\n (table.options.heightMode === 'autoHeight' || 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 (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n cellDefine.define?.customRender ||\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 &&\n (table.options.heightMode === 'autoHeight' || 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?.customRender ||\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 fillRowsHeight(\n height: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n newHeights: number[] | undefined\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}\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): number | undefined {\n const customRender = table.getCustomRender(col, row);\n const customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanRow = 1;\n let height = 0;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n }\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: getCellRect(col, row, table),\n table\n };\n if (customLayout) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer instanceof VGroup) {\n customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n dealPercentCalc(customLayoutObj.rootContainer, table.getColWidth(col), 0);\n customLayoutObj.rootContainer.setStage(table.scenegraph.stage);\n // debugger\n height = (customLayoutObj.rootContainer as VGroup).AABBBounds.height() ?? 0;\n // height = (customLayoutObj.rootContainer as VGroup).attribute.height ?? 0;\n // } else if (customLayoutObj.rootContainer) {\n // customLayoutObj.rootContainer.isRoot = true;\n // const size = customLayoutObj.rootContainer.getContentSize();\n // height = size.height ?? 0;\n } else {\n height = 0;\n }\n } else if (typeof customRender === 'function') {\n // 处理customRender\n const customRenderObj = customRender(arg);\n height = customRenderObj?.expectedHeight ?? 0;\n } else {\n height = customRender?.expectedHeight ?? 0;\n }\n return height / spanRow;\n }\n return undefined;\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 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 (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\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 let text;\n if (cellType === 'checkbox') {\n text = isObject(cellValue) ? (cellValue as any).text : cellValue;\n } else {\n text = cellValue;\n }\n const lines = validToString(text).split('\\n') || [];\n\n const cellWidth = table.getColsWidth(col, endCol);\n\n if (cellType === 'checkbox') {\n const size = getProp('size', actStyle, col, row, table);\n if (autoWrapText) {\n const spaceBetweenTextAndIcon = getProp('spaceBetweenTextAndIcon', actStyle, col, row, table);\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth - size - spaceBetweenTextAndIcon;\n utilCheckBoxMark.setAttributes({\n text: {\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n },\n icon: {\n width: Math.floor(size / 1.4), // icon : box => 10 : 14\n height: Math.floor(size / 1.4)\n },\n box: {\n width: size,\n height: size\n },\n spaceBetweenTextAndIcon\n });\n utilCheckBoxMark.render();\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n maxHeight = Math.max(size, lines.length * lineHeight);\n }\n } else 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 (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 maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth;\n utilTextMark.setAttributes({\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n });\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n // autoWrapText = false\n maxHeight = lines.length * lineHeight;\n }\n\n return (Math.max(maxHeight, iconHeight) + padding[0] + padding[2]) / spanRow;\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":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC;IAChC,SAAS,EAAE,IAAI;CAEhB,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC;IACpC,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,EAAE;CACf,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE1C,MAAM,UAAU,iBAAiB,CAC/B,KAAmB,EACnB,QAAiB,EACjB,MAAe,EACf,4BAAqC,IAAI,EACzC,MAAgB;;IAEhB,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,MAAM,EAAE;QACV,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YAE7C,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SAC9C;KACF;IAED,KAAK,CAAC,sBAAsB,CAAC;IAC7B,KAAK,CAAC,qBAAqB,CAAC;IAC5B,MAAM,sBAAsB,GAC1B,KAAK,CAAC,sBAAsB,KAAK,MAAM;QACvC,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;IACxG,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,KAAK,YAAY,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC;IAE3F,IAAI,aAAa,IAAI,sBAAsB,EAAE;QAC3C,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,CAAC;QACzB,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QAGtC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,yBAAyB,EAAE;YAClF,KAAK,CAAC,wBAAwB,EAAE,CAAC;SAClC;QAQD,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE,EAAE;YAClE,IAAI,aAAa,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;gBAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnE,IAAI,MAAM,EAAE;oBACV,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;iBAC1B;qBAAM;oBACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;iBAClC;aACF;SACF;QAGD,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;YAChF,IAAI,aAAa,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;gBAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnE,IAAI,MAAM,EAAE;oBACV,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;iBAC1B;qBAAM;oBACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;iBAClC;aACF;SACF;QAED,IAAI,MAAM,GAAG,KAAK,CAAC,sBAAsB,IAAI,CAAC,aAAa,EAAE;SAE5D;aAAM;YAEL,IAEE,CAAC,CACC,KAAK,CAAC,aAAa,CAAC,SAAS;gBAC7B,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAE,KAAK,CAAC,aAAa,CAAC,SAAkC,CAAC,eAAe,CAAC,CACnG;gBACD,wBAAwB,CAAC,KAAK,CAAC,EAC/B;gBAGA,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC5F,cAAc,CACZ,MAAM,EACN,KAAK,CAAC,sBAAsB,EAC5B,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,EAC/C,KAAK,EACL,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAChC,CAAC;gBAEF,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;oBAChF,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnE,IAAI,MAAM,EAAE;wBACV,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;qBAC1B;yBAAM;wBACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;qBAClC;iBACF;aACF;iBAAM,IAEL,KAAK,CAAC,aAAa,CAAC,SAAS;gBAC7B,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAE,KAAK,CAAC,aAAa,CAAC,SAAkC,CAAC,eAAe,CAAC,EAClG;gBAGA,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;oBAErF,IAAI,MAAM,CAAC;oBACX,IAAI,oCAAoC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;wBAEpD,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;qBACrE;yBAAM;wBACL,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;qBAC9D;oBAED,IAAI,MAAM,EAAE;wBACV,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;qBAC1B;yBAAM;wBACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;qBAClC;iBACF;aACF;iBAAM;gBAEL,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;oBAErF,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBAEnE,IAAI,MAAM,EAAE;wBACV,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;qBAC1B;yBAAM;wBACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;qBAClC;iBACF;aACF;SACF;KACF;IAED,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,yBAAyB,EAAE;QAClF,KAAK,CAAC,wBAAwB,EAAE,CAAC;KAClC;IAGD,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;QACnC,KAAK,CAAC,wBAAwB,EAAE,CAAC;QAEjC,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC;QACpF,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;QAC3F,MAAM,QAAQ,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnG,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;YAC5C,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SACpE;QACD,MAAM,MAAM,GAAG,eAAe,GAAG,YAAY,CAAC;QAC9C,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;YAC5C,IAAI,SAAS,CAAC;YACd,IAAI,GAAG,KAAK,MAAM,GAAG,CAAC,EAAE;gBACtB,SAAS;oBACP,eAAe;wBACf,CAAC,MAAM;4BACL,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;gCACpC,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE;oCAC5C,OAAO,GAAG,GAAG,GAAG,CAAC;iCAClB;gCACD,OAAO,GAAG,CAAC;4BACb,CAAC,EAAE,CAAC,CAAC;4BACP,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;aAClD;iBAAM;gBACL,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;aACvF;YACD,IAAI,MAAM,EAAE;gBACV,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;aAC7B;iBAAM;gBACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;SACF;KACF;SAAM,IAAI,KAAK,CAAC,cAAc,EAAE;QAC/B,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAC9C,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACrE,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE;gBACpF,kBAAkB,IAAI,SAAS,CAAC;aACjC;YAED,YAAY,IAAI,SAAS,CAAC;SAC3B;QAGD,IAAI,YAAY,GAAG,YAAY,IAAI,YAAY,GAAG,kBAAkB,GAAG,CAAC,EAAE;YACxE,MAAM,MAAM,GAAG,CAAC,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,GAAG,kBAAkB,CAAC,CAAC;YACzF,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE,GAAG,EAAE,EAAE;gBAM7F,IAAI,SAAS,CAAC;gBACd,IAAI,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;oBAC3D,SAAS;wBACP,YAAY;4BACZ,kBAAkB;4BAClB,CAAC,MAAM;gCACL,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;oCACpC,IAAI,KAAK,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;wCAC7F,OAAO,GAAG,GAAG,GAAG,CAAC;qCAClB;oCACD,OAAO,GAAG,CAAC;gCACb,CAAC,EAAE,CAAC,CAAC;gCACP,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC;iBACnG;qBAAM;oBACL,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;iBACvF;gBACD,IAAI,MAAM,EAAE;oBACV,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;iBAC7B;qBAAM;oBACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;iBAC5C;aACF;SACF;KACF;IAED,IAAI,MAAM,EAAE;QACV,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YAC7C,MAAM,YAAY,GAAG,MAAA,UAAU,CAAC,GAAG,CAAC,mCAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAChE,IAAI,YAAY,KAAK,aAAa,CAAC,GAAG,CAAC,EAAE;gBAEvC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1E;SACF;KACF;AAEH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,QAAgB,EAAE,MAAc,EAAE,KAAmB;;IACjG,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,IACE,KAAK,CAAC,YAAY,EAAE;QACpB,GAAG,IAAI,KAAK,CAAC,sBAAsB;QACnC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EACjD;QACA,IAAK,KAAK,CAAC,aAAa,CAAC,SAAkC,CAAC,eAAe,EAAE;YAE3E,MAAM,aAAa,GAAI,KAAK,CAAC,aAAa,CAAC,SAAkC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC5G,IAAI,aAAa,GAAG,CAAC,EAAE;gBACrB,OAAO,aAAa,CAAC;aACtB;SACF;aAAM;YAEL,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE;gBAC3B,OAAO,aAAa,CAAC;aACtB;SACF;KACF;IACD,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;QAE7C,MAAM,YAAY,GAAG,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,YAAY,EAAE;YAChB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;gBAC/B,SAAS;aACV;SACF;QAGD,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,SAAiC,CAAC;YACrE,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAChE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;oBACjC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAC3C,SAAS;iBACV;aACF;SACF;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;YACvC,CAAC,CAAC,MAAA,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,0CAAE,UAAU;YACjD,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,KAAK,UAAU,EAAE;YAGvG,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACrD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAClG,SAAS;SACV;QAGD,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;KAC7C;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAmB;;IACnD,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAEzC,IACE,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1D,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,EACtF;QACA,OAAO,KAAK,CAAC;KACd;IACD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/C,IACE,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU;YACtC,OAAQ,UAAyB,CAAC,IAAI,KAAK,UAAU;aACrD,MAAA,UAAU,CAAC,MAAM,0CAAE,YAAY,CAAA;YAC/B,OAAO,CAAA,MAAA,UAAU,CAAC,MAAM,0CAAE,IAAI,CAAA,KAAK,UAAU,EAC7C;YACA,OAAO,KAAK,CAAC;SACd;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,IACE,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU;YACvC,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU;YACxC,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;YAC1C,SAAS,CAAC,YAAY,KAAK,IAAI,EAC/B;YACA,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oCAAoC,CAAC,KAAmB,EAAE,GAAW;;IAC5E,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC;IAE1C,IACE,KAAK,CAAC,aAAa,CAAC,YAAY;QAChC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,EACtF;QACA,OAAO,KAAK,CAAC;KACd;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACrE,IACE,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU;QACtC,OAAQ,UAAyB,CAAC,IAAI,KAAK,UAAU;SACrD,MAAA,UAAU,CAAC,MAAM,0CAAE,YAAY,CAAA;QAC/B,OAAO,CAAA,MAAA,UAAU,CAAC,MAAM,0CAAE,IAAI,CAAA,KAAK,UAAU,EAC7C;QACA,OAAO,KAAK,CAAC;KACd;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACtE,IACE,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU;QACvC,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU;QACxC,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAC1C,SAAS,CAAC,YAAY,KAAK,IAAI,EAC/B;QACA,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,MAAc,EACd,QAAgB,EAChB,MAAc,EACd,KAAmB,EACnB,UAAgC;IAEhC,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;SAC1B;aAAM;YACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SAClC;KACF;AACH,CAAC;AASD,SAAS,yBAAyB,CAAC,GAAW,EAAE,GAAW,EAAE,KAAmB;;IAC9E,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,YAAY,IAAI,YAAY,EAAE;QAChC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI,MAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAsB,0CAAE,SAAS,CAAA,EAAE;YACpG,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;SACvD;QACD,MAAM,GAAG,GAAG;YACV,GAAG;YACH,GAAG;YACH,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;YAC7C,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;YACzC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;YAClC,KAAK;SACN,CAAC;QACF,IAAI,YAAY,EAAE;YAEhB,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,eAAe,CAAC,aAAa,YAAY,MAAM,EAAE;gBACnD,eAAe,CAAC,aAAa,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBAC9E,eAAe,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1E,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC/D,MAAM,GAAG,MAAC,eAAe,CAAC,aAAwB,CAAC,UAAU,CAAC,MAAM,EAAE,mCAAI,CAAC,CAAC;gBAC5E,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;aAC/C;iBAAM;gBACL,MAAM,GAAG,CAAC,CAAC;aACZ;SACF;aAAM,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;YAE7C,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,mCAAI,CAAC,CAAC;YAC9C,aAAa,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,aAAa,CAAC;SAChD;aAAM;YACL,MAAM,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,mCAAI,CAAC,CAAC;YAC3C,aAAa,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,aAAa,CAAC;SAC7C;QACD,OAAO;YACL,MAAM,EAAE,MAAM,GAAG,OAAO;YACxB,aAAa;SACd,CAAC;KACH;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AASD,SAAS,iBAAiB,CAAC,GAAW,EAAE,GAAW,EAAE,QAA0B,EAAE,KAAmB;;IAClG,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,eAAe,GAAuB,EAAE,CAAC;IAC/C,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAA,IAAI,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAA,CAAC;IACzG,IAAI,WAAW,EAAE;QACf,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,IAAI,CAAC,EAAE;;YACpB,IACE,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,aAAa;gBAChD,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW;gBAC9C,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,SAAS,EAC5C;gBACA,SAAS,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,UAAU,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC,CAAC,CAAC;gBAClF,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,CAAC,CAAC,CAAC;aACrD;iBAAM,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,EAAE;gBACzD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAC9B,qBAAqB,EACrB,CAAC,MAAA,IAAI,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,UAAU,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC,CAAC,CACtE,CAAC;aACH;iBAAM,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,SAAS,EAAE;gBACvD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAC5B,mBAAmB,EACnB,CAAC,MAAA,IAAI,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,UAAU,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC,CAAC,CACtE,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI,MAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAsB,0CAAE,SAAS,CAAA,EAAE;QACpG,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QACtD,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1B,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;KAC5B;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,mCAAI,QAAQ,CAAC;IAChF,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC;IACT,IAAI,QAAQ,KAAK,UAAU,EAAE;QAC3B,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,SAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;KAClE;SAAM;QACL,IAAI,GAAG,SAAS,CAAC;KAClB;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAEpD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAElD,IAAI,QAAQ,KAAK,UAAU,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,YAAY,EAAE;YAChB,MAAM,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9F,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,uBAAuB,CAAC;YACxG,gBAAgB,CAAC,aAAa,CAAC;gBAC7B,IAAI,EAAE;oBACJ,YAAY;oBACZ,IAAI,EAAE,KAAK;oBACX,QAAQ;oBACR,SAAS;oBACT,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,SAAS,EAAE,YAAY;iBACxB;gBACD,IAAI,EAAE;oBACJ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;oBAC7B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;iBAC/B;gBACD,GAAG,EAAE;oBACH,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;iBACb;gBACD,uBAAuB;aACxB,CAAC,CAAC;YACH,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC1B,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SAC9C;aAAM;YACL,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;SACvD;KACF;SAAM,IAAI,eAAe,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE;QAEzD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,IAAI,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,EAAE;YAC3B,UAAU;YACV,QAAQ;YACR,SAAS;YACT,UAAU;YACV,UAAU;SACX,CAAC,CAAC;QACH,UAAU,CAAC,YAAY,GAAG,QAAQ,CAAC;QACnC,MAAM,UAAU,GAAG;YACjB,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC1D,UAAU;YACV,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACzD,CAAC;QACF,gBAAgB,CAAC,aAAa,CAAC;YAC7B,KAAK,EAAE,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;YACxD,MAAM,EAAE,CAAC;YACT,UAAU;SACX,CAAC,CAAC;QACH,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAalD;SAAM,IAAI,YAAY,EAAE;QACvB,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACvE,YAAY,CAAC,aAAa,CAAC;YACzB,YAAY;YACZ,IAAI,EAAE,KAAK;YACX,QAAQ;YACR,SAAS;YACT,UAAU;YACV,UAAU;YACV,UAAU;YACV,SAAS,EAAE,YAAY;SACxB,CAAC,CAAC;QACH,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC9C;SAAM;QAEL,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;KACvC;IAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,GAAW,EAAE,KAAmB;IAChE,OAAO;QACL,IAAI,EAAE,CAAC;QACP,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;QAC7B,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;QAC/B,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;QAC7B,MAAM,EAAE,CAAC;KACV,CAAC;AACJ,CAAC","file":"compute-row-height.js","sourcesContent":["import { RichText, Group as VGroup } from '@visactor/vrender';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { validToString } from '../../tools/util';\nimport type { ColumnIconOption, ColumnTypeOption } from '../../ts-types';\nimport { IconPosition } from '../../ts-types';\nimport type { BaseTableAPI, HeaderData } from '../../ts-types/base-table';\nimport type { ColumnData, TextColumnDefine } from '../../ts-types/list-table/layout-map/api';\nimport { WrapText } from '../graphic/text';\nimport { getProp } from '../utils/get-prop';\nimport { getQuadProps } from '../utils/padding';\nimport { dealWithRichTextIcon } from '../utils/text-icon-layout';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { computeAxisComponentHeight } from '../../components/axis/get-axis-component-size';\nimport { isArray, isNumber, isObject } from '@visactor/vutils';\nimport { CheckBox } from '@visactor/vrender-components';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\n\nconst utilTextMark = new WrapText({\n ignoreBuf: true\n // autoWrapText: true\n});\nconst utilRichTextMark = new RichText({\n width: 0,\n height: 0,\n textConfig: []\n});\nconst utilCheckBoxMark = new CheckBox({});\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 = 0; row < table.rowCount; row++) {\n // oldRowHeights.push(table.getRowHeight(row));\n oldRowHeights[row] = table.getRowHeight(row);\n }\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 = table.heightMode === 'autoHeight' || table.heightMode === 'adaptive';\n\n if (isAllRowsAuto || isDefaultHeaderHasAuto) {\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 if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = height;\n } else {\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] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n if (rowEnd < table.columnHeaderLevelCount || !isAllRowsAuto) {\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 checkFixedStyleAndNoWrap(table)\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] = 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] = 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] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\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 const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\n const totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\n const startRow = table.columnHeaderLevelCount;\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n let actualHeight = 0;\n for (let row = startRow; row < endRow; row++) {\n actualHeight += update ? newHeights[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((update ? newHeights[row] : table.getRowHeight(row)) * factor);\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);\n if (row < table.frozenRowCount || row >= table.rowCount - table.bottomFrozenRowCount) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (actualHeight < canvasHeight && actualHeight - actualHeaderHeight > 0) {\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; 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 === table.rowCount - table.bottomFrozenRowCount - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= table.frozenRowCount && index <= table.rowCount - table.bottomFrozenRowCount - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2));\n } else {\n rowHeight = Math.round((update ? newHeights[row] : table.getRowHeight(row)) * factor);\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 = 0; row < table.rowCount; row++) {\n const newRowHeight = newHeights[row] ?? table.getRowHeight(row);\n if (newRowHeight !== oldRowHeights[row]) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - oldRowHeights[row]);\n }\n }\n }\n // console.log('computeRowsHeight time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, rowStart, rowEnd);\n}\n\nexport function computeRowHeight(row: number, startCol: number, endCol: number, table: BaseTableAPI): number {\n let maxHeight = 0;\n // 如果是透视图\n if (\n table.isPivotChart() &&\n row >= table.columnHeaderLevelCount &&\n row < table.rowCount - table.bottomFrozenRowCount\n ) {\n if ((table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n //并且指标是以列展示 计算行高需要根据y轴的值域范围\n const optimunHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunHeightForChart(row);\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 = Math.max(customHeight.height, maxHeight);\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 = getAxisConfigInPivotChart(col, row, layout);\n if (axisConfig) {\n const axisWidth = computeAxisComponentHeight(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxHeight = Math.max(axisWidth, maxHeight);\n continue;\n }\n }\n }\n\n const cellType = table.isHeader(col, row)\n ? table._getHeaderLayoutMap(col, row)?.headerType\n : table.getBodyColumnType(col, row);\n if (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 = Math.max(textHeight, maxHeight);\n }\n return maxHeight;\n}\n\nfunction checkFixedStyleAndNoWrap(table: BaseTableAPI): boolean {\n const { layoutMap } = table.internalProps;\n const row = table.columnHeaderLevelCount;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.isPivotChart()) &&\n (table.options.heightMode === 'autoHeight' || 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 (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n cellDefine.define?.customRender ||\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 &&\n (table.options.heightMode === 'autoHeight' || 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?.customRender ||\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 fillRowsHeight(\n height: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n newHeights: number[] | undefined\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}\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 const customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanRow = 1;\n let height = 0;\n let renderDefault = false;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n }\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: getCellRect(col, row, table),\n table\n };\n if (customLayout) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer instanceof VGroup) {\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 } else {\n height = 0;\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 return {\n height: height / spanRow,\n renderDefault\n };\n }\n return undefined;\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 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 (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\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 let text;\n if (cellType === 'checkbox') {\n text = isObject(cellValue) ? (cellValue as any).text : cellValue;\n } else {\n text = cellValue;\n }\n const lines = validToString(text).split('\\n') || [];\n\n const cellWidth = table.getColsWidth(col, endCol);\n\n if (cellType === 'checkbox') {\n const size = getProp('size', actStyle, col, row, table);\n if (autoWrapText) {\n const spaceBetweenTextAndIcon = getProp('spaceBetweenTextAndIcon', actStyle, col, row, table);\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth - size - spaceBetweenTextAndIcon;\n utilCheckBoxMark.setAttributes({\n text: {\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n },\n icon: {\n width: Math.floor(size / 1.4), // icon : box => 10 : 14\n height: Math.floor(size / 1.4)\n },\n box: {\n width: size,\n height: size\n },\n spaceBetweenTextAndIcon\n });\n utilCheckBoxMark.render();\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n maxHeight = Math.max(size, lines.length * lineHeight);\n }\n } else 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 (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 maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth;\n utilTextMark.setAttributes({\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n });\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n // autoWrapText = false\n maxHeight = lines.length * lineHeight;\n }\n\n return (Math.max(maxHeight, iconHeight) + padding[0] + padding[2]) / spanRow;\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"]}