k-vtable 1.0.33 → 1.0.35

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 (189) hide show
  1. package/cjs/ListTable.d.ts +1 -0
  2. package/cjs/ListTable.js +184 -25
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.js +3 -2
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable.d.ts +1 -0
  7. package/cjs/PivotTable.js +95 -15
  8. package/cjs/PivotTable.js.map +1 -1
  9. package/cjs/core/BaseTable.d.ts +16 -0
  10. package/cjs/core/BaseTable.js +167 -45
  11. package/cjs/core/BaseTable.js.map +1 -1
  12. package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
  13. package/cjs/core/TABLE_EVENT_TYPE.js +2 -0
  14. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  15. package/cjs/core/record-helper.js +83 -13
  16. package/cjs/core/record-helper.js.map +1 -1
  17. package/cjs/core/tableHelper.js +5 -3
  18. package/cjs/core/tableHelper.js.map +1 -1
  19. package/cjs/core/utils/get-cell-position.js +23 -12
  20. package/cjs/core/utils/get-cell-position.js.map +1 -1
  21. package/cjs/data/DataSource.js +3 -2
  22. package/cjs/data/DataSource.js.map +1 -1
  23. package/cjs/dataset/dataset.js +5 -1
  24. package/cjs/dataset/dataset.js.map +1 -1
  25. package/cjs/edit/edit-manager.js +24 -16
  26. package/cjs/edit/edit-manager.js.map +1 -1
  27. package/cjs/event/EventTarget.js +3 -1
  28. package/cjs/event/EventTarget.js.map +1 -1
  29. package/cjs/event/helper.js +1 -1
  30. package/cjs/event/listener/container-dom.js +11 -6
  31. package/cjs/event/listener/container-dom.js.map +1 -1
  32. package/cjs/event/listener/scroll-bar.js +77 -6
  33. package/cjs/event/listener/scroll-bar.js.map +1 -1
  34. package/cjs/event/listener/table-group.js +53 -23
  35. package/cjs/event/listener/table-group.js.map +1 -1
  36. package/cjs/event/media-click.js +1 -1
  37. package/cjs/event/scroll.js +35 -12
  38. package/cjs/event/scroll.js.map +1 -1
  39. package/cjs/event/sparkline-event.js +1 -1
  40. package/cjs/event/util.d.ts +2 -0
  41. package/cjs/event/util.js +29 -4
  42. package/cjs/event/util.js.map +1 -1
  43. package/cjs/header-helper/header-helper.js +2 -2
  44. package/cjs/header-helper/header-helper.js.map +1 -1
  45. package/cjs/header-helper/style.js +2 -1
  46. package/cjs/index.d.ts +3 -3
  47. package/cjs/index.js +51 -12
  48. package/cjs/index.js.map +1 -1
  49. package/cjs/layout/cell-range/simple-cell-range.js +14 -5
  50. package/cjs/layout/cell-range/simple-cell-range.js.map +1 -1
  51. package/cjs/plugins/index.js +1 -1
  52. package/cjs/plugins/interface.js +1 -1
  53. package/cjs/plugins/invert-highlight.js +1 -1
  54. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  55. package/cjs/plugins/plugin-manager.js +1 -1
  56. package/cjs/scenegraph/component/table-component.d.ts +6 -1
  57. package/cjs/scenegraph/component/table-component.js +143 -17
  58. package/cjs/scenegraph/component/table-component.js.map +1 -1
  59. package/cjs/scenegraph/component/util.js +5 -2
  60. package/cjs/scenegraph/component/util.js.map +1 -1
  61. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +29 -10
  62. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  63. package/cjs/scenegraph/group-creater/cell-helper.js +7 -4
  64. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  65. package/cjs/scenegraph/group-creater/init-scenegraph.js +37 -7
  66. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  67. package/cjs/scenegraph/group-creater/progress/proxy.js +8 -4
  68. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  69. package/cjs/scenegraph/scenegraph.d.ts +13 -0
  70. package/cjs/scenegraph/scenegraph.js +194 -23
  71. package/cjs/scenegraph/scenegraph.js.map +1 -1
  72. package/cjs/scenegraph/select/create-select-border.js +9 -10
  73. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  74. package/cjs/scenegraph/select/delete-select-border.js.map +1 -1
  75. package/cjs/scenegraph/select/move-select-border.js.map +1 -1
  76. package/cjs/scenegraph/select/update-custom-select-border.js +9 -9
  77. package/cjs/scenegraph/select/update-custom-select-border.js.map +1 -1
  78. package/cjs/scenegraph/select/update-select-border.js +27 -122
  79. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  80. package/cjs/scenegraph/select/update-select-style.js.map +1 -1
  81. package/cjs/state/select/update-position.js +2 -1
  82. package/cjs/state/select/update-position.js.map +1 -1
  83. package/cjs/state/state.d.ts +8 -1
  84. package/cjs/state/state.js +82 -40
  85. package/cjs/state/state.js.map +1 -1
  86. package/cjs/ts-types/base-table.d.ts +15 -0
  87. package/cjs/ts-types/base-table.js.map +1 -1
  88. package/cjs/ts-types/dataset/aggregation.js +94 -39
  89. package/cjs/ts-types/dataset/aggregation.js.map +1 -1
  90. package/cjs/ts-types/events.d.ts +16 -0
  91. package/cjs/ts-types/events.js.map +1 -1
  92. package/cjs/ts-types/table-engine.js.map +1 -1
  93. package/cjs/vrender.js.map +1 -1
  94. package/dist/vtable.js +2460 -747
  95. package/dist/vtable.min.js +1 -15
  96. package/es/ListTable.d.ts +1 -0
  97. package/es/ListTable.js +178 -25
  98. package/es/ListTable.js.map +1 -1
  99. package/es/PivotChart.js +2 -2
  100. package/es/PivotChart.js.map +1 -1
  101. package/es/PivotTable.d.ts +1 -0
  102. package/es/PivotTable.js +93 -15
  103. package/es/PivotTable.js.map +1 -1
  104. package/es/core/BaseTable.d.ts +16 -0
  105. package/es/core/BaseTable.js +166 -44
  106. package/es/core/BaseTable.js.map +1 -1
  107. package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
  108. package/es/core/TABLE_EVENT_TYPE.js +2 -0
  109. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  110. package/es/core/record-helper.js +83 -12
  111. package/es/core/record-helper.js.map +1 -1
  112. package/es/core/tableHelper.js +5 -3
  113. package/es/core/tableHelper.js.map +1 -1
  114. package/es/core/utils/get-cell-position.js +23 -12
  115. package/es/core/utils/get-cell-position.js.map +1 -1
  116. package/es/data/DataSource.js +3 -2
  117. package/es/data/DataSource.js.map +1 -1
  118. package/es/dataset/dataset.js +5 -1
  119. package/es/dataset/dataset.js.map +1 -1
  120. package/es/edit/edit-manager.js +22 -16
  121. package/es/edit/edit-manager.js.map +1 -1
  122. package/es/event/EventTarget.js +3 -1
  123. package/es/event/EventTarget.js.map +1 -1
  124. package/es/event/helper.js +1 -1
  125. package/es/event/listener/container-dom.js +10 -5
  126. package/es/event/listener/container-dom.js.map +1 -1
  127. package/es/event/listener/scroll-bar.js +75 -6
  128. package/es/event/listener/scroll-bar.js.map +1 -1
  129. package/es/event/listener/table-group.js +53 -24
  130. package/es/event/listener/table-group.js.map +1 -1
  131. package/es/event/media-click.js +1 -1
  132. package/es/event/scroll.js +35 -12
  133. package/es/event/scroll.js.map +1 -1
  134. package/es/event/sparkline-event.js +1 -1
  135. package/es/event/util.d.ts +2 -0
  136. package/es/event/util.js +25 -1
  137. package/es/event/util.js.map +1 -1
  138. package/es/header-helper/header-helper.js +2 -2
  139. package/es/header-helper/header-helper.js.map +1 -1
  140. package/es/header-helper/style.js +2 -1
  141. package/es/index.d.ts +3 -3
  142. package/es/index.js +5 -3
  143. package/es/index.js.map +1 -1
  144. package/es/layout/cell-range/simple-cell-range.js +14 -5
  145. package/es/layout/cell-range/simple-cell-range.js.map +1 -1
  146. package/es/plugins/index.js +1 -1
  147. package/es/plugins/interface.js +1 -1
  148. package/es/plugins/invert-highlight.js +1 -1
  149. package/es/plugins/list-tree-stick-cell.js +1 -1
  150. package/es/plugins/plugin-manager.js +1 -1
  151. package/es/scenegraph/component/table-component.d.ts +6 -1
  152. package/es/scenegraph/component/table-component.js +141 -17
  153. package/es/scenegraph/component/table-component.js.map +1 -1
  154. package/es/scenegraph/component/util.js +5 -2
  155. package/es/scenegraph/component/util.js.map +1 -1
  156. package/es/scenegraph/graphic/contributions/group-contribution-render.js +29 -10
  157. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  158. package/es/scenegraph/group-creater/cell-helper.js +7 -4
  159. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  160. package/es/scenegraph/group-creater/init-scenegraph.js +37 -7
  161. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  162. package/es/scenegraph/group-creater/progress/proxy.js +8 -4
  163. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  164. package/es/scenegraph/scenegraph.d.ts +13 -0
  165. package/es/scenegraph/scenegraph.js +185 -18
  166. package/es/scenegraph/scenegraph.js.map +1 -1
  167. package/es/scenegraph/select/create-select-border.js +9 -10
  168. package/es/scenegraph/select/create-select-border.js.map +1 -1
  169. package/es/scenegraph/select/delete-select-border.js.map +1 -1
  170. package/es/scenegraph/select/move-select-border.js.map +1 -1
  171. package/es/scenegraph/select/update-custom-select-border.js +9 -9
  172. package/es/scenegraph/select/update-custom-select-border.js.map +1 -1
  173. package/es/scenegraph/select/update-select-border.js +25 -118
  174. package/es/scenegraph/select/update-select-border.js.map +1 -1
  175. package/es/scenegraph/select/update-select-style.js.map +1 -1
  176. package/es/state/select/update-position.js +3 -0
  177. package/es/state/select/update-position.js.map +1 -1
  178. package/es/state/state.d.ts +8 -1
  179. package/es/state/state.js +81 -40
  180. package/es/state/state.js.map +1 -1
  181. package/es/ts-types/base-table.d.ts +15 -0
  182. package/es/ts-types/base-table.js.map +1 -1
  183. package/es/ts-types/dataset/aggregation.js +68 -38
  184. package/es/ts-types/dataset/aggregation.js.map +1 -1
  185. package/es/ts-types/events.d.ts +16 -0
  186. package/es/ts-types/events.js.map +1 -1
  187. package/es/ts-types/table-engine.js.map +1 -1
  188. package/es/vrender.js.map +1 -1
  189. package/package.json +12 -11
@@ -71,6 +71,7 @@ export declare class ListTable extends BaseTable implements ListTableAPI {
71
71
  updateSortState(sortState: SortState[] | SortState | null, executeSort?: boolean): void;
72
72
  updateFilterRules(filterRules: FilterRules, options?: {
73
73
  clearRowHeightCache?: boolean;
74
+ clearForceVisibleRecords?: boolean;
74
75
  onFilterRecordsEnd?: (records: any[]) => any[];
75
76
  }): void;
76
77
  getFilteredRecords(): any[];
package/cjs/ListTable.js CHANGED
@@ -120,10 +120,32 @@ class ListTable extends core_1.BaseTable {
120
120
  this.renderAsync(), this.eventManager.updateEventBinder();
121
121
  }
122
122
  addColumns(toAddColumns, colIndex, isMaintainArrayData = !0) {
123
- var _a;
123
+ var _a, _b;
124
124
  const columns = this.options.columns;
125
+ if (Array.isArray(this.options.customMergeCell) && (null == toAddColumns ? void 0 : toAddColumns.length)) {
126
+ const axis = this.transpose ? "row" : "col";
127
+ let insertIndex = colIndex;
128
+ void 0 === insertIndex ? insertIndex = columns.length : insertIndex < 0 ? insertIndex = 0 : insertIndex > columns.length && (insertIndex = columns.length);
129
+ const toAddCount = toAddColumns.length, merges = this.options.customMergeCell.map((m => Object.assign(Object.assign({}, m), {
130
+ range: {
131
+ start: Object.assign({}, m.range.start),
132
+ end: Object.assign({}, m.range.end)
133
+ }
134
+ })));
135
+ for (let i = 0; i < merges.length; i++) {
136
+ const r = null === (_a = merges[i]) || void 0 === _a ? void 0 : _a.range;
137
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
138
+ const start = r.start[axis], end = r.end[axis];
139
+ end < insertIndex || (start > insertIndex ? (r.start[axis] = start + toAddCount,
140
+ r.end[axis] = end + toAddCount) : r.end[axis] = end + toAddCount);
141
+ }
142
+ this.options.customMergeCell = merges.filter((m => {
143
+ const r = null == m ? void 0 : m.range;
144
+ return !(!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) && (!(r.end.row < r.start.row || r.end.col < r.start.col) && !(r.start.row === r.end.row && r.start.col === r.end.col));
145
+ })), this.internalProps.customMergeCell = (0, get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell);
146
+ }
125
147
  void 0 === colIndex ? (colIndex = columns.length, columns.push(...toAddColumns)) : columns.splice(colIndex, 0, ...toAddColumns);
126
- for (let i = 0; i < toAddColumns.length; i++) this.colWidthsMap.addAndReorder(colIndex + i, null !== (_a = toAddColumns[i].width) && void 0 !== _a ? _a : this.internalProps.defaultColWidth);
148
+ for (let i = 0; i < toAddColumns.length; i++) this.colWidthsMap.addAndReorder(colIndex + i, null !== (_b = toAddColumns[i].width) && void 0 !== _b ? _b : this.internalProps.defaultColWidth);
127
149
  this.internalProps._colRangeWidthsMap.clear();
128
150
  const resizedColIndexs = Array.from(this.internalProps._widthResizedColMap.keys());
129
151
  for (let i = 0; i < resizedColIndexs.length; i++) resizedColIndexs[i] >= colIndex && (this.internalProps._widthResizedColMap.delete(resizedColIndexs[i]),
@@ -137,15 +159,46 @@ class ListTable extends core_1.BaseTable {
137
159
  }
138
160
  this.updateColumns(columns, {
139
161
  clearRowHeightCache: !1
140
- }), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_COLUMN, {
162
+ }), Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = (0,
163
+ get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell),
164
+ this.options.customMergeCell.forEach((m => {
165
+ const r = null == m ? void 0 : m.range;
166
+ if (null == r ? void 0 : r.start) for (let col = r.start.col; col <= r.end.col; col++) for (let row = r.start.row; row <= r.end.row; row++) this.scenegraph.updateCellContent(col, row);
167
+ })), this.scenegraph.updateNextFrame()), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_COLUMN, {
141
168
  columnIndex: colIndex,
142
169
  columnCount: toAddColumns.length,
143
170
  columns: columns
144
171
  });
145
172
  }
146
173
  deleteColumns(deleteColIndexs, isMaintainArrayData = !0) {
174
+ var _a;
147
175
  const columns = this.options.columns;
148
176
  deleteColIndexs.sort(((a, b) => b - a));
177
+ const deletedColumns = deleteColIndexs.map((idx => (0, vutils_extension_1.cloneDeepSpec)(columns[idx], [ "children" ])));
178
+ let deletedRecordValues;
179
+ if (Array.isArray(this.options.customMergeCell) && (null == deleteColIndexs ? void 0 : deleteColIndexs.length)) {
180
+ const axis = this.transpose ? "row" : "col", deleteIndexNums = deleteColIndexs.slice().sort(((a, b) => a - b)).map(((idx, i) => idx - i)), merges = this.options.customMergeCell.map((m => Object.assign(Object.assign({}, m), {
181
+ range: {
182
+ start: Object.assign({}, m.range.start),
183
+ end: Object.assign({}, m.range.end)
184
+ }
185
+ })));
186
+ for (let i = 0; i < deleteIndexNums.length; i++) {
187
+ const deleteIndex = deleteIndexNums[i];
188
+ for (let j = 0; j < merges.length; j++) {
189
+ const r = null === (_a = merges[j]) || void 0 === _a ? void 0 : _a.range;
190
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
191
+ const start = r.start[axis], end = r.end[axis];
192
+ end < deleteIndex || (start > deleteIndex ? (r.start[axis] = start - 1, r.end[axis] = end - 1) : r.end[axis] = end - 1);
193
+ }
194
+ }
195
+ this.options.customMergeCell = merges.filter((m => {
196
+ const r = null == m ? void 0 : m.range;
197
+ return !(!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) && (!(r.end.row < r.start.row || r.end.col < r.start.col) && !(r.start.row === r.end.row && r.start.col === r.end.col));
198
+ })), this.internalProps.customMergeCell = (0, get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell);
199
+ }
200
+ isMaintainArrayData && Array.isArray(this.records) && this.records.length && (deletedRecordValues = this.records.map((record => Array.isArray(record) ? deleteColIndexs.map((idx => record[idx])) : [])),
201
+ deletedRecordValues.every((v => 0 === v.length)) && (deletedRecordValues = void 0));
149
202
  for (let i = 0; i < deleteColIndexs.length; i++) if (columns.splice(deleteColIndexs[i], 1),
150
203
  this.colWidthsMap.delAndReorder(deleteColIndexs[i]), this.internalProps._widthResizedColMap.delete(deleteColIndexs[i]),
151
204
  isMaintainArrayData) for (let j = 0; j < this.records.length; j++) {
@@ -163,7 +216,9 @@ class ListTable extends core_1.BaseTable {
163
216
  clearRowHeightCache: !1
164
217
  }), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.DELETE_COLUMN, {
165
218
  deleteColIndexs: deleteColIndexs,
166
- columns: columns
219
+ columns: columns,
220
+ deletedColumns: deletedColumns,
221
+ deletedRecordValues: deletedRecordValues
167
222
  });
168
223
  }
169
224
  get columns() {
@@ -549,10 +604,10 @@ class ListTable extends core_1.BaseTable {
549
604
  }
550
605
  }
551
606
  updateSortState(sortState, executeSort = !0) {
552
- var _a;
553
- if (sortState) this.internalProps.sortState = sortState; else if (this.internalProps.sortState) if (Array.isArray(this.internalProps.sortState)) for (let i = 0; i < this.internalProps.sortState.length; i++) (sortState = null === (_a = this.internalProps.sortState) || void 0 === _a ? void 0 : _a[i]) && (sortState.order = "normal"); else this.internalProps.sortState.order = "normal",
554
- sortState = this.internalProps.sortState;
555
- (sortState = Array.isArray(sortState) ? sortState : [ sortState ]).some((item => item.field)) && executeSort && this.internalProps.layoutMap.headerObjects.some((item => !1 !== item.define.sort)) && (this.dataSource.sort(sortState.map((item => {
607
+ var _a, _b, _c, _d, _e;
608
+ const normalizedSortState = (Array.isArray(sortState) ? sortState : sortState ? [ sortState ] : []).filter(Boolean);
609
+ if (normalizedSortState.length ? this.internalProps.sortState = sortState : this.internalProps.sortState = null,
610
+ executeSort) if (normalizedSortState.length) this.internalProps.layoutMap.headerObjects.some((item => !1 !== item.define.sort)) && (this.dataSource.sort(normalizedSortState.map((item => {
556
611
  const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, item.field);
557
612
  this.internalProps.layoutMap.headerObjects.find((col => col && col.field === item.field));
558
613
  return {
@@ -561,13 +616,22 @@ class ListTable extends core_1.BaseTable {
561
616
  orderFn: null != sortFunc ? sortFunc : util_1.defaultOrderFn
562
617
  };
563
618
  }))), this.internalProps.layoutMap.clearCellRangeMap(), this.internalProps.useOneRowHeightFillAll = !1,
564
- this.scenegraph.sortCell()), sortState.length && this.stateManager.updateSortState(sortState);
619
+ this.scenegraph.sortCell()); else {
620
+ const ds = this.dataSource, sourceLength = null !== (_c = null !== (_b = null !== (_a = null == ds ? void 0 : ds.sourceLength) && void 0 !== _a ? _a : null == ds ? void 0 : ds._sourceLength) && void 0 !== _b ? _b : null == ds ? void 0 : ds.length) && void 0 !== _c ? _c : 0;
621
+ (null === (_d = null == ds ? void 0 : ds.sortedIndexMap) || void 0 === _d ? void 0 : _d.clear) && ds.sortedIndexMap.clear(),
622
+ void 0 !== ds.currentIndexedData && (ds.currentIndexedData = Array.from({
623
+ length: sourceLength
624
+ }, ((_, i) => i))), ds.lastSortStates = [], null === (_e = ds.updatePagination) || void 0 === _e || _e.call(ds, ds.pagination),
625
+ this.internalProps.layoutMap.clearCellRangeMap(), this.internalProps.useOneRowHeightFillAll = !1,
626
+ this.scenegraph.sortCell();
627
+ }
628
+ this.stateManager.updateSortState(normalizedSortState);
565
629
  }
566
630
  updateFilterRules(filterRules, options = {
567
631
  clearRowHeightCache: !0
568
632
  }) {
569
633
  var _a, _b, _c;
570
- this.scenegraph.clearCells(), null === (_b = (_a = this.dataSource).clearForceVisibleRecords) || void 0 === _b || _b.call(_a),
634
+ this.scenegraph.clearCells(), !1 !== (null == options ? void 0 : options.clearForceVisibleRecords) && (null === (_b = (_a = this.dataSource).clearForceVisibleRecords) || void 0 === _b || _b.call(_a)),
571
635
  this.sortState ? (this.dataSource.updateFilterRulesForSorted(filterRules), (0, record_helper_1.sortRecords)(this)) : this.dataSource.updateFilterRules(filterRules, null == options ? void 0 : options.onFilterRecordsEnd),
572
636
  this.refreshRowColCount(), this.stateManager.initCheckedState(this.records), this.scenegraph.createSceneGraph(!(null == options ? void 0 : options.clearRowHeightCache)),
573
637
  null === (_c = this.internalProps.emptyTip) || void 0 === _c || _c.resetVisible(),
@@ -625,7 +689,8 @@ class ListTable extends core_1.BaseTable {
625
689
  setRecords(records, option) {
626
690
  var _a, _b, _c, _d, _e;
627
691
  let sort;
628
- (0, chart_render_helper_1.clearChartRenderQueue)(), null === (_a = this.internalProps.dataSource) || void 0 === _a || _a.release(),
692
+ this.stateManager.endResizeIfResizing(), (0, chart_render_helper_1.clearChartRenderQueue)(),
693
+ null === (_a = this.internalProps.dataSource) || void 0 === _a || _a.release(),
629
694
  this.internalProps.releaseList = null === (_b = this.internalProps.releaseList) || void 0 === _b ? void 0 : _b.filter((item => !item.dataSourceObj)),
630
695
  this.internalProps.dataSource = null, Array.isArray(option) || (null == option ? void 0 : option.order) ? sort = option : option ? sort = option.sortState : null === option && (sort = null);
631
696
  "undefined" != typeof window && window.performance.now();
@@ -845,35 +910,107 @@ class ListTable extends core_1.BaseTable {
845
910
  this.resize();
846
911
  }
847
912
  addRecord(record, recordIndex, triggerEvent = !0) {
848
- var _a;
913
+ var _a, _b;
914
+ if (Array.isArray(this.options.customMergeCell) && "number" == typeof recordIndex) {
915
+ const axis = this.transpose ? "col" : "row", headerCount = this.transpose ? this.rowHeaderLevelCount : this.columnHeaderLevelCount, topAggregationCount = this.internalProps.layoutMap.hasAggregationOnTopCount;
916
+ let insertIndex = recordIndex;
917
+ void 0 === insertIndex || insertIndex > this.dataSource.sourceLength ? insertIndex = this.dataSource.sourceLength : insertIndex < 0 && (insertIndex = 0);
918
+ const insertIndexNum = insertIndex + headerCount + topAggregationCount, merges = this.options.customMergeCell.map((m => Object.assign(Object.assign({}, m), {
919
+ range: {
920
+ start: Object.assign({}, m.range.start),
921
+ end: Object.assign({}, m.range.end)
922
+ }
923
+ })));
924
+ for (let i = 0; i < merges.length; i++) {
925
+ const r = null === (_a = merges[i]) || void 0 === _a ? void 0 : _a.range;
926
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
927
+ const start = r.start[axis], end = r.end[axis];
928
+ end < insertIndexNum || (start > insertIndexNum ? (r.start[axis] = start + 1, r.end[axis] = end + 1) : r.end[axis] = end + 1);
929
+ }
930
+ this.options.customMergeCell = merges.filter((m => {
931
+ const r = null == m ? void 0 : m.range;
932
+ return !(!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) && (!(r.end.row < r.start.row || r.end.col < r.start.col) && !(r.start.row === r.end.row && r.start.col === r.end.col));
933
+ })), this.internalProps.customMergeCell = (0, get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell);
934
+ }
849
935
  const success = (0, record_helper_1.listTableAddRecord)(record, recordIndex, this);
850
936
  (0, adjust_header_1.adjustHeightResizedRowMapWithAddRecordIndex)(this, recordIndex, [ record ]),
851
- null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
852
- triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_RECORD, {
937
+ null === (_b = this.internalProps.emptyTip) || void 0 === _b || _b.resetVisible(),
938
+ success && Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = (0,
939
+ get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell),
940
+ this.options.customMergeCell.forEach((m => {
941
+ const r = null == m ? void 0 : m.range;
942
+ if (null == r ? void 0 : r.start) for (let col = r.start.col; col <= r.end.col; col++) for (let row = r.start.row; row <= r.end.row; row++) this.scenegraph.updateCellContent(col, row);
943
+ })), this.scenegraph.updateNextFrame()), triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_RECORD, {
853
944
  records: [ record ],
854
945
  recordIndex: recordIndex,
855
946
  recordCount: 1
856
947
  });
857
948
  }
858
949
  addRecords(records, recordIndex, triggerEvent = !0) {
859
- var _a;
950
+ var _a, _b;
951
+ if (Array.isArray(this.options.customMergeCell) && "number" == typeof recordIndex && (null == records ? void 0 : records.length)) {
952
+ const axis = this.transpose ? "col" : "row", headerCount = this.transpose ? this.rowHeaderLevelCount : this.columnHeaderLevelCount, topAggregationCount = this.internalProps.layoutMap.hasAggregationOnTopCount;
953
+ let insertIndex = recordIndex;
954
+ void 0 === insertIndex || insertIndex > this.dataSource.sourceLength ? insertIndex = this.dataSource.sourceLength : insertIndex < 0 && (insertIndex = 0);
955
+ const insertIndexNum = insertIndex + headerCount + topAggregationCount, toAddCount = records.length, merges = this.options.customMergeCell.map((m => Object.assign(Object.assign({}, m), {
956
+ range: {
957
+ start: Object.assign({}, m.range.start),
958
+ end: Object.assign({}, m.range.end)
959
+ }
960
+ })));
961
+ for (let i = 0; i < merges.length; i++) {
962
+ const r = null === (_a = merges[i]) || void 0 === _a ? void 0 : _a.range;
963
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
964
+ const start = r.start[axis], end = r.end[axis];
965
+ end < insertIndexNum || (start > insertIndexNum ? (r.start[axis] = start + toAddCount,
966
+ r.end[axis] = end + toAddCount) : r.end[axis] = end + toAddCount);
967
+ }
968
+ this.options.customMergeCell = merges.filter((m => {
969
+ const r = null == m ? void 0 : m.range;
970
+ return !(!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) && (!(r.end.row < r.start.row || r.end.col < r.start.col) && !(r.start.row === r.end.row && r.start.col === r.end.col));
971
+ })), this.internalProps.customMergeCell = (0, get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell);
972
+ }
860
973
  const success = (0, record_helper_1.listTableAddRecords)(records, recordIndex, this);
861
974
  "number" == typeof recordIndex && (0, adjust_header_1.adjustHeightResizedRowMapWithAddRecordIndex)(this, recordIndex, records),
862
- null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
863
- triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_RECORD, {
975
+ null === (_b = this.internalProps.emptyTip) || void 0 === _b || _b.resetVisible(),
976
+ success && Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = (0,
977
+ get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell),
978
+ this.options.customMergeCell.forEach((m => {
979
+ const r = null == m ? void 0 : m.range;
980
+ if (null == r ? void 0 : r.start) for (let col = r.start.col; col <= r.end.col; col++) for (let row = r.start.row; row <= r.end.row; row++) this.scenegraph.updateCellContent(col, row);
981
+ })), this.scenegraph.updateNextFrame()), triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_RECORD, {
864
982
  records: records,
865
983
  recordIndex: recordIndex,
866
984
  recordCount: records.length
867
985
  });
868
986
  }
869
987
  deleteRecords(recordIndexs, triggerEvent = !0) {
870
- var _a;
871
- const deletedRecords = [];
872
- (null == recordIndexs ? void 0 : recordIndexs.length) > 0 && recordIndexs.forEach((index => {
988
+ var _a, _b;
989
+ const prevMergeRanges = Array.isArray(this.options.customMergeCell) ? this.options.customMergeCell.map((m => null == m ? void 0 : m.range)).filter(Boolean).map((r => ({
990
+ start: Object.assign({}, r.start),
991
+ end: Object.assign({}, r.end)
992
+ }))) : [], deletedRecords = [];
993
+ if ((null == recordIndexs ? void 0 : recordIndexs.length) > 0 && recordIndexs.forEach((index => {
873
994
  let record = null;
874
995
  record = "number" == typeof index ? this.dataSource.get(index) : [], deletedRecords.push(record);
875
- })), (0, record_helper_1.listTableDeleteRecords)(recordIndexs, this), (0, adjust_header_1.adjustHeightResizedRowMapWithDeleteRecordIndex)(this, recordIndexs),
876
- null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible();
996
+ })), Array.isArray(this.options.customMergeCell) && (null == recordIndexs ? void 0 : recordIndexs.length) && "number" == typeof recordIndexs[0]) {
997
+ const axis = this.transpose ? "col" : "row", headerCount = this.transpose ? this.rowHeaderLevelCount : this.columnHeaderLevelCount, topAggregationCount = this.internalProps.layoutMap.hasAggregationOnTopCount, deleteIndexNums = recordIndexs.slice().sort(((a, b) => a - b)).map(((index, i) => index + headerCount + topAggregationCount - i)), merges = this.options.customMergeCell;
998
+ for (let i = 0; i < deleteIndexNums.length; i++) {
999
+ const deleteIndex = deleteIndexNums[i];
1000
+ for (let j = 0; j < merges.length; j++) {
1001
+ const r = null === (_a = merges[j]) || void 0 === _a ? void 0 : _a.range;
1002
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
1003
+ const start = r.start[axis], end = r.end[axis];
1004
+ end < deleteIndex || (start > deleteIndex ? (r.start[axis] = start - 1, r.end[axis] = end - 1) : r.end[axis] = end - 1);
1005
+ }
1006
+ }
1007
+ this.options.customMergeCell = merges.filter((m => {
1008
+ const r = null == m ? void 0 : m.range;
1009
+ return !(!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) && (!(r.end.row < r.start.row || r.end.col < r.start.col) && !(r.start.row === r.end.row && r.start.col === r.end.col));
1010
+ }));
1011
+ }
1012
+ (0, record_helper_1.listTableDeleteRecords)(recordIndexs, this), (0, adjust_header_1.adjustHeightResizedRowMapWithDeleteRecordIndex)(this, recordIndexs),
1013
+ null === (_b = this.internalProps.emptyTip) || void 0 === _b || _b.resetVisible();
877
1014
  const rowIndexs = [];
878
1015
  for (let i = 0; i < recordIndexs.length; i++) rowIndexs.push(this.getBodyRowIndexByRecordIndex(recordIndexs[i]) + this.columnHeaderLevelCount);
879
1016
  triggerEvent && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.DELETE_RECORD, {
@@ -881,7 +1018,19 @@ class ListTable extends core_1.BaseTable {
881
1018
  records: deletedRecords,
882
1019
  rowIndexs: rowIndexs,
883
1020
  deletedCount: (Array.isArray(recordIndexs[0]), recordIndexs.length)
884
- });
1021
+ }), Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = (0,
1022
+ get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell),
1023
+ this.options.customMergeCell.forEach((m => {
1024
+ const r = null == m ? void 0 : m.range;
1025
+ if (null == r ? void 0 : r.start) for (let col = r.start.col; col <= r.end.col; col++) for (let row = r.start.row; row <= r.end.row; row++) this.scenegraph.updateCellContent(col, row);
1026
+ })), this.scenegraph.updateNextFrame(), setTimeout((() => {
1027
+ if (!this.internalProps || !this.options || !this.scenegraph) return;
1028
+ Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = (0,
1029
+ get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell));
1030
+ [ ...prevMergeRanges, ...Array.isArray(this.options.customMergeCell) ? this.options.customMergeCell.map((m => null == m ? void 0 : m.range)) : [] ].filter(Boolean).forEach((r => {
1031
+ if (null == r ? void 0 : r.start) for (let col = r.start.col; col <= r.end.col; col++) for (let row = r.start.row; row <= r.end.row; row++) this.scenegraph.updateCellContent(col, row);
1032
+ })), this.scenegraph.updateNextFrame();
1033
+ }), 0));
885
1034
  }
886
1035
  updateRecords(records, recordIndexs, triggerEvent = !0) {
887
1036
  (0, record_helper_1.listTableUpdateRecords)(records, recordIndexs, this), triggerEvent && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.UPDATE_RECORD, {
@@ -985,7 +1134,12 @@ class ListTable extends core_1.BaseTable {
985
1134
  }
986
1135
  }), this.internalProps.customMergeCell = (0, get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell);
987
1136
  for (let i = startCol; i <= endCol; i++) for (let j = startRow; j <= endRow; j++) this.scenegraph.updateCellContent(i, j);
988
- this.scenegraph.updateNextFrame();
1137
+ this.scenegraph.updateNextFrame(), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.MERGE_CELLS, {
1138
+ startCol: startCol,
1139
+ startRow: startRow,
1140
+ endCol: endCol,
1141
+ endRow: endRow
1142
+ });
989
1143
  }
990
1144
  unmergeCells(startCol, startRow, endCol, endRow) {
991
1145
  this.options.customMergeCell ? "function" == typeof this.options.customMergeCell && (this.options.customMergeCell = []) : this.options.customMergeCell = [],
@@ -994,7 +1148,12 @@ class ListTable extends core_1.BaseTable {
994
1148
  return !(start.col === startCol && start.row === startRow && end.col === endCol && end.row === endRow);
995
1149
  })), this.internalProps.customMergeCell = (0, get_custom_merge_cell_func_1.getCustomMergeCellFunc)(this.options.customMergeCell);
996
1150
  for (let i = startCol; i <= endCol; i++) for (let j = startRow; j <= endRow; j++) this.scenegraph.updateCellContent(i, j);
997
- this.scenegraph.updateNextFrame();
1151
+ this.scenegraph.updateNextFrame(), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.UNMERGE_CELLS, {
1152
+ startCol: startCol,
1153
+ startRow: startRow,
1154
+ endCol: endCol,
1155
+ endRow: endRow
1156
+ });
998
1157
  }
999
1158
  }
1000
1159