k-vtable 1.0.34 → 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 +14 -0
  10. package/cjs/core/BaseTable.js +149 -41
  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 +4 -2
  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 +2381 -733
  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 +14 -0
  105. package/es/core/BaseTable.js +148 -40
  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 +4 -2
  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
package/es/ListTable.d.ts CHANGED
@@ -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/es/ListTable.js CHANGED
@@ -130,10 +130,32 @@ export class ListTable extends BaseTable {
130
130
  this.renderAsync(), this.eventManager.updateEventBinder();
131
131
  }
132
132
  addColumns(toAddColumns, colIndex, isMaintainArrayData = !0) {
133
- var _a;
133
+ var _a, _b;
134
134
  const columns = this.options.columns;
135
+ if (Array.isArray(this.options.customMergeCell) && (null == toAddColumns ? void 0 : toAddColumns.length)) {
136
+ const axis = this.transpose ? "row" : "col";
137
+ let insertIndex = colIndex;
138
+ void 0 === insertIndex ? insertIndex = columns.length : insertIndex < 0 ? insertIndex = 0 : insertIndex > columns.length && (insertIndex = columns.length);
139
+ const toAddCount = toAddColumns.length, merges = this.options.customMergeCell.map((m => Object.assign(Object.assign({}, m), {
140
+ range: {
141
+ start: Object.assign({}, m.range.start),
142
+ end: Object.assign({}, m.range.end)
143
+ }
144
+ })));
145
+ for (let i = 0; i < merges.length; i++) {
146
+ const r = null === (_a = merges[i]) || void 0 === _a ? void 0 : _a.range;
147
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
148
+ const start = r.start[axis], end = r.end[axis];
149
+ end < insertIndex || (start > insertIndex ? (r.start[axis] = start + toAddCount,
150
+ r.end[axis] = end + toAddCount) : r.end[axis] = end + toAddCount);
151
+ }
152
+ this.options.customMergeCell = merges.filter((m => {
153
+ const r = null == m ? void 0 : m.range;
154
+ 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));
155
+ })), this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell);
156
+ }
135
157
  void 0 === colIndex ? (colIndex = columns.length, columns.push(...toAddColumns)) : columns.splice(colIndex, 0, ...toAddColumns);
136
- 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);
158
+ 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);
137
159
  this.internalProps._colRangeWidthsMap.clear();
138
160
  const resizedColIndexs = Array.from(this.internalProps._widthResizedColMap.keys());
139
161
  for (let i = 0; i < resizedColIndexs.length; i++) resizedColIndexs[i] >= colIndex && (this.internalProps._widthResizedColMap.delete(resizedColIndexs[i]),
@@ -147,15 +169,45 @@ export class ListTable extends BaseTable {
147
169
  }
148
170
  this.updateColumns(columns, {
149
171
  clearRowHeightCache: !1
150
- }), this.fireListeners(TABLE_EVENT_TYPE.ADD_COLUMN, {
172
+ }), Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell),
173
+ this.options.customMergeCell.forEach((m => {
174
+ const r = null == m ? void 0 : m.range;
175
+ 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);
176
+ })), this.scenegraph.updateNextFrame()), this.fireListeners(TABLE_EVENT_TYPE.ADD_COLUMN, {
151
177
  columnIndex: colIndex,
152
178
  columnCount: toAddColumns.length,
153
179
  columns: columns
154
180
  });
155
181
  }
156
182
  deleteColumns(deleteColIndexs, isMaintainArrayData = !0) {
183
+ var _a;
157
184
  const columns = this.options.columns;
158
185
  deleteColIndexs.sort(((a, b) => b - a));
186
+ const deletedColumns = deleteColIndexs.map((idx => cloneDeepSpec(columns[idx], [ "children" ])));
187
+ let deletedRecordValues;
188
+ if (Array.isArray(this.options.customMergeCell) && (null == deleteColIndexs ? void 0 : deleteColIndexs.length)) {
189
+ 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), {
190
+ range: {
191
+ start: Object.assign({}, m.range.start),
192
+ end: Object.assign({}, m.range.end)
193
+ }
194
+ })));
195
+ for (let i = 0; i < deleteIndexNums.length; i++) {
196
+ const deleteIndex = deleteIndexNums[i];
197
+ for (let j = 0; j < merges.length; j++) {
198
+ const r = null === (_a = merges[j]) || void 0 === _a ? void 0 : _a.range;
199
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
200
+ const start = r.start[axis], end = r.end[axis];
201
+ end < deleteIndex || (start > deleteIndex ? (r.start[axis] = start - 1, r.end[axis] = end - 1) : r.end[axis] = end - 1);
202
+ }
203
+ }
204
+ this.options.customMergeCell = merges.filter((m => {
205
+ const r = null == m ? void 0 : m.range;
206
+ 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));
207
+ })), this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell);
208
+ }
209
+ isMaintainArrayData && Array.isArray(this.records) && this.records.length && (deletedRecordValues = this.records.map((record => Array.isArray(record) ? deleteColIndexs.map((idx => record[idx])) : [])),
210
+ deletedRecordValues.every((v => 0 === v.length)) && (deletedRecordValues = void 0));
159
211
  for (let i = 0; i < deleteColIndexs.length; i++) if (columns.splice(deleteColIndexs[i], 1),
160
212
  this.colWidthsMap.delAndReorder(deleteColIndexs[i]), this.internalProps._widthResizedColMap.delete(deleteColIndexs[i]),
161
213
  isMaintainArrayData) for (let j = 0; j < this.records.length; j++) {
@@ -173,7 +225,9 @@ export class ListTable extends BaseTable {
173
225
  clearRowHeightCache: !1
174
226
  }), this.fireListeners(TABLE_EVENT_TYPE.DELETE_COLUMN, {
175
227
  deleteColIndexs: deleteColIndexs,
176
- columns: columns
228
+ columns: columns,
229
+ deletedColumns: deletedColumns,
230
+ deletedRecordValues: deletedRecordValues
177
231
  });
178
232
  }
179
233
  get columns() {
@@ -555,10 +609,10 @@ export class ListTable extends BaseTable {
555
609
  }
556
610
  }
557
611
  updateSortState(sortState, executeSort = !0) {
558
- var _a;
559
- 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",
560
- sortState = this.internalProps.sortState;
561
- (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 => {
612
+ var _a, _b, _c, _d, _e;
613
+ const normalizedSortState = (Array.isArray(sortState) ? sortState : sortState ? [ sortState ] : []).filter(Boolean);
614
+ if (normalizedSortState.length ? this.internalProps.sortState = sortState : this.internalProps.sortState = null,
615
+ executeSort) if (normalizedSortState.length) this.internalProps.layoutMap.headerObjects.some((item => !1 !== item.define.sort)) && (this.dataSource.sort(normalizedSortState.map((item => {
562
616
  const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, item.field);
563
617
  this.internalProps.layoutMap.headerObjects.find((col => col && col.field === item.field));
564
618
  return {
@@ -567,13 +621,22 @@ export class ListTable extends BaseTable {
567
621
  orderFn: null != sortFunc ? sortFunc : defaultOrderFn
568
622
  };
569
623
  }))), this.internalProps.layoutMap.clearCellRangeMap(), this.internalProps.useOneRowHeightFillAll = !1,
570
- this.scenegraph.sortCell()), sortState.length && this.stateManager.updateSortState(sortState);
624
+ this.scenegraph.sortCell()); else {
625
+ 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;
626
+ (null === (_d = null == ds ? void 0 : ds.sortedIndexMap) || void 0 === _d ? void 0 : _d.clear) && ds.sortedIndexMap.clear(),
627
+ void 0 !== ds.currentIndexedData && (ds.currentIndexedData = Array.from({
628
+ length: sourceLength
629
+ }, ((_, i) => i))), ds.lastSortStates = [], null === (_e = ds.updatePagination) || void 0 === _e || _e.call(ds, ds.pagination),
630
+ this.internalProps.layoutMap.clearCellRangeMap(), this.internalProps.useOneRowHeightFillAll = !1,
631
+ this.scenegraph.sortCell();
632
+ }
633
+ this.stateManager.updateSortState(normalizedSortState);
571
634
  }
572
635
  updateFilterRules(filterRules, options = {
573
636
  clearRowHeightCache: !0
574
637
  }) {
575
638
  var _a, _b, _c;
576
- this.scenegraph.clearCells(), null === (_b = (_a = this.dataSource).clearForceVisibleRecords) || void 0 === _b || _b.call(_a),
639
+ this.scenegraph.clearCells(), !1 !== (null == options ? void 0 : options.clearForceVisibleRecords) && (null === (_b = (_a = this.dataSource).clearForceVisibleRecords) || void 0 === _b || _b.call(_a)),
577
640
  this.sortState ? (this.dataSource.updateFilterRulesForSorted(filterRules), sortRecords(this)) : this.dataSource.updateFilterRules(filterRules, null == options ? void 0 : options.onFilterRecordsEnd),
578
641
  this.refreshRowColCount(), this.stateManager.initCheckedState(this.records), this.scenegraph.createSceneGraph(!(null == options ? void 0 : options.clearRowHeightCache)),
579
642
  null === (_c = this.internalProps.emptyTip) || void 0 === _c || _c.resetVisible(),
@@ -630,7 +693,7 @@ export class ListTable extends BaseTable {
630
693
  setRecords(records, option) {
631
694
  var _a, _b, _c, _d, _e;
632
695
  let sort;
633
- clearChartRenderQueue(), null === (_a = this.internalProps.dataSource) || void 0 === _a || _a.release(),
696
+ this.stateManager.endResizeIfResizing(), clearChartRenderQueue(), null === (_a = this.internalProps.dataSource) || void 0 === _a || _a.release(),
634
697
  this.internalProps.releaseList = null === (_b = this.internalProps.releaseList) || void 0 === _b ? void 0 : _b.filter((item => !item.dataSourceObj)),
635
698
  this.internalProps.dataSource = null, Array.isArray(option) || (null == option ? void 0 : option.order) ? sort = option : option ? sort = option.sortState : null === option && (sort = null);
636
699
  "undefined" != typeof window && window.performance.now();
@@ -843,34 +906,104 @@ export class ListTable extends BaseTable {
843
906
  this.resize();
844
907
  }
845
908
  addRecord(record, recordIndex, triggerEvent = !0) {
846
- var _a;
909
+ var _a, _b;
910
+ if (Array.isArray(this.options.customMergeCell) && "number" == typeof recordIndex) {
911
+ const axis = this.transpose ? "col" : "row", headerCount = this.transpose ? this.rowHeaderLevelCount : this.columnHeaderLevelCount, topAggregationCount = this.internalProps.layoutMap.hasAggregationOnTopCount;
912
+ let insertIndex = recordIndex;
913
+ void 0 === insertIndex || insertIndex > this.dataSource.sourceLength ? insertIndex = this.dataSource.sourceLength : insertIndex < 0 && (insertIndex = 0);
914
+ const insertIndexNum = insertIndex + headerCount + topAggregationCount, merges = this.options.customMergeCell.map((m => Object.assign(Object.assign({}, m), {
915
+ range: {
916
+ start: Object.assign({}, m.range.start),
917
+ end: Object.assign({}, m.range.end)
918
+ }
919
+ })));
920
+ for (let i = 0; i < merges.length; i++) {
921
+ const r = null === (_a = merges[i]) || void 0 === _a ? void 0 : _a.range;
922
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
923
+ const start = r.start[axis], end = r.end[axis];
924
+ end < insertIndexNum || (start > insertIndexNum ? (r.start[axis] = start + 1, r.end[axis] = end + 1) : r.end[axis] = end + 1);
925
+ }
926
+ this.options.customMergeCell = merges.filter((m => {
927
+ const r = null == m ? void 0 : m.range;
928
+ 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));
929
+ })), this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell);
930
+ }
847
931
  const success = listTableAddRecord(record, recordIndex, this);
848
- adjustHeightResizedRowMapWithAddRecordIndex(this, recordIndex, [ record ]), null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
849
- triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
932
+ adjustHeightResizedRowMapWithAddRecordIndex(this, recordIndex, [ record ]), null === (_b = this.internalProps.emptyTip) || void 0 === _b || _b.resetVisible(),
933
+ success && Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell),
934
+ this.options.customMergeCell.forEach((m => {
935
+ const r = null == m ? void 0 : m.range;
936
+ 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);
937
+ })), this.scenegraph.updateNextFrame()), triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
850
938
  records: [ record ],
851
939
  recordIndex: recordIndex,
852
940
  recordCount: 1
853
941
  });
854
942
  }
855
943
  addRecords(records, recordIndex, triggerEvent = !0) {
856
- var _a;
944
+ var _a, _b;
945
+ if (Array.isArray(this.options.customMergeCell) && "number" == typeof recordIndex && (null == records ? void 0 : records.length)) {
946
+ const axis = this.transpose ? "col" : "row", headerCount = this.transpose ? this.rowHeaderLevelCount : this.columnHeaderLevelCount, topAggregationCount = this.internalProps.layoutMap.hasAggregationOnTopCount;
947
+ let insertIndex = recordIndex;
948
+ void 0 === insertIndex || insertIndex > this.dataSource.sourceLength ? insertIndex = this.dataSource.sourceLength : insertIndex < 0 && (insertIndex = 0);
949
+ const insertIndexNum = insertIndex + headerCount + topAggregationCount, toAddCount = records.length, merges = this.options.customMergeCell.map((m => Object.assign(Object.assign({}, m), {
950
+ range: {
951
+ start: Object.assign({}, m.range.start),
952
+ end: Object.assign({}, m.range.end)
953
+ }
954
+ })));
955
+ for (let i = 0; i < merges.length; i++) {
956
+ const r = null === (_a = merges[i]) || void 0 === _a ? void 0 : _a.range;
957
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
958
+ const start = r.start[axis], end = r.end[axis];
959
+ end < insertIndexNum || (start > insertIndexNum ? (r.start[axis] = start + toAddCount,
960
+ r.end[axis] = end + toAddCount) : r.end[axis] = end + toAddCount);
961
+ }
962
+ this.options.customMergeCell = merges.filter((m => {
963
+ const r = null == m ? void 0 : m.range;
964
+ 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));
965
+ })), this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell);
966
+ }
857
967
  const success = listTableAddRecords(records, recordIndex, this);
858
968
  "number" == typeof recordIndex && adjustHeightResizedRowMapWithAddRecordIndex(this, recordIndex, records),
859
- null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
860
- triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
969
+ null === (_b = this.internalProps.emptyTip) || void 0 === _b || _b.resetVisible(),
970
+ success && Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell),
971
+ this.options.customMergeCell.forEach((m => {
972
+ const r = null == m ? void 0 : m.range;
973
+ 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);
974
+ })), this.scenegraph.updateNextFrame()), triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
861
975
  records: records,
862
976
  recordIndex: recordIndex,
863
977
  recordCount: records.length
864
978
  });
865
979
  }
866
980
  deleteRecords(recordIndexs, triggerEvent = !0) {
867
- var _a;
868
- const deletedRecords = [];
869
- (null == recordIndexs ? void 0 : recordIndexs.length) > 0 && recordIndexs.forEach((index => {
981
+ var _a, _b;
982
+ const prevMergeRanges = Array.isArray(this.options.customMergeCell) ? this.options.customMergeCell.map((m => null == m ? void 0 : m.range)).filter(Boolean).map((r => ({
983
+ start: Object.assign({}, r.start),
984
+ end: Object.assign({}, r.end)
985
+ }))) : [], deletedRecords = [];
986
+ if ((null == recordIndexs ? void 0 : recordIndexs.length) > 0 && recordIndexs.forEach((index => {
870
987
  let record = null;
871
988
  record = "number" == typeof index ? this.dataSource.get(index) : [], deletedRecords.push(record);
872
- })), listTableDeleteRecords(recordIndexs, this), adjustHeightResizedRowMapWithDeleteRecordIndex(this, recordIndexs),
873
- null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible();
989
+ })), Array.isArray(this.options.customMergeCell) && (null == recordIndexs ? void 0 : recordIndexs.length) && "number" == typeof recordIndexs[0]) {
990
+ 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;
991
+ for (let i = 0; i < deleteIndexNums.length; i++) {
992
+ const deleteIndex = deleteIndexNums[i];
993
+ for (let j = 0; j < merges.length; j++) {
994
+ const r = null === (_a = merges[j]) || void 0 === _a ? void 0 : _a.range;
995
+ if (!(null == r ? void 0 : r.start) || !(null == r ? void 0 : r.end)) continue;
996
+ const start = r.start[axis], end = r.end[axis];
997
+ end < deleteIndex || (start > deleteIndex ? (r.start[axis] = start - 1, r.end[axis] = end - 1) : r.end[axis] = end - 1);
998
+ }
999
+ }
1000
+ this.options.customMergeCell = merges.filter((m => {
1001
+ const r = null == m ? void 0 : m.range;
1002
+ 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));
1003
+ }));
1004
+ }
1005
+ listTableDeleteRecords(recordIndexs, this), adjustHeightResizedRowMapWithDeleteRecordIndex(this, recordIndexs),
1006
+ null === (_b = this.internalProps.emptyTip) || void 0 === _b || _b.resetVisible();
874
1007
  const rowIndexs = [];
875
1008
  for (let i = 0; i < recordIndexs.length; i++) rowIndexs.push(this.getBodyRowIndexByRecordIndex(recordIndexs[i]) + this.columnHeaderLevelCount);
876
1009
  triggerEvent && this.fireListeners(TABLE_EVENT_TYPE.DELETE_RECORD, {
@@ -878,7 +1011,17 @@ export class ListTable extends BaseTable {
878
1011
  records: deletedRecords,
879
1012
  rowIndexs: rowIndexs,
880
1013
  deletedCount: (Array.isArray(recordIndexs[0]), recordIndexs.length)
881
- });
1014
+ }), Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell),
1015
+ this.options.customMergeCell.forEach((m => {
1016
+ const r = null == m ? void 0 : m.range;
1017
+ 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);
1018
+ })), this.scenegraph.updateNextFrame(), setTimeout((() => {
1019
+ if (!this.internalProps || !this.options || !this.scenegraph) return;
1020
+ Array.isArray(this.options.customMergeCell) && (this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell));
1021
+ [ ...prevMergeRanges, ...Array.isArray(this.options.customMergeCell) ? this.options.customMergeCell.map((m => null == m ? void 0 : m.range)) : [] ].filter(Boolean).forEach((r => {
1022
+ 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);
1023
+ })), this.scenegraph.updateNextFrame();
1024
+ }), 0));
882
1025
  }
883
1026
  updateRecords(records, recordIndexs, triggerEvent = !0) {
884
1027
  listTableUpdateRecords(records, recordIndexs, this), triggerEvent && this.fireListeners(TABLE_EVENT_TYPE.UPDATE_RECORD, {
@@ -982,7 +1125,12 @@ export class ListTable extends BaseTable {
982
1125
  }
983
1126
  }), this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell);
984
1127
  for (let i = startCol; i <= endCol; i++) for (let j = startRow; j <= endRow; j++) this.scenegraph.updateCellContent(i, j);
985
- this.scenegraph.updateNextFrame();
1128
+ this.scenegraph.updateNextFrame(), this.fireListeners(TABLE_EVENT_TYPE.MERGE_CELLS, {
1129
+ startCol: startCol,
1130
+ startRow: startRow,
1131
+ endCol: endCol,
1132
+ endRow: endRow
1133
+ });
986
1134
  }
987
1135
  unmergeCells(startCol, startRow, endCol, endRow) {
988
1136
  this.options.customMergeCell ? "function" == typeof this.options.customMergeCell && (this.options.customMergeCell = []) : this.options.customMergeCell = [],
@@ -991,7 +1139,12 @@ export class ListTable extends BaseTable {
991
1139
  return !(start.col === startCol && start.row === startRow && end.col === endCol && end.row === endRow);
992
1140
  })), this.internalProps.customMergeCell = getCustomMergeCellFunc(this.options.customMergeCell);
993
1141
  for (let i = startCol; i <= endCol; i++) for (let j = startRow; j <= endRow; j++) this.scenegraph.updateCellContent(i, j);
994
- this.scenegraph.updateNextFrame();
1142
+ this.scenegraph.updateNextFrame(), this.fireListeners(TABLE_EVENT_TYPE.UNMERGE_CELLS, {
1143
+ startCol: startCol,
1144
+ startRow: startRow,
1145
+ endCol: endCol,
1146
+ endRow: endRow
1147
+ });
995
1148
  }
996
1149
  }
997
1150
  //# sourceMappingURL=ListTable.js.map