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
@@ -322,6 +322,23 @@ export class DataSource extends EventTarget {
322
322
  }
323
323
  }
324
324
  }
325
+ changeFieldValueByRecordIndex(value, recordIndex, field, table) {
326
+ var _a, _b, _c, _d;
327
+ if (null === field) return;
328
+ if (null == recordIndex) return;
329
+ const rawKey = recordIndex.toString();
330
+ if (!this.beforeChangedRecordsMap.has(rawKey)) {
331
+ 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;
332
+ this.beforeChangedRecordsMap.set(rawKey, null !== (_b = cloneDeep(originRecord, void 0, [ "vtable_gantt_linkedFrom", "vtable_gantt_linkedTo" ])) && void 0 !== _b ? _b : {});
333
+ }
334
+ if ("string" == typeof field || "number" == typeof field) {
335
+ 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;
336
+ let formatValue = value;
337
+ "number" == typeof beforeChangedValue && isAllDigits(value) && (formatValue = parseFloat(value)),
338
+ record ? record[field] = formatValue : rawRecords && "number" == typeof recordIndex && (rawRecords[recordIndex] = "Array" === this.addRecordRule ? [] : {},
339
+ rawRecords[recordIndex][field] = formatValue);
340
+ }
341
+ }
325
342
  cacheBeforeChangedRecord(dataIndex, table) {
326
343
  var _a;
327
344
  if (!this.beforeChangedRecordsMap.has(dataIndex.toString())) {
@@ -338,38 +355,89 @@ export class DataSource extends EventTarget {
338
355
  Array.isArray(indexed) || this.records.splice(indexed, 1, record);
339
356
  }
340
357
  }
341
- addRecord(record, index) {
342
- var _a;
343
- if (Array.isArray(this.records)) {
344
- this.records.splice(index, 0, record), this.adjustBeforeChangedRecordsMap(index, 1),
345
- this.currentIndexedData.push(this.currentIndexedData.length), this._sourceLength += 1;
346
- for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].push(record);
347
- if ("tree" === this.rowHierarchyType && this.initTreeHierarchyState(), this.userPagination) {
348
- this.pagination.totalCount = this._sourceLength;
349
- const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
350
- index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
351
- } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
352
- this.updatePagerData();
353
- (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, 1);
354
- }
355
- }
356
- addRecords(recordArr, index) {
358
+ _getRawRecordsArray() {
357
359
  var _a;
358
- if (Array.isArray(this.records)) {
359
- if (Array.isArray(recordArr)) {
360
- this.records.splice(index, 0, ...recordArr), this.adjustBeforeChangedRecordsMap(index, recordArr.length);
361
- for (let i = 0; i < recordArr.length; i++) this.currentIndexedData.push(this.currentIndexedData.length);
362
- this._sourceLength += recordArr.length;
363
- for (let i = 0; i < this.fieldAggregators.length; i++) for (let j = 0; j < recordArr.length; j++) this.fieldAggregators[i].push(recordArr[j]);
360
+ const rawRecords = null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.records;
361
+ return Array.isArray(rawRecords) ? rawRecords : null;
362
+ }
363
+ _hasFilterInEffect() {
364
+ var _a, _b, _c, _d, _e;
365
+ 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;
366
+ }
367
+ _normalizeInsertIndex(index, length) {
368
+ return null == index || index > length ? length : index < 0 ? 0 : index;
369
+ }
370
+ _mapViewInsertIndexToRawInsertIndex(rawRecords, viewIndex) {
371
+ if (0 === this.records.length) return rawRecords.length;
372
+ if (viewIndex <= 0) {
373
+ const firstVisibleRecord = this.records[0], rawIndex = rawRecords.indexOf(firstVisibleRecord);
374
+ return rawIndex >= 0 ? rawIndex : 0;
375
+ }
376
+ if (viewIndex >= this.records.length) {
377
+ const lastVisibleRecord = this.records[this.records.length - 1], rawIndex = rawRecords.indexOf(lastVisibleRecord);
378
+ return rawIndex >= 0 ? rawIndex + 1 : rawRecords.length;
379
+ }
380
+ const prevRecord = this.records[viewIndex - 1], rawIndex = rawRecords.indexOf(prevRecord);
381
+ return rawIndex >= 0 ? rawIndex + 1 : rawRecords.length;
382
+ }
383
+ _resetIndexingFromViewRecords() {
384
+ if (this._sourceLength = this.records.length, this.currentIndexedData = Array.from({
385
+ length: this._sourceLength
386
+ }, ((_, i) => i)), "tree" === this.rowHierarchyType && this.initTreeHierarchyState(),
387
+ this.userPagination) return this.pagination.totalCount = this._sourceLength, void this.updatePagerData();
388
+ this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
389
+ this.updatePagerData();
390
+ }
391
+ addRecord(record, index, syncToOriginalRecords = !1) {
392
+ var _a, _b, _c;
393
+ if (!syncToOriginalRecords) {
394
+ if (Array.isArray(this.records)) {
395
+ this.records.splice(index, 0, record), this.adjustBeforeChangedRecordsMap(index, 1),
396
+ this.currentIndexedData.push(this.currentIndexedData.length), this._sourceLength += 1;
397
+ for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].push(record);
398
+ if ("tree" === this.rowHierarchyType && this.initTreeHierarchyState(), this.userPagination) {
399
+ this.pagination.totalCount = this._sourceLength;
400
+ const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
401
+ index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
402
+ } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
403
+ this.updatePagerData();
404
+ (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, 1);
405
+ }
406
+ return;
407
+ }
408
+ const rawRecords = this._getRawRecordsArray();
409
+ if (!rawRecords) return;
410
+ const viewInsertIndex = this._normalizeInsertIndex(index, this.records.length), rawInsertIndex = this._hasFilterInEffect() ? this._mapViewInsertIndexToRawInsertIndex(rawRecords, viewInsertIndex) : this._normalizeInsertIndex(viewInsertIndex, rawRecords.length);
411
+ rawRecords.splice(rawInsertIndex, 0, record), syncToOriginalRecords && this._hasFilterInEffect() && this.markForceVisibleRecord(record),
412
+ this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules),
413
+ (null === (_c = this.dataSourceObj) || void 0 === _c ? void 0 : _c.added) && this.dataSourceObj.added(rawInsertIndex, 1);
414
+ }
415
+ addRecords(recordArr, index, syncToOriginalRecords = !1) {
416
+ var _a, _b, _c;
417
+ if (!syncToOriginalRecords) {
418
+ if (Array.isArray(this.records)) {
419
+ if (Array.isArray(recordArr)) {
420
+ this.records.splice(index, 0, ...recordArr), this.adjustBeforeChangedRecordsMap(index, recordArr.length);
421
+ for (let i = 0; i < recordArr.length; i++) this.currentIndexedData.push(this.currentIndexedData.length);
422
+ this._sourceLength += recordArr.length;
423
+ for (let i = 0; i < this.fieldAggregators.length; i++) for (let j = 0; j < recordArr.length; j++) this.fieldAggregators[i].push(recordArr[j]);
424
+ }
425
+ if (this.userPagination) {
426
+ this.pagination.totalCount = this._sourceLength;
427
+ const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
428
+ index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
429
+ } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
430
+ this.updatePagerData();
431
+ (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, recordArr.length);
364
432
  }
365
- if (this.userPagination) {
366
- this.pagination.totalCount = this._sourceLength;
367
- const {perPageCount: perPageCount, currentPage: currentPage} = this.pagination;
368
- index < perPageCount * (currentPage || 0) + perPageCount && this.updatePagerData();
369
- } else this.pagination.perPageCount = this._sourceLength, this.pagination.totalCount = this._sourceLength,
370
- this.updatePagerData();
371
- (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.added) && this.dataSourceObj.added(index, recordArr.length);
433
+ return;
372
434
  }
435
+ const rawRecords = this._getRawRecordsArray();
436
+ if (!rawRecords || !Array.isArray(recordArr) || 0 === recordArr.length) return;
437
+ const viewInsertIndex = this._normalizeInsertIndex(index, this.records.length), rawInsertIndex = this._hasFilterInEffect() ? this._mapViewInsertIndexToRawInsertIndex(rawRecords, viewInsertIndex) : this._normalizeInsertIndex(viewInsertIndex, rawRecords.length);
438
+ if (rawRecords.splice(rawInsertIndex, 0, ...recordArr), syncToOriginalRecords && this._hasFilterInEffect()) for (let i = 0; i < recordArr.length; i++) this.markForceVisibleRecord(recordArr[i]);
439
+ this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules),
440
+ (null === (_c = this.dataSourceObj) || void 0 === _c ? void 0 : _c.added) && this.dataSourceObj.added(rawInsertIndex, recordArr.length);
373
441
  }
374
442
  addRecordForSorted(record) {
375
443
  Array.isArray(this.records) && (this.beforeChangedRecordsMap.clear(), this.records.push(record),
@@ -388,28 +456,48 @@ export class DataSource extends EventTarget {
388
456
  }
389
457
  }
390
458
  adjustBeforeChangedRecordsMap(insertIndex, insertCount, type = "add") {
391
- for (let key = this.beforeChangedRecordsMap.size - 1; key >= insertIndex; key--) {
392
- const record = this.beforeChangedRecordsMap.get(key.toString());
393
- this.beforeChangedRecordsMap.delete(key.toString()), this.beforeChangedRecordsMap.set((key + ("add" === type ? insertCount : -insertCount)).toString(), record);
459
+ const delta = "add" === type ? insertCount : -insertCount, numericKeys = [];
460
+ this.beforeChangedRecordsMap.forEach(((_, key) => {
461
+ const numKey = Number(key);
462
+ Number.isInteger(numKey) && numKey.toString() === key && numKey >= insertIndex && numericKeys.push(numKey);
463
+ })), numericKeys.sort(((a, b) => "add" === type ? b - a : a - b));
464
+ for (let i = 0; i < numericKeys.length; i++) {
465
+ const key = numericKeys[i], record = this.beforeChangedRecordsMap.get(key.toString());
466
+ this.beforeChangedRecordsMap.delete(key.toString()), this.beforeChangedRecordsMap.set((key + delta).toString(), record);
394
467
  }
395
468
  }
396
- deleteRecords(recordIndexs) {
397
- var _a;
398
- if (Array.isArray(this.records)) {
399
- const realDeletedRecordIndexs = [], recordIndexsMaxToMin = recordIndexs.sort(((a, b) => b - a));
400
- for (let index = 0; index < recordIndexsMaxToMin.length; index++) {
401
- const recordIndex = recordIndexsMaxToMin[index];
402
- if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
403
- this.adjustBeforeChangedRecordsMap(recordIndex, 1, "delete"), realDeletedRecordIndexs.push(recordIndex);
404
- const deletedRecord = this.records[recordIndex];
405
- for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].deleteRecord(deletedRecord);
406
- this.records.splice(recordIndex, 1), this.currentIndexedData.pop(), this._sourceLength -= 1;
469
+ deleteRecords(recordIndexs, syncToOriginalRecords = !1) {
470
+ var _a, _b, _c;
471
+ if (!syncToOriginalRecords) {
472
+ if (Array.isArray(this.records)) {
473
+ const realDeletedRecordIndexs = [], recordIndexsMaxToMin = recordIndexs.sort(((a, b) => b - a));
474
+ for (let index = 0; index < recordIndexsMaxToMin.length; index++) {
475
+ const recordIndex = recordIndexsMaxToMin[index];
476
+ if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
477
+ this.adjustBeforeChangedRecordsMap(recordIndex, 1, "delete"), realDeletedRecordIndexs.push(recordIndex);
478
+ const deletedRecord = this.records[recordIndex];
479
+ for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].deleteRecord(deletedRecord);
480
+ this.records.splice(recordIndex, 1), this.currentIndexedData.pop(), this._sourceLength -= 1;
481
+ }
482
+ return this.userPagination || (this.pagination.perPageCount = this._sourceLength,
483
+ this.pagination.totalCount = this._sourceLength), this.updatePagerData(), (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.deleted) && this.dataSourceObj.deleted(realDeletedRecordIndexs),
484
+ realDeletedRecordIndexs;
407
485
  }
408
- return this.userPagination || (this.pagination.perPageCount = this._sourceLength,
409
- this.pagination.totalCount = this._sourceLength), this.updatePagerData(), (null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.deleted) && this.dataSourceObj.deleted(realDeletedRecordIndexs),
410
- realDeletedRecordIndexs;
486
+ return [];
411
487
  }
412
- return [];
488
+ const rawRecords = this._getRawRecordsArray();
489
+ if (!rawRecords || !Array.isArray(this.records)) return [];
490
+ const realDeletedRecordIndexs = [], recordIndexsMaxToMin = recordIndexs.slice().sort(((a, b) => b - a)), rawDeletedIndexs = [];
491
+ for (let index = 0; index < recordIndexsMaxToMin.length; index++) {
492
+ const viewIndex = recordIndexsMaxToMin[index];
493
+ if (viewIndex >= this.records.length || viewIndex < 0) continue;
494
+ const deletedRecord = this.records[viewIndex], rawIndex = rawRecords.indexOf(deletedRecord);
495
+ rawIndex >= 0 && (rawRecords.splice(rawIndex, 1), rawDeletedIndexs.push(rawIndex)),
496
+ realDeletedRecordIndexs.push(viewIndex);
497
+ }
498
+ return this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules),
499
+ (null === (_c = this.dataSourceObj) || void 0 === _c ? void 0 : _c.deleted) && this.dataSourceObj.deleted(rawDeletedIndexs),
500
+ realDeletedRecordIndexs;
413
501
  }
414
502
  deleteRecordsForSorted(recordIndexs) {
415
503
  if (Array.isArray(this.records)) {
@@ -424,20 +512,38 @@ export class DataSource extends EventTarget {
424
512
  this.pagination.totalCount = this._sourceLength), this.beforeChangedRecordsMap.clear();
425
513
  }
426
514
  }
427
- updateRecords(records, recordIndexs) {
428
- const realDeletedRecordIndexs = [];
515
+ updateRecords(records, recordIndexs, syncToOriginalRecords = !1) {
516
+ var _a;
517
+ if (!syncToOriginalRecords) {
518
+ const realDeletedRecordIndexs = [];
519
+ for (let index = 0; index < recordIndexs.length; index++) {
520
+ const recordIndex = recordIndexs[index];
521
+ if (Array.isArray(recordIndex)) this.beforeChangedRecordsMap.delete(recordIndex.toString()),
522
+ realDeletedRecordIndexs.push(recordIndex), recordIndex.slice(0, -1).reduce(((acc, key) => (void 0 === acc[key] && (acc[key] = {}),
523
+ acc[key].children)), this.records)[recordIndex[recordIndex.length - 1]] = records[index]; else {
524
+ if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
525
+ this.beforeChangedRecordsMap.delete(recordIndex.toString()), realDeletedRecordIndexs.push(recordIndex);
526
+ for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].updateRecord(this.records[recordIndex], records[index]);
527
+ this.records[recordIndex] = records[index];
528
+ }
529
+ }
530
+ return this.userPagination && this.updatePagerData(), realDeletedRecordIndexs;
531
+ }
532
+ const rawRecords = this._getRawRecordsArray();
533
+ if (!rawRecords || !Array.isArray(this.records)) return [];
534
+ const realUpdatedIndexs = [];
429
535
  for (let index = 0; index < recordIndexs.length; index++) {
430
536
  const recordIndex = recordIndexs[index];
431
537
  if (Array.isArray(recordIndex)) this.beforeChangedRecordsMap.delete(recordIndex.toString()),
432
- realDeletedRecordIndexs.push(recordIndex), recordIndex.slice(0, -1).reduce(((acc, key) => (void 0 === acc[key] && (acc[key] = {}),
433
- acc[key].children)), this.records)[recordIndex[recordIndex.length - 1]] = records[index]; else {
434
- if (recordIndex >= this._sourceLength || recordIndex < 0) continue;
435
- this.beforeChangedRecordsMap.delete(recordIndex.toString()), realDeletedRecordIndexs.push(recordIndex);
436
- for (let i = 0; i < this.fieldAggregators.length; i++) this.fieldAggregators[i].updateRecord(this.records[recordIndex], records[index]);
437
- this.records[recordIndex] = records[index];
538
+ realUpdatedIndexs.push(recordIndex), recordIndex.slice(0, -1).reduce(((acc, key) => (void 0 === acc[key] && (acc[key] = {}),
539
+ acc[key].children)), rawRecords)[recordIndex[recordIndex.length - 1]] = records[index]; else {
540
+ if (recordIndex >= this.records.length || recordIndex < 0) continue;
541
+ const oldRecord = this.records[recordIndex], rawIndex = rawRecords.indexOf(oldRecord);
542
+ rawIndex >= 0 && (rawRecords[rawIndex] = records[index]), realUpdatedIndexs.push(recordIndex);
438
543
  }
439
544
  }
440
- return this.userPagination && this.updatePagerData(), realDeletedRecordIndexs;
545
+ return this.beforeChangedRecordsMap.clear(), this.sortedIndexMap.clear(), this.updateFilterRules(null === (_a = this.dataConfig) || void 0 === _a ? void 0 : _a.filterRules),
546
+ realUpdatedIndexs;
441
547
  }
442
548
  updateRecordsForSorted(records, recordIndexs) {
443
549
  const realDeletedRecordIndexs = [];
@@ -503,23 +609,31 @@ export class DataSource extends EventTarget {
503
609
  setSortedIndexMap(field, filedMap) {
504
610
  this.sortedIndexMap.set(field, filedMap);
505
611
  }
612
+ markForceVisibleRecord(record) {
613
+ !record || "object" != typeof record && "function" != typeof record || (this._forceVisibleRecords || (this._forceVisibleRecords = new WeakSet),
614
+ this._forceVisibleRecords.add(record));
615
+ }
616
+ clearForceVisibleRecords() {
617
+ this._forceVisibleRecords = void 0;
618
+ }
506
619
  clearFilteredChildren(record) {
507
620
  var _a, _b;
508
621
  record.filteredChildren = void 0;
509
622
  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]);
510
623
  }
511
624
  filterRecord(record) {
512
- var _a, _b, _c;
625
+ var _a, _b, _c, _d;
626
+ if (null === (_a = this._forceVisibleRecords) || void 0 === _a ? void 0 : _a.has(record)) return !0;
513
627
  let isReserved = !0;
514
- for (let i = 0; i < (null === (_a = this.dataConfig.filterRules) || void 0 === _a ? void 0 : _a.length); i++) {
515
- const filterRule = null === (_b = this.dataConfig) || void 0 === _b ? void 0 : _b.filterRules[i];
628
+ for (let i = 0; i < (null === (_b = this.dataConfig.filterRules) || void 0 === _b ? void 0 : _b.length); i++) {
629
+ const filterRule = null === (_c = this.dataConfig) || void 0 === _c ? void 0 : _c.filterRules[i];
516
630
  if (filterRule.filterKey) {
517
631
  const filterValue = record[filterRule.filterKey];
518
632
  if (-1 === filterRule.filteredValues.indexOf(filterValue)) {
519
633
  isReserved = !1;
520
634
  break;
521
635
  }
522
- } else if (!(null === (_c = filterRule.filterFunc) || void 0 === _c ? void 0 : _c.call(filterRule, record))) {
636
+ } else if (!(null === (_d = filterRule.filterFunc) || void 0 === _d ? void 0 : _d.call(filterRule, record))) {
523
637
  isReserved = !1;
524
638
  break;
525
639
  }