@visactor/vtable 0.24.2-alpha.2 → 0.24.2-alpha.3

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 (83) hide show
  1. package/cjs/PivotTable.js +69 -27
  2. package/cjs/PivotTable.js.map +1 -1
  3. package/cjs/core/BaseTable.js +4 -38
  4. package/cjs/core/BaseTable.js.map +1 -1
  5. package/cjs/dataset/dataset.d.ts +1 -0
  6. package/cjs/dataset/dataset.js +14 -0
  7. package/cjs/dataset/dataset.js.map +1 -1
  8. package/cjs/dataset/flatDataToObject.d.ts +8 -3
  9. package/cjs/dataset/flatDataToObject.js +39 -8
  10. package/cjs/dataset/flatDataToObject.js.map +1 -1
  11. package/cjs/edit/edit-manager.js +0 -1
  12. package/cjs/edit/edit-manager.js.map +1 -1
  13. package/cjs/event/drill.js +2 -1
  14. package/cjs/event/media-click.js +1 -2
  15. package/cjs/index.d.ts +1 -1
  16. package/cjs/index.js +1 -1
  17. package/cjs/index.js.map +1 -1
  18. package/cjs/layout/pivot-header-layout.d.ts +1 -0
  19. package/cjs/layout/pivot-header-layout.js +16 -4
  20. package/cjs/layout/pivot-header-layout.js.map +1 -1
  21. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +9 -18
  22. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  23. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +3 -3
  24. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  25. package/cjs/scenegraph/group-creater/progress/proxy.js +2 -4
  26. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  27. package/cjs/scenegraph/scenegraph.d.ts +0 -1
  28. package/cjs/scenegraph/scenegraph.js +6 -8
  29. package/cjs/scenegraph/scenegraph.js.map +1 -1
  30. package/cjs/scenegraph/select/update-select-border.js +4 -4
  31. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  32. package/cjs/state/state.js +1 -1
  33. package/cjs/themes/component.js +1 -1
  34. package/cjs/ts-types/pivot-table/dimension/basic-dimension.d.ts +6 -1
  35. package/cjs/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  36. package/cjs/ts-types/pivot-table/indicator/basic-indicator.d.ts +3 -0
  37. package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  38. package/cjs/ts-types/table-engine.d.ts +3 -0
  39. package/cjs/ts-types/table-engine.js.map +1 -1
  40. package/cjs/vrender.js.map +1 -1
  41. package/dist/vtable.js +240 -143
  42. package/dist/vtable.min.js +1 -1
  43. package/es/PivotTable.js +69 -27
  44. package/es/PivotTable.js.map +1 -1
  45. package/es/core/BaseTable.js +5 -37
  46. package/es/core/BaseTable.js.map +1 -1
  47. package/es/dataset/dataset.d.ts +1 -0
  48. package/es/dataset/dataset.js +14 -0
  49. package/es/dataset/dataset.js.map +1 -1
  50. package/es/dataset/flatDataToObject.d.ts +8 -3
  51. package/es/dataset/flatDataToObject.js +38 -8
  52. package/es/dataset/flatDataToObject.js.map +1 -1
  53. package/es/edit/edit-manager.js +0 -1
  54. package/es/edit/edit-manager.js.map +1 -1
  55. package/es/event/drill.js +2 -1
  56. package/es/event/media-click.js +1 -2
  57. package/es/index.d.ts +1 -1
  58. package/es/index.js +1 -1
  59. package/es/index.js.map +1 -1
  60. package/es/layout/pivot-header-layout.d.ts +1 -0
  61. package/es/layout/pivot-header-layout.js +12 -2
  62. package/es/layout/pivot-header-layout.js.map +1 -1
  63. package/es/scenegraph/graphic/contributions/group-contribution-render.js +9 -18
  64. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  65. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +3 -3
  66. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  67. package/es/scenegraph/group-creater/progress/proxy.js +2 -4
  68. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  69. package/es/scenegraph/scenegraph.d.ts +0 -1
  70. package/es/scenegraph/scenegraph.js +6 -8
  71. package/es/scenegraph/scenegraph.js.map +1 -1
  72. package/es/scenegraph/select/update-select-border.js +4 -4
  73. package/es/scenegraph/select/update-select-border.js.map +1 -1
  74. package/es/state/state.js +1 -1
  75. package/es/themes/component.js +1 -1
  76. package/es/ts-types/pivot-table/dimension/basic-dimension.d.ts +6 -1
  77. package/es/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  78. package/es/ts-types/pivot-table/indicator/basic-indicator.d.ts +3 -0
  79. package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  80. package/es/ts-types/table-engine.d.ts +3 -0
  81. package/es/ts-types/table-engine.js.map +1 -1
  82. package/es/vrender.js.map +1 -1
  83. package/package.json +4 -4
package/dist/vtable.js CHANGED
@@ -43493,9 +43493,9 @@
43493
43493
  const isPart = Array.isArray(part);
43494
43494
  const isSplitDraw = Array.isArray(strokeArrayColor) || widthInfo.isSplitDraw;
43495
43495
  context.setStrokeStyle(group, group.attribute, x, y, groupAttribute);
43496
- const { lineDash = groupAttribute.lineDash } = group.attribute;
43496
+ const lineDash = context.getLineDash();
43497
43497
  let isDash = false;
43498
- if (lineDash.length && lineDash.some((dash) => Array.isArray(dash))) {
43498
+ if (lineDash.length) {
43499
43499
  isDash = true;
43500
43500
  }
43501
43501
  context.beginPath();
@@ -43521,9 +43521,6 @@
43521
43521
  context.lineWidth = strokeArrayWidth[0];
43522
43522
  }
43523
43523
  context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;
43524
- if (isDash) {
43525
- context.setLineDash(lineDash[0] ?? []);
43526
- }
43527
43524
  context.stroke();
43528
43525
  context.beginPath();
43529
43526
  context.moveTo(x + width, y);
@@ -43553,9 +43550,6 @@
43553
43550
  context.lineWidth = strokeArrayWidth[1];
43554
43551
  }
43555
43552
  context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;
43556
- if (isDash) {
43557
- context.setLineDash(lineDash[1] ?? []);
43558
- }
43559
43553
  context.stroke();
43560
43554
  context.beginPath();
43561
43555
  context.moveTo(x + width, y + height);
@@ -43585,9 +43579,6 @@
43585
43579
  context.lineWidth = strokeArrayWidth[2];
43586
43580
  }
43587
43581
  context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;
43588
- if (isDash) {
43589
- context.setLineDash(lineDash[2] ?? []);
43590
- }
43591
43582
  context.stroke();
43592
43583
  context.beginPath();
43593
43584
  context.moveTo(x, y + height);
@@ -43617,9 +43608,6 @@
43617
43608
  context.lineWidth = strokeArrayWidth[3];
43618
43609
  }
43619
43610
  context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;
43620
- if (isDash) {
43621
- context.setLineDash(lineDash[3] ?? []);
43622
- }
43623
43611
  context.stroke();
43624
43612
  context.beginPath();
43625
43613
  context.moveTo(x, y);
@@ -43635,7 +43623,6 @@
43635
43623
  context.stroke();
43636
43624
  }
43637
43625
  context.lineDashOffset = 0;
43638
- context.setLineDash([]);
43639
43626
  }
43640
43627
  let DashGroupBeforeRenderContribution = class DashGroupBeforeRenderContribution {
43641
43628
  time = BaseRenderContributionTime.beforeFillStroke;
@@ -43711,28 +43698,22 @@
43711
43698
  context.moveTo(x, y);
43712
43699
  context.lineTo(x + widthForStroke, y);
43713
43700
  context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;
43714
- context.setLineDash(lineDash[0] ?? []);
43715
43701
  context.stroke();
43716
43702
  context.beginPath();
43717
43703
  context.moveTo(x + widthForStroke, y);
43718
43704
  context.lineTo(x + widthForStroke, y + heightForStroke);
43719
43705
  context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;
43720
- context.setLineDash(lineDash[1] ?? []);
43721
43706
  context.stroke();
43722
43707
  context.beginPath();
43723
43708
  context.moveTo(x, y + heightForStroke);
43724
43709
  context.lineTo(x + widthForStroke, y + heightForStroke);
43725
43710
  context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;
43726
- context.setLineDash(lineDash[2] ?? []);
43727
43711
  context.stroke();
43728
43712
  context.beginPath();
43729
43713
  context.moveTo(x, y);
43730
43714
  context.lineTo(x, y + heightForStroke);
43731
43715
  context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;
43732
- context.setLineDash(lineDash[3] ?? []);
43733
43716
  context.stroke();
43734
- context.lineDashOffset = 0;
43735
- context.setLineDash([]);
43736
43717
  }
43737
43718
  };
43738
43719
  DashGroupAfterRenderContribution = __decorate([
@@ -44977,10 +44958,7 @@
44977
44958
  }
44978
44959
  distCol - table.rightFrozenColCount >= table.frozenColCount &&
44979
44960
  createColGroup(bodyGroup, xOrigin, yOrigin, table.frozenColCount, distCol - table.rightFrozenColCount, table.columnHeaderLevelCount, distRow - table.bottomFrozenRowCount, 'body', table);
44980
- if (!bodyGroup.firstChild &&
44981
- !colHeaderGroup.firstChild &&
44982
- !cornerHeaderGroup.firstChild &&
44983
- !rowHeaderGroup.firstChild) {
44961
+ if (!bodyGroup.firstChild && !colHeaderGroup.firstChild) {
44984
44962
  proxy.currentRow = proxy.totalRow;
44985
44963
  proxy.rowEnd = proxy.currentRow;
44986
44964
  proxy.rowUpdatePos = proxy.rowEnd + 1;
@@ -44991,17 +44969,12 @@
44991
44969
  proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2);
44992
44970
  }
44993
44971
  else {
44994
- proxy.currentRow =
44995
- bodyGroup.firstChild?.rowNumber ?? rowHeaderGroup.firstChild?.rowNumber ?? proxy.totalRow;
44972
+ proxy.currentRow = bodyGroup.firstChild?.rowNumber ?? proxy.totalRow;
44996
44973
  proxy.rowEnd = proxy.currentRow;
44997
44974
  proxy.rowUpdatePos = proxy.rowEnd + 1;
44998
44975
  proxy.referenceRow = proxy.rowStart + Math.floor((proxy.rowEnd - proxy.rowStart) / 2);
44999
44976
  proxy.currentCol =
45000
- bodyGroup.lastChild?.col ??
45001
- colHeaderGroup.lastChild?.col ??
45002
- rowHeaderGroup.lastChild?.col ??
45003
- cornerHeaderGroup.lastChild?.col ??
45004
- proxy.totalCol;
44977
+ bodyGroup.lastChild?.col ?? colHeaderGroup.lastChild?.col ?? proxy.totalCol;
45005
44978
  proxy.colEnd = proxy.currentCol;
45006
44979
  proxy.colUpdatePos = proxy.colEnd + 1;
45007
44980
  proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2);
@@ -46192,9 +46165,8 @@
46192
46165
  this.updateDeltaY(y);
46193
46166
  this.updateBody(y - this.deltaY);
46194
46167
  }
46195
- else if ((!this.table.scenegraph.bodyGroup.firstChild || this.table.scenegraph.bodyGroup.firstChild.childrenCount === 0) &&
46196
- (!this.table.scenegraph.rowHeaderGroup.firstChild ||
46197
- this.table.scenegraph.rowHeaderGroup.firstChild.childrenCount === 0)) {
46168
+ else if (!this.table.scenegraph.bodyGroup.firstChild ||
46169
+ this.table.scenegraph.bodyGroup.firstChild.childrenCount === 0) {
46198
46170
  this.updateDeltaY(y);
46199
46171
  this.updateBody(y - this.deltaY);
46200
46172
  }
@@ -46355,10 +46327,7 @@
46355
46327
  }
46356
46328
  }
46357
46329
  else if (isValid$3(screenTopY) && isValid$3(screenTopRow)) {
46358
- let cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, screenTopRow, true);
46359
- if (cellGroup.role !== 'cell') {
46360
- cellGroup = this.table.scenegraph.highPerformanceGetCell(0, screenTopRow, true);
46361
- }
46330
+ const cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, screenTopRow, true);
46362
46331
  const bodyY = y - this.deltaY;
46363
46332
  const distRowYOffset = screenTopY - bodyY;
46364
46333
  const currentRowYOffset = cellGroup.attribute.y - bodyY + this.table.getFrozenRowsHeight();
@@ -46896,18 +46865,18 @@
46896
46865
  }
46897
46866
  function hideCellSelectBorder(scene) {
46898
46867
  scene.selectingRangeComponents.forEach((selectComp, key) => {
46899
- selectComp.rect.setAttribute('opacity', 0);
46868
+ selectComp.rect.setAttribute('visible', false);
46900
46869
  });
46901
46870
  scene.selectedRangeComponents.forEach((selectComp, key) => {
46902
- selectComp.rect.setAttribute('opacity', 0);
46871
+ selectComp.rect.setAttribute('visible', false);
46903
46872
  });
46904
46873
  }
46905
46874
  function restoreCellSelectBorder(scene) {
46906
46875
  scene.selectingRangeComponents.forEach((selectComp, key) => {
46907
- selectComp.rect.setAttribute('opacity', 1);
46876
+ selectComp.rect.setAttribute('visible', false);
46908
46877
  });
46909
46878
  scene.selectedRangeComponents.forEach((selectComp, key) => {
46910
- selectComp.rect.setAttribute('opacity', 1);
46879
+ selectComp.rect.setAttribute('visible', false);
46911
46880
  });
46912
46881
  }
46913
46882
 
@@ -48952,7 +48921,6 @@
48952
48921
  return { width, height };
48953
48922
  }
48954
48923
  updateNextFrame() {
48955
- this.updateContainerSync();
48956
48924
  this.resetAllSelectComponent();
48957
48925
  this.stage.renderNextFrame();
48958
48926
  }
@@ -49397,9 +49365,6 @@
49397
49365
  else if (this.table.options.frozenColCount) {
49398
49366
  this.component.setFrozenColumnShadow(this.table.frozenColCount - 1);
49399
49367
  }
49400
- else {
49401
- this.component.setFrozenColumnShadow(-1);
49402
- }
49403
49368
  this.table.stateManager.checkFrozen();
49404
49369
  this.updateContainer();
49405
49370
  this.createFrameBorder();
@@ -49617,25 +49582,22 @@
49617
49582
  if (!this._needUpdateContainer) {
49618
49583
  this._needUpdateContainer = true;
49619
49584
  setTimeout(() => {
49620
- this.updateContainerSync();
49585
+ this.updateContainerAttrWidthAndX();
49586
+ this.updateTableSize();
49587
+ this.component.updateScrollBar();
49588
+ this.updateNextFrame();
49589
+ this._needUpdateContainer = false;
49621
49590
  }, 0);
49622
49591
  }
49623
49592
  }
49624
49593
  else {
49625
- this._needUpdateContainer = true;
49626
- this.updateContainerSync();
49594
+ this.updateContainerAttrWidthAndX();
49595
+ this.updateTableSize();
49596
+ this.component.updateScrollBar();
49597
+ this.updateNextFrame();
49598
+ this._needUpdateContainer = false;
49627
49599
  }
49628
49600
  }
49629
- updateContainerSync() {
49630
- if (!this._needUpdateContainer) {
49631
- return;
49632
- }
49633
- this.updateContainerAttrWidthAndX();
49634
- this.updateTableSize();
49635
- this.component.updateScrollBar();
49636
- this._needUpdateContainer = false;
49637
- this.updateNextFrame();
49638
- }
49639
49601
  updateCellContentWhileResize(col, row) {
49640
49602
  const type = this.table.getBodyColumnType(col, row);
49641
49603
  const cellGroup = this.getCell(col, row);
@@ -57517,7 +57479,7 @@
57517
57479
  return TABLE_EVENT_TYPE;
57518
57480
  }
57519
57481
  options;
57520
- version = "0.24.2-alpha.2";
57482
+ version = "0.24.2-alpha.3";
57521
57483
  pagination;
57522
57484
  id = `VTable${Date.now()}`;
57523
57485
  headerStyleCache;
@@ -59913,37 +59875,11 @@
59913
59875
  if (col < this.frozenColCount && row < this.frozenRowCount) {
59914
59876
  return true;
59915
59877
  }
59916
- const colHeaderRangeRect = this.getCellRangeRelativeRect({
59917
- start: {
59918
- col: 0,
59919
- row: 0
59920
- },
59921
- end: {
59922
- col: this.colCount - 1,
59923
- row: this.columnHeaderLevelCount
59924
- }
59925
- });
59926
- const rowHeaderRangeRect = this.getCellRangeRelativeRect({
59927
- start: {
59928
- col: 0,
59929
- row: 0
59930
- },
59931
- end: {
59932
- col: this.rowHeaderLevelCount,
59933
- row: this.rowCount - 1
59934
- }
59935
- });
59936
59878
  if (rect.top >= drawRange.top &&
59937
59879
  rect.bottom <= drawRange.bottom &&
59938
59880
  rect.left >= drawRange.left &&
59939
59881
  rect.right <= drawRange.right) {
59940
- if (this.isHeader(col, row)) {
59941
- return true;
59942
- }
59943
- else if (drawRange.top >= colHeaderRangeRect.bottom &&
59944
- drawRange.left >= rowHeaderRangeRect.right) {
59945
- return true;
59946
- }
59882
+ return true;
59947
59883
  }
59948
59884
  return false;
59949
59885
  }
@@ -59973,8 +59909,6 @@
59973
59909
  }
59974
59910
  const { col: hoverCol, row: hoverRow } = this.stateManager.hover.cellPos;
59975
59911
  this.stateManager.updateHoverPos(-1, -1);
59976
- this.scenegraph.component.hideVerticalScrollBar();
59977
- this.scenegraph.component.hideHorizontalScrollBar();
59978
59912
  this.scenegraph.renderSceneGraph();
59979
59913
  const c = this.scenegraph.stage.toCanvas(false, new AABBBounds().set(cellRect.left + this.tableX + 1, cellRect.top + this.tableY + 1, cellRect.right + this.tableX, cellRect.bottom + this.tableY));
59980
59914
  if (!isInView) {
@@ -60002,24 +59936,12 @@
60002
59936
  start: { col: minCol, row: minRow },
60003
59937
  end: { col: maxCol, row: maxRow }
60004
59938
  });
60005
- if (this.stateManager.select?.ranges?.length > 0) {
60006
- hideCellSelectBorder(this.scenegraph);
60007
- }
60008
- const { col: hoverCol, row: hoverRow } = this.stateManager.hover.cellPos;
60009
- this.stateManager.updateHoverPos(-1, -1);
60010
- this.scenegraph.component.hideVerticalScrollBar();
60011
- this.scenegraph.component.hideHorizontalScrollBar();
60012
- this.scenegraph.renderSceneGraph();
60013
59939
  const c = this.scenegraph.stage.toCanvas(false, new AABBBounds().set(cellRect.left + this.tableX + 1, cellRect.top + this.tableY + 1, cellRect.right + this.tableX, cellRect.bottom + this.tableY));
60014
59940
  const base64Image = c.toDataURL();
60015
59941
  if (!isInView || !isMaxCellInView) {
60016
59942
  this.setScrollTop(scrollTop);
60017
59943
  this.setScrollLeft(scrollLeft);
60018
59944
  }
60019
- if (this.stateManager.select?.ranges?.length > 0) {
60020
- restoreCellSelectBorder(this.scenegraph);
60021
- }
60022
- this.stateManager.updateHoverPos(hoverCol, hoverRow);
60023
59945
  return base64Image;
60024
59946
  }
60025
59947
  exportCanvas() {
@@ -62521,9 +62443,6 @@
62521
62443
  });
62522
62444
  }
62523
62445
  startEditCell(col, row) {
62524
- if (this.table.isPivotTable() && this.table.isHeader(col, row)) {
62525
- return;
62526
- }
62527
62446
  const editor = this.table.getEditor(col, row);
62528
62447
  if (editor) {
62529
62448
  if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {
@@ -65892,9 +65811,14 @@
65892
65811
  let isCol = false;
65893
65812
  for (let j = 0; j < colArr.length; j++) {
65894
65813
  const dimension = colArr[j];
65895
- if (((isValid$3(highlightDimension.dimensionKey) && dimension.dimensionKey === highlightDimension.dimensionKey) ||
65896
- (isValid$3(highlightDimension.indicatorKey) && dimension.indicatorKey === highlightDimension.indicatorKey)) &&
65897
- dimension.value === highlightDimension.value) {
65814
+ if ((isValid$3(highlightDimension.dimensionKey) &&
65815
+ dimension.dimensionKey === highlightDimension.dimensionKey &&
65816
+ dimension.value === highlightDimension.value) ||
65817
+ (isValid$3(highlightDimension.indicatorKey) &&
65818
+ dimension.indicatorKey === highlightDimension.indicatorKey &&
65819
+ (dimension.value === highlightDimension.value ||
65820
+ !isValid$3(highlightDimension.value) ||
65821
+ !isValid$3(dimension.value)))) {
65898
65822
  colArr = dimension.children;
65899
65823
  colDimension = dimension;
65900
65824
  isCol = true;
@@ -65906,9 +65830,14 @@
65906
65830
  }
65907
65831
  for (let k = 0; k < rowArr.length; k++) {
65908
65832
  const dimension = rowArr[k];
65909
- if (((isValid$3(highlightDimension.dimensionKey) && dimension.dimensionKey === highlightDimension.dimensionKey) ||
65910
- (isValid$3(highlightDimension.indicatorKey) && dimension.indicatorKey === highlightDimension.indicatorKey)) &&
65911
- dimension.value === highlightDimension.value) {
65833
+ if ((isValid$3(highlightDimension.dimensionKey) &&
65834
+ dimension.dimensionKey === highlightDimension.dimensionKey &&
65835
+ dimension.value === highlightDimension.value) ||
65836
+ (isValid$3(highlightDimension.indicatorKey) &&
65837
+ dimension.indicatorKey === highlightDimension.indicatorKey &&
65838
+ (dimension.value === highlightDimension.value ||
65839
+ !isValid$3(highlightDimension.value) ||
65840
+ !isValid$3(dimension.value)))) {
65912
65841
  rowArr = dimension.children;
65913
65842
  rowDimension = dimension;
65914
65843
  break;
@@ -66306,6 +66235,19 @@
66306
66235
  }
66307
66236
  return undefined;
66308
66237
  }
66238
+ changeTreeNodeTitle(col, row, value) {
66239
+ const headerPaths = this.getCellHeaderPaths(col, row);
66240
+ if (headerPaths.rowHeaderPaths.length > 0) {
66241
+ const headerTreeNode = this.getHeadNode(headerPaths.rowHeaderPaths.slice(0, headerPaths.rowHeaderPaths.length));
66242
+ headerTreeNode.value = value;
66243
+ }
66244
+ else if (headerPaths.colHeaderPaths.length > 0) {
66245
+ const headerTreeNode = this.getHeadNode(headerPaths.colHeaderPaths.slice(0, headerPaths.colHeaderPaths.length));
66246
+ headerTreeNode.value = value;
66247
+ }
66248
+ const id = this.getCellId(col, row);
66249
+ this._headerObjectMap[id].title = value;
66250
+ }
66309
66251
  }
66310
66252
  function scaleWholeRangeSize(count, bandwidth, paddingInner, paddingOuter) {
66311
66253
  if (paddingInner === 1) {
@@ -66331,7 +66273,7 @@
66331
66273
  dataConfig;
66332
66274
  records;
66333
66275
  tree = {};
66334
- changedTree = {};
66276
+ beforeChangedTree = {};
66335
66277
  colFlatKeys = {};
66336
66278
  rowFlatKeys = {};
66337
66279
  stringJoinChar = String.fromCharCode(0);
@@ -66417,7 +66359,7 @@
66417
66359
  }
66418
66360
  });
66419
66361
  }
66420
- getTreeNode(rowKey = [], colKey = [], indicator, considerChangedValue = true) {
66362
+ getTreeNode(rowKey = [], colKey = [], indicator, ifChangedValue = true) {
66421
66363
  let flatRowKey;
66422
66364
  let flatColKey;
66423
66365
  if (typeof rowKey === 'string') {
@@ -66448,10 +66390,16 @@
66448
66390
  isHasIndicator && colKey.push(indicator);
66449
66391
  flatColKey = colKey.join(this.stringJoinChar);
66450
66392
  }
66451
- if (considerChangedValue && isValid$3(this.changedTree[flatRowKey]?.[flatColKey])) {
66452
- return { value: this.changedTree[flatRowKey][flatColKey], record: this.tree?.[flatRowKey]?.[flatColKey]?.record };
66393
+ if (ifChangedValue) {
66394
+ return this.tree?.[flatRowKey]?.[flatColKey] ?? undefined;
66453
66395
  }
66454
- return this.tree?.[flatRowKey]?.[flatColKey] ?? undefined;
66396
+ if (isValid$3(this.beforeChangedTree[flatRowKey]?.[flatColKey])) {
66397
+ return {
66398
+ value: this.beforeChangedTree[flatRowKey][flatColKey].value,
66399
+ record: this.beforeChangedTree[flatRowKey][flatColKey].record
66400
+ };
66401
+ }
66402
+ return undefined;
66455
66403
  }
66456
66404
  changeTreeNodeValue(rowKey = [], colKey = [], indicator, newValue) {
66457
66405
  let flatRowKey;
@@ -66484,14 +66432,46 @@
66484
66432
  isHasIndicator && colKey.push(indicator);
66485
66433
  flatColKey = colKey.join(this.stringJoinChar);
66486
66434
  }
66487
- if (this.changedTree[flatRowKey]) {
66488
- this.changedTree[flatRowKey][flatColKey] = newValue;
66435
+ const oldValue = this.tree[flatRowKey]?.[flatColKey]?.value;
66436
+ const oldRecord = Object.assign({}, this.tree[flatRowKey]?.[flatColKey]?.record);
66437
+ if (this.tree[flatRowKey]?.[flatColKey]?.record) {
66438
+ this.tree[flatRowKey][flatColKey].record[indicator] = newValue;
66439
+ this.tree[flatRowKey][flatColKey].value = newValue;
66489
66440
  }
66490
66441
  else {
66491
- this.changedTree[flatRowKey] = {};
66492
- this.changedTree[flatRowKey][flatColKey] = newValue;
66442
+ if (!this.tree[flatRowKey]) {
66443
+ this.tree[flatRowKey] = {};
66444
+ }
66445
+ this.tree[flatRowKey][flatColKey] = {
66446
+ record: this._buildRecord(rowKey, colKey, indicator, newValue),
66447
+ value: newValue
66448
+ };
66449
+ }
66450
+ if (!this.beforeChangedTree[flatRowKey]?.[flatColKey]) {
66451
+ this.beforeChangedTree[flatRowKey] = {};
66452
+ this.beforeChangedTree[flatRowKey][flatColKey] = { record: undefined, value: undefined };
66453
+ this.beforeChangedTree[flatRowKey][flatColKey].record = oldRecord;
66454
+ this.beforeChangedTree[flatRowKey][flatColKey].value = oldValue;
66493
66455
  }
66494
66456
  }
66457
+ _buildRecord(rowKey = [], colKey = [], indicator, value) {
66458
+ const record = {};
66459
+ const rowDimensions = this.dataConfig.rows;
66460
+ const colDimensions = this.dataConfig.columns;
66461
+ rowDimensions.forEach((dimension, index) => {
66462
+ if (dimension !== this.dataConfig.indicatorDimensionKey) {
66463
+ record[dimension] = rowKey[index];
66464
+ }
66465
+ });
66466
+ colDimensions.forEach((dimension, index) => {
66467
+ if (dimension !== this.dataConfig.indicatorDimensionKey) {
66468
+ record[dimension] = colKey[index];
66469
+ }
66470
+ });
66471
+ record[indicator] = value;
66472
+ this.records.push(record);
66473
+ return record;
66474
+ }
66495
66475
  addRecords(records) {
66496
66476
  for (let i = 0, len = records.length; i < len; i++) {
66497
66477
  const record = records[i];
@@ -66499,6 +66479,26 @@
66499
66479
  }
66500
66480
  this.records.push(records);
66501
66481
  }
66482
+ changeRecordFieldValue(fieldName, oldValue, value) {
66483
+ let isIndicatorName = false;
66484
+ for (let i = 0; i < this.dataConfig.indicators.length; i++) {
66485
+ if (this.dataConfig.indicators[i] === fieldName) {
66486
+ isIndicatorName = true;
66487
+ }
66488
+ }
66489
+ if (!isIndicatorName) {
66490
+ for (let i = 0, len = this.records.length; i < len; i++) {
66491
+ const record = this.records[i];
66492
+ if (record[fieldName] === oldValue) {
66493
+ record[fieldName] = value;
66494
+ }
66495
+ }
66496
+ this.rowFlatKeys = {};
66497
+ this.colFlatKeys = {};
66498
+ this.tree = {};
66499
+ this.processRecords();
66500
+ }
66501
+ }
66502
66502
  }
66503
66503
 
66504
66504
  class Dataset {
@@ -67564,6 +67564,38 @@
67564
67564
  this.changedTree[flatRowKey][flatColKey][indicatorIndex] = newValue;
67565
67565
  }
67566
67566
  }
67567
+ changeRecordFieldValue(fieldName, oldValue, value) {
67568
+ let isIndicatorName = false;
67569
+ for (let i = 0; i < this.indicatorKeys.length; i++) {
67570
+ if (this.indicatorKeys[i] === fieldName) {
67571
+ isIndicatorName = true;
67572
+ }
67573
+ }
67574
+ if (!isIndicatorName) {
67575
+ if (Array.isArray(this.records)) {
67576
+ for (let i = 0, len = this.records.length; i < len; i++) {
67577
+ const record = this.records[i];
67578
+ if (record[fieldName] === oldValue) {
67579
+ record[fieldName] = value;
67580
+ }
67581
+ }
67582
+ }
67583
+ else {
67584
+ for (const key in this.records) {
67585
+ for (let i = 0, len = this.records[key].length; i < len; i++) {
67586
+ const record = this.records[key][i];
67587
+ if (record[fieldName] === oldValue) {
67588
+ record[fieldName] = value;
67589
+ }
67590
+ }
67591
+ }
67592
+ }
67593
+ this.rowFlatKeys = {};
67594
+ this.colFlatKeys = {};
67595
+ this.tree = {};
67596
+ this.processRecords();
67597
+ }
67598
+ }
67567
67599
  }
67568
67600
  function arraySortByAnotherArray(array, sortArray) {
67569
67601
  return array.sort((a, b) => {
@@ -68088,7 +68120,7 @@
68088
68120
  const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68089
68121
  return rowPath.indicatorKey ?? rowPath.value;
68090
68122
  });
68091
- const treeNode = this.flatDataToObjects.getTreeNode(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, false);
68123
+ const treeNode = this.flatDataToObjects.getTreeNode(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey);
68092
68124
  return treeNode?.record;
68093
68125
  }
68094
68126
  const rowIndex = this.getBodyIndexByRow(row);
@@ -68097,7 +68129,36 @@
68097
68129
  return dataValue;
68098
68130
  }
68099
68131
  getCellRawRecord(col, row) {
68100
- return this.getCellOriginRecord(col, row);
68132
+ const table = this;
68133
+ if (table.internalProps.layoutMap.isHeader(col, row)) {
68134
+ return undefined;
68135
+ }
68136
+ if (this.dataset) {
68137
+ const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
68138
+ const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68139
+ return colPath.indicatorKey ?? colPath.value;
68140
+ });
68141
+ const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68142
+ return rowPath.indicatorKey ?? rowPath.value;
68143
+ });
68144
+ const aggregator = this.dataset.getAggregator(!this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys, this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys, this.internalProps.layoutMap.getIndicatorKey(col, row));
68145
+ return aggregator.records;
68146
+ }
68147
+ else if (this.flatDataToObjects) {
68148
+ const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
68149
+ const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68150
+ return colPath.indicatorKey ?? colPath.value;
68151
+ });
68152
+ const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68153
+ return rowPath.indicatorKey ?? rowPath.value;
68154
+ });
68155
+ const treeNode = this.flatDataToObjects.getTreeNode(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, false);
68156
+ return treeNode?.record;
68157
+ }
68158
+ const rowIndex = this.getBodyIndexByRow(row);
68159
+ const colIndex = this.getBodyIndexByCol(col);
68160
+ const dataValue = this.records[rowIndex]?.[colIndex];
68161
+ return dataValue;
68101
68162
  }
68102
68163
  updateSortRules(sortRules) {
68103
68164
  this.internalProps.dataConfig.sortRules = sortRules;
@@ -68330,8 +68391,15 @@
68330
68391
  this.editorManager.completeEdit();
68331
68392
  }
68332
68393
  getEditor(col, row) {
68333
- const define = this.getBodyColumnDefine(col, row);
68334
- let editorDefine = define?.editor ?? this.options.editor;
68394
+ let editorDefine;
68395
+ if (this.isHeader(col, row) && !this.isCornerHeader(col, row)) {
68396
+ const define = this.getHeaderDefine(col, row);
68397
+ editorDefine = define?.headerEditor ?? this.options.headerEditor;
68398
+ }
68399
+ else {
68400
+ const define = this.getBodyColumnDefine(col, row);
68401
+ editorDefine = define?.editor ?? this.options.editor;
68402
+ }
68335
68403
  if (typeof editorDefine === 'function') {
68336
68404
  const arg = {
68337
68405
  col,
@@ -68365,12 +68433,18 @@
68365
68433
  changeCellValue(col, row, value, workOnEditableCell = false) {
68366
68434
  if ((workOnEditableCell && this.isHasEditorDefine(col, row)) || workOnEditableCell === false) {
68367
68435
  let newValue = value;
68436
+ const oldValue = this.getCellOriginValue(col, row);
68368
68437
  const rawValue = this.getCellRawValue(col, row);
68369
68438
  if (typeof rawValue === 'number' && isAllDigits(value)) {
68370
68439
  newValue = parseFloat(value);
68371
68440
  }
68372
- this._changeCellValueToDataSet(col, row, newValue);
68373
- this.scenegraph.updateCellContent(col, row);
68441
+ this._changeCellValueToDataSet(col, row, oldValue, newValue);
68442
+ const range = this.getCellRange(col, row);
68443
+ for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {
68444
+ for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {
68445
+ this.scenegraph.updateCellContent(sCol, sRow);
68446
+ }
68447
+ }
68374
68448
  if (this.widthMode === 'adaptive' || (this.autoFillWidth && this.getAllColsWidth() <= this.tableNoFrameWidth)) {
68375
68449
  if (this.internalProps._widthResizedColMap.size === 0) {
68376
68450
  this.scenegraph.recalculateColWidths();
@@ -68420,11 +68494,12 @@
68420
68494
  workOnEditableCell === false) {
68421
68495
  const value = rowValues[j];
68422
68496
  let newValue = value;
68497
+ const oldValue = this.getCellOriginValue(startCol + j, startRow + i);
68423
68498
  const rawValue = this.getCellRawValue(startCol + j, startRow + i);
68424
68499
  if (typeof rawValue === 'number' && isAllDigits(value)) {
68425
68500
  newValue = parseFloat(value);
68426
68501
  }
68427
- this._changeCellValueToDataSet(startCol + j, startRow + i, newValue);
68502
+ this._changeCellValueToDataSet(startCol + j, startRow + i, oldValue, newValue);
68428
68503
  this.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {
68429
68504
  col: startCol + j,
68430
68505
  row: startRow + i,
@@ -68476,26 +68551,48 @@
68476
68551
  }
68477
68552
  this.scenegraph.updateNextFrame();
68478
68553
  }
68479
- _changeCellValueToDataSet(col, row, newValue) {
68554
+ _changeCellValueToDataSet(col, row, oldValue, newValue) {
68480
68555
  if (this.dataset) {
68481
68556
  const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
68482
- const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68483
- return colPath.indicatorKey ?? colPath.value;
68484
- });
68485
- const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68486
- return rowPath.indicatorKey ?? rowPath.value;
68487
- });
68488
- this.dataset.changeTreeNodeValue(!this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys, this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys, this.internalProps.layoutMap.getIndicatorKey(col, row), newValue);
68557
+ if (this.isHeader(col, row)) {
68558
+ this.internalProps.layoutMap.changeTreeNodeTitle(col, row, newValue);
68559
+ !this.isCornerHeader(col, row) &&
68560
+ this.dataset.changeRecordFieldValue(cellDimensionPath.colHeaderPaths?.length
68561
+ ? cellDimensionPath.colHeaderPaths[cellDimensionPath.colHeaderPaths.length - 1].indicatorKey ??
68562
+ cellDimensionPath.colHeaderPaths[cellDimensionPath.colHeaderPaths.length - 1].dimensionKey
68563
+ : cellDimensionPath.rowHeaderPaths[cellDimensionPath.rowHeaderPaths.length - 1].indicatorKey ??
68564
+ cellDimensionPath.rowHeaderPaths[cellDimensionPath.rowHeaderPaths.length - 1].dimensionKey, oldValue, newValue);
68565
+ }
68566
+ else {
68567
+ const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68568
+ return colPath.indicatorKey ?? colPath.value;
68569
+ });
68570
+ const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68571
+ return rowPath.indicatorKey ?? rowPath.value;
68572
+ });
68573
+ this.dataset.changeTreeNodeValue(!this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys, this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys, this.internalProps.layoutMap.getIndicatorKey(col, row), newValue);
68574
+ }
68489
68575
  }
68490
68576
  else if (this.flatDataToObjects) {
68491
68577
  const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
68492
- const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68493
- return colPath.indicatorKey ?? colPath.value;
68494
- });
68495
- const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68496
- return rowPath.indicatorKey ?? rowPath.value;
68497
- });
68498
- this.flatDataToObjects.changeTreeNodeValue(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, newValue);
68578
+ if (this.isHeader(col, row)) {
68579
+ this.internalProps.layoutMap.changeTreeNodeTitle(col, row, newValue);
68580
+ !this.isCornerHeader(col, row) &&
68581
+ this.flatDataToObjects.changeRecordFieldValue(cellDimensionPath.colHeaderPaths?.length
68582
+ ? cellDimensionPath.colHeaderPaths[cellDimensionPath.colHeaderPaths.length - 1].indicatorKey ??
68583
+ cellDimensionPath.colHeaderPaths[cellDimensionPath.colHeaderPaths.length - 1].dimensionKey
68584
+ : cellDimensionPath.rowHeaderPaths[cellDimensionPath.rowHeaderPaths.length - 1].indicatorKey ??
68585
+ cellDimensionPath.rowHeaderPaths[cellDimensionPath.rowHeaderPaths.length - 1].dimensionKey, oldValue, newValue);
68586
+ }
68587
+ else {
68588
+ const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68589
+ return colPath.indicatorKey ?? colPath.value;
68590
+ });
68591
+ const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68592
+ return rowPath.indicatorKey ?? rowPath.value;
68593
+ });
68594
+ this.flatDataToObjects.changeTreeNodeValue(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, newValue);
68595
+ }
68499
68596
  }
68500
68597
  else {
68501
68598
  const rowIndex = this.getBodyIndexByRow(row);
@@ -69924,7 +70021,7 @@
69924
70021
  }
69925
70022
 
69926
70023
  registerForVrender();
69927
- const version = "0.24.2-alpha.2";
70024
+ const version = "0.24.2-alpha.3";
69928
70025
  function getIcons() {
69929
70026
  return get$2();
69930
70027
  }