tinybase 4.3.23 → 4.4.0-beta.1

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 (41) 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/ui-react-dom-debug.cjs +1 -1
  6. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  7. package/lib/cjs-es6/store.cjs +1 -1
  8. package/lib/cjs-es6/store.cjs.gz +0 -0
  9. package/lib/cjs-es6/tinybase.cjs +1 -1
  10. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  11. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  12. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  13. package/lib/debug/store.js +112 -25
  14. package/lib/debug/tinybase.js +112 -25
  15. package/lib/debug/ui-react-dom.js +112 -25
  16. package/lib/es6/store.js +1 -1
  17. package/lib/es6/store.js.gz +0 -0
  18. package/lib/es6/tinybase.js +1 -1
  19. package/lib/es6/tinybase.js.gz +0 -0
  20. package/lib/es6/ui-react-dom-debug.js +1 -1
  21. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  22. package/lib/store.js +1 -1
  23. package/lib/store.js.gz +0 -0
  24. package/lib/tinybase.js +1 -1
  25. package/lib/tinybase.js.gz +0 -0
  26. package/lib/types/store.d.ts +911 -31
  27. package/lib/types/with-schemas/store.d.ts +1179 -35
  28. package/lib/umd/store.js +1 -1
  29. package/lib/umd/store.js.gz +0 -0
  30. package/lib/umd/tinybase.js +1 -1
  31. package/lib/umd/tinybase.js.gz +0 -0
  32. package/lib/umd/ui-react-dom-debug.js +1 -1
  33. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  34. package/lib/umd-es6/store.js +1 -1
  35. package/lib/umd-es6/store.js.gz +0 -0
  36. package/lib/umd-es6/tinybase.js +1 -1
  37. package/lib/umd-es6/tinybase.js.gz +0 -0
  38. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  39. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  40. package/package.json +4 -4
  41. package/readme.md +13 -13
@@ -27,6 +27,7 @@ const CELL_IDS = CELL + IDS;
27
27
  const VALUE = 'Value';
28
28
  const VALUES = VALUE + 's';
29
29
  const VALUE_IDS = VALUE + IDS;
30
+ const HAS = 'Has';
30
31
  const id = (key) => EMPTY_STRING + key;
31
32
 
32
33
  const mathMax = Math.max;
@@ -1876,6 +1877,8 @@ const createStore = () => {
1876
1877
  let hasValuesSchema;
1877
1878
  let cellsTouched = false;
1878
1879
  let valuesTouched = false;
1880
+ let hadTables = false;
1881
+ let hadValues = false;
1879
1882
  let transactions = 0;
1880
1883
  const changedTableIds = mapNew();
1881
1884
  const changedTableCellIds = mapNew();
@@ -1896,20 +1899,27 @@ const createStore = () => {
1896
1899
  const tableCellIds = mapNew();
1897
1900
  const tablesMap = mapNew();
1898
1901
  const valuesMap = mapNew();
1902
+ const hasTablesListeners = pairNewMap();
1899
1903
  const tablesListeners = pairNewMap();
1900
1904
  const tableIdsListeners = pairNewMap();
1905
+ const hasTableListeners = pairNewMap();
1901
1906
  const tableListeners = pairNewMap();
1902
1907
  const tableCellIdsListeners = pairNewMap();
1908
+ const hasTableCellListeners = pairNewMap();
1903
1909
  const rowCountListeners = pairNewMap();
1904
1910
  const rowIdsListeners = pairNewMap();
1905
1911
  const sortedRowIdsListeners = pairNewMap();
1912
+ const hasRowListeners = pairNewMap();
1906
1913
  const rowListeners = pairNewMap();
1907
1914
  const cellIdsListeners = pairNewMap();
1915
+ const hasCellListeners = pairNewMap();
1908
1916
  const cellListeners = pairNewMap();
1909
1917
  const invalidCellListeners = pairNewMap();
1910
1918
  const invalidValueListeners = pairNewMap();
1919
+ const hasValuesListeners = pairNewMap();
1911
1920
  const valuesListeners = pairNewMap();
1912
1921
  const valueIdsListeners = pairNewMap();
1922
+ const hasValueListeners = pairNewMap();
1913
1923
  const valueListeners = pairNewMap();
1914
1924
  const startTransactionListeners = mapNew();
1915
1925
  const finishTransactionListeners = pairNewMap();
@@ -2304,29 +2314,45 @@ const createStore = () => {
2304
2314
  ),
2305
2315
  )
2306
2316
  : 0;
2307
- const callIdsListenersIfChanged = (listeners, changedIds, ids) => {
2317
+ const callIdsAndHasListenersIfChanged = (
2318
+ changedIds,
2319
+ idListeners,
2320
+ hasListeners,
2321
+ ids,
2322
+ ) => {
2308
2323
  if (!collIsEmpty(changedIds)) {
2309
- callListeners(listeners, ids, () => mapToObj(changedIds));
2324
+ callListeners(idListeners, ids, () => mapToObj(changedIds));
2325
+ mapForEach(changedIds, (changedId, changed) =>
2326
+ callListeners(hasListeners, [...(ids ?? []), changedId], changed == 1),
2327
+ );
2310
2328
  return 1;
2311
2329
  }
2312
2330
  };
2313
2331
  const callTabularListenersForChanges = (mutator) => {
2332
+ const hasTablesNow = hasTables();
2333
+ if (hasTablesNow != hadTables) {
2334
+ callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
2335
+ }
2314
2336
  const emptySortedRowIdListeners = collIsEmpty(
2315
2337
  sortedRowIdsListeners[mutator],
2316
2338
  );
2317
- const emptyIdListeners =
2339
+ const emptyIdAndHasListeners =
2318
2340
  collIsEmpty(cellIdsListeners[mutator]) &&
2341
+ collIsEmpty(hasCellListeners[mutator]) &&
2342
+ collIsEmpty(rowIdsListeners[mutator]) &&
2343
+ collIsEmpty(hasRowListeners[mutator]) &&
2319
2344
  collIsEmpty(tableCellIdsListeners[mutator]) &&
2345
+ collIsEmpty(hasTableCellListeners[mutator]) &&
2320
2346
  collIsEmpty(rowCountListeners[mutator]) &&
2321
- collIsEmpty(rowIdsListeners[mutator]) &&
2322
2347
  emptySortedRowIdListeners &&
2323
- collIsEmpty(tableIdsListeners[mutator]);
2348
+ collIsEmpty(tableIdsListeners[mutator]) &&
2349
+ collIsEmpty(hasTableListeners[mutator]);
2324
2350
  const emptyOtherListeners =
2325
2351
  collIsEmpty(cellListeners[mutator]) &&
2326
2352
  collIsEmpty(rowListeners[mutator]) &&
2327
2353
  collIsEmpty(tableListeners[mutator]) &&
2328
2354
  collIsEmpty(tablesListeners[mutator]);
2329
- if (!emptyIdListeners || !emptyOtherListeners) {
2355
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2330
2356
  const changes = mutator
2331
2357
  ? [
2332
2358
  mapClone(changedTableIds),
@@ -2344,12 +2370,17 @@ const createStore = () => {
2344
2370
  changedCellIds,
2345
2371
  changedCells,
2346
2372
  ];
2347
- if (!emptyIdListeners) {
2348
- callIdsListenersIfChanged(tableIdsListeners[mutator], changes[0]);
2373
+ if (!emptyIdAndHasListeners) {
2374
+ callIdsAndHasListenersIfChanged(
2375
+ changes[0],
2376
+ tableIdsListeners[mutator],
2377
+ hasTableListeners[mutator],
2378
+ );
2349
2379
  collForEach(changes[1], (changedIds, tableId) =>
2350
- callIdsListenersIfChanged(
2351
- tableCellIdsListeners[mutator],
2380
+ callIdsAndHasListenersIfChanged(
2352
2381
  changedIds,
2382
+ tableCellIdsListeners[mutator],
2383
+ hasTableCellListeners[mutator],
2353
2384
  [tableId],
2354
2385
  ),
2355
2386
  );
@@ -2365,9 +2396,12 @@ const createStore = () => {
2365
2396
  const calledSortableTableIds = setNew();
2366
2397
  collForEach(changes[3], (changedIds, tableId) => {
2367
2398
  if (
2368
- callIdsListenersIfChanged(rowIdsListeners[mutator], changedIds, [
2369
- tableId,
2370
- ]) &&
2399
+ callIdsAndHasListenersIfChanged(
2400
+ changedIds,
2401
+ rowIdsListeners[mutator],
2402
+ hasRowListeners[mutator],
2403
+ [tableId],
2404
+ ) &&
2371
2405
  !emptySortedRowIdListeners
2372
2406
  ) {
2373
2407
  callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
@@ -2396,10 +2430,12 @@ const createStore = () => {
2396
2430
  }
2397
2431
  collForEach(changes[4], (rowCellIds, tableId) =>
2398
2432
  collForEach(rowCellIds, (changedIds, rowId) =>
2399
- callIdsListenersIfChanged(cellIdsListeners[mutator], changedIds, [
2400
- tableId,
2401
- rowId,
2402
- ]),
2433
+ callIdsAndHasListenersIfChanged(
2434
+ changedIds,
2435
+ cellIdsListeners[mutator],
2436
+ hasCellListeners[mutator],
2437
+ [tableId, rowId],
2438
+ ),
2403
2439
  ),
2404
2440
  );
2405
2441
  }
@@ -2439,17 +2475,27 @@ const createStore = () => {
2439
2475
  }
2440
2476
  }
2441
2477
  };
2442
- const callKeyedValuesListenersForChanges = (mutator) => {
2443
- const emptyIdListeners = collIsEmpty(valueIdsListeners[mutator]);
2478
+ const callValuesListenersForChanges = (mutator) => {
2479
+ const hasValuesNow = hasValues();
2480
+ if (hasValuesNow != hadValues) {
2481
+ callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
2482
+ }
2483
+ const emptyIdAndHasListeners =
2484
+ collIsEmpty(valueIdsListeners[mutator]) &&
2485
+ collIsEmpty(hasValueListeners[mutator]);
2444
2486
  const emptyOtherListeners =
2445
2487
  collIsEmpty(valueListeners[mutator]) &&
2446
2488
  collIsEmpty(valuesListeners[mutator]);
2447
- if (!emptyIdListeners || !emptyOtherListeners) {
2489
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2448
2490
  const changes = mutator
2449
2491
  ? [mapClone(changedValueIds), mapClone(changedValues)]
2450
2492
  : [changedValueIds, changedValues];
2451
- if (!emptyIdListeners) {
2452
- callIdsListenersIfChanged(valueIdsListeners[mutator], changes[0]);
2493
+ if (!emptyIdAndHasListeners) {
2494
+ callIdsAndHasListenersIfChanged(
2495
+ changes[0],
2496
+ valueIdsListeners[mutator],
2497
+ hasValueListeners[mutator],
2498
+ );
2453
2499
  }
2454
2500
  if (!emptyOtherListeners) {
2455
2501
  let valuesChanged;
@@ -2822,7 +2868,7 @@ const createStore = () => {
2822
2868
  }
2823
2869
  callInvalidValueListeners(1);
2824
2870
  if (valuesTouched) {
2825
- callKeyedValuesListenersForChanges(1);
2871
+ callValuesListenersForChanges(1);
2826
2872
  }
2827
2873
  if (doRollback?.(getTransactionChanges, getTransactionLog)) {
2828
2874
  collForEach(changedCells, (table, tableId) =>
@@ -2850,7 +2896,7 @@ const createStore = () => {
2850
2896
  }
2851
2897
  callInvalidValueListeners(0);
2852
2898
  if (valuesTouched) {
2853
- callKeyedValuesListenersForChanges(0);
2899
+ callValuesListenersForChanges(0);
2854
2900
  }
2855
2901
  callListeners(
2856
2902
  finishTransactionListeners[1],
@@ -2860,6 +2906,8 @@ const createStore = () => {
2860
2906
  );
2861
2907
  transactions = 0;
2862
2908
  cellsTouched = valuesTouched = false;
2909
+ hadTables = hasTables();
2910
+ hadValues = hasValues();
2863
2911
  arrayForEach(
2864
2912
  [
2865
2913
  changedTableIds,
@@ -2956,19 +3004,26 @@ const createStore = () => {
2956
3004
  return store;
2957
3005
  };
2958
3006
  const getListenerStats = () => ({
3007
+ hasTables: pairCollSize2(hasTablesListeners),
2959
3008
  tables: pairCollSize2(tablesListeners),
2960
3009
  tableIds: pairCollSize2(tableIdsListeners),
2961
- tableCellIds: pairCollSize2(tableCellIdsListeners),
3010
+ hasTable: pairCollSize2(hasTableListeners),
2962
3011
  table: pairCollSize2(tableListeners),
3012
+ tableCellIds: pairCollSize2(tableCellIdsListeners),
3013
+ hasTableCell: pairCollSize2(hasTableCellListeners, collSize3),
2963
3014
  rowCount: pairCollSize2(rowCountListeners),
2964
3015
  rowIds: pairCollSize2(rowIdsListeners),
2965
3016
  sortedRowIds: pairCollSize2(sortedRowIdsListeners),
3017
+ hasRow: pairCollSize2(hasRowListeners, collSize3),
2966
3018
  row: pairCollSize2(rowListeners, collSize3),
2967
3019
  cellIds: pairCollSize2(cellIdsListeners, collSize3),
3020
+ hasCell: pairCollSize2(hasCellListeners, collSize4),
2968
3021
  cell: pairCollSize2(cellListeners, collSize4),
2969
3022
  invalidCell: pairCollSize2(invalidCellListeners, collSize4),
3023
+ hasValues: pairCollSize2(hasValuesListeners),
2970
3024
  values: pairCollSize2(valuesListeners),
2971
3025
  valueIds: pairCollSize2(valueIdsListeners),
3026
+ hasValue: pairCollSize2(hasValueListeners),
2972
3027
  value: pairCollSize2(valueListeners),
2973
3028
  invalidValue: pairCollSize2(invalidValueListeners),
2974
3029
  transaction:
@@ -3053,14 +3108,39 @@ const createStore = () => {
3053
3108
  };
3054
3109
  objMap(
3055
3110
  {
3111
+ [HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
3056
3112
  [TABLES]: [0, tablesListeners],
3057
3113
  [TABLE_IDS]: [0, tableIdsListeners],
3114
+ [HAS + TABLE]: [
3115
+ 1,
3116
+ hasTableListeners,
3117
+ [getTableIds],
3118
+ (ids) => [hasTable(...ids)],
3119
+ ],
3058
3120
  [TABLE]: [1, tableListeners, [getTableIds]],
3059
3121
  [TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],
3122
+ [HAS + TABLE + CELL]: [
3123
+ 2,
3124
+ hasTableCellListeners,
3125
+ [getTableIds, getTableCellIds],
3126
+ (ids) => [hasTableCell(...ids)],
3127
+ ],
3060
3128
  [ROW_COUNT]: [1, rowCountListeners, [getTableIds]],
3061
3129
  [ROW_IDS]: [1, rowIdsListeners, [getTableIds]],
3130
+ [HAS + ROW]: [
3131
+ 2,
3132
+ hasRowListeners,
3133
+ [getTableIds, getRowIds],
3134
+ (ids) => [hasRow(...ids)],
3135
+ ],
3062
3136
  [ROW]: [2, rowListeners, [getTableIds, getRowIds]],
3063
3137
  [CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],
3138
+ [HAS + CELL]: [
3139
+ 3,
3140
+ hasCellListeners,
3141
+ [getTableIds, getRowIds, getCellIds],
3142
+ (ids) => [hasCell(...ids)],
3143
+ ],
3064
3144
  [CELL]: [
3065
3145
  3,
3066
3146
  cellListeners,
@@ -3068,8 +3148,15 @@ const createStore = () => {
3068
3148
  (ids) => pairNew(getCell(...ids)),
3069
3149
  ],
3070
3150
  InvalidCell: [3, invalidCellListeners],
3151
+ [HAS + VALUES]: [0, hasValuesListeners, [], () => [hasValues()]],
3071
3152
  [VALUES]: [0, valuesListeners],
3072
3153
  [VALUE_IDS]: [0, valueIdsListeners],
3154
+ [HAS + VALUE]: [
3155
+ 1,
3156
+ hasValueListeners,
3157
+ [getValueIds],
3158
+ (ids) => [hasValue(...ids)],
3159
+ ],
3073
3160
  [VALUE]: [
3074
3161
  1,
3075
3162
  valueListeners,
@@ -65,6 +65,7 @@ const CELL_IDS = CELL + IDS;
65
65
  const VALUE = 'Value';
66
66
  const VALUES = VALUE + 's';
67
67
  const VALUE_IDS = VALUE + IDS;
68
+ const HAS = 'Has';
68
69
  const CURRENT_TARGET = 'currentTarget';
69
70
  const _VALUE = 'value';
70
71
  const id = (key) => EMPTY_STRING + key;
@@ -1891,6 +1892,8 @@ const createStore = () => {
1891
1892
  let hasValuesSchema;
1892
1893
  let cellsTouched = false;
1893
1894
  let valuesTouched = false;
1895
+ let hadTables = false;
1896
+ let hadValues = false;
1894
1897
  let transactions = 0;
1895
1898
  const changedTableIds = mapNew();
1896
1899
  const changedTableCellIds = mapNew();
@@ -1911,20 +1914,27 @@ const createStore = () => {
1911
1914
  const tableCellIds = mapNew();
1912
1915
  const tablesMap = mapNew();
1913
1916
  const valuesMap = mapNew();
1917
+ const hasTablesListeners = pairNewMap();
1914
1918
  const tablesListeners = pairNewMap();
1915
1919
  const tableIdsListeners = pairNewMap();
1920
+ const hasTableListeners = pairNewMap();
1916
1921
  const tableListeners = pairNewMap();
1917
1922
  const tableCellIdsListeners = pairNewMap();
1923
+ const hasTableCellListeners = pairNewMap();
1918
1924
  const rowCountListeners = pairNewMap();
1919
1925
  const rowIdsListeners = pairNewMap();
1920
1926
  const sortedRowIdsListeners = pairNewMap();
1927
+ const hasRowListeners = pairNewMap();
1921
1928
  const rowListeners = pairNewMap();
1922
1929
  const cellIdsListeners = pairNewMap();
1930
+ const hasCellListeners = pairNewMap();
1923
1931
  const cellListeners = pairNewMap();
1924
1932
  const invalidCellListeners = pairNewMap();
1925
1933
  const invalidValueListeners = pairNewMap();
1934
+ const hasValuesListeners = pairNewMap();
1926
1935
  const valuesListeners = pairNewMap();
1927
1936
  const valueIdsListeners = pairNewMap();
1937
+ const hasValueListeners = pairNewMap();
1928
1938
  const valueListeners = pairNewMap();
1929
1939
  const startTransactionListeners = mapNew();
1930
1940
  const finishTransactionListeners = pairNewMap();
@@ -2319,29 +2329,45 @@ const createStore = () => {
2319
2329
  ),
2320
2330
  )
2321
2331
  : 0;
2322
- const callIdsListenersIfChanged = (listeners, changedIds, ids) => {
2332
+ const callIdsAndHasListenersIfChanged = (
2333
+ changedIds,
2334
+ idListeners,
2335
+ hasListeners,
2336
+ ids,
2337
+ ) => {
2323
2338
  if (!collIsEmpty(changedIds)) {
2324
- callListeners(listeners, ids, () => mapToObj(changedIds));
2339
+ callListeners(idListeners, ids, () => mapToObj(changedIds));
2340
+ mapForEach(changedIds, (changedId, changed) =>
2341
+ callListeners(hasListeners, [...(ids ?? []), changedId], changed == 1),
2342
+ );
2325
2343
  return 1;
2326
2344
  }
2327
2345
  };
2328
2346
  const callTabularListenersForChanges = (mutator) => {
2347
+ const hasTablesNow = hasTables();
2348
+ if (hasTablesNow != hadTables) {
2349
+ callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
2350
+ }
2329
2351
  const emptySortedRowIdListeners = collIsEmpty(
2330
2352
  sortedRowIdsListeners[mutator],
2331
2353
  );
2332
- const emptyIdListeners =
2354
+ const emptyIdAndHasListeners =
2333
2355
  collIsEmpty(cellIdsListeners[mutator]) &&
2356
+ collIsEmpty(hasCellListeners[mutator]) &&
2357
+ collIsEmpty(rowIdsListeners[mutator]) &&
2358
+ collIsEmpty(hasRowListeners[mutator]) &&
2334
2359
  collIsEmpty(tableCellIdsListeners[mutator]) &&
2360
+ collIsEmpty(hasTableCellListeners[mutator]) &&
2335
2361
  collIsEmpty(rowCountListeners[mutator]) &&
2336
- collIsEmpty(rowIdsListeners[mutator]) &&
2337
2362
  emptySortedRowIdListeners &&
2338
- collIsEmpty(tableIdsListeners[mutator]);
2363
+ collIsEmpty(tableIdsListeners[mutator]) &&
2364
+ collIsEmpty(hasTableListeners[mutator]);
2339
2365
  const emptyOtherListeners =
2340
2366
  collIsEmpty(cellListeners[mutator]) &&
2341
2367
  collIsEmpty(rowListeners[mutator]) &&
2342
2368
  collIsEmpty(tableListeners[mutator]) &&
2343
2369
  collIsEmpty(tablesListeners[mutator]);
2344
- if (!emptyIdListeners || !emptyOtherListeners) {
2370
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2345
2371
  const changes = mutator
2346
2372
  ? [
2347
2373
  mapClone(changedTableIds),
@@ -2359,12 +2385,17 @@ const createStore = () => {
2359
2385
  changedCellIds,
2360
2386
  changedCells,
2361
2387
  ];
2362
- if (!emptyIdListeners) {
2363
- callIdsListenersIfChanged(tableIdsListeners[mutator], changes[0]);
2388
+ if (!emptyIdAndHasListeners) {
2389
+ callIdsAndHasListenersIfChanged(
2390
+ changes[0],
2391
+ tableIdsListeners[mutator],
2392
+ hasTableListeners[mutator],
2393
+ );
2364
2394
  collForEach(changes[1], (changedIds, tableId) =>
2365
- callIdsListenersIfChanged(
2366
- tableCellIdsListeners[mutator],
2395
+ callIdsAndHasListenersIfChanged(
2367
2396
  changedIds,
2397
+ tableCellIdsListeners[mutator],
2398
+ hasTableCellListeners[mutator],
2368
2399
  [tableId],
2369
2400
  ),
2370
2401
  );
@@ -2380,9 +2411,12 @@ const createStore = () => {
2380
2411
  const calledSortableTableIds = setNew();
2381
2412
  collForEach(changes[3], (changedIds, tableId) => {
2382
2413
  if (
2383
- callIdsListenersIfChanged(rowIdsListeners[mutator], changedIds, [
2384
- tableId,
2385
- ]) &&
2414
+ callIdsAndHasListenersIfChanged(
2415
+ changedIds,
2416
+ rowIdsListeners[mutator],
2417
+ hasRowListeners[mutator],
2418
+ [tableId],
2419
+ ) &&
2386
2420
  !emptySortedRowIdListeners
2387
2421
  ) {
2388
2422
  callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
@@ -2411,10 +2445,12 @@ const createStore = () => {
2411
2445
  }
2412
2446
  collForEach(changes[4], (rowCellIds, tableId) =>
2413
2447
  collForEach(rowCellIds, (changedIds, rowId) =>
2414
- callIdsListenersIfChanged(cellIdsListeners[mutator], changedIds, [
2415
- tableId,
2416
- rowId,
2417
- ]),
2448
+ callIdsAndHasListenersIfChanged(
2449
+ changedIds,
2450
+ cellIdsListeners[mutator],
2451
+ hasCellListeners[mutator],
2452
+ [tableId, rowId],
2453
+ ),
2418
2454
  ),
2419
2455
  );
2420
2456
  }
@@ -2454,17 +2490,27 @@ const createStore = () => {
2454
2490
  }
2455
2491
  }
2456
2492
  };
2457
- const callKeyedValuesListenersForChanges = (mutator) => {
2458
- const emptyIdListeners = collIsEmpty(valueIdsListeners[mutator]);
2493
+ const callValuesListenersForChanges = (mutator) => {
2494
+ const hasValuesNow = hasValues();
2495
+ if (hasValuesNow != hadValues) {
2496
+ callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
2497
+ }
2498
+ const emptyIdAndHasListeners =
2499
+ collIsEmpty(valueIdsListeners[mutator]) &&
2500
+ collIsEmpty(hasValueListeners[mutator]);
2459
2501
  const emptyOtherListeners =
2460
2502
  collIsEmpty(valueListeners[mutator]) &&
2461
2503
  collIsEmpty(valuesListeners[mutator]);
2462
- if (!emptyIdListeners || !emptyOtherListeners) {
2504
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2463
2505
  const changes = mutator
2464
2506
  ? [mapClone(changedValueIds), mapClone(changedValues)]
2465
2507
  : [changedValueIds, changedValues];
2466
- if (!emptyIdListeners) {
2467
- callIdsListenersIfChanged(valueIdsListeners[mutator], changes[0]);
2508
+ if (!emptyIdAndHasListeners) {
2509
+ callIdsAndHasListenersIfChanged(
2510
+ changes[0],
2511
+ valueIdsListeners[mutator],
2512
+ hasValueListeners[mutator],
2513
+ );
2468
2514
  }
2469
2515
  if (!emptyOtherListeners) {
2470
2516
  let valuesChanged;
@@ -2837,7 +2883,7 @@ const createStore = () => {
2837
2883
  }
2838
2884
  callInvalidValueListeners(1);
2839
2885
  if (valuesTouched) {
2840
- callKeyedValuesListenersForChanges(1);
2886
+ callValuesListenersForChanges(1);
2841
2887
  }
2842
2888
  if (doRollback?.(getTransactionChanges, getTransactionLog)) {
2843
2889
  collForEach(changedCells, (table, tableId) =>
@@ -2865,7 +2911,7 @@ const createStore = () => {
2865
2911
  }
2866
2912
  callInvalidValueListeners(0);
2867
2913
  if (valuesTouched) {
2868
- callKeyedValuesListenersForChanges(0);
2914
+ callValuesListenersForChanges(0);
2869
2915
  }
2870
2916
  callListeners(
2871
2917
  finishTransactionListeners[1],
@@ -2875,6 +2921,8 @@ const createStore = () => {
2875
2921
  );
2876
2922
  transactions = 0;
2877
2923
  cellsTouched = valuesTouched = false;
2924
+ hadTables = hasTables();
2925
+ hadValues = hasValues();
2878
2926
  arrayForEach(
2879
2927
  [
2880
2928
  changedTableIds,
@@ -2971,19 +3019,26 @@ const createStore = () => {
2971
3019
  return store;
2972
3020
  };
2973
3021
  const getListenerStats = () => ({
3022
+ hasTables: pairCollSize2(hasTablesListeners),
2974
3023
  tables: pairCollSize2(tablesListeners),
2975
3024
  tableIds: pairCollSize2(tableIdsListeners),
2976
- tableCellIds: pairCollSize2(tableCellIdsListeners),
3025
+ hasTable: pairCollSize2(hasTableListeners),
2977
3026
  table: pairCollSize2(tableListeners),
3027
+ tableCellIds: pairCollSize2(tableCellIdsListeners),
3028
+ hasTableCell: pairCollSize2(hasTableCellListeners, collSize3),
2978
3029
  rowCount: pairCollSize2(rowCountListeners),
2979
3030
  rowIds: pairCollSize2(rowIdsListeners),
2980
3031
  sortedRowIds: pairCollSize2(sortedRowIdsListeners),
3032
+ hasRow: pairCollSize2(hasRowListeners, collSize3),
2981
3033
  row: pairCollSize2(rowListeners, collSize3),
2982
3034
  cellIds: pairCollSize2(cellIdsListeners, collSize3),
3035
+ hasCell: pairCollSize2(hasCellListeners, collSize4),
2983
3036
  cell: pairCollSize2(cellListeners, collSize4),
2984
3037
  invalidCell: pairCollSize2(invalidCellListeners, collSize4),
3038
+ hasValues: pairCollSize2(hasValuesListeners),
2985
3039
  values: pairCollSize2(valuesListeners),
2986
3040
  valueIds: pairCollSize2(valueIdsListeners),
3041
+ hasValue: pairCollSize2(hasValueListeners),
2987
3042
  value: pairCollSize2(valueListeners),
2988
3043
  invalidValue: pairCollSize2(invalidValueListeners),
2989
3044
  transaction:
@@ -3068,14 +3123,39 @@ const createStore = () => {
3068
3123
  };
3069
3124
  objMap(
3070
3125
  {
3126
+ [HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
3071
3127
  [TABLES]: [0, tablesListeners],
3072
3128
  [TABLE_IDS]: [0, tableIdsListeners],
3129
+ [HAS + TABLE]: [
3130
+ 1,
3131
+ hasTableListeners,
3132
+ [getTableIds],
3133
+ (ids) => [hasTable(...ids)],
3134
+ ],
3073
3135
  [TABLE]: [1, tableListeners, [getTableIds]],
3074
3136
  [TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],
3137
+ [HAS + TABLE + CELL]: [
3138
+ 2,
3139
+ hasTableCellListeners,
3140
+ [getTableIds, getTableCellIds],
3141
+ (ids) => [hasTableCell(...ids)],
3142
+ ],
3075
3143
  [ROW_COUNT]: [1, rowCountListeners, [getTableIds]],
3076
3144
  [ROW_IDS]: [1, rowIdsListeners, [getTableIds]],
3145
+ [HAS + ROW]: [
3146
+ 2,
3147
+ hasRowListeners,
3148
+ [getTableIds, getRowIds],
3149
+ (ids) => [hasRow(...ids)],
3150
+ ],
3077
3151
  [ROW]: [2, rowListeners, [getTableIds, getRowIds]],
3078
3152
  [CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],
3153
+ [HAS + CELL]: [
3154
+ 3,
3155
+ hasCellListeners,
3156
+ [getTableIds, getRowIds, getCellIds],
3157
+ (ids) => [hasCell(...ids)],
3158
+ ],
3079
3159
  [CELL]: [
3080
3160
  3,
3081
3161
  cellListeners,
@@ -3083,8 +3163,15 @@ const createStore = () => {
3083
3163
  (ids) => pairNew(getCell(...ids)),
3084
3164
  ],
3085
3165
  InvalidCell: [3, invalidCellListeners],
3166
+ [HAS + VALUES]: [0, hasValuesListeners, [], () => [hasValues()]],
3086
3167
  [VALUES]: [0, valuesListeners],
3087
3168
  [VALUE_IDS]: [0, valueIdsListeners],
3169
+ [HAS + VALUE]: [
3170
+ 1,
3171
+ hasValueListeners,
3172
+ [getValueIds],
3173
+ (ids) => [hasValue(...ids)],
3174
+ ],
3088
3175
  [VALUE]: [
3089
3176
  1,
3090
3177
  valueListeners,
package/lib/es6/store.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,l="",t=e(l),n=e(!0),s=e(0),a=e(e),r="type",o="default",u="Ids",i="Table",d=i+"s",c=i+u,h="Row",v=h+"Count",g=h+u,f="Cell",T=f+u,V="Value",b=V+"s",C=V+u,S=e=>l+e,w=isFinite,I=e=>null==e,m=(e,l,t)=>I(e)?null==t?void 0:t():l(e),y=e=>e==t||e==n,R=l=>e(l)==a,p=(e,l,t)=>e.slice(l,t),J=e=>e.length,L=(e,l)=>e.forEach(l),E=(e,l)=>e.map(l),F=(e,...l)=>e.push(...l),O=Object,z=e=>O.getPrototypeOf(e),P=O.keys,k=O.isFrozen,A=O.freeze,M=e=>!I(e)&&m(z(e),(e=>e==O.prototype||I(z(e))),(()=>!0)),N=(e,l)=>!I(((e,l)=>m(e,(e=>e[l])))(e,l)),j=(e,l)=>(delete e[l],e),x=(e,l)=>E(O.entries(e),(([e,t])=>l(t,e))),D=e=>M(e)&&0==(e=>J(P(e)))(e),W=e=>{var l;return null!=(l=null==e?void 0:e.size)?l:0},$=(e,l)=>{var t;return null!=(t=null==e?void 0:e.has(l))&&t},q=e=>I(e)||0==W(e),B=e=>e.clear(),G=(e,l)=>null==e?void 0:e.forEach(l),H=(e,l)=>null==e?void 0:e.delete(l),K=e=>new Map(e),Q=e=>{var l;return[...null!=(l=null==e?void 0:e.keys())?l:[]]},U=(e,l)=>null==e?void 0:e.get(l),X=(e,l)=>G(e,((e,t)=>l(t,e))),Y=(e,l,t)=>I(t)?(H(e,l),e):null==e?void 0:e.set(l,t),Z=(e,l,t)=>($(e,l)||Y(e,l,t()),U(e,l)),_=(e,l,t,n=Y)=>(x(l,((l,n)=>t(e,n,l))),X(e,(t=>N(l,t)?0:n(e,t))),e),ee=(e,l,t)=>{const n={};return G(e,((e,s)=>{const a=l?l(e,s):e;!(null==t?void 0:t(a,e))&&(n[s]=a)})),n},le=(e,l,t)=>ee(e,(e=>ee(e,l,t)),D),te=(e,l,t)=>ee(e,(e=>le(e,l,t)),D),ne=(e,l)=>{const t=K();return G(e,((e,n)=>{var s;return t.set(n,null!=(s=null==l?void 0:l(e))?s:e)})),t},se=e=>ne(e,ne),ae=e=>ne(e,se),re=(e,l,t,n,s=0)=>m((t?Z:U)(e,l[s],s>J(l)-2?t:K),(a=>{if(s>J(l)-2)return(null==n?void 0:n(a))&&Y(e,l[s]),a;const r=re(a,l,t,n,s+1);return q(a)&&Y(e,l[s]),r})),oe=e=>new Set(Array.isArray(e)||I(e)?e:[e]),ue=(e,l)=>null==e?void 0:e.add(l),ie=/^\d+$/,de=()=>{const e=[];let t=0;return[n=>{var s;return null!=(s=n?e.shift():null)?s:l+t++},l=>{ie.test(l)&&J(e)<1e3&&F(e,l)}]},ce=e=>[e,e],he=()=>[K(),K()],ve=e=>[...e],ge=([e,l])=>e===l,fe=l=>{const t=e(l);return y(t)||t==s&&w(l)?t:void 0},Te=(e,l,t,n,s)=>I(s)?e.delCell(l,t,n,!0):e.setCell(l,t,n,s),Ve=(e,l,t)=>I(t)?e.delValue(l):e.setValue(l,t),be=e=>JSON.stringify(e,((e,l)=>l instanceof Map?O.fromEntries([...l]):l)),Ce=JSON.parse,Se=(e,l,t)=>I(e)||!M(e)||D(e)||k(e)?(null==t||t(),!1):(x(e,((t,n)=>{l(t,n)||j(e,n)})),!D(e)),we=(e,l,t)=>Y(e,l,U(e,l)==-t?void 0:t),Ie=()=>{let e,t,n=!1,a=!1,u=0;const w=K(),O=K(),z=K(),P=K(),k=K(),M=K(),ie=K(),me=K(),ye=K(),Re=K(),pe=K(),Je=K(),Le=K(),Ee=K(),Fe=oe(),Oe=K(),ze=K(),Pe=K(),ke=K(),Ae=he(),Me=he(),Ne=he(),je=he(),xe=he(),De=he(),We=he(),$e=he(),qe=he(),Be=he(),Ge=he(),He=he(),Ke=he(),Qe=he(),Ue=he(),Xe=K(),Ye=he(),[Ze,_e,el,ll]=(e=>{let t;const[n,s]=de(),a=K();return[(e,s,r,o=[],u=(()=>[]))=>{null!=t||(t=ft);const i=n(1);return Y(a,i,[e,s,r,o,u]),ue(re(s,null!=r?r:[l],oe),i),i},(e,n,...s)=>L(((e,t=[l])=>{const n=[],s=(e,l)=>l==J(t)?F(n,e):null===t[l]?G(e,(e=>s(e,l+1))):L([t[l],null],(t=>s(U(e,t),l+1)));return s(e,0),n})(e,n),(e=>G(e,(e=>U(a,e)[0](t,...null!=n?n:[],...s))))),e=>m(U(a,e),(([,t,n])=>(re(t,null!=n?n:[l],void 0,(l=>(H(l,e),q(l)?1:0))),Y(a,e),s(e),n))),e=>m(U(a,e),(([e,,l=[],n,s])=>{const a=(...r)=>{var o,u;const i=J(r);i==J(l)?e(t,...r,...s(r)):I(l[i])?L(null!=(u=null==(o=n[i])?void 0:o.call(n,...r))?u:[],(e=>a(...r,e))):a(...r,l[i])};a()}))]})(),tl=e=>{if(!Se(e,((e,l)=>[r,o].includes(l))))return!1;const l=e[r];return!(!y(l)&&l!=s||(fe(e[o])!=l&&j(e,o),0))},nl=(l,t)=>(!e||$(pe,t)||Pl(t))&&Se(l,((e,l)=>sl(t,l,e)),(()=>Pl(t))),sl=(e,l,t,n)=>Se(n?t:ul(t,e,l),((n,s)=>m(al(e,l,s,n),(e=>(t[s]=e,!0)),(()=>!1))),(()=>Pl(e,l))),al=(l,t,n,s)=>e?m(U(U(pe,l),n),(e=>fe(s)!=e[r]?Pl(l,t,n,s,e[o]):s),(()=>Pl(l,t,n,s))):I(fe(s))?Pl(l,t,n,s):s,rl=(e,l)=>Se(l?e:il(e),((l,t)=>m(ol(t,l),(l=>(e[t]=l,!0)),(()=>!1))),(()=>kl())),ol=(e,l)=>t?m(U(Le,e),(t=>fe(l)!=t[r]?kl(e,l,t[o]):l),(()=>kl(e,l))):I(fe(l))?kl(e,l):l,ul=(e,l,t)=>(m(U(Je,l),(([n,s])=>{G(n,((l,t)=>{N(e,t)||(e[t]=l)})),G(s,(n=>{N(e,n)||Pl(l,t,n)}))})),e),il=e=>(t&&(G(Ee,((l,t)=>{N(e,t)||(e[t]=l)})),G(Fe,(l=>{N(e,l)||kl(l)}))),e),dl=e=>_(pe,e,((e,l,t)=>{const n=K(),s=oe();_(Z(pe,l,K),t,((e,l,t)=>{Y(e,l,t),m(t[o],(e=>Y(n,l,e)),(()=>ue(s,l)))})),Y(Je,l,[n,s])}),((e,l)=>{Y(pe,l),Y(Je,l)})),cl=e=>_(Le,e,((e,l,t)=>{Y(Le,l,t),m(t[o],(e=>Y(Ee,l,e)),(()=>ue(Fe,l)))}),((e,l)=>{Y(Le,l),Y(Ee,l),H(Fe,l)})),hl=e=>D(e)?rt():lt(e),vl=e=>_(Pe,e,((e,l,t)=>gl(l,t)),((e,l)=>ml(l))),gl=(e,l)=>_(Z(Pe,e,(()=>(Jl(e,1),Y(Oe,e,de()),Y(ze,e,K()),K()))),l,((l,t,n)=>fl(e,l,t,n)),((l,t)=>yl(e,l,t))),fl=(e,l,t,n,s)=>_(Z(l,t,(()=>(Ll(e,t,1),K()))),n,((l,n,s)=>Tl(e,t,l,n,s)),((n,a)=>Rl(e,l,t,n,a,s))),Tl=(e,l,t,n,s)=>{$(t,n)||El(e,l,n,1);const a=U(t,n);s!==a&&(Fl(e,l,n,a,s),Y(t,n,s))},Vl=(e,l,t,n,s)=>m(U(l,t),(l=>Tl(e,t,l,n,s)),(()=>fl(e,l,t,ul({[n]:s},e,t)))),bl=e=>D(e)?it():tt(e),Cl=e=>_(ke,e,((e,l,t)=>Sl(l,t)),((e,l)=>pl(l))),Sl=(e,l)=>{$(ke,e)||Ol(e,1);const t=U(ke,e);l!==t&&(zl(e,t,l),Y(ke,e,l))},wl=(e,l)=>{const[t]=U(Oe,e),n=t(l);return $(U(Pe,e),n)?wl(e,l):n},Il=e=>{var l;return null!=(l=U(Pe,e))?l:gl(e,{})},ml=e=>gl(e,{}),yl=(e,l,t)=>{const[,n]=U(Oe,e);n(t),fl(e,l,t,{},!0)},Rl=(e,l,t,n,s,a)=>{var r;const o=U(null==(r=U(Je,e))?void 0:r[0],s);if(!I(o)&&!a)return Tl(e,t,n,s,o);const u=l=>{Fl(e,t,l,U(n,l)),El(e,t,l,-1),Y(n,l)};I(o)?u(s):X(n,u),q(n)&&(Ll(e,t,-1),q(Y(l,t))&&(Jl(e,-1),Y(Pe,e),Y(Oe,e),Y(ze,e)))},pl=e=>{const l=U(Ee,e);if(!I(l))return Sl(e,l);zl(e,U(ke,e)),Ol(e,-1),Y(ke,e)},Jl=(e,l)=>we(w,e,l),Ll=(e,l,t)=>we(Z(P,e,K),l,t)&&Y(z,e,Z(z,e,(()=>0))+t),El=(e,l,t,n)=>{var s;const a=U(ze,e),r=null!=(s=U(a,t))?s:0;(0==r&&1==n||1==r&&-1==n)&&we(Z(O,e,K),t,n),Y(a,t,r!=-n?r+n:null),we(Z(Z(k,e,K),l,K),t,n)},Fl=(e,l,t,n,s)=>Z(Z(Z(M,e,K),l,K),t,(()=>[n,0]))[1]=s,Ol=(e,l)=>we(ie,e,l),zl=(e,l,t)=>Z(me,e,(()=>[l,0]))[1]=t,Pl=(e,l,t,n,s)=>(F(Z(Z(Z(ye,e,K),l,K),t,(()=>[])),n),s),kl=(e,l,t)=>(F(Z(Re,e,(()=>[])),l),t),Al=(e,l,t)=>m(U(U(U(M,e),l),t),(([e,l])=>[!0,e,l]),(()=>[!1,...ce(Yl(e,l,t))])),Ml=e=>m(U(me,e),(([e,l])=>[!0,e,l]),(()=>[!1,...ce(et(e))])),Nl=e=>q(ye)||q(Ge[e])?0:G(e?ae(ye):ye,((l,t)=>G(l,((l,n)=>G(l,((l,s)=>_e(Ge[e],[t,n,s],l))))))),jl=e=>q(Re)||q(He[e])?0:G(e?ne(Re):Re,((l,t)=>_e(He[e],[t],l))),xl=(e,l,t)=>{if(!q(l))return _e(e,t,(()=>ee(l))),1},Dl=e=>{const l=q(We[e]),t=q(qe[e])&&q(je[e])&&q(xe[e])&&q(De[e])&&l&&q(Me[e]),n=q(Be[e])&&q($e[e])&&q(Ne[e])&&q(Ae[e]);if(!t||!n){const s=e?[ne(w),se(O),ne(z),se(P),ae(k),ae(M)]:[w,O,z,P,k,M];if(!t){xl(Me[e],s[0]),G(s[1],((l,t)=>xl(je[e],l,[t]))),G(s[2],((l,t)=>{0!=l&&_e(xe[e],[t],Kl(t))}));const t=oe();G(s[3],((n,s)=>{xl(De[e],n,[s])&&!l&&(_e(We[e],[s,null]),ue(t,s))})),l||G(s[5],((l,n)=>{if(!$(t,n)){const t=oe();G(l,(e=>G(e,(([l,n],s)=>n!==l?ue(t,s):H(e,s))))),G(t,(l=>_e(We[e],[n,l])))}})),G(s[4],((l,t)=>G(l,((l,n)=>xl(qe[e],l,[t,n])))))}if(!n){let l;G(s[5],((t,n)=>{let s;G(t,((t,a)=>{let r;G(t,(([t,o],u)=>{o!==t&&(_e(Be[e],[n,a,u],o,t,Al),l=s=r=1)})),r&&_e($e[e],[n,a],Al)})),s&&_e(Ne[e],[n],Al)})),l&&_e(Ae[e],void 0,Al)}}},Wl=e=>{const l=q(Qe[e]),t=q(Ue[e])&&q(Ke[e]);if(!l||!t){const n=e?[ne(ie),ne(me)]:[ie,me];if(l||xl(Qe[e],n[0]),!t){let l;G(n[1],(([t,n],s)=>{n!==t&&(_e(Ue[e],[s],n,t,Ml),l=1)})),l&&_e(Ke[e],void 0,Ml)}}},$l=(e,...l)=>(ht((()=>e(...E(l,S)))),ft),ql=()=>[ee(M,((e,l)=>-1===U(w,l)?null:ee(e,((e,t)=>-1===U(U(P,l),t)?null:ee(e,(([,e])=>null!=e?e:null),((e,l)=>ge(l)))),D)),D),ee(me,(([,e])=>null!=e?e:null),((e,l)=>ge(l)))],Bl=()=>({cellsTouched:n,valuesTouched:a,changedCells:te(M,ve,ge),invalidCells:te(ye),changedValues:ee(me,ve,ge),invalidValues:ee(Re),changedTableIds:ee(w),changedRowIds:le(P),changedCellIds:te(k),changedValueIds:ee(ie)}),Gl=()=>te(Pe),Hl=()=>Q(Pe),Kl=e=>W(U(Pe,S(e))),Ql=e=>Q(U(Pe,S(e))),Ul=(e,l,t,n=0,s)=>{return E(p((r=U(Pe,S(e)),o=(e,t)=>[I(l)?t:U(e,S(l)),t],a=([e],[l])=>{return((null!=(n=e)?n:0)<(null!=(s=l)?s:0)?-1:1)*(t?-1:1);var n,s},E([...null!=(u=null==r?void 0:r.entries())?u:[]],(([e,l])=>o(l,e))).sort(a)),n,I(s)?s:n+s),(([,e])=>e));var a,r,o,u},Xl=(e,l)=>Q(U(U(Pe,S(e)),S(l))),Yl=(e,l,t)=>U(U(U(Pe,S(e)),S(l)),S(t)),Zl=()=>ee(ke),_l=()=>Q(ke),et=e=>U(ke,S(e)),lt=e=>$l((()=>(e=>Se(e,nl,Pl))(e)?vl(e):0)),tt=e=>$l((()=>rl(e)?Cl(e):0)),nt=e=>{try{hl(Ce(e))}catch(e){}return ft},st=l=>$l((()=>{if((e=Se(l,(e=>Se(e,tl))))&&(dl(l),!q(Pe))){const e=Gl();rt(),lt(e)}})),at=e=>$l((()=>{if(t=(e=>Se(e,tl))(e)){const l=Zl();ct(),it(),t=!0,cl(e),tt(l)}})),rt=()=>$l((()=>vl({}))),ot=e=>$l((e=>$(Pe,e)?ml(e):0),e),ut=(e,l)=>$l(((e,l)=>m(U(Pe,e),(t=>$(t,l)?yl(e,t,l):0))),e,l),it=()=>$l((()=>Cl({}))),dt=()=>$l((()=>{dl({}),e=!1})),ct=()=>$l((()=>{cl({}),t=!1})),ht=(e,l)=>{if(-1!=u){vt();const t=e();return gt(l),t}},vt=()=>(-1!=u&&u++,1==u&&_e(Xe,void 0,ql,Bl),ft),gt=e=>(u>0&&(u--,0==u&&(n=!q(M),a=!q(me),u=1,Nl(1),n&&Dl(1),jl(1),a&&Wl(1),(null==e?void 0:e(ql,Bl))&&(G(M,((e,l)=>G(e,((e,t)=>G(e,(([e],n)=>Te(ft,l,t,n,e))))))),G(me,(([e],l)=>Ve(ft,l,e))),n=a=!1),_e(Ye[0],void 0,ql,Bl),u=-1,Nl(0),n&&Dl(0),jl(0),a&&Wl(0),_e(Ye[1],void 0,ql,Bl),u=0,n=a=!1,L([w,O,z,P,k,M,ye,ie,me,Re],B))),ft),ft={getContent:()=>[Gl(),Zl()],getTables:Gl,getTableIds:Hl,getTable:e=>le(U(Pe,S(e))),getTableCellIds:e=>Q(U(ze,S(e))),getRowCount:Kl,getRowIds:Ql,getSortedRowIds:Ul,getRow:(e,l)=>ee(U(U(Pe,S(e)),S(l))),getCellIds:Xl,getCell:Yl,getValues:Zl,getValueIds:_l,getValue:et,hasTables:()=>!q(Pe),hasTable:e=>$(Pe,S(e)),hasTableCell:(e,l)=>$(U(ze,S(e)),S(l)),hasRow:(e,l)=>$(U(Pe,S(e)),S(l)),hasCell:(e,l,t)=>$(U(U(Pe,S(e)),S(l)),S(t)),hasValues:()=>!q(ke),hasValue:e=>$(ke,S(e)),getTablesJson:()=>be(Pe),getValuesJson:()=>be(ke),getJson:()=>be([Pe,ke]),getTablesSchemaJson:()=>be(pe),getValuesSchemaJson:()=>be(Le),getSchemaJson:()=>be([pe,Le]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,l])=>$l((()=>{(D(e)?rt:lt)(e),(D(l)?it:tt)(l)})),setTables:lt,setTable:(e,l)=>$l((e=>nl(l,e)?gl(e,l):0),e),setRow:(e,l,t)=>$l(((e,l)=>sl(e,l,t)?fl(e,Il(e),l,t):0),e,l),addRow:(e,l,t=!0)=>ht((()=>{let n;return sl(e,n,l)&&(e=S(e),fl(e,Il(e),n=wl(e,t?1:0),l)),n})),setPartialRow:(e,l,t)=>$l(((e,l)=>{if(sl(e,l,t,1)){const n=Il(e);x(t,((t,s)=>Vl(e,n,l,s,t)))}}),e,l),setCell:(e,l,t,n)=>$l(((e,l,t)=>m(al(e,l,t,R(n)?n(Yl(e,l,t)):n),(n=>Vl(e,Il(e),l,t,n)))),e,l,t),setValues:tt,setPartialValues:e=>$l((()=>rl(e,1)?x(e,((e,l)=>Sl(l,e))):0)),setValue:(e,l)=>$l((e=>m(ol(e,R(l)?l(et(e)):l),(l=>Sl(e,l)))),e),setTransactionChanges:e=>$l((()=>{x(e[0],((e,l)=>I(e)?ot(l):x(e,((e,t)=>I(e)?ut(l,t):x(e,((e,n)=>Te(ft,l,t,n,e))))))),x(e[1],((e,l)=>Ve(ft,l,e)))})),setTablesJson:nt,setValuesJson:e=>{try{bl(Ce(e))}catch(e){}return ft},setJson:e=>$l((()=>{try{const[l,t]=Ce(e);hl(l),bl(t)}catch(l){nt(e)}})),setTablesSchema:st,setValuesSchema:at,setSchema:(e,l)=>$l((()=>{st(e),at(l)})),delTables:rt,delTable:ot,delRow:ut,delCell:(e,l,t,n)=>$l(((e,l,t)=>m(U(Pe,e),(s=>m(U(s,l),(a=>$(a,t)?Rl(e,s,l,a,t,n):0))))),e,l,t),delValues:it,delValue:e=>$l((e=>$(ke,e)?pl(e):0),e),delTablesSchema:dt,delValuesSchema:ct,delSchema:()=>$l((()=>{dt(),ct()})),transaction:ht,startTransaction:vt,finishTransaction:gt,forEachTable:e=>G(Pe,((l,t)=>e(t,(e=>G(l,((l,t)=>e(t,(e=>X(l,e))))))))),forEachTableCell:(e,l)=>X(U(ze,S(e)),l),forEachRow:(e,l)=>G(U(Pe,S(e)),((e,t)=>l(t,(l=>X(e,l))))),forEachCell:(e,l,t)=>X(U(U(Pe,S(e)),S(l)),t),forEachValue:e=>X(ke,e),addSortedRowIdsListener:(e,l,t,n,s,a,r)=>{let o=Ul(e,l,t,n,s);return Ze((()=>{const r=Ul(e,l,t,n,s);var u,i,d;i=o,J(u=r)===J(i)&&(d=(e,l)=>i[l]===e,u.every(d))||(o=r,a(ft,e,l,t,n,s,o))}),We[r?1:0],[e,l],[Hl])},addStartTransactionListener:e=>Ze(e,Xe),addWillFinishTransactionListener:e=>Ze(e,Ye[0]),addDidFinishTransactionListener:e=>Ze(e,Ye[1]),callListener:e=>(ll(e),ft),delListener:e=>(el(e),ft),getListenerStats:()=>({}),createStore:Ie,addListener:Ze,callListeners:_e};return x({[d]:[0,Ae],[c]:[0,Me],[i]:[1,Ne,[Hl]],[i+T]:[1,je,[Hl]],[v]:[1,xe,[Hl]],[g]:[1,De,[Hl]],[h]:[2,$e,[Hl,Ql]],[T]:[2,qe,[Hl,Ql]],[f]:[3,Be,[Hl,Ql,Xl],e=>ce(Yl(...e))],InvalidCell:[3,Ge],[b]:[0,Ke],[C]:[0,Qe],[V]:[1,Ue,[_l],e=>ce(et(e[0]))],InvalidValue:[1,He]},(([e,l,t,n],s)=>{ft["add"+s+"Listener"]=(...s)=>Ze(s[e],l[s[e+1]?1:0],e>0?p(s,0,e):void 0,t,n)})),A(ft)};export{Ie as createStore};
1
+ const e=e=>typeof e,l="",t=e(l),n=e(!0),s=e(0),a=e(e),r="type",o="default",u="Ids",i="Table",d=i+"s",c=i+u,h="Row",v=h+"Count",g=h+u,f="Cell",T=f+u,V="Value",b=V+"s",C=V+u,S="Has",w=e=>l+e,I=isFinite,m=e=>null==e,y=(e,l,t)=>m(e)?null==t?void 0:t():l(e),R=e=>e==t||e==n,p=l=>e(l)==a,J=(e,l,t)=>e.slice(l,t),L=e=>e.length,E=(e,l)=>e.forEach(l),F=(e,l)=>e.map(l),O=(e,...l)=>e.push(...l),z=Object,P=e=>z.getPrototypeOf(e),k=z.keys,A=z.isFrozen,M=z.freeze,N=e=>!m(e)&&y(P(e),(e=>e==z.prototype||m(P(e))),(()=>!0)),j=(e,l)=>!m(((e,l)=>y(e,(e=>e[l])))(e,l)),x=(e,l)=>(delete e[l],e),D=(e,l)=>F(z.entries(e),(([e,t])=>l(t,e))),H=e=>N(e)&&0==(e=>L(k(e)))(e),W=e=>{var l;return null!=(l=null==e?void 0:e.size)?l:0},$=(e,l)=>{var t;return null!=(t=null==e?void 0:e.has(l))&&t},q=e=>m(e)||0==W(e),B=e=>e.clear(),G=(e,l)=>null==e?void 0:e.forEach(l),K=(e,l)=>null==e?void 0:e.delete(l),Q=e=>new Map(e),U=e=>{var l;return[...null!=(l=null==e?void 0:e.keys())?l:[]]},X=(e,l)=>null==e?void 0:e.get(l),Y=(e,l)=>G(e,((e,t)=>l(t,e))),Z=(e,l,t)=>m(t)?(K(e,l),e):null==e?void 0:e.set(l,t),_=(e,l,t)=>($(e,l)||Z(e,l,t()),X(e,l)),ee=(e,l,t,n=Z)=>(D(l,((l,n)=>t(e,n,l))),Y(e,(t=>j(l,t)?0:n(e,t))),e),le=(e,l,t)=>{const n={};return G(e,((e,s)=>{const a=l?l(e,s):e;!(null==t?void 0:t(a,e))&&(n[s]=a)})),n},te=(e,l,t)=>le(e,(e=>le(e,l,t)),H),ne=(e,l,t)=>le(e,(e=>te(e,l,t)),H),se=(e,l)=>{const t=Q();return G(e,((e,n)=>{var s;return t.set(n,null!=(s=null==l?void 0:l(e))?s:e)})),t},ae=e=>se(e,se),re=e=>se(e,ae),oe=(e,l,t,n,s=0)=>y((t?_:X)(e,l[s],s>L(l)-2?t:Q),(a=>{if(s>L(l)-2)return(null==n?void 0:n(a))&&Z(e,l[s]),a;const r=oe(a,l,t,n,s+1);return q(a)&&Z(e,l[s]),r})),ue=e=>new Set(Array.isArray(e)||m(e)?e:[e]),ie=(e,l)=>null==e?void 0:e.add(l),de=/^\d+$/,ce=()=>{const e=[];let t=0;return[n=>{var s;return null!=(s=n?e.shift():null)?s:l+t++},l=>{de.test(l)&&L(e)<1e3&&O(e,l)}]},he=e=>[e,e],ve=()=>[Q(),Q()],ge=e=>[...e],fe=([e,l])=>e===l,Te=l=>{const t=e(l);return R(t)||t==s&&I(l)?t:void 0},Ve=(e,l,t,n,s)=>m(s)?e.delCell(l,t,n,!0):e.setCell(l,t,n,s),be=(e,l,t)=>m(t)?e.delValue(l):e.setValue(l,t),Ce=e=>JSON.stringify(e,((e,l)=>l instanceof Map?z.fromEntries([...l]):l)),Se=JSON.parse,we=(e,l,t)=>m(e)||!N(e)||H(e)||A(e)?(null==t||t(),!1):(D(e,((t,n)=>{l(t,n)||x(e,n)})),!H(e)),Ie=(e,l,t)=>Z(e,l,X(e,l)==-t?void 0:t),me=()=>{let e,t,n=!1,a=!1,u=!1,I=!1,z=0;const P=Q(),k=Q(),A=Q(),N=Q(),de=Q(),ye=Q(),Re=Q(),pe=Q(),Je=Q(),Le=Q(),Ee=Q(),Fe=Q(),Oe=Q(),ze=Q(),Pe=ue(),ke=Q(),Ae=Q(),Me=Q(),Ne=Q(),je=ve(),xe=ve(),De=ve(),He=ve(),We=ve(),$e=ve(),qe=ve(),Be=ve(),Ge=ve(),Ke=ve(),Qe=ve(),Ue=ve(),Xe=ve(),Ye=ve(),Ze=ve(),_e=ve(),el=ve(),ll=ve(),tl=ve(),nl=ve(),sl=ve(),al=ve(),rl=Q(),ol=ve(),[ul,il,dl,cl]=(e=>{let t;const[n,s]=ce(),a=Q();return[(e,s,r,o=[],u=(()=>[]))=>{null!=t||(t=Pt);const i=n(1);return Z(a,i,[e,s,r,o,u]),ie(oe(s,null!=r?r:[l],ue),i),i},(e,n,...s)=>E(((e,t=[l])=>{const n=[],s=(e,l)=>l==L(t)?O(n,e):null===t[l]?G(e,(e=>s(e,l+1))):E([t[l],null],(t=>s(X(e,t),l+1)));return s(e,0),n})(e,n),(e=>G(e,(e=>X(a,e)[0](t,...null!=n?n:[],...s))))),e=>y(X(a,e),(([,t,n])=>(oe(t,null!=n?n:[l],void 0,(l=>(K(l,e),q(l)?1:0))),Z(a,e),s(e),n))),e=>y(X(a,e),(([e,,l=[],n,s])=>{const a=(...r)=>{var o,u;const i=L(r);i==L(l)?e(t,...r,...s(r)):m(l[i])?E(null!=(u=null==(o=n[i])?void 0:o.call(n,...r))?u:[],(e=>a(...r,e))):a(...r,l[i])};a()}))]})(),hl=e=>{if(!we(e,((e,l)=>[r,o].includes(l))))return!1;const l=e[r];return!(!R(l)&&l!=s||(Te(e[o])!=l&&x(e,o),0))},vl=(l,t)=>(!e||$(Ee,t)||$l(t))&&we(l,((e,l)=>gl(t,l,e)),(()=>$l(t))),gl=(e,l,t,n)=>we(n?t:bl(t,e,l),((n,s)=>y(fl(e,l,s,n),(e=>(t[s]=e,!0)),(()=>!1))),(()=>$l(e,l))),fl=(l,t,n,s)=>e?y(X(X(Ee,l),n),(e=>Te(s)!=e[r]?$l(l,t,n,s,e[o]):s),(()=>$l(l,t,n,s))):m(Te(s))?$l(l,t,n,s):s,Tl=(e,l)=>we(l?e:Cl(e),((l,t)=>y(Vl(t,l),(l=>(e[t]=l,!0)),(()=>!1))),(()=>ql())),Vl=(e,l)=>t?y(X(Oe,e),(t=>Te(l)!=t[r]?ql(e,l,t[o]):l),(()=>ql(e,l))):m(Te(l))?ql(e,l):l,bl=(e,l,t)=>(y(X(Fe,l),(([n,s])=>{G(n,((l,t)=>{j(e,t)||(e[t]=l)})),G(s,(n=>{j(e,n)||$l(l,t,n)}))})),e),Cl=e=>(t&&(G(ze,((l,t)=>{j(e,t)||(e[t]=l)})),G(Pe,(l=>{j(e,l)||ql(l)}))),e),Sl=e=>ee(Ee,e,((e,l,t)=>{const n=Q(),s=ue();ee(_(Ee,l,Q),t,((e,l,t)=>{Z(e,l,t),y(t[o],(e=>Z(n,l,e)),(()=>ie(s,l)))})),Z(Fe,l,[n,s])}),((e,l)=>{Z(Ee,l),Z(Fe,l)})),wl=e=>ee(Oe,e,((e,l,t)=>{Z(Oe,l,t),y(t[o],(e=>Z(ze,l,e)),(()=>ie(Pe,l)))}),((e,l)=>{Z(Oe,l),Z(ze,l),K(Pe,l)})),Il=e=>H(e)?yt():Ct(e),ml=e=>ee(Me,e,((e,l,t)=>yl(l,t)),((e,l)=>Pl(l))),yl=(e,l)=>ee(_(Me,e,(()=>(Nl(e,1),Z(ke,e,ce()),Z(Ae,e,Q()),Q()))),l,((l,t,n)=>Rl(e,l,t,n)),((l,t)=>kl(e,l,t))),Rl=(e,l,t,n,s)=>ee(_(l,t,(()=>(jl(e,t,1),Q()))),n,((l,n,s)=>pl(e,t,l,n,s)),((n,a)=>Al(e,l,t,n,a,s))),pl=(e,l,t,n,s)=>{$(t,n)||xl(e,l,n,1);const a=X(t,n);s!==a&&(Dl(e,l,n,a,s),Z(t,n,s))},Jl=(e,l,t,n,s)=>y(X(l,t),(l=>pl(e,t,l,n,s)),(()=>Rl(e,l,t,bl({[n]:s},e,t)))),Ll=e=>H(e)?Jt():St(e),El=e=>ee(Ne,e,((e,l,t)=>Fl(l,t)),((e,l)=>Ml(l))),Fl=(e,l)=>{$(Ne,e)||Hl(e,1);const t=X(Ne,e);l!==t&&(Wl(e,t,l),Z(Ne,e,l))},Ol=(e,l)=>{const[t]=X(ke,e),n=t(l);return $(X(Me,e),n)?Ol(e,l):n},zl=e=>{var l;return null!=(l=X(Me,e))?l:yl(e,{})},Pl=e=>yl(e,{}),kl=(e,l,t)=>{const[,n]=X(ke,e);n(t),Rl(e,l,t,{},!0)},Al=(e,l,t,n,s,a)=>{var r;const o=X(null==(r=X(Fe,e))?void 0:r[0],s);if(!m(o)&&!a)return pl(e,t,n,s,o);const u=l=>{Dl(e,t,l,X(n,l)),xl(e,t,l,-1),Z(n,l)};m(o)?u(s):Y(n,u),q(n)&&(jl(e,t,-1),q(Z(l,t))&&(Nl(e,-1),Z(Me,e),Z(ke,e),Z(Ae,e)))},Ml=e=>{const l=X(ze,e);if(!m(l))return Fl(e,l);Wl(e,X(Ne,e)),Hl(e,-1),Z(Ne,e)},Nl=(e,l)=>Ie(P,e,l),jl=(e,l,t)=>Ie(_(N,e,Q),l,t)&&Z(A,e,_(A,e,(()=>0))+t),xl=(e,l,t,n)=>{var s;const a=X(Ae,e),r=null!=(s=X(a,t))?s:0;(0==r&&1==n||1==r&&-1==n)&&Ie(_(k,e,Q),t,n),Z(a,t,r!=-n?r+n:null),Ie(_(_(de,e,Q),l,Q),t,n)},Dl=(e,l,t,n,s)=>_(_(_(ye,e,Q),l,Q),t,(()=>[n,0]))[1]=s,Hl=(e,l)=>Ie(Re,e,l),Wl=(e,l,t)=>_(pe,e,(()=>[l,0]))[1]=t,$l=(e,l,t,n,s)=>(O(_(_(_(Je,e,Q),l,Q),t,(()=>[])),n),s),ql=(e,l,t)=>(O(_(Le,e,(()=>[])),l),t),Bl=(e,l,t)=>y(X(X(X(ye,e),l),t),(([e,l])=>[!0,e,l]),(()=>[!1,...he(ut(e,l,t))])),Gl=e=>y(X(pe,e),(([e,l])=>[!0,e,l]),(()=>[!1,...he(ct(e))])),Kl=e=>q(Je)||q(_e[e])?0:G(e?re(Je):Je,((l,t)=>G(l,((l,n)=>G(l,((l,s)=>il(_e[e],[t,n,s],l))))))),Ql=e=>q(Le)||q(el[e])?0:G(e?se(Le):Le,((l,t)=>il(el[e],[t],l))),Ul=(e,l,t,n)=>{if(!q(e))return il(l,n,(()=>le(e))),Y(e,((e,l)=>il(t,[...null!=n?n:[],e],1==l))),1},Xl=e=>{const l=ht();l!=u&&il(je[e],void 0,l);const t=q(Ke[e]),n=q(Xe[e])&&q(Ye[e])&&q(Ge[e])&&q(Qe[e])&&q($e[e])&&q(qe[e])&&q(Be[e])&&t&&q(De[e])&&q(He[e]),s=q(Ze[e])&&q(Ue[e])&&q(We[e])&&q(xe[e]);if(!n||!s){const l=e?[se(P),ae(k),se(A),ae(N),re(de),re(ye)]:[P,k,A,N,de,ye];if(!n){Ul(l[0],De[e],He[e]),G(l[1],((l,t)=>Ul(l,$e[e],qe[e],[t]))),G(l[2],((l,t)=>{0!=l&&il(Be[e],[t],st(t))}));const n=ue();G(l[3],((l,s)=>{Ul(l,Ge[e],Qe[e],[s])&&!t&&(il(Ke[e],[s,null]),ie(n,s))})),t||G(l[5],((l,t)=>{if(!$(n,t)){const n=ue();G(l,(e=>G(e,(([l,t],s)=>t!==l?ie(n,s):K(e,s))))),G(n,(l=>il(Ke[e],[t,l])))}})),G(l[4],((l,t)=>G(l,((l,n)=>Ul(l,Xe[e],Ye[e],[t,n])))))}if(!s){let t;G(l[5],((l,n)=>{let s;G(l,((l,a)=>{let r;G(l,(([l,o],u)=>{o!==l&&(il(Ze[e],[n,a,u],o,l,Bl),t=s=r=1)})),r&&il(Ue[e],[n,a],Bl)})),s&&il(We[e],[n],Bl)})),t&&il(xe[e],void 0,Bl)}}},Yl=e=>{const l=Vt();l!=I&&il(ll[e],void 0,l);const t=q(nl[e])&&q(sl[e]),n=q(al[e])&&q(tl[e]);if(!t||!n){const l=e?[se(Re),se(pe)]:[Re,pe];if(t||Ul(l[0],nl[e],sl[e]),!n){let t;G(l[1],(([l,n],s)=>{n!==l&&(il(al[e],[s],n,l,Gl),t=1)})),t&&il(tl[e],void 0,Gl)}}},Zl=(e,...l)=>(Ft((()=>e(...F(l,w)))),Pt),_l=()=>[le(ye,((e,l)=>-1===X(P,l)?null:le(e,((e,t)=>-1===X(X(N,l),t)?null:le(e,(([,e])=>null!=e?e:null),((e,l)=>fe(l)))),H)),H),le(pe,(([,e])=>null!=e?e:null),((e,l)=>fe(l)))],et=()=>({cellsTouched:n,valuesTouched:a,changedCells:ne(ye,ge,fe),invalidCells:ne(Je),changedValues:le(pe,ge,fe),invalidValues:le(Le),changedTableIds:le(P),changedRowIds:te(N),changedCellIds:ne(de),changedValueIds:le(Re)}),lt=()=>ne(Me),tt=()=>U(Me),nt=e=>U(X(Ae,w(e))),st=e=>W(X(Me,w(e))),at=e=>U(X(Me,w(e))),rt=(e,l,t,n=0,s)=>{return F(J((r=X(Me,w(e)),o=(e,t)=>[m(l)?t:X(e,w(l)),t],a=([e],[l])=>{return((null!=(n=e)?n:0)<(null!=(s=l)?s:0)?-1:1)*(t?-1:1);var n,s},F([...null!=(u=null==r?void 0:r.entries())?u:[]],(([e,l])=>o(l,e))).sort(a)),n,m(s)?s:n+s),(([,e])=>e));var a,r,o,u},ot=(e,l)=>U(X(X(Me,w(e)),w(l))),ut=(e,l,t)=>X(X(X(Me,w(e)),w(l)),w(t)),it=()=>le(Ne),dt=()=>U(Ne),ct=e=>X(Ne,w(e)),ht=()=>!q(Me),vt=e=>$(Me,w(e)),gt=(e,l)=>$(X(Ae,w(e)),w(l)),ft=(e,l)=>$(X(Me,w(e)),w(l)),Tt=(e,l,t)=>$(X(X(Me,w(e)),w(l)),w(t)),Vt=()=>!q(Ne),bt=e=>$(Ne,w(e)),Ct=e=>Zl((()=>(e=>we(e,vl,$l))(e)?ml(e):0)),St=e=>Zl((()=>Tl(e)?El(e):0)),wt=e=>{try{Il(Se(e))}catch(e){}return Pt},It=l=>Zl((()=>{if((e=we(l,(e=>we(e,hl))))&&(Sl(l),!q(Me))){const e=lt();yt(),Ct(e)}})),mt=e=>Zl((()=>{if(t=(e=>we(e,hl))(e)){const l=it();Et(),Jt(),t=!0,wl(e),St(l)}})),yt=()=>Zl((()=>ml({}))),Rt=e=>Zl((e=>$(Me,e)?Pl(e):0),e),pt=(e,l)=>Zl(((e,l)=>y(X(Me,e),(t=>$(t,l)?kl(e,t,l):0))),e,l),Jt=()=>Zl((()=>El({}))),Lt=()=>Zl((()=>{Sl({}),e=!1})),Et=()=>Zl((()=>{wl({}),t=!1})),Ft=(e,l)=>{if(-1!=z){Ot();const t=e();return zt(l),t}},Ot=()=>(-1!=z&&z++,1==z&&il(rl,void 0,_l,et),Pt),zt=e=>(z>0&&(z--,0==z&&(n=!q(ye),a=!q(pe),z=1,Kl(1),n&&Xl(1),Ql(1),a&&Yl(1),(null==e?void 0:e(_l,et))&&(G(ye,((e,l)=>G(e,((e,t)=>G(e,(([e],n)=>Ve(Pt,l,t,n,e))))))),G(pe,(([e],l)=>be(Pt,l,e))),n=a=!1),il(ol[0],void 0,_l,et),z=-1,Kl(0),n&&Xl(0),Ql(0),a&&Yl(0),il(ol[1],void 0,_l,et),z=0,n=a=!1,u=ht(),I=Vt(),E([P,k,A,N,de,ye,Je,Re,pe,Le],B))),Pt),Pt={getContent:()=>[lt(),it()],getTables:lt,getTableIds:tt,getTable:e=>te(X(Me,w(e))),getTableCellIds:nt,getRowCount:st,getRowIds:at,getSortedRowIds:rt,getRow:(e,l)=>le(X(X(Me,w(e)),w(l))),getCellIds:ot,getCell:ut,getValues:it,getValueIds:dt,getValue:ct,hasTables:ht,hasTable:vt,hasTableCell:gt,hasRow:ft,hasCell:Tt,hasValues:Vt,hasValue:bt,getTablesJson:()=>Ce(Me),getValuesJson:()=>Ce(Ne),getJson:()=>Ce([Me,Ne]),getTablesSchemaJson:()=>Ce(Ee),getValuesSchemaJson:()=>Ce(Oe),getSchemaJson:()=>Ce([Ee,Oe]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,l])=>Zl((()=>{(H(e)?yt:Ct)(e),(H(l)?Jt:St)(l)})),setTables:Ct,setTable:(e,l)=>Zl((e=>vl(l,e)?yl(e,l):0),e),setRow:(e,l,t)=>Zl(((e,l)=>gl(e,l,t)?Rl(e,zl(e),l,t):0),e,l),addRow:(e,l,t=!0)=>Ft((()=>{let n;return gl(e,n,l)&&(e=w(e),Rl(e,zl(e),n=Ol(e,t?1:0),l)),n})),setPartialRow:(e,l,t)=>Zl(((e,l)=>{if(gl(e,l,t,1)){const n=zl(e);D(t,((t,s)=>Jl(e,n,l,s,t)))}}),e,l),setCell:(e,l,t,n)=>Zl(((e,l,t)=>y(fl(e,l,t,p(n)?n(ut(e,l,t)):n),(n=>Jl(e,zl(e),l,t,n)))),e,l,t),setValues:St,setPartialValues:e=>Zl((()=>Tl(e,1)?D(e,((e,l)=>Fl(l,e))):0)),setValue:(e,l)=>Zl((e=>y(Vl(e,p(l)?l(ct(e)):l),(l=>Fl(e,l)))),e),setTransactionChanges:e=>Zl((()=>{D(e[0],((e,l)=>m(e)?Rt(l):D(e,((e,t)=>m(e)?pt(l,t):D(e,((e,n)=>Ve(Pt,l,t,n,e))))))),D(e[1],((e,l)=>be(Pt,l,e)))})),setTablesJson:wt,setValuesJson:e=>{try{Ll(Se(e))}catch(e){}return Pt},setJson:e=>Zl((()=>{try{const[l,t]=Se(e);Il(l),Ll(t)}catch(l){wt(e)}})),setTablesSchema:It,setValuesSchema:mt,setSchema:(e,l)=>Zl((()=>{It(e),mt(l)})),delTables:yt,delTable:Rt,delRow:pt,delCell:(e,l,t,n)=>Zl(((e,l,t)=>y(X(Me,e),(s=>y(X(s,l),(a=>$(a,t)?Al(e,s,l,a,t,n):0))))),e,l,t),delValues:Jt,delValue:e=>Zl((e=>$(Ne,e)?Ml(e):0),e),delTablesSchema:Lt,delValuesSchema:Et,delSchema:()=>Zl((()=>{Lt(),Et()})),transaction:Ft,startTransaction:Ot,finishTransaction:zt,forEachTable:e=>G(Me,((l,t)=>e(t,(e=>G(l,((l,t)=>e(t,(e=>Y(l,e))))))))),forEachTableCell:(e,l)=>Y(X(Ae,w(e)),l),forEachRow:(e,l)=>G(X(Me,w(e)),((e,t)=>l(t,(l=>Y(e,l))))),forEachCell:(e,l,t)=>Y(X(X(Me,w(e)),w(l)),t),forEachValue:e=>Y(Ne,e),addSortedRowIdsListener:(e,l,t,n,s,a,r)=>{let o=rt(e,l,t,n,s);return ul((()=>{const r=rt(e,l,t,n,s);var u,i,d;i=o,L(u=r)===L(i)&&(d=(e,l)=>i[l]===e,u.every(d))||(o=r,a(Pt,e,l,t,n,s,o))}),Ke[r?1:0],[e,l],[tt])},addStartTransactionListener:e=>ul(e,rl),addWillFinishTransactionListener:e=>ul(e,ol[0]),addDidFinishTransactionListener:e=>ul(e,ol[1]),callListener:e=>(cl(e),Pt),delListener:e=>(dl(e),Pt),getListenerStats:()=>({}),createStore:me,addListener:ul,callListeners:il};return D({[S+d]:[0,je,[],()=>[ht()]],[d]:[0,xe],[c]:[0,De],[S+i]:[1,He,[tt],e=>[vt(...e)]],[i]:[1,We,[tt]],[i+T]:[1,$e,[tt]],[S+i+f]:[2,qe,[tt,nt],e=>[gt(...e)]],[v]:[1,Be,[tt]],[g]:[1,Ge,[tt]],[S+h]:[2,Qe,[tt,at],e=>[ft(...e)]],[h]:[2,Ue,[tt,at]],[T]:[2,Xe,[tt,at]],[S+f]:[3,Ye,[tt,at,ot],e=>[Tt(...e)]],[f]:[3,Ze,[tt,at,ot],e=>he(ut(...e))],InvalidCell:[3,_e],[S+b]:[0,ll,[],()=>[Vt()]],[b]:[0,tl],[C]:[0,nl],[S+V]:[1,sl,[dt],e=>[bt(...e)]],[V]:[1,al,[dt],e=>he(ct(e[0]))],InvalidValue:[1,el]},(([e,l,t,n],s)=>{Pt["add"+s+"Listener"]=(...s)=>ul(s[e],l[s[e+1]?1:0],e>0?J(s,0,e):void 0,t,n)})),M(Pt)};export{me as createStore};
Binary file