tinybase 3.2.0-beta.0 → 3.2.0

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 (137) hide show
  1. package/bin/cli.js +1 -1
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/cjs/checkpoints.cjs +1 -1
  5. package/lib/cjs/checkpoints.cjs.gz +0 -0
  6. package/lib/cjs/indexes.cjs +1 -1
  7. package/lib/cjs/indexes.cjs.gz +0 -0
  8. package/lib/cjs/metrics.cjs +1 -1
  9. package/lib/cjs/metrics.cjs.gz +0 -0
  10. package/lib/cjs/persisters.cjs +1 -1
  11. package/lib/cjs/persisters.cjs.gz +0 -0
  12. package/lib/cjs/queries.cjs +1 -1
  13. package/lib/cjs/queries.cjs.gz +0 -0
  14. package/lib/cjs/relationships.cjs +1 -1
  15. package/lib/cjs/relationships.cjs.gz +0 -0
  16. package/lib/cjs/store.cjs +1 -1
  17. package/lib/cjs/store.cjs.gz +0 -0
  18. package/lib/cjs/tinybase.cjs +1 -1
  19. package/lib/cjs/tinybase.cjs.gz +0 -0
  20. package/lib/cjs/tools.cjs +1 -1
  21. package/lib/cjs/tools.cjs.gz +0 -0
  22. package/lib/cjs/ui-react.cjs +1 -1
  23. package/lib/cjs/ui-react.cjs.gz +0 -0
  24. package/lib/cjs-es6/checkpoints.cjs +1 -1
  25. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  26. package/lib/cjs-es6/indexes.cjs +1 -1
  27. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  28. package/lib/cjs-es6/metrics.cjs +1 -1
  29. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  30. package/lib/cjs-es6/persisters.cjs +1 -1
  31. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  32. package/lib/cjs-es6/queries.cjs +1 -1
  33. package/lib/cjs-es6/queries.cjs.gz +0 -0
  34. package/lib/cjs-es6/relationships.cjs +1 -1
  35. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  36. package/lib/cjs-es6/store.cjs +1 -1
  37. package/lib/cjs-es6/store.cjs.gz +0 -0
  38. package/lib/cjs-es6/tinybase.cjs +1 -1
  39. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  40. package/lib/cjs-es6/tools.cjs +1 -1
  41. package/lib/cjs-es6/tools.cjs.gz +0 -0
  42. package/lib/cjs-es6/ui-react.cjs +1 -1
  43. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  44. package/lib/debug/checkpoints.js +2 -2
  45. package/lib/debug/indexes.js +2 -2
  46. package/lib/debug/metrics.js +2 -2
  47. package/lib/debug/persisters.js +2 -2
  48. package/lib/debug/queries.js +1 -1
  49. package/lib/debug/relationships.js +2 -2
  50. package/lib/debug/store.js +36 -35
  51. package/lib/debug/tinybase.js +39 -38
  52. package/lib/debug/tools.js +13 -4
  53. package/lib/debug/ui-react.js +3 -2
  54. package/lib/es6/checkpoints.js +1 -1
  55. package/lib/es6/checkpoints.js.gz +0 -0
  56. package/lib/es6/indexes.js +1 -1
  57. package/lib/es6/indexes.js.gz +0 -0
  58. package/lib/es6/metrics.js +1 -1
  59. package/lib/es6/metrics.js.gz +0 -0
  60. package/lib/es6/persisters.js +1 -1
  61. package/lib/es6/persisters.js.gz +0 -0
  62. package/lib/es6/queries.js +1 -1
  63. package/lib/es6/queries.js.gz +0 -0
  64. package/lib/es6/relationships.js +1 -1
  65. package/lib/es6/relationships.js.gz +0 -0
  66. package/lib/es6/store.js +1 -1
  67. package/lib/es6/store.js.gz +0 -0
  68. package/lib/es6/tinybase.js +1 -1
  69. package/lib/es6/tinybase.js.gz +0 -0
  70. package/lib/es6/tools.js +1 -1
  71. package/lib/es6/tools.js.gz +0 -0
  72. package/lib/es6/ui-react.js +1 -1
  73. package/lib/es6/ui-react.js.gz +0 -0
  74. package/lib/indexes.js +1 -1
  75. package/lib/indexes.js.gz +0 -0
  76. package/lib/metrics.js +1 -1
  77. package/lib/metrics.js.gz +0 -0
  78. package/lib/persisters.js +1 -1
  79. package/lib/persisters.js.gz +0 -0
  80. package/lib/queries.js +1 -1
  81. package/lib/queries.js.gz +0 -0
  82. package/lib/relationships.js +1 -1
  83. package/lib/relationships.js.gz +0 -0
  84. package/lib/store.js +1 -1
  85. package/lib/store.js.gz +0 -0
  86. package/lib/tinybase.js +1 -1
  87. package/lib/tinybase.js.gz +0 -0
  88. package/lib/tools.js +1 -1
  89. package/lib/tools.js.gz +0 -0
  90. package/lib/types/store.d.ts +84 -21
  91. package/lib/types/ui-react.d.ts +11 -0
  92. package/lib/types/with-schemas/store.d.ts +91 -21
  93. package/lib/types/with-schemas/ui-react.d.ts +12 -0
  94. package/lib/ui-react.js +1 -1
  95. package/lib/ui-react.js.gz +0 -0
  96. package/lib/umd/checkpoints.js +1 -1
  97. package/lib/umd/checkpoints.js.gz +0 -0
  98. package/lib/umd/indexes.js +1 -1
  99. package/lib/umd/indexes.js.gz +0 -0
  100. package/lib/umd/metrics.js +1 -1
  101. package/lib/umd/metrics.js.gz +0 -0
  102. package/lib/umd/persisters.js +1 -1
  103. package/lib/umd/persisters.js.gz +0 -0
  104. package/lib/umd/queries.js +1 -1
  105. package/lib/umd/queries.js.gz +0 -0
  106. package/lib/umd/relationships.js +1 -1
  107. package/lib/umd/relationships.js.gz +0 -0
  108. package/lib/umd/store.js +1 -1
  109. package/lib/umd/store.js.gz +0 -0
  110. package/lib/umd/tinybase.js +1 -1
  111. package/lib/umd/tinybase.js.gz +0 -0
  112. package/lib/umd/tools.js +1 -1
  113. package/lib/umd/tools.js.gz +0 -0
  114. package/lib/umd/ui-react.js +1 -1
  115. package/lib/umd/ui-react.js.gz +0 -0
  116. package/lib/umd-es6/checkpoints.js +1 -1
  117. package/lib/umd-es6/checkpoints.js.gz +0 -0
  118. package/lib/umd-es6/indexes.js +1 -1
  119. package/lib/umd-es6/indexes.js.gz +0 -0
  120. package/lib/umd-es6/metrics.js +1 -1
  121. package/lib/umd-es6/metrics.js.gz +0 -0
  122. package/lib/umd-es6/persisters.js +1 -1
  123. package/lib/umd-es6/persisters.js.gz +0 -0
  124. package/lib/umd-es6/queries.js +1 -1
  125. package/lib/umd-es6/queries.js.gz +0 -0
  126. package/lib/umd-es6/relationships.js +1 -1
  127. package/lib/umd-es6/relationships.js.gz +0 -0
  128. package/lib/umd-es6/store.js +1 -1
  129. package/lib/umd-es6/store.js.gz +0 -0
  130. package/lib/umd-es6/tinybase.js +1 -1
  131. package/lib/umd-es6/tinybase.js.gz +0 -0
  132. package/lib/umd-es6/tools.js +1 -1
  133. package/lib/umd-es6/tools.js.gz +0 -0
  134. package/lib/umd-es6/ui-react.js +1 -1
  135. package/lib/umd-es6/ui-react.js.gz +0 -0
  136. package/package.json +50 -26
  137. package/readme.md +14 -14
@@ -32,7 +32,6 @@ const arrayMap = (array, cb) => array.map(cb);
32
32
  const arrayLength = (array) => array.length;
33
33
  const arrayIsEmpty = (array) => arrayLength(array) == 0;
34
34
  const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
35
- const arrayFilter = (array, cb) => array.filter(cb);
36
35
  const arraySlice = (array, start, end) => array.slice(start, end);
37
36
  const arrayPush = (array, ...values) => array.push(...values);
38
37
  const arrayShift = (array) => array.shift();
@@ -141,7 +140,7 @@ const getPoolFunctions = () => {
141
140
  const pool = [];
142
141
  let nextId = 0;
143
142
  return [
144
- () => arrayShift(pool) ?? EMPTY_STRING + nextId++,
143
+ (reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
145
144
  (id) => {
146
145
  if (test(INTEGER, id) && arrayLength(pool) < 1e3) {
147
146
  arrayPush(pool, id);
@@ -173,7 +172,7 @@ const getListenerFunctions = (getThing) => {
173
172
  extraArgsGetter = () => [],
174
173
  ) => {
175
174
  thing ??= getThing();
176
- const id = getId();
175
+ const id = getId(1);
177
176
  mapSet(allListeners, id, [
178
177
  listener,
179
178
  idSetNode,
@@ -252,15 +251,9 @@ const setOrDelValue = (store, valueId, value) =>
252
251
 
253
252
  const defaultSorter = (sortKey1, sortKey2) => (sortKey1 < sortKey2 ? -1 : 1);
254
253
 
255
- const transformMap = (map, toBeLikeObject, setId, delId = mapSet) => {
256
- const idsToDelete = arrayFilter(
257
- mapKeys(map),
258
- (id2) => !objHas(toBeLikeObject, id2),
259
- );
260
- arrayForEach(objIds(toBeLikeObject), (id2) =>
261
- setId(map, id2, toBeLikeObject[id2]),
262
- );
263
- arrayForEach(idsToDelete, (id2) => delId(map, id2));
254
+ const mapMatch = (map, obj, set, del = mapSet) => {
255
+ objMap(obj, (value, id2) => set(map, id2, value));
256
+ mapForEach(map, (id2) => (objHas(obj, id2) ? 0 : del(map, id2)));
264
257
  return map;
265
258
  };
266
259
  const validate = (obj, validateChild, onInvalidObj) => {
@@ -312,6 +305,7 @@ const createStore = () => {
312
305
  const valuesListeners = pairNewMap();
313
306
  const valueIdsListeners = pairNewMap();
314
307
  const valueListeners = pairNewMap();
308
+ const startTransactionListeners = mapNew();
315
309
  const finishTransactionListeners = pairNewMap();
316
310
  const [addListener, callListeners, delListenerImpl, callListenerImpl] =
317
311
  getListenerFunctions(() => store);
@@ -433,13 +427,13 @@ const createStore = () => {
433
427
  return values;
434
428
  };
435
429
  const setValidTablesSchema = (tablesSchema) =>
436
- transformMap(
430
+ mapMatch(
437
431
  tablesSchemaMap,
438
432
  tablesSchema,
439
433
  (_tablesSchema, tableId, tableSchema) => {
440
434
  const rowDefaulted = mapNew();
441
435
  const rowNonDefaulted = setNew();
442
- transformMap(
436
+ mapMatch(
443
437
  mapEnsure(tablesSchemaMap, tableId, mapNew),
444
438
  tableSchema,
445
439
  (tableSchemaMap, cellId, cellSchema) => {
@@ -459,7 +453,7 @@ const createStore = () => {
459
453
  },
460
454
  );
461
455
  const setValidValuesSchema = (valuesSchema) =>
462
- transformMap(
456
+ mapMatch(
463
457
  valuesSchemaMap,
464
458
  valuesSchema,
465
459
  (_valuesSchema, valueId, valueSchema) => {
@@ -479,14 +473,14 @@ const createStore = () => {
479
473
  const setOrDelTables = (tables) =>
480
474
  objIsEmpty(tables) ? delTables() : setTables(tables);
481
475
  const setValidTables = (tables) =>
482
- transformMap(
476
+ mapMatch(
483
477
  tablesMap,
484
478
  tables,
485
479
  (_tables, tableId, table) => setValidTable(tableId, table),
486
480
  (_tables, tableId) => delValidTable(tableId),
487
481
  );
488
482
  const setValidTable = (tableId, table) =>
489
- transformMap(
483
+ mapMatch(
490
484
  mapEnsure(tablesMap, tableId, () => {
491
485
  tableIdsChanged(tableId, 1);
492
486
  return mapNew();
@@ -496,7 +490,7 @@ const createStore = () => {
496
490
  (tableMap, rowId) => delValidRow(tableId, tableMap, rowId),
497
491
  );
498
492
  const setValidRow = (tableId, tableMap, rowId, row, forceDel) =>
499
- transformMap(
493
+ mapMatch(
500
494
  mapEnsure(tableMap, rowId, () => {
501
495
  rowIdsChanged(tableId, rowId, 1);
502
496
  return mapNew();
@@ -532,7 +526,7 @@ const createStore = () => {
532
526
  const setOrDelValues = (values) =>
533
527
  objIsEmpty(values) ? delValues() : setValues(values);
534
528
  const setValidValues = (values) =>
535
- transformMap(
529
+ mapMatch(
536
530
  valuesMap,
537
531
  values,
538
532
  (_valuesMap, valueId, value) => setValidValue(valueId, value),
@@ -548,13 +542,13 @@ const createStore = () => {
548
542
  mapSet(valuesMap, valueId, value);
549
543
  }
550
544
  };
551
- const getNewRowId = (tableId) => {
545
+ const getNewRowId = (tableId, reuse) => {
552
546
  const [getId] = mapEnsure(tablePoolFunctions, tableId, getPoolFunctions);
553
- const rowId = getId();
547
+ const rowId = getId(reuse);
554
548
  if (!collHas(mapGet(tablesMap, tableId), rowId)) {
555
549
  return rowId;
556
550
  }
557
- return getNewRowId(tableId);
551
+ return getNewRowId(tableId, reuse);
558
552
  };
559
553
  const getOrCreateTable = (tableId) =>
560
554
  mapGet(tablesMap, tableId) ?? setValidTable(tableId, {});
@@ -886,7 +880,7 @@ const createStore = () => {
886
880
  tableId,
887
881
  rowId,
888
882
  );
889
- const addRow = (tableId, row) =>
883
+ const addRow = (tableId, row, reuseRowIds = true) =>
890
884
  transaction(() => {
891
885
  let rowId = void 0;
892
886
  if (validateRow(tableId, rowId, row)) {
@@ -894,7 +888,7 @@ const createStore = () => {
894
888
  setValidRow(
895
889
  tableId,
896
890
  getOrCreateTable(tableId),
897
- (rowId = getNewRowId(tableId)),
891
+ (rowId = getNewRowId(tableId, reuseRowIds ? 1 : 0)),
898
892
  row,
899
893
  );
900
894
  }
@@ -1071,16 +1065,20 @@ const createStore = () => {
1071
1065
  delValuesSchema();
1072
1066
  });
1073
1067
  const transaction = (actions, doRollback) => {
1074
- if (transactions == -1) {
1075
- return;
1068
+ if (transactions != -1) {
1069
+ startTransaction();
1070
+ const result = actions();
1071
+ finishTransaction(doRollback);
1072
+ return result;
1076
1073
  }
1077
- startTransaction();
1078
- const result = actions();
1079
- finishTransaction(doRollback);
1080
- return result;
1081
1074
  };
1082
1075
  const startTransaction = () => {
1083
- transactions++;
1076
+ if (transactions != -1) {
1077
+ transactions++;
1078
+ }
1079
+ if (transactions == 1) {
1080
+ callListeners(startTransactionListeners, void 0, false, false);
1081
+ }
1084
1082
  return store;
1085
1083
  };
1086
1084
  const finishTransaction = (doRollback) => {
@@ -1098,7 +1096,6 @@ const createStore = () => {
1098
1096
  if (valuesTouched) {
1099
1097
  callKeyedValuesListenersForChanges(1);
1100
1098
  }
1101
- transactions = -1;
1102
1099
  if (
1103
1100
  doRollback?.(
1104
1101
  mapToObj(
@@ -1125,7 +1122,6 @@ const createStore = () => {
1125
1122
  mapToObj(invalidValues),
1126
1123
  )
1127
1124
  ) {
1128
- transactions = 1;
1129
1125
  collForEach(changedCells, (table, tableId) =>
1130
1126
  collForEach(table, (row, rowId) =>
1131
1127
  collForEach(row, ([oldCell], cellId) =>
@@ -1136,7 +1132,6 @@ const createStore = () => {
1136
1132
  collForEach(changedValues, ([oldValue], valueId) =>
1137
1133
  setOrDelValue(store, valueId, oldValue),
1138
1134
  );
1139
- transactions = -1;
1140
1135
  cellsTouched = valuesTouched = false;
1141
1136
  }
1142
1137
  callListeners(
@@ -1145,6 +1140,7 @@ const createStore = () => {
1145
1140
  cellsTouched,
1146
1141
  valuesTouched,
1147
1142
  );
1143
+ transactions = -1;
1148
1144
  callInvalidCellListeners(0);
1149
1145
  if (cellsTouched) {
1150
1146
  callTabularListenersForChanges(0);
@@ -1237,6 +1233,8 @@ const createStore = () => {
1237
1233
  [getTableIds],
1238
1234
  );
1239
1235
  };
1236
+ const addStartTransactionListener = (listener) =>
1237
+ addListener(listener, startTransactionListeners);
1240
1238
  const addWillFinishTransactionListener = (listener) =>
1241
1239
  addListener(listener, finishTransactionListeners[0]);
1242
1240
  const addDidFinishTransactionListener = (listener) =>
@@ -1263,7 +1261,9 @@ const createStore = () => {
1263
1261
  valueIds: pairCollSize2(valueIdsListeners),
1264
1262
  value: pairCollSize2(valueListeners),
1265
1263
  invalidValue: pairCollSize2(invalidValueListeners),
1266
- transaction: pairCollSize2(finishTransactionListeners),
1264
+ transaction:
1265
+ collSize2(startTransactionListeners) +
1266
+ pairCollSize2(finishTransactionListeners),
1267
1267
  });
1268
1268
  const store = {
1269
1269
  getTables,
@@ -1321,6 +1321,7 @@ const createStore = () => {
1321
1321
  forEachCell,
1322
1322
  forEachValue,
1323
1323
  addSortedRowIdsListener,
1324
+ addStartTransactionListener,
1324
1325
  addWillFinishTransactionListener,
1325
1326
  addDidFinishTransactionListener,
1326
1327
  callListener,
@@ -48,7 +48,6 @@ const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
48
48
  const arrayLength = (array) => array.length;
49
49
  const arrayIsEmpty = (array) => arrayLength(array) == 0;
50
50
  const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
51
- const arrayFilter = (array, cb) => array.filter(cb);
52
51
  const arraySlice = (array, start, end) => array.slice(start, end);
53
52
  const arrayClear = (array, to) => array.splice(0, to);
54
53
  const arrayPush = (array, ...values) => array.push(...values);
@@ -335,7 +334,7 @@ const getPoolFunctions = () => {
335
334
  const pool = [];
336
335
  let nextId = 0;
337
336
  return [
338
- () => arrayShift(pool) ?? EMPTY_STRING + nextId++,
337
+ (reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
339
338
  (id) => {
340
339
  if (test(INTEGER, id) && arrayLength(pool) < 1e3) {
341
340
  arrayPush(pool, id);
@@ -367,7 +366,7 @@ const getListenerFunctions = (getThing) => {
367
366
  extraArgsGetter = () => [],
368
367
  ) => {
369
368
  thing ??= getThing();
370
- const id = getId();
369
+ const id = getId(1);
371
370
  mapSet(allListeners, id, [
372
371
  listener,
373
372
  idSetNode,
@@ -1025,7 +1024,7 @@ const createCustomPersister = (
1025
1024
  let loads = 0;
1026
1025
  let saves = 0;
1027
1026
  const persister = {
1028
- load: async (initialTables, initialValues) => {
1027
+ load: async (initialTables = {}, initialValues = {}) => {
1029
1028
  /* istanbul ignore else */
1030
1029
  if (loadSave != 2) {
1031
1030
  loadSave = 1;
@@ -1044,7 +1043,7 @@ const createCustomPersister = (
1044
1043
  }
1045
1044
  return persister;
1046
1045
  },
1047
- startAutoLoad: async (initialTables, initialValues) => {
1046
+ startAutoLoad: async (initialTables = {}, initialValues = {}) => {
1048
1047
  persister.stopAutoLoad();
1049
1048
  await persister.load(initialTables, initialValues);
1050
1049
  startListeningToPersisted(persister.load);
@@ -1239,7 +1238,7 @@ const createQueries = getCreateFunction((store) => {
1239
1238
  addPreStoreListener(
1240
1239
  fromStore,
1241
1240
  queryId,
1242
- fromStore.addWillFinishTransactionListener(toStore.startTransaction),
1241
+ fromStore.addStartTransactionListener(toStore.startTransaction),
1243
1242
  fromStore.addDidFinishTransactionListener(() =>
1244
1243
  toStore.finishTransaction(),
1245
1244
  ),
@@ -1820,15 +1819,9 @@ const pairNew = (value) => [value, value];
1820
1819
  const pairCollSize2 = (pair, func = collSize2) => func(pair[0]) + func(pair[1]);
1821
1820
  const pairNewMap = () => [mapNew(), mapNew()];
1822
1821
 
1823
- const transformMap = (map, toBeLikeObject, setId, delId = mapSet) => {
1824
- const idsToDelete = arrayFilter(
1825
- mapKeys(map),
1826
- (id2) => !objHas(toBeLikeObject, id2),
1827
- );
1828
- arrayForEach(objIds(toBeLikeObject), (id2) =>
1829
- setId(map, id2, toBeLikeObject[id2]),
1830
- );
1831
- arrayForEach(idsToDelete, (id2) => delId(map, id2));
1822
+ const mapMatch = (map, obj, set, del = mapSet) => {
1823
+ objMap(obj, (value, id2) => set(map, id2, value));
1824
+ mapForEach(map, (id2) => (objHas(obj, id2) ? 0 : del(map, id2)));
1832
1825
  return map;
1833
1826
  };
1834
1827
  const validate = (obj, validateChild, onInvalidObj) => {
@@ -1880,6 +1873,7 @@ const createStore = () => {
1880
1873
  const valuesListeners = pairNewMap();
1881
1874
  const valueIdsListeners = pairNewMap();
1882
1875
  const valueListeners = pairNewMap();
1876
+ const startTransactionListeners = mapNew();
1883
1877
  const finishTransactionListeners = pairNewMap();
1884
1878
  const [addListener, callListeners, delListenerImpl, callListenerImpl] =
1885
1879
  getListenerFunctions(() => store);
@@ -2001,13 +1995,13 @@ const createStore = () => {
2001
1995
  return values;
2002
1996
  };
2003
1997
  const setValidTablesSchema = (tablesSchema) =>
2004
- transformMap(
1998
+ mapMatch(
2005
1999
  tablesSchemaMap,
2006
2000
  tablesSchema,
2007
2001
  (_tablesSchema, tableId, tableSchema) => {
2008
2002
  const rowDefaulted = mapNew();
2009
2003
  const rowNonDefaulted = setNew();
2010
- transformMap(
2004
+ mapMatch(
2011
2005
  mapEnsure(tablesSchemaMap, tableId, mapNew),
2012
2006
  tableSchema,
2013
2007
  (tableSchemaMap, cellId, cellSchema) => {
@@ -2027,7 +2021,7 @@ const createStore = () => {
2027
2021
  },
2028
2022
  );
2029
2023
  const setValidValuesSchema = (valuesSchema) =>
2030
- transformMap(
2024
+ mapMatch(
2031
2025
  valuesSchemaMap,
2032
2026
  valuesSchema,
2033
2027
  (_valuesSchema, valueId, valueSchema) => {
@@ -2047,14 +2041,14 @@ const createStore = () => {
2047
2041
  const setOrDelTables = (tables) =>
2048
2042
  objIsEmpty(tables) ? delTables() : setTables(tables);
2049
2043
  const setValidTables = (tables) =>
2050
- transformMap(
2044
+ mapMatch(
2051
2045
  tablesMap,
2052
2046
  tables,
2053
2047
  (_tables, tableId, table) => setValidTable(tableId, table),
2054
2048
  (_tables, tableId) => delValidTable(tableId),
2055
2049
  );
2056
2050
  const setValidTable = (tableId, table) =>
2057
- transformMap(
2051
+ mapMatch(
2058
2052
  mapEnsure(tablesMap, tableId, () => {
2059
2053
  tableIdsChanged(tableId, 1);
2060
2054
  return mapNew();
@@ -2064,7 +2058,7 @@ const createStore = () => {
2064
2058
  (tableMap, rowId) => delValidRow(tableId, tableMap, rowId),
2065
2059
  );
2066
2060
  const setValidRow = (tableId, tableMap, rowId, row, forceDel) =>
2067
- transformMap(
2061
+ mapMatch(
2068
2062
  mapEnsure(tableMap, rowId, () => {
2069
2063
  rowIdsChanged(tableId, rowId, 1);
2070
2064
  return mapNew();
@@ -2100,7 +2094,7 @@ const createStore = () => {
2100
2094
  const setOrDelValues = (values) =>
2101
2095
  objIsEmpty(values) ? delValues() : setValues(values);
2102
2096
  const setValidValues = (values) =>
2103
- transformMap(
2097
+ mapMatch(
2104
2098
  valuesMap,
2105
2099
  values,
2106
2100
  (_valuesMap, valueId, value) => setValidValue(valueId, value),
@@ -2116,13 +2110,13 @@ const createStore = () => {
2116
2110
  mapSet(valuesMap, valueId, value);
2117
2111
  }
2118
2112
  };
2119
- const getNewRowId = (tableId) => {
2113
+ const getNewRowId = (tableId, reuse) => {
2120
2114
  const [getId] = mapEnsure(tablePoolFunctions, tableId, getPoolFunctions);
2121
- const rowId = getId();
2115
+ const rowId = getId(reuse);
2122
2116
  if (!collHas(mapGet(tablesMap, tableId), rowId)) {
2123
2117
  return rowId;
2124
2118
  }
2125
- return getNewRowId(tableId);
2119
+ return getNewRowId(tableId, reuse);
2126
2120
  };
2127
2121
  const getOrCreateTable = (tableId) =>
2128
2122
  mapGet(tablesMap, tableId) ?? setValidTable(tableId, {});
@@ -2454,7 +2448,7 @@ const createStore = () => {
2454
2448
  tableId,
2455
2449
  rowId,
2456
2450
  );
2457
- const addRow = (tableId, row) =>
2451
+ const addRow = (tableId, row, reuseRowIds = true) =>
2458
2452
  transaction(() => {
2459
2453
  let rowId = void 0;
2460
2454
  if (validateRow(tableId, rowId, row)) {
@@ -2462,7 +2456,7 @@ const createStore = () => {
2462
2456
  setValidRow(
2463
2457
  tableId,
2464
2458
  getOrCreateTable(tableId),
2465
- (rowId = getNewRowId(tableId)),
2459
+ (rowId = getNewRowId(tableId, reuseRowIds ? 1 : 0)),
2466
2460
  row,
2467
2461
  );
2468
2462
  }
@@ -2639,16 +2633,20 @@ const createStore = () => {
2639
2633
  delValuesSchema();
2640
2634
  });
2641
2635
  const transaction = (actions, doRollback) => {
2642
- if (transactions == -1) {
2643
- return;
2636
+ if (transactions != -1) {
2637
+ startTransaction();
2638
+ const result = actions();
2639
+ finishTransaction(doRollback);
2640
+ return result;
2644
2641
  }
2645
- startTransaction();
2646
- const result = actions();
2647
- finishTransaction(doRollback);
2648
- return result;
2649
2642
  };
2650
2643
  const startTransaction = () => {
2651
- transactions++;
2644
+ if (transactions != -1) {
2645
+ transactions++;
2646
+ }
2647
+ if (transactions == 1) {
2648
+ callListeners(startTransactionListeners, void 0, false, false);
2649
+ }
2652
2650
  return store;
2653
2651
  };
2654
2652
  const finishTransaction = (doRollback) => {
@@ -2666,7 +2664,6 @@ const createStore = () => {
2666
2664
  if (valuesTouched) {
2667
2665
  callKeyedValuesListenersForChanges(1);
2668
2666
  }
2669
- transactions = -1;
2670
2667
  if (
2671
2668
  doRollback?.(
2672
2669
  mapToObj(
@@ -2693,7 +2690,6 @@ const createStore = () => {
2693
2690
  mapToObj(invalidValues),
2694
2691
  )
2695
2692
  ) {
2696
- transactions = 1;
2697
2693
  collForEach(changedCells, (table, tableId) =>
2698
2694
  collForEach(table, (row, rowId) =>
2699
2695
  collForEach(row, ([oldCell], cellId) =>
@@ -2704,7 +2700,6 @@ const createStore = () => {
2704
2700
  collForEach(changedValues, ([oldValue], valueId) =>
2705
2701
  setOrDelValue(store, valueId, oldValue),
2706
2702
  );
2707
- transactions = -1;
2708
2703
  cellsTouched = valuesTouched = false;
2709
2704
  }
2710
2705
  callListeners(
@@ -2713,6 +2708,7 @@ const createStore = () => {
2713
2708
  cellsTouched,
2714
2709
  valuesTouched,
2715
2710
  );
2711
+ transactions = -1;
2716
2712
  callInvalidCellListeners(0);
2717
2713
  if (cellsTouched) {
2718
2714
  callTabularListenersForChanges(0);
@@ -2805,6 +2801,8 @@ const createStore = () => {
2805
2801
  [getTableIds],
2806
2802
  );
2807
2803
  };
2804
+ const addStartTransactionListener = (listener) =>
2805
+ addListener(listener, startTransactionListeners);
2808
2806
  const addWillFinishTransactionListener = (listener) =>
2809
2807
  addListener(listener, finishTransactionListeners[0]);
2810
2808
  const addDidFinishTransactionListener = (listener) =>
@@ -2831,7 +2829,9 @@ const createStore = () => {
2831
2829
  valueIds: pairCollSize2(valueIdsListeners),
2832
2830
  value: pairCollSize2(valueListeners),
2833
2831
  invalidValue: pairCollSize2(invalidValueListeners),
2834
- transaction: pairCollSize2(finishTransactionListeners),
2832
+ transaction:
2833
+ collSize2(startTransactionListeners) +
2834
+ pairCollSize2(finishTransactionListeners),
2835
2835
  });
2836
2836
  const store = {
2837
2837
  getTables,
@@ -2889,6 +2889,7 @@ const createStore = () => {
2889
2889
  forEachCell,
2890
2890
  forEachValue,
2891
2891
  addSortedRowIdsListener,
2892
+ addStartTransactionListener,
2892
2893
  addWillFinishTransactionListener,
2893
2894
  addDidFinishTransactionListener,
2894
2895
  callListener,
@@ -1101,8 +1101,8 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
1101
1101
  ROW,
1102
1102
  ID + OR_UNDEFINED,
1103
1103
  'Add a new Row to ' + getTableDoc(tableId),
1104
- 'row: ' + rowWhenSetType2,
1105
- TABLE_ID + ', row',
1104
+ 'row: ' + rowWhenSetType2 + ', reuseIds?: boolean',
1105
+ TABLE_ID + ', row, reuseIds',
1106
1106
  );
1107
1107
  addProxyMethod(
1108
1108
  0,
@@ -1465,6 +1465,14 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
1465
1465
  storeInstance,
1466
1466
  storeType,
1467
1467
  );
1468
+ addProxyListener(
1469
+ 'Start' + TRANSACTION,
1470
+ transactionListenerType,
1471
+ REGISTERS_A_LISTENER + ' just before the start of the ' + TRANSACTION_,
1472
+ EMPTY_STRING,
1473
+ EMPTY_STRING,
1474
+ 0,
1475
+ );
1468
1476
  addProxyListener(
1469
1477
  'WillFinish' + TRANSACTION,
1470
1478
  transactionListenerType,
@@ -2139,8 +2147,9 @@ const getStoreUiReactApi = (
2139
2147
  'store: Store',
2140
2148
  'row: ' + rowWhenSetType + ')' + RETURNS_VOID,
2141
2149
  'then' + DEPS_SUFFIX,
2142
- ),
2143
- THEN_AND_THEN_DEPS_IN_CALL,
2150
+ ) +
2151
+ ', reuseRowIds?: boolean',
2152
+ THEN_AND_THEN_DEPS_IN_CALL + ', reuseRowIds',
2144
2153
  );
2145
2154
  addProxyHook(
2146
2155
  SET + tableName + PARTIAL + ROW + CALLBACK,
@@ -272,17 +272,18 @@ const useAddRowCallback = (
272
272
  storeOrStoreId,
273
273
  then = getUndefined,
274
274
  thenDeps = [],
275
+ reuseRowIds = true,
275
276
  ) => {
276
277
  const store = useStoreOrStoreId(storeOrStoreId);
277
278
  return useCallback(
278
279
  (parameter) =>
279
280
  ifNotUndefined(store, (store2) =>
280
281
  ifNotUndefined(getRow(parameter, store2), (row) =>
281
- then(store2.addRow(tableId, row), store2, row),
282
+ then(store2.addRow(tableId, row, reuseRowIds), store2, row),
282
283
  ),
283
284
  ),
284
285
  // eslint-disable-next-line react-hooks/exhaustive-deps
285
- [store, tableId, ...getRowDeps, ...thenDeps],
286
+ [store, tableId, ...getRowDeps, ...thenDeps, reuseRowIds],
286
287
  );
287
288
  };
288
289
  const useSetPartialRowCallback = (
@@ -1 +1 @@
1
- const e=(e,n)=>e.includes(n),n=(e,n)=>e.forEach(n),l=e=>e.length,t=e=>0==l(e),r=(e,...n)=>e.push(...n),o=e=>e.pop(),s=e=>e.shift(),u=e=>null==e,i=(e,n,l)=>u(e)?null==l?void 0:l():n(e),d=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},a=e=>u(e)||0==(e=>e.size)(e),c=(e,n)=>null==e?void 0:e.forEach(n),h=(e,n)=>null==e?void 0:e.delete(n),v=e=>new Map(e),p=(e,n)=>null==e?void 0:e.get(n),C=(e,n,l)=>u(l)?(h(e,n),e):null==e?void 0:e.set(n,l),f=(e,n,l)=>(d(e,n)||C(e,n,l()),p(e,n)),g=(e,n,t,r,o=0)=>i((t?f:p)(e,n[o],o>l(n)-2?t:v),(s=>{if(o>l(n)-2)return(null==r?void 0:r(s))&&C(e,n[o]),s;const u=g(s,n,t,r,o+1);return a(s)&&C(e,n[o]),u})),k=e=>new Set(Array.isArray(e)||u(e)?e:[e]),L=/^\d+$/,w=Object.freeze,S=(S=>{const y=new WeakMap;return S=>(y.has(S)||y.set(S,(S=>{let y,z,E,V=100,A=v(),I=v(),M=1;const b=v(),j=v(),[x,B,F]=(e=>{let t;const[o,d]=(()=>{const e=[];let n=0;return[()=>{var l;return null!=(l=s(e))?l:""+n++},n=>{L.test(n)&&l(e)<1e3&&r(e,n)}]})(),f=v();return[(e,n,l,r=[],s=(()=>[]))=>{null!=t||(t=_);const u=o();var i,d;return C(f,u,[e,n,l,r,s]),d=u,null==(i=g(n,null!=l?l:[""],k))||i.add(d),u},(e,o,...s)=>n(((e,t=[""])=>{const o=[],s=(e,u)=>u==l(t)?r(o,e):null===t[u]?c(e,(e=>s(e,u+1))):n([t[u],null],(n=>s(p(e,n),u+1)));return s(e,0),o})(e,o),(e=>c(e,(e=>p(f,e)[0](t,...null!=o?o:[],...s))))),e=>i(p(f,e),(([,n,l])=>(g(n,null!=l?l:[""],void 0,(n=>(h(n,e),a(n)?1:0))),C(f,e),d(e),l))),e=>i(p(f,e),(([e,,r=[],o,s])=>{const i=(...d)=>{var a,c;const h=l(d);h==l(r)?e(t,...d,...s(d)):u(r[h])?n(null!=(c=null==(a=o[h])?void 0:a.call(o,...d))?c:[],(e=>i(...d,e))):i(...d,r[h])};i()}))]})(),O=v(),T=v(),W=[],$=[],m=(e,n)=>{M=0,S.transaction((()=>{const[l,t]=p(O,n);c(l,((n,l)=>c(n,((n,t)=>c(n,((n,r)=>((e,n,l,t,r)=>u(r)?e.delCell(n,l,t,!0):e.setCell(n,l,t,r))(S,l,t,r,n[e]))))))),c(t,((n,l)=>((e,n,l)=>u(l)?e.delValue(n):e.setValue(n,l))(S,l,n[e])))})),M=1},q=e=>{C(O,e),C(T,e),B(j,[e])},D=(e,t)=>n(((e,n)=>e.splice(0,n))(e,null!=t?t:l(e)),q),G=()=>D(W,l(W)-V),H=()=>i(y,(()=>{r(W,y),G(),D($),y=void 0,E=1})),J=()=>{y=o(W),E=1},K=S.addCellListener(null,null,null,((e,n,l,t,r,o)=>{if(M){H();const e=f(A,n,v),s=f(e,l,v),u=f(s,t,(()=>[o,void 0]));u[1]=r,u[0]===r&&a(C(s,t))&&a(C(e,l))&&a(C(A,n))&&J(),U()}})),N=S.addValueListener(null,((e,n,l,t)=>{if(M){H();const e=f(I,n,(()=>[t,void 0]));e[1]=l,e[0]===l&&a(C(I,n))&&J(),U()}})),P=(e="")=>(u(y)&&(y=""+z++,C(O,y,[A,I]),Y(y,e),A=v(),I=v(),E=1),y),Q=()=>{t(W)||(((e,...n)=>{e.unshift(...n)})($,P()),m(0,y),y=o(W),E=1)},R=()=>{t($)||(r(W,y),y=s($),m(1,y),E=1)},U=()=>{E&&(B(b),E=0)},X=e=>{const n=P(e);return U(),n},Y=(e,n)=>(Z(e)&&p(T,e)!==n&&(C(T,e,n),B(j,[e])),_),Z=e=>d(O,e),_={setSize:e=>(V=e,G(),_),addCheckpoint:X,setCheckpoint:Y,getStore:()=>S,getCheckpointIds:()=>[[...W],y,[...$]],forEachCheckpoint:e=>{return n=e,c(T,((e,l)=>n(l,e)));var n},hasCheckpoint:Z,getCheckpoint:e=>p(T,e),goBackward:()=>(Q(),U(),_),goForward:()=>(R(),U(),_),goTo:n=>{const l=e(W,n)?Q:e($,n)?R:null;for(;!u(l)&&n!=y;)l();return U(),_},addCheckpointIdsListener:e=>x(e,b),addCheckpointListener:(e,n)=>x(n,j,[e]),delListener:e=>(F(e),_),clear:()=>(D(W),D($),u(y)||q(y),y=void 0,z=0,X(),_),destroy:()=>{S.delListener(K),S.delListener(N)},getListenerStats:()=>({})};return w(_.clear())})(S)),y.get(S))})();export{S as createCheckpoints};
1
+ const e=(e,n)=>e.includes(n),n=(e,n)=>e.forEach(n),l=e=>e.length,t=e=>0==l(e),r=(e,...n)=>e.push(...n),o=e=>e.pop(),s=e=>e.shift(),u=e=>null==e,i=(e,n,l)=>u(e)?null==l?void 0:l():n(e),d=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},a=e=>u(e)||0==(e=>e.size)(e),c=(e,n)=>null==e?void 0:e.forEach(n),h=(e,n)=>null==e?void 0:e.delete(n),v=e=>new Map(e),p=(e,n)=>null==e?void 0:e.get(n),C=(e,n,l)=>u(l)?(h(e,n),e):null==e?void 0:e.set(n,l),f=(e,n,l)=>(d(e,n)||C(e,n,l()),p(e,n)),g=(e,n,t,r,o=0)=>i((t?f:p)(e,n[o],o>l(n)-2?t:v),(s=>{if(o>l(n)-2)return(null==r?void 0:r(s))&&C(e,n[o]),s;const u=g(s,n,t,r,o+1);return a(s)&&C(e,n[o]),u})),k=e=>new Set(Array.isArray(e)||u(e)?e:[e]),L=/^\d+$/,w=Object.freeze,S=(S=>{const y=new WeakMap;return S=>(y.has(S)||y.set(S,(S=>{let y,z,E,V=100,A=v(),I=v(),M=1;const b=v(),j=v(),[x,B,F]=(e=>{let t;const[o,d]=(()=>{const e=[];let n=0;return[l=>{var t;return null!=(t=l?s(e):null)?t:""+n++},n=>{L.test(n)&&l(e)<1e3&&r(e,n)}]})(),f=v();return[(e,n,l,r=[],s=(()=>[]))=>{null!=t||(t=_);const u=o(1);var i,d;return C(f,u,[e,n,l,r,s]),d=u,null==(i=g(n,null!=l?l:[""],k))||i.add(d),u},(e,o,...s)=>n(((e,t=[""])=>{const o=[],s=(e,u)=>u==l(t)?r(o,e):null===t[u]?c(e,(e=>s(e,u+1))):n([t[u],null],(n=>s(p(e,n),u+1)));return s(e,0),o})(e,o),(e=>c(e,(e=>p(f,e)[0](t,...null!=o?o:[],...s))))),e=>i(p(f,e),(([,n,l])=>(g(n,null!=l?l:[""],void 0,(n=>(h(n,e),a(n)?1:0))),C(f,e),d(e),l))),e=>i(p(f,e),(([e,,r=[],o,s])=>{const i=(...d)=>{var a,c;const h=l(d);h==l(r)?e(t,...d,...s(d)):u(r[h])?n(null!=(c=null==(a=o[h])?void 0:a.call(o,...d))?c:[],(e=>i(...d,e))):i(...d,r[h])};i()}))]})(),O=v(),T=v(),W=[],$=[],m=(e,n)=>{M=0,S.transaction((()=>{const[l,t]=p(O,n);c(l,((n,l)=>c(n,((n,t)=>c(n,((n,r)=>((e,n,l,t,r)=>u(r)?e.delCell(n,l,t,!0):e.setCell(n,l,t,r))(S,l,t,r,n[e]))))))),c(t,((n,l)=>((e,n,l)=>u(l)?e.delValue(n):e.setValue(n,l))(S,l,n[e])))})),M=1},q=e=>{C(O,e),C(T,e),B(j,[e])},D=(e,t)=>n(((e,n)=>e.splice(0,n))(e,null!=t?t:l(e)),q),G=()=>D(W,l(W)-V),H=()=>i(y,(()=>{r(W,y),G(),D($),y=void 0,E=1})),J=()=>{y=o(W),E=1},K=S.addCellListener(null,null,null,((e,n,l,t,r,o)=>{if(M){H();const e=f(A,n,v),s=f(e,l,v),u=f(s,t,(()=>[o,void 0]));u[1]=r,u[0]===r&&a(C(s,t))&&a(C(e,l))&&a(C(A,n))&&J(),U()}})),N=S.addValueListener(null,((e,n,l,t)=>{if(M){H();const e=f(I,n,(()=>[t,void 0]));e[1]=l,e[0]===l&&a(C(I,n))&&J(),U()}})),P=(e="")=>(u(y)&&(y=""+z++,C(O,y,[A,I]),Y(y,e),A=v(),I=v(),E=1),y),Q=()=>{t(W)||(((e,...n)=>{e.unshift(...n)})($,P()),m(0,y),y=o(W),E=1)},R=()=>{t($)||(r(W,y),y=s($),m(1,y),E=1)},U=()=>{E&&(B(b),E=0)},X=e=>{const n=P(e);return U(),n},Y=(e,n)=>(Z(e)&&p(T,e)!==n&&(C(T,e,n),B(j,[e])),_),Z=e=>d(O,e),_={setSize:e=>(V=e,G(),_),addCheckpoint:X,setCheckpoint:Y,getStore:()=>S,getCheckpointIds:()=>[[...W],y,[...$]],forEachCheckpoint:e=>{return n=e,c(T,((e,l)=>n(l,e)));var n},hasCheckpoint:Z,getCheckpoint:e=>p(T,e),goBackward:()=>(Q(),U(),_),goForward:()=>(R(),U(),_),goTo:n=>{const l=e(W,n)?Q:e($,n)?R:null;for(;!u(l)&&n!=y;)l();return U(),_},addCheckpointIdsListener:e=>x(e,b),addCheckpointListener:(e,n)=>x(n,j,[e]),delListener:e=>(F(e),_),clear:()=>(D(W),D($),u(y)||q(y),y=void 0,z=0,X(),_),destroy:()=>{S.delListener(K),S.delListener(N)},getListenerStats:()=>({})};return w(_.clear())})(S)),y.get(S))})();export{S as createCheckpoints};
Binary file
@@ -1 +1 @@
1
- const e=e=>typeof e,n=e(""),l=e=>""+e,t=(e,n)=>e.every(n),r=(e,n)=>t(e,((l,t)=>0==t||n(e[t-1],l)<=0)),s=(e,n)=>e.sort(n),o=(e,n)=>e.forEach(n),u=e=>e.length,d=(e,...n)=>e.push(...n),i=e=>null==e,a=(e,n,l)=>i(e)?null==l?void 0:l():n(e),c=e=>Array.isArray(e),v=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},h=e=>i(e)||0==(e=>e.size)(e),f=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},I=e=>e.clear(),g=(e,n)=>null==e?void 0:e.forEach(n),S=(e,n)=>null==e?void 0:e.delete(n),w=e=>new Map(e),L=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},p=(e,n)=>null==e?void 0:e.get(n),x=(e,n)=>g(e,((e,l)=>n(l,e))),y=(e,n,l)=>i(l)?(S(e,n),e):null==e?void 0:e.set(n,l),E=(e,n,l)=>(v(e,n)||y(e,n,l()),p(e,n)),R=(e,n,l,t,r=0)=>a((l?E:p)(e,n[r],r>u(n)-2?l:w),(s=>{if(r>u(n)-2)return(null==t?void 0:t(s))&&y(e,n[r]),s;const o=R(s,n,l,t,r+1);return h(s)&&y(e,n[r]),o})),b=e=>new Set(c(e)||i(e)?e:[e]),T=(e,n)=>null==e?void 0:e.add(n),k=(l,t)=>e(l)==n?e=>e(l):null!=l?l:()=>null!=t?t:"",z=(e,n)=>e<n?-1:1,A=/^\d+$/,C=Object.freeze,D=(e=>{const n=new WeakMap;return e=>(n.has(e)||n.set(e,(e=>{const n=w(),D=w(),[M,j,m,O,W,$,q,,B,F,G]=((e,n,l)=>{const r=e.hasRow,s=w(),d=w(),R=w(),k=w(),z=w(),A=(n,l,...t)=>{const r=E(z,n,b);return o(t,(n=>T(r,n)&&l&&e.callListener(n))),t},C=(n,...l)=>a(p(z,n),(t=>{o(0==u(l)?f(t):l,(n=>{e.delListener(n),S(t,n)})),h(t)&&y(z,n)})),D=(e,l)=>{y(s,e,l),v(d,e)||(y(d,e,n()),y(R,e,w()),y(k,e,w()))},M=e=>{y(s,e),y(d,e),y(R,e),y(k,e),C(e)};return[()=>e,()=>L(s),e=>x(d,e),e=>v(d,e),e=>p(s,e),e=>p(d,e),(e,n)=>y(d,e,n),D,(n,s,d,a,h)=>{D(n,s);const f=w(),S=w(),L=p(R,n),E=p(k,n),b=n=>{const o=l=>e.getCell(s,n,l),d=p(L,n),v=r(s,n)?l(a(o,n)):void 0;var I,g;if(d===v||c(d)&&c(v)&&(g=v,u(I=d)===u(g)&&t(I,((e,n)=>g[n]===e)))||y(f,n,[d,v]),!i(h)){const e=p(E,n),l=r(s,n)?h(o,n):void 0;e!=l&&y(S,n,l)}},T=e=>{d((()=>{g(f,(([,e],n)=>y(L,n,e))),g(S,((e,n)=>y(E,n,e)))}),f,S,L,E,e),I(f),I(S)};x(L,b),e.hasTable(s)&&o(e.getRowIds(s),(e=>{v(L,e)||b(e)})),T(!0),C(n),A(n,0,e.addRowListener(s,null,((e,n,l)=>b(l))),e.addTableListener(s,(()=>T())))},M,()=>x(z,M),A,C]})(e,w,(e=>{return i(e)?"":c(e)?(n=l,e.map(n)):l(e);var n})),[H,J,K]=(e=>{let n;const[l,t]=(()=>{const e=[];let n=0;return[()=>{var l;return null!=(l=e.shift())?l:""+n++},n=>{A.test(n)&&u(e)<1e3&&d(e,n)}]})(),r=w();return[(e,t,s,o=[],u=(()=>[]))=>{null!=n||(n=P);const d=l();return y(r,d,[e,t,s,o,u]),T(R(t,null!=s?s:[""],b),d),d},(e,l,...t)=>o(((e,n=[""])=>{const l=[],t=(e,r)=>r==u(n)?d(l,e):null===n[r]?g(e,(e=>t(e,r+1))):o([n[r],null],(n=>t(p(e,n),r+1)));return t(e,0),l})(e,l),(e=>g(e,(e=>p(r,e)[0](n,...null!=l?l:[],...t))))),e=>a(p(r,e),(([,n,l])=>(R(n,null!=l?l:[""],void 0,(n=>(S(n,e),h(n)?1:0))),y(r,e),t(e),l))),e=>a(p(r,e),(([e,,l=[],t,r])=>{const s=(...d)=>{var a,c;const v=u(d);v==u(l)?e(n,...d,...r(d)):i(l[v])?o(null!=(c=null==(a=t[v])?void 0:a.call(t,...d))?c:[],(e=>s(...d,e))):s(...d,l[v])};s()}))]})(),N=(n,l,t)=>{const r=W(n);g(t,((n,t)=>l(t,(l=>g(n,(n=>l(n,(l=>e.forEachCell(r,n,l)))))))))},P={setIndexDefinition:(e,l,t,o,u,d=z)=>{const c=i(u)?void 0:([e],[n])=>u(e,n);return B(e,l,((l,t,u,f,I,L)=>{let E=0;const R=b(),k=b(),z=$(e);if(g(t,(([e,n],l)=>{const t=b(e),r=b(n);g(t,(e=>S(r,e)?S(t,e):0)),g(t,(e=>{T(R,e),a(p(z,e),(n=>{S(n,l),h(n)&&(y(z,e),E=1)}))})),g(r,(e=>{T(R,e),v(z,e)||(y(z,e,b()),E=1),T(p(z,e),l),i(o)||T(k,e)}))})),l(),h(I)||(L?x(z,(e=>T(k,e))):x(u,(e=>a(p(f,e),(e=>T(k,e))))),g(k,(e=>{const n=(n,l)=>d(p(I,n),p(I,l),e),l=[...p(z,e)];r(l,n)||(y(z,e,b(s(l,n))),T(R,e))}))),(E||L)&&!i(c)){const n=[...z];r(n,c)||(q(e,w(s(n,c))),E=1)}E&&J(n,[e]),g(R,(n=>J(D,[e,n])))}),k(t),a(o,k)),P},delIndexDefinition:e=>(F(e),P),getStore:M,getIndexIds:j,forEachIndex:e=>m(((n,l)=>e(n,(e=>N(n,e,l))))),forEachSlice:(e,n)=>N(e,n,$(e)),hasIndex:O,hasSlice:(e,n)=>v($(e),n),getTableId:W,getSliceIds:e=>L($(e)),getSliceRowIds:(e,n)=>f(p($(e),n)),addSliceIdsListener:(e,l)=>H(l,n,[e]),addSliceRowIdsListener:(e,n,l)=>H(l,D,[e,n]),delListener:e=>(K(e),P),destroy:G,getListenerStats:()=>({})};return C(P)})(e)),n.get(e))})();export{D as createIndexes};
1
+ const e=e=>typeof e,n="",l=e(n),t=e=>n+e,r=(e,n)=>e.every(n),s=(e,n)=>r(e,((l,t)=>0==t||n(e[t-1],l)<=0)),o=(e,n)=>e.sort(n),u=(e,n)=>e.forEach(n),d=e=>e.length,i=(e,...n)=>e.push(...n),a=e=>null==e,c=(e,n,l)=>a(e)?null==l?void 0:l():n(e),v=e=>Array.isArray(e),h=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},f=e=>a(e)||0==(e=>e.size)(e),I=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},g=e=>e.clear(),S=(e,n)=>null==e?void 0:e.forEach(n),w=(e,n)=>null==e?void 0:e.delete(n),L=e=>new Map(e),p=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},x=(e,n)=>null==e?void 0:e.get(n),y=(e,n)=>S(e,((e,l)=>n(l,e))),E=(e,n,l)=>a(l)?(w(e,n),e):null==e?void 0:e.set(n,l),R=(e,n,l)=>(h(e,n)||E(e,n,l()),x(e,n)),b=(e,n,l,t,r=0)=>c((l?R:x)(e,n[r],r>d(n)-2?l:L),(s=>{if(r>d(n)-2)return(null==t?void 0:t(s))&&E(e,n[r]),s;const o=b(s,n,l,t,r+1);return f(s)&&E(e,n[r]),o})),T=e=>new Set(v(e)||a(e)?e:[e]),k=(e,n)=>null==e?void 0:e.add(n),z=(t,r)=>e(t)==l?e=>e(t):null!=t?t:()=>null!=r?r:n,A=(e,n)=>e<n?-1:1,C=/^\d+$/,D=Object.freeze,M=(e=>{const l=new WeakMap;return e=>(l.has(e)||l.set(e,(e=>{const l=L(),M=L(),[j,m,O,W,$,q,B,,F,G,H]=((e,n,l)=>{const t=e.hasRow,s=L(),o=L(),i=L(),b=L(),z=L(),A=(n,l,...t)=>{const r=R(z,n,T);return u(t,(n=>k(r,n)&&l&&e.callListener(n))),t},C=(n,...l)=>c(x(z,n),(t=>{u(0==d(l)?I(t):l,(n=>{e.delListener(n),w(t,n)})),f(t)&&E(z,n)})),D=(e,l)=>{E(s,e,l),h(o,e)||(E(o,e,n()),E(i,e,L()),E(b,e,L()))},M=e=>{E(s,e),E(o,e),E(i,e),E(b,e),C(e)};return[()=>e,()=>p(s),e=>y(o,e),e=>h(o,e),e=>x(s,e),e=>x(o,e),(e,n)=>E(o,e,n),D,(n,s,o,c,f)=>{D(n,s);const I=L(),w=L(),p=x(i,n),R=x(b,n),T=n=>{const o=l=>e.getCell(s,n,l),u=x(p,n),i=t(s,n)?l(c(o,n)):void 0;var h,g;if(u===i||v(u)&&v(i)&&(g=i,d(h=u)===d(g)&&r(h,((e,n)=>g[n]===e)))||E(I,n,[u,i]),!a(f)){const e=x(R,n),l=t(s,n)?f(o,n):void 0;e!=l&&E(w,n,l)}},k=e=>{o((()=>{S(I,(([,e],n)=>E(p,n,e))),S(w,((e,n)=>E(R,n,e)))}),I,w,p,R,e),g(I),g(w)};y(p,T),e.hasTable(s)&&u(e.getRowIds(s),(e=>{h(p,e)||T(e)})),k(!0),C(n),A(n,0,e.addRowListener(s,null,((e,n,l)=>T(l))),e.addTableListener(s,(()=>k())))},M,()=>y(z,M),A,C]})(e,L,(e=>{return a(e)?n:v(e)?(l=t,e.map(l)):t(e);var l})),[J,K,N]=(e=>{let l;const[t,r]=(()=>{const e=[];let l=0;return[t=>{var r;return null!=(r=t?e.shift():null)?r:n+l++},n=>{C.test(n)&&d(e)<1e3&&i(e,n)}]})(),s=L();return[(e,r,o,u=[],d=(()=>[]))=>{null!=l||(l=Q);const i=t(1);return E(s,i,[e,r,o,u,d]),k(b(r,null!=o?o:[n],T),i),i},(e,t,...r)=>u(((e,l=[n])=>{const t=[],r=(e,n)=>n==d(l)?i(t,e):null===l[n]?S(e,(e=>r(e,n+1))):u([l[n],null],(l=>r(x(e,l),n+1)));return r(e,0),t})(e,t),(e=>S(e,(e=>x(s,e)[0](l,...null!=t?t:[],...r))))),e=>c(x(s,e),(([,l,t])=>(b(l,null!=t?t:[n],void 0,(n=>(w(n,e),f(n)?1:0))),E(s,e),r(e),t))),e=>c(x(s,e),(([e,,n=[],t,r])=>{const s=(...o)=>{var i,c;const v=d(o);v==d(n)?e(l,...o,...r(o)):a(n[v])?u(null!=(c=null==(i=t[v])?void 0:i.call(t,...o))?c:[],(e=>s(...o,e))):s(...o,n[v])};s()}))]})(),P=(n,l,t)=>{const r=$(n);S(t,((n,t)=>l(t,(l=>S(n,(n=>l(n,(l=>e.forEachCell(r,n,l)))))))))},Q={setIndexDefinition:(e,n,t,r,u,d=A)=>{const i=a(u)?void 0:([e],[n])=>u(e,n);return F(e,n,((n,t,u,v,I,g)=>{let p=0;const R=T(),b=T(),z=q(e);if(S(t,(([e,n],l)=>{const t=T(e),s=T(n);S(t,(e=>w(s,e)?w(t,e):0)),S(t,(e=>{k(R,e),c(x(z,e),(n=>{w(n,l),f(n)&&(E(z,e),p=1)}))})),S(s,(e=>{k(R,e),h(z,e)||(E(z,e,T()),p=1),k(x(z,e),l),a(r)||k(b,e)}))})),n(),f(I)||(g?y(z,(e=>k(b,e))):y(u,(e=>c(x(v,e),(e=>k(b,e))))),S(b,(e=>{const n=(n,l)=>d(x(I,n),x(I,l),e),l=[...x(z,e)];s(l,n)||(E(z,e,T(o(l,n))),k(R,e))}))),(p||g)&&!a(i)){const n=[...z];s(n,i)||(B(e,L(o(n,i))),p=1)}p&&K(l,[e]),S(R,(n=>K(M,[e,n])))}),z(t),c(r,z)),Q},delIndexDefinition:e=>(G(e),Q),getStore:j,getIndexIds:m,forEachIndex:e=>O(((n,l)=>e(n,(e=>P(n,e,l))))),forEachSlice:(e,n)=>P(e,n,q(e)),hasIndex:W,hasSlice:(e,n)=>h(q(e),n),getTableId:$,getSliceIds:e=>p(q(e)),getSliceRowIds:(e,n)=>I(x(q(e),n)),addSliceIdsListener:(e,n)=>J(n,l,[e]),addSliceRowIdsListener:(e,n,l)=>J(l,M,[e,n]),delListener:e=>(N(e),Q),destroy:H,getListenerStats:()=>({})};return D(Q)})(e)),l.get(e))})();export{M as createIndexes};
Binary file
@@ -1 +1 @@
1
- const e=e=>typeof e,n=e(""),t=e(e),l=(e,n)=>e.forEach(n),r=e=>o(e,((e,n)=>e+n),0),i=e=>e.length,o=(e,n,t)=>e.reduce(n,t),u=(e,...n)=>e.push(...n),s=Math.max,d=Math.min,a=isFinite,v=e=>null==e,c=(e,n,t)=>v(e)?null==t?void 0:t():n(e),h=e=>Array.isArray(e),f=()=>{},g=e=>e.size,M=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},L=e=>v(e)||0==g(e),m=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},w=e=>e.clear(),y=(e,n)=>null==e?void 0:e.forEach(n),p=(e,n)=>null==e?void 0:e.delete(n),b=e=>new Map(e),x=(e,n)=>null==e?void 0:e.get(n),E=(e,n)=>y(e,((e,t)=>n(t,e))),I=(e,n,t)=>v(t)?(p(e,n),e):null==e?void 0:e.set(n,t),R=(e,n,t)=>(M(e,n)||I(e,n,t()),x(e,n)),S=(e,n,t,l,r=0)=>c((t?R:x)(e,n[r],r>i(n)-2?t:b),(o=>{if(r>i(n)-2)return(null==l?void 0:l(o))&&I(e,n[r]),o;const u=S(o,n,t,l,r+1);return L(o)&&I(e,n[r]),u})),T=b([["avg",[(e,n)=>r(e)/n,(e,n,t)=>e+(n-e)/(t+1),(e,n,t)=>e+(e-n)/(t-1),(e,n,t,l)=>e+(n-t)/l]],["max",[e=>s(...e),(e,n)=>s(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:s(n,e)]],["min",[e=>d(...e),(e,n)=>d(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:d(n,e)]],["sum",[e=>r(e),(e,n)=>e+n,(e,n)=>e-n,(e,n,t)=>e-t+n]]]),k=e=>new Set(h(e)||v(e)?e:[e]),z=(e,n)=>null==e?void 0:e.add(n),A=/^\d+$/,D=Object.freeze,N=(r=>{const o=new WeakMap;return r=>(o.has(r)||o.set(r,(r=>{const o=b(),[s,d,N,j,C,F,O,,W,$,q]=((e,n,t)=>{const r=e.hasRow,o=b(),u=b(),s=b(),d=b(),a=b(),f=(n,t,...r)=>{const i=R(a,n,k);return l(r,(n=>z(i,n)&&t&&e.callListener(n))),r},g=(n,...t)=>c(x(a,n),(r=>{l(0==i(t)?m(r):t,(n=>{e.delListener(n),p(r,n)})),L(r)&&I(a,n)})),S=(e,t)=>{I(o,e,t),M(u,e)||(I(u,e,n()),I(s,e,b()),I(d,e,b()))},T=e=>{I(o,e),I(u,e),I(s,e),I(d,e),g(e)};return[()=>e,()=>{return[...null!=(n=null==(e=o)?void 0:e.keys())?n:[]];var e,n},e=>E(u,e),e=>M(u,e),e=>x(o,e),e=>x(u,e),(e,n)=>I(u,e,n),S,(n,t,o,u,a)=>{S(n,t);const c=b(),L=b(),m=x(s,n),p=x(d,n),R=n=>{const l=l=>e.getCell(t,n,l),o=x(m,n),s=r(t,n)?(d=u(l,n),isNaN(d)||v(d)||!0===d||!1===d||""===d?void 0:1*d):void 0;var d,f,g,M;if(o===s||h(o)&&h(s)&&(g=s,i(f=o)===i(g)&&(M=(e,n)=>g[n]===e,f.every(M)))||I(c,n,[o,s]),!v(a)){const e=x(p,n),i=r(t,n)?a(l,n):void 0;e!=i&&I(L,n,i)}},T=e=>{o((()=>{y(c,(([,e],n)=>I(m,n,e))),y(L,((e,n)=>I(p,n,e)))}),c,L,m,p,e),w(c),w(L)};E(m,R),e.hasTable(t)&&l(e.getRowIds(t),(e=>{M(m,e)||R(e)})),T(!0),g(n),f(n,0,e.addRowListener(t,null,((e,n,t)=>R(t))),e.addTableListener(t,(()=>T())))},T,()=>E(a,T),f,g]})(r,f),[B,G,H]=(e=>{let n;const[t,r]=(()=>{const e=[];let n=0;return[()=>{var t;return null!=(t=e.shift())?t:""+n++},n=>{A.test(n)&&i(e)<1e3&&u(e,n)}]})(),o=b();return[(e,l,r,i=[],u=(()=>[]))=>{null!=n||(n=J);const s=t();return I(o,s,[e,l,r,i,u]),z(S(l,null!=r?r:[""],k),s),s},(e,t,...r)=>l(((e,n=[""])=>{const t=[],r=(e,o)=>o==i(n)?u(t,e):null===n[o]?y(e,(e=>r(e,o+1))):l([n[o],null],(n=>r(x(e,n),o+1)));return r(e,0),t})(e,t),(e=>y(e,(e=>x(o,e)[0](n,...null!=t?t:[],...r))))),e=>c(x(o,e),(([,n,t])=>(S(n,null!=t?t:[""],void 0,(n=>(p(n,e),L(n)?1:0))),I(o,e),r(e),t))),e=>c(x(o,e),(([e,,t=[],r,o])=>{const u=(...s)=>{var d,a;const c=i(s);c==i(t)?e(n,...s,...o(s)):v(t[c])?l(null!=(a=null==(d=r[c])?void 0:d.call(r,...s))?a:[],(e=>u(...s,e))):u(...s,t[c])};u()}))]})(),J={setMetricDefinition:(l,r,i,u,s,d,c)=>{var h;const f=e(i)==t?[i,s,d,c]:null!=(h=x(T,i))?h:x(T,"sum");return W(l,r,((e,n,t,r,i,u)=>{const s=F(l),d=g(r);u||(u=v(s)),e();let c=((e,n,t,l,r,i=!1)=>{if(L(t))return;const[o,u,s,d]=r;return i||(i=v(e)),y(l,(([t,l])=>{i||(e=v(t)?null==u?void 0:u(e,l,n++):v(l)?null==s?void 0:s(e,t,n--):null==d?void 0:d(e,l,t,n),i||(i=v(e)))})),i?o(m(t),g(t)):e})(s,d,r,n,f,u);a(c)||(c=void 0),c!=s&&(O(l,c),G(o,[l],c,s))}),(1,e(M=u)==n?e=>e(M):null!=M?M:()=>1)),J;var M},delMetricDefinition:e=>($(e),J),getStore:s,getMetricIds:d,forEachMetric:N,hasMetric:j,getTableId:C,getMetric:F,addMetricListener:(e,n)=>B(n,o,[e]),delListener:e=>(H(e),J),destroy:q,getListenerStats:()=>({})};return D(J)})(r)),o.get(r))})();export{N as createMetrics};
1
+ const e=e=>typeof e,n="",t=e(n),l=e(e),r=(e,n)=>e.forEach(n),i=e=>u(e,((e,n)=>e+n),0),o=e=>e.length,u=(e,n,t)=>e.reduce(n,t),s=(e,...n)=>e.push(...n),d=Math.max,a=Math.min,v=isFinite,c=e=>null==e,h=(e,n,t)=>c(e)?null==t?void 0:t():n(e),f=e=>Array.isArray(e),g=()=>{},M=e=>e.size,L=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},m=e=>c(e)||0==M(e),w=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},y=e=>e.clear(),p=(e,n)=>null==e?void 0:e.forEach(n),b=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),E=(e,n)=>null==e?void 0:e.get(n),I=(e,n)=>p(e,((e,t)=>n(t,e))),R=(e,n,t)=>c(t)?(b(e,n),e):null==e?void 0:e.set(n,t),S=(e,n,t)=>(L(e,n)||R(e,n,t()),E(e,n)),T=(e,n,t,l,r=0)=>h((t?S:E)(e,n[r],r>o(n)-2?t:x),(i=>{if(r>o(n)-2)return(null==l?void 0:l(i))&&R(e,n[r]),i;const u=T(i,n,t,l,r+1);return m(i)&&R(e,n[r]),u})),k=x([["avg",[(e,n)=>i(e)/n,(e,n,t)=>e+(n-e)/(t+1),(e,n,t)=>e+(e-n)/(t-1),(e,n,t,l)=>e+(n-t)/l]],["max",[e=>d(...e),(e,n)=>d(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:d(n,e)]],["min",[e=>a(...e),(e,n)=>a(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:a(n,e)]],["sum",[e=>i(e),(e,n)=>e+n,(e,n)=>e-n,(e,n,t)=>e-t+n]]]),z=e=>new Set(f(e)||c(e)?e:[e]),A=(e,n)=>null==e?void 0:e.add(n),D=/^\d+$/,N=Object.freeze,j=(i=>{const u=new WeakMap;return i=>(u.has(i)||u.set(i,(i=>{const u=x(),[d,a,j,C,F,O,W,,$,q,B]=((e,t,l)=>{const i=e.hasRow,u=x(),s=x(),d=x(),a=x(),v=x(),g=(n,t,...l)=>{const i=S(v,n,z);return r(l,(n=>A(i,n)&&t&&e.callListener(n))),l},M=(n,...t)=>h(E(v,n),(l=>{r(0==o(t)?w(l):t,(n=>{e.delListener(n),b(l,n)})),m(l)&&R(v,n)})),T=(e,n)=>{R(u,e,n),L(s,e)||(R(s,e,t()),R(d,e,x()),R(a,e,x()))},k=e=>{R(u,e),R(s,e),R(d,e),R(a,e),M(e)};return[()=>e,()=>{return[...null!=(n=null==(e=u)?void 0:e.keys())?n:[]];var e,n},e=>I(s,e),e=>L(s,e),e=>E(u,e),e=>E(s,e),(e,n)=>R(s,e,n),T,(t,l,u,s,v)=>{T(t,l);const h=x(),m=x(),w=E(d,t),b=E(a,t),S=t=>{const r=n=>e.getCell(l,t,n),u=E(w,t),d=i(l,t)?(a=s(r,t),isNaN(a)||c(a)||!0===a||!1===a||a===n?void 0:1*a):void 0;var a,g,M,L;if(u===d||f(u)&&f(d)&&(M=d,o(g=u)===o(M)&&(L=(e,n)=>M[n]===e,g.every(L)))||R(h,t,[u,d]),!c(v)){const e=E(b,t),n=i(l,t)?v(r,t):void 0;e!=n&&R(m,t,n)}},k=e=>{u((()=>{p(h,(([,e],n)=>R(w,n,e))),p(m,((e,n)=>R(b,n,e)))}),h,m,w,b,e),y(h),y(m)};I(w,S),e.hasTable(l)&&r(e.getRowIds(l),(e=>{L(w,e)||S(e)})),k(!0),M(t),g(t,0,e.addRowListener(l,null,((e,n,t)=>S(t))),e.addTableListener(l,(()=>k())))},k,()=>I(v,k),g,M]})(i,g),[G,H,J]=(e=>{let t;const[l,i]=(()=>{const e=[];let t=0;return[l=>{var r;return null!=(r=l?e.shift():null)?r:n+t++},n=>{D.test(n)&&o(e)<1e3&&s(e,n)}]})(),u=x();return[(e,r,i,o=[],s=(()=>[]))=>{null!=t||(t=K);const d=l(1);return R(u,d,[e,r,i,o,s]),A(T(r,null!=i?i:[n],z),d),d},(e,l,...i)=>r(((e,t=[n])=>{const l=[],i=(e,n)=>n==o(t)?s(l,e):null===t[n]?p(e,(e=>i(e,n+1))):r([t[n],null],(t=>i(E(e,t),n+1)));return i(e,0),l})(e,l),(e=>p(e,(e=>E(u,e)[0](t,...null!=l?l:[],...i))))),e=>h(E(u,e),(([,t,l])=>(T(t,null!=l?l:[n],void 0,(n=>(b(n,e),m(n)?1:0))),R(u,e),i(e),l))),e=>h(E(u,e),(([e,,n=[],l,i])=>{const u=(...s)=>{var d,a;const v=o(s);v==o(n)?e(t,...s,...i(s)):c(n[v])?r(null!=(a=null==(d=l[v])?void 0:d.call(l,...s))?a:[],(e=>u(...s,e))):u(...s,n[v])};u()}))]})(),K={setMetricDefinition:(n,r,i,o,s,d,a)=>{var h;const f=e(i)==l?[i,s,d,a]:null!=(h=E(k,i))?h:E(k,"sum");return $(n,r,((e,t,l,r,i,o)=>{const s=O(n),d=M(r);o||(o=c(s)),e();let a=((e,n,t,l,r,i=!1)=>{if(m(t))return;const[o,u,s,d]=r;return i||(i=c(e)),p(l,(([t,l])=>{i||(e=c(t)?null==u?void 0:u(e,l,n++):c(l)?null==s?void 0:s(e,t,n--):null==d?void 0:d(e,l,t,n),i||(i=c(e)))})),i?o(w(t),M(t)):e})(s,d,r,t,f,o);v(a)||(a=void 0),a!=s&&(W(n,a),H(u,[n],a,s))}),(1,e(g=o)==t?e=>e(g):null!=g?g:()=>1)),K;var g},delMetricDefinition:e=>(q(e),K),getStore:d,getMetricIds:a,forEachMetric:j,hasMetric:C,getTableId:F,getMetric:O,addMetricListener:(e,n)=>G(n,u,[e]),delListener:e=>(J(e),K),destroy:B,getListenerStats:()=>({})};return N(K)})(i)),u.get(i))})();export{j as createMetrics};
Binary file