k-vtable 1.0.32 → 1.0.33

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 (242) hide show
  1. package/README.md +20 -0
  2. package/cjs/ListTable.d.ts +34 -7
  3. package/cjs/ListTable.js +152 -28
  4. package/cjs/ListTable.js.map +1 -1
  5. package/cjs/PivotChart.js +15 -8
  6. package/cjs/PivotChart.js.map +1 -1
  7. package/cjs/PivotTable.js +30 -16
  8. package/cjs/PivotTable.js.map +1 -1
  9. package/cjs/components/legend/continue-legend/continue-legend.js +5 -4
  10. package/cjs/components/legend/continue-legend/continue-legend.js.map +1 -1
  11. package/cjs/components/legend/discrete-legend/discrete-legend.js +5 -4
  12. package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  13. package/cjs/components/title/title.js +4 -4
  14. package/cjs/components/title/title.js.map +1 -1
  15. package/cjs/core/BaseTable.d.ts +4 -0
  16. package/cjs/core/BaseTable.js +32 -18
  17. package/cjs/core/BaseTable.js.map +1 -1
  18. package/cjs/core/TABLE_EVENT_TYPE.d.ts +1 -0
  19. package/cjs/core/TABLE_EVENT_TYPE.js +1 -0
  20. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  21. package/cjs/core/index.d.ts +1 -0
  22. package/cjs/core/index.js +30 -0
  23. package/cjs/core/index.js.map +1 -0
  24. package/cjs/core/record-helper.d.ts +4 -2
  25. package/cjs/core/record-helper.js +120 -47
  26. package/cjs/core/record-helper.js.map +1 -1
  27. package/cjs/core/style-helper.js +1 -1
  28. package/cjs/core/style-helper.js.map +1 -1
  29. package/cjs/data/DataSource.d.ts +13 -4
  30. package/cjs/data/DataSource.js +174 -60
  31. package/cjs/data/DataSource.js.map +1 -1
  32. package/cjs/dataset/DataStatistics.js +1 -2
  33. package/cjs/dataset/dataset-pivot-table.js +2 -1
  34. package/cjs/dataset/dataset.d.ts +4 -1
  35. package/cjs/dataset/dataset.js +40 -10
  36. package/cjs/dataset/dataset.js.map +1 -1
  37. package/cjs/edit/edit-manager.js +2 -2
  38. package/cjs/edit/edit-manager.js.map +1 -1
  39. package/cjs/event/EventHandler.js +4 -3
  40. package/cjs/event/EventHandler.js.map +1 -1
  41. package/cjs/event/EventTarget.d.ts +1 -1
  42. package/cjs/event/EventTarget.js +1 -1
  43. package/cjs/event/EventTarget.js.map +1 -1
  44. package/cjs/event/event.d.ts +2 -1
  45. package/cjs/event/event.js +20 -9
  46. package/cjs/event/event.js.map +1 -1
  47. package/cjs/event/listener/container-dom.js +1 -1
  48. package/cjs/event/listener/container-dom.js.map +1 -1
  49. package/cjs/event/listener/table-group.js +8 -7
  50. package/cjs/event/listener/table-group.js.map +1 -1
  51. package/cjs/event/media-click.js +5 -5
  52. package/cjs/event/media-click.js.map +1 -1
  53. package/cjs/header-helper/header-helper.d.ts +2 -2
  54. package/cjs/header-helper/header-helper.js.map +1 -1
  55. package/cjs/header-helper/style.js +1 -2
  56. package/cjs/icons.js +2 -2
  57. package/cjs/icons.js.map +1 -1
  58. package/cjs/index.d.ts +1 -1
  59. package/cjs/index.js +1 -1
  60. package/cjs/index.js.map +1 -1
  61. package/cjs/layout/index.js +2 -1
  62. package/cjs/layout/pivot-header-layout.js +2 -1
  63. package/cjs/layout/pivot-header-layout.js.map +1 -1
  64. package/cjs/plugins/custom-cell-style.d.ts +5 -0
  65. package/cjs/plugins/custom-cell-style.js +9 -0
  66. package/cjs/plugins/custom-cell-style.js.map +1 -1
  67. package/cjs/plugins/index.js +1 -1
  68. package/cjs/scenegraph/group-creater/cell-helper.js +2 -2
  69. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  70. package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +3 -1
  71. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +12 -6
  72. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  73. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +6 -2
  74. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  75. package/cjs/scenegraph/group-creater/column-helper.js +1 -2
  76. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  77. package/cjs/scenegraph/layout/compute-col-width.js +9 -7
  78. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  79. package/cjs/scenegraph/layout/compute-row-height.js +1 -2
  80. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  81. package/cjs/scenegraph/layout/update-height.js +3 -3
  82. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  83. package/cjs/scenegraph/layout/update-width.js +5 -5
  84. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  85. package/cjs/scenegraph/scenegraph.js +1 -1
  86. package/cjs/scenegraph/scenegraph.js.map +1 -1
  87. package/cjs/state/hover/col.js.map +1 -1
  88. package/cjs/state/hover/is-cell-hover.js.map +1 -1
  89. package/cjs/state/hover/update-cell.js.map +1 -1
  90. package/cjs/themes/themes.d.ts +3 -1
  91. package/cjs/themes/themes.js +30 -1
  92. package/cjs/themes/themes.js.map +1 -1
  93. package/cjs/themes.d.ts +2 -0
  94. package/cjs/themes.js +11 -2
  95. package/cjs/themes.js.map +1 -1
  96. package/cjs/tools/join.js +1 -0
  97. package/cjs/tools/join.js.map +1 -1
  98. package/cjs/ts-types/base-table.d.ts +7 -2
  99. package/cjs/ts-types/base-table.js.map +1 -1
  100. package/cjs/ts-types/events.d.ts +15 -0
  101. package/cjs/ts-types/events.js.map +1 -1
  102. package/cjs/ts-types/icon.d.ts +2 -0
  103. package/cjs/ts-types/icon.js +4 -3
  104. package/cjs/ts-types/icon.js.map +1 -1
  105. package/cjs/ts-types/list-table/layout-map/api.d.ts +3 -3
  106. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  107. package/cjs/ts-types/pivot-table/corner.d.ts +1 -1
  108. package/cjs/ts-types/pivot-table/corner.js.map +1 -1
  109. package/cjs/ts-types/pivot-table/dimension/composite-dimension.d.ts +17 -0
  110. package/cjs/ts-types/pivot-table/dimension/composite-dimension.js +6 -0
  111. package/cjs/ts-types/pivot-table/dimension/composite-dimension.js.map +1 -0
  112. package/cjs/ts-types/pivot-table/dimension/index.d.ts +3 -2
  113. package/cjs/ts-types/pivot-table/dimension/index.js.map +1 -1
  114. package/cjs/ts-types/pivot-table/indicator/composite-indicator.d.ts +14 -2
  115. package/cjs/ts-types/pivot-table/indicator/composite-indicator.js.map +1 -1
  116. package/cjs/ts-types/pivot-table/indicator/index.d.ts +2 -2
  117. package/cjs/ts-types/pivot-table/indicator/index.js.map +1 -1
  118. package/cjs/ts-types/table-engine.d.ts +33 -6
  119. package/cjs/ts-types/table-engine.js.map +1 -1
  120. package/cjs/vrender.js.map +1 -1
  121. package/dist/vtable.js +1046 -262
  122. package/dist/vtable.min.js +2 -2
  123. package/es/ListTable.d.ts +34 -7
  124. package/es/ListTable.js +148 -28
  125. package/es/ListTable.js.map +1 -1
  126. package/es/PivotChart.js +15 -8
  127. package/es/PivotChart.js.map +1 -1
  128. package/es/PivotTable.js +30 -16
  129. package/es/PivotTable.js.map +1 -1
  130. package/es/components/legend/continue-legend/continue-legend.js +5 -4
  131. package/es/components/legend/continue-legend/continue-legend.js.map +1 -1
  132. package/es/components/legend/discrete-legend/discrete-legend.js +5 -4
  133. package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  134. package/es/components/title/title.js +4 -4
  135. package/es/components/title/title.js.map +1 -1
  136. package/es/core/BaseTable.d.ts +4 -0
  137. package/es/core/BaseTable.js +32 -18
  138. package/es/core/BaseTable.js.map +1 -1
  139. package/es/core/TABLE_EVENT_TYPE.d.ts +1 -0
  140. package/es/core/TABLE_EVENT_TYPE.js +1 -0
  141. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  142. package/es/core/index.d.ts +1 -0
  143. package/es/core/index.js +2 -0
  144. package/es/core/index.js.map +1 -0
  145. package/es/core/record-helper.d.ts +4 -2
  146. package/es/core/record-helper.js +114 -43
  147. package/es/core/record-helper.js.map +1 -1
  148. package/es/core/style-helper.js +1 -1
  149. package/es/core/style-helper.js.map +1 -1
  150. package/es/data/DataSource.d.ts +13 -4
  151. package/es/data/DataSource.js +174 -60
  152. package/es/data/DataSource.js.map +1 -1
  153. package/es/dataset/DataStatistics.js +1 -2
  154. package/es/dataset/dataset-pivot-table.js +2 -1
  155. package/es/dataset/dataset.d.ts +4 -1
  156. package/es/dataset/dataset.js +40 -10
  157. package/es/dataset/dataset.js.map +1 -1
  158. package/es/edit/edit-manager.js +2 -2
  159. package/es/edit/edit-manager.js.map +1 -1
  160. package/es/event/EventHandler.js +4 -3
  161. package/es/event/EventHandler.js.map +1 -1
  162. package/es/event/EventTarget.d.ts +1 -1
  163. package/es/event/EventTarget.js +1 -1
  164. package/es/event/EventTarget.js.map +1 -1
  165. package/es/event/event.d.ts +2 -1
  166. package/es/event/event.js +20 -9
  167. package/es/event/event.js.map +1 -1
  168. package/es/event/listener/container-dom.js +1 -1
  169. package/es/event/listener/container-dom.js.map +1 -1
  170. package/es/event/listener/table-group.js +8 -7
  171. package/es/event/listener/table-group.js.map +1 -1
  172. package/es/event/media-click.js +5 -5
  173. package/es/event/media-click.js.map +1 -1
  174. package/es/header-helper/header-helper.d.ts +2 -2
  175. package/es/header-helper/header-helper.js.map +1 -1
  176. package/es/header-helper/style.js +1 -2
  177. package/es/icons.js +1 -3
  178. package/es/icons.js.map +1 -1
  179. package/es/index.d.ts +1 -1
  180. package/es/index.js +1 -1
  181. package/es/index.js.map +1 -1
  182. package/es/layout/index.js +2 -1
  183. package/es/layout/pivot-header-layout.js +2 -1
  184. package/es/layout/pivot-header-layout.js.map +1 -1
  185. package/es/plugins/custom-cell-style.d.ts +5 -0
  186. package/es/plugins/custom-cell-style.js +9 -0
  187. package/es/plugins/custom-cell-style.js.map +1 -1
  188. package/es/plugins/index.js +1 -1
  189. package/es/scenegraph/group-creater/cell-helper.js +2 -2
  190. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  191. package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +3 -1
  192. package/es/scenegraph/group-creater/cell-type/image-cell.js +11 -7
  193. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  194. package/es/scenegraph/group-creater/cell-type/video-cell.js +7 -3
  195. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  196. package/es/scenegraph/group-creater/column-helper.js +1 -2
  197. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  198. package/es/scenegraph/layout/compute-col-width.js +9 -7
  199. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  200. package/es/scenegraph/layout/compute-row-height.js +1 -2
  201. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  202. package/es/scenegraph/layout/update-height.js +3 -3
  203. package/es/scenegraph/layout/update-height.js.map +1 -1
  204. package/es/scenegraph/layout/update-width.js +5 -5
  205. package/es/scenegraph/layout/update-width.js.map +1 -1
  206. package/es/scenegraph/scenegraph.js +1 -1
  207. package/es/scenegraph/scenegraph.js.map +1 -1
  208. package/es/state/hover/col.js.map +1 -1
  209. package/es/state/hover/is-cell-hover.js.map +1 -1
  210. package/es/state/hover/update-cell.js.map +1 -1
  211. package/es/themes/themes.d.ts +3 -1
  212. package/es/themes/themes.js +27 -0
  213. package/es/themes/themes.js.map +1 -1
  214. package/es/themes.d.ts +2 -0
  215. package/es/themes.js +3 -1
  216. package/es/themes.js.map +1 -1
  217. package/es/tools/join.js +1 -0
  218. package/es/tools/join.js.map +1 -1
  219. package/es/ts-types/base-table.d.ts +7 -2
  220. package/es/ts-types/base-table.js.map +1 -1
  221. package/es/ts-types/events.d.ts +15 -0
  222. package/es/ts-types/events.js.map +1 -1
  223. package/es/ts-types/icon.d.ts +2 -0
  224. package/es/ts-types/icon.js +4 -3
  225. package/es/ts-types/icon.js.map +1 -1
  226. package/es/ts-types/list-table/layout-map/api.d.ts +3 -3
  227. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  228. package/es/ts-types/pivot-table/corner.d.ts +1 -1
  229. package/es/ts-types/pivot-table/corner.js.map +1 -1
  230. package/es/ts-types/pivot-table/dimension/composite-dimension.d.ts +17 -0
  231. package/es/ts-types/pivot-table/dimension/composite-dimension.js +2 -0
  232. package/es/ts-types/pivot-table/dimension/composite-dimension.js.map +1 -0
  233. package/es/ts-types/pivot-table/dimension/index.d.ts +3 -2
  234. package/es/ts-types/pivot-table/dimension/index.js.map +1 -1
  235. package/es/ts-types/pivot-table/indicator/composite-indicator.d.ts +14 -2
  236. package/es/ts-types/pivot-table/indicator/composite-indicator.js.map +1 -1
  237. package/es/ts-types/pivot-table/indicator/index.d.ts +2 -2
  238. package/es/ts-types/pivot-table/indicator/index.js.map +1 -1
  239. package/es/ts-types/table-engine.d.ts +33 -6
  240. package/es/ts-types/table-engine.js.map +1 -1
  241. package/es/vrender.js.map +1 -1
  242. package/package.json +6 -6
@@ -348,6 +348,23 @@ class DataSource extends EventTarget_1.EventTarget {
348
348
  }
349
349
  }
350
350
  }
351
+ changeFieldValueByRecordIndex(value, recordIndex, field, table) {
352
+ var _a, _b, _c, _d;
353
+ if (null === field) return;
354
+ if (null == recordIndex) return;
355
+ const rawKey = recordIndex.toString();
356
+ if (!this.beforeChangedRecordsMap.has(rawKey)) {
357
+ const rawRecords = Array.isArray(null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.records) ? this.dataSourceObj.records : null, originRecord = rawRecords ? Array.isArray(recordIndex) ? getValueFromDeepArray(rawRecords, recordIndex) : rawRecords[recordIndex] : void 0;
358
+ this.beforeChangedRecordsMap.set(rawKey, null !== (_b = (0, vutils_1.cloneDeep)(originRecord, void 0, [ "vtable_gantt_linkedFrom", "vtable_gantt_linkedTo" ])) && void 0 !== _b ? _b : {});
359
+ }
360
+ if ("string" == typeof field || "number" == typeof field) {
361
+ const beforeChangedValue = null === (_c = this.beforeChangedRecordsMap.get(rawKey)) || void 0 === _c ? void 0 : _c[field], rawRecords = Array.isArray(null === (_d = this.dataSourceObj) || void 0 === _d ? void 0 : _d.records) ? this.dataSourceObj.records : null, record = rawRecords ? Array.isArray(recordIndex) ? getValueFromDeepArray(rawRecords, recordIndex) : rawRecords[recordIndex] : void 0;
362
+ let formatValue = value;
363
+ "number" == typeof beforeChangedValue && (0, util_1.isAllDigits)(value) && (formatValue = parseFloat(value)),
364
+ record ? record[field] = formatValue : rawRecords && "number" == typeof recordIndex && (rawRecords[recordIndex] = "Array" === this.addRecordRule ? [] : {},
365
+ rawRecords[recordIndex][field] = formatValue);
366
+ }
367
+ }
351
368
  cacheBeforeChangedRecord(dataIndex, table) {
352
369
  var _a;
353
370
  if (!this.beforeChangedRecordsMap.has(dataIndex.toString())) {
@@ -364,38 +381,89 @@ class DataSource extends EventTarget_1.EventTarget {
364
381
  Array.isArray(indexed) || this.records.splice(indexed, 1, record);
365
382
  }
366
383
  }
367
- addRecord(record, index) {
368
- var _a;
369
- if (Array.isArray(this.records)) {
370
- this.records.splice(index, 0, record), this.adjustBeforeChangedRecordsMap(index, 1),
371
- this.currentIndexedData.push(this.currentIndexedData.length), this._sourceLength += 1;
372
- for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].push(record);
373
- if ("tree" === this.rowHierarchyType && this.initTreeHierarchyState(), this.userPagination) {
374
- this.pagination.totalCount = this._sourceLength;
375
- const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
376
- index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
377
- } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
378
- this.updatePagerData();
379
- (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, 1);
380
- }
381
- }
382
- addRecords(recordArr, index) {
384
+ _getRawRecordsArray() {
383
385
  var _a;
384
- if (Array.isArray(this.records)) {
385
- if (Array.isArray(recordArr)) {
386
- this.records.splice(index, 0, ...recordArr), this.adjustBeforeChangedRecordsMap(index, recordArr.length);
387
- for (let i = 0; i < recordArr.length; i++) this.currentIndexedData.push(this.currentIndexedData.length);
388
- this._sourceLength += recordArr.length;
389
- for (let i = 0; i < this.fieldAggregators.length; i++) for (let j = 0; j < recordArr.length; j++) this.fieldAggregators[i].push(recordArr[j]);
386
+ const rawRecords = null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.records;
387
+ return Array.isArray(rawRecords) ? rawRecords : null;
388
+ }
389
+ _hasFilterInEffect() {
390
+ var _a, _b, _c, _d, _e;
391
+ return (null !== (_c = null === (_b = null === (_a = this.dataConfig) || void 0 === _a ? void 0 : _a.filterRules) || void 0 === _b ? void 0 : _b.length) && void 0 !== _c ? _c : 0) >= 1 || (null !== (_e = null === (_d = this.lastFilterRules) || void 0 === _d ? void 0 : _d.length) && void 0 !== _e ? _e : 0) >= 1;
392
+ }
393
+ _normalizeInsertIndex(index, length) {
394
+ return null == index || index > length ? length : index < 0 ? 0 : index;
395
+ }
396
+ _mapViewInsertIndexToRawInsertIndex(rawRecords, viewIndex) {
397
+ if (0 === this.records.length) return rawRecords.length;
398
+ if (viewIndex <= 0) {
399
+ const firstVisibleRecord = this.records[0], rawIndex = rawRecords.indexOf(firstVisibleRecord);
400
+ return rawIndex >= 0 ? rawIndex : 0;
401
+ }
402
+ if (viewIndex >= this.records.length) {
403
+ const lastVisibleRecord = this.records[this.records.length - 1], rawIndex = rawRecords.indexOf(lastVisibleRecord);
404
+ return rawIndex >= 0 ? rawIndex + 1 : rawRecords.length;
405
+ }
406
+ const prevRecord = this.records[viewIndex - 1], rawIndex = rawRecords.indexOf(prevRecord);
407
+ return rawIndex >= 0 ? rawIndex + 1 : rawRecords.length;
408
+ }
409
+ _resetIndexingFromViewRecords() {
410
+ if (this._sourceLength = this.records.length, this.currentIndexedData = Array.from({
411
+ length: this._sourceLength
412
+ }, ((_, i) => i)), "tree" === this.rowHierarchyType && this.initTreeHierarchyState(),
413
+ this.userPagination) return this.pagination.totalCount = this._sourceLength, void this.updatePagerData();
414
+ this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
415
+ this.updatePagerData();
416
+ }
417
+ addRecord(record, index, syncToOriginalRecords = !1) {
418
+ var _a, _b, _c;
419
+ if (!syncToOriginalRecords) {
420
+ if (Array.isArray(this.records)) {
421
+ this.records.splice(index, 0, record), this.adjustBeforeChangedRecordsMap(index, 1),
422
+ this.currentIndexedData.push(this.currentIndexedData.length), this._sourceLength += 1;
423
+ for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].push(record);
424
+ if ("tree" === this.rowHierarchyType && this.initTreeHierarchyState(), this.userPagination) {
425
+ this.pagination.totalCount = this._sourceLength;
426
+ const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
427
+ index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
428
+ } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
429
+ this.updatePagerData();
430
+ (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, 1);
431
+ }
432
+ return;
433
+ }
434
+ const rawRecords = this._getRawRecordsArray();
435
+ if (!rawRecords) return;
436
+ const viewInsertIndex = this._normalizeInsertIndex(index, this.records.length), rawInsertIndex = this._hasFilterInEffect() ? this._mapViewInsertIndexToRawInsertIndex(rawRecords, viewInsertIndex) : this._normalizeInsertIndex(viewInsertIndex, rawRecords.length);
437
+ rawRecords.splice(rawInsertIndex, 0, record), syncToOriginalRecords && this._hasFilterInEffect() && this.markForceVisibleRecord(record),
438
+ this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules),
439
+ (null === (_c = this.dataSourceObj) || void 0 === _c ? void 0 : _c.added) && this.dataSourceObj.added(rawInsertIndex, 1);
440
+ }
441
+ addRecords(recordArr, index, syncToOriginalRecords = !1) {
442
+ var _a, _b, _c;
443
+ if (!syncToOriginalRecords) {
444
+ if (Array.isArray(this.records)) {
445
+ if (Array.isArray(recordArr)) {
446
+ this.records.splice(index, 0, ...recordArr), this.adjustBeforeChangedRecordsMap(index, recordArr.length);
447
+ for (let i = 0; i < recordArr.length; i++) this.currentIndexedData.push(this.currentIndexedData.length);
448
+ this._sourceLength += recordArr.length;
449
+ for (let i = 0; i < this.fieldAggregators.length; i++) for (let j = 0; j < recordArr.length; j++) this.fieldAggregators[i].push(recordArr[j]);
450
+ }
451
+ if (this.userPagination) {
452
+ this.pagination.totalCount = this._sourceLength;
453
+ const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
454
+ index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
455
+ } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
456
+ this.updatePagerData();
457
+ (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, recordArr.length);
390
458
  }
391
- if (this.userPagination) {
392
- this.pagination.totalCount = this._sourceLength;
393
- const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
394
- index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
395
- } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
396
- this.updatePagerData();
397
- (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, recordArr.length);
459
+ return;
398
460
  }
461
+ const rawRecords = this._getRawRecordsArray();
462
+ if (!rawRecords || !Array.isArray(recordArr) || 0 === recordArr.length) return;
463
+ const viewInsertIndex = this._normalizeInsertIndex(index, this.records.length), rawInsertIndex = this._hasFilterInEffect() ? this._mapViewInsertIndexToRawInsertIndex(rawRecords, viewInsertIndex) : this._normalizeInsertIndex(viewInsertIndex, rawRecords.length);
464
+ if (rawRecords.splice(rawInsertIndex, 0, ...recordArr), syncToOriginalRecords && this._hasFilterInEffect()) for (let i = 0; i < recordArr.length; i++) this.markForceVisibleRecord(recordArr[i]);
465
+ this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules),
466
+ (null === (_c = this.dataSourceObj) || void 0 === _c ? void 0 : _c.added) && this.dataSourceObj.added(rawInsertIndex, recordArr.length);
399
467
  }
400
468
  addRecordForSorted(record) {
401
469
  Array.isArray(this.records) && (this.beforeChangedRecordsMap.clear(), this.records.push(record),
@@ -414,28 +482,48 @@ class DataSource extends EventTarget_1.EventTarget {
414
482
  }
415
483
  }
416
484
  adjustBeforeChangedRecordsMap(insertIndex, insertCount, type = "add") {
417
- for (let key = this.beforeChangedRecordsMap.size - 1; key >= insertIndex; key--) {
418
- const record = this.beforeChangedRecordsMap.get(key.toString());
419
- this.beforeChangedRecordsMap.delete(key.toString()), this.beforeChangedRecordsMap.set((key + ("add" === type ? insertCount : -insertCount)).toString(), record);
485
+ const delta = "add" === type ? insertCount : -insertCount, numericKeys = [];
486
+ this.beforeChangedRecordsMap.forEach(((_, key) => {
487
+ const numKey = Number(key);
488
+ Number.isInteger(numKey) && numKey.toString() === key && numKey >= insertIndex && numericKeys.push(numKey);
489
+ })), numericKeys.sort(((a, b) => "add" === type ? b - a : a - b));
490
+ for (let i = 0; i < numericKeys.length; i++) {
491
+ const key = numericKeys[i], record = this.beforeChangedRecordsMap.get(key.toString());
492
+ this.beforeChangedRecordsMap.delete(key.toString()), this.beforeChangedRecordsMap.set((key + delta).toString(), record);
420
493
  }
421
494
  }
422
- deleteRecords(recordIndexs) {
423
- var _a;
424
- if (Array.isArray(this.records)) {
425
- const realDeletedRecordIndexs = [], recordIndexsMaxToMin = recordIndexs.sort(((a, b) => b - a));
426
- for (let index = 0; index < recordIndexsMaxToMin.length; index++) {
427
- const recordIndex = recordIndexsMaxToMin[index];
428
- if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
429
- this.adjustBeforeChangedRecordsMap(recordIndex, 1, "delete"), realDeletedRecordIndexs.push(recordIndex);
430
- const deletedRecord = this.records[recordIndex];
431
- for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].deleteRecord(deletedRecord);
432
- this.records.splice(recordIndex, 1), this.currentIndexedData.pop(), this._sourceLength -= 1;
495
+ deleteRecords(recordIndexs, syncToOriginalRecords = !1) {
496
+ var _a, _b, _c;
497
+ if (!syncToOriginalRecords) {
498
+ if (Array.isArray(this.records)) {
499
+ const realDeletedRecordIndexs = [], recordIndexsMaxToMin = recordIndexs.sort(((a, b) => b - a));
500
+ for (let index = 0; index < recordIndexsMaxToMin.length; index++) {
501
+ const recordIndex = recordIndexsMaxToMin[index];
502
+ if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
503
+ this.adjustBeforeChangedRecordsMap(recordIndex, 1, "delete"), realDeletedRecordIndexs.push(recordIndex);
504
+ const deletedRecord = this.records[recordIndex];
505
+ for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].deleteRecord(deletedRecord);
506
+ this.records.splice(recordIndex, 1), this.currentIndexedData.pop(), this._sourceLength -= 1;
507
+ }
508
+ return this.userPagination || (this.pagination.perPageCount = this._sourceLength,
509
+ this.pagination.totalCount = this._sourceLength), this.updatePagerData(), (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.deleted) && this.dataSourceObj.deleted(realDeletedRecordIndexs),
510
+ realDeletedRecordIndexs;
433
511
  }
434
- return this.userPagination || (this.pagination.perPageCount = this._sourceLength,
435
- this.pagination.totalCount = this._sourceLength), this.updatePagerData(), (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.deleted) && this.dataSourceObj.deleted(realDeletedRecordIndexs),
436
- realDeletedRecordIndexs;
512
+ return [];
437
513
  }
438
- return [];
514
+ const rawRecords = this._getRawRecordsArray();
515
+ if (!rawRecords || !Array.isArray(this.records)) return [];
516
+ const realDeletedRecordIndexs = [], recordIndexsMaxToMin = recordIndexs.slice().sort(((a, b) => b - a)), rawDeletedIndexs = [];
517
+ for (let index = 0; index < recordIndexsMaxToMin.length; index++) {
518
+ const viewIndex = recordIndexsMaxToMin[index];
519
+ if (viewIndex >= this.records.length || viewIndex < 0) continue;
520
+ const deletedRecord = this.records[viewIndex], rawIndex = rawRecords.indexOf(deletedRecord);
521
+ rawIndex >= 0 && (rawRecords.splice(rawIndex, 1), rawDeletedIndexs.push(rawIndex)),
522
+ realDeletedRecordIndexs.push(viewIndex);
523
+ }
524
+ return this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules),
525
+ (null === (_c = this.dataSourceObj) || void 0 === _c ? void 0 : _c.deleted) && this.dataSourceObj.deleted(rawDeletedIndexs),
526
+ realDeletedRecordIndexs;
439
527
  }
440
528
  deleteRecordsForSorted(recordIndexs) {
441
529
  if (Array.isArray(this.records)) {
@@ -450,20 +538,38 @@ class DataSource extends EventTarget_1.EventTarget {
450
538
  this.pagination.totalCount = this._sourceLength), this.beforeChangedRecordsMap.clear();
451
539
  }
452
540
  }
453
- updateRecords(records, recordIndexs) {
454
- const realDeletedRecordIndexs = [];
541
+ updateRecords(records, recordIndexs, syncToOriginalRecords = !1) {
542
+ var _a;
543
+ if (!syncToOriginalRecords) {
544
+ const realDeletedRecordIndexs = [];
545
+ for (let index = 0; index < recordIndexs.length; index++) {
546
+ const recordIndex = recordIndexs[index];
547
+ if (Array.isArray(recordIndex)) this.beforeChangedRecordsMap.delete(recordIndex.toString()),
548
+ realDeletedRecordIndexs.push(recordIndex), recordIndex.slice(0, -1).reduce(((acc, key) => (void 0 === acc[key] && (acc[key] = {}),
549
+ acc[key].children)), this.records)[recordIndex[recordIndex.length - 1]] = records[index]; else {
550
+ if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
551
+ this.beforeChangedRecordsMap.delete(recordIndex.toString()), realDeletedRecordIndexs.push(recordIndex);
552
+ for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].updateRecord(this.records[recordIndex], records[index]);
553
+ this.records[recordIndex] = records[index];
554
+ }
555
+ }
556
+ return this.userPagination && this.updatePagerData(), realDeletedRecordIndexs;
557
+ }
558
+ const rawRecords = this._getRawRecordsArray();
559
+ if (!rawRecords || !Array.isArray(this.records)) return [];
560
+ const realUpdatedIndexs = [];
455
561
  for (let index = 0; index < recordIndexs.length; index++) {
456
562
  const recordIndex = recordIndexs[index];
457
563
  if (Array.isArray(recordIndex)) this.beforeChangedRecordsMap.delete(recordIndex.toString()),
458
- realDeletedRecordIndexs.push(recordIndex), recordIndex.slice(0, -1).reduce(((acc, key) => (void 0 === acc[key] && (acc[key] = {}),
459
- acc[key].children)), this.records)[recordIndex[recordIndex.length - 1]] = records[index]; else {
460
- if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
461
- this.beforeChangedRecordsMap.delete(recordIndex.toString()), realDeletedRecordIndexs.push(recordIndex);
462
- for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].updateRecord(this.records[recordIndex], records[index]);
463
- this.records[recordIndex] = records[index];
564
+ realUpdatedIndexs.push(recordIndex), recordIndex.slice(0, -1).reduce(((acc, key) => (void 0 === acc[key] && (acc[key] = {}),
565
+ acc[key].children)), rawRecords)[recordIndex[recordIndex.length - 1]] = records[index]; else {
566
+ if (recordIndex >= this.records.length || recordIndex < 0) continue;
567
+ const oldRecord = this.records[recordIndex], rawIndex = rawRecords.indexOf(oldRecord);
568
+ rawIndex >= 0 && (rawRecords[rawIndex] = records[index]), realUpdatedIndexs.push(recordIndex);
464
569
  }
465
570
  }
466
- return this.userPagination && this.updatePagerData(), realDeletedRecordIndexs;
571
+ return this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_a = this.dataConfig) || void 0 === _a ? void 0 : _a.filterRules),
572
+ realUpdatedIndexs;
467
573
  }
468
574
  updateRecordsForSorted(records, recordIndexs) {
469
575
  const realDeletedRecordIndexs = [];
@@ -529,23 +635,31 @@ class DataSource extends EventTarget_1.EventTarget {
529
635
  setSortedIndexMap(field, filedMap) {
530
636
  this.sortedIndexMap.set(field, filedMap);
531
637
  }
638
+ markForceVisibleRecord(record) {
639
+ !record || "object" != typeof record && "function" != typeof record || (this._forceVisibleRecords || (this._forceVisibleRecords = new WeakSet),
640
+ this._forceVisibleRecords.add(record));
641
+ }
642
+ clearForceVisibleRecords() {
643
+ this._forceVisibleRecords = void 0;
644
+ }
532
645
  clearFilteredChildren(record) {
533
646
  var _a, _b;
534
647
  record.filteredChildren = void 0;
535
648
  for (let i = 0; i < (null !== (_b = null === (_a = record.children) || void 0 === _a ? void 0 : _a.length) && void 0 !== _b ? _b : 0); i++) this.clearFilteredChildren(record.children[i]);
536
649
  }
537
650
  filterRecord(record) {
538
- var _a, _b, _c;
651
+ var _a, _b, _c, _d;
652
+ if (null === (_a = this._forceVisibleRecords) || void 0 === _a ? void 0 : _a.has(record)) return !0;
539
653
  let isReserved = !0;
540
- for (let i = 0; i < (null === (_a = this.dataConfig.filterRules) || void 0 === _a ? void 0 : _a.length); i++) {
541
- const filterRule = null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules[i];
654
+ for (let i = 0; i < (null === (_b = this.dataConfig.filterRules) || void 0 === _b ? void 0 : _b.length); i++) {
655
+ const filterRule = null === (_c = this.dataConfig) || void 0 === _c ? void 0 : _c.filterRules[i];
542
656
  if (filterRule.filterKey) {
543
657
  const filterValue = record[filterRule.filterKey];
544
658
  if (-1 === filterRule.filteredValues.indexOf(filterValue)) {
545
659
  isReserved = !1;
546
660
  break;
547
661
  }
548
- } else if (!(null === (_c = filterRule.filterFunc) || void 0 === _c ? void 0 : _c.call(filterRule, record))) {
662
+ } else if (!(null === (_d = filterRule.filterFunc) || void 0 === _d ? void 0 : _d.call(filterRule, record))) {
549
663
  isReserved = !1;
550
664
  break;
551
665
  }