@visactor/vtable 1.3.2-alpha.2 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/cjs/PivotChart.d.ts +0 -1
  2. package/cjs/PivotChart.js +0 -4
  3. package/cjs/PivotChart.js.map +1 -1
  4. package/cjs/components/axis/axis.js +2 -3
  5. package/cjs/components/axis/axis.js.map +1 -1
  6. package/cjs/components/empty-tip/empty-tip.js +2 -2
  7. package/cjs/components/empty-tip/empty-tip.js.map +1 -1
  8. package/cjs/components/legend/discrete-legend/discrete-legend.js +1 -2
  9. package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  10. package/cjs/components/tooltip/TooltipHandler.js +1 -3
  11. package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
  12. package/cjs/components/tooltip/logic/BubbleTooltipElement.js +7 -3
  13. package/cjs/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
  14. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  15. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  16. package/cjs/core/BaseTable.d.ts +2 -4
  17. package/cjs/core/BaseTable.js +197 -62
  18. package/cjs/core/BaseTable.js.map +1 -1
  19. package/cjs/core/FouseInput.d.ts +0 -1
  20. package/cjs/core/FouseInput.js +2 -5
  21. package/cjs/core/FouseInput.js.map +1 -1
  22. package/cjs/dataset/dataset.d.ts +2 -0
  23. package/cjs/dataset/dataset.js +8 -7
  24. package/cjs/dataset/dataset.js.map +1 -1
  25. package/cjs/event/event.js +1 -2
  26. package/cjs/event/event.js.map +1 -1
  27. package/cjs/event/listener/container-dom.js +1 -1
  28. package/cjs/event/listener/container-dom.js.map +1 -1
  29. package/cjs/event/listener/table-group.js +5 -3
  30. package/cjs/event/listener/table-group.js.map +1 -1
  31. package/cjs/event/util.js +2 -2
  32. package/cjs/event/util.js.map +1 -1
  33. package/cjs/index.d.ts +1 -1
  34. package/cjs/index.js +2 -2
  35. package/cjs/index.js.map +1 -1
  36. package/cjs/layout/layout-helper.js.map +1 -1
  37. package/cjs/layout/pivot-header-layout.js +57 -37
  38. package/cjs/layout/pivot-header-layout.js.map +1 -1
  39. package/cjs/scenegraph/debug-tool/debug-tool.js +1 -4
  40. package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
  41. package/cjs/scenegraph/graphic/chart.d.ts +0 -1
  42. package/cjs/scenegraph/graphic/chart.js +20 -34
  43. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  44. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +8 -20
  45. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  46. package/cjs/scenegraph/graphic/contributions/chart-render.d.ts +1 -2
  47. package/cjs/scenegraph/graphic/contributions/chart-render.js +24 -40
  48. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  49. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +1 -2
  50. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  51. package/cjs/scenegraph/layout/update-width.js +3 -0
  52. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  53. package/cjs/scenegraph/refresh-node/update-chart.d.ts +0 -1
  54. package/cjs/scenegraph/refresh-node/update-chart.js +2 -9
  55. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  56. package/cjs/scenegraph/scenegraph.js +4 -10
  57. package/cjs/scenegraph/scenegraph.js.map +1 -1
  58. package/cjs/state/state.js +1 -1
  59. package/cjs/themes/component.js +1 -1
  60. package/cjs/themes/theme.js +6 -0
  61. package/cjs/themes/theme.js.map +1 -1
  62. package/cjs/ts-types/base-table.d.ts +4 -15
  63. package/cjs/ts-types/base-table.js.map +1 -1
  64. package/cjs/ts-types/icon.d.ts +2 -0
  65. package/cjs/ts-types/icon.js.map +1 -1
  66. package/cjs/ts-types/theme.d.ts +2 -0
  67. package/cjs/ts-types/theme.js.map +1 -1
  68. package/cjs/ts-types/tooltip.d.ts +2 -0
  69. package/cjs/ts-types/tooltip.js.map +1 -1
  70. package/cjs/vrender.js.map +1 -1
  71. package/dist/vtable.js +545 -539
  72. package/dist/vtable.min.js +2 -2
  73. package/es/PivotChart.d.ts +0 -1
  74. package/es/PivotChart.js +2 -5
  75. package/es/PivotChart.js.map +1 -1
  76. package/es/components/axis/axis.js +1 -3
  77. package/es/components/axis/axis.js.map +1 -1
  78. package/es/components/empty-tip/empty-tip.js +2 -2
  79. package/es/components/empty-tip/empty-tip.js.map +1 -1
  80. package/es/components/legend/discrete-legend/discrete-legend.js +1 -2
  81. package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  82. package/es/components/tooltip/TooltipHandler.js +1 -3
  83. package/es/components/tooltip/TooltipHandler.js.map +1 -1
  84. package/es/components/tooltip/logic/BubbleTooltipElement.js +7 -3
  85. package/es/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
  86. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  87. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  88. package/es/core/BaseTable.d.ts +2 -4
  89. package/es/core/BaseTable.js +196 -63
  90. package/es/core/BaseTable.js.map +1 -1
  91. package/es/core/FouseInput.d.ts +0 -1
  92. package/es/core/FouseInput.js +2 -5
  93. package/es/core/FouseInput.js.map +1 -1
  94. package/es/dataset/dataset.d.ts +2 -0
  95. package/es/dataset/dataset.js +8 -7
  96. package/es/dataset/dataset.js.map +1 -1
  97. package/es/event/event.js +1 -2
  98. package/es/event/event.js.map +1 -1
  99. package/es/event/listener/container-dom.js +1 -1
  100. package/es/event/listener/container-dom.js.map +1 -1
  101. package/es/event/listener/table-group.js +5 -3
  102. package/es/event/listener/table-group.js.map +1 -1
  103. package/es/event/util.js +2 -2
  104. package/es/event/util.js.map +1 -1
  105. package/es/index.d.ts +1 -1
  106. package/es/index.js +1 -1
  107. package/es/index.js.map +1 -1
  108. package/es/layout/layout-helper.js.map +1 -1
  109. package/es/layout/pivot-header-layout.js +56 -36
  110. package/es/layout/pivot-header-layout.js.map +1 -1
  111. package/es/scenegraph/debug-tool/debug-tool.js +1 -4
  112. package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
  113. package/es/scenegraph/graphic/chart.d.ts +0 -1
  114. package/es/scenegraph/graphic/chart.js +21 -33
  115. package/es/scenegraph/graphic/chart.js.map +1 -1
  116. package/es/scenegraph/graphic/contributions/chart-render-helper.js +8 -20
  117. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  118. package/es/scenegraph/graphic/contributions/chart-render.d.ts +1 -2
  119. package/es/scenegraph/graphic/contributions/chart-render.js +25 -41
  120. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  121. package/es/scenegraph/group-creater/cell-type/chart-cell.js +1 -2
  122. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  123. package/es/scenegraph/layout/update-width.js +3 -0
  124. package/es/scenegraph/layout/update-width.js.map +1 -1
  125. package/es/scenegraph/refresh-node/update-chart.d.ts +0 -1
  126. package/es/scenegraph/refresh-node/update-chart.js +0 -6
  127. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  128. package/es/scenegraph/scenegraph.js +4 -10
  129. package/es/scenegraph/scenegraph.js.map +1 -1
  130. package/es/state/state.js +1 -1
  131. package/es/themes/component.js +1 -1
  132. package/es/themes/theme.js +6 -0
  133. package/es/themes/theme.js.map +1 -1
  134. package/es/ts-types/base-table.d.ts +4 -15
  135. package/es/ts-types/base-table.js.map +1 -1
  136. package/es/ts-types/icon.d.ts +2 -0
  137. package/es/ts-types/icon.js.map +1 -1
  138. package/es/ts-types/theme.d.ts +2 -0
  139. package/es/ts-types/theme.js.map +1 -1
  140. package/es/ts-types/tooltip.d.ts +2 -0
  141. package/es/ts-types/tooltip.js.map +1 -1
  142. package/es/vrender.js.map +1 -1
  143. package/package.json +3 -3
  144. package/cjs/core/utils/get-cell-position.d.ts +0 -42
  145. package/cjs/core/utils/get-cell-position.js +0 -206
  146. package/cjs/core/utils/get-cell-position.js.map +0 -1
  147. package/es/core/utils/get-cell-position.d.ts +0 -42
  148. package/es/core/utils/get-cell-position.js +0 -194
  149. package/es/core/utils/get-cell-position.js.map +0 -1
package/dist/vtable.js CHANGED
@@ -25061,6 +25061,12 @@
25061
25061
  },
25062
25062
  get color() {
25063
25063
  return tooltip.color ?? '#FFF';
25064
+ },
25065
+ get maxWidth() {
25066
+ return tooltip.maxWidth;
25067
+ },
25068
+ get maxHeight() {
25069
+ return tooltip.maxHeight;
25064
25070
  }
25065
25071
  };
25066
25072
  }
@@ -32684,9 +32690,7 @@
32684
32690
  const axisStylrAttrs = getAxisAttributes(this.option);
32685
32691
  const attrs = this.getUpdateAttribute();
32686
32692
  attrs.verticalFactor = this.orient === 'top' || this.orient === 'right' ? -1 : 1;
32687
- this.component = new LineAxis(merge({
32688
- disableTriggerEvent: this.table.options.disableInteraction
32689
- }, axisStylrAttrs, attrs));
32693
+ this.component = new LineAxis(merge({}, axisStylrAttrs, attrs));
32690
32694
  this.component.setAttributes(this.setLayoutStartPosition({ x: 0, y: 0 }));
32691
32695
  this.component.originAxis = this;
32692
32696
  }
@@ -35276,8 +35280,8 @@
35276
35280
  function getCellEventArgsSet(e) {
35277
35281
  const tableEvent = {
35278
35282
  abstractPos: {
35279
- x: e.viewport.x,
35280
- y: e.viewport.y
35283
+ x: e.x,
35284
+ y: e.y
35281
35285
  }
35282
35286
  };
35283
35287
  const targetCell = getTargetCell(e.target);
@@ -37415,7 +37419,7 @@
37415
37419
  this.numberType = CHART_NUMBER_TYPE;
37416
37420
  this.isShareChartSpec = isShareChartSpec;
37417
37421
  if (!params.chartInstance) {
37418
- const chartInstance = (this.chartInstance = new params.ClassType(params.spec, merge({}, this.attribute.tableChartOption, {
37422
+ const chartInstance = new params.ClassType(params.spec, {
37419
37423
  renderCanvas: params.canvas,
37420
37424
  mode: this.attribute.mode === 'node' ? 'node' : 'desktop-browser',
37421
37425
  modeParams: this.attribute.modeParams,
@@ -37425,9 +37429,8 @@
37425
37429
  interactive: false,
37426
37430
  animation: false,
37427
37431
  autoFit: false
37428
- })));
37432
+ });
37429
37433
  chartInstance.renderSync();
37430
- chartInstance.getStage().enableDirtyBounds();
37431
37434
  params.chartInstance = this.chartInstance = chartInstance;
37432
37435
  }
37433
37436
  else {
@@ -37445,53 +37448,34 @@
37445
37448
  y1: y1 - table.scrollTop,
37446
37449
  y2: y2 - table.scrollTop
37447
37450
  });
37448
- this.activeChartInstance = new this.attribute.ClassType(this.attribute.spec, merge({}, this.attribute.tableChartOption, {
37451
+ this.activeChartInstance = new this.attribute.ClassType(this.attribute.spec, {
37449
37452
  renderCanvas: this.attribute.canvas,
37450
37453
  mode: 'desktop-browser',
37451
37454
  canvasControled: false,
37452
37455
  viewBox: {
37453
- x1: 0,
37454
- x2: x2 - x1,
37455
- y1: 0,
37456
- y2: y2 - y1
37456
+ x1: x1 - table.scrollLeft,
37457
+ x2: x2 - table.scrollLeft,
37458
+ y1: y1 - table.scrollTop,
37459
+ y2: y2 - table.scrollTop
37457
37460
  },
37458
37461
  dpr: table.internalProps.pixelRatio,
37459
37462
  animation: false,
37460
37463
  interactive: true,
37461
37464
  autoFit: false,
37462
- beforeRender: (chartStage) => {
37463
- const stage = this.stage;
37464
- const ctx = chartStage.window.getContext();
37465
- const stageMatrix = stage.window.getViewBoxTransform();
37466
- const viewBox = stage.window.getViewBox();
37465
+ beforeRender: (stage) => {
37466
+ const ctx = stage.window.getContext();
37467
37467
  ctx.inuse = true;
37468
37468
  ctx.clearMatrix();
37469
- ctx.setTransform(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f, true);
37470
- ctx.translate(viewBox.x1, viewBox.y1);
37471
37469
  ctx.setTransformForCurrent(true);
37472
37470
  ctx.beginPath();
37473
37471
  ctx.rect(clipBound.x1, clipBound.y1, clipBound.x2 - clipBound.x1, clipBound.y2 - clipBound.y1);
37474
37472
  ctx.clip();
37475
- ctx.clearMatrix();
37476
- if (!chartStage.needRender) {
37477
- chartStage.pauseRender();
37478
- table.scenegraph.stage.dirtyBounds.union(this.globalAABBBounds);
37479
- table.scenegraph.updateNextFrame();
37480
- }
37481
37473
  },
37482
37474
  afterRender(stage) {
37483
37475
  const ctx = stage.window.getContext();
37484
37476
  ctx.inuse = false;
37485
- stage.needRender = false;
37486
- chartStage.resumeRender();
37487
37477
  }
37488
- }));
37489
- const chartStage = this.activeChartInstance.getStage();
37490
- const matrix = this.globalTransMatrix.clone();
37491
- const stageMatrix = this.stage.window.getViewBoxTransform();
37492
- matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);
37493
- chartStage.window.setViewBoxTransform &&
37494
- chartStage.window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
37478
+ });
37495
37479
  this.activeChartInstance.renderSync();
37496
37480
  table.internalProps.layoutMap?.updateDataStateToActiveChartInstance?.(this.activeChartInstance);
37497
37481
  this.activeChartInstance.on('click', (params) => {
@@ -37527,12 +37511,11 @@
37527
37511
  const cellGroup = this.parent;
37528
37512
  const padding = this.attribute.cellPadding;
37529
37513
  const table = this.stage.table;
37530
- const { x1, y1, x2, y2 } = cellGroup.globalAABBBounds;
37531
37514
  return {
37532
- x1: Math.ceil(x1 + padding[3] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),
37533
- x2: Math.ceil(x1 + cellGroup.attribute.width - padding[1] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),
37534
- y1: Math.ceil(y1 + padding[0] + table.scrollTop + (table.options.viewBox?.y1 ?? 0)),
37535
- y2: Math.ceil(y1 + cellGroup.attribute.height - padding[2] + table.scrollTop + (table.options.viewBox?.y1 ?? 0))
37515
+ x1: Math.ceil(cellGroup.globalAABBBounds.x1 + padding[3] + table.scrollLeft),
37516
+ x2: Math.ceil(cellGroup.globalAABBBounds.x1 + cellGroup.attribute.width - padding[1] + table.scrollLeft),
37517
+ y1: Math.ceil(cellGroup.globalAABBBounds.y1 + padding[0] + table.scrollTop),
37518
+ y2: Math.ceil(cellGroup.globalAABBBounds.y1 + cellGroup.attribute.height - padding[2] + table.scrollTop)
37536
37519
  };
37537
37520
  }
37538
37521
  }
@@ -37563,10 +37546,6 @@
37563
37546
  bodyBound.x1 = tableBound.x1 + table.getFrozenColsWidth();
37564
37547
  bodyBound.x2 = tableBound.x2 - table.getRightFrozenColsWidth();
37565
37548
  }
37566
- bodyBound.x1 = bodyBound.x1 + (table.options.viewBox?.x1 ?? 0);
37567
- bodyBound.x2 = bodyBound.x2 + (table.options.viewBox?.x1 ?? 0);
37568
- bodyBound.y1 = bodyBound.y1 + (table.options.viewBox?.y1 ?? 0);
37569
- bodyBound.y2 = bodyBound.y2 + (table.options.viewBox?.y1 ?? 0);
37570
37549
  return bodyBound;
37571
37550
  }
37572
37551
 
@@ -37648,8 +37627,7 @@
37648
37627
  data: table.getCellValue(col, row),
37649
37628
  cellPadding: padding,
37650
37629
  dpr: table.internalProps.pixelRatio,
37651
- axes: table.isPivotChart() ? table.internalProps.layoutMap.getChartAxes(col, row) : [],
37652
- tableChartOption: table.options.chartOption
37630
+ axes: table.isPivotChart() ? table.internalProps.layoutMap.getChartAxes(col, row) : []
37653
37631
  });
37654
37632
  cellGroup.appendChild(chartGroup);
37655
37633
  table.internalProps.layoutMap.setChartInstance(col, row, chartGroup.chartInstance);
@@ -41751,6 +41729,10 @@
41751
41729
  const cellChange = updateMergeCellContentWidth(cellGroup, distWidth, detaX, autoRowHeight, renderDefault, scene.table);
41752
41730
  isHeightChange = isHeightChange || cellChange;
41753
41731
  }
41732
+ if (!autoWrapText) {
41733
+ const style = scene.table._getCellStyle(col, row);
41734
+ autoWrapText = style.autoWrapText;
41735
+ }
41754
41736
  return autoRowHeight && autoWrapText ? isHeightChange : false;
41755
41737
  }
41756
41738
  function updateMergeCellContentWidth(cellGroup, distWidth, detaX, autoRowHeight, renderDefault, table) {
@@ -43290,65 +43272,48 @@
43290
43272
  if (viewBox.y2 <= viewBox.y1) {
43291
43273
  viewBox.y2 = viewBox.y1 + 1;
43292
43274
  }
43293
- chartInstance.updateViewBox({
43294
- x1: 0,
43295
- x2: viewBox.x2 - viewBox.x1,
43296
- y1: 0,
43297
- y2: viewBox.y2 - viewBox.y1
43298
- }, false, false);
43299
- const chartStage = chartInstance.getStage();
43300
- const matrix = chart.globalTransMatrix.clone();
43301
- const stageMatrix = chart.stage.window.getViewBoxTransform();
43302
- matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);
43303
- chartStage.window.setViewBoxTransform &&
43304
- chartStage.window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
43305
- const { table } = chart.getRootNode();
43306
- let updateSpec = false;
43307
- if (table.options.specFormat) {
43308
- const formatResult = table.options.specFormat(chart.attribute.spec);
43309
- if (formatResult.needFormatSpec && formatResult.spec) {
43310
- const spec = formatResult.spec;
43311
- chartInstance.updateSpecSync(spec);
43312
- updateSpec = true;
43313
- }
43314
- }
43315
- if (!updateSpec) {
43316
- axes?.forEach((axis, index) => {
43317
- if (axis.type === 'band') {
43318
- chartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);
43319
- }
43320
- else {
43321
- chartInstance.updateModelSpecSync({ type: 'axes', index }, { min: axis.range?.min ?? 0, max: axis.range?.max ?? 0 }, true);
43322
- }
43323
- });
43324
- table.internalProps.layoutMap?.updateDataStateToActiveChartInstance?.(chartInstance);
43325
- if (typeof dataId === 'string') {
43326
- chartInstance.updateDataSync(dataId, data ?? []);
43275
+ axes?.forEach((axis, index) => {
43276
+ if (axis.type === 'band') {
43277
+ chartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);
43327
43278
  }
43328
43279
  else {
43329
- const dataBatch = [];
43330
- for (const dataIdStr in dataId) {
43331
- const dataIdAndField = dataId[dataIdStr];
43332
- const series = spec.series.find((item) => item?.data?.id === dataIdStr);
43333
- dataBatch.push({
43334
- id: dataIdStr,
43335
- values: dataIdAndField
43336
- ? data?.filter((item) => {
43337
- return item.hasOwnProperty(dataIdAndField);
43338
- }) ?? []
43339
- : data ?? [],
43340
- fields: series?.data?.fields
43341
- });
43342
- if (!chartInstance.updateFullDataSync) {
43343
- chartInstance.updateDataSync(dataIdStr, dataIdAndField
43344
- ? data?.filter((item) => {
43345
- return item.hasOwnProperty(dataIdAndField);
43346
- }) ?? []
43347
- : data ?? []);
43348
- }
43280
+ chartInstance.updateModelSpecSync({ type: 'axes', index }, { min: axis.range?.min ?? 0, max: axis.range?.max ?? 0 }, true);
43281
+ }
43282
+ });
43283
+ chartInstance.updateViewBox({
43284
+ x1: viewBox.x1 - chart.getRootNode().table.scrollLeft,
43285
+ x2: viewBox.x2 - chart.getRootNode().table.scrollLeft,
43286
+ y1: viewBox.y1 - chart.getRootNode().table.scrollTop,
43287
+ y2: viewBox.y2 - chart.getRootNode().table.scrollTop
43288
+ }, false, false);
43289
+ const table = chart.getRootNode().table;
43290
+ table.internalProps.layoutMap?.updateDataStateToActiveChartInstance?.(chartInstance);
43291
+ if (typeof dataId === 'string') {
43292
+ chartInstance.updateDataSync(dataId, data ?? []);
43293
+ }
43294
+ else {
43295
+ const dataBatch = [];
43296
+ for (const dataIdStr in dataId) {
43297
+ const dataIdAndField = dataId[dataIdStr];
43298
+ const series = spec.series.find((item) => item?.data?.id === dataIdStr);
43299
+ dataBatch.push({
43300
+ id: dataIdStr,
43301
+ values: dataIdAndField
43302
+ ? data?.filter((item) => {
43303
+ return item.hasOwnProperty(dataIdAndField);
43304
+ }) ?? []
43305
+ : data ?? [],
43306
+ fields: series?.data?.fields
43307
+ });
43308
+ if (!chartInstance.updateFullDataSync) {
43309
+ chartInstance.updateDataSync(dataIdStr, dataIdAndField
43310
+ ? data?.filter((item) => {
43311
+ return item.hasOwnProperty(dataIdAndField);
43312
+ }) ?? []
43313
+ : data ?? []);
43349
43314
  }
43350
- chartInstance.updateFullDataSync?.(dataBatch);
43351
43315
  }
43316
+ chartInstance.updateFullDataSync?.(dataBatch);
43352
43317
  }
43353
43318
  const sg = chartInstance.getStage();
43354
43319
  cacheStageCanvas(sg, chart);
@@ -43410,7 +43375,7 @@
43410
43375
  }
43411
43376
 
43412
43377
  const ChartRender = Symbol.for('ChartRender');
43413
- let DefaultCanvasChartRender = class DefaultCanvasChartRender extends BaseRender {
43378
+ let DefaultCanvasChartRender = class DefaultCanvasChartRender {
43414
43379
  type;
43415
43380
  numberType = CHART_NUMBER_TYPE;
43416
43381
  drawShape(chart, context, x, y, drawContext, params, fillCb, strokeCb) {
@@ -43418,7 +43383,6 @@
43418
43383
  const { dataId, data, spec } = chart.attribute;
43419
43384
  chart.getViewBox();
43420
43385
  const { width = groupAttribute.width, height = groupAttribute.height } = chart.attribute;
43421
- const { table } = chart.getRootNode();
43422
43386
  const { active, cacheCanvas, activeChartInstance } = chart;
43423
43387
  if (!active && cacheCanvas) {
43424
43388
  if (isArray$1(cacheCanvas)) {
@@ -43432,27 +43396,6 @@
43432
43396
  }
43433
43397
  }
43434
43398
  else if (activeChartInstance) {
43435
- if (table.options.specFormat) {
43436
- const formatResult = table.options.specFormat(chart.attribute.spec);
43437
- if (formatResult.needFormatSpec && formatResult.spec) {
43438
- const spec = formatResult.spec;
43439
- activeChartInstance.updateSpecSync(spec);
43440
- return;
43441
- }
43442
- }
43443
- const viewBox = chart.getViewBox();
43444
- activeChartInstance.updateViewBox({
43445
- x1: 0,
43446
- x2: viewBox.x2 - viewBox.x1,
43447
- y1: 0,
43448
- y2: viewBox.y2 - viewBox.y1
43449
- }, false, false);
43450
- const chartStage = activeChartInstance.getStage();
43451
- chartStage.needRender = true;
43452
- const matrix = chart.globalTransMatrix.clone();
43453
- const stageMatrix = chart.stage.window.getViewBoxTransform().clone();
43454
- stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
43455
- chartStage.window.setViewBoxTransform(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);
43456
43399
  if (typeof dataId === 'string') {
43457
43400
  activeChartInstance.updateDataSync(dataId, data ?? []);
43458
43401
  }
@@ -43482,13 +43425,13 @@
43482
43425
  }
43483
43426
  }
43484
43427
  else {
43485
- if (table.internalProps.renderChartAsync) {
43428
+ if (chart.getRootNode().table.internalProps.renderChartAsync) {
43486
43429
  if (chartRenderKeys.indexOf(`${chart.parent.col}+${chart.parent.row}`) === -1) {
43487
43430
  chartRenderKeys.push(`${chart.parent.col}+${chart.parent.row}`);
43488
43431
  chartRenderQueueList.push(chart);
43489
43432
  }
43490
43433
  if (!IsHandlingChartQueue()) {
43491
- startRenderChartQueue(table);
43434
+ startRenderChartQueue(chart.getRootNode().table);
43492
43435
  }
43493
43436
  }
43494
43437
  else {
@@ -43497,7 +43440,31 @@
43497
43440
  }
43498
43441
  }
43499
43442
  draw(chart, renderService, drawContext, params) {
43500
- this._draw(chart, {}, false, drawContext, params);
43443
+ const { context } = drawContext;
43444
+ if (!context) {
43445
+ return;
43446
+ }
43447
+ const { clip } = chart.attribute;
43448
+ if (clip) {
43449
+ context.save();
43450
+ }
43451
+ else {
43452
+ context.highPerformanceSave();
43453
+ }
43454
+ context.transformFromMatrix(chart.transMatrix, true);
43455
+ context.beginPath();
43456
+ if (params.skipDraw) {
43457
+ this.drawShape(chart, context, 0, 0, drawContext, params, () => false, () => false);
43458
+ }
43459
+ else {
43460
+ this.drawShape(chart, context, 0, 0, drawContext);
43461
+ }
43462
+ if (clip) {
43463
+ context.restore();
43464
+ }
43465
+ else {
43466
+ context.highPerformanceRestore();
43467
+ }
43501
43468
  }
43502
43469
  };
43503
43470
  DefaultCanvasChartRender = __decorate([
@@ -48332,15 +48299,6 @@
48332
48299
  });
48333
48300
  }
48334
48301
  }
48335
- function clearCellChartCacheImage(col, row, scenegraph) {
48336
- const cellGroup = scenegraph.getCell(col, row);
48337
- cellGroup.children.forEach((node) => {
48338
- if (node.type === 'chart') {
48339
- node.cacheCanvas = null;
48340
- node.addUpdateBoundTag();
48341
- }
48342
- });
48343
- }
48344
48302
  function updateChartData(scenegraph) {
48345
48303
  const table = scenegraph.table;
48346
48304
  for (let c = scenegraph.proxy.colStart; c <= scenegraph.proxy.colEnd; c++) {
@@ -49202,12 +49160,7 @@
49202
49160
  setPoptipTheme(this.table.theme.textPopTipStyle);
49203
49161
  let width;
49204
49162
  let height;
49205
- if (table.options.canvas && table.options.viewBox) {
49206
- vglobal.setEnv('browser');
49207
- width = table.options.viewBox.x2 - table.options.viewBox.x1;
49208
- height = table.options.viewBox.y2 - table.options.viewBox.y1;
49209
- }
49210
- else if (Env.mode === 'node') {
49163
+ if (Env.mode === 'node') {
49211
49164
  vglobal.setEnv('node', table.options.modeParams);
49212
49165
  width = table.canvasWidth;
49213
49166
  height = table.canvasHeight;
@@ -49225,15 +49178,9 @@
49225
49178
  background: table.theme.underlayBackgroundColor,
49226
49179
  dpr: table.internalProps.pixelRatio,
49227
49180
  enableLayout: true,
49228
- beforeRender: (stage) => {
49229
- this.table.options.beforeRender && this.table.options.beforeRender(stage);
49230
- },
49231
- afterRender: (stage) => {
49232
- this.table.options.afterRender && this.table.options.afterRender(stage);
49181
+ afterRender: () => {
49233
49182
  this.table.fireListeners('after_render', null);
49234
49183
  },
49235
- canvasControled: !table.options.canvas,
49236
- viewBox: table.options.viewBox,
49237
49184
  ...table.options.renderOption
49238
49185
  });
49239
49186
  this.stage.defaultLayer.setTheme({
@@ -53367,6 +53314,9 @@
53367
53314
  table.editorManager?.completeEdit(e.nativeEvent);
53368
53315
  stateManager.updateInteractionState(InteractionState.default);
53369
53316
  eventManager.dealTableHover();
53317
+ if (table.options.select?.outsideClickDeselect) {
53318
+ eventManager.dealTableSelect();
53319
+ }
53370
53320
  });
53371
53321
  table.scenegraph.tableGroup.addEventListener('pointerdown', (e) => {
53372
53322
  if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE)) {
@@ -53653,8 +53603,10 @@
53653
53603
  !target.isDescendantsOf(table.scenegraph.tableGroup)) {
53654
53604
  stateManager.updateInteractionState(InteractionState.default);
53655
53605
  eventManager.dealTableHover();
53656
- eventManager.dealTableSelect();
53657
53606
  stateManager.endSelectCells();
53607
+ if (table.options.select?.blankAreaClickDeselect ?? true) {
53608
+ eventManager.dealTableSelect();
53609
+ }
53658
53610
  stateManager.updateCursor();
53659
53611
  table.scenegraph.updateChartState(null);
53660
53612
  }
@@ -54418,19 +54370,17 @@
54418
54370
  e.preventDefault();
54419
54371
  }
54420
54372
  });
54421
- if (!table.options.canvas) {
54422
- handler.on(table.getContainer(), 'resize', e => {
54423
- if (e.width === 0 && e.height === 0) {
54424
- return;
54425
- }
54426
- if (!isValid$1(table.options.pixelRatio)) {
54427
- table.setPixelRatio(getPixelRatio());
54428
- }
54429
- if (!e.windowSizeNotChange) {
54430
- table.resize();
54431
- }
54432
- });
54433
- }
54373
+ handler.on(table.getContainer(), 'resize', e => {
54374
+ if (e.width === 0 && e.height === 0) {
54375
+ return;
54376
+ }
54377
+ if (!isValid$1(table.options.pixelRatio)) {
54378
+ table.setPixelRatio(getPixelRatio());
54379
+ }
54380
+ if (!e.windowSizeNotChange) {
54381
+ table.resize();
54382
+ }
54383
+ });
54434
54384
  function pasteHtmlToTable(item) {
54435
54385
  const ranges = table.stateManager.select.ranges;
54436
54386
  const selectRangeLength = ranges.length;
@@ -54978,7 +54928,7 @@
54978
54928
  this.table = table;
54979
54929
  this.handleTextStickBindId = [];
54980
54930
  this.inertiaScroll = new InertiaScroll(table.stateManager);
54981
- if (Env.mode === 'node' || table.options.disableInteraction) {
54931
+ if (Env.mode === 'node') {
54982
54932
  return;
54983
54933
  }
54984
54934
  this.bindOuterEvent();
@@ -56658,12 +56608,30 @@
56658
56608
  white-space: pre-wrap;
56659
56609
  margin: 0;
56660
56610
  box-sizing: border-box;
56661
- overflow: hidden;
56611
+ overflow: auto;
56662
56612
  word-wrap: break-word;
56663
56613
  position: relative;
56664
56614
  background-color: #FFF;
56665
56615
  z-index: 2;
56666
- border-radius: 4px
56616
+ border-radius: 4px;
56617
+ }
56618
+ /* WebKit Microsoft Edge(新版): */
56619
+ .vtable__bubble-tooltip-element__content::-webkit-scrollbar {
56620
+ width: 0;
56621
+ height: 0;
56622
+ background-color: transparent;
56623
+ }
56624
+ /* Opera Firefox */
56625
+ .vtable__bubble-tooltip-element__content > scrollbar-track {
56626
+ width: 0;
56627
+ height: 0;
56628
+ background-color: transparent;
56629
+ }
56630
+ /* Internet Explorer 11 和 Microsoft Edge(旧版) */
56631
+ .vtable__bubble-tooltip-element__content > scrollbar {
56632
+ width: 0;
56633
+ height: 0;
56634
+ background-color: transparent;
56667
56635
  }
56668
56636
  .vtable__bubble-tooltip-element__triangle {
56669
56637
  /* font-size: .75rem; */
@@ -56697,7 +56665,7 @@
56697
56665
  constructor() {
56698
56666
  this._handler = new EventHandler();
56699
56667
  const rootElement = (this._rootElement = createElement('div', [TOOLTIP_CLASS, HIDDEN_CLASS]));
56700
- const messageElement = createElement('span', [CONTENT_CLASS]);
56668
+ const messageElement = createElement('div', [CONTENT_CLASS]);
56701
56669
  const triangle = createElement('span', [TRIANGLE_CLASS]);
56702
56670
  rootElement.appendChild(triangle);
56703
56671
  rootElement.appendChild(messageElement);
@@ -56710,6 +56678,9 @@
56710
56678
  this._disappearDelay = undefined;
56711
56679
  this.unbindFromCell();
56712
56680
  });
56681
+ messageElement.addEventListener('wheel', e => {
56682
+ e.stopPropagation();
56683
+ });
56713
56684
  }
56714
56685
  bindToCell(table, col, row, tooltipInstanceInfo, confine) {
56715
56686
  this._disappearDelay = tooltipInstanceInfo?.disappearDelay;
@@ -56734,6 +56705,10 @@
56734
56705
  tooltipInstanceInfo?.style?.color && (messageElement.style.color = tooltipInstanceInfo?.style?.color);
56735
56706
  tooltipInstanceInfo?.style?.padding &&
56736
56707
  (messageElement.style.padding = `${tooltipInstanceInfo?.style?.padding.join('px ')}px`);
56708
+ tooltipInstanceInfo?.style?.maxHeight &&
56709
+ (messageElement.style.maxHeight = `${tooltipInstanceInfo?.style?.maxHeight}px`);
56710
+ tooltipInstanceInfo?.style?.maxWidth &&
56711
+ (messageElement.style.maxWidth = `${tooltipInstanceInfo?.style?.maxWidth}px`);
56737
56712
  messageElement && (messageElement.textContent = tooltipInstanceInfo?.content);
56738
56713
  const binded = this._bindToCell(table, col, row, tooltipInstanceInfo?.position, tooltipInstanceInfo?.referencePosition, confine, tooltipInstanceInfo?.style?.arrowMark);
56739
56714
  if (binded) {
@@ -57112,7 +57087,7 @@
57112
57087
  rect
57113
57088
  },
57114
57089
  disappearDelay: table.internalProps.tooltip.overflowTextTooltipDisappearDelay ?? 0,
57115
- style: { arrowMark: false }
57090
+ style: table.theme.tooltipStyle
57116
57091
  };
57117
57092
  }
57118
57093
  else if (table.internalProps.tooltip?.isShowOverflowTextTooltip) {
@@ -57540,7 +57515,6 @@
57540
57515
  }
57541
57516
 
57542
57517
  class FocusInput extends EventTarget {
57543
- _container;
57544
57518
  _table;
57545
57519
  _input;
57546
57520
  constructor(table, parentElement) {
@@ -57560,7 +57534,6 @@
57560
57534
  input.dataset.vtable = 'vtable';
57561
57535
  input.readOnly = true;
57562
57536
  parentElement.appendChild(div);
57563
- this._container = div;
57564
57537
  }
57565
57538
  focus() {
57566
57539
  this._input.focus({ preventScroll: true });
@@ -57580,7 +57553,6 @@
57580
57553
  return this._input;
57581
57554
  }
57582
57555
  release() {
57583
- this._container.parentElement?.removeChild(this._container);
57584
57556
  }
57585
57557
  }
57586
57558
 
@@ -57700,8 +57672,7 @@
57700
57672
  height: this.table.tableNoFrameHeight
57701
57673
  });
57702
57674
  const legend = new DiscreteLegend(merge({}, attrs, {
57703
- defaultSelected: this.selectedData,
57704
- disableTriggerEvent: this.table.options.disableInteraction
57675
+ defaultSelected: this.selectedData
57705
57676
  }));
57706
57677
  legend.name = 'legend';
57707
57678
  this.legendComponent = legend;
@@ -59263,249 +59234,6 @@
59263
59234
  return customTree;
59264
59235
  }
59265
59236
 
59266
- function getRowAt(absoluteY, _this) {
59267
- const frozen = _getTargetFrozenRowAt(_this, absoluteY);
59268
- if (frozen) {
59269
- return frozen;
59270
- }
59271
- let row = getTargetRowAt(absoluteY, _this);
59272
- if (!row) {
59273
- row = {
59274
- top: -1,
59275
- row: -1,
59276
- bottom: -1,
59277
- height: -1
59278
- };
59279
- }
59280
- return row;
59281
- }
59282
- function getColAt(absoluteX, _this) {
59283
- const frozen = _getTargetFrozenColAt(_this, absoluteX);
59284
- if (frozen) {
59285
- return frozen;
59286
- }
59287
- let col = getTargetColAt(absoluteX, _this);
59288
- if (!col) {
59289
- col = {
59290
- left: -1,
59291
- col: -1,
59292
- right: -1,
59293
- width: 1
59294
- };
59295
- }
59296
- return col;
59297
- }
59298
- function getCellAt(absoluteX, absoluteY, _this) {
59299
- const rowInfo = getRowAt(absoluteY, _this);
59300
- const { row, top, bottom, height } = rowInfo;
59301
- const colInfo = getColAt(absoluteX, _this);
59302
- const { col, left, right, width } = colInfo;
59303
- const rect = {
59304
- left,
59305
- right,
59306
- top,
59307
- bottom,
59308
- width,
59309
- height
59310
- };
59311
- return {
59312
- row,
59313
- col,
59314
- rect
59315
- };
59316
- }
59317
- function getTargetColAt(absoluteX, _this) {
59318
- if (absoluteX === 0) {
59319
- return { left: 0, col: 0, right: 0, width: 0 };
59320
- }
59321
- const findBefore = (startCol, startRight) => {
59322
- let right = startRight;
59323
- for (let col = startCol; col >= 0; col--) {
59324
- const width = _this.getColWidth(col);
59325
- const left = right - width;
59326
- if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {
59327
- return {
59328
- left,
59329
- col,
59330
- right,
59331
- width
59332
- };
59333
- }
59334
- right = left;
59335
- }
59336
- return null;
59337
- };
59338
- const findAfter = (startCol, startRight) => {
59339
- let left = startRight - _this.getColWidth(startCol);
59340
- const { colCount } = _this.internalProps;
59341
- for (let col = startCol; col < colCount; col++) {
59342
- const width = _this.getColWidth(col);
59343
- const right = left + width;
59344
- if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {
59345
- return {
59346
- left,
59347
- col,
59348
- right,
59349
- width
59350
- };
59351
- }
59352
- left = right;
59353
- }
59354
- return null;
59355
- };
59356
- const candCol = computeTargetColByX(absoluteX, _this);
59357
- const right = _this.getColsWidth(0, candCol);
59358
- if (absoluteX >= right) {
59359
- return findAfter(candCol, right);
59360
- }
59361
- return findBefore(candCol, right);
59362
- }
59363
- function getTargetRowAt(absoluteY, _this) {
59364
- if (absoluteY === 0) {
59365
- return { top: 0, row: 0, bottom: 0, height: 0 };
59366
- }
59367
- const findBefore = (startRow, startBottom) => {
59368
- let bottom = startBottom;
59369
- for (let row = startRow; row >= 0; row--) {
59370
- const height = _this.getRowHeight(row);
59371
- const top = bottom - height;
59372
- if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {
59373
- return {
59374
- top,
59375
- row,
59376
- bottom,
59377
- height
59378
- };
59379
- }
59380
- bottom = top;
59381
- }
59382
- return null;
59383
- };
59384
- const findAfter = (startRow, startBottom) => {
59385
- let top = startBottom - _this.getRowHeight(startRow);
59386
- const { rowCount } = _this.internalProps;
59387
- for (let row = startRow; row < rowCount; row++) {
59388
- const height = _this.getRowHeight(row);
59389
- const bottom = top + height;
59390
- if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {
59391
- return {
59392
- top,
59393
- row,
59394
- bottom,
59395
- height
59396
- };
59397
- }
59398
- top = bottom;
59399
- }
59400
- return null;
59401
- };
59402
- const candRow = computeTargetRowByY(absoluteY, _this);
59403
- const bottom = _this.getRowsHeight(0, candRow);
59404
- if (absoluteY >= bottom) {
59405
- return findAfter(candRow, bottom);
59406
- }
59407
- return findBefore(candRow, bottom);
59408
- }
59409
- function getTargetColAtConsiderRightFrozen(absoluteX, isConsider, _this) {
59410
- if (absoluteX === 0) {
59411
- return { left: 0, col: 0, right: 0, width: 0 };
59412
- }
59413
- if (isConsider &&
59414
- absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&
59415
- absoluteX < _this.tableNoFrameWidth) {
59416
- for (let i = 0; i < _this.rightFrozenColCount; i++) {
59417
- if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) {
59418
- return {
59419
- col: _this.colCount - i - 1,
59420
- left: undefined,
59421
- right: undefined,
59422
- width: undefined
59423
- };
59424
- }
59425
- }
59426
- }
59427
- return getTargetColAt(absoluteX, _this);
59428
- }
59429
- function getTargetRowAtConsiderBottomFrozen(absoluteY, isConsider, _this) {
59430
- if (absoluteY === 0) {
59431
- return { top: 0, row: 0, bottom: 0, height: 0 };
59432
- }
59433
- if (isConsider &&
59434
- absoluteY > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&
59435
- absoluteY < _this.tableNoFrameHeight) {
59436
- for (let i = 0; i < _this.rightFrozenColCount; i++) {
59437
- if (absoluteY > _this.tableNoFrameHeight - _this.getRowsHeight(_this.rowCount - i - 1, _this.rowCount - 1)) {
59438
- return {
59439
- row: _this.rowCount - i - 1,
59440
- top: undefined,
59441
- bottom: undefined,
59442
- height: undefined
59443
- };
59444
- }
59445
- }
59446
- }
59447
- return getTargetRowAt(absoluteY, _this);
59448
- }
59449
- function computeTargetRowByY(absoluteY, _this) {
59450
- let defaultRowHeight = _this.internalProps.defaultRowHeight;
59451
- if (_this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`)) {
59452
- defaultRowHeight = _this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`) / _this.rowCount;
59453
- }
59454
- return Math.min(Math.ceil(absoluteY / defaultRowHeight), _this.rowCount - 1);
59455
- }
59456
- function computeTargetColByX(absoluteX, _this) {
59457
- if (_this._colRangeWidthsMap.get(`$0$${_this.colCount - 1}`)) {
59458
- let startCol = 0;
59459
- let endCol = _this.colCount - 1;
59460
- while (endCol - startCol > 1) {
59461
- const midCol = Math.floor((startCol + endCol) / 2);
59462
- if (absoluteX < _this._colRangeWidthsMap.get(`$0$${midCol}`)) {
59463
- endCol = midCol;
59464
- }
59465
- else if (absoluteX > _this._colRangeWidthsMap.get(`$0$${midCol}`)) {
59466
- startCol = midCol;
59467
- }
59468
- else {
59469
- return midCol;
59470
- }
59471
- }
59472
- return endCol;
59473
- }
59474
- return Math.min(Math.ceil(absoluteX / _this.internalProps.defaultColWidth), _this.colCount - 1);
59475
- }
59476
- function getCellAtRelativePosition(x, y, _this) {
59477
- x -= _this.tableX;
59478
- y -= _this.tableY;
59479
- let bottomFrozen = false;
59480
- if (y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() && y < _this.tableNoFrameHeight) {
59481
- bottomFrozen = true;
59482
- }
59483
- let rightFrozen = false;
59484
- if (x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && x < _this.tableNoFrameWidth) {
59485
- rightFrozen = true;
59486
- }
59487
- const colInfo = getTargetColAtConsiderRightFrozen(rightFrozen ? x : x + _this.scrollLeft, rightFrozen, _this);
59488
- const rowInfo = getTargetRowAtConsiderBottomFrozen(bottomFrozen ? y : y + _this.scrollTop, bottomFrozen, _this);
59489
- if (!colInfo || !rowInfo) {
59490
- return undefined;
59491
- }
59492
- const { row, top, bottom, height } = rowInfo;
59493
- const { col, left, right, width } = colInfo;
59494
- const rect = {
59495
- left,
59496
- right,
59497
- top,
59498
- bottom,
59499
- width,
59500
- height
59501
- };
59502
- return {
59503
- row,
59504
- col,
59505
- rect
59506
- };
59507
- }
59508
-
59509
59237
  const { toBoxArray } = style;
59510
59238
  const { isTouchEvent } = event;
59511
59239
  const rangeReg = /^\$(\d+)\$(\d+)$/;
@@ -59538,7 +59266,7 @@
59538
59266
  return TABLE_EVENT_TYPE;
59539
59267
  }
59540
59268
  options;
59541
- version = "1.3.2-alpha.2";
59269
+ version = "1.3.2";
59542
59270
  pagination;
59543
59271
  id = `VTable${Date.now()}`;
59544
59272
  headerStyleCache;
@@ -59552,7 +59280,7 @@
59552
59280
  _hasAutoImageColumn;
59553
59281
  constructor(container, options = {}) {
59554
59282
  super();
59555
- if (!container && options.mode !== 'node' && !options.canvas) {
59283
+ if (!container && options.mode !== 'node') {
59556
59284
  throw new Error("vtable's container is undefined");
59557
59285
  }
59558
59286
  const { frozenColCount = 0, defaultRowHeight = 40, defaultHeaderRowHeight, defaultColWidth = 80, defaultHeaderColWidth, widthMode = 'standard', heightMode = 'standard', autoFillWidth = false, autoFillHeight = false, widthAdaptiveMode = 'only-body', heightAdaptiveMode = 'only-body', keyboardOptions, eventOptions, rowSeriesNumber, columnResizeMode, rowResizeMode = 'none', dragHeaderMode, showFrozenIcon, allowFrozenColCount, padding, hover, menu, select: click, customRender, pixelRatio = defaultPixelRatio, renderChartAsync, renderChartAsyncBatchCount, mode, modeParams, canvasWidth, canvasHeight, overscrollBehavior, limitMinWidth, limitMinHeight, clearDOM = true } = options;
@@ -59590,14 +59318,7 @@
59590
59318
  if (typeof allowFrozenColCount === 'number' && allowFrozenColCount <= 0) {
59591
59319
  this.showFrozenIcon = false;
59592
59320
  }
59593
- if (this.options.canvas) {
59594
- internalProps.element = this.options.canvas.parentElement;
59595
- internalProps.element.style.position = 'relative';
59596
- internalProps.focusControl = new FocusInput(this, internalProps.element);
59597
- internalProps.canvas = this.options.canvas;
59598
- internalProps.context = internalProps.canvas.getContext('2d');
59599
- }
59600
- else if (Env.mode !== 'node') {
59321
+ if (Env.mode !== 'node') {
59601
59322
  internalProps.element = createRootElement(this.padding);
59602
59323
  internalProps.focusControl = new FocusInput(this, internalProps.element);
59603
59324
  internalProps.canvas = document.createElement('canvas');
@@ -59994,21 +59715,7 @@
59994
59715
  const { padding } = this;
59995
59716
  let widthP = 0;
59996
59717
  let heightP = 0;
59997
- this.tableX = 0;
59998
- this.tableY = 0;
59999
- if (this.options.canvas && this.options.viewBox) {
60000
- widthP = this.options.viewBox.x2 - this.options.viewBox.x1;
60001
- heightP = this.options.viewBox.y2 - this.options.viewBox.y1;
60002
- if (this?.scenegraph?.stage) {
60003
- if (this.options.viewBox) {
60004
- this.scenegraph.stage.setViewBox(this.options.viewBox, false);
60005
- }
60006
- else {
60007
- this.scenegraph.stage.resize(widthP, heightP);
60008
- }
60009
- }
60010
- }
60011
- else if (Env.mode === 'browser') {
59718
+ if (Env.mode === 'browser') {
60012
59719
  const element = this.getElement();
60013
59720
  let widthWithoutPadding = 0;
60014
59721
  let heightWithoutPadding = 0;
@@ -60067,23 +59774,6 @@
60067
59774
  }
60068
59775
  }
60069
59776
  }
60070
- updateViewBox(newViewBox) {
60071
- const oldWidth = this.options?.viewBox.x2 ?? 0 - this.options?.viewBox.x1 ?? 0;
60072
- const oldHeight = this.options?.viewBox.y2 ?? 0 - this.options?.viewBox.y1 ?? 0;
60073
- const newWidth = newViewBox.x2 - newViewBox.x1;
60074
- const newHeight = newViewBox.y2 - newViewBox.y1;
60075
- this.options.viewBox = newViewBox;
60076
- if (oldWidth !== newWidth || oldHeight !== newHeight) {
60077
- this.resize();
60078
- }
60079
- else {
60080
- this.scenegraph.stage.setViewBox(this.options.viewBox, true);
60081
- }
60082
- }
60083
- setViewBoxTransform(a, b, c, d, e, f) {
60084
- this.internalProps.modifiedViewBoxTransform = true;
60085
- this.scenegraph.stage.window.setViewBoxTransform(a, b, c, d, e, f);
60086
- }
60087
59777
  get rowHierarchyType() {
60088
59778
  return 'grid';
60089
59779
  }
@@ -60534,16 +60224,55 @@
60534
60224
  return null;
60535
60225
  }
60536
60226
  getRowAt(absoluteY) {
60537
- return getRowAt(absoluteY, this);
60227
+ const frozen = _getTargetFrozenRowAt(this, absoluteY);
60228
+ if (frozen) {
60229
+ return frozen;
60230
+ }
60231
+ let row = this.getTargetRowAt(absoluteY);
60232
+ if (!row) {
60233
+ row = {
60234
+ top: -1,
60235
+ row: -1,
60236
+ bottom: -1,
60237
+ height: -1
60238
+ };
60239
+ }
60240
+ return row;
60538
60241
  }
60539
60242
  getColAt(absoluteX) {
60540
- return getColAt(absoluteX, this);
60243
+ const frozen = _getTargetFrozenColAt(this, absoluteX);
60244
+ if (frozen) {
60245
+ return frozen;
60246
+ }
60247
+ let col = this.getTargetColAt(absoluteX);
60248
+ if (!col) {
60249
+ col = {
60250
+ left: -1,
60251
+ col: -1,
60252
+ right: -1,
60253
+ width: 1
60254
+ };
60255
+ }
60256
+ return col;
60541
60257
  }
60542
60258
  getCellAt(absoluteX, absoluteY) {
60543
- return getCellAt(absoluteX, absoluteY, this);
60544
- }
60545
- getCellAtRelativePosition(relativeX, relativeY) {
60546
- return getCellAtRelativePosition(relativeX, relativeY, this);
60259
+ const rowInfo = this.getRowAt(absoluteY);
60260
+ const { row, top, bottom, height } = rowInfo;
60261
+ const colInfo = this.getColAt(absoluteX);
60262
+ const { col, left, right, width } = colInfo;
60263
+ const rect = {
60264
+ left,
60265
+ right,
60266
+ top,
60267
+ bottom,
60268
+ width,
60269
+ height
60270
+ };
60271
+ return {
60272
+ row,
60273
+ col,
60274
+ rect
60275
+ };
60547
60276
  }
60548
60277
  _checkRowCol(col, row) {
60549
60278
  if (col >= 0 && col < this.colCount && row >= 0 && row < this.rowCount) {
@@ -60598,8 +60327,6 @@
60598
60327
  const visibleRect = this.getVisibleRect();
60599
60328
  rect.offsetLeft(this.tableX - (relativeX ? visibleRect.left : 0));
60600
60329
  rect.offsetTop(this.tableY - (relativeY ? visibleRect.top : 0));
60601
- rect.offsetLeft(this.options.viewBox?.x1 ?? 0);
60602
- rect.offsetTop(this.options.viewBox?.y1 ?? 0);
60603
60330
  return rect;
60604
60331
  }
60605
60332
  getVisibleRect() {
@@ -60759,9 +60486,8 @@
60759
60486
  }
60760
60487
  this.scenegraph.stage.release();
60761
60488
  this.scenegraph.proxy.release();
60762
- internalProps.focusControl.release();
60763
60489
  const { parentElement } = internalProps.element;
60764
- if (parentElement && !this.options.canvas) {
60490
+ if (parentElement) {
60765
60491
  parentElement.removeChild(internalProps.element);
60766
60492
  }
60767
60493
  this.editorManager?.editingEditor?.onEnd?.();
@@ -60984,29 +60710,171 @@
60984
60710
  const currentHeight = rect.height;
60985
60711
  const originHeight = this.canvas.offsetHeight || currentHeight;
60986
60712
  const heightRatio = currentHeight / originHeight;
60987
- const x = (clientX - rect.left) / widthRatio + (isAddScroll ? table.scrollLeft : 0) - (this.options.viewBox?.x1 ?? 0);
60988
- const y = (clientY - rect.top) / heightRatio + (isAddScroll ? table.scrollTop : 0) - (this.options.viewBox?.y1 ?? 0);
60989
- const point = { x, y, inTable };
60990
- if (this.internalProps.modifiedViewBoxTransform && this.scenegraph.stage.window.getViewBoxTransform()) {
60991
- const transform = this.scenegraph.stage.window.getViewBoxTransform();
60992
- transform.transformPoint(point, point);
60993
- }
60994
- return point;
60713
+ const x = (clientX - rect.left) / widthRatio + (isAddScroll ? table.scrollLeft : 0);
60714
+ const y = (clientY - rect.top) / heightRatio + (isAddScroll ? table.scrollTop : 0);
60715
+ return { x, y, inTable };
60995
60716
  }
60996
60717
  getTheme() {
60997
60718
  return this.internalProps.theme;
60998
60719
  }
60999
60720
  getTargetColAt(absoluteX) {
61000
- return getTargetColAt(absoluteX, this);
60721
+ if (absoluteX === 0) {
60722
+ return { left: 0, col: 0, right: 0, width: 0 };
60723
+ }
60724
+ const findBefore = (startCol, startRight) => {
60725
+ let right = startRight;
60726
+ for (let col = startCol; col >= 0; col--) {
60727
+ const width = this.getColWidth(col);
60728
+ const left = right - width;
60729
+ if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {
60730
+ return {
60731
+ left,
60732
+ col,
60733
+ right,
60734
+ width
60735
+ };
60736
+ }
60737
+ right = left;
60738
+ }
60739
+ return null;
60740
+ };
60741
+ const findAfter = (startCol, startRight) => {
60742
+ let left = startRight - this.getColWidth(startCol);
60743
+ const { colCount } = this.internalProps;
60744
+ for (let col = startCol; col < colCount; col++) {
60745
+ const width = this.getColWidth(col);
60746
+ const right = left + width;
60747
+ if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {
60748
+ return {
60749
+ left,
60750
+ col,
60751
+ right,
60752
+ width
60753
+ };
60754
+ }
60755
+ left = right;
60756
+ }
60757
+ return null;
60758
+ };
60759
+ const candCol = this.computeTargetColByX(absoluteX);
60760
+ const right = this.getColsWidth(0, candCol);
60761
+ if (absoluteX >= right) {
60762
+ return findAfter(candCol, right);
60763
+ }
60764
+ return findBefore(candCol, right);
61001
60765
  }
61002
60766
  getTargetRowAt(absoluteY) {
61003
- return getTargetRowAt(absoluteY, this);
60767
+ if (absoluteY === 0) {
60768
+ return { top: 0, row: 0, bottom: 0, height: 0 };
60769
+ }
60770
+ const findBefore = (startRow, startBottom) => {
60771
+ let bottom = startBottom;
60772
+ for (let row = startRow; row >= 0; row--) {
60773
+ const height = this.getRowHeight(row);
60774
+ const top = bottom - height;
60775
+ if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {
60776
+ return {
60777
+ top,
60778
+ row,
60779
+ bottom,
60780
+ height
60781
+ };
60782
+ }
60783
+ bottom = top;
60784
+ }
60785
+ return null;
60786
+ };
60787
+ const findAfter = (startRow, startBottom) => {
60788
+ let top = startBottom - this.getRowHeight(startRow);
60789
+ const { rowCount } = this.internalProps;
60790
+ for (let row = startRow; row < rowCount; row++) {
60791
+ const height = this.getRowHeight(row);
60792
+ const bottom = top + height;
60793
+ if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {
60794
+ return {
60795
+ top,
60796
+ row,
60797
+ bottom,
60798
+ height
60799
+ };
60800
+ }
60801
+ top = bottom;
60802
+ }
60803
+ return null;
60804
+ };
60805
+ const candRow = this.computeTargetRowByY(absoluteY);
60806
+ const bottom = this.getRowsHeight(0, candRow);
60807
+ if (absoluteY >= bottom) {
60808
+ return findAfter(candRow, bottom);
60809
+ }
60810
+ return findBefore(candRow, bottom);
61004
60811
  }
61005
60812
  getTargetColAtConsiderRightFrozen(absoluteX, isConsider) {
61006
- return getTargetColAtConsiderRightFrozen(absoluteX, isConsider, this);
60813
+ if (absoluteX === 0) {
60814
+ return { left: 0, col: 0, right: 0, width: 0 };
60815
+ }
60816
+ if (isConsider &&
60817
+ absoluteX > this.tableNoFrameWidth - this.getRightFrozenColsWidth() &&
60818
+ absoluteX < this.tableNoFrameWidth) {
60819
+ for (let i = 0; i < this.rightFrozenColCount; i++) {
60820
+ if (absoluteX > this.tableNoFrameWidth - this.getColsWidth(this.colCount - i - 1, this.colCount - 1)) {
60821
+ return {
60822
+ col: this.colCount - i - 1,
60823
+ left: undefined,
60824
+ right: undefined,
60825
+ width: undefined
60826
+ };
60827
+ }
60828
+ }
60829
+ }
60830
+ return this.getTargetColAt(absoluteX);
61007
60831
  }
61008
60832
  getTargetRowAtConsiderBottomFrozen(absoluteY, isConsider) {
61009
- return getTargetRowAtConsiderBottomFrozen(absoluteY, isConsider, this);
60833
+ if (absoluteY === 0) {
60834
+ return { top: 0, row: 0, bottom: 0, height: 0 };
60835
+ }
60836
+ if (isConsider &&
60837
+ absoluteY > this.tableNoFrameHeight - this.getBottomFrozenRowsHeight() &&
60838
+ absoluteY < this.tableNoFrameHeight) {
60839
+ for (let i = 0; i < this.rightFrozenColCount; i++) {
60840
+ if (absoluteY > this.tableNoFrameHeight - this.getRowsHeight(this.rowCount - i - 1, this.rowCount - 1)) {
60841
+ return {
60842
+ row: this.rowCount - i - 1,
60843
+ top: undefined,
60844
+ bottom: undefined,
60845
+ height: undefined
60846
+ };
60847
+ }
60848
+ }
60849
+ }
60850
+ return this.getTargetRowAt(absoluteY);
60851
+ }
60852
+ computeTargetRowByY(absoluteY) {
60853
+ let defaultRowHeight = this.internalProps.defaultRowHeight;
60854
+ if (this._rowRangeHeightsMap.get(`$0$${this.rowCount - 1}`)) {
60855
+ defaultRowHeight = this._rowRangeHeightsMap.get(`$0$${this.rowCount - 1}`) / this.rowCount;
60856
+ }
60857
+ return Math.min(Math.ceil(absoluteY / defaultRowHeight), this.rowCount - 1);
60858
+ }
60859
+ computeTargetColByX(absoluteX) {
60860
+ if (this._colRangeWidthsMap.get(`$0$${this.colCount - 1}`)) {
60861
+ let startCol = 0;
60862
+ let endCol = this.colCount - 1;
60863
+ while (endCol - startCol > 1) {
60864
+ const midCol = Math.floor((startCol + endCol) / 2);
60865
+ if (absoluteX < this._colRangeWidthsMap.get(`$0$${midCol}`)) {
60866
+ endCol = midCol;
60867
+ }
60868
+ else if (absoluteX > this._colRangeWidthsMap.get(`$0$${midCol}`)) {
60869
+ startCol = midCol;
60870
+ }
60871
+ else {
60872
+ return midCol;
60873
+ }
60874
+ }
60875
+ return endCol;
60876
+ }
60877
+ return Math.min(Math.ceil(absoluteX / this.internalProps.defaultColWidth), this.colCount - 1);
61010
60878
  }
61011
60879
  clearSelected() {
61012
60880
  this.stateManager.updateSelectPos(-1, -1);
@@ -61949,35 +61817,69 @@
61949
61817
  if (col < this.frozenColCount && row < this.frozenRowCount) {
61950
61818
  return true;
61951
61819
  }
61952
- const colHeaderRangeRect = this.getCellRangeRelativeRect({
61953
- start: {
61954
- col: 0,
61955
- row: 0
61956
- },
61957
- end: {
61958
- col: this.colCount - 1,
61959
- row: this.columnHeaderLevelCount
61960
- }
61961
- });
61962
- const rowHeaderRangeRect = this.getCellRangeRelativeRect({
61963
- start: {
61964
- col: 0,
61965
- row: 0
61966
- },
61967
- end: {
61968
- col: this.rowHeaderLevelCount,
61969
- row: this.rowCount - 1
61970
- }
61971
- });
61820
+ let colHeaderRangeRect;
61821
+ if (this.frozenRowCount >= 1) {
61822
+ colHeaderRangeRect = this.getCellRangeRelativeRect({
61823
+ start: {
61824
+ col: 0,
61825
+ row: 0
61826
+ },
61827
+ end: {
61828
+ col: this.colCount - 1,
61829
+ row: this.frozenRowCount - 1
61830
+ }
61831
+ });
61832
+ }
61833
+ let rowHeaderRangeRect;
61834
+ if (this.frozenColCount >= 1) {
61835
+ rowHeaderRangeRect = this.getCellRangeRelativeRect({
61836
+ start: {
61837
+ col: 0,
61838
+ row: 0
61839
+ },
61840
+ end: {
61841
+ col: this.frozenColCount - 1,
61842
+ row: this.rowCount - 1
61843
+ }
61844
+ });
61845
+ }
61846
+ let bottomFrozenRangeRect;
61847
+ if (this.bottomFrozenRowCount >= 1) {
61848
+ bottomFrozenRangeRect = this.getCellRangeRelativeRect({
61849
+ start: {
61850
+ col: 0,
61851
+ row: this.rowCount - this.bottomFrozenRowCount
61852
+ },
61853
+ end: {
61854
+ col: this.colCount - 1,
61855
+ row: this.rowCount - 1
61856
+ }
61857
+ });
61858
+ }
61859
+ let rightFrozenRangeRect;
61860
+ if (this.rightFrozenColCount >= 1) {
61861
+ rightFrozenRangeRect = this.getCellRangeRelativeRect({
61862
+ start: {
61863
+ col: this.colCount - this.rightFrozenColCount,
61864
+ row: 0
61865
+ },
61866
+ end: {
61867
+ col: this.colCount - 1,
61868
+ row: this.rowCount - 1
61869
+ }
61870
+ });
61871
+ }
61972
61872
  if (rect.top >= drawRange.top &&
61973
61873
  rect.bottom <= drawRange.bottom &&
61974
61874
  rect.left >= drawRange.left &&
61975
61875
  rect.right <= drawRange.right) {
61976
- if (this.isHeader(col, row)) {
61876
+ if (this.isFrozenCell(col, row)) {
61977
61877
  return true;
61978
61878
  }
61979
- else if (drawRange.top >= colHeaderRangeRect.bottom &&
61980
- drawRange.left >= rowHeaderRangeRect.right) {
61879
+ else if (rect.top >= (colHeaderRangeRect?.bottom ?? rect.top) &&
61880
+ rect.left >= (rowHeaderRangeRect?.right ?? rect.left) &&
61881
+ rect.bottom <= (bottomFrozenRangeRect?.top ?? rect.bottom) &&
61882
+ rect.right <= (rightFrozenRangeRect?.left ?? rect.right)) {
61981
61883
  return true;
61982
61884
  }
61983
61885
  }
@@ -64272,10 +64174,12 @@
64272
64174
  const topHeaderHeight = !this.table.transpose || this.table.options.indicatorsAsCol
64273
64175
  ? this.table.getFrozenRowsHeight()
64274
64176
  : 0;
64275
- const width = (this.table.columnHeaderLevelCount > 0 ? this.table.getDrawRange().width : this.table.tableNoFrameWidth) -
64276
- leftHeaderWidth;
64277
- const height = (this.table.rowHeaderLevelCount > 0 ? this.table.getDrawRange().height : this.table.tableNoFrameHeight) -
64278
- topHeaderHeight;
64177
+ const width = (this.table.columnHeaderLevelCount > 0 && this.table.isListTable()
64178
+ ? this.table.getDrawRange().width
64179
+ : this.table.tableNoFrameWidth) - leftHeaderWidth;
64180
+ const height = (this.table.rowHeaderLevelCount > 0 && this.table.isListTable()
64181
+ ? this.table.getDrawRange().height
64182
+ : this.table.tableNoFrameHeight) - topHeaderHeight;
64279
64183
  this._emptyTipComponent.setAttributes({
64280
64184
  spaceBetweenTextAndIcon: this._emptyTipOption.spaceBetweenTextAndIcon,
64281
64185
  x: this.table.tableX + leftHeaderWidth,
@@ -64318,10 +64222,12 @@
64318
64222
  const topHeaderHeight = !this.table.transpose || this.table.options.indicatorsAsCol
64319
64223
  ? this.table.getFrozenRowsHeight()
64320
64224
  : 0;
64321
- const width = (this.table.columnHeaderLevelCount > 0 ? this.table.getDrawRange().width : this.table.tableNoFrameWidth) -
64322
- leftHeaderWidth;
64323
- const height = (this.table.rowHeaderLevelCount > 0 ? this.table.getDrawRange().height : this.table.tableNoFrameHeight) -
64324
- topHeaderHeight;
64225
+ const width = (this.table.columnHeaderLevelCount > 0 && this.table.isListTable()
64226
+ ? this.table.getDrawRange().width
64227
+ : this.table.tableNoFrameWidth) - leftHeaderWidth;
64228
+ const height = (this.table.rowHeaderLevelCount > 0 && this.table.isListTable()
64229
+ ? this.table.getDrawRange().height
64230
+ : this.table.tableNoFrameHeight) - topHeaderHeight;
64325
64231
  return {
64326
64232
  spaceBetweenTextAndIcon: this._emptyTipOption.spaceBetweenTextAndIcon,
64327
64233
  x: this.table.tableX + leftHeaderWidth,
@@ -65816,11 +65722,8 @@
65816
65722
  this.rowDimensionKeys = this.rowDimensionTree.dimensionKeys.valueArr();
65817
65723
  this.fullRowDimensionKeys = this.fullRowDimensionKeys.concat(this.rowDimensionKeys);
65818
65724
  this.resetRowHeaderLevelCount();
65819
- this._generateColHeaderIds();
65820
- this.colIndex = 0;
65821
- this._generateRowHeaderIds();
65822
65725
  if (this._table.isPivotChart()) {
65823
- this.hasTwoIndicatorAxes = this._indicators.some(indicatorObject => {
65726
+ this.hasTwoIndicatorAxes = this.indicatorsDefine.some((indicatorObject) => {
65824
65727
  if (indicatorObject.chartSpec &&
65825
65728
  indicatorObject.chartSpec.series &&
65826
65729
  indicatorObject.chartSpec.series.length > 1) {
@@ -65839,6 +65742,9 @@
65839
65742
  });
65840
65743
  }
65841
65744
  this.resetColumnHeaderLevelCount();
65745
+ this._generateColHeaderIds();
65746
+ this.colIndex = 0;
65747
+ this._generateRowHeaderIds();
65842
65748
  this._rowHeaderCellFullPathIds_FULL = transpose(this._rowHeaderCellFullPathIds_FULL);
65843
65749
  if (table.options.rowHierarchyType === 'tree' && this.extensionRows?.length >= 1) {
65844
65750
  this.generateExtensionRowTree();
@@ -65858,7 +65764,21 @@
65858
65764
  }
65859
65765
  this.sharedVar.seqId = Math.max(this.sharedVar.seqId, this._headerObjects.length);
65860
65766
  if (this.cornerSetting.titleOnDimension === 'column') {
65861
- const colDimensionKeys = this.columnDimensionTree.dimensionKeysIncludeVirtual.valueArr();
65767
+ let colDimensionKeys = this.columnDimensionTree.dimensionKeysIncludeVirtual.valueArr();
65768
+ if (this.dataset &&
65769
+ (this.dataset.records?.length ?? 0) === 0 &&
65770
+ !this.dataset.customColTree &&
65771
+ !this.dataset.customRowTree) {
65772
+ colDimensionKeys = this.columnsDefine.map(define => {
65773
+ if (typeof define === 'string') {
65774
+ return define;
65775
+ }
65776
+ return define.dimensionKey;
65777
+ });
65778
+ if (this.indicatorsAsCol) {
65779
+ colDimensionKeys.push(this.indicatorDimensionKey);
65780
+ }
65781
+ }
65862
65782
  this.cornerHeaderObjs = this._addCornerHeaders(this.columnHeaderTitle ? [''].concat(colDimensionKeys) : colDimensionKeys, this.columnsDefine);
65863
65783
  }
65864
65784
  else if (this.cornerSetting.titleOnDimension === 'row') {
@@ -65874,7 +65794,21 @@
65874
65794
  this.cornerHeaderObjs = this._addCornerHeaders(this.rowHeaderTitle ? [''].concat(rowTreeFirstKey) : rowTreeFirstKey, this.rowsDefine.concat(extensionRowDimensions));
65875
65795
  }
65876
65796
  else {
65877
- const rowDimensionKeys = this.rowDimensionTree.dimensionKeysIncludeVirtual.valueArr();
65797
+ let rowDimensionKeys = this.rowDimensionTree.dimensionKeysIncludeVirtual.valueArr();
65798
+ if (this.dataset &&
65799
+ (this.dataset.records?.length ?? 0) === 0 &&
65800
+ !this.dataset.customColTree &&
65801
+ !this.dataset.customRowTree) {
65802
+ rowDimensionKeys = this.rowsDefine.map(define => {
65803
+ if (typeof define === 'string') {
65804
+ return define;
65805
+ }
65806
+ return define.dimensionKey;
65807
+ });
65808
+ if (!this.indicatorsAsCol) {
65809
+ rowDimensionKeys.push(this.indicatorDimensionKey);
65810
+ }
65811
+ }
65878
65812
  this.cornerHeaderObjs = this._addCornerHeaders(this.rowHeaderTitle ? [''].concat(rowDimensionKeys) : rowDimensionKeys, this.rowsDefine);
65879
65813
  }
65880
65814
  }
@@ -65980,12 +65914,24 @@
65980
65914
  }
65981
65915
  _generateColHeaderIds() {
65982
65916
  if (this.columnDimensionTree.tree.children?.length >= 1) {
65983
- this._addHeaders(this._columnHeaderCellFullPathIds, 0, this.columnDimensionTree.tree.children, [], this.columnHeaderObjs);
65917
+ let startRow = 0;
65918
+ if (this.dataset &&
65919
+ (this.dataset.records?.length ?? 0) === 0 &&
65920
+ !this.dataset.customColTree &&
65921
+ !this.dataset.customRowTree &&
65922
+ this.indicatorsAsCol &&
65923
+ this.columnDimensionTree.totalLevel < this.columnHeaderLevelCount) {
65924
+ startRow = this.columnHeaderLevelCount - this.columnDimensionTree.totalLevel;
65925
+ for (let i = 0; i < startRow; i++) {
65926
+ this._columnHeaderCellFullPathIds.unshift([]);
65927
+ }
65928
+ }
65929
+ this._addHeaders(this._columnHeaderCellFullPathIds, startRow, this.columnDimensionTree.tree.children, [], this.columnHeaderObjs);
65984
65930
  }
65985
65931
  if (this.columnHeaderTitle) {
65986
65932
  this.sharedVar.seqId = Math.max(this.sharedVar.seqId, this._headerObjects.length);
65987
65933
  const id = ++this.sharedVar.seqId;
65988
- const firstRowIds = Array(this.colCount - this.rowHeaderLevelCount).fill(id);
65934
+ const firstRowIds = Array(this.colCount - this.rowHeaderLevelCount - this.rightFrozenColCount).fill(id);
65989
65935
  this._columnHeaderCellFullPathIds.unshift(firstRowIds);
65990
65936
  const cell = {
65991
65937
  id,
@@ -66016,7 +65962,19 @@
66016
65962
  this._addHeadersForTreeMode(this._rowHeaderCellFullPathIds_FULL, 0, this.rowDimensionTree.tree.children, [], this.rowDimensionTree.totalLevel, true, this.rowsDefine, this.rowHeaderObjs);
66017
65963
  }
66018
65964
  else {
66019
- this._addHeaders(this._rowHeaderCellFullPathIds_FULL, 0, this.rowDimensionTree.tree.children, [], this.rowHeaderObjs);
65965
+ let startRow = 0;
65966
+ if (this.dataset &&
65967
+ (this.dataset.records?.length ?? 0) === 0 &&
65968
+ !this.dataset.customColTree &&
65969
+ !this.dataset.customRowTree &&
65970
+ !this.indicatorsAsCol &&
65971
+ this.rowDimensionTree.totalLevel < this.rowHeaderLevelCount) {
65972
+ startRow = this.rowHeaderLevelCount - this.rowDimensionTree.totalLevel;
65973
+ for (let i = 0; i < startRow; i++) {
65974
+ this._rowHeaderCellFullPathIds_FULL.unshift([]);
65975
+ }
65976
+ }
65977
+ this._addHeaders(this._rowHeaderCellFullPathIds_FULL, startRow, this.rowDimensionTree.tree.children, [], this.rowHeaderObjs);
66020
65978
  }
66021
65979
  }
66022
65980
  if (this.rowHeaderTitle) {
@@ -66541,6 +66499,25 @@
66541
66499
  checkHasCartesianChart(this.indicatorsDefine)) {
66542
66500
  count -= 1;
66543
66501
  }
66502
+ if (count === 0 && this.dataset && !this.dataset.customColTree && !this.dataset.customRowTree) {
66503
+ if (this.cornerSetting.titleOnDimension === 'row') {
66504
+ count = 1;
66505
+ }
66506
+ else if ((this.dataset.records?.length ?? 0) === 0 && this.cornerSetting.titleOnDimension === 'column') {
66507
+ count = this.columnsDefine.length ?? 0;
66508
+ }
66509
+ }
66510
+ else if (this.dataset &&
66511
+ (this.dataset.records?.length ?? 0) === 0 &&
66512
+ !this.dataset.customColTree &&
66513
+ !this.dataset.customRowTree) {
66514
+ if (this.cornerSetting.titleOnDimension === 'column') {
66515
+ count = this.columnsDefine.length ?? 0;
66516
+ if (!this.hideIndicatorName && this.indicatorsAsCol) {
66517
+ count++;
66518
+ }
66519
+ }
66520
+ }
66544
66521
  this.columnHeaderLevelCount = count;
66545
66522
  return;
66546
66523
  }
@@ -66568,6 +66545,25 @@
66568
66545
  if (this.rowHeaderTitle) {
66569
66546
  count += 1;
66570
66547
  }
66548
+ if (count === 0 && this.dataset && !this.dataset.customColTree && !this.dataset.customRowTree) {
66549
+ if (this.cornerSetting.titleOnDimension === 'column') {
66550
+ count = 1;
66551
+ }
66552
+ else if ((this.dataset.records?.length ?? 0) === 0 && this.cornerSetting.titleOnDimension === 'row') {
66553
+ count = this.rowsDefine.length ?? 0;
66554
+ }
66555
+ }
66556
+ else if (this.dataset &&
66557
+ (this.dataset.records?.length ?? 0) === 0 &&
66558
+ !this.dataset.customColTree &&
66559
+ !this.dataset.customRowTree) {
66560
+ if (this.cornerSetting.titleOnDimension === 'row') {
66561
+ count = this.rowsDefine.length;
66562
+ if (!this.hideIndicatorName && !this.indicatorsAsCol) {
66563
+ count++;
66564
+ }
66565
+ }
66566
+ }
66571
66567
  this.rowHeaderLevelCount = count;
66572
66568
  return;
66573
66569
  }
@@ -66679,16 +66675,16 @@
66679
66675
  return '';
66680
66676
  }
66681
66677
  else if (this.isCornerHeader(col, row)) {
66682
- return this._cornerHeaderCellIds[row][col - this.leftRowSeriesNumberColumnCount];
66678
+ return this._cornerHeaderCellIds[row]?.[col - this.leftRowSeriesNumberColumnCount];
66683
66679
  }
66684
66680
  else if (this.isColumnHeader(col, row)) {
66685
- return this._columnHeaderCellIds[row][col - this.rowHeaderLevelCount - this.leftRowSeriesNumberColumnCount];
66681
+ return this._columnHeaderCellIds[row]?.[col - this.rowHeaderLevelCount - this.leftRowSeriesNumberColumnCount];
66686
66682
  }
66687
66683
  else if (this.isRowHeader(col, row)) {
66688
66684
  return this._rowHeaderCellIds[row - this.columnHeaderLevelCount]?.[col - this.leftRowSeriesNumberColumnCount];
66689
66685
  }
66690
66686
  else if (this.isRightFrozenColumn(col, row)) {
66691
- return this._rowHeaderCellIds[row - this.columnHeaderLevelCount][this.rowHeaderLevelCount - 1];
66687
+ return this._rowHeaderCellIds[row - this.columnHeaderLevelCount]?.[this.rowHeaderLevelCount - 1];
66692
66688
  }
66693
66689
  else if (this.isBottomFrozenRow(col, row)) {
66694
66690
  return this._columnHeaderCellIds[this.columnHeaderLevelCount - 1]?.[col - this.rowHeaderLevelCount - this.leftRowSeriesNumberColumnCount];
@@ -68080,10 +68076,10 @@
68080
68076
  this.columnTree = dataset.colHeaderTree;
68081
68077
  this.columnDimensionTree = new DimensionTree(this.columnTree ?? [], this.sharedVar);
68082
68078
  this.rowDimensionTree = new DimensionTree(this.rowTree ?? [], this.sharedVar, this.rowHierarchyType, this.rowHierarchyType === 'tree' ? this.rowExpandLevel : undefined);
68079
+ this.resetColumnHeaderLevelCount();
68083
68080
  this._generateColHeaderIds();
68084
68081
  this.colIndex = 0;
68085
68082
  this._generateRowHeaderIds();
68086
- this.resetColumnHeaderLevelCount();
68087
68083
  this._rowHeaderCellFullPathIds_FULL = transpose(this._rowHeaderCellFullPathIds_FULL);
68088
68084
  this._headerObjectMap = this._headerObjects.reduce((o, e) => {
68089
68085
  o[e.id] = e;
@@ -68523,7 +68519,9 @@
68523
68519
  collectedValues = {};
68524
68520
  cacheCollectedValues = {};
68525
68521
  rows;
68522
+ rowsHasValue;
68526
68523
  columns;
68524
+ columnsHasValue;
68527
68525
  indicatorKeys;
68528
68526
  customRowTree;
68529
68527
  customColTree;
@@ -68583,6 +68581,8 @@
68583
68581
  this.rowFlatKeys = {};
68584
68582
  this.colKeys = [];
68585
68583
  this.rowKeys = [];
68584
+ this.rowsHasValue = [];
68585
+ this.columnsHasValue = [];
68586
68586
  if (records) {
68587
68587
  this.records = records;
68588
68588
  typeof window !== 'undefined' ? window.performance.now() : 0;
@@ -68603,19 +68603,25 @@
68603
68603
  }
68604
68604
  else {
68605
68605
  if (this.rowHierarchyType === 'tree') {
68606
- this.rowHeaderTree = this.ArrToTree1(this.rowKeys, this.rows, this.indicatorsAsCol ? undefined : this.indicators, this.totals?.row?.showGrandTotals ||
68606
+ this.rowHeaderTree = this.ArrToTree1(this.rowKeys, this.rows.filter((key, index) => {
68607
+ return this.rowsHasValue[index];
68608
+ }), this.indicatorsAsCol ? undefined : this.indicators, this.totals?.row?.showGrandTotals ||
68607
68609
  (!this.indicatorsAsCol && this.columns.length === 0) ||
68608
68610
  (this.indicatorsAsCol && this.rows.length === 0), this.rowGrandTotalLabel);
68609
68611
  }
68610
68612
  else {
68611
- this.rowHeaderTree = this.ArrToTree(this.rowKeys, this.rows, this.indicatorsAsCol ? undefined : this.indicators, this.rowsIsTotal, this.totals?.row?.showGrandTotals || (this.indicatorsAsCol && this.rows.length === 0), this.rowGrandTotalLabel, this.rowSubTotalLabel, this.totals?.row?.showGrandTotalsOnTop ?? false, this.totals?.row?.showSubTotalsOnTop ?? false);
68613
+ this.rowHeaderTree = this.ArrToTree(this.rowKeys, this.rows.filter((key, index) => {
68614
+ return this.rowsHasValue[index];
68615
+ }), this.indicatorsAsCol ? undefined : this.indicators, this.rowsIsTotal, this.totals?.row?.showGrandTotals || (this.indicatorsAsCol && this.rows.length === 0), this.rowGrandTotalLabel, this.rowSubTotalLabel, this.totals?.row?.showGrandTotalsOnTop ?? false, this.totals?.row?.showSubTotalsOnTop ?? false);
68612
68616
  }
68613
68617
  }
68614
68618
  if (this.customColTree) {
68615
68619
  this.colHeaderTree = this.customColTree;
68616
68620
  }
68617
68621
  else {
68618
- this.colHeaderTree = this.ArrToTree(this.colKeys, this.columns, this.indicatorsAsCol ? this.indicators : undefined, this.colsIsTotal, this.totals?.column?.showGrandTotals || (!this.indicatorsAsCol && this.columns.length === 0), this.colGrandTotalLabel, this.colSubTotalLabel, this.totals?.column?.showGrandTotalsOnLeft ?? false, this.totals?.column?.showSubTotalsOnLeft ?? false);
68622
+ this.colHeaderTree = this.ArrToTree(this.colKeys, this.columns.filter((key, index) => {
68623
+ return this.columnsHasValue[index];
68624
+ }), this.indicatorsAsCol ? this.indicators : undefined, this.colsIsTotal, this.totals?.column?.showGrandTotals || (!this.indicatorsAsCol && this.columns.length === 0), this.colGrandTotalLabel, this.colSubTotalLabel, this.totals?.column?.showGrandTotalsOnLeft ?? false, this.totals?.column?.showSubTotalsOnLeft ?? false);
68619
68625
  }
68620
68626
  typeof window !== 'undefined' ? window.performance.now() : 0;
68621
68627
  if (this.dataConfig?.isPivotChart) {
@@ -68812,6 +68818,7 @@
68812
68818
  for (let l = 0, len1 = this.rows.length; l < len1; l++) {
68813
68819
  const rowAttr = this.rows[l];
68814
68820
  if (rowAttr in record) {
68821
+ this.rowsHasValue[l] = true;
68815
68822
  rowKey.push(record[rowAttr]);
68816
68823
  }
68817
68824
  else if (rowAttr !== IndicatorDimensionKeyPlaceholder) {
@@ -68837,6 +68844,7 @@
68837
68844
  for (let n = 0, len2 = this.columns.length; n < len2; n++) {
68838
68845
  const colAttr = this.columns[n];
68839
68846
  if (colAttr in record) {
68847
+ this.columnsHasValue[n] = true;
68840
68848
  colKey.push(record[colAttr]);
68841
68849
  }
68842
68850
  else if (colAttr !== IndicatorDimensionKeyPlaceholder) {
@@ -68962,16 +68970,22 @@
68962
68970
  this.sortKeys();
68963
68971
  if (!this.customRowTree) {
68964
68972
  if (this.rowHierarchyType === 'tree') {
68965
- this.rowHeaderTree = this.ArrToTree1(this.rowKeys, this.rows, this.indicatorsAsCol ? undefined : this.indicators, this.totals?.row?.showGrandTotals ||
68973
+ this.rowHeaderTree = this.ArrToTree1(this.rowKeys, this.rows.filter((key, index) => {
68974
+ return this.rowsHasValue[index];
68975
+ }), this.indicatorsAsCol ? undefined : this.indicators, this.totals?.row?.showGrandTotals ||
68966
68976
  (!this.indicatorsAsCol && this.columns.length === 0) ||
68967
68977
  (this.indicatorsAsCol && this.rows.length === 0), this.rowGrandTotalLabel);
68968
68978
  }
68969
68979
  else {
68970
- this.rowHeaderTree = this.ArrToTree(this.rowKeys, this.rows, this.indicatorsAsCol ? undefined : this.indicators, this.rowsIsTotal, this.totals?.row?.showGrandTotals || (this.indicatorsAsCol && this.rows.length === 0), this.rowGrandTotalLabel, this.rowSubTotalLabel, this.totals?.row?.showGrandTotalsOnTop ?? false, this.totals?.row?.showSubTotalsOnTop ?? false);
68980
+ this.rowHeaderTree = this.ArrToTree(this.rowKeys, this.rows.filter((key, index) => {
68981
+ return this.rowsHasValue[index];
68982
+ }), this.indicatorsAsCol ? undefined : this.indicators, this.rowsIsTotal, this.totals?.row?.showGrandTotals || (this.indicatorsAsCol && this.rows.length === 0), this.rowGrandTotalLabel, this.rowSubTotalLabel, this.totals?.row?.showGrandTotalsOnTop ?? false, this.totals?.row?.showSubTotalsOnTop ?? false);
68971
68983
  }
68972
68984
  }
68973
68985
  if (!this.customColTree) {
68974
- this.colHeaderTree = this.ArrToTree(this.colKeys, this.columns, this.indicatorsAsCol ? this.indicators : undefined, this.colsIsTotal, this.totals?.column?.showGrandTotals || (!this.indicatorsAsCol && this.columns.length === 0), this.colGrandTotalLabel, this.colSubTotalLabel, this.totals?.column?.showGrandTotalsOnLeft ?? false, this.totals?.column?.showSubTotalsOnLeft ?? false);
68986
+ this.colHeaderTree = this.ArrToTree(this.colKeys, this.columns.filter((key, index) => {
68987
+ return this.columnsHasValue[index];
68988
+ }), this.indicatorsAsCol ? this.indicators : undefined, this.colsIsTotal, this.totals?.column?.showGrandTotals || (!this.indicatorsAsCol && this.columns.length === 0), this.colGrandTotalLabel, this.colSubTotalLabel, this.totals?.column?.showGrandTotalsOnLeft ?? false, this.totals?.column?.showSubTotalsOnLeft ?? false);
68975
68989
  }
68976
68990
  }
68977
68991
  updateFilterRules(filterRules, isResetTree = false) {
@@ -71747,14 +71761,6 @@
71747
71761
  updateChartData(this.scenegraph);
71748
71762
  this.render();
71749
71763
  }
71750
- clearChartCacheImage(col, row) {
71751
- if (isNumber$2(col) && isNumber$2(row)) {
71752
- clearCellChartCacheImage(col, row, this.scenegraph);
71753
- }
71754
- else {
71755
- clearChartCacheImage(this.scenegraph);
71756
- }
71757
- }
71758
71764
  getLegendSelected() {
71759
71765
  const selected = [];
71760
71766
  this.internalProps.legends?.forEach(legend => {
@@ -72548,7 +72554,7 @@
72548
72554
  }
72549
72555
 
72550
72556
  registerForVrender();
72551
- const version = "1.3.2-alpha.2";
72557
+ const version = "1.3.2";
72552
72558
  function getIcons() {
72553
72559
  return get$2();
72554
72560
  }