tinybase 3.2.0 → 3.3.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 (60) hide show
  1. package/lib/cjs/store.cjs +1 -1
  2. package/lib/cjs/store.cjs.gz +0 -0
  3. package/lib/cjs/tinybase.cjs +1 -1
  4. package/lib/cjs/tinybase.cjs.gz +0 -0
  5. package/lib/cjs/tools.cjs +1 -1
  6. package/lib/cjs/tools.cjs.gz +0 -0
  7. package/lib/cjs/ui-react.cjs +1 -1
  8. package/lib/cjs/ui-react.cjs.gz +0 -0
  9. package/lib/cjs-es6/store.cjs +1 -1
  10. package/lib/cjs-es6/store.cjs.gz +0 -0
  11. package/lib/cjs-es6/tinybase.cjs +1 -1
  12. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  13. package/lib/cjs-es6/tools.cjs +1 -1
  14. package/lib/cjs-es6/tools.cjs.gz +0 -0
  15. package/lib/cjs-es6/ui-react.cjs +1 -1
  16. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  17. package/lib/debug/store.js +53 -13
  18. package/lib/debug/tinybase.js +53 -13
  19. package/lib/debug/tools.js +93 -1
  20. package/lib/debug/ui-react.js +24 -0
  21. package/lib/es6/store.js +1 -1
  22. package/lib/es6/store.js.gz +0 -0
  23. package/lib/es6/tinybase.js +1 -1
  24. package/lib/es6/tinybase.js.gz +0 -0
  25. package/lib/es6/tools.js +1 -1
  26. package/lib/es6/tools.js.gz +0 -0
  27. package/lib/es6/ui-react.js +1 -1
  28. package/lib/es6/ui-react.js.gz +0 -0
  29. package/lib/store.js +1 -1
  30. package/lib/store.js.gz +0 -0
  31. package/lib/tinybase.js +1 -1
  32. package/lib/tinybase.js.gz +0 -0
  33. package/lib/tools.js +1 -1
  34. package/lib/tools.js.gz +0 -0
  35. package/lib/types/store.d.ts +302 -9
  36. package/lib/types/tools.d.ts +2 -2
  37. package/lib/types/ui-react.d.ts +156 -0
  38. package/lib/types/with-schemas/store.d.ts +405 -16
  39. package/lib/types/with-schemas/tools.d.ts +2 -2
  40. package/lib/types/with-schemas/ui-react.d.ts +181 -5
  41. package/lib/ui-react.js +1 -1
  42. package/lib/ui-react.js.gz +0 -0
  43. package/lib/umd/store.js +1 -1
  44. package/lib/umd/store.js.gz +0 -0
  45. package/lib/umd/tinybase.js +1 -1
  46. package/lib/umd/tinybase.js.gz +0 -0
  47. package/lib/umd/tools.js +1 -1
  48. package/lib/umd/tools.js.gz +0 -0
  49. package/lib/umd/ui-react.js +1 -1
  50. package/lib/umd/ui-react.js.gz +0 -0
  51. package/lib/umd-es6/store.js +1 -1
  52. package/lib/umd-es6/store.js.gz +0 -0
  53. package/lib/umd-es6/tinybase.js +1 -1
  54. package/lib/umd-es6/tinybase.js.gz +0 -0
  55. package/lib/umd-es6/tools.js +1 -1
  56. package/lib/umd-es6/tools.js.gz +0 -0
  57. package/lib/umd-es6/ui-react.js +1 -1
  58. package/lib/umd-es6/ui-react.js.gz +0 -0
  59. package/package.json +15 -15
  60. package/readme.md +2 -2
@@ -1845,6 +1845,7 @@ const createStore = () => {
1845
1845
  let valuesTouched;
1846
1846
  let transactions = 0;
1847
1847
  const changedTableIds = mapNew();
1848
+ const changedTableCellIds = mapNew();
1848
1849
  const changedRowIds = mapNew();
1849
1850
  const changedCellIds = mapNew();
1850
1851
  const changedCells = mapNew();
@@ -1858,11 +1859,13 @@ const createStore = () => {
1858
1859
  const valuesDefaulted = mapNew();
1859
1860
  const valuesNonDefaulted = setNew();
1860
1861
  const tablePoolFunctions = mapNew();
1862
+ const tableCellIds = mapNew();
1861
1863
  const tablesMap = mapNew();
1862
1864
  const valuesMap = mapNew();
1863
1865
  const tablesListeners = pairNewMap();
1864
1866
  const tableIdsListeners = pairNewMap();
1865
1867
  const tableListeners = pairNewMap();
1868
+ const tableCellIdsListeners = pairNewMap();
1866
1869
  const rowIdsListeners = pairNewMap();
1867
1870
  const sortedRowIdsListeners = pairNewMap();
1868
1871
  const rowListeners = pairNewMap();
@@ -2051,6 +2054,8 @@ const createStore = () => {
2051
2054
  mapMatch(
2052
2055
  mapEnsure(tablesMap, tableId, () => {
2053
2056
  tableIdsChanged(tableId, 1);
2057
+ mapSet(tablePoolFunctions, tableId, getPoolFunctions());
2058
+ mapSet(tableCellIds, tableId, mapNew());
2054
2059
  return mapNew();
2055
2060
  }),
2056
2061
  table,
@@ -2111,7 +2116,7 @@ const createStore = () => {
2111
2116
  }
2112
2117
  };
2113
2118
  const getNewRowId = (tableId, reuse) => {
2114
- const [getId] = mapEnsure(tablePoolFunctions, tableId, getPoolFunctions);
2119
+ const [getId] = mapGet(tablePoolFunctions, tableId);
2115
2120
  const rowId = getId(reuse);
2116
2121
  if (!collHas(mapGet(tablesMap, tableId), rowId)) {
2117
2122
  return rowId;
@@ -2122,11 +2127,7 @@ const createStore = () => {
2122
2127
  mapGet(tablesMap, tableId) ?? setValidTable(tableId, {});
2123
2128
  const delValidTable = (tableId) => setValidTable(tableId, {});
2124
2129
  const delValidRow = (tableId, tableMap, rowId) => {
2125
- const [, releaseId] = mapEnsure(
2126
- tablePoolFunctions,
2127
- tableId,
2128
- getPoolFunctions,
2129
- );
2130
+ const [, releaseId] = mapGet(tablePoolFunctions, tableId);
2130
2131
  releaseId(rowId);
2131
2132
  setValidRow(tableId, tableMap, rowId, {}, true);
2132
2133
  };
@@ -2150,6 +2151,7 @@ const createStore = () => {
2150
2151
  tableIdsChanged(tableId, -1);
2151
2152
  mapSet(tablesMap, tableId);
2152
2153
  mapSet(tablePoolFunctions, tableId);
2154
+ mapSet(tableCellIds, tableId);
2153
2155
  }
2154
2156
  }
2155
2157
  };
@@ -2166,12 +2168,23 @@ const createStore = () => {
2166
2168
  idsChanged(changedTableIds, tableId, added);
2167
2169
  const rowIdsChanged = (tableId, rowId, added) =>
2168
2170
  idsChanged(mapEnsure(changedRowIds, tableId, mapNew), rowId, added);
2169
- const cellIdsChanged = (tableId, rowId, cellId, added) =>
2171
+ const cellIdsChanged = (tableId, rowId, cellId, added) => {
2172
+ const cellIds = mapGet(tableCellIds, tableId);
2173
+ const count = mapGet(cellIds, cellId) ?? 0;
2174
+ if ((count == 0 && added == 1) || (count == 1 && added == -1)) {
2175
+ idsChanged(
2176
+ mapEnsure(changedTableCellIds, tableId, mapNew),
2177
+ cellId,
2178
+ added,
2179
+ );
2180
+ }
2181
+ mapSet(cellIds, cellId, count != -added ? count + added : null);
2170
2182
  idsChanged(
2171
2183
  mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
2172
2184
  cellId,
2173
2185
  added,
2174
2186
  );
2187
+ };
2175
2188
  const cellChanged = (tableId, rowId, cellId, oldCell, newCell) =>
2176
2189
  (mapEnsure(
2177
2190
  mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
@@ -2242,7 +2255,7 @@ const createStore = () => {
2242
2255
  : 0;
2243
2256
  const callIdsListenersIfChanged = (listeners, changedIds, ids) => {
2244
2257
  if (!collIsEmpty(changedIds)) {
2245
- callListeners(listeners, ids);
2258
+ callListeners(listeners, ids, () => mapToObj(changedIds));
2246
2259
  return 1;
2247
2260
  }
2248
2261
  };
@@ -2252,6 +2265,7 @@ const createStore = () => {
2252
2265
  );
2253
2266
  const emptyIdListeners =
2254
2267
  collIsEmpty(cellIdsListeners[mutator]) &&
2268
+ collIsEmpty(tableCellIdsListeners[mutator]) &&
2255
2269
  collIsEmpty(rowIdsListeners[mutator]) &&
2256
2270
  emptySortedRowIdListeners &&
2257
2271
  collIsEmpty(tableIdsListeners[mutator]);
@@ -2264,13 +2278,27 @@ const createStore = () => {
2264
2278
  const changes = mutator
2265
2279
  ? [
2266
2280
  mapClone(changedTableIds),
2281
+ mapClone2(changedTableCellIds),
2267
2282
  mapClone2(changedRowIds),
2268
2283
  mapClone(changedCellIds, mapClone2),
2269
2284
  mapClone(changedCells, mapClone2),
2270
2285
  ]
2271
- : [changedTableIds, changedRowIds, changedCellIds, changedCells];
2286
+ : [
2287
+ changedTableIds,
2288
+ changedTableCellIds,
2289
+ changedRowIds,
2290
+ changedCellIds,
2291
+ changedCells,
2292
+ ];
2272
2293
  if (!emptyIdListeners) {
2273
- collForEach(changes[2], (rowCellIds, tableId) =>
2294
+ collForEach(changes[1], (changedIds, tableId) =>
2295
+ callIdsListenersIfChanged(
2296
+ tableCellIdsListeners[mutator],
2297
+ changedIds,
2298
+ [tableId],
2299
+ ),
2300
+ );
2301
+ collForEach(changes[3], (rowCellIds, tableId) =>
2274
2302
  collForEach(rowCellIds, (changedIds, rowId) =>
2275
2303
  callIdsListenersIfChanged(cellIdsListeners[mutator], changedIds, [
2276
2304
  tableId,
@@ -2279,7 +2307,7 @@ const createStore = () => {
2279
2307
  ),
2280
2308
  );
2281
2309
  const calledSortableTableIds = setNew();
2282
- collForEach(changes[1], (changedIds, tableId) => {
2310
+ collForEach(changes[2], (changedIds, tableId) => {
2283
2311
  if (
2284
2312
  callIdsListenersIfChanged(rowIdsListeners[mutator], changedIds, [
2285
2313
  tableId,
@@ -2291,7 +2319,7 @@ const createStore = () => {
2291
2319
  }
2292
2320
  });
2293
2321
  if (!emptySortedRowIdListeners) {
2294
- collForEach(changes[3], (rows, tableId) => {
2322
+ collForEach(changes[4], (rows, tableId) => {
2295
2323
  if (!collHas(calledSortableTableIds, tableId)) {
2296
2324
  const sortableCellIds = setNew();
2297
2325
  collForEach(rows, (cells) =>
@@ -2314,7 +2342,7 @@ const createStore = () => {
2314
2342
  }
2315
2343
  if (!emptyOtherListeners) {
2316
2344
  let tablesChanged;
2317
- collForEach(changes[3], (rows, tableId) => {
2345
+ collForEach(changes[4], (rows, tableId) => {
2318
2346
  let tableChanged;
2319
2347
  collForEach(rows, (cells, rowId) => {
2320
2348
  let rowChanged;
@@ -2389,6 +2417,8 @@ const createStore = () => {
2389
2417
  const getTableIds = () => mapKeys(tablesMap);
2390
2418
  const getTable = (tableId) =>
2391
2419
  mapToObj(mapGet(tablesMap, id(tableId)), mapToObj);
2420
+ const getTableCellIds = (tableId) =>
2421
+ mapKeys(mapGet(tableCellIds, id(tableId)));
2392
2422
  const getRowIds = (tableId) => mapKeys(mapGet(tablesMap, id(tableId)));
2393
2423
  const getSortedRowIds = (tableId, cellId, descending, offset = 0, limit) =>
2394
2424
  arrayMap(
@@ -2417,6 +2447,8 @@ const createStore = () => {
2417
2447
  const getValue = (valueId) => mapGet(valuesMap, id(valueId));
2418
2448
  const hasTables = () => !collIsEmpty(tablesMap);
2419
2449
  const hasTable = (tableId) => collHas(tablesMap, id(tableId));
2450
+ const hasTableCell = (tableId, cellId) =>
2451
+ collHas(mapGet(tableCellIds, id(tableId)), id(cellId));
2420
2452
  const hasRow = (tableId, rowId) =>
2421
2453
  collHas(mapGet(tablesMap, id(tableId)), id(rowId));
2422
2454
  const hasCell = (tableId, rowId, cellId) =>
@@ -2727,6 +2759,7 @@ const createStore = () => {
2727
2759
  arrayForEach(
2728
2760
  [
2729
2761
  changedTableIds,
2762
+ changedTableCellIds,
2730
2763
  changedRowIds,
2731
2764
  changedCellIds,
2732
2765
  changedCells,
@@ -2751,6 +2784,8 @@ const createStore = () => {
2751
2784
  ),
2752
2785
  ),
2753
2786
  );
2787
+ const forEachTableCell = (tableId, tableCellCallback) =>
2788
+ mapForEach(mapGet(tableCellIds, id(tableId)), tableCellCallback);
2754
2789
  const forEachRow = (tableId, rowCallback) =>
2755
2790
  collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>
2756
2791
  rowCallback(rowId, (cellCallback) => mapForEach(rowMap, cellCallback)),
@@ -2818,6 +2853,7 @@ const createStore = () => {
2818
2853
  const getListenerStats = () => ({
2819
2854
  tables: pairCollSize2(tablesListeners),
2820
2855
  tableIds: pairCollSize2(tableIdsListeners),
2856
+ tableCellIds: pairCollSize2(tableCellIdsListeners),
2821
2857
  table: pairCollSize2(tableListeners),
2822
2858
  rowIds: pairCollSize2(rowIdsListeners),
2823
2859
  sortedRowIds: pairCollSize2(sortedRowIdsListeners),
@@ -2837,6 +2873,7 @@ const createStore = () => {
2837
2873
  getTables,
2838
2874
  getTableIds,
2839
2875
  getTable,
2876
+ getTableCellIds,
2840
2877
  getRowIds,
2841
2878
  getSortedRowIds,
2842
2879
  getRow,
@@ -2847,6 +2884,7 @@ const createStore = () => {
2847
2884
  getValue,
2848
2885
  hasTables,
2849
2886
  hasTable,
2887
+ hasTableCell,
2850
2888
  hasRow,
2851
2889
  hasCell,
2852
2890
  hasValues,
@@ -2885,6 +2923,7 @@ const createStore = () => {
2885
2923
  startTransaction,
2886
2924
  finishTransaction,
2887
2925
  forEachTable,
2926
+ forEachTableCell,
2888
2927
  forEachRow,
2889
2928
  forEachCell,
2890
2929
  forEachValue,
@@ -2902,6 +2941,7 @@ const createStore = () => {
2902
2941
  [TABLES]: [0, tablesListeners],
2903
2942
  [TABLE_IDS]: [0, tableIdsListeners],
2904
2943
  [TABLE]: [1, tableListeners, [getTableIds]],
2944
+ [TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],
2905
2945
  [ROW_IDS]: [1, rowIdsListeners, [getTableIds]],
2906
2946
  [ROW]: [2, rowListeners, [getTableIds, getRowIds]],
2907
2947
  [CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],
@@ -207,6 +207,7 @@ const NOUNS = [
207
207
  A + VALUE,
208
208
  'invalid Value changes',
209
209
  THE + 'sorted ' + ROW + SPACE + IDS,
210
+ THE + CELL + SPACE + IDS + ' anywhere',
210
211
  ];
211
212
  const CONTENT = [EMPTY_STRING, 'tabular ', 'keyed value '];
212
213
 
@@ -297,6 +298,10 @@ const getCodeFunctions = () => {
297
298
  );
298
299
  const addConstant = (name, body) =>
299
300
  mapGet(constants, name) === body ? name : mapUnique(constants, name, body);
301
+ const getSortableImport = (importMaybeAs) => {
302
+ const as = importMaybeAs.indexOf(' as ');
303
+ return as != -1 ? importMaybeAs.substring(as + 4) : importMaybeAs;
304
+ };
300
305
  const getImports = (location = 0) =>
301
306
  arrayMap(
302
307
  [
@@ -305,7 +310,11 @@ const getCodeFunctions = () => {
305
310
  allImports[location],
306
311
  (items, source) =>
307
312
  `import {${join(
308
- arraySort(collValues(items)),
313
+ arraySort(collValues(items), (import1, import2) =>
314
+ getSortableImport(import1) > getSortableImport(import2)
315
+ ? 1
316
+ : -1,
317
+ ),
309
318
  ', ',
310
319
  )}} from '${source}';`,
311
320
  ),
@@ -509,6 +518,12 @@ const getTypeFunctions = (
509
518
  getCallbackDoc(A + ROW + ' Id, and a ' + CELL + ' iterator'),
510
519
  tIdGeneric,
511
520
  );
521
+ const tableCellCallbackType = addType(
522
+ TABLE + CELL + CALLBACK,
523
+ `(cellId: ${cellIdType}<TId>, count: number) ` + RETURNS_VOID,
524
+ getCallbackDoc(A + CELL + ' Id, and count of how many times it appears'),
525
+ tIdGeneric,
526
+ );
512
527
  const tableIdForEachRowArrayType = addType(
513
528
  'TableIdForEachRowArray',
514
529
  `TId extends ${tableIdType} ? [tableId: TId, forEachRow: (rowCallback: ${rowCallbackType}<TId>)${RETURNS_VOID}] : never`,
@@ -554,6 +569,11 @@ const getTypeFunctions = (
554
569
  RETURNS_VOID,
555
570
  getListenerTypeDoc(3),
556
571
  );
572
+ const tableCellIdsListenerType = addType(
573
+ TABLE + CELL_IDS + LISTENER,
574
+ `(${storeParam}, tableId: ${tableIdType})` + RETURNS_VOID,
575
+ getListenerTypeDoc(14, 3),
576
+ );
557
577
  const rowIdsListenerType = addType(
558
578
  ROW_IDS + LISTENER,
559
579
  `(${storeParam}, tableId: ${tableIdType})` + RETURNS_VOID,
@@ -640,10 +660,12 @@ const getTypeFunctions = (
640
660
  cellType,
641
661
  cellCallbackType,
642
662
  rowCallbackType,
663
+ tableCellCallbackType,
643
664
  tableCallbackType,
644
665
  tablesListenerType,
645
666
  tableIdsListenerType,
646
667
  tableListenerType,
668
+ tableCellIdsListenerType,
647
669
  rowIdsListenerType,
648
670
  sortedRowIdsListenerType,
649
671
  rowListenerType,
@@ -886,10 +908,12 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
886
908
  _cellType,
887
909
  cellCallbackType,
888
910
  rowCallbackType,
911
+ tableCellCallbackType,
889
912
  tableCallbackType,
890
913
  tablesListenerType,
891
914
  tableIdsListenerType,
892
915
  tableListenerType,
916
+ tableCellIdsListenerType,
893
917
  rowIdsListenerType,
894
918
  sortedRowIdsListenerType,
895
919
  rowListenerType,
@@ -947,6 +971,14 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
947
971
  `a Row Id from the '${tableId}' Table, and a Cell iterator`,
948
972
  ),
949
973
  ),
974
+ // TableCellCallbackType
975
+ addType(
976
+ tableName + TABLE + CELL + CALLBACK,
977
+ tableCellCallbackType + tableIdGeneric,
978
+ getCallbackDoc(
979
+ `a Cell Id from anywhere in the '${tableId}' Table, and a count of how many times it appears`,
980
+ ),
981
+ ),
950
982
  ];
951
983
  mapSet(tablesTypes, tableId, tableTypes);
952
984
  addImport(1, moduleDefinition, ...tableTypes);
@@ -962,6 +994,7 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
962
994
  tablesListenerType,
963
995
  tableIdsListenerType,
964
996
  tableListenerType,
997
+ tableCellIdsListenerType,
965
998
  rowIdsListenerType,
966
999
  sortedRowIdsListenerType,
967
1000
  rowListenerType,
@@ -977,6 +1010,7 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
977
1010
  tablesListenerType,
978
1011
  tableIdsListenerType,
979
1012
  tableListenerType,
1013
+ tableCellIdsListenerType,
980
1014
  rowIdsListenerType,
981
1015
  sortedRowIdsListenerType,
982
1016
  rowListenerType,
@@ -1027,6 +1061,7 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
1027
1061
  cellIdType2,
1028
1062
  cellCallbackType2,
1029
1063
  rowCallbackType2,
1064
+ tableCellCallbackType2,
1030
1065
  ] = mapGet(tablesTypes, tableId);
1031
1066
  arrayForEach(
1032
1067
  [
@@ -1046,6 +1081,24 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
1046
1081
  TABLE_ID + paramsInCall,
1047
1082
  ),
1048
1083
  );
1084
+ addProxyMethod(
1085
+ 0,
1086
+ tableName,
1087
+ TABLE + CELL_IDS,
1088
+ IDS,
1089
+ getIdsDoc(CELL, 'the whole of ' + getTableDoc(tableId)),
1090
+ EMPTY_STRING,
1091
+ TABLE_ID,
1092
+ );
1093
+ addProxyMethod(
1094
+ 5,
1095
+ tableName,
1096
+ TABLE + CELL,
1097
+ VOID,
1098
+ getForEachDoc(TABLE + CELL, 'the whole of ' + getTableDoc(tableId)),
1099
+ 'tableCellCallback: ' + tableCellCallbackType2,
1100
+ TABLE_ID + ', tableCellCallback as any',
1101
+ );
1049
1102
  addProxyMethod(
1050
1103
  0,
1051
1104
  tableName,
@@ -1150,6 +1203,17 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
1150
1203
  TABLE_ID + ', rowId, ' + CELL_ID + paramsInCall,
1151
1204
  ),
1152
1205
  );
1206
+ addProxyMethod(
1207
+ 1,
1208
+ tableName + cellName,
1209
+ TABLE + CELL,
1210
+ BOOLEAN,
1211
+ VERBS[1] +
1212
+ ` the '${cellId}' Cell anywhere in ` +
1213
+ getTableDoc(tableId),
1214
+ EMPTY_STRING,
1215
+ TABLE_ID + ', ' + CELL_ID,
1216
+ );
1153
1217
  },
1154
1218
  );
1155
1219
  });
@@ -1182,6 +1246,13 @@ const getStoreCoreApi = (tablesSchema, valuesSchema, module) => {
1182
1246
  `tableId: ${tableIdType} | null`,
1183
1247
  'tableId',
1184
1248
  );
1249
+ addProxyListener(
1250
+ TABLE + CELL_IDS,
1251
+ tableCellIdsListenerType,
1252
+ getListenerDoc(14, 3, 1),
1253
+ `tableId: ${tableIdType} | null`,
1254
+ 'tableId',
1255
+ );
1185
1256
  addProxyListener(
1186
1257
  ROW_IDS,
1187
1258
  rowIdsListenerType,
@@ -1800,6 +1871,7 @@ const getStoreUiReactApi = (
1800
1871
  tablesListenerType,
1801
1872
  tableIdsListenerType,
1802
1873
  tableListenerType,
1874
+ tableCellIdsListenerType,
1803
1875
  rowIdsListenerType,
1804
1876
  sortedRowIdsListenerType,
1805
1877
  rowListenerType,
@@ -1816,6 +1888,7 @@ const getStoreUiReactApi = (
1816
1888
  tablesListenerType,
1817
1889
  tableIdsListenerType,
1818
1890
  tableListenerType,
1891
+ tableCellIdsListenerType,
1819
1892
  rowIdsListenerType,
1820
1893
  sortedRowIdsListenerType,
1821
1894
  rowListenerType,
@@ -2048,6 +2121,14 @@ const getStoreUiReactApi = (
2048
2121
  EMPTY_STRING,
2049
2122
  TABLE_ID,
2050
2123
  );
2124
+ addProxyHook(
2125
+ tableName + TABLE + CELL_IDS,
2126
+ TABLE + CELL_IDS,
2127
+ IDS,
2128
+ getIdsDoc(CELL, 'the whole of ' + getTableDoc(tableId)) + AND_REGISTERS,
2129
+ EMPTY_STRING,
2130
+ TABLE_ID,
2131
+ );
2051
2132
  const useRowIds = addProxyHook(
2052
2133
  tableName + ROW_IDS,
2053
2134
  ROW_IDS,
@@ -2321,6 +2402,17 @@ const getStoreUiReactApi = (
2321
2402
  ),
2322
2403
  getListenerHookParamsInCall('tableId'),
2323
2404
  );
2405
+ addProxyHook(
2406
+ TABLE + CELL_IDS + LISTENER,
2407
+ TABLE + CELL_IDS + LISTENER,
2408
+ VOID,
2409
+ getListenerDoc(14, 3, 1),
2410
+ getListenerHookParams(
2411
+ tableCellIdsListenerType,
2412
+ `tableId: ${tableIdType} | null`,
2413
+ ),
2414
+ getListenerHookParamsInCall('tableId'),
2415
+ );
2324
2416
  addProxyHook(
2325
2417
  ROW_IDS + LISTENER,
2326
2418
  ROW_IDS + LISTENER,
@@ -174,6 +174,13 @@ const useTableIds = (storeOrStoreId) =>
174
174
  useListenable(TABLE_IDS, useStoreOrStoreId(storeOrStoreId), [], []);
175
175
  const useTable = (tableId, storeOrStoreId) =>
176
176
  useListenable(TABLE, useStoreOrStoreId(storeOrStoreId), {}, [tableId]);
177
+ const useTableCellIds = (tableId, storeOrStoreId) =>
178
+ useListenable(
179
+ TABLE + CELL_IDS,
180
+ useStoreOrStoreId(storeOrStoreId),
181
+ [],
182
+ [tableId],
183
+ );
177
184
  const useRowIds = (tableId, storeOrStoreId) =>
178
185
  useListenable(ROW_IDS, useStoreOrStoreId(storeOrStoreId), [], [tableId]);
179
186
  const useSortedRowIds = (
@@ -435,6 +442,21 @@ const useTableListener = (
435
442
  [tableId],
436
443
  mutator,
437
444
  );
445
+ const useTableCellIdsListener = (
446
+ tableId,
447
+ listener,
448
+ listenerDeps,
449
+ mutator,
450
+ storeOrStoreId,
451
+ ) =>
452
+ useListener(
453
+ TABLE + CELL_IDS,
454
+ useStoreOrStoreId(storeOrStoreId),
455
+ listener,
456
+ listenerDeps,
457
+ [tableId],
458
+ mutator,
459
+ );
438
460
  const useRowIdsListener = (
439
461
  tableId,
440
462
  listener,
@@ -1479,6 +1501,8 @@ export {
1479
1501
  useSortedRowIdsListener,
1480
1502
  useStore,
1481
1503
  useTable,
1504
+ useTableCellIds,
1505
+ useTableCellIdsListener,
1482
1506
  useTableIds,
1483
1507
  useTableIdsListener,
1484
1508
  useTableListener,
package/lib/es6/store.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t="",l=e(t),n=e(!0),s=e(0),r=e(e),a="type",o="default",u="Ids",i="Table",c=i+"s",d=i+u,v="Row"+u,h="Cell",f=h+u,g="Value",T=g+"s",V=g+u,b=e=>t+e,S=(e,t)=>e.forEach(t),w=(e,t)=>e.map(t),R=e=>e.length,y=(e,t,l)=>e.slice(t,l),J=(e,...t)=>e.push(...t),m=e=>JSON.stringify(e,((e,t)=>{return p(t,Map)?(l=(e,[t,l])=>(e[t]=l,e),n={},[...t].reduce(l,n)):t;var l,n})),C=JSON.parse,I=isFinite,p=(e,t)=>e instanceof t,L=e=>null==e,E=(e,t,l)=>L(e)?null==l?void 0:l():t(e),F=e=>e==l||e==n,z=t=>e(t)==r,O=(e,t)=>{var l;return null!=(l=null==e?void 0:e.has(t))&&l},k=e=>L(e)||0==(e=>e.size)(e),A=e=>e.clear(),M=(e,t)=>null==e?void 0:e.forEach(t),N=(e,t)=>null==e?void 0:e.delete(t),P=e=>new Map(e),j=e=>{var t;return[...null!=(t=null==e?void 0:e.keys())?t:[]]},x=(e,t)=>null==e?void 0:e.get(t),D=(e,t)=>M(e,((e,l)=>t(l,e))),W=(e,t,l)=>L(l)?(N(e,t),e):null==e?void 0:e.set(t,l),$=(e,t,l)=>(O(e,t)||W(e,t,l()),x(e,t)),q=(e,t,l)=>{const n={},s=null!=t?t:e=>e;return M(e,((e,t)=>E(s(e),(e=>(null==l?void 0:l(e))?0:n[t]=e)))),n},B=(e,t)=>{const l=P(),n=null!=t?t:e=>e;return M(e,((e,t)=>l.set(t,n(e)))),l},G=e=>B(e,B),H=(e,t,l,n,s=0)=>E((l?$:x)(e,t[s],s>R(t)-2?l:P),(r=>{if(s>R(t)-2)return(null==n?void 0:n(r))&&W(e,t[s]),r;const a=H(r,t,l,n,s+1);return k(r)&&W(e,t[s]),a})),K=e=>new Set(Array.isArray(e)||L(e)?e:[e]),Q=(e,t)=>null==e?void 0:e.add(t),U=/^\d+$/,X=()=>{const e=[];let l=0;return[n=>{var s;return null!=(s=n?e.shift():null)?s:t+l++},t=>{U.test(t)&&R(e)<1e3&&J(e,t)}]},Y=Object,Z=Y.keys,_=Y.isFrozen,ee=Y.freeze,te=e=>p(e,Y)&&e.constructor==Y,le=(e,t)=>!L(((e,t)=>E(e,(e=>e[t])))(e,t)),ne=(e,t)=>delete e[t],se=(e,t)=>w(Y.entries(e),(([e,l])=>t(l,e))),re=e=>{return te(e)&&(t=Z(e),0==R(t));var t},ae=e=>[e,e],oe=()=>[P(),P()],ue=t=>{const l=e(t);return F(l)||l==s&&I(t)?l:void 0},ie=(e,t,l,n=W)=>(se(t,((t,n)=>l(e,n,t))),D(e,(l=>le(t,l)?0:n(e,l))),e),ce=(e,t,l)=>L(e)||!te(e)||re(e)||_(e)?(null==l||l(),!1):(se(e,((l,n)=>{t(l,n)||ne(e,n)})),!re(e)),de=(e,t,l)=>W(e,t,x(e,t)==-l?void 0:l),ve=()=>{let e,l,n,r,u=0;const I=P(),p=P(),U=P(),Y=P(),Z=P(),_=P(),te=P(),he=P(),fe=P(),ge=P(),Te=P(),Ve=P(),be=K(),Se=P(),we=P(),Re=P(),ye=oe(),Je=oe(),me=oe(),Ce=oe(),Ie=oe(),pe=oe(),Le=oe(),Ee=oe(),Fe=oe(),ze=oe(),Oe=oe(),ke=oe(),Ae=oe(),Me=P(),Ne=oe(),[Pe,je,xe,De]=(e=>{let l;const[n,s]=X(),r=P();return[(e,s,a,o=[],u=(()=>[]))=>{null!=l||(l=Ut);const i=n(1);return W(r,i,[e,s,a,o,u]),Q(H(s,null!=a?a:[t],K),i),i},(e,n,...s)=>S(((e,l=[t])=>{const n=[],s=(e,t)=>t==R(l)?J(n,e):null===l[t]?M(e,(e=>s(e,t+1))):S([l[t],null],(l=>s(x(e,l),t+1)));return s(e,0),n})(e,n),(e=>M(e,(e=>x(r,e)[0](l,...null!=n?n:[],...s))))),e=>E(x(r,e),(([,l,n])=>(H(l,null!=n?n:[t],void 0,(t=>(N(t,e),k(t)?1:0))),W(r,e),s(e),n))),e=>E(x(r,e),(([e,,t=[],n,s])=>{const r=(...a)=>{var o,u;const i=R(a);i==R(t)?e(l,...a,...s(a)):L(t[i])?S(null!=(u=null==(o=n[i])?void 0:o.call(n,...a))?u:[],(e=>r(...a,e))):r(...a,t[i])};r()}))]})(),We=e=>{if(!ce(e,((e,t)=>[a,o].includes(t))))return!1;const t=e[a];return!(!F(t)&&t!=s||(ue(e[o])!=t&&ne(e,o),0))},$e=(t,l)=>(!e||O(fe,l)||bt(l))&&ce(t,((e,t)=>qe(l,t,e)),(()=>bt(l))),qe=(e,t,l,n)=>ce(n?l:Ke(l,e,t),((n,s)=>E(Be(e,t,s,n),(e=>(l[s]=e,!0)),(()=>!1))),(()=>bt(e,t))),Be=(t,l,n,s)=>e?E(x(x(fe,t),n),(e=>ue(s)!=e[a]?bt(t,l,n,s,e[o]):s),(()=>bt(t,l,n,s))):L(ue(s))?bt(t,l,n,s):s,Ge=(e,t)=>ce(t?e:Qe(e),((t,l)=>E(He(l,t),(t=>(e[l]=t,!0)),(()=>!1))),(()=>St())),He=(e,t)=>l?E(x(Te,e),(l=>ue(t)!=l[a]?St(e,t,l[o]):t),(()=>St(e,t))):L(ue(t))?St(e,t):t,Ke=(e,t,l)=>(E(x(ge,t),(([n,s])=>{M(n,((t,l)=>{le(e,l)||(e[l]=t)})),M(s,(n=>{le(e,n)||bt(t,l,n)}))})),e),Qe=e=>(l&&(M(Ve,((t,l)=>{le(e,l)||(e[l]=t)})),M(be,(t=>{le(e,t)||St(t)}))),e),Ue=e=>ie(fe,e,((e,t,l)=>{const n=P(),s=K();ie($(fe,t,P),l,((e,t,l)=>{W(e,t,l),E(l[o],(e=>W(n,t,e)),(()=>Q(s,t)))})),W(ge,t,[n,s])}),((e,t)=>{W(fe,t),W(ge,t)})),Xe=e=>ie(Te,e,((e,t,l)=>{W(Te,t,l),E(l[o],(e=>W(Ve,t,e)),(()=>Q(be,t)))}),((e,t)=>{W(Te,t),W(Ve,t),N(be,t)})),Ye=e=>re(e)?$t():Pt(e),Ze=e=>ie(we,e,((e,t,l)=>_e(t,l)),((e,t)=>ut(t))),_e=(e,t)=>ie($(we,e,(()=>(vt(e,1),P()))),t,((t,l,n)=>et(e,t,l,n)),((t,l)=>it(e,t,l))),et=(e,t,l,n,s)=>ie($(t,l,(()=>(ht(e,l,1),P()))),n,((t,n,s)=>tt(e,l,t,n,s)),((n,r)=>ct(e,t,l,n,r,s))),tt=(e,t,l,n,s)=>{O(l,n)||ft(e,t,n,1);const r=x(l,n);s!==r&&(gt(e,t,n,r,s),W(l,n,s))},lt=(e,t,l,n,s)=>E(x(t,l),(t=>tt(e,l,t,n,s)),(()=>et(e,t,l,Ke({[n]:s},e,l)))),nt=e=>re(e)?qt():jt(e),st=e=>ie(Re,e,((e,t,l)=>rt(t,l)),((e,t)=>dt(t))),rt=(e,t)=>{O(Re,e)||Tt(e,1);const l=x(Re,e);t!==l&&(Vt(e,l,t),W(Re,e,t))},at=(e,t)=>{const[l]=$(Se,e,X),n=l(t);return O(x(we,e),n)?at(e,t):n},ot=e=>{var t;return null!=(t=x(we,e))?t:_e(e,{})},ut=e=>_e(e,{}),it=(e,t,l)=>{const[,n]=$(Se,e,X);n(l),et(e,t,l,{},!0)},ct=(e,t,l,n,s,r)=>{var a;const o=x(null==(a=x(ge,e))?void 0:a[0],s);if(!L(o)&&!r)return tt(e,l,n,s,o);const u=t=>{gt(e,l,t,x(n,t)),ft(e,l,t,-1),W(n,t)};L(o)?u(s):D(n,u),k(n)&&(ht(e,l,-1),k(W(t,l))&&(vt(e,-1),W(we,e),W(Se,e)))},dt=e=>{const t=x(Ve,e);if(!L(t))return rt(e,t);Vt(e,x(Re,e)),Tt(e,-1),W(Re,e)},vt=(e,t)=>de(I,e,t),ht=(e,t,l)=>de($(p,e,P),t,l),ft=(e,t,l,n)=>de($($(U,e,P),t,P),l,n),gt=(e,t,l,n,s)=>$($($(Y,e,P),t,P),l,(()=>[n,0]))[1]=s,Tt=(e,t)=>de(Z,e,t),Vt=(e,t,l)=>$(_,e,(()=>[t,0]))[1]=l,bt=(e,t,l,n,s)=>(J($($($(te,e,P),t,P),l,(()=>[])),n),s),St=(e,t,l)=>(J($(he,e,(()=>[])),t),l),wt=(e,t,l)=>E(x(x(x(Y,e),t),l),(([e,t])=>[!0,e,t]),(()=>[!1,...ae(kt(e,t,l))])),Rt=e=>E(x(_,e),(([e,t])=>[!0,e,t]),(()=>[!1,...ae(Nt(e))])),yt=e=>k(te)||k(Fe[e])?0:M(e?B(te,G):te,((t,l)=>M(t,((t,n)=>M(t,((t,s)=>je(Fe[e],[l,n,s],t))))))),Jt=e=>k(he)||k(ze[e])?0:M(e?B(he):he,((t,l)=>je(ze[e],[l],t))),mt=(e,t,l)=>{if(!k(t))return je(e,l),1},Ct=e=>{const t=k(Ie[e]),l=k(Le[e])&&k(Ce[e])&&t&&k(Je[e]),n=k(Ee[e])&&k(pe[e])&&k(me[e])&&k(ye[e]);if(!l||!n){const s=e?[B(I),G(p),B(U,G),B(Y,G)]:[I,p,U,Y];if(!l){M(s[2],((t,l)=>M(t,((t,n)=>mt(Le[e],t,[l,n])))));const l=K();M(s[1],((n,s)=>{mt(Ce[e],n,[s])&&!t&&(je(Ie[e],[s,null]),Q(l,s))})),t||M(s[3],((t,n)=>{if(!O(l,n)){const l=K();M(t,(e=>M(e,(([t,n],s)=>n!==t?Q(l,s):N(e,s))))),M(l,(t=>je(Ie[e],[n,t])))}})),mt(Je[e],s[0])}if(!n){let t;M(s[3],((l,n)=>{let s;M(l,((l,r)=>{let a;M(l,(([l,o],u)=>{o!==l&&(je(Ee[e],[n,r,u],o,l,wt),t=s=a=1)})),a&&je(pe[e],[n,r],wt)})),s&&je(me[e],[n],wt)})),t&&je(ye[e],void 0,wt)}}},It=e=>{const t=k(ke[e]),l=k(Ae[e])&&k(Oe[e]);if(!t||!l){const n=e?[B(Z),B(_)]:[Z,_];if(t||mt(ke[e],n[0]),!l){let t;M(n[1],(([l,n],s)=>{n!==l&&(je(Ae[e],[s],n,l,Rt),t=1)})),t&&je(Oe[e],void 0,Rt)}}},pt=(e,...t)=>(Ht((()=>e(...w(t,b)))),Ut),Lt=()=>q(we,(e=>q(e,q))),Et=()=>j(we),Ft=e=>j(x(we,b(e))),zt=(e,t,l,n=0,s)=>{return w(y((a=x(we,b(e)),o=(e,l)=>[L(t)?l:x(e,b(t)),l],r=([e],[t])=>(e<t?-1:1)*(l?-1:1),w([...null!=(u=null==a?void 0:a.entries())?u:[]],(([e,t])=>o(t,e))).sort(r)),n,L(s)?s:n+s),(([,e])=>e));var r,a,o,u},Ot=(e,t)=>j(x(x(we,b(e)),b(t))),kt=(e,t,l)=>x(x(x(we,b(e)),b(t)),b(l)),At=()=>q(Re),Mt=()=>j(Re),Nt=e=>x(Re,b(e)),Pt=e=>pt((()=>(e=>ce(e,$e,bt))(e)?Ze(e):0)),jt=e=>pt((()=>Ge(e)?st(e):0)),xt=e=>{try{Ye(C(e))}catch(e){}return Ut},Dt=t=>pt((()=>{if((e=ce(t,(e=>ce(e,We))))&&(Ue(t),!k(we))){const e=Lt();$t(),Pt(e)}})),Wt=e=>pt((()=>{if(l=(e=>ce(e,We))(e)){const t=At();Gt(),qt(),l=!0,Xe(e),jt(t)}})),$t=()=>pt((()=>Ze({}))),qt=()=>pt((()=>st({}))),Bt=()=>pt((()=>{Ue({}),e=!1})),Gt=()=>pt((()=>{Xe({}),l=!1})),Ht=(e,t)=>{if(-1!=u){Kt();const l=e();return Qt(t),l}},Kt=()=>(-1!=u&&u++,1==u&&je(Me,void 0,!1,!1),Ut),Qt=e=>(u>0&&(u--,0==u&&(n=!k(Y),r=!k(_),u=1,yt(1),n&&Ct(1),Jt(1),r&&It(1),(null==e?void 0:e(q(Y,(e=>q(e,(e=>q(e,(e=>[...e]),(([e,t])=>e===t))),re)),re),q(te,(e=>q(e,q))),q(_,(e=>[...e]),(([e,t])=>e===t)),q(he)))&&(M(Y,((e,t)=>M(e,((e,l)=>M(e,(([e],n)=>((e,t,l,n,s)=>L(s)?e.delCell(t,l,n,!0):e.setCell(t,l,n,s))(Ut,t,l,n,e))))))),M(_,(([e],t)=>((e,t,l)=>L(l)?e.delValue(t):e.setValue(t,l))(Ut,t,e))),n=r=!1),je(Ne[0],void 0,n,r),u=-1,yt(0),n&&Ct(0),Jt(0),r&&It(0),je(Ne[1],void 0,n,r),u=0,S([I,p,U,Y,te,Z,_,he],A))),Ut),Ut={getTables:Lt,getTableIds:Et,getTable:e=>q(x(we,b(e)),q),getRowIds:Ft,getSortedRowIds:zt,getRow:(e,t)=>q(x(x(we,b(e)),b(t))),getCellIds:Ot,getCell:kt,getValues:At,getValueIds:Mt,getValue:Nt,hasTables:()=>!k(we),hasTable:e=>O(we,b(e)),hasRow:(e,t)=>O(x(we,b(e)),b(t)),hasCell:(e,t,l)=>O(x(x(we,b(e)),b(t)),b(l)),hasValues:()=>!k(Re),hasValue:e=>O(Re,b(e)),getTablesJson:()=>m(we),getValuesJson:()=>m(Re),getJson:()=>m([we,Re]),getTablesSchemaJson:()=>m(fe),getValuesSchemaJson:()=>m(Te),getSchemaJson:()=>m([fe,Te]),setTables:Pt,setTable:(e,t)=>pt((e=>$e(t,e)?_e(e,t):0),e),setRow:(e,t,l)=>pt(((e,t)=>qe(e,t,l)?et(e,ot(e),t,l):0),e,t),addRow:(e,t,l=!0)=>Ht((()=>{let n;return qe(e,n,t)&&(e=b(e),et(e,ot(e),n=at(e,l?1:0),t)),n})),setPartialRow:(e,t,l)=>pt(((e,t)=>{if(qe(e,t,l,1)){const n=ot(e);se(l,((l,s)=>lt(e,n,t,s,l)))}}),e,t),setCell:(e,t,l,n)=>pt(((e,t,l)=>E(Be(e,t,l,z(n)?n(kt(e,t,l)):n),(n=>lt(e,ot(e),t,l,n)))),e,t,l),setValues:jt,setPartialValues:e=>pt((()=>Ge(e,1)?se(e,((e,t)=>rt(t,e))):0)),setValue:(e,t)=>pt((e=>E(He(e,z(t)?t(Nt(e)):t),(t=>rt(e,t)))),e),setTablesJson:xt,setValuesJson:e=>{try{nt(C(e))}catch(e){}return Ut},setJson:e=>{try{const[t,l]=C(e);Ye(t),nt(l)}catch(t){xt(e)}return Ut},setTablesSchema:Dt,setValuesSchema:Wt,setSchema:(e,t)=>pt((()=>{Dt(e),Wt(t)})),delTables:$t,delTable:e=>pt((e=>O(we,e)?ut(e):0),e),delRow:(e,t)=>pt(((e,t)=>E(x(we,e),(l=>O(l,t)?it(e,l,t):0))),e,t),delCell:(e,t,l,n)=>pt(((e,t,l)=>E(x(we,e),(s=>E(x(s,t),(r=>O(r,l)?ct(e,s,t,r,l,n):0))))),e,t,l),delValues:qt,delValue:e=>pt((e=>O(Re,e)?dt(e):0),e),delTablesSchema:Bt,delValuesSchema:Gt,delSchema:()=>pt((()=>{Bt(),Gt()})),transaction:Ht,startTransaction:Kt,finishTransaction:Qt,forEachTable:e=>M(we,((t,l)=>e(l,(e=>M(t,((t,l)=>e(l,(e=>D(t,e))))))))),forEachRow:(e,t)=>M(x(we,b(e)),((e,l)=>t(l,(t=>D(e,t))))),forEachCell:(e,t,l)=>D(x(x(we,b(e)),b(t)),l),forEachValue:e=>D(Re,e),addSortedRowIdsListener:(e,t,l,n,s,r,a)=>{let o=zt(e,t,l,n,s);return Pe((()=>{const a=zt(e,t,l,n,s);var u,i,c;i=o,R(u=a)===R(i)&&(c=(e,t)=>i[t]===e,u.every(c))||(o=a,r(Ut,e,t,l,n,s,o))}),Ie[a?1:0],[e,t],[Et])},addStartTransactionListener:e=>Pe(e,Me),addWillFinishTransactionListener:e=>Pe(e,Ne[0]),addDidFinishTransactionListener:e=>Pe(e,Ne[1]),callListener:e=>(De(e),Ut),delListener:e=>(xe(e),Ut),getListenerStats:()=>({}),createStore:ve};return se({[c]:[0,ye],[d]:[0,Je],[i]:[1,me,[Et]],[v]:[1,Ce,[Et]],Row:[2,pe,[Et,Ft]],[f]:[2,Le,[Et,Ft]],[h]:[3,Ee,[Et,Ft,Ot],e=>ae(kt(...e))],InvalidCell:[3,Fe],[T]:[0,Oe],[V]:[0,ke],[g]:[1,Ae,[Mt],e=>ae(Nt(e[0]))],InvalidValue:[1,ze]},(([e,t,l,n],s)=>{Ut["add"+s+"Listener"]=(...s)=>Pe(s[e],t[s[e+1]?1:0],e>0?y(s,0,e):void 0,l,n)})),ee(Ut)};export{ve as createStore};
1
+ const e=e=>typeof e,l="",t=e(l),n=e(!0),s=e(0),r=e(e),a="type",o="default",u="Ids",i="Table",c=i+"s",d=i+u,v="Row"+u,h="Cell",f=h+u,T="Value",g=T+"s",b=T+u,V=e=>l+e,S=(e,l)=>e.forEach(l),w=(e,l)=>e.map(l),C=e=>e.length,R=(e,l,t)=>e.slice(l,t),y=(e,...l)=>e.push(...l),J=e=>JSON.stringify(e,((e,l)=>{return p(l,Map)?(t=(e,[l,t])=>(e[l]=t,e),n={},[...l].reduce(t,n)):l;var t,n})),m=JSON.parse,I=isFinite,p=(e,l)=>e instanceof l,L=e=>null==e,E=(e,l,t)=>L(e)?null==t?void 0:t():l(e),F=e=>e==t||e==n,z=l=>e(l)==r,O=(e,l)=>{var t;return null!=(t=null==e?void 0:e.has(l))&&t},k=e=>L(e)||0==(e=>e.size)(e),A=e=>e.clear(),M=(e,l)=>null==e?void 0:e.forEach(l),N=(e,l)=>null==e?void 0:e.delete(l),P=e=>new Map(e),j=e=>{var l;return[...null!=(l=null==e?void 0:e.keys())?l:[]]},x=(e,l)=>null==e?void 0:e.get(l),D=(e,l)=>M(e,((e,t)=>l(t,e))),W=(e,l,t)=>L(t)?(N(e,l),e):null==e?void 0:e.set(l,t),$=(e,l,t)=>(O(e,l)||W(e,l,t()),x(e,l)),q=(e,l,t)=>{const n={},s=null!=l?l:e=>e;return M(e,((e,l)=>E(s(e),(e=>(null==t?void 0:t(e))?0:n[l]=e)))),n},B=(e,l)=>{const t=P(),n=null!=l?l:e=>e;return M(e,((e,l)=>t.set(l,n(e)))),t},G=e=>B(e,B),H=(e,l,t,n,s=0)=>E((t?$:x)(e,l[s],s>C(l)-2?t:P),(r=>{if(s>C(l)-2)return(null==n?void 0:n(r))&&W(e,l[s]),r;const a=H(r,l,t,n,s+1);return k(r)&&W(e,l[s]),a})),K=e=>new Set(Array.isArray(e)||L(e)?e:[e]),Q=(e,l)=>null==e?void 0:e.add(l),U=/^\d+$/,X=()=>{const e=[];let t=0;return[n=>{var s;return null!=(s=n?e.shift():null)?s:l+t++},l=>{U.test(l)&&C(e)<1e3&&y(e,l)}]},Y=Object,Z=Y.keys,_=Y.isFrozen,ee=Y.freeze,le=e=>p(e,Y)&&e.constructor==Y,te=(e,l)=>!L(((e,l)=>E(e,(e=>e[l])))(e,l)),ne=(e,l)=>delete e[l],se=(e,l)=>w(Y.entries(e),(([e,t])=>l(t,e))),re=e=>{return le(e)&&(l=Z(e),0==C(l));var l},ae=e=>[e,e],oe=()=>[P(),P()],ue=l=>{const t=e(l);return F(t)||t==s&&I(l)?t:void 0},ie=(e,l,t,n=W)=>(se(l,((l,n)=>t(e,n,l))),D(e,(t=>te(l,t)?0:n(e,t))),e),ce=(e,l,t)=>L(e)||!le(e)||re(e)||_(e)?(null==t||t(),!1):(se(e,((t,n)=>{l(t,n)||ne(e,n)})),!re(e)),de=(e,l,t)=>W(e,l,x(e,l)==-t?void 0:t),ve=()=>{let e,t,n,r,u=0;const I=P(),p=P(),U=P(),Y=P(),Z=P(),_=P(),le=P(),he=P(),fe=P(),Te=P(),ge=P(),be=P(),Ve=P(),Se=K(),we=P(),Ce=P(),Re=P(),ye=P(),Je=oe(),me=oe(),Ie=oe(),pe=oe(),Le=oe(),Ee=oe(),Fe=oe(),ze=oe(),Oe=oe(),ke=oe(),Ae=oe(),Me=oe(),Ne=oe(),Pe=oe(),je=P(),xe=oe(),[De,We,$e,qe]=(e=>{let t;const[n,s]=X(),r=P();return[(e,s,a,o=[],u=(()=>[]))=>{null!=t||(t=Zl);const i=n(1);return W(r,i,[e,s,a,o,u]),Q(H(s,null!=a?a:[l],K),i),i},(e,n,...s)=>S(((e,t=[l])=>{const n=[],s=(e,l)=>l==C(t)?y(n,e):null===t[l]?M(e,(e=>s(e,l+1))):S([t[l],null],(t=>s(x(e,t),l+1)));return s(e,0),n})(e,n),(e=>M(e,(e=>x(r,e)[0](t,...null!=n?n:[],...s))))),e=>E(x(r,e),(([,t,n])=>(H(t,null!=n?n:[l],void 0,(l=>(N(l,e),k(l)?1:0))),W(r,e),s(e),n))),e=>E(x(r,e),(([e,,l=[],n,s])=>{const r=(...a)=>{var o,u;const i=C(a);i==C(l)?e(t,...a,...s(a)):L(l[i])?S(null!=(u=null==(o=n[i])?void 0:o.call(n,...a))?u:[],(e=>r(...a,e))):r(...a,l[i])};r()}))]})(),Be=e=>{if(!ce(e,((e,l)=>[a,o].includes(l))))return!1;const l=e[a];return!(!F(l)&&l!=s||(ue(e[o])!=l&&ne(e,o),0))},Ge=(l,t)=>(!e||O(Te,t)||Cl(t))&&ce(l,((e,l)=>He(t,l,e)),(()=>Cl(t))),He=(e,l,t,n)=>ce(n?t:Xe(t,e,l),((n,s)=>E(Ke(e,l,s,n),(e=>(t[s]=e,!0)),(()=>!1))),(()=>Cl(e,l))),Ke=(l,t,n,s)=>e?E(x(x(Te,l),n),(e=>ue(s)!=e[a]?Cl(l,t,n,s,e[o]):s),(()=>Cl(l,t,n,s))):L(ue(s))?Cl(l,t,n,s):s,Qe=(e,l)=>ce(l?e:Ye(e),((l,t)=>E(Ue(t,l),(l=>(e[t]=l,!0)),(()=>!1))),(()=>Rl())),Ue=(e,l)=>t?E(x(be,e),(t=>ue(l)!=t[a]?Rl(e,l,t[o]):l),(()=>Rl(e,l))):L(ue(l))?Rl(e,l):l,Xe=(e,l,t)=>(E(x(ge,l),(([n,s])=>{M(n,((l,t)=>{te(e,t)||(e[t]=l)})),M(s,(n=>{te(e,n)||Cl(l,t,n)}))})),e),Ye=e=>(t&&(M(Ve,((l,t)=>{te(e,t)||(e[t]=l)})),M(Se,(l=>{te(e,l)||Rl(l)}))),e),Ze=e=>ie(Te,e,((e,l,t)=>{const n=P(),s=K();ie($(Te,l,P),t,((e,l,t)=>{W(e,l,t),E(t[o],(e=>W(n,l,e)),(()=>Q(s,l)))})),W(ge,l,[n,s])}),((e,l)=>{W(Te,l),W(ge,l)})),_e=e=>ie(be,e,((e,l,t)=>{W(be,l,t),E(t[o],(e=>W(Ve,l,e)),(()=>Q(Se,l)))}),((e,l)=>{W(be,l),W(Ve,l),N(Se,l)})),el=e=>re(e)?Gl():Dl(e),ll=e=>ie(Re,e,((e,l,t)=>tl(l,t)),((e,l)=>dl(l))),tl=(e,l)=>ie($(Re,e,(()=>(Tl(e,1),W(we,e,X()),W(Ce,e,P()),P()))),l,((l,t,n)=>nl(e,l,t,n)),((l,t)=>vl(e,l,t))),nl=(e,l,t,n,s)=>ie($(l,t,(()=>(gl(e,t,1),P()))),n,((l,n,s)=>sl(e,t,l,n,s)),((n,r)=>hl(e,l,t,n,r,s))),sl=(e,l,t,n,s)=>{O(t,n)||bl(e,l,n,1);const r=x(t,n);s!==r&&(Vl(e,l,n,r,s),W(t,n,s))},rl=(e,l,t,n,s)=>E(x(l,t),(l=>sl(e,t,l,n,s)),(()=>nl(e,l,t,Xe({[n]:s},e,t)))),al=e=>re(e)?Hl():Wl(e),ol=e=>ie(ye,e,((e,l,t)=>ul(l,t)),((e,l)=>fl(l))),ul=(e,l)=>{O(ye,e)||Sl(e,1);const t=x(ye,e);l!==t&&(wl(e,t,l),W(ye,e,l))},il=(e,l)=>{const[t]=x(we,e),n=t(l);return O(x(Re,e),n)?il(e,l):n},cl=e=>{var l;return null!=(l=x(Re,e))?l:tl(e,{})},dl=e=>tl(e,{}),vl=(e,l,t)=>{const[,n]=x(we,e);n(t),nl(e,l,t,{},!0)},hl=(e,l,t,n,s,r)=>{var a;const o=x(null==(a=x(ge,e))?void 0:a[0],s);if(!L(o)&&!r)return sl(e,t,n,s,o);const u=l=>{Vl(e,t,l,x(n,l)),bl(e,t,l,-1),W(n,l)};L(o)?u(s):D(n,u),k(n)&&(gl(e,t,-1),k(W(l,t))&&(Tl(e,-1),W(Re,e),W(we,e),W(Ce,e)))},fl=e=>{const l=x(Ve,e);if(!L(l))return ul(e,l);wl(e,x(ye,e)),Sl(e,-1),W(ye,e)},Tl=(e,l)=>de(I,e,l),gl=(e,l,t)=>de($(U,e,P),l,t),bl=(e,l,t,n)=>{var s;const r=x(Ce,e),a=null!=(s=x(r,t))?s:0;(0==a&&1==n||1==a&&-1==n)&&de($(p,e,P),t,n),W(r,t,a!=-n?a+n:null),de($($(Y,e,P),l,P),t,n)},Vl=(e,l,t,n,s)=>$($($(Z,e,P),l,P),t,(()=>[n,0]))[1]=s,Sl=(e,l)=>de(_,e,l),wl=(e,l,t)=>$(le,e,(()=>[l,0]))[1]=t,Cl=(e,l,t,n,s)=>(y($($($(he,e,P),l,P),t,(()=>[])),n),s),Rl=(e,l,t)=>(y($(fe,e,(()=>[])),l),t),yl=(e,l,t)=>E(x(x(x(Z,e),l),t),(([e,l])=>[!0,e,l]),(()=>[!1,...ae(Nl(e,l,t))])),Jl=e=>E(x(le,e),(([e,l])=>[!0,e,l]),(()=>[!1,...ae(xl(e))])),ml=e=>k(he)||k(ke[e])?0:M(e?B(he,G):he,((l,t)=>M(l,((l,n)=>M(l,((l,s)=>We(ke[e],[t,n,s],l))))))),Il=e=>k(fe)||k(Ae[e])?0:M(e?B(fe):fe,((l,t)=>We(Ae[e],[t],l))),pl=(e,l,t)=>{if(!k(l))return We(e,t,(()=>q(l))),1},Ll=e=>{const l=k(Ee[e]),t=k(ze[e])&&k(pe[e])&&k(Le[e])&&l&&k(me[e]),n=k(Oe[e])&&k(Fe[e])&&k(Ie[e])&&k(Je[e]);if(!t||!n){const s=e?[B(I),G(p),G(U),B(Y,G),B(Z,G)]:[I,p,U,Y,Z];if(!t){M(s[1],((l,t)=>pl(pe[e],l,[t]))),M(s[3],((l,t)=>M(l,((l,n)=>pl(ze[e],l,[t,n])))));const t=K();M(s[2],((n,s)=>{pl(Le[e],n,[s])&&!l&&(We(Ee[e],[s,null]),Q(t,s))})),l||M(s[4],((l,n)=>{if(!O(t,n)){const t=K();M(l,(e=>M(e,(([l,n],s)=>n!==l?Q(t,s):N(e,s))))),M(t,(l=>We(Ee[e],[n,l])))}})),pl(me[e],s[0])}if(!n){let l;M(s[4],((t,n)=>{let s;M(t,((t,r)=>{let a;M(t,(([t,o],u)=>{o!==t&&(We(Oe[e],[n,r,u],o,t,yl),l=s=a=1)})),a&&We(Fe[e],[n,r],yl)})),s&&We(Ie[e],[n],yl)})),l&&We(Je[e],void 0,yl)}}},El=e=>{const l=k(Ne[e]),t=k(Pe[e])&&k(Me[e]);if(!l||!t){const n=e?[B(_),B(le)]:[_,le];if(l||pl(Ne[e],n[0]),!t){let l;M(n[1],(([t,n],s)=>{n!==t&&(We(Pe[e],[s],n,t,Jl),l=1)})),l&&We(Me[e],void 0,Jl)}}},Fl=(e,...l)=>(Ul((()=>e(...w(l,V)))),Zl),zl=()=>q(Re,(e=>q(e,q))),Ol=()=>j(Re),kl=e=>j(x(Re,V(e))),Al=(e,l,t,n=0,s)=>{return w(R((a=x(Re,V(e)),o=(e,t)=>[L(l)?t:x(e,V(l)),t],r=([e],[l])=>(e<l?-1:1)*(t?-1:1),w([...null!=(u=null==a?void 0:a.entries())?u:[]],(([e,l])=>o(l,e))).sort(r)),n,L(s)?s:n+s),(([,e])=>e));var r,a,o,u},Ml=(e,l)=>j(x(x(Re,V(e)),V(l))),Nl=(e,l,t)=>x(x(x(Re,V(e)),V(l)),V(t)),Pl=()=>q(ye),jl=()=>j(ye),xl=e=>x(ye,V(e)),Dl=e=>Fl((()=>(e=>ce(e,Ge,Cl))(e)?ll(e):0)),Wl=e=>Fl((()=>Qe(e)?ol(e):0)),$l=e=>{try{el(m(e))}catch(e){}return Zl},ql=l=>Fl((()=>{if((e=ce(l,(e=>ce(e,Be))))&&(Ze(l),!k(Re))){const e=zl();Gl(),Dl(e)}})),Bl=e=>Fl((()=>{if(t=(e=>ce(e,Be))(e)){const l=Pl();Ql(),Hl(),t=!0,_e(e),Wl(l)}})),Gl=()=>Fl((()=>ll({}))),Hl=()=>Fl((()=>ol({}))),Kl=()=>Fl((()=>{Ze({}),e=!1})),Ql=()=>Fl((()=>{_e({}),t=!1})),Ul=(e,l)=>{if(-1!=u){Xl();const t=e();return Yl(l),t}},Xl=()=>(-1!=u&&u++,1==u&&We(je,void 0,!1,!1),Zl),Yl=e=>(u>0&&(u--,0==u&&(n=!k(Z),r=!k(le),u=1,ml(1),n&&Ll(1),Il(1),r&&El(1),(null==e?void 0:e(q(Z,(e=>q(e,(e=>q(e,(e=>[...e]),(([e,l])=>e===l))),re)),re),q(he,(e=>q(e,q))),q(le,(e=>[...e]),(([e,l])=>e===l)),q(fe)))&&(M(Z,((e,l)=>M(e,((e,t)=>M(e,(([e],n)=>((e,l,t,n,s)=>L(s)?e.delCell(l,t,n,!0):e.setCell(l,t,n,s))(Zl,l,t,n,e))))))),M(le,(([e],l)=>((e,l,t)=>L(t)?e.delValue(l):e.setValue(l,t))(Zl,l,e))),n=r=!1),We(xe[0],void 0,n,r),u=-1,ml(0),n&&Ll(0),Il(0),r&&El(0),We(xe[1],void 0,n,r),u=0,S([I,p,U,Y,Z,he,_,le,fe],A))),Zl),Zl={getTables:zl,getTableIds:Ol,getTable:e=>q(x(Re,V(e)),q),getTableCellIds:e=>j(x(Ce,V(e))),getRowIds:kl,getSortedRowIds:Al,getRow:(e,l)=>q(x(x(Re,V(e)),V(l))),getCellIds:Ml,getCell:Nl,getValues:Pl,getValueIds:jl,getValue:xl,hasTables:()=>!k(Re),hasTable:e=>O(Re,V(e)),hasTableCell:(e,l)=>O(x(Ce,V(e)),V(l)),hasRow:(e,l)=>O(x(Re,V(e)),V(l)),hasCell:(e,l,t)=>O(x(x(Re,V(e)),V(l)),V(t)),hasValues:()=>!k(ye),hasValue:e=>O(ye,V(e)),getTablesJson:()=>J(Re),getValuesJson:()=>J(ye),getJson:()=>J([Re,ye]),getTablesSchemaJson:()=>J(Te),getValuesSchemaJson:()=>J(be),getSchemaJson:()=>J([Te,be]),setTables:Dl,setTable:(e,l)=>Fl((e=>Ge(l,e)?tl(e,l):0),e),setRow:(e,l,t)=>Fl(((e,l)=>He(e,l,t)?nl(e,cl(e),l,t):0),e,l),addRow:(e,l,t=!0)=>Ul((()=>{let n;return He(e,n,l)&&(e=V(e),nl(e,cl(e),n=il(e,t?1:0),l)),n})),setPartialRow:(e,l,t)=>Fl(((e,l)=>{if(He(e,l,t,1)){const n=cl(e);se(t,((t,s)=>rl(e,n,l,s,t)))}}),e,l),setCell:(e,l,t,n)=>Fl(((e,l,t)=>E(Ke(e,l,t,z(n)?n(Nl(e,l,t)):n),(n=>rl(e,cl(e),l,t,n)))),e,l,t),setValues:Wl,setPartialValues:e=>Fl((()=>Qe(e,1)?se(e,((e,l)=>ul(l,e))):0)),setValue:(e,l)=>Fl((e=>E(Ue(e,z(l)?l(xl(e)):l),(l=>ul(e,l)))),e),setTablesJson:$l,setValuesJson:e=>{try{al(m(e))}catch(e){}return Zl},setJson:e=>{try{const[l,t]=m(e);el(l),al(t)}catch(l){$l(e)}return Zl},setTablesSchema:ql,setValuesSchema:Bl,setSchema:(e,l)=>Fl((()=>{ql(e),Bl(l)})),delTables:Gl,delTable:e=>Fl((e=>O(Re,e)?dl(e):0),e),delRow:(e,l)=>Fl(((e,l)=>E(x(Re,e),(t=>O(t,l)?vl(e,t,l):0))),e,l),delCell:(e,l,t,n)=>Fl(((e,l,t)=>E(x(Re,e),(s=>E(x(s,l),(r=>O(r,t)?hl(e,s,l,r,t,n):0))))),e,l,t),delValues:Hl,delValue:e=>Fl((e=>O(ye,e)?fl(e):0),e),delTablesSchema:Kl,delValuesSchema:Ql,delSchema:()=>Fl((()=>{Kl(),Ql()})),transaction:Ul,startTransaction:Xl,finishTransaction:Yl,forEachTable:e=>M(Re,((l,t)=>e(t,(e=>M(l,((l,t)=>e(t,(e=>D(l,e))))))))),forEachTableCell:(e,l)=>D(x(Ce,V(e)),l),forEachRow:(e,l)=>M(x(Re,V(e)),((e,t)=>l(t,(l=>D(e,l))))),forEachCell:(e,l,t)=>D(x(x(Re,V(e)),V(l)),t),forEachValue:e=>D(ye,e),addSortedRowIdsListener:(e,l,t,n,s,r,a)=>{let o=Al(e,l,t,n,s);return De((()=>{const a=Al(e,l,t,n,s);var u,i,c;i=o,C(u=a)===C(i)&&(c=(e,l)=>i[l]===e,u.every(c))||(o=a,r(Zl,e,l,t,n,s,o))}),Ee[a?1:0],[e,l],[Ol])},addStartTransactionListener:e=>De(e,je),addWillFinishTransactionListener:e=>De(e,xe[0]),addDidFinishTransactionListener:e=>De(e,xe[1]),callListener:e=>(qe(e),Zl),delListener:e=>($e(e),Zl),getListenerStats:()=>({}),createStore:ve};return se({[c]:[0,Je],[d]:[0,me],[i]:[1,Ie,[Ol]],[i+f]:[1,pe,[Ol]],[v]:[1,Le,[Ol]],Row:[2,Fe,[Ol,kl]],[f]:[2,ze,[Ol,kl]],[h]:[3,Oe,[Ol,kl,Ml],e=>ae(Nl(...e))],InvalidCell:[3,ke],[g]:[0,Me],[b]:[0,Ne],[T]:[1,Pe,[jl],e=>ae(xl(e[0]))],InvalidValue:[1,Ae]},(([e,l,t,n],s)=>{Zl["add"+s+"Listener"]=(...s)=>De(s[e],l[s[e+1]?1:0],e>0?R(s,0,e):void 0,t,n)})),ee(Zl)};export{ve as createStore};
Binary file