@visactor/vtable 1.7.5-alpha.1 → 1.7.5

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 (153) hide show
  1. package/cjs/ListTable.d.ts +2 -2
  2. package/cjs/ListTable.js +34 -22
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotTable.d.ts +1 -0
  5. package/cjs/PivotTable.js +4 -0
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/body-helper/body-helper.js +2 -2
  8. package/cjs/body-helper/body-helper.js.map +1 -1
  9. package/cjs/components/axis/axis.d.ts +1 -0
  10. package/cjs/components/axis/axis.js +14 -10
  11. package/cjs/components/axis/axis.js.map +1 -1
  12. package/cjs/core/BaseTable.js +7 -5
  13. package/cjs/core/BaseTable.js.map +1 -1
  14. package/cjs/core/record-helper.js +9 -11
  15. package/cjs/core/record-helper.js.map +1 -1
  16. package/cjs/data/CachedDataSource.d.ts +1 -1
  17. package/cjs/data/CachedDataSource.js +4 -4
  18. package/cjs/data/CachedDataSource.js.map +1 -1
  19. package/cjs/data/DataSource.d.ts +3 -5
  20. package/cjs/data/DataSource.js +49 -30
  21. package/cjs/data/DataSource.js.map +1 -1
  22. package/cjs/dataset/dataset.d.ts +1 -0
  23. package/cjs/dataset/dataset.js +15 -7
  24. package/cjs/dataset/dataset.js.map +1 -1
  25. package/cjs/event/EventHandler.js +1 -1
  26. package/cjs/event/EventHandler.js.map +1 -1
  27. package/cjs/event/listener/table-group.js +37 -25
  28. package/cjs/event/listener/table-group.js.map +1 -1
  29. package/cjs/event/scroll.js +2 -1
  30. package/cjs/event/scroll.js.map +1 -1
  31. package/cjs/index.d.ts +1 -1
  32. package/cjs/index.js +1 -1
  33. package/cjs/index.js.map +1 -1
  34. package/cjs/layout/chart-helper/get-axis-config.js +26 -13
  35. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
  36. package/cjs/layout/chart-helper/get-chart-spec.js +1 -1
  37. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  38. package/cjs/layout/pivot-header-layout.js +15 -12
  39. package/cjs/layout/pivot-header-layout.js.map +1 -1
  40. package/cjs/layout/tree-helper.js +10 -4
  41. package/cjs/layout/tree-helper.js.map +1 -1
  42. package/cjs/scenegraph/group-creater/cell-helper.js +14 -10
  43. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  44. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +1 -1
  45. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  46. package/cjs/scenegraph/group-creater/column-helper.js +6 -5
  47. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  48. package/cjs/scenegraph/icon/icon-update.d.ts +10 -1
  49. package/cjs/scenegraph/icon/icon-update.js +4 -4
  50. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  51. package/cjs/scenegraph/layout/update-height.js +1 -1
  52. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  53. package/cjs/scenegraph/layout/update-width.js +5 -5
  54. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  55. package/cjs/scenegraph/refresh-node/update-chart.js +2 -1
  56. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  57. package/cjs/scenegraph/scenegraph.d.ts +9 -1
  58. package/cjs/scenegraph/scenegraph.js +12 -2
  59. package/cjs/scenegraph/scenegraph.js.map +1 -1
  60. package/cjs/scenegraph/style/frame-border.js +1 -0
  61. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  62. package/cjs/state/sort/index.js +17 -6
  63. package/cjs/state/sort/index.js.map +1 -1
  64. package/cjs/state/state.d.ts +4 -4
  65. package/cjs/state/state.js +87 -17
  66. package/cjs/state/state.js.map +1 -1
  67. package/cjs/tools/util.d.ts +1 -0
  68. package/cjs/tools/util.js +7 -2
  69. package/cjs/tools/util.js.map +1 -1
  70. package/cjs/ts-types/base-table.d.ts +1 -0
  71. package/cjs/ts-types/base-table.js.map +1 -1
  72. package/cjs/ts-types/table-engine.d.ts +5 -1
  73. package/cjs/ts-types/table-engine.js.map +1 -1
  74. package/cjs/vrender.js +1 -1
  75. package/cjs/vrender.js.map +1 -1
  76. package/dist/vtable.js +425 -218
  77. package/dist/vtable.min.js +2 -2
  78. package/es/ListTable.d.ts +2 -2
  79. package/es/ListTable.js +33 -20
  80. package/es/ListTable.js.map +1 -1
  81. package/es/PivotTable.d.ts +1 -0
  82. package/es/PivotTable.js +4 -0
  83. package/es/PivotTable.js.map +1 -1
  84. package/es/body-helper/body-helper.js +3 -1
  85. package/es/body-helper/body-helper.js.map +1 -1
  86. package/es/components/axis/axis.d.ts +1 -0
  87. package/es/components/axis/axis.js +14 -10
  88. package/es/components/axis/axis.js.map +1 -1
  89. package/es/core/BaseTable.js +7 -5
  90. package/es/core/BaseTable.js.map +1 -1
  91. package/es/core/record-helper.js +9 -11
  92. package/es/core/record-helper.js.map +1 -1
  93. package/es/data/CachedDataSource.d.ts +1 -1
  94. package/es/data/CachedDataSource.js +4 -4
  95. package/es/data/CachedDataSource.js.map +1 -1
  96. package/es/data/DataSource.d.ts +3 -5
  97. package/es/data/DataSource.js +49 -28
  98. package/es/data/DataSource.js.map +1 -1
  99. package/es/dataset/dataset.d.ts +1 -0
  100. package/es/dataset/dataset.js +15 -7
  101. package/es/dataset/dataset.js.map +1 -1
  102. package/es/event/EventHandler.js +1 -1
  103. package/es/event/EventHandler.js.map +1 -1
  104. package/es/event/listener/table-group.js +38 -26
  105. package/es/event/listener/table-group.js.map +1 -1
  106. package/es/event/scroll.js +2 -1
  107. package/es/event/scroll.js.map +1 -1
  108. package/es/index.d.ts +1 -1
  109. package/es/index.js +1 -1
  110. package/es/index.js.map +1 -1
  111. package/es/layout/chart-helper/get-axis-config.js +23 -12
  112. package/es/layout/chart-helper/get-axis-config.js.map +1 -1
  113. package/es/layout/chart-helper/get-chart-spec.js +1 -1
  114. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  115. package/es/layout/pivot-header-layout.js +14 -12
  116. package/es/layout/pivot-header-layout.js.map +1 -1
  117. package/es/layout/tree-helper.js +10 -4
  118. package/es/layout/tree-helper.js.map +1 -1
  119. package/es/scenegraph/group-creater/cell-helper.js +14 -9
  120. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  121. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +1 -1
  122. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  123. package/es/scenegraph/group-creater/column-helper.js +6 -5
  124. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  125. package/es/scenegraph/icon/icon-update.d.ts +10 -1
  126. package/es/scenegraph/icon/icon-update.js +5 -3
  127. package/es/scenegraph/icon/icon-update.js.map +1 -1
  128. package/es/scenegraph/layout/update-height.js +1 -1
  129. package/es/scenegraph/layout/update-height.js.map +1 -1
  130. package/es/scenegraph/layout/update-width.js +5 -5
  131. package/es/scenegraph/layout/update-width.js.map +1 -1
  132. package/es/scenegraph/refresh-node/update-chart.js +2 -1
  133. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  134. package/es/scenegraph/scenegraph.d.ts +9 -1
  135. package/es/scenegraph/scenegraph.js +12 -2
  136. package/es/scenegraph/scenegraph.js.map +1 -1
  137. package/es/scenegraph/style/frame-border.js +1 -0
  138. package/es/scenegraph/style/frame-border.js.map +1 -1
  139. package/es/state/sort/index.js +17 -6
  140. package/es/state/sort/index.js.map +1 -1
  141. package/es/state/state.d.ts +4 -4
  142. package/es/state/state.js +88 -16
  143. package/es/state/state.js.map +1 -1
  144. package/es/tools/util.d.ts +1 -0
  145. package/es/tools/util.js +4 -0
  146. package/es/tools/util.js.map +1 -1
  147. package/es/ts-types/base-table.d.ts +1 -0
  148. package/es/ts-types/base-table.js.map +1 -1
  149. package/es/ts-types/table-engine.d.ts +5 -1
  150. package/es/ts-types/table-engine.js.map +1 -1
  151. package/es/vrender.js +1 -1
  152. package/es/vrender.js.map +1 -1
  153. package/package.json +4 -4
package/dist/vtable.js CHANGED
@@ -25564,6 +25564,7 @@
25564
25564
  registerText();
25565
25565
  registerFlexLayoutPlugin();
25566
25566
  loadPoptip();
25567
+ registerFlexLayoutPlugin();
25567
25568
  }
25568
25569
 
25569
25570
  var InteractionState;
@@ -26647,6 +26648,12 @@
26647
26648
  }
26648
26649
  return false;
26649
26650
  }
26651
+ function traverseObject(obj, childrenProperty, callback) {
26652
+ callback(obj);
26653
+ if (obj?.[childrenProperty] && Array.isArray(obj?.[childrenProperty])) {
26654
+ obj[childrenProperty].forEach((child) => traverseObject(child, childrenProperty, callback));
26655
+ }
26656
+ }
26650
26657
 
26651
26658
  const isNode = typeof window === 'undefined' || typeof window.window === 'undefined';
26652
26659
  let arrayFind;
@@ -27174,7 +27181,7 @@
27174
27181
  if (Env.mode === 'node') {
27175
27182
  return;
27176
27183
  }
27177
- if (id == null) {
27184
+ if (id === null) {
27178
27185
  return;
27179
27186
  }
27180
27187
  const obj = this.listeners?.[id];
@@ -29506,9 +29513,7 @@
29506
29513
  _sourceLength;
29507
29514
  _source;
29508
29515
  sortedIndexMap;
29509
- lastOrder;
29510
- lastOrderFn;
29511
- lastOrderField;
29516
+ lastSortStates;
29512
29517
  currentIndexedData = [];
29513
29518
  userPagination;
29514
29519
  pagination;
@@ -29827,14 +29832,15 @@
29827
29832
  const children = nodeData.filteredChildren ? nodeData.filteredChildren : nodeData.children;
29828
29833
  if (children) {
29829
29834
  const subNodeSortedIndexArray = Array.from({ length: children.length }, (_, i) => i);
29830
- this.lastOrder &&
29831
- this.lastOrder !== 'normal' &&
29832
- this.lastOrderField &&
29833
- sort(index => isValid$1(subNodeSortedIndexArray[index])
29834
- ? subNodeSortedIndexArray[index]
29835
- : (subNodeSortedIndexArray[index] = index), (index, rel) => {
29836
- subNodeSortedIndexArray[index] = rel;
29837
- }, children.length, this.lastOrderFn, this.lastOrder, index => this.getOriginalField(Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index], this.lastOrderField));
29835
+ this.lastSortStates?.forEach(state => {
29836
+ if (state.order !== 'normal') {
29837
+ sort(index => isValid$1(subNodeSortedIndexArray[index])
29838
+ ? subNodeSortedIndexArray[index]
29839
+ : (subNodeSortedIndexArray[index] = index), (index, rel) => {
29840
+ subNodeSortedIndexArray[index] = rel;
29841
+ }, children.length, state.orderFn, state.order, index => this.getOriginalField(Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index], state.field));
29842
+ }
29843
+ });
29838
29844
  for (let i = 0; i < subNodeSortedIndexArray.length; i++) {
29839
29845
  childrenLength += 1;
29840
29846
  const childIndex = Array.isArray(indexKey)
@@ -30082,16 +30088,19 @@
30082
30088
  }
30083
30089
  this.sortedIndexMap.clear();
30084
30090
  }
30085
- sort(field, order, orderFn = order !== 'desc'
30086
- ? (v1, v2) => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)
30087
- : (v1, v2) => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1)) {
30088
- this.lastOrderField = field;
30089
- this.lastOrder = order;
30090
- this.lastOrderFn = orderFn;
30091
- let filedMap = this.sortedIndexMap.get(field);
30092
- let orderedData;
30093
- if (filedMap) {
30094
- orderedData = filedMap[order];
30091
+ sort(states) {
30092
+ states = (Array.isArray(states) ? states : [states]).filter(state => {
30093
+ let column = this.layoutColumnObjects.find(obj => obj.field == state.field);
30094
+ return column?.define?.sort !== false && state.order !== 'normal';
30095
+ });
30096
+ this.lastSortStates = states;
30097
+ let filedMapArray = states.map(state => this.sortedIndexMap.get(state?.field) || { asc: [], desc: [], normal: [] });
30098
+ let orderedData = null;
30099
+ if (filedMapArray.length > 0) {
30100
+ orderedData = states.reduce((data, state, index) => {
30101
+ const currentData = filedMapArray[index]?.[state.order];
30102
+ return currentData && currentData.length > 0 ? currentData : data;
30103
+ }, null);
30095
30104
  if (orderedData && orderedData.length > 0) {
30096
30105
  this.currentIndexedData = orderedData;
30097
30106
  this.updatePagerData();
@@ -30099,21 +30108,22 @@
30099
30108
  return;
30100
30109
  }
30101
30110
  }
30102
- const sortedIndexArray = [];
30103
- if (order === 'normal') {
30104
- for (let i = 0; i < this._sourceLength; i++) {
30105
- sortedIndexArray[i] = i;
30106
- }
30107
- }
30108
- else {
30109
- sort(index => (isValid$1(sortedIndexArray[index]) ? sortedIndexArray[index] : (sortedIndexArray[index] = index)), (index, rel) => {
30110
- sortedIndexArray[index] = rel;
30111
- }, this._sourceLength, orderFn, order, index => this.getOriginalField(index, field));
30112
- }
30111
+ const sortedIndexArray = Array.from({ length: this._sourceLength }, (_, i) => i);
30112
+ sortedIndexArray.sort((indexA, indexB) => {
30113
+ return states.reduce((result, state) => {
30114
+ if (result !== 0) {
30115
+ return result;
30116
+ }
30117
+ const orderFn = state.orderFn ||
30118
+ (state.order !== 'desc'
30119
+ ? (v1, v2) => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)
30120
+ : (v1, v2) => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1));
30121
+ return orderFn(this.getOriginalField(indexA, state.field), this.getOriginalField(indexB, state.field), state.order);
30122
+ }, 0);
30123
+ });
30113
30124
  this.currentIndexedData = sortedIndexArray;
30114
30125
  if (this.hierarchyExpandLevel) {
30115
30126
  let nodeLength = sortedIndexArray.length;
30116
- window.performance.now();
30117
30127
  for (let i = 0; i < nodeLength; i++) {
30118
30128
  const record = this.getOriginalRecord(sortedIndexArray[i]);
30119
30129
  const subNodeLength = this.pushChildrenNode(sortedIndexArray[i], record.hierarchyState, this.getOriginalRecord(sortedIndexArray[i]));
@@ -30121,11 +30131,16 @@
30121
30131
  i += subNodeLength;
30122
30132
  }
30123
30133
  }
30124
- if (!filedMap) {
30125
- filedMap = { asc: [], desc: [], normal: [] };
30126
- this.sortedIndexMap.set(field, filedMap);
30134
+ if (!filedMapArray.length) {
30135
+ filedMapArray = states.map(() => ({ asc: [], desc: [], normal: [] }));
30136
+ for (let index = 0; index < states.length; index++) {
30137
+ this.sortedIndexMap.set(states[index].field, filedMapArray[index]);
30138
+ }
30127
30139
  }
30128
- filedMap[order] = sortedIndexArray;
30140
+ states.forEach((state, index) => {
30141
+ const mapItem = filedMapArray[index];
30142
+ mapItem[state.order] = sortedIndexArray.slice();
30143
+ });
30129
30144
  this.updatePagerData();
30130
30145
  this.fireListeners(EVENT_TYPE$1.CHANGE_ORDER, null);
30131
30146
  }
@@ -30187,22 +30202,27 @@
30187
30202
  }
30188
30203
  }
30189
30204
  clearSortedIndexMap() {
30190
- if (this.lastOrderField && this.lastOrder) {
30205
+ if (this.lastSortStates && this.lastSortStates.length > 0) {
30191
30206
  this.sortedIndexMap.forEach((sortMap, key) => {
30192
- if (key !== this.lastOrderField) {
30207
+ const isFieldInRules = this.lastSortStates.some(state => state.field === key);
30208
+ if (!isFieldInRules) {
30193
30209
  this.sortedIndexMap.delete(key);
30194
30210
  }
30195
- else if (this.lastOrder === 'asc') {
30196
- sortMap.desc = [];
30197
- sortMap.normal = [];
30198
- }
30199
- else if (this.lastOrder === 'desc') {
30200
- sortMap.asc = [];
30201
- sortMap.normal = [];
30202
- }
30203
30211
  else {
30204
- sortMap.desc = [];
30205
- sortMap.asc = [];
30212
+ this.lastSortStates.forEach(state => {
30213
+ if (state.order === 'asc') {
30214
+ sortMap.desc = [];
30215
+ sortMap.normal = [];
30216
+ }
30217
+ else if (state.order === 'desc') {
30218
+ sortMap.asc = [];
30219
+ sortMap.normal = [];
30220
+ }
30221
+ else {
30222
+ sortMap.asc = [];
30223
+ sortMap.desc = [];
30224
+ }
30225
+ });
30206
30226
  }
30207
30227
  });
30208
30228
  }
@@ -30363,7 +30383,7 @@
30363
30383
  return true;
30364
30384
  }
30365
30385
  reorderRecord(sourceIndex, targetIndex) {
30366
- if (this.lastOrder === 'asc' || this.lastOrder === 'desc') {
30386
+ if (this.lastSortStates?.some(state => state.order === 'asc' || state.order === 'desc')) {
30367
30387
  return;
30368
30388
  }
30369
30389
  else if (this.isCanExchangeOrder(sourceIndex, targetIndex)) {
@@ -30558,7 +30578,7 @@
30558
30578
  _setFieldCache(this._fieldCache, index, field, value);
30559
30579
  }
30560
30580
  recordPromiseCallBack(index, record) {
30561
- this._recordCache[index] = record;
30581
+ this._recordCache && (this._recordCache[index] = record);
30562
30582
  }
30563
30583
  get records() {
30564
30584
  return Array.isArray(this._recordCache) && this._recordCache.length > 0 ? this._recordCache : super.records;
@@ -30615,11 +30635,14 @@
30615
30635
  this.initTreeHierarchyState();
30616
30636
  this.updatePagerData();
30617
30637
  }
30618
- addRecordsForGroup(recordArr) {
30638
+ addRecordsForGroup(recordArr, recordIndex) {
30619
30639
  if (!isArray$1(recordArr) || recordArr.length === 0) {
30620
30640
  return;
30621
30641
  }
30622
- this.dataSourceObj.records.push(...recordArr);
30642
+ if (recordIndex === undefined || recordIndex > this.dataSourceObj.records) {
30643
+ recordIndex = this.dataSourceObj.records;
30644
+ }
30645
+ this.dataSourceObj.records.splice(recordIndex, 0, ...recordArr);
30623
30646
  this.updateGroup();
30624
30647
  }
30625
30648
  deleteRecordsForGroup(recordIndexs) {
@@ -34013,11 +34036,14 @@
34013
34036
 
34014
34037
  function createCell(type, value, define, table, col, row, colWidth, cellWidth, cellHeight, columnGroup, y, padding, textAlign, textBaseline, mayHaveIcon, cellTheme, range, customResult) {
34015
34038
  let isAsync = false;
34039
+ let cellGroup;
34016
34040
  if (isPromise(value)) {
34041
+ if (table.scenegraph.highPerformanceGetCell(col, row).role !== 'cell') {
34042
+ return cellGroup;
34043
+ }
34017
34044
  value = table.getCellValue(col, row);
34018
34045
  isAsync = true;
34019
34046
  }
34020
- let cellGroup;
34021
34047
  if (type === 'text' || type === 'link' || customResult) {
34022
34048
  if (type === 'link') {
34023
34049
  const cellValue = value;
@@ -34071,7 +34097,7 @@
34071
34097
  const axisConfig = table.internalProps.layoutMap.getAxisConfigInPivotChart(col, row);
34072
34098
  if (axisConfig) {
34073
34099
  const CartesianAxis = Factory.getComponent('axis');
34074
- const axis = new CartesianAxis(axisConfig, cellGroup.attribute.width, cellGroup.attribute.height, padding, table);
34100
+ const axis = new CartesianAxis(axisConfig, cellGroup.attribute.width, cellGroup.attribute.height, axisConfig.__vtablePadding ?? padding, table);
34075
34101
  cellGroup.clear();
34076
34102
  cellGroup.appendChild(axis.component);
34077
34103
  axis.overlap();
@@ -34137,6 +34163,7 @@
34137
34163
  let cellTheme;
34138
34164
  let customStyle;
34139
34165
  let customResult;
34166
+ let isCustomMerge = false;
34140
34167
  if (table.internalProps.customMergeCell) {
34141
34168
  const customMerge = table.getCustomMerge(col, row);
34142
34169
  if (customMerge) {
@@ -34152,6 +34179,7 @@
34152
34179
  if (customLayout || customRender) {
34153
34180
  customResult = dealWithCustom(customLayout, customRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], range, table);
34154
34181
  }
34182
+ isCustomMerge = true;
34155
34183
  }
34156
34184
  }
34157
34185
  let colForDefine = col;
@@ -34171,10 +34199,10 @@
34171
34199
  range = table.getCellRange(col, row);
34172
34200
  isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;
34173
34201
  }
34174
- let isvtableMerge = false;
34202
+ let isVtableMerge = false;
34175
34203
  if (table.internalProps.enableTreeNodeMerge && isMerge) {
34176
34204
  const { vtableMergeName, vtableMerge } = table.getCellRawRecord(range.start.col, range.start.row);
34177
- isvtableMerge = vtableMerge;
34205
+ isVtableMerge = vtableMerge;
34178
34206
  if (vtableMerge) {
34179
34207
  mayHaveIcon = true;
34180
34208
  if (table.options.groupTitleCustomLayout) {
@@ -34270,7 +34298,7 @@
34270
34298
  if (!addNew && oldCellGroup.role === 'empty') {
34271
34299
  return undefined;
34272
34300
  }
34273
- const type = isvtableMerge
34301
+ const type = isVtableMerge || isCustomMerge
34274
34302
  ? 'text'
34275
34303
  : table.isHeader(col, row)
34276
34304
  ? table._getHeaderLayoutMap(col, row).headerType
@@ -35438,8 +35466,9 @@
35438
35466
  }
35439
35467
  cell.needUpdateHeight = false;
35440
35468
  cell.setAttribute('height', distHeight);
35441
- const isvtableMerge = scene.table.getCellRawRecord(col, row)?.vtableMerge;
35442
- const type = isvtableMerge
35469
+ const isVtableMerge = scene.table.getCellRawRecord(col, row)?.vtableMerge;
35470
+ const isCustomMerge = !!scene.table.getCustomMerge(col, row);
35471
+ const type = isVtableMerge || isCustomMerge
35443
35472
  ? 'text'
35444
35473
  : scene.table.isHeader(col, row)
35445
35474
  ? scene.table._getHeaderLayoutMap(col, row).headerType
@@ -35779,8 +35808,9 @@
35779
35808
  return false;
35780
35809
  }
35781
35810
  const autoRowHeight = scene.table.isAutoRowHeight(row);
35782
- const isvtableMerge = scene.table.getCellRawRecord(col, row)?.vtableMerge;
35783
- const type = isvtableMerge
35811
+ const isVtableMerge = scene.table.getCellRawRecord(col, row)?.vtableMerge;
35812
+ const isCustomMerge = !!scene.table.getCustomMerge(col, row);
35813
+ const type = isVtableMerge || isCustomMerge
35784
35814
  ? 'text'
35785
35815
  : scene.table.isHeader(col, row)
35786
35816
  ? scene.table._getHeaderLayoutMap(col, row).headerType
@@ -35822,7 +35852,7 @@
35822
35852
  const padding = getQuadProps(getProp('padding', cellStyle, col, row, scene.table));
35823
35853
  if (axisConfig) {
35824
35854
  const CartesianAxis = Factory.getComponent('axis');
35825
- const axis = new CartesianAxis(axisConfig, cellGroup.attribute.width, cellGroup.attribute.height, padding, scene.table);
35855
+ const axis = new CartesianAxis(axisConfig, cellGroup.attribute.width, cellGroup.attribute.height, axisConfig.__vtablePadding ?? padding, scene.table);
35826
35856
  cellGroup.clear();
35827
35857
  cellGroup.appendChild(axis.component);
35828
35858
  axis.overlap();
@@ -37340,6 +37370,9 @@
37340
37370
  }
37341
37371
  }
37342
37372
  function updateFrameBorder(group, frameTheme, strokeArray) {
37373
+ if (!frameTheme) {
37374
+ return;
37375
+ }
37343
37376
  const { borderColor } = frameTheme;
37344
37377
  group.border?.setAttribute('stroke', getStroke(borderColor, strokeArray));
37345
37378
  }
@@ -39769,6 +39802,7 @@
39769
39802
  let isMerge;
39770
39803
  let customStyle;
39771
39804
  let customResult;
39805
+ let isCustomMerge = false;
39772
39806
  if (table.internalProps.customMergeCell) {
39773
39807
  const customMerge = table.getCustomMerge(col, row);
39774
39808
  if (customMerge) {
@@ -39786,6 +39820,7 @@
39786
39820
  if (customLayout || customRender) {
39787
39821
  customResult = dealWithCustom(customLayout, customRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], range, table);
39788
39822
  }
39823
+ isCustomMerge = true;
39789
39824
  }
39790
39825
  }
39791
39826
  let colForDefine = col;
@@ -39814,10 +39849,10 @@
39814
39849
  cellHeight = mergeSize.cellHeight;
39815
39850
  }
39816
39851
  }
39817
- let isvtableMerge = false;
39852
+ let isVtableMerge = false;
39818
39853
  if (table.internalProps.enableTreeNodeMerge && isMerge) {
39819
39854
  const { vtableMergeName, vtableMerge } = table.getCellRawRecord(range.start.col, range.start.row);
39820
- isvtableMerge = vtableMerge;
39855
+ isVtableMerge = vtableMerge;
39821
39856
  if (vtableMerge) {
39822
39857
  mayHaveIcon = true;
39823
39858
  if (table.options.groupTitleCustomLayout) {
@@ -39845,7 +39880,7 @@
39845
39880
  if (cellLocation !== 'body' && !cellTheme.group.fill) {
39846
39881
  cellTheme.group.fill = '#fff';
39847
39882
  }
39848
- const type = isvtableMerge
39883
+ const type = isVtableMerge || isCustomMerge
39849
39884
  ? 'text'
39850
39885
  : (table.isHeader(col, row)
39851
39886
  ? table._getHeaderLayoutMap(col, row).headerType
@@ -43208,7 +43243,7 @@
43208
43243
  const cellStyle = table._getCellStyle(cell.col, cell.row);
43209
43244
  const padding = getQuadProps(getProp('padding', cellStyle, cell.col, cell.row, table));
43210
43245
  const CartesianAxis = Factory.getComponent('axis');
43211
- const axis = new CartesianAxis(axisConfig, cell.attribute.width, cell.attribute.height, padding, table);
43246
+ const axis = new CartesianAxis(axisConfig, cell.attribute.width, cell.attribute.height, axisConfig.__vtablePadding ?? padding, table);
43212
43247
  cell.clear();
43213
43248
  cell.appendChild(axis.component);
43214
43249
  axis.overlap();
@@ -43456,7 +43491,7 @@
43456
43491
  }
43457
43492
  else {
43458
43493
  let oldIconMark;
43459
- oldSortCell.forEachChildren((mark) => {
43494
+ traverseObject(oldSortCell, 'children', (mark) => {
43460
43495
  if (mark.attribute.funcType === 'sort') {
43461
43496
  oldIconMark = mark;
43462
43497
  return true;
@@ -43480,7 +43515,8 @@
43480
43515
  }
43481
43516
  return false;
43482
43517
  }
43483
- function updateSortIcon(col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark, scene) {
43518
+ function updateSortIcon(options) {
43519
+ const { col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark, scene } = options;
43484
43520
  const icon = scene.table.internalProps.headerHelper.getSortIcon(order, scene.table, col, row);
43485
43521
  if (iconMark) {
43486
43522
  updateIcon(iconMark, icon, col, row, scene);
@@ -44334,8 +44370,9 @@
44334
44370
  setIconHoverStyle(icon, col, row, cellGroup) {
44335
44371
  setIconHoverStyle(icon, col, row, cellGroup, this);
44336
44372
  }
44337
- updateSortIcon(col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark) {
44338
- updateSortIcon(col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark, this);
44373
+ updateSortIcon(options) {
44374
+ const { col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark } = options;
44375
+ updateSortIcon({ col, row, iconMark, order, oldSortCol, oldSortRow, oldIconMark, scene: this });
44339
44376
  }
44340
44377
  updateFrozenIcon(col, oldFrozenCol) {
44341
44378
  updateFrozenIcon(this);
@@ -45063,8 +45100,8 @@
45063
45100
  this.updateNextFrame();
45064
45101
  }
45065
45102
  updateCellContentWhileResize(col, row) {
45066
- const isvtableMerge = this.table.getCellRawRecord(col, row)?.vtableMerge;
45067
- const type = isvtableMerge
45103
+ const isVtableMerge = this.table.getCellRawRecord(col, row)?.vtableMerge;
45104
+ const type = isVtableMerge
45068
45105
  ? 'text'
45069
45106
  : this.table.isHeader(col, row)
45070
45107
  ? this.table._getHeaderLayoutMap(col, row).headerType
@@ -45603,10 +45640,28 @@
45603
45640
  if (sortEventReturns.includes(false)) {
45604
45641
  return;
45605
45642
  }
45606
- table.internalProps.sortState = tableState;
45607
- table.stateManager.setSortState(tableState);
45643
+ let isArraySortState = false;
45644
+ let sortState = table.internalProps.sortState
45645
+ ? Array.isArray(table.internalProps.sortState) && (isArraySortState = true)
45646
+ ? table.internalProps.sortState
45647
+ : [table.internalProps.sortState]
45648
+ : [];
45649
+ if (Array.isArray(sortState)) {
45650
+ const index = sortState.findIndex(item => item.field === tableState.field);
45651
+ if (index >= 0) {
45652
+ sortState[index] = tableState;
45653
+ }
45654
+ else {
45655
+ sortState.push(tableState);
45656
+ }
45657
+ }
45658
+ sortState = sortState.filter(item => item.order !== 'normal');
45659
+ sortState = table.internalProps.multipleSort && (isArraySortState = true) ? sortState : sortState.splice(-1);
45660
+ sortState = isArraySortState && sortState.length ? sortState : sortState[0];
45661
+ table.internalProps.sortState = sortState;
45662
+ table.stateManager.setSortState(sortState);
45608
45663
  if (headerC?.sort) {
45609
- executeSort(tableState, table, headerC);
45664
+ executeSort(sortState, table);
45610
45665
  }
45611
45666
  table.internalProps.useOneRowHeightFillAll = false;
45612
45667
  table.internalProps.layoutMap.clearCellRangeMap();
@@ -45616,20 +45671,15 @@
45616
45671
  table.stateManager.endSelectCells(true, isHasSelected);
45617
45672
  }
45618
45673
  function executeSort(newState, table, headerDefine) {
45619
- const hd = table.internalProps.layoutMap.headerObjects.find((col) => col && col.field === newState.field);
45620
- if (!hd) {
45621
- return;
45622
- }
45623
- const { field } = hd;
45624
- if (field === null) {
45625
- return;
45626
- }
45627
- if (typeof headerDefine.sort === 'function') {
45628
- table.dataSource.sort(field, newState.order || 'asc', headerDefine.sort);
45629
- }
45630
- else {
45631
- table.dataSource.sort(field, newState.order || 'asc', defaultOrderFn);
45632
- }
45674
+ newState = Array.isArray(newState) || !newState ? newState : [newState];
45675
+ table.dataSource.sort((newState || []).map(item => {
45676
+ const hd = table.internalProps.layoutMap.headerObjects.find((col) => col && col.field === item.field);
45677
+ return {
45678
+ field: item.field,
45679
+ order: item.order || 'asc',
45680
+ orderFn: typeof hd?.define?.sort === 'function' ? hd?.define?.sort : defaultOrderFn
45681
+ };
45682
+ }));
45633
45683
  }
45634
45684
  function isTarget(col, row, range1Col, range1Row, table) {
45635
45685
  return table._getLayoutCellId(col, row) === table._getLayoutCellId(range1Col, range1Row);
@@ -47031,11 +47081,13 @@
47031
47081
  highlightIndex: -1,
47032
47082
  dropDownMenuHighlight: []
47033
47083
  };
47034
- this.sort = {
47035
- col: -1,
47036
- row: -1,
47037
- order: 'normal'
47038
- };
47084
+ this.sort = [
47085
+ {
47086
+ col: -1,
47087
+ row: -1,
47088
+ order: 'normal'
47089
+ }
47090
+ ];
47039
47091
  this.frozen = {
47040
47092
  col: -1
47041
47093
  };
@@ -47108,11 +47160,13 @@
47108
47160
  highlightIndex: -1,
47109
47161
  dropDownMenuHighlight: []
47110
47162
  };
47111
- this.sort = {
47112
- col: -1,
47113
- row: -1,
47114
- order: 'normal'
47115
- };
47163
+ this.sort = [
47164
+ {
47165
+ col: -1,
47166
+ row: -1,
47167
+ order: 'normal'
47168
+ }
47169
+ ];
47116
47170
  this.frozen = {
47117
47171
  col: -1
47118
47172
  };
@@ -47201,8 +47255,38 @@
47201
47255
  return seled;
47202
47256
  }
47203
47257
  setSortState(sortState) {
47204
- this.sort.field = sortState?.field;
47205
- this.sort.order = sortState?.order;
47258
+ sortState = !sortState || Array.isArray(sortState) ? sortState : [sortState];
47259
+ function flattenColumns(columns) {
47260
+ const result = [];
47261
+ function flatten(cols, parentStartIndex = 0) {
47262
+ cols.forEach((col) => {
47263
+ const startIndex = col.startInTotal ?? parentStartIndex;
47264
+ if (col.columns) {
47265
+ flatten(col.columns, startIndex);
47266
+ }
47267
+ else {
47268
+ result.push({
47269
+ ...col,
47270
+ startIndex
47271
+ });
47272
+ }
47273
+ });
47274
+ }
47275
+ flatten(columns);
47276
+ return result;
47277
+ }
47278
+ const sort = sortState &&
47279
+ sortState.reduce((prev, item) => {
47280
+ const column = flattenColumns(this.table.internalProps.columns)?.find(column => column?.field === item?.field);
47281
+ prev.push({
47282
+ field: item.field,
47283
+ order: item.order,
47284
+ col: column.startInTotal,
47285
+ row: column.level
47286
+ });
47287
+ return prev;
47288
+ }, []);
47289
+ this.sort = sort || [];
47206
47290
  }
47207
47291
  setFrozenState() {
47208
47292
  this.frozen.col = this.table.frozenColCount - 1;
@@ -47787,28 +47871,92 @@
47787
47871
  });
47788
47872
  return;
47789
47873
  }
47790
- const oldSortCol = this.sort.col;
47791
- const oldSortRow = this.sort.row;
47874
+ const previousSort = [...this.sort];
47875
+ const previousSortItem = this.table.internalProps.multipleSort || !previousSort.length ? null : this.sort[this.sort.length - 1];
47792
47876
  dealSort(col, row, this.table, event);
47793
- this.sort.col = col;
47794
- this.sort.row = row;
47795
- this.table.scenegraph.updateSortIcon(this.sort.col, this.sort.row, iconMark, this.sort.order, oldSortCol, oldSortRow, this.sort.icon);
47796
- this.sort.icon = iconMark;
47877
+ const currentSortItem = this.sort.find(item => item.col === col && item.row === row);
47878
+ const oldSortCol = this.table.internalProps.multipleSort || !previousSortItem ? null : previousSortItem.col;
47879
+ const oldSortRow = this.table.internalProps.multipleSort || !previousSortItem ? null : previousSortItem.row;
47880
+ const currentSortItemIndex = previousSort.findIndex(item => item.col === col && item.row === row);
47881
+ if (currentSortItemIndex >= 0) {
47882
+ previousSort.splice(currentSortItemIndex, 1);
47883
+ }
47884
+ this.table.scenegraph.updateSortIcon({
47885
+ col: col,
47886
+ row: row,
47887
+ iconMark,
47888
+ order: currentSortItem?.order,
47889
+ oldSortCol,
47890
+ oldSortRow,
47891
+ oldIconMark: previousSortItem?.icon
47892
+ });
47893
+ if (currentSortItem) {
47894
+ currentSortItem.icon = iconMark;
47895
+ }
47896
+ if (!this.table.internalProps.multipleSort) {
47897
+ previousSort.forEach((sortItem) => {
47898
+ this.table.scenegraph.updateSortIcon({
47899
+ col: null,
47900
+ row: null,
47901
+ iconMark: null,
47902
+ order: 'normal',
47903
+ oldSortCol: sortItem.col,
47904
+ oldSortRow: sortItem.row,
47905
+ oldIconMark: null
47906
+ });
47907
+ });
47908
+ }
47797
47909
  }
47798
47910
  updateSortState(sortState) {
47799
- if (sortState.field === this.sort.field && sortState.order === this.sort.order) {
47800
- return;
47911
+ sortState = Array.isArray(sortState) ? sortState : [sortState];
47912
+ for (let index = 0; index < sortState.length; index++) {
47913
+ if ((sortState[index].field === this.sort[index]?.field) && (sortState[sortState.length - 1].order === this.sort[index]?.order)) {
47914
+ return;
47915
+ }
47916
+ const oldSortCol = this.table.internalProps.multipleSort ? null : this.sort[index]?.col || null;
47917
+ const oldSortRow = this.table.internalProps.multipleSort ? null : this.sort[index]?.row || null;
47918
+ this.sort[index]?.order === 'asc' ? 'sort_downward' : this.sort[index]?.order === 'desc' ? 'sort_upward' : 'sort_normal';
47919
+ this.setSortState(sortState);
47920
+ const cellAddress = this.table.internalProps.layoutMap.getHeaderCellAddressByField(sortState[index].field);
47921
+ this.sort[index].col = cellAddress.col;
47922
+ this.sort[index].row = cellAddress.row;
47923
+ const cellGroup = this.table.scenegraph.getCell(this.sort[index].col, this.sort[index].row);
47924
+ let iconMark;
47925
+ traverseObject(cellGroup, 'children', (mark) => {
47926
+ if (mark.attribute.funcType === 'sort') {
47927
+ iconMark = mark;
47928
+ return true;
47929
+ }
47930
+ return false;
47931
+ });
47932
+ this.table.scenegraph.updateSortIcon({
47933
+ col: this.sort[index].col,
47934
+ row: this.sort[index].row,
47935
+ iconMark,
47936
+ order: this.sort[index].order,
47937
+ oldSortCol,
47938
+ oldSortRow,
47939
+ oldIconMark: this.sort[index]?.icon
47940
+ });
47941
+ }
47942
+ const normalHeaders = [];
47943
+ this.table.internalProps.layoutMap.columnTree.tree.children.forEach((item) => {
47944
+ if (!sortState.some((state) => state.field === item.field)) {
47945
+ normalHeaders.push(item);
47946
+ }
47947
+ });
47948
+ for (let index = 0; index < normalHeaders.length; index++) {
47949
+ const column = normalHeaders[index];
47950
+ this.table.scenegraph.updateSortIcon({
47951
+ col: null,
47952
+ row: null,
47953
+ iconMark: null,
47954
+ order: null,
47955
+ oldSortCol: column.startInTotal,
47956
+ oldSortRow: column.level,
47957
+ oldIconMark: null
47958
+ });
47801
47959
  }
47802
- const oldSortCol = this.sort.col;
47803
- const oldSortRow = this.sort.row;
47804
- const name = this.sort.order === 'asc' ? 'sort_downward' : this.sort.order === 'desc' ? 'sort_upward' : 'sort_normal';
47805
- this.setSortState(sortState);
47806
- const cellAddress = this.table.internalProps.layoutMap.getHeaderCellAddressByField(sortState.field);
47807
- this.sort.col = cellAddress.col;
47808
- this.sort.row = cellAddress.row;
47809
- const cellGroup = this.table.scenegraph.getCell(this.sort.col, this.sort.row);
47810
- const iconMark = cellGroup.getChildByName(name, true);
47811
- this.table.scenegraph.updateSortIcon(this.sort.col, this.sort.row, iconMark, this.sort.order, oldSortCol, oldSortRow, this.sort.icon);
47812
47960
  }
47813
47961
  triggerFreeze(col, row, iconMark) {
47814
47962
  if (this.table.isPivotTable() || this.table.transpose) {
@@ -48091,7 +48239,7 @@
48091
48239
  state.showVerticalScrollBar(true);
48092
48240
  }
48093
48241
  isWheelEvent && state.resetInteractionState();
48094
- if (event.nativeEvent.cancelable &&
48242
+ if (event.nativeEvent?.cancelable &&
48095
48243
  (state.table.internalProps.overscrollBehavior === 'none' ||
48096
48244
  (Math.abs(deltaY) >= Math.abs(deltaX) && deltaY !== 0 && isVerticalScrollable(deltaY, state)) ||
48097
48245
  (Math.abs(deltaY) <= Math.abs(deltaX) && deltaX !== 0 && isHorizontalScrollable(deltaX, state)))) {
@@ -48224,7 +48372,8 @@
48224
48372
  }
48225
48373
  return;
48226
48374
  }
48227
- else if (table.eventManager.isDraging &&
48375
+ else if (!table.options.select?.disableDragSelect &&
48376
+ table.eventManager.isDraging &&
48228
48377
  stateManager.isSelecting() &&
48229
48378
  !table.editorManager?.editingEditor) {
48230
48379
  eventManager.dealTableSelect(eventArgsSet, true);
@@ -48439,20 +48588,31 @@
48439
48588
  }
48440
48589
  }
48441
48590
  }
48442
- const isCompleteEdit = table.editorManager?.completeEdit(e.nativeEvent);
48443
- getPromiseValue(isCompleteEdit, isCompleteEdit => {
48444
- if (isCompleteEdit === false) {
48445
- return;
48446
- }
48447
- stateManager.updateInteractionState(InteractionState.default);
48448
- eventManager.dealTableHover();
48449
- if (table.options.select?.outsideClickDeselect) {
48450
- const isHasSelected = !!stateManager.select.ranges?.length;
48451
- eventManager.dealTableSelect();
48452
- stateManager.endSelectCells(true, isHasSelected);
48453
- }
48454
- });
48455
48591
  });
48592
+ const globalPointerupCallback = (e) => {
48593
+ const target = e.target;
48594
+ if (!table.getElement().contains(target)) {
48595
+ const isCompleteEdit = table.editorManager?.completeEdit(e);
48596
+ getPromiseValue(isCompleteEdit, isCompleteEdit => {
48597
+ if (isCompleteEdit === false) {
48598
+ return;
48599
+ }
48600
+ stateManager.updateInteractionState(InteractionState.default);
48601
+ eventManager.dealTableHover();
48602
+ if (table.options.select?.outsideClickDeselect) {
48603
+ const isHasSelected = !!stateManager.select.ranges?.length;
48604
+ eventManager.dealTableSelect();
48605
+ stateManager.endSelectCells(true, isHasSelected);
48606
+ }
48607
+ });
48608
+ }
48609
+ };
48610
+ eventManager.globalEventListeners.push({
48611
+ name: 'pointerup',
48612
+ env: 'document',
48613
+ callback: globalPointerupCallback
48614
+ });
48615
+ vglobal.addEventListener('pointerup', globalPointerupCallback);
48456
48616
  table.scenegraph.tableGroup.addEventListener('pointerdown', (e) => {
48457
48617
  if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE)) {
48458
48618
  table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE, {
@@ -48476,6 +48636,9 @@
48476
48636
  if (eventArgsSet.eventArgs?.target !== stateManager.residentHoverIcon?.icon) {
48477
48637
  stateManager.hideMenu();
48478
48638
  }
48639
+ if (eventArgsSet?.eventArgs?.target.type === 'chart') {
48640
+ return;
48641
+ }
48479
48642
  const isCompleteEdit = table.editorManager?.completeEdit(e.nativeEvent);
48480
48643
  getPromiseValue(isCompleteEdit, isCompleteEdit => {
48481
48644
  if (isCompleteEdit === false) {
@@ -50642,7 +50805,7 @@
50642
50805
  iconPropKeys.forEach(k => {
50643
50806
  if (typeof iconOpt[k] !== 'undefined') {
50644
50807
  const f = this._table.getFieldData(iconOpt[k], col, row);
50645
- if (f != null) {
50808
+ if (isValid$1(f)) {
50646
50809
  retIcon[k] = f;
50647
50810
  }
50648
50811
  else if (!this._table._hasField?.(iconOpt[k], col, row)) {
@@ -52736,7 +52899,8 @@
52736
52899
  value: node.value,
52737
52900
  hierarchyState: node.hierarchyState,
52738
52901
  children: undefined,
52739
- virtual: node.virtual ?? false
52902
+ virtual: node.virtual ?? false,
52903
+ levelSpan: node.levelSpan ?? 1
52740
52904
  };
52741
52905
  tree.push(diemnsonNode);
52742
52906
  if (node.children) {
@@ -52846,6 +53010,9 @@
52846
53010
  for (let i = 1; i < hd.levelSpan; i++) {
52847
53011
  if (!_headerCellIds[row + i]) {
52848
53012
  _headerCellIds[row + i] = [];
53013
+ for (let col = 0; col < layoutMap.colIndex; col++) {
53014
+ _headerCellIds[row + i][col] = _headerCellIds[row][col];
53015
+ }
52849
53016
  }
52850
53017
  _headerCellIds[row + i][layoutMap.colIndex] = id;
52851
53018
  }
@@ -53704,6 +53871,8 @@
53704
53871
  if (!axisRange) {
53705
53872
  return;
53706
53873
  }
53874
+ const chartCellStyle = layout._table._getCellStyle(col, row + 1);
53875
+ const padding = getQuadProps(getProp('padding', chartCellStyle, col, row + 1, layout._table));
53707
53876
  const { range, ticks, axisOption, isZeroAlign, theme } = axisRange;
53708
53877
  if (isZeroAlign) {
53709
53878
  const subAxisRange = getRange$1('bottom', col, row + 1, col, layout.columnHeaderLevelCount - 1, col, row, 0, layout);
@@ -53737,7 +53906,8 @@
53737
53906
  flush: true
53738
53907
  },
53739
53908
  __ticksForVTable: ticks,
53740
- __vtableChartTheme: theme
53909
+ __vtableChartTheme: theme,
53910
+ __vtablePadding: padding
53741
53911
  });
53742
53912
  }
53743
53913
  else if (row === layout.rowCount - layout.bottomFrozenRowCount &&
@@ -53755,6 +53925,8 @@
53755
53925
  if (!axisRange) {
53756
53926
  return;
53757
53927
  }
53928
+ const chartCellStyle = layout._table._getCellStyle(col, row - 1);
53929
+ const padding = getQuadProps(getProp('padding', chartCellStyle, col, row - 1, layout._table));
53758
53930
  const { range, ticks, axisOption, isZeroAlign, theme } = axisRange;
53759
53931
  if (isZeroAlign) {
53760
53932
  const subAxisRange = getRange$1('top', col, row - 1, col, row, col, row, 1, layout);
@@ -53792,7 +53964,8 @@
53792
53964
  flush: true
53793
53965
  },
53794
53966
  __ticksForVTable: ticks,
53795
- __vtableChartTheme: theme
53967
+ __vtableChartTheme: theme,
53968
+ __vtablePadding: padding
53796
53969
  });
53797
53970
  }
53798
53971
  else if (col === layout.rowHeaderLevelCount - 1 &&
@@ -53809,6 +53982,8 @@
53809
53982
  if (axisOption?.visible === false) {
53810
53983
  return;
53811
53984
  }
53985
+ const chartCellStyle = layout._table._getCellStyle(col + 1, row);
53986
+ const padding = getQuadProps(getProp('padding', chartCellStyle, col + 1, row, layout._table));
53812
53987
  const spec = layout.getRawChartSpec(col + 1, row);
53813
53988
  return merge({
53814
53989
  domain: axisOption?.type === 'linear' ? undefined : Array.from(domain),
@@ -53820,7 +53995,8 @@
53820
53995
  orient: 'left',
53821
53996
  type: axisOption?.type ?? 'band',
53822
53997
  __vtableChartTheme: theme,
53823
- inverse: transformInverse(axisOption, (spec?.direction ?? (chartType === 'scatter' ? 'vertical' : 'horizontal')) === "horizontal")
53998
+ inverse: transformInverse(axisOption, (spec?.direction ?? (chartType === 'scatter' ? 'vertical' : 'horizontal')) === "horizontal"),
53999
+ __vtablePadding: padding
53824
54000
  });
53825
54001
  }
53826
54002
  }
@@ -53840,6 +54016,8 @@
53840
54016
  if (!axisRange) {
53841
54017
  return;
53842
54018
  }
54019
+ const chartCellStyle = layout._table._getCellStyle(col + 1, row);
54020
+ const padding = getQuadProps(getProp('padding', chartCellStyle, col + 1, row, layout._table));
53843
54021
  const { range, ticks, axisOption, isZeroAlign, theme } = axisRange;
53844
54022
  if (isZeroAlign) {
53845
54023
  const subAxisRange = getRange$1('right', col + 1, row, col, row, col, row, 1, layout);
@@ -53878,7 +54056,8 @@
53878
54056
  flush: true
53879
54057
  },
53880
54058
  __ticksForVTable: ticks,
53881
- __vtableChartTheme: theme
54059
+ __vtableChartTheme: theme,
54060
+ __vtablePadding: padding
53882
54061
  });
53883
54062
  }
53884
54063
  else if (col === layout.colCount - layout.rightFrozenColCount &&
@@ -53888,6 +54067,8 @@
53888
54067
  if (!axisRange) {
53889
54068
  return;
53890
54069
  }
54070
+ const chartCellStyle = layout._table._getCellStyle(col - 1, row);
54071
+ const padding = getQuadProps(getProp('padding', chartCellStyle, col - 1, row, layout._table));
53891
54072
  const { range, ticks, axisOption, isZeroAlign, theme } = axisRange;
53892
54073
  if (isZeroAlign) {
53893
54074
  const subAxisRange = getRange$1('left', col - 1, row, layout.rowHeaderLevelCount - 1, row, col, row, 0, layout);
@@ -53924,7 +54105,8 @@
53924
54105
  flush: true
53925
54106
  },
53926
54107
  __ticksForVTable: ticks,
53927
- __vtableChartTheme: theme
54108
+ __vtableChartTheme: theme,
54109
+ __vtablePadding: padding
53928
54110
  });
53929
54111
  }
53930
54112
  else if (row === layout.rowCount - layout.bottomFrozenRowCount &&
@@ -53941,13 +54123,16 @@
53941
54123
  if (axisOption?.visible === false) {
53942
54124
  return;
53943
54125
  }
54126
+ const chartCellStyle = layout._table._getCellStyle(col, row - 1);
54127
+ const padding = getQuadProps(getProp('padding', chartCellStyle, col, row - 1, layout._table));
53944
54128
  return merge({
53945
54129
  domain: axisOption?.type === 'linear' ? undefined : Array.from(domain),
53946
54130
  range: axisOption?.type === 'linear' ? domain : undefined
53947
54131
  }, axisOption, {
53948
54132
  orient: 'bottom',
53949
54133
  type: axisOption?.type ?? 'band',
53950
- __vtableChartTheme: theme
54134
+ __vtableChartTheme: theme,
54135
+ __vtablePadding: padding
53951
54136
  });
53952
54137
  }
53953
54138
  }
@@ -54103,7 +54288,9 @@
54103
54288
  range.max = range.max > 0 ? 1 : 0;
54104
54289
  }
54105
54290
  const getAxisDomainRangeAndLabels = Factory.getFunction('getAxisDomainRangeAndLabels');
54106
- const { range: niceRange, ticks } = getAxisDomainRangeAndLabels(range.min, range.max, axisOption, isZeroAlign, layout._table.getColWidth(col));
54291
+ const { range: niceRange, ticks } = getAxisDomainRangeAndLabels(range.min, range.max, axisOption, isZeroAlign, position === 'bottom' || position === 'top'
54292
+ ? layout._table.getColWidth(col) || layout._table.tableNoFrameWidth
54293
+ : layout._table.getRowHeight(row) || layout._table.tableNoFrameHeight);
54107
54294
  range.min = !isNaN(niceRange[0]) ? niceRange[0] : 0;
54108
54295
  range.max = !isNaN(niceRange[1]) ? niceRange[1] : 1;
54109
54296
  if (isNumber$2(axisOption?.min)) {
@@ -54437,7 +54624,7 @@
54437
54624
  return TABLE_EVENT_TYPE;
54438
54625
  }
54439
54626
  options;
54440
- version = "1.7.5-alpha.1";
54627
+ version = "1.7.5";
54441
54628
  pagination;
54442
54629
  id = `VTable${Date.now()}`;
54443
54630
  headerStyleCache;
@@ -56265,7 +56452,7 @@
56265
56452
  return undefined;
56266
56453
  }
56267
56454
  _hasField(field, col, row) {
56268
- if (field == null) {
56455
+ if (field === null) {
56269
56456
  return false;
56270
56457
  }
56271
56458
  const table = this;
@@ -56394,17 +56581,19 @@
56394
56581
  icons = this.internalProps.headerHelper.getIcons(col, row);
56395
56582
  }
56396
56583
  else if (this.internalProps.layoutMap.isSeriesNumber(col, row)) {
56397
- const dragOrder = this.internalProps.layoutMap.getSeriesNumberBody(col, row)?.define
56398
- ?.dragOrder;
56399
- if (dragOrder) {
56400
- icons = this.internalProps.rowSeriesNumberHelper.getIcons(col, row);
56584
+ if (!this.options.groupBy || !this.getCellRawRecord(col, row)?.vtableMerge) {
56585
+ const dragOrder = this.internalProps.layoutMap.getSeriesNumberBody(col, row)?.define
56586
+ ?.dragOrder;
56587
+ if (dragOrder) {
56588
+ icons = this.internalProps.rowSeriesNumberHelper.getIcons(col, row);
56589
+ }
56401
56590
  }
56402
56591
  const cellValue = this.getCellValue(col, row);
56403
56592
  const dataValue = this.getCellOriginValue(col, row);
56404
56593
  const ctx = this.internalProps.context;
56405
56594
  const cellIcon = this.internalProps.bodyHelper.getIcons(col, row, cellValue, dataValue, ctx);
56406
56595
  if (icons?.length > 0) {
56407
- icons = icons.concat();
56596
+ icons = icons.concat(cellIcon);
56408
56597
  }
56409
56598
  else if (cellIcon?.length > 0) {
56410
56599
  icons = cellIcon;
@@ -58072,7 +58261,9 @@
58072
58261
  }
58073
58262
  if (axisOption?.nice) {
58074
58263
  const getAxisDomainRangeAndLabels = Factory.getFunction('getAxisDomainRangeAndLabels');
58075
- const { range: axisRange } = getAxisDomainRangeAndLabels(range.min, range.max, axisOption, isZeroAlign, layout._table.getColWidth(col));
58264
+ const { range: axisRange } = getAxisDomainRangeAndLabels(range.min, range.max, axisOption, isZeroAlign, position === 'bottom' || position === 'top'
58265
+ ? layout._table.getColWidth(col) || layout._table.tableNoFrameWidth
58266
+ : layout._table.getRowHeight(row) || layout._table.tableNoFrameHeight);
58076
58267
  range.min = axisRange[0];
58077
58268
  range.max = axisRange[1];
58078
58269
  }
@@ -59815,27 +60006,19 @@
59815
60006
  return cellUpdateType;
59816
60007
  }
59817
60008
  function sortRecords(table) {
59818
- if (table.sortState) {
59819
- let order;
59820
- let field;
59821
- if (Array.isArray(table.sortState)) {
59822
- if (table.sortState.length !== 0) {
59823
- ({ order, field } = table.sortState?.[0]);
59824
- }
59825
- }
59826
- else {
59827
- ({ order, field } = table.sortState);
59828
- }
59829
- if (order && field && order !== 'normal') {
59830
- const sortFunc = table._getSortFuncFromHeaderOption(undefined, field);
59831
- const hd = table.internalProps.layoutMap.headerObjects.find((col) => col && col.field === field);
59832
- hd && table.dataSource.sort(hd.field, order, sortFunc ?? defaultOrderFn);
59833
- }
60009
+ let sortState = table.sortState;
60010
+ sortState = !sortState || Array.isArray(sortState) ? sortState : [sortState];
60011
+ if (sortState) {
60012
+ sortState = sortState.map(item => {
60013
+ item.orderFn = table._getSortFuncFromHeaderOption(undefined, item.field) ?? defaultOrderFn;
60014
+ return item;
60015
+ });
60016
+ table.dataSource.sort(sortState);
59834
60017
  }
59835
60018
  }
59836
60019
  function listTableAddRecord(record, recordIndex, table) {
59837
60020
  if (table.options.groupBy) {
59838
- table.dataSource.addRecordsForGroup?.([record]);
60021
+ table.dataSource.addRecordsForGroup?.([record], recordIndex);
59839
60022
  table.refreshRowColCount();
59840
60023
  table.internalProps.layoutMap.clearCellRangeMap();
59841
60024
  table.scenegraph.clearCells();
@@ -59918,7 +60101,7 @@
59918
60101
  }
59919
60102
  function listTableAddRecords(records, recordIndex, table) {
59920
60103
  if (table.options.groupBy) {
59921
- table.dataSource.addRecordsForGroup?.(records);
60104
+ table.dataSource.addRecordsForGroup?.(records, recordIndex);
59922
60105
  table.refreshRowColCount();
59923
60106
  table.internalProps.layoutMap.clearCellRangeMap();
59924
60107
  table.scenegraph.clearCells();
@@ -60178,6 +60361,7 @@
60178
60361
  internalProps.frozenColDragHeaderMode = options.frozenColDragHeaderMode;
60179
60362
  this.pagination = options.pagination;
60180
60363
  internalProps.sortState = options.sortState;
60364
+ internalProps.multipleSort = !!options.multipleSort;
60181
60365
  internalProps.dataConfig = options.groupBy ? getGroupByDataConfig(options.groupBy) : {};
60182
60366
  internalProps.columns = options.columns
60183
60367
  ? cloneDeepSpec(options.columns, ['children'])
@@ -60304,6 +60488,14 @@
60304
60488
  const { title } = table.internalProps.layoutMap.getSeriesNumberHeader(col, row);
60305
60489
  return title;
60306
60490
  }
60491
+ if (this.options.groupBy) {
60492
+ const { vtableMerge } = table.getCellRawRecord(col, row);
60493
+ if (vtableMerge) {
60494
+ return '';
60495
+ }
60496
+ const indexs = this.dataSource.currentIndexedData[row - this.columnHeaderLevelCount];
60497
+ return indexs[indexs.length - 1] + 1;
60498
+ }
60307
60499
  const { format } = table.internalProps.layoutMap.getSeriesNumberBody(col, row);
60308
60500
  return typeof format === 'function' ? format(col, row, this) : row - this.columnHeaderLevelCount + 1;
60309
60501
  }
@@ -60774,8 +60966,10 @@
60774
60966
  if (!sortState) {
60775
60967
  if (this.internalProps.sortState) {
60776
60968
  if (Array.isArray(this.internalProps.sortState)) {
60777
- sortState = this.internalProps.sortState?.[0];
60778
- sortState && (sortState.order = 'normal');
60969
+ for (let i = 0; i < this.internalProps.sortState.length; i++) {
60970
+ sortState = this.internalProps.sortState?.[i];
60971
+ sortState && (sortState.order = 'normal');
60972
+ }
60779
60973
  }
60780
60974
  else {
60781
60975
  this.internalProps.sortState.order = 'normal';
@@ -60786,27 +60980,24 @@
60786
60980
  else {
60787
60981
  this.internalProps.sortState = sortState;
60788
60982
  }
60789
- let order;
60790
- let field;
60791
- if (Array.isArray(this.internalProps.sortState)) {
60792
- if (this.internalProps.sortState?.[0]) {
60793
- ({ order, field } = this.internalProps.sortState?.[0]);
60794
- }
60795
- }
60796
- else if (this.internalProps.sortState) {
60797
- ({ order, field } = this.internalProps.sortState);
60798
- }
60799
- if (field && executeSort) {
60800
- const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, field);
60801
- const hd = this.internalProps.layoutMap.headerObjects.find((col) => col && col.field === field);
60802
- if (hd && hd.define.sort !== false) {
60803
- this.dataSource.sort(hd.field, order, sortFunc);
60983
+ sortState = Array.isArray(sortState) ? sortState : [sortState];
60984
+ if (sortState.some((item) => item.field) && executeSort) {
60985
+ if (this.internalProps.layoutMap.headerObjects.some(item => item.define.sort !== false)) {
60986
+ this.dataSource.sort(sortState.map((item) => {
60987
+ const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, item.field);
60988
+ this.internalProps.layoutMap.headerObjects.find((col) => col && col.field === item.field);
60989
+ return {
60990
+ field: item.field,
60991
+ order: item.order,
60992
+ orderFn: sortFunc
60993
+ };
60994
+ }));
60804
60995
  this.internalProps.layoutMap.clearCellRangeMap();
60805
60996
  this.internalProps.useOneRowHeightFillAll = false;
60806
60997
  this.scenegraph.sortCell();
60807
60998
  }
60808
60999
  }
60809
- if (sortState) {
61000
+ if (sortState.length) {
60810
61001
  this.stateManager.updateSortState(sortState);
60811
61002
  }
60812
61003
  }
@@ -60880,27 +61071,24 @@
60880
61071
  const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };
60881
61072
  this.scenegraph.clearCells();
60882
61073
  if (sort !== undefined) {
60883
- this.internalProps.sortState = sort;
61074
+ this.internalProps.sortState = this.internalProps.multipleSort ? (Array.isArray(sort) ? sort : [sort]) : sort;
60884
61075
  this.stateManager.setSortState(this.sortState);
60885
61076
  }
60886
61077
  if (records) {
60887
61078
  _setRecords(this, records);
60888
61079
  if (this.sortState) {
60889
- let order;
60890
- let field;
60891
- if (Array.isArray(this.sortState)) {
60892
- if (this.sortState.length !== 0) {
60893
- ({ order, field } = this.sortState?.[0]);
60894
- }
60895
- }
60896
- else {
60897
- ({ order, field } = this.sortState);
60898
- }
60899
- if (order && field && order !== 'normal') {
60900
- const sortFunc = this._getSortFuncFromHeaderOption(undefined, field);
60901
- const hd = this.internalProps.layoutMap.headerObjectsIncludeHided.find((col) => col && col.field === field);
60902
- if (hd && hd.define.sort !== false) {
60903
- this.dataSource.sort(hd.field, order, sortFunc ?? defaultOrderFn);
61080
+ const sortState = Array.isArray(this.sortState) ? this.sortState : [this.sortState];
61081
+ if (sortState.some((item) => item.order && item.field && item.order !== 'normal')) {
61082
+ if (this.internalProps.layoutMap.headerObjectsIncludeHided.some(item => item.define.sort !== false)) {
61083
+ this.dataSource.sort(sortState.map((item) => {
61084
+ const sortFunc = this._getSortFuncFromHeaderOption(undefined, item.field);
61085
+ this.internalProps.layoutMap.headerObjectsIncludeHided.find((col) => col && col.field === item.field);
61086
+ return {
61087
+ field: item.field,
61088
+ order: item.order || 'asc',
61089
+ orderFn: sortFunc ?? defaultOrderFn
61090
+ };
61091
+ }));
60904
61092
  }
60905
61093
  }
60906
61094
  }
@@ -61512,7 +61700,9 @@
61512
61700
  tickData;
61513
61701
  scale;
61514
61702
  component;
61703
+ padding;
61515
61704
  constructor(option, width, height, padding, table) {
61705
+ this.padding = padding;
61516
61706
  this.table = table;
61517
61707
  this.orient = option.orient ?? 'left';
61518
61708
  this.type = option.type ?? 'band';
@@ -61521,13 +61711,13 @@
61521
61711
  const innerOffsetTop = 0;
61522
61712
  const innerOffsetBottom = 0;
61523
61713
  this.width = width;
61524
- this.height = height - padding[2] - innerOffsetBottom;
61714
+ this.height = height - padding[0] - padding[2] - innerOffsetBottom;
61525
61715
  this.y = padding[0] + innerOffsetTop;
61526
61716
  }
61527
61717
  else if (this.orient === 'top' || this.orient === 'bottom') {
61528
61718
  const innerOffsetLeft = 0;
61529
61719
  const innerOffsetRight = 0;
61530
- this.width = width - padding[1] - innerOffsetRight;
61720
+ this.width = width - padding[1] - padding[3] - innerOffsetRight;
61531
61721
  this.height = height;
61532
61722
  this.x = padding[3] + innerOffsetLeft;
61533
61723
  }
@@ -61605,19 +61795,19 @@
61605
61795
  this.component = new LineAxis(merge({
61606
61796
  disableTriggerEvent: this.table.options.disableInteraction
61607
61797
  }, axisStylrAttrs, attrs));
61608
- this.component.setAttributes(this.setLayoutStartPosition({ x: 0, y: 0 }));
61798
+ this.component.setAttributes(this.setLayoutStartPosition({ x: this.x, y: this.y }));
61609
61799
  this.component.originAxis = this;
61610
61800
  }
61611
61801
  resize(width, height) {
61612
- this.width = width;
61613
- this.height = height;
61802
+ this.width = width - (this.orient === 'top' || this.orient === 'bottom' ? this.padding[1] + this.padding[3] : 0);
61803
+ this.height = height - (this.orient === 'left' || this.orient === 'right' ? this.padding[2] + this.padding[0] : 0);
61614
61804
  this.updateScaleRange();
61615
61805
  this.computeData();
61616
61806
  const axisStylrAttrs = getAxisAttributes(this.option);
61617
61807
  const attrs = this.getUpdateAttribute();
61618
61808
  attrs.verticalFactor = this.orient === 'top' || this.orient === 'right' ? -1 : 1;
61619
61809
  this.component.setAttributes(merge({}, axisStylrAttrs, attrs));
61620
- this.component.setAttributes(this.setLayoutStartPosition({ x: 0, y: 0 }));
61810
+ this.component.setAttributes(this.setLayoutStartPosition({ x: this.x, y: this.y }));
61621
61811
  this.overlap();
61622
61812
  }
61623
61813
  overlap() {
@@ -61647,7 +61837,7 @@
61647
61837
  }
61648
61838
  const size = this.orient === 'top' || this.orient === 'bottom' ? height : width;
61649
61839
  const attrs = {
61650
- start: { x: this.x, y: this.y },
61840
+ start: { x: 0, y: 0 },
61651
61841
  end,
61652
61842
  title: {
61653
61843
  text: this.option.title.text,
@@ -64690,7 +64880,7 @@
64690
64880
  for (let i = 0; i < domain.length; i++) {
64691
64881
  let valid = false;
64692
64882
  for (let j = 0; j < values.length; j++) {
64693
- if (domain[i] == values[j]) {
64883
+ if (domain[i] === values[j]) {
64694
64884
  const data = dataValue[j];
64695
64885
  if (!isValid$1(data[xField]) || !isValid$1(data[yField])) {
64696
64886
  break;
@@ -66524,7 +66714,8 @@
66524
66714
  });
66525
66715
  }
66526
66716
  else {
66527
- this.rowDimensionKeys.forEach((objKey, index) => {
66717
+ const rowDimensionKeys = this.rowDimensionTree.dimensionKeysIncludeVirtual.valueArr();
66718
+ rowDimensionKeys.forEach((objKey, index) => {
66528
66719
  const dimension = this.rowsDefine?.find(dimension => typeof dimension === 'string' ? false : dimension.dimensionKey === objKey);
66529
66720
  dimension &&
66530
66721
  (returnWidths[index + (this.rowHeaderTitle ? 1 : 0) + this.leftRowSeriesNumberColumnCount] = {
@@ -67460,7 +67651,7 @@
67460
67651
  let colDimension;
67461
67652
  for (let i = 0; i < dimensions.length; i++) {
67462
67653
  const highlightDimension = dimensions[i];
67463
- if ((highlightDimension.isPivotCorner || !highlightDimension.value) &&
67654
+ if ((highlightDimension.isPivotCorner || !isValid$1(highlightDimension.value)) &&
67464
67655
  i === dimensions.length - 1) {
67465
67656
  if (this?.cornerSetting?.titleOnDimension === 'row') {
67466
67657
  let col = 0;
@@ -67875,7 +68066,7 @@
67875
68066
  dimension.value === rowDimension.value) ||
67876
68067
  (isValid$1(rowDimension.indicatorKey) &&
67877
68068
  dimension.indicatorKey === rowDimension.indicatorKey &&
67878
- (!rowDimension.value || dimension.value === rowDimension.value))) {
68069
+ (!isValid$1(rowDimension.value) || dimension.value === rowDimension.value))) {
67879
68070
  rowArr = dimension.children;
67880
68071
  if (needLowestLevel && (!rowArr || rowArr.some(row => row.dimensionKey === 'axis'))) {
67881
68072
  rowDimensionFinded = dimension;
@@ -68083,7 +68274,7 @@
68083
68274
  }
68084
68275
  for (let i = 0; i < dimensions.length; i++) {
68085
68276
  const highlightDimension = dimensions[i];
68086
- if ((highlightDimension.isPivotCorner || !highlightDimension.value) &&
68277
+ if ((highlightDimension.isPivotCorner || !isValid$1(highlightDimension.value)) &&
68087
68278
  i === dimensions.length - 1) {
68088
68279
  return undefined;
68089
68280
  }
@@ -68943,6 +69134,7 @@
68943
69134
  class Dataset {
68944
69135
  dataConfig;
68945
69136
  records;
69137
+ filteredRecords;
68946
69138
  tree = {};
68947
69139
  changedTree = {};
68948
69140
  colFlatKeys = {};
@@ -69200,18 +69392,29 @@
69200
69392
  isNeedFilter = true;
69201
69393
  }
69202
69394
  if (Array.isArray(this.records)) {
69395
+ if (!this.filteredRecords) {
69396
+ this.filteredRecords = [];
69397
+ }
69203
69398
  for (let i = 0, len = this.records.length; i < len; i++) {
69204
69399
  const record = this.records[i];
69205
69400
  if (!isNeedFilter || this.filterRecord(record)) {
69401
+ this.filteredRecords.push(record);
69206
69402
  this.processRecord(record);
69207
69403
  }
69208
69404
  }
69209
69405
  }
69210
69406
  else {
69407
+ if (!this.filteredRecords) {
69408
+ this.filteredRecords = {};
69409
+ }
69211
69410
  for (const key in this.records) {
69212
69411
  for (let i = 0, len = this.records[key].length; i < len; i++) {
69213
69412
  const record = this.records[key][i];
69214
69413
  if (!isNeedFilter || this.filterRecord(record)) {
69414
+ if (!this.filteredRecords[key]) {
69415
+ this.filteredRecords[key] = [];
69416
+ }
69417
+ this.filteredRecords[key].push(record);
69215
69418
  this.processRecord(record, key);
69216
69419
  }
69217
69420
  }
@@ -69537,6 +69740,7 @@
69537
69740
  }
69538
69741
  updateFilterRules(filterRules, isResetTree = false) {
69539
69742
  this.filterRules = filterRules;
69743
+ this.filteredRecords = undefined;
69540
69744
  if (isResetTree) {
69541
69745
  this.tree = {};
69542
69746
  }
@@ -71706,6 +71910,9 @@
71706
71910
  this.dataset.updateFilterRules(filterRules);
71707
71911
  this.renderWithRecreateCells();
71708
71912
  }
71913
+ getFilteredRecords() {
71914
+ return this.dataset?.filterRules;
71915
+ }
71709
71916
  }
71710
71917
 
71711
71918
  registerAxis();
@@ -73356,7 +73563,7 @@
73356
73563
  }
73357
73564
 
73358
73565
  registerForVrender();
73359
- const version = "1.7.5-alpha.1";
73566
+ const version = "1.7.5";
73360
73567
  function getIcons() {
73361
73568
  return get$2();
73362
73569
  }