@visactor/vtable 1.22.11-alpha.4 → 1.22.11-alpha.6

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 (85) hide show
  1. package/cjs/PivotChart.d.ts +3 -0
  2. package/cjs/PivotChart.js +12 -5
  3. package/cjs/PivotChart.js.map +1 -1
  4. package/cjs/body-helper/style.js +2 -1
  5. package/cjs/core/BaseTable.js +1 -1
  6. package/cjs/core/BaseTable.js.map +1 -1
  7. package/cjs/core/FouseInput.js +1 -2
  8. package/cjs/event/event.js.map +1 -1
  9. package/cjs/event/listener/table-group.js +10 -6
  10. package/cjs/event/listener/table-group.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/layout/pivot-header-layout.d.ts +6 -0
  15. package/cjs/layout/pivot-header-layout.js +39 -20
  16. package/cjs/layout/pivot-header-layout.js.map +1 -1
  17. package/cjs/plugins/custom-cell-style.js +1 -1
  18. package/cjs/plugins/index.js +1 -1
  19. package/cjs/scenegraph/graphic/active-cell-chart-list.d.ts +14 -2
  20. package/cjs/scenegraph/graphic/active-cell-chart-list.js +195 -75
  21. package/cjs/scenegraph/graphic/active-cell-chart-list.js.map +1 -1
  22. package/cjs/scenegraph/graphic/chart.d.ts +9 -1
  23. package/cjs/scenegraph/graphic/chart.js +48 -20
  24. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  25. package/cjs/scenegraph/graphic/contributions/chart-render.js +3 -4
  26. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  27. package/cjs/scenegraph/refresh-node/update-chart.d.ts +1 -1
  28. package/cjs/scenegraph/refresh-node/update-chart.js +2 -1
  29. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  30. package/cjs/scenegraph/scenegraph.d.ts +2 -2
  31. package/cjs/scenegraph/scenegraph.js +41 -12
  32. package/cjs/scenegraph/scenegraph.js.map +1 -1
  33. package/cjs/state/state.js +1 -1
  34. package/cjs/themes/theme-define.js +6 -0
  35. package/cjs/themes/theme-define.js.map +1 -1
  36. package/cjs/tools/util.d.ts +5 -0
  37. package/cjs/tools/util.js +22 -4
  38. package/cjs/tools/util.js.map +1 -1
  39. package/cjs/ts-types/table-engine.d.ts +7 -0
  40. package/cjs/ts-types/table-engine.js.map +1 -1
  41. package/cjs/vrender.js.map +1 -1
  42. package/dist/vtable.js +541 -188
  43. package/dist/vtable.min.js +2 -2
  44. package/es/PivotChart.d.ts +3 -0
  45. package/es/PivotChart.js +13 -4
  46. package/es/PivotChart.js.map +1 -1
  47. package/es/body-helper/style.js +2 -1
  48. package/es/core/BaseTable.js +1 -1
  49. package/es/core/BaseTable.js.map +1 -1
  50. package/es/core/FouseInput.js +1 -2
  51. package/es/event/event.js.map +1 -1
  52. package/es/event/listener/table-group.js +9 -6
  53. package/es/event/listener/table-group.js.map +1 -1
  54. package/es/index.d.ts +1 -1
  55. package/es/index.js +1 -1
  56. package/es/index.js.map +1 -1
  57. package/es/layout/pivot-header-layout.d.ts +6 -0
  58. package/es/layout/pivot-header-layout.js +39 -20
  59. package/es/layout/pivot-header-layout.js.map +1 -1
  60. package/es/plugins/custom-cell-style.js +1 -1
  61. package/es/plugins/index.js +1 -1
  62. package/es/scenegraph/graphic/active-cell-chart-list.d.ts +14 -2
  63. package/es/scenegraph/graphic/active-cell-chart-list.js +183 -68
  64. package/es/scenegraph/graphic/active-cell-chart-list.js.map +1 -1
  65. package/es/scenegraph/graphic/chart.d.ts +9 -1
  66. package/es/scenegraph/graphic/chart.js +47 -19
  67. package/es/scenegraph/graphic/chart.js.map +1 -1
  68. package/es/scenegraph/graphic/contributions/chart-render.js +3 -4
  69. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  70. package/es/scenegraph/refresh-node/update-chart.d.ts +1 -1
  71. package/es/scenegraph/refresh-node/update-chart.js +2 -1
  72. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  73. package/es/scenegraph/scenegraph.d.ts +2 -2
  74. package/es/scenegraph/scenegraph.js +41 -11
  75. package/es/scenegraph/scenegraph.js.map +1 -1
  76. package/es/state/state.js +1 -1
  77. package/es/themes/theme-define.js +6 -0
  78. package/es/themes/theme-define.js.map +1 -1
  79. package/es/tools/util.d.ts +5 -0
  80. package/es/tools/util.js +18 -0
  81. package/es/tools/util.js.map +1 -1
  82. package/es/ts-types/table-engine.d.ts +7 -0
  83. package/es/ts-types/table-engine.js.map +1 -1
  84. package/es/vrender.js.map +1 -1
  85. package/package.json +3 -3
package/dist/vtable.js CHANGED
@@ -36018,6 +36018,47 @@
36018
36018
  }
36019
36019
  };
36020
36020
  }
36021
+ function cancellableThrottle(func, delay) {
36022
+ let timer = null;
36023
+ let lastArgs = null;
36024
+ let context = null;
36025
+ const throttled = function (...args) {
36026
+ lastArgs = args;
36027
+ context = this;
36028
+ if (!timer) {
36029
+ timer = setTimeout(() => {
36030
+ if (lastArgs) {
36031
+ func.apply(context, lastArgs);
36032
+ }
36033
+ timer = null;
36034
+ lastArgs = null;
36035
+ context = null;
36036
+ }, delay);
36037
+ }
36038
+ };
36039
+ const cancel = () => {
36040
+ if (timer) {
36041
+ clearTimeout(timer);
36042
+ timer = null;
36043
+ lastArgs = null;
36044
+ context = null;
36045
+ }
36046
+ };
36047
+ const flush = () => {
36048
+ if (timer && lastArgs) {
36049
+ clearTimeout(timer);
36050
+ func.apply(context, lastArgs);
36051
+ timer = null;
36052
+ lastArgs = null;
36053
+ context = null;
36054
+ }
36055
+ };
36056
+ return {
36057
+ throttled,
36058
+ cancel,
36059
+ flush
36060
+ };
36061
+ }
36021
36062
  function pad(num, totalChars) {
36022
36063
  const pad = '0';
36023
36064
  num = `${num}`;
@@ -37664,6 +37705,9 @@
37664
37705
  get textAlign() {
37665
37706
  return defaultStyle.textAlign ?? 'left';
37666
37707
  },
37708
+ get textStickBaseOnAlign() {
37709
+ return defaultStyle.textStickBaseOnAlign;
37710
+ },
37667
37711
  get textBaseline() {
37668
37712
  return defaultStyle.textBaseline ?? 'middle';
37669
37713
  },
@@ -38265,6 +38309,9 @@
38265
38309
  get textStick() {
38266
38310
  return style.textStick;
38267
38311
  },
38312
+ get textStickBaseOnAlign() {
38313
+ return style.textStickBaseOnAlign;
38314
+ },
38268
38315
  get marked() {
38269
38316
  return style.marked;
38270
38317
  },
@@ -48968,9 +49015,27 @@
48968
49015
  return hoverMode;
48969
49016
  }
48970
49017
 
49018
+ let brushingChartInstance;
49019
+ let brushingChartInstanceCellPos = { col: -1, row: -1 };
49020
+ function setBrushingChartInstance(chartInstance, col, row) {
49021
+ brushingChartInstance = chartInstance;
49022
+ brushingChartInstanceCellPos = { col, row };
49023
+ }
49024
+ function clearBrushingChartInstance() {
49025
+ brushingChartInstance = undefined;
49026
+ brushingChartInstanceCellPos = { col: -1, row: -1 };
49027
+ }
49028
+ function getBrushingChartInstance() {
49029
+ return brushingChartInstance;
49030
+ }
49031
+ function getBrushingChartInstanceCellPos() {
49032
+ return brushingChartInstanceCellPos;
49033
+ }
48971
49034
  const chartInstanceListColumnByColumnDirection = {};
48972
49035
  const chartInstanceListRowByRowDirection = {};
49036
+ const delayRunDimensionHoverTimer = [];
48973
49037
  function generateChartInstanceListByColumnDirection(col, dimensionValueOrXValue, positionValueOrYValue, canvasXY, table, hideTooltip = false, isScatter = false) {
49038
+ clearDelayRunDimensionHoverTimers();
48974
49039
  if (!isValid$1(chartInstanceListColumnByColumnDirection[col])) {
48975
49040
  chartInstanceListColumnByColumnDirection[col] = {};
48976
49041
  }
@@ -48980,9 +49045,9 @@
48980
49045
  for (let i = rowStart; i <= rowEnd; i++) {
48981
49046
  const cellGroup = table.scenegraph.getCell(col, i);
48982
49047
  const chartNode = cellGroup?.getChildren()?.[0];
48983
- chartNode.addUpdateShapeAndBoundsTag();
48984
49048
  if (chartInstanceListColumnByColumnDirection[col][i]) ;
48985
49049
  else if (isValid$1(chartNode)) {
49050
+ chartNode.addUpdateShapeAndBoundsTag();
48986
49051
  if (chartNode.activeChartInstance) {
48987
49052
  chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;
48988
49053
  }
@@ -48991,44 +49056,13 @@
48991
49056
  chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;
48992
49057
  }
48993
49058
  }
48994
- setTimeout(() => {
49059
+ const timer = setTimeout(() => {
48995
49060
  if (chartInstanceListColumnByColumnDirection[col]?.[i]) {
48996
49061
  const chartDimensionLinkage = table.options.chartDimensionLinkage;
48997
49062
  let isShowTooltip = !isScatter;
48998
49063
  if (!isScatter && typeof chartDimensionLinkage === 'object') {
48999
49064
  isShowTooltip = chartDimensionLinkage.showTooltip ?? true;
49000
- if (i === rowEnd && isShowTooltip) {
49001
- const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;
49002
- const { rowEnd: rowEnd1 } = table.getBodyVisibleRowRange(0, -heightLimitToShowTooltipForEdgeRow);
49003
- if (rowEnd1 === rowEnd) {
49004
- isShowTooltip = true;
49005
- }
49006
- else {
49007
- const { rowEnd: rowEnd2 } = table.getBodyVisibleRowRange(0, 5);
49008
- if (rowEnd2 !== rowEnd) {
49009
- isShowTooltip = true;
49010
- }
49011
- else {
49012
- isShowTooltip = false;
49013
- }
49014
- }
49015
- }
49016
- else if (i === rowStart && isShowTooltip) {
49017
- const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;
49018
- const { rowStart: rowStart1 } = table.getBodyVisibleRowRange(heightLimitToShowTooltipForEdgeRow, 0);
49019
- if (rowStart1 === rowStart) {
49020
- isShowTooltip = true;
49021
- }
49022
- else {
49023
- const { rowStart: rowStart2 } = table.getBodyVisibleRowRange(0, -5);
49024
- if (rowStart2 !== rowStart) {
49025
- isShowTooltip = true;
49026
- }
49027
- else {
49028
- isShowTooltip = false;
49029
- }
49030
- }
49031
- }
49065
+ isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table);
49032
49066
  }
49033
49067
  if (isScatter) {
49034
49068
  if (table.stateManager.hover.cellPos.col !== col || table.stateManager.hover.cellPos.row !== i) {
@@ -49041,6 +49075,7 @@
49041
49075
  }
49042
49076
  }
49043
49077
  else {
49078
+ const cellBoundry = table.getCellRelativeRect(col, i);
49044
49079
  const bodyBoundryTop = table.frozenRowCount
49045
49080
  ? table.getCellRelativeRect(col, table.frozenRowCount - 1).bottom
49046
49081
  : 0;
@@ -49051,43 +49086,32 @@
49051
49086
  }
49052
49087
  chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {
49053
49088
  tooltip: false,
49054
- showTooltipOption: { x: canvasXY.x, y: absolutePositionTop, activeType: 'dimension' }
49089
+ showTooltipOption: {
49090
+ x: canvasXY.x - cellBoundry.left,
49091
+ y: absolutePositionTop - cellBoundry.top,
49092
+ activeType: 'dimension'
49093
+ }
49055
49094
  });
49056
49095
  }
49057
49096
  else {
49058
49097
  chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {
49059
49098
  tooltip: isShowTooltip,
49060
- showTooltipOption: { x: canvasXY.x, y: absolutePositionTop, activeType: 'dimension' }
49099
+ showTooltipOption: {
49100
+ x: canvasXY.x - cellBoundry.left,
49101
+ y: absolutePositionTop - cellBoundry.top,
49102
+ activeType: 'dimension'
49103
+ }
49061
49104
  });
49062
49105
  }
49063
49106
  }
49064
49107
  }
49065
49108
  }, 0);
49109
+ delayRunDimensionHoverTimer.push(timer);
49066
49110
  table.scenegraph.updateNextFrame();
49067
49111
  }
49068
49112
  }
49069
- function clearChartInstanceListByColumnDirection(col, excludedRow, table) {
49070
- if (isValid$1(chartInstanceListColumnByColumnDirection[col])) {
49071
- for (const i in chartInstanceListColumnByColumnDirection[col]) {
49072
- if (isValid$1(excludedRow) && Number(i) === excludedRow) {
49073
- continue;
49074
- }
49075
- const cellGroup = table.scenegraph.getCell(col, Number(i));
49076
- const chartNode = cellGroup?.getChildren()?.[0];
49077
- chartNode.addUpdateShapeAndBoundsTag();
49078
- if (isValid$1(chartNode)) {
49079
- chartNode.deactivate(table, {
49080
- releaseChartInstance: true,
49081
- releaseColumnChartInstance: false,
49082
- releaseRowChartInstance: false
49083
- });
49084
- chartInstanceListColumnByColumnDirection[col][i] = null;
49085
- }
49086
- }
49087
- delete chartInstanceListColumnByColumnDirection[col];
49088
- }
49089
- }
49090
49113
  function generateChartInstanceListByRowDirection(row, dimensionValueOrXValue, positionValueOrYValue, canvasXY, table, hideTooltip = false, isScatter = false) {
49114
+ clearDelayRunDimensionHoverTimers();
49091
49115
  if (!isValid$1(chartInstanceListRowByRowDirection[row])) {
49092
49116
  chartInstanceListRowByRowDirection[row] = {};
49093
49117
  }
@@ -49097,9 +49121,9 @@
49097
49121
  for (let i = colStart; i <= colEnd; i++) {
49098
49122
  const cellGroup = table.scenegraph.getCell(i, row);
49099
49123
  const chartNode = cellGroup?.getChildren()?.[0];
49100
- chartNode.addUpdateShapeAndBoundsTag();
49101
49124
  if (chartInstanceListRowByRowDirection[row][i]) ;
49102
49125
  else if (isValid$1(chartNode)) {
49126
+ chartNode.addUpdateShapeAndBoundsTag();
49103
49127
  if (chartNode.activeChartInstance) {
49104
49128
  chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance;
49105
49129
  }
@@ -49108,44 +49132,13 @@
49108
49132
  chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance;
49109
49133
  }
49110
49134
  }
49111
- setTimeout(() => {
49135
+ const timer = setTimeout(() => {
49112
49136
  if (chartInstanceListRowByRowDirection[row]?.[i]) {
49113
49137
  const chartDimensionLinkage = table.options.chartDimensionLinkage;
49114
49138
  let isShowTooltip = !isScatter;
49115
49139
  if (!isScatter && typeof chartDimensionLinkage === 'object') {
49116
49140
  isShowTooltip = chartDimensionLinkage.showTooltip ?? true;
49117
- if (i === colEnd && isShowTooltip) {
49118
- const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;
49119
- const { colEnd: colEnd1 } = table.getBodyVisibleColRange(0, -widthLimitToShowTooltipForEdgeColumn);
49120
- if (colEnd1 === colEnd) {
49121
- isShowTooltip = true;
49122
- }
49123
- else {
49124
- const { colEnd: colEnd2 } = table.getBodyVisibleColRange(0, 5);
49125
- if (colEnd2 !== colEnd) {
49126
- isShowTooltip = true;
49127
- }
49128
- else {
49129
- isShowTooltip = false;
49130
- }
49131
- }
49132
- }
49133
- else if (i === colStart && isShowTooltip) {
49134
- const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;
49135
- const { colStart: colStart1 } = table.getBodyVisibleColRange(widthLimitToShowTooltipForEdgeColumn, 0);
49136
- if (colStart1 === colStart) {
49137
- isShowTooltip = true;
49138
- }
49139
- else {
49140
- const { colStart: colStart2 } = table.getBodyVisibleColRange(0, -5);
49141
- if (colStart2 !== colStart) {
49142
- isShowTooltip = true;
49143
- }
49144
- else {
49145
- isShowTooltip = false;
49146
- }
49147
- }
49148
- }
49141
+ isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(i, table);
49149
49142
  }
49150
49143
  if (isScatter) {
49151
49144
  if (table.stateManager.hover.cellPos.col !== i || table.stateManager.hover.cellPos.row !== row) {
@@ -49158,6 +49151,7 @@
49158
49151
  }
49159
49152
  }
49160
49153
  else {
49154
+ const cellBoundry = table.getCellRelativeRect(i, row);
49161
49155
  const bodyBoundryLeft = table.frozenColCount
49162
49156
  ? table.getCellRelativeRect(table.frozenColCount - 1, row).right
49163
49157
  : 0;
@@ -49168,22 +49162,188 @@
49168
49162
  }
49169
49163
  chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {
49170
49164
  tooltip: false,
49171
- showTooltipOption: { x: absolutePositionLeft, y: canvasXY.y, activeType: 'dimension' }
49165
+ showTooltipOption: {
49166
+ x: absolutePositionLeft - cellBoundry.left,
49167
+ y: canvasXY.y - cellBoundry.top,
49168
+ activeType: 'dimension'
49169
+ }
49172
49170
  });
49173
49171
  }
49174
49172
  else {
49175
49173
  chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {
49176
49174
  tooltip: isShowTooltip,
49177
- showTooltipOption: { x: absolutePositionLeft, y: canvasXY.y, activeType: 'dimension' }
49175
+ showTooltipOption: {
49176
+ x: absolutePositionLeft - cellBoundry.left,
49177
+ y: canvasXY.y - cellBoundry.top,
49178
+ activeType: 'dimension'
49179
+ }
49178
49180
  });
49179
49181
  }
49180
49182
  }
49181
49183
  }
49182
49184
  }, 0);
49185
+ delayRunDimensionHoverTimer.push(timer);
49183
49186
  table.scenegraph.updateNextFrame();
49184
49187
  }
49185
49188
  }
49186
- function clearChartInstanceListByRowDirection(row, excludedCol, table) {
49189
+ function generateChartInstanceListByViewRange(datum, table, deactivate = false) {
49190
+ clearDelayRunDimensionHoverTimers();
49191
+ const { rowStart } = table.getBodyVisibleRowRange();
49192
+ let rowEnd = table.getBodyVisibleRowRange().rowEnd;
49193
+ rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);
49194
+ const { colStart } = table.getBodyVisibleColRange();
49195
+ let colEnd = table.getBodyVisibleColRange().colEnd;
49196
+ colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);
49197
+ for (let col = colStart; col <= colEnd; col++) {
49198
+ if (!isValid$1(chartInstanceListColumnByColumnDirection[col])) {
49199
+ chartInstanceListColumnByColumnDirection[col] = {};
49200
+ }
49201
+ for (let i = rowStart; i <= rowEnd; i++) {
49202
+ const cellGroup = table.scenegraph.getCell(col, i);
49203
+ const chartNode = cellGroup?.getChildren()?.[0];
49204
+ if (chartInstanceListColumnByColumnDirection[col][i]) ;
49205
+ else if (isValid$1(chartNode)) {
49206
+ chartNode.addUpdateShapeAndBoundsTag();
49207
+ if (chartNode.activeChartInstance) {
49208
+ chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;
49209
+ }
49210
+ else {
49211
+ if (chartNode.attribute.spec.type === 'pie') {
49212
+ chartNode.activate(table);
49213
+ chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;
49214
+ }
49215
+ }
49216
+ }
49217
+ const timer = setTimeout(() => {
49218
+ if (chartInstanceListColumnByColumnDirection[col]?.[i]) {
49219
+ const chartDimensionLinkage = table.options.chartDimensionLinkage;
49220
+ let isShowTooltip = true;
49221
+ if (typeof chartDimensionLinkage === 'object') {
49222
+ if (deactivate) {
49223
+ chartInstanceListColumnByColumnDirection[col][i].setHovered();
49224
+ chartInstanceListColumnByColumnDirection[col][i].hideTooltip();
49225
+ }
49226
+ else {
49227
+ isShowTooltip = chartDimensionLinkage.showTooltip ?? true;
49228
+ isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table);
49229
+ isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(col, table);
49230
+ chartInstanceListColumnByColumnDirection[col][i].setHovered(datum);
49231
+ isShowTooltip &&
49232
+ chartInstanceListColumnByColumnDirection[col][i].showTooltip(datum, {
49233
+ activeType: 'mark'
49234
+ });
49235
+ }
49236
+ }
49237
+ }
49238
+ }, 0);
49239
+ delayRunDimensionHoverTimer.push(timer);
49240
+ table.scenegraph.updateNextFrame();
49241
+ }
49242
+ }
49243
+ }
49244
+ function checkIsShowTooltipForEdgeRow(row, table) {
49245
+ let isShowTooltip = true;
49246
+ const { rowStart } = table.getBodyVisibleRowRange();
49247
+ let rowEnd = table.getBodyVisibleRowRange().rowEnd;
49248
+ rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);
49249
+ const chartDimensionLinkage = table.options.chartDimensionLinkage;
49250
+ if (row === rowEnd && isShowTooltip) {
49251
+ const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;
49252
+ const { rowEnd: rowEnd1 } = table.getBodyVisibleRowRange(0, -heightLimitToShowTooltipForEdgeRow);
49253
+ if (rowEnd1 === rowEnd) {
49254
+ isShowTooltip = true;
49255
+ }
49256
+ else {
49257
+ const { rowEnd: rowEnd2 } = table.getBodyVisibleRowRange(0, 5);
49258
+ if (rowEnd2 !== rowEnd) {
49259
+ isShowTooltip = true;
49260
+ }
49261
+ else {
49262
+ isShowTooltip = false;
49263
+ }
49264
+ }
49265
+ }
49266
+ else if (row === rowStart && isShowTooltip) {
49267
+ const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;
49268
+ const { rowStart: rowStart1 } = table.getBodyVisibleRowRange(heightLimitToShowTooltipForEdgeRow, 0);
49269
+ if (rowStart1 === rowStart) {
49270
+ isShowTooltip = true;
49271
+ }
49272
+ else {
49273
+ const { rowStart: rowStart2 } = table.getBodyVisibleRowRange(0, -5);
49274
+ if (rowStart2 !== rowStart) {
49275
+ isShowTooltip = true;
49276
+ }
49277
+ else {
49278
+ isShowTooltip = false;
49279
+ }
49280
+ }
49281
+ }
49282
+ return isShowTooltip;
49283
+ }
49284
+ function checkIsShowTooltipForEdgeColumn(col, table) {
49285
+ let isShowTooltip = true;
49286
+ const { colStart } = table.getBodyVisibleColRange();
49287
+ let colEnd = table.getBodyVisibleColRange().colEnd;
49288
+ colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);
49289
+ const chartDimensionLinkage = table.options.chartDimensionLinkage;
49290
+ if (col === colEnd && isShowTooltip) {
49291
+ const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;
49292
+ const { colEnd: colEnd1 } = table.getBodyVisibleColRange(0, -widthLimitToShowTooltipForEdgeColumn);
49293
+ if (colEnd1 === colEnd) {
49294
+ isShowTooltip = true;
49295
+ }
49296
+ else {
49297
+ const { colEnd: colEnd2 } = table.getBodyVisibleColRange(0, 5);
49298
+ if (colEnd2 !== colEnd) {
49299
+ isShowTooltip = true;
49300
+ }
49301
+ else {
49302
+ isShowTooltip = false;
49303
+ }
49304
+ }
49305
+ }
49306
+ else if (col === colStart && isShowTooltip) {
49307
+ const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;
49308
+ const { colStart: colStart1 } = table.getBodyVisibleColRange(widthLimitToShowTooltipForEdgeColumn, 0);
49309
+ if (colStart1 === colStart) {
49310
+ isShowTooltip = true;
49311
+ }
49312
+ else {
49313
+ const { colStart: colStart2 } = table.getBodyVisibleColRange(0, -5);
49314
+ if (colStart2 !== colStart) {
49315
+ isShowTooltip = true;
49316
+ }
49317
+ else {
49318
+ isShowTooltip = false;
49319
+ }
49320
+ }
49321
+ }
49322
+ return isShowTooltip;
49323
+ }
49324
+ function clearChartInstanceListByColumnDirection(col, excludedRow, table, forceRelease = false) {
49325
+ if (isValid$1(chartInstanceListColumnByColumnDirection[col])) {
49326
+ for (const i in chartInstanceListColumnByColumnDirection[col]) {
49327
+ if (isValid$1(excludedRow) && Number(i) === excludedRow) {
49328
+ continue;
49329
+ }
49330
+ const cellGroup = table.scenegraph.getCell(col, Number(i));
49331
+ const chartNode = cellGroup?.getChildren()?.[0];
49332
+ if (isValid$1(chartNode)) {
49333
+ chartNode.addUpdateShapeAndBoundsTag();
49334
+ chartNode.deactivate(table, {
49335
+ forceRelease: forceRelease,
49336
+ releaseChartInstance: true,
49337
+ releaseColumnChartInstance: false,
49338
+ releaseRowChartInstance: false
49339
+ });
49340
+ chartInstanceListColumnByColumnDirection[col][i] = null;
49341
+ }
49342
+ }
49343
+ delete chartInstanceListColumnByColumnDirection[col];
49344
+ }
49345
+ }
49346
+ function clearChartInstanceListByRowDirection(row, excludedCol, table, forceRelease = false) {
49187
49347
  if (isValid$1(chartInstanceListRowByRowDirection[row])) {
49188
49348
  for (const i in chartInstanceListRowByRowDirection[row]) {
49189
49349
  if (isValid$1(excludedCol) && Number(i) === excludedCol) {
@@ -49191,9 +49351,10 @@
49191
49351
  }
49192
49352
  const cellGroup = table.scenegraph.getCell(Number(i), row);
49193
49353
  const chartNode = cellGroup?.getChildren()?.[0];
49194
- chartNode.addUpdateShapeAndBoundsTag();
49195
49354
  if (isValid$1(chartNode)) {
49355
+ chartNode.addUpdateShapeAndBoundsTag();
49196
49356
  chartNode.deactivate(table, {
49357
+ forceRelease: forceRelease,
49197
49358
  releaseChartInstance: true,
49198
49359
  releaseColumnChartInstance: false,
49199
49360
  releaseRowChartInstance: false
@@ -49204,6 +49365,56 @@
49204
49365
  }
49205
49366
  delete chartInstanceListRowByRowDirection[row];
49206
49367
  }
49368
+ function clearDelayRunDimensionHoverTimers() {
49369
+ for (const timer of delayRunDimensionHoverTimer) {
49370
+ clearTimeout(timer);
49371
+ }
49372
+ delayRunDimensionHoverTimer.length = 0;
49373
+ }
49374
+ function clearAllChartInstanceList(table, forceRelease = false) {
49375
+ clearDelayRunDimensionHoverTimers();
49376
+ for (const col in chartInstanceListColumnByColumnDirection) {
49377
+ clearChartInstanceListByColumnDirection(Number(col), undefined, table, forceRelease);
49378
+ }
49379
+ for (const row in chartInstanceListRowByRowDirection) {
49380
+ clearChartInstanceListByRowDirection(Number(row), undefined, table, forceRelease);
49381
+ }
49382
+ }
49383
+ function disableDimensionHoverToAllChartInstances() {
49384
+ clearDelayRunDimensionHoverTimers();
49385
+ for (const col in chartInstanceListColumnByColumnDirection) {
49386
+ for (const row in chartInstanceListColumnByColumnDirection[col]) {
49387
+ chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(true);
49388
+ chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(true);
49389
+ chartInstanceListColumnByColumnDirection[col][row].disableTooltip(true);
49390
+ chartInstanceListColumnByColumnDirection[col][row].hideTooltip();
49391
+ }
49392
+ }
49393
+ for (const row in chartInstanceListRowByRowDirection) {
49394
+ for (const col in chartInstanceListRowByRowDirection[row]) {
49395
+ chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(true);
49396
+ chartInstanceListRowByRowDirection[row][col].disableCrossHair(true);
49397
+ chartInstanceListRowByRowDirection[row][col].disableTooltip(true);
49398
+ chartInstanceListRowByRowDirection[row][col].hideTooltip();
49399
+ }
49400
+ }
49401
+ }
49402
+ function enableDimensionHoverToAllChartInstances() {
49403
+ for (const col in chartInstanceListColumnByColumnDirection) {
49404
+ for (const row in chartInstanceListColumnByColumnDirection[col]) {
49405
+ chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(false);
49406
+ chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(false);
49407
+ chartInstanceListColumnByColumnDirection[col][row].disableTooltip(false);
49408
+ }
49409
+ }
49410
+ for (const row in chartInstanceListRowByRowDirection) {
49411
+ for (const col in chartInstanceListRowByRowDirection[row]) {
49412
+ chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(false);
49413
+ chartInstanceListRowByRowDirection[row][col].disableCrossHair(false);
49414
+ chartInstanceListRowByRowDirection[row][col].disableTooltip(false);
49415
+ }
49416
+ }
49417
+ }
49207
49418
 
49208
49419
  function isValidAlignDomain(domain) {
49209
49420
  return domain.length === 2 && isValidNumber$1(domain[0]) && isValidNumber$1(domain[1]) && domain[1] >= domain[0];
@@ -50163,6 +50374,7 @@
50163
50374
  type = 'chart';
50164
50375
  chartInstance;
50165
50376
  activeChartInstance;
50377
+ activeChartInstanceLastViewBox = null;
50166
50378
  activeChartInstanceHoverOnMark = null;
50167
50379
  justShowMarkTooltip = undefined;
50168
50380
  justShowMarkTooltipTimer = Date.now();
@@ -50207,7 +50419,6 @@
50207
50419
  y1: y1 - table.scrollTop,
50208
50420
  y2: y2 - table.scrollTop
50209
50421
  });
50210
- this.activeChartInstance?.release();
50211
50422
  this.attribute.ClassType.globalConfig.uniqueTooltip = false;
50212
50423
  this.activeChartInstance = new this.attribute.ClassType(this.attribute.spec, merge({}, this.attribute.tableChartOption, {
50213
50424
  renderCanvas: this.attribute.canvas,
@@ -50260,7 +50471,7 @@
50260
50471
  }
50261
50472
  }
50262
50473
  },
50263
- componentShowContent: table.options.chartDimensionLinkage &&
50474
+ componentShowContent: table.options.chartDimensionLinkage?.showTooltip &&
50264
50475
  this.attribute.spec.type !== 'scatter'
50265
50476
  ? {
50266
50477
  tooltip: {
@@ -50281,20 +50492,49 @@
50281
50492
  table.internalProps.layoutMap?.updateDataStateToActiveChartInstance?.(this.activeChartInstance);
50282
50493
  this.activeChartInstance.on('click', (params) => {
50283
50494
  if (this.attribute.spec.select?.enable === false) {
50284
- table.scenegraph.updateChartState(null);
50495
+ table.scenegraph.updateChartState(null, undefined);
50285
50496
  }
50286
50497
  else if (Chart.temp) {
50287
- table.scenegraph.updateChartState(params?.datum);
50498
+ table.scenegraph.updateChartState(params?.datum, 'click');
50499
+ }
50500
+ });
50501
+ let brushChangeThrottle;
50502
+ if (table.options.chartDimensionLinkage?.listenBrushChange) {
50503
+ brushChangeThrottle = cancellableThrottle(table.scenegraph.updateChartState.bind(table.scenegraph), table.options.chartDimensionLinkage?.brushChangeDelay ?? 100);
50504
+ this.activeChartInstance.on('brushChange', (params) => {
50505
+ brushChangeThrottle.throttled(params?.value?.inBrushData, 'brush');
50506
+ });
50507
+ }
50508
+ this.activeChartInstance.on('brushStart', (params) => {
50509
+ const brushingChartInstance = getBrushingChartInstance();
50510
+ if (brushingChartInstance !== this.activeChartInstance) {
50511
+ if (brushingChartInstance) {
50512
+ brushingChartInstance.getChart().getComponentsByKey('brush')[0].clearBrushStateAndMask();
50513
+ }
50514
+ setBrushingChartInstance(this.activeChartInstance, col, row);
50288
50515
  }
50289
50516
  });
50290
50517
  this.activeChartInstance.on('brushEnd', (params) => {
50291
- table.scenegraph.updateChartState(params?.value?.inBrushData);
50518
+ brushChangeThrottle?.cancel();
50519
+ table.scenegraph.updateChartState(params?.value?.inBrushData, 'brush');
50292
50520
  Chart.temp = 0;
50293
50521
  setTimeout(() => {
50294
50522
  Chart.temp = 1;
50295
50523
  }, 0);
50296
50524
  });
50297
- if (table.options.chartDimensionLinkage) {
50525
+ if (table.options.chartDimensionLinkage?.showTooltip) {
50526
+ if (this.attribute.spec.type === 'pie') {
50527
+ this.activeChartInstance.on('pointerover', { markName: 'pie' }, (params) => {
50528
+ const categoryField = this.attribute.spec.categoryField;
50529
+ const datum = { [categoryField]: params?.datum?.[categoryField] };
50530
+ generateChartInstanceListByViewRange(datum, table, false);
50531
+ });
50532
+ this.activeChartInstance.on('pointerout', { markName: 'pie' }, (params) => {
50533
+ const categoryField = this.attribute.spec.categoryField;
50534
+ const datum = { [categoryField]: params?.datum?.[categoryField] };
50535
+ generateChartInstanceListByViewRange(datum, table, true);
50536
+ });
50537
+ }
50298
50538
  this.activeChartInstance.on('dimensionHover', (params) => {
50299
50539
  const dimensionInfo = params?.dimensionInfo[0];
50300
50540
  const canvasXY = params?.event?.canvas;
@@ -50432,21 +50672,23 @@
50432
50672
  table._bindChartEvent?.(this.activeChartInstance);
50433
50673
  }
50434
50674
  static temp = 1;
50435
- deactivate(table, { releaseChartInstance = true, releaseColumnChartInstance = true, releaseRowChartInstance = true } = {}) {
50675
+ deactivate(table, { forceRelease = false, releaseChartInstance = true, releaseColumnChartInstance = true, releaseRowChartInstance = true, releaseAllChartInstance = false } = {}) {
50436
50676
  this.activeChartInstanceHoverOnMark = null;
50437
50677
  this.justShowMarkTooltip = undefined;
50438
50678
  this.justShowMarkTooltipTimer = Date.now();
50439
50679
  clearTimeout(this.delayRunDimensionHoverTimer);
50440
50680
  this.delayRunDimensionHoverTimer = undefined;
50441
50681
  if (releaseChartInstance) {
50442
- this.activeChartInstance?.updateViewBox({
50443
- x1: -1000,
50444
- x2: -800,
50445
- y1: -1000,
50446
- y2: -800
50447
- }, false, false);
50448
- this.activeChartInstance?.release();
50449
- this.activeChartInstance = null;
50682
+ if (forceRelease || !getBrushingChartInstance() || getBrushingChartInstance() !== this.activeChartInstance) {
50683
+ this.activeChartInstance?.updateViewBox({
50684
+ x1: -1000,
50685
+ x2: -800,
50686
+ y1: -1000,
50687
+ y2: -800
50688
+ }, false, false);
50689
+ this.activeChartInstance?.release();
50690
+ this.activeChartInstance = null;
50691
+ }
50450
50692
  const { col, row } = this.parent;
50451
50693
  table.internalProps.layoutMap.isAxisCell(table.rowHeaderLevelCount - 1, row) &&
50452
50694
  table.scenegraph.getCell(table.rowHeaderLevelCount - 1, row).firstChild?.hideLabelHoverOnAxis?.();
@@ -50466,11 +50708,16 @@
50466
50708
  table.scenegraph.getCell(table.rowHeaderLevelCount - 1, row).firstChild?.hideLabelHoverOnAxis?.();
50467
50709
  }
50468
50710
  }
50469
- if (releaseColumnChartInstance) {
50470
- clearChartInstanceListByColumnDirection(this.parent.col, this.attribute.spec.type === 'scatter' ? this.parent.row : undefined, table);
50711
+ if (releaseAllChartInstance) {
50712
+ clearAllChartInstanceList(table, forceRelease);
50471
50713
  }
50472
- if (releaseRowChartInstance) {
50473
- clearChartInstanceListByRowDirection(this.parent.row, this.attribute.spec.type === 'scatter' ? this.parent.col : undefined, table);
50714
+ else {
50715
+ if (releaseColumnChartInstance) {
50716
+ clearChartInstanceListByColumnDirection(this.parent.col, this.attribute.spec.type === 'scatter' ? this.parent.row : undefined, table, forceRelease);
50717
+ }
50718
+ if (releaseRowChartInstance) {
50719
+ clearChartInstanceListByRowDirection(this.parent.row, this.attribute.spec.type === 'scatter' ? this.parent.col : undefined, table, forceRelease);
50720
+ }
50474
50721
  }
50475
50722
  }
50476
50723
  updateData(data) {
@@ -50481,12 +50728,19 @@
50481
50728
  const padding = this.attribute.cellPadding;
50482
50729
  const table = this.stage.table;
50483
50730
  const { x1, y1, x2, y2 } = cellGroup.globalAABBBounds;
50484
- return {
50731
+ const viewBox = {
50485
50732
  x1: Math.ceil(x1 + padding[3] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),
50486
50733
  x2: Math.ceil(x1 + cellGroup.attribute.width - padding[1] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),
50487
50734
  y1: Math.ceil(y1 + padding[0] + table.scrollTop + (table.options.viewBox?.y1 ?? 0)),
50488
50735
  y2: Math.ceil(y1 + cellGroup.attribute.height - padding[2] + table.scrollTop + (table.options.viewBox?.y1 ?? 0))
50489
50736
  };
50737
+ if (this.activeChartInstance) {
50738
+ this.activeChartInstanceLastViewBox = viewBox;
50739
+ }
50740
+ else {
50741
+ this.activeChartInstanceLastViewBox = null;
50742
+ }
50743
+ return viewBox;
50490
50744
  }
50491
50745
  }
50492
50746
  function getTableBounds(col, row, table) {
@@ -50755,7 +51009,6 @@
50755
51009
  drawShape(chart, context, x, y, drawContext, params, fillCb, strokeCb) {
50756
51010
  const groupAttribute = getTheme(chart, params?.theme).group;
50757
51011
  const { dataId, data, spec } = chart.attribute;
50758
- chart.getViewBox();
50759
51012
  const { width = groupAttribute.width, height = groupAttribute.height } = chart.attribute;
50760
51013
  const { table } = chart.getRootNode();
50761
51014
  const { cacheCanvas, activeChartInstance } = chart;
@@ -50778,13 +51031,20 @@
50778
51031
  activeChartInstance.updateSpecSync(spec, false, { reuse: false, morph: false });
50779
51032
  }
50780
51033
  }
51034
+ const lastViewBox = chart.activeChartInstanceLastViewBox;
50781
51035
  const viewBox = chart.getViewBox();
50782
- activeChartInstance.updateViewBox({
50783
- x1: 0,
50784
- x2: viewBox.x2 - viewBox.x1,
50785
- y1: 0,
50786
- y2: viewBox.y2 - viewBox.y1
50787
- }, false, false);
51036
+ if (!(lastViewBox &&
51037
+ viewBox.x1 === lastViewBox.x1 &&
51038
+ viewBox.x2 === lastViewBox.x2 &&
51039
+ viewBox.y1 === lastViewBox.y1 &&
51040
+ viewBox.y2 === lastViewBox.y2)) {
51041
+ activeChartInstance.updateViewBox({
51042
+ x1: 0,
51043
+ x2: viewBox.x2 - viewBox.x1,
51044
+ y1: 0,
51045
+ y2: viewBox.y2 - viewBox.y1
51046
+ }, false, false);
51047
+ }
50788
51048
  const chartStage = activeChartInstance.getStage();
50789
51049
  chartStage.needRender = true;
50790
51050
  const matrix = chart.globalTransMatrix.clone();
@@ -56900,9 +57160,10 @@
56900
57160
  updateTableAxes(scenegraph.rightFrozenGroup, scenegraph.table);
56901
57161
  updateTableAxes(scenegraph.bottomFrozenGroup, scenegraph.table);
56902
57162
  }
56903
- function updateChartState(scenegraph, datum) {
57163
+ function updateChartState(scenegraph, datum, selectedDataMode) {
56904
57164
  const table = scenegraph.table;
56905
57165
  if (table.isPivotChart()) {
57166
+ table._selectedDataMode = selectedDataMode;
56906
57167
  const preSelectItemsCount = table._selectedDataItemsInChart.length;
56907
57168
  if ((datum === null || datum === undefined || datum?.length === 0 || Object.keys(datum).length === 0) &&
56908
57169
  preSelectItemsCount === 0) {
@@ -58169,38 +58430,70 @@
58169
58430
  resetResidentHoverIcon(col, row) {
58170
58431
  resetResidentHoverIcon(col, row, this);
58171
58432
  }
58172
- deactivateChart(col, row) {
58433
+ deactivateChart(col, row, forceRelease = false) {
58173
58434
  if (col === -1 || row === -1) {
58435
+ if (forceRelease) {
58436
+ const brushingChartInstanceCellPos = getBrushingChartInstanceCellPos();
58437
+ const cellGroup = this.getCell(brushingChartInstanceCellPos.col, brushingChartInstanceCellPos.row);
58438
+ if (cellGroup?.firstChild?.deactivate) {
58439
+ clearBrushingChartInstance();
58440
+ cellGroup?.firstChild?.deactivate?.(this.table, {
58441
+ forceRelease: true,
58442
+ releaseChartInstance: true,
58443
+ releaseColumnChartInstance: true,
58444
+ releaseRowChartInstance: true,
58445
+ releaseAllChartInstance: true
58446
+ });
58447
+ }
58448
+ }
58174
58449
  return;
58175
58450
  }
58176
58451
  const cellGroup = this.getCell(col, row);
58177
58452
  if (cellGroup?.firstChild?.deactivate) {
58453
+ if (forceRelease) {
58454
+ clearBrushingChartInstance();
58455
+ cellGroup?.firstChild?.deactivate?.(this.table, {
58456
+ forceRelease: true,
58457
+ releaseChartInstance: true,
58458
+ releaseColumnChartInstance: true,
58459
+ releaseRowChartInstance: true,
58460
+ releaseAllChartInstance: true
58461
+ });
58462
+ return;
58463
+ }
58178
58464
  const chartNode = cellGroup?.firstChild;
58179
58465
  const chartType = chartNode.attribute.spec.type;
58180
- cellGroup?.firstChild?.deactivate?.(this.table, this.table.options.chartDimensionLinkage
58466
+ cellGroup?.firstChild?.deactivate?.(this.table, this.table.options.chartDimensionLinkage?.showTooltip
58181
58467
  ? {
58182
- releaseChartInstance: chartType === 'scatter'
58183
- ? (col !== this.table.stateManager.hover.cellPos.col &&
58184
- row !== this.table.stateManager.hover.cellPos.row) ||
58468
+ releaseChartInstance: chartType === 'pie'
58469
+ ? false
58470
+ : chartType === 'scatter'
58471
+ ? (col !== this.table.stateManager.hover.cellPos.col &&
58472
+ row !== this.table.stateManager.hover.cellPos.row) ||
58473
+ this.table.stateManager.hover.cellPos.row < this.table.frozenRowCount ||
58474
+ this.table.stateManager.hover.cellPos.row >
58475
+ this.table.rowCount - 1 - this.table.bottomFrozenRowCount ||
58476
+ this.table.stateManager.hover.cellPos.col < this.table.frozenColCount ||
58477
+ this.table.stateManager.hover.cellPos.col > this.table.colCount - 1 - this.table.rightFrozenColCount
58478
+ : this.table.options.indicatorsAsCol
58479
+ ? row !== this.table.stateManager.hover.cellPos.row ||
58480
+ this.table.stateManager.hover.cellPos.col < this.table.frozenColCount ||
58481
+ this.table.stateManager.hover.cellPos.col > this.table.colCount - 1 - this.table.rightFrozenColCount
58482
+ : col !== this.table.stateManager.hover.cellPos.col ||
58483
+ this.table.stateManager.hover.cellPos.row < this.table.frozenRowCount ||
58484
+ this.table.stateManager.hover.cellPos.row >
58485
+ this.table.rowCount - 1 - this.table.bottomFrozenRowCount,
58486
+ releaseColumnChartInstance: chartType === 'pie'
58487
+ ? false
58488
+ : col !== this.table.stateManager.hover.cellPos.col ||
58185
58489
  this.table.stateManager.hover.cellPos.row < this.table.frozenRowCount ||
58186
58490
  this.table.stateManager.hover.cellPos.row >
58187
- this.table.rowCount - 1 - this.table.bottomFrozenRowCount ||
58491
+ this.table.rowCount - 1 - this.table.bottomFrozenRowCount,
58492
+ releaseRowChartInstance: chartType === 'pie'
58493
+ ? false
58494
+ : row !== this.table.stateManager.hover.cellPos.row ||
58188
58495
  this.table.stateManager.hover.cellPos.col < this.table.frozenColCount ||
58189
58496
  this.table.stateManager.hover.cellPos.col > this.table.colCount - 1 - this.table.rightFrozenColCount
58190
- : this.table.options.indicatorsAsCol
58191
- ? row !== this.table.stateManager.hover.cellPos.row ||
58192
- this.table.stateManager.hover.cellPos.col < this.table.frozenColCount ||
58193
- this.table.stateManager.hover.cellPos.col > this.table.colCount - 1 - this.table.rightFrozenColCount
58194
- : col !== this.table.stateManager.hover.cellPos.col ||
58195
- this.table.stateManager.hover.cellPos.row < this.table.frozenRowCount ||
58196
- this.table.stateManager.hover.cellPos.row >
58197
- this.table.rowCount - 1 - this.table.bottomFrozenRowCount,
58198
- releaseColumnChartInstance: col !== this.table.stateManager.hover.cellPos.col ||
58199
- this.table.stateManager.hover.cellPos.row < this.table.frozenRowCount ||
58200
- this.table.stateManager.hover.cellPos.row > this.table.rowCount - 1 - this.table.bottomFrozenRowCount,
58201
- releaseRowChartInstance: row !== this.table.stateManager.hover.cellPos.row ||
58202
- this.table.stateManager.hover.cellPos.col < this.table.frozenColCount ||
58203
- this.table.stateManager.hover.cellPos.col > this.table.colCount - 1 - this.table.rightFrozenColCount
58204
58497
  }
58205
58498
  : undefined);
58206
58499
  }
@@ -58257,8 +58550,17 @@
58257
58550
  updateChartSizeForResizeRowHeight(row) {
58258
58551
  updateChartSizeForResizeRowHeight(this, row);
58259
58552
  }
58260
- updateChartState(datum) {
58261
- this.table.isPivotChart() && updateChartState(this, datum);
58553
+ updateChartState(datum, selectedDataMode) {
58554
+ if (this.table.isPivotChart()) {
58555
+ if (datum === null || datum === undefined || datum?.length === 0 || Object.keys(datum).length === 0) {
58556
+ const brushingChartInstance = getBrushingChartInstance();
58557
+ if (brushingChartInstance) {
58558
+ brushingChartInstance.getChart().getComponentsByKey('brush')[0].clearBrushStateAndMask();
58559
+ }
58560
+ this.table.options.chartDimensionLinkage?.clearChartState?.();
58561
+ }
58562
+ updateChartState(this, datum, selectedDataMode);
58563
+ }
58262
58564
  }
58263
58565
  updateCheckboxCellState(col, row, checked) {
58264
58566
  if (this.table.transpose) {
@@ -63545,7 +63847,7 @@
63545
63847
  return;
63546
63848
  }
63547
63849
  if (table.isPivotChart() && eventArgsSet?.eventArgs?.target.type !== 'chart') {
63548
- table.scenegraph.updateChartState(null);
63850
+ table.scenegraph.updateChartState(null, undefined);
63549
63851
  }
63550
63852
  if (eventArgsSet.eventArgs?.target !== stateManager.residentHoverIcon?.icon) {
63551
63853
  stateManager.hideMenu();
@@ -63614,7 +63916,7 @@
63614
63916
  else {
63615
63917
  if (!eventManager.checkCellFillhandle(eventArgsSet) &&
63616
63918
  (eventManager.checkColumnResize(eventArgsSet, true) || eventManager.checkRowResize(eventArgsSet, true))) {
63617
- table.scenegraph.updateChartState(null);
63919
+ table.scenegraph.updateChartState(null, undefined);
63618
63920
  stateManager.updateInteractionState(InteractionState.grabing);
63619
63921
  return;
63620
63922
  }
@@ -63859,7 +64161,7 @@
63859
64161
  !eventManager.checkCellFillhandle(eventArgsSet) &&
63860
64162
  !stateManager.columnResize.resizing &&
63861
64163
  eventManager.checkColumnResize(eventArgsSet, true)) {
63862
- table.scenegraph.updateChartState(null);
64164
+ table.scenegraph.updateChartState(null, undefined);
63863
64165
  stateManager.updateInteractionState(InteractionState.grabing);
63864
64166
  const { eventArgs } = eventArgsSet;
63865
64167
  if (!eventArgs?.targetCell) {
@@ -63906,7 +64208,7 @@
63906
64208
  }
63907
64209
  stateManager.endSelectCells(true, isHasSelected);
63908
64210
  stateManager.updateCursor();
63909
- table.scenegraph.updateChartState(null);
64211
+ table.scenegraph.updateChartState(null, undefined);
63910
64212
  }
63911
64213
  else if (table.eventManager.isDraging && stateManager.isSelecting()) {
63912
64214
  stateManager.endSelectCells();
@@ -64097,6 +64399,10 @@
64097
64399
  const legend = e.path.find(node => node.name === 'legend');
64098
64400
  if (!legend) {
64099
64401
  table.editorManager?.completeEdit();
64402
+ const { cellPos } = table.stateManager.hover;
64403
+ const prevHoverCellCol = cellPos.col;
64404
+ const prevHoverCellRow = cellPos.row;
64405
+ table.scenegraph.deactivateChart(prevHoverCellCol, prevHoverCellRow, true);
64100
64406
  if (table.eventManager._enableTableScroll) {
64101
64407
  handleWhell(e, stateManager);
64102
64408
  }
@@ -65576,7 +65882,7 @@
65576
65882
  }
65577
65883
  const shiftMultiSelect = this.table.keyboardOptions?.shiftMultiSelect ?? true;
65578
65884
  const ctrlMultiSelect = this.table.keyboardOptions?.ctrlMultiSelect ?? true;
65579
- this.table.stateManager.updateSelectPos(this.table.stateManager.select.selectInline === 'row' ? this.table.colCount - 1 : eventArgs.col, this.table.stateManager.select.selectInline === 'col' ? this.table.rowCount - 1 : eventArgs.row, eventArgs.event.shiftKey && shiftMultiSelect, (eventArgs.event.ctrlKey || eventArgs.event.metaKey) && ctrlMultiSelect, false, isSelectMoving ? false : (this.table.options.select?.makeSelectCellVisible ?? true));
65885
+ this.table.stateManager.updateSelectPos(this.table.stateManager.select.selectInline === 'row' ? this.table.colCount - 1 : eventArgs.col, this.table.stateManager.select.selectInline === 'col' ? this.table.rowCount - 1 : eventArgs.row, eventArgs.event.shiftKey && shiftMultiSelect, (eventArgs.event.ctrlKey || eventArgs.event.metaKey) && ctrlMultiSelect, false, isSelectMoving ? false : this.table.options.select?.makeSelectCellVisible ?? true);
65580
65886
  return true;
65581
65887
  }
65582
65888
  return false;
@@ -70169,7 +70475,7 @@
70169
70475
  return TABLE_EVENT_TYPE;
70170
70476
  }
70171
70477
  options;
70172
- version = "1.22.11-alpha.4";
70478
+ version = "1.22.11-alpha.6";
70173
70479
  pagination;
70174
70480
  id = `VTable${Date.now()}`;
70175
70481
  headerStyleCache;
@@ -87247,53 +87553,93 @@
87247
87553
  return null;
87248
87554
  }
87249
87555
  _generateChartState() {
87556
+ const select_filter = (datum) => {
87557
+ if (this._table._selectedDataItemsInChart.length >= 1) {
87558
+ const match = this._table._selectedDataItemsInChart.find(item => {
87559
+ for (const itemKey in item) {
87560
+ if (typeof item[itemKey] !== 'object' && item[itemKey] !== datum[itemKey]) {
87561
+ return false;
87562
+ }
87563
+ }
87564
+ return true;
87565
+ });
87566
+ return !!match;
87567
+ }
87568
+ else if (this._table._selectedDimensionInChart?.length) {
87569
+ const match = this._table._selectedDimensionInChart.every(item => {
87570
+ if (typeof item.value !== 'object' && datum[item.key] !== item.value) {
87571
+ return false;
87572
+ }
87573
+ return true;
87574
+ });
87575
+ return !!match;
87576
+ }
87577
+ return false;
87578
+ };
87579
+ const selected_reverse = (datum) => {
87580
+ if (this._table._selectedDataItemsInChart.length >= 1) {
87581
+ const match = this._table._selectedDataItemsInChart.find(item => {
87582
+ for (const itemKey in item) {
87583
+ if (typeof item[itemKey] !== 'object' && item[itemKey] !== datum[itemKey]) {
87584
+ return false;
87585
+ }
87586
+ }
87587
+ return true;
87588
+ });
87589
+ return !match;
87590
+ }
87591
+ else if (this._table._selectedDimensionInChart?.length) {
87592
+ const match = this._table._selectedDimensionInChart.every(item => {
87593
+ if (typeof item.value !== 'object' && datum[item.key] !== item.value) {
87594
+ return false;
87595
+ }
87596
+ return true;
87597
+ });
87598
+ return !match;
87599
+ }
87600
+ return false;
87601
+ };
87250
87602
  const state = {
87251
87603
  vtable_selected: {
87252
87604
  filter: (datum) => {
87253
- if (this._table._selectedDataItemsInChart.length >= 1) {
87254
- const match = this._table._selectedDataItemsInChart.find(item => {
87255
- for (const itemKey in item) {
87256
- if (typeof item[itemKey] !== 'object' && item[itemKey] !== datum[itemKey]) {
87257
- return false;
87258
- }
87259
- }
87260
- return true;
87261
- });
87262
- return !!match;
87605
+ if (this._table.options.chartDimensionLinkage?.selectedStateFilter) {
87606
+ return this._table.options.chartDimensionLinkage.selectedStateFilter(datum);
87263
87607
  }
87264
- else if (this._table._selectedDimensionInChart?.length) {
87265
- const match = this._table._selectedDimensionInChart.every(item => {
87266
- if (typeof item.value !== 'object' && datum[item.key] !== item.value) {
87267
- return false;
87268
- }
87269
- return true;
87270
- });
87271
- return !!match;
87608
+ if (this._table._selectedDataMode === 'click') {
87609
+ return select_filter(datum);
87272
87610
  }
87273
87611
  return false;
87274
87612
  }
87275
87613
  },
87276
87614
  vtable_selected_reverse: {
87277
87615
  filter: (datum) => {
87278
- if (this._table._selectedDataItemsInChart.length >= 1) {
87279
- const match = this._table._selectedDataItemsInChart.find(item => {
87280
- for (const itemKey in item) {
87281
- if (typeof item[itemKey] !== 'object' && item[itemKey] !== datum[itemKey]) {
87282
- return false;
87283
- }
87284
- }
87285
- return true;
87286
- });
87287
- return !match;
87616
+ if (this._table.options.chartDimensionLinkage?.selectedReverseStateFilter) {
87617
+ return this._table.options.chartDimensionLinkage.selectedReverseStateFilter(datum);
87288
87618
  }
87289
- else if (this._table._selectedDimensionInChart?.length) {
87290
- const match = this._table._selectedDimensionInChart.every(item => {
87291
- if (typeof item.value !== 'object' && datum[item.key] !== item.value) {
87292
- return false;
87293
- }
87294
- return true;
87295
- });
87296
- return !match;
87619
+ if (this._table._selectedDataMode === 'click') {
87620
+ return selected_reverse(datum);
87621
+ }
87622
+ return false;
87623
+ }
87624
+ },
87625
+ inBrush: {
87626
+ filter: (datum) => {
87627
+ if (this._table.options.chartDimensionLinkage?.inBrushStateFilter) {
87628
+ return this._table.options.chartDimensionLinkage.inBrushStateFilter(datum);
87629
+ }
87630
+ if (this._table._selectedDataMode === 'brush') {
87631
+ return select_filter(datum);
87632
+ }
87633
+ return false;
87634
+ }
87635
+ },
87636
+ outOfBrush: {
87637
+ filter: (datum) => {
87638
+ if (this._table.options.chartDimensionLinkage?.outOfBrushStateFilter) {
87639
+ return this._table.options.chartDimensionLinkage.outOfBrushStateFilter(datum);
87640
+ }
87641
+ if (this._table._selectedDataMode === 'brush') {
87642
+ return selected_reverse(datum);
87297
87643
  }
87298
87644
  return false;
87299
87645
  }
@@ -91565,6 +91911,7 @@
91565
91911
  pivotSortState;
91566
91912
  dataset;
91567
91913
  _selectedDataItemsInChart = [];
91914
+ _selectedDataMode = 'click';
91568
91915
  _selectedDimensionInChart = [];
91569
91916
  _chartEventMap = {};
91570
91917
  _axes;
@@ -92754,6 +93101,12 @@
92754
93101
  const headerNodes = layoutMap.getCellHeaderPathsWithTreeNode(col, row);
92755
93102
  return headerNodes;
92756
93103
  }
93104
+ disableDimensionHoverToAllChartInstances() {
93105
+ disableDimensionHoverToAllChartInstances();
93106
+ }
93107
+ enableDimensionHoverToAllChartInstances() {
93108
+ enableDimensionHoverToAllChartInstances();
93109
+ }
92757
93110
  }
92758
93111
 
92759
93112
  class Circle extends Circle$1 {
@@ -93315,7 +93668,7 @@
93315
93668
  }
93316
93669
 
93317
93670
  registerForVrender();
93318
- const version = "1.22.11-alpha.4";
93671
+ const version = "1.22.11-alpha.6";
93319
93672
  function getIcons() {
93320
93673
  return get$2();
93321
93674
  }