tinybase 1.3.4 → 2.0.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 (53) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/debug/checkpoints.js +67 -54
  4. package/lib/debug/indexes.js +104 -67
  5. package/lib/debug/metrics.js +185 -129
  6. package/lib/debug/persisters.js +2 -1
  7. package/lib/debug/queries.d.ts +3054 -0
  8. package/lib/debug/queries.js +880 -0
  9. package/lib/debug/relationships.d.ts +6 -5
  10. package/lib/debug/relationships.js +102 -66
  11. package/lib/debug/store.d.ts +137 -66
  12. package/lib/debug/store.js +215 -119
  13. package/lib/debug/tinybase.d.ts +1 -0
  14. package/lib/debug/tinybase.js +892 -175
  15. package/lib/debug/ui-react.d.ts +2004 -195
  16. package/lib/debug/ui-react.js +273 -77
  17. package/lib/indexes.js +1 -1
  18. package/lib/indexes.js.gz +0 -0
  19. package/lib/metrics.js +1 -1
  20. package/lib/metrics.js.gz +0 -0
  21. package/lib/queries.d.ts +3054 -0
  22. package/lib/queries.js +1 -0
  23. package/lib/queries.js.gz +0 -0
  24. package/lib/relationships.d.ts +6 -5
  25. package/lib/relationships.js +1 -1
  26. package/lib/relationships.js.gz +0 -0
  27. package/lib/store.d.ts +137 -66
  28. package/lib/store.js +1 -1
  29. package/lib/store.js.gz +0 -0
  30. package/lib/tinybase.d.ts +1 -0
  31. package/lib/tinybase.js +1 -1
  32. package/lib/tinybase.js.gz +0 -0
  33. package/lib/ui-react.d.ts +2004 -195
  34. package/lib/ui-react.js +1 -1
  35. package/lib/ui-react.js.gz +0 -0
  36. package/lib/umd/checkpoints.js +1 -1
  37. package/lib/umd/checkpoints.js.gz +0 -0
  38. package/lib/umd/indexes.js +1 -1
  39. package/lib/umd/indexes.js.gz +0 -0
  40. package/lib/umd/metrics.js +1 -1
  41. package/lib/umd/metrics.js.gz +0 -0
  42. package/lib/umd/queries.js +1 -0
  43. package/lib/umd/queries.js.gz +0 -0
  44. package/lib/umd/relationships.js +1 -1
  45. package/lib/umd/relationships.js.gz +0 -0
  46. package/lib/umd/store.js +1 -1
  47. package/lib/umd/store.js.gz +0 -0
  48. package/lib/umd/tinybase.js +1 -1
  49. package/lib/umd/tinybase.js.gz +0 -0
  50. package/lib/umd/ui-react.js +1 -1
  51. package/lib/umd/ui-react.js.gz +0 -0
  52. package/package.json +22 -22
  53. package/readme.md +2 -2
@@ -35,7 +35,8 @@ const useStore = (id) => useThing(id, 0);
35
35
  const useMetrics = (id) => useThing(id, 2);
36
36
  const useIndexes = (id) => useThing(id, 4);
37
37
  const useRelationships = (id) => useThing(id, 6);
38
- const useCheckpoints = (id) => useThing(id, 8);
38
+ const useQueries = (id) => useThing(id, 8);
39
+ const useCheckpoints = (id) => useThing(id, 10);
39
40
  const useStoreOrStoreId = (storeOrStoreId) =>
40
41
  useThingOrThingId(storeOrStoreId, 0);
41
42
  const useMetricsOrMetricsId = (metricsOrMetricsId) =>
@@ -44,8 +45,10 @@ const useIndexesOrIndexesId = (indexesOrIndexesId) =>
44
45
  useThingOrThingId(indexesOrIndexesId, 4);
45
46
  const useRelationshipsOrRelationshipsId = (relationshipsOrRelationshipsId) =>
46
47
  useThingOrThingId(relationshipsOrRelationshipsId, 6);
48
+ const useQueriesOrQueriesId = (queriesOrQueriesId) =>
49
+ useThingOrThingId(queriesOrQueriesId, 8);
47
50
  const useCheckpointsOrCheckpointsId = (checkpointsOrCheckpointsId) =>
48
- useThingOrThingId(checkpointsOrCheckpointsId, 8);
51
+ useThingOrThingId(checkpointsOrCheckpointsId, 10);
49
52
 
50
53
  const {useCallback, useEffect, useMemo: useMemo$1, useState} = React;
51
54
  const useCreate = (store, create, createDeps = []) => {
@@ -53,18 +56,24 @@ const useCreate = (store, create, createDeps = []) => {
53
56
  useEffect(() => () => thing.destroy(), [thing]);
54
57
  return thing;
55
58
  };
56
- const useListenable = (listenable, thing, defaulted, ...args) => {
59
+ const useListenable = (
60
+ listenable,
61
+ thing,
62
+ defaulted,
63
+ preArgs = [],
64
+ ...postArgs
65
+ ) => {
57
66
  const getListenable = thing?.['get' + listenable] ?? (() => defaulted);
58
- const immediateListenable = getListenable(...args);
67
+ const immediateListenable = getListenable(...preArgs);
59
68
  const [, setListenable] = useState(immediateListenable);
60
69
  useEffect(() => {
61
70
  const listenerId = thing?.[`add${listenable}Listener`]?.(
62
- ...args,
63
- () => setListenable(getListenable(...args)),
64
- false,
71
+ ...preArgs,
72
+ () => setListenable(getListenable(...preArgs)),
73
+ ...postArgs,
65
74
  );
66
75
  return () => thing?.delListener(listenerId);
67
- }, [thing, listenable, setListenable, getListenable, ...args]);
76
+ }, [thing, listenable, setListenable, getListenable, ...preArgs]);
68
77
  return immediateListenable;
69
78
  };
70
79
  const useListener = (
@@ -72,17 +81,17 @@ const useListener = (
72
81
  thing,
73
82
  listener,
74
83
  listenerDeps = [],
75
- mutator,
76
- ...args
84
+ preArgs = [],
85
+ ...postArgs
77
86
  ) => {
78
87
  useEffect(() => {
79
88
  const listenerId = thing?.[`add${listenable}Listener`]?.(
80
- ...args,
89
+ ...preArgs,
81
90
  listener,
82
- mutator,
91
+ ...postArgs,
83
92
  );
84
93
  return () => thing?.delListener(listenerId);
85
- }, [thing, listenable, ...listenerDeps, mutator, ...args]);
94
+ }, [thing, listenable, ...listenerDeps, ...preArgs, ...postArgs]);
86
95
  };
87
96
  const useSetCallback = (
88
97
  storeOrStoreId,
@@ -128,31 +137,40 @@ const useCreateStore = (create, createDeps = []) =>
128
137
  useMemo$1(create, createDeps);
129
138
  const useTables = (storeOrStoreId) =>
130
139
  useListenable('Tables', useStoreOrStoreId(storeOrStoreId), {});
131
- const useTableIds = (storeOrStoreId) =>
132
- useListenable('TableIds', useStoreOrStoreId(storeOrStoreId), []);
140
+ const useTableIds = (storeOrStoreId, trackReorder) =>
141
+ useListenable(
142
+ 'TableIds',
143
+ useStoreOrStoreId(storeOrStoreId),
144
+ [],
145
+ [],
146
+ trackReorder,
147
+ );
133
148
  const useTable = (tableId, storeOrStoreId) =>
134
- useListenable('Table', useStoreOrStoreId(storeOrStoreId), {}, tableId);
135
- const useRowIds = (tableId, storeOrStoreId) =>
136
- useListenable('RowIds', useStoreOrStoreId(storeOrStoreId), [], tableId);
149
+ useListenable('Table', useStoreOrStoreId(storeOrStoreId), {}, [tableId]);
150
+ const useRowIds = (tableId, storeOrStoreId, trackReorder) =>
151
+ useListenable(
152
+ 'RowIds',
153
+ useStoreOrStoreId(storeOrStoreId),
154
+ [],
155
+ [tableId],
156
+ trackReorder,
157
+ );
137
158
  const useRow = (tableId, rowId, storeOrStoreId) =>
138
- useListenable('Row', useStoreOrStoreId(storeOrStoreId), {}, tableId, rowId);
139
- const useCellIds = (tableId, rowId, storeOrStoreId) =>
159
+ useListenable('Row', useStoreOrStoreId(storeOrStoreId), {}, [tableId, rowId]);
160
+ const useCellIds = (tableId, rowId, storeOrStoreId, trackReorder) =>
140
161
  useListenable(
141
162
  'CellIds',
142
163
  useStoreOrStoreId(storeOrStoreId),
143
164
  [],
144
- tableId,
145
- rowId,
165
+ [tableId, rowId],
166
+ trackReorder,
146
167
  );
147
168
  const useCell = (tableId, rowId, cellId, storeOrStoreId) =>
148
- useListenable(
149
- 'Cell',
150
- useStoreOrStoreId(storeOrStoreId),
151
- void 0,
169
+ useListenable('Cell', useStoreOrStoreId(storeOrStoreId), void 0, [
152
170
  tableId,
153
171
  rowId,
154
172
  cellId,
155
- );
173
+ ]);
156
174
  const useSetTablesCallback = (
157
175
  getTables,
158
176
  getTablesDeps,
@@ -294,14 +312,23 @@ const useTablesListener = (listener, listenerDeps, mutator, storeOrStoreId) =>
294
312
  useStoreOrStoreId(storeOrStoreId),
295
313
  listener,
296
314
  listenerDeps,
315
+ [],
297
316
  mutator,
298
317
  );
299
- const useTableIdsListener = (listener, listenerDeps, mutator, storeOrStoreId) =>
318
+ const useTableIdsListener = (
319
+ listener,
320
+ listenerDeps,
321
+ trackReorder,
322
+ mutator,
323
+ storeOrStoreId,
324
+ ) =>
300
325
  useListener(
301
326
  'TableIds',
302
327
  useStoreOrStoreId(storeOrStoreId),
303
328
  listener,
304
329
  listenerDeps,
330
+ [],
331
+ trackReorder,
305
332
  mutator,
306
333
  );
307
334
  const useTableListener = (
@@ -316,13 +343,14 @@ const useTableListener = (
316
343
  useStoreOrStoreId(storeOrStoreId),
317
344
  listener,
318
345
  listenerDeps,
346
+ [tableId],
319
347
  mutator,
320
- tableId,
321
348
  );
322
349
  const useRowIdsListener = (
323
350
  tableId,
324
351
  listener,
325
352
  listenerDeps,
353
+ trackReorder,
326
354
  mutator,
327
355
  storeOrStoreId,
328
356
  ) =>
@@ -331,8 +359,9 @@ const useRowIdsListener = (
331
359
  useStoreOrStoreId(storeOrStoreId),
332
360
  listener,
333
361
  listenerDeps,
362
+ [tableId],
363
+ trackReorder,
334
364
  mutator,
335
- tableId,
336
365
  );
337
366
  const useRowListener = (
338
367
  tableId,
@@ -347,15 +376,15 @@ const useRowListener = (
347
376
  useStoreOrStoreId(storeOrStoreId),
348
377
  listener,
349
378
  listenerDeps,
379
+ [tableId, rowId],
350
380
  mutator,
351
- tableId,
352
- rowId,
353
381
  );
354
382
  const useCellIdsListener = (
355
383
  tableId,
356
384
  rowId,
357
385
  listener,
358
386
  listenerDeps,
387
+ trackReorder,
359
388
  mutator,
360
389
  storeOrStoreId,
361
390
  ) =>
@@ -364,9 +393,9 @@ const useCellIdsListener = (
364
393
  useStoreOrStoreId(storeOrStoreId),
365
394
  listener,
366
395
  listenerDeps,
396
+ [tableId, rowId],
397
+ trackReorder,
367
398
  mutator,
368
- tableId,
369
- rowId,
370
399
  );
371
400
  const useCellListener = (
372
401
  tableId,
@@ -382,20 +411,15 @@ const useCellListener = (
382
411
  useStoreOrStoreId(storeOrStoreId),
383
412
  listener,
384
413
  listenerDeps,
414
+ [tableId, rowId, cellId],
385
415
  mutator,
386
- tableId,
387
- rowId,
388
- cellId,
389
416
  );
390
417
  const useCreateMetrics = (store, create, createDeps) =>
391
418
  useCreate(store, create, createDeps);
392
419
  const useMetric = (metricId, metricsOrMetricsId) =>
393
- useListenable(
394
- 'Metric',
395
- useMetricsOrMetricsId(metricsOrMetricsId),
396
- void 0,
420
+ useListenable('Metric', useMetricsOrMetricsId(metricsOrMetricsId), void 0, [
397
421
  metricId,
398
- );
422
+ ]);
399
423
  const useMetricListener = (
400
424
  metricId,
401
425
  listener,
@@ -407,8 +431,7 @@ const useMetricListener = (
407
431
  useMetricsOrMetricsId(metricsOrMetricsId),
408
432
  listener,
409
433
  listenerDeps,
410
- void 0,
411
- metricId,
434
+ [metricId],
412
435
  );
413
436
  const useCreateIndexes = (store, create, createDeps) =>
414
437
  useCreate(store, create, createDeps);
@@ -417,15 +440,14 @@ const useSliceIds = (indexId, indexesOrIndexesId) =>
417
440
  'SliceIds',
418
441
  useIndexesOrIndexesId(indexesOrIndexesId),
419
442
  [],
420
- indexId,
443
+ [indexId],
421
444
  );
422
445
  const useSliceRowIds = (indexId, sliceId, indexesOrIndexesId) =>
423
446
  useListenable(
424
447
  'SliceRowIds',
425
448
  useIndexesOrIndexesId(indexesOrIndexesId),
426
449
  [],
427
- indexId,
428
- sliceId,
450
+ [indexId, sliceId],
429
451
  );
430
452
  const useSliceIdsListener = (
431
453
  indexId,
@@ -438,8 +460,7 @@ const useSliceIdsListener = (
438
460
  useIndexesOrIndexesId(indexesOrIndexesId),
439
461
  listener,
440
462
  listenerDeps,
441
- void 0,
442
- indexId,
463
+ [indexId],
443
464
  );
444
465
  const useSliceRowIdsListener = (
445
466
  indexId,
@@ -453,9 +474,7 @@ const useSliceRowIdsListener = (
453
474
  useIndexesOrIndexesId(indexesOrIndexesId),
454
475
  listener,
455
476
  listenerDeps,
456
- void 0,
457
- indexId,
458
- sliceId,
477
+ [indexId, sliceId],
459
478
  );
460
479
  const useCreateRelationships = (store, create, createDeps) =>
461
480
  useCreate(store, create, createDeps);
@@ -468,8 +487,7 @@ const useRemoteRowId = (
468
487
  'RemoteRowId',
469
488
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
470
489
  void 0,
471
- relationshipId,
472
- localRowId,
490
+ [relationshipId, localRowId],
473
491
  );
474
492
  const useLocalRowIds = (
475
493
  relationshipId,
@@ -480,8 +498,7 @@ const useLocalRowIds = (
480
498
  'LocalRowIds',
481
499
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
482
500
  [],
483
- relationshipId,
484
- remoteRowId,
501
+ [relationshipId, remoteRowId],
485
502
  );
486
503
  const useLinkedRowIds = (
487
504
  relationshipId,
@@ -492,8 +509,7 @@ const useLinkedRowIds = (
492
509
  'LinkedRowIds',
493
510
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
494
511
  [],
495
- relationshipId,
496
- firstRowId,
512
+ [relationshipId, firstRowId],
497
513
  );
498
514
  const useRemoteRowIdListener = (
499
515
  relationshipId,
@@ -507,9 +523,7 @@ const useRemoteRowIdListener = (
507
523
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
508
524
  listener,
509
525
  listenerDeps,
510
- void 0,
511
- relationshipId,
512
- localRowId,
526
+ [relationshipId, localRowId],
513
527
  );
514
528
  const useLocalRowIdsListener = (
515
529
  relationshipId,
@@ -523,9 +537,7 @@ const useLocalRowIdsListener = (
523
537
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
524
538
  listener,
525
539
  listenerDeps,
526
- void 0,
527
- relationshipId,
528
- remoteRowId,
540
+ [relationshipId, remoteRowId],
529
541
  );
530
542
  const useLinkedRowIdsListener = (
531
543
  relationshipId,
@@ -539,9 +551,111 @@ const useLinkedRowIdsListener = (
539
551
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
540
552
  listener,
541
553
  listenerDeps,
554
+ [relationshipId, firstRowId],
555
+ );
556
+ const useCreateQueries = (store, create, createDeps) =>
557
+ useCreate(store, create, createDeps);
558
+ const useResultTable = (queryId, queriesOrQueriesId) =>
559
+ useListenable('ResultTable', useQueriesOrQueriesId(queriesOrQueriesId), {}, [
560
+ queryId,
561
+ ]);
562
+ const useResultRowIds = (queryId, queriesOrQueriesId, trackReorder) =>
563
+ useListenable(
564
+ 'ResultRowIds',
565
+ useQueriesOrQueriesId(queriesOrQueriesId),
566
+ [],
567
+ [queryId],
568
+ trackReorder,
569
+ );
570
+ const useResultRow = (queryId, rowId, queriesOrQueriesId) =>
571
+ useListenable('ResultRow', useQueriesOrQueriesId(queriesOrQueriesId), {}, [
572
+ queryId,
573
+ rowId,
574
+ ]);
575
+ const useResultCellIds = (queryId, rowId, queriesOrQueriesId) =>
576
+ useListenable(
577
+ 'ResultCellIds',
578
+ useQueriesOrQueriesId(queriesOrQueriesId),
579
+ [],
580
+ [queryId, rowId],
581
+ );
582
+ const useResultCell = (queryId, rowId, cellId, queriesOrQueriesId) =>
583
+ useListenable(
584
+ 'ResultCell',
585
+ useQueriesOrQueriesId(queriesOrQueriesId),
542
586
  void 0,
543
- relationshipId,
544
- firstRowId,
587
+ [queryId, rowId, cellId],
588
+ );
589
+ const useResultTableListener = (
590
+ queryId,
591
+ listener,
592
+ listenerDeps,
593
+ queriesOrQueriesId,
594
+ ) =>
595
+ useListener(
596
+ 'ResultTable',
597
+ useQueriesOrQueriesId(queriesOrQueriesId),
598
+ listener,
599
+ listenerDeps,
600
+ [queryId],
601
+ );
602
+ const useResultRowIdsListener = (
603
+ queryId,
604
+ listener,
605
+ listenerDeps,
606
+ trackReorder,
607
+ queriesOrQueriesId,
608
+ ) =>
609
+ useListener(
610
+ 'ResultRowIds',
611
+ useQueriesOrQueriesId(queriesOrQueriesId),
612
+ listener,
613
+ listenerDeps,
614
+ [queryId],
615
+ trackReorder,
616
+ );
617
+ const useResultRowListener = (
618
+ queryId,
619
+ rowId,
620
+ listener,
621
+ listenerDeps,
622
+ queriesOrQueriesId,
623
+ ) =>
624
+ useListener(
625
+ 'ResultRow',
626
+ useQueriesOrQueriesId(queriesOrQueriesId),
627
+ listener,
628
+ listenerDeps,
629
+ [queryId, rowId],
630
+ );
631
+ const useResultCellIdsListener = (
632
+ queryId,
633
+ rowId,
634
+ listener,
635
+ listenerDeps,
636
+ queriesOrQueriesId,
637
+ ) =>
638
+ useListener(
639
+ 'ResultCellIds',
640
+ useQueriesOrQueriesId(queriesOrQueriesId),
641
+ listener,
642
+ listenerDeps,
643
+ [queryId, rowId],
644
+ );
645
+ const useResultCellListener = (
646
+ queryId,
647
+ rowId,
648
+ cellId,
649
+ listener,
650
+ listenerDeps,
651
+ queriesOrQueriesId,
652
+ ) =>
653
+ useListener(
654
+ 'ResultCell',
655
+ useQueriesOrQueriesId(queriesOrQueriesId),
656
+ listener,
657
+ listenerDeps,
658
+ [queryId, rowId, cellId],
545
659
  );
546
660
  const useCreateCheckpoints = (store, create, createDeps) =>
547
661
  useCreate(store, create, createDeps);
@@ -556,7 +670,7 @@ const useCheckpoint = (checkpointId, checkpointsOrCheckpointsId) =>
556
670
  'Checkpoint',
557
671
  useCheckpointsOrCheckpointsId(checkpointsOrCheckpointsId),
558
672
  void 0,
559
- checkpointId,
673
+ [checkpointId],
560
674
  );
561
675
  const useSetCheckpointCallback = (
562
676
  getCheckpoint = getUndefined,
@@ -604,7 +718,8 @@ const useUndoInformation = (checkpointsOrCheckpointsId) => {
604
718
  !arrayIsEmpty(backwardIds),
605
719
  useGoBackwardCallback(checkpoints),
606
720
  currentId,
607
- ifNotUndefined(currentId, (id) => checkpoints?.getCheckpoint(id)) ?? '',
721
+ ifNotUndefined(currentId, (id) => checkpoints?.getCheckpoint(id)) ??
722
+ EMPTY_STRING,
608
723
  ];
609
724
  };
610
725
  const useRedoInformation = (checkpointsOrCheckpointsId) => {
@@ -614,7 +729,8 @@ const useRedoInformation = (checkpointsOrCheckpointsId) => {
614
729
  !isUndefined(forwardId),
615
730
  useGoForwardCallback(checkpoints),
616
731
  forwardId,
617
- ifNotUndefined(forwardId, (id) => checkpoints?.getCheckpoint(id)) ?? '',
732
+ ifNotUndefined(forwardId, (id) => checkpoints?.getCheckpoint(id)) ??
733
+ EMPTY_STRING,
618
734
  ];
619
735
  };
620
736
  const useCheckpointIdsListener = (
@@ -639,8 +755,7 @@ const useCheckpointListener = (
639
755
  useCheckpointsOrCheckpointsId(checkpointsOrCheckpointsId),
640
756
  listener,
641
757
  listenerDeps,
642
- void 0,
643
- checkpointId,
758
+ [checkpointId],
644
759
  );
645
760
  const useCreatePersister = (
646
761
  store,
@@ -738,6 +853,8 @@ const Provider = ({
738
853
  indexesById,
739
854
  relationships,
740
855
  relationshipsById,
856
+ queries,
857
+ queriesById,
741
858
  checkpoints,
742
859
  checkpointsById,
743
860
  children,
@@ -756,8 +873,10 @@ const Provider = ({
756
873
  {...thingsOrThingsId[5], ...indexesById},
757
874
  relationships ?? thingsOrThingsId[6],
758
875
  {...thingsOrThingsId[7], ...relationshipsById},
759
- checkpoints ?? thingsOrThingsId[8],
760
- {...thingsOrThingsId[9], ...checkpointsById},
876
+ queries ?? thingsOrThingsId[8],
877
+ {...thingsOrThingsId[9], ...queriesById},
878
+ checkpoints ?? thingsOrThingsId[10],
879
+ {...thingsOrThingsId[11], ...checkpointsById},
761
880
  ],
762
881
  [
763
882
  store,
@@ -768,6 +887,8 @@ const Provider = ({
768
887
  indexesById,
769
888
  relationships,
770
889
  relationshipsById,
890
+ queries,
891
+ queriesById,
771
892
  checkpoints,
772
893
  checkpointsById,
773
894
  thingsOrThingsId,
@@ -795,13 +916,14 @@ const RowView = ({
795
916
  tableId,
796
917
  rowId,
797
918
  store,
919
+ trackReorder,
798
920
  cellComponent: Cell = CellView,
799
921
  getCellComponentProps,
800
922
  separator,
801
923
  debugIds,
802
924
  }) =>
803
925
  wrap(
804
- arrayMap(useCellIds(tableId, rowId, store), (cellId) =>
926
+ arrayMap(useCellIds(tableId, rowId, store, trackReorder), (cellId) =>
805
927
  /* @__PURE__ */ createElement(Cell, {
806
928
  ...getProps(getCellComponentProps, cellId),
807
929
  key: cellId,
@@ -819,13 +941,14 @@ const RowView = ({
819
941
  const TableView = ({
820
942
  tableId,
821
943
  store,
944
+ trackReorder,
822
945
  rowComponent: Row = RowView,
823
946
  getRowComponentProps,
824
947
  separator,
825
948
  debugIds,
826
949
  }) =>
827
950
  wrap(
828
- arrayMap(useRowIds(tableId, store), (rowId) =>
951
+ arrayMap(useRowIds(tableId, store, trackReorder), (rowId) =>
829
952
  /* @__PURE__ */ createElement(Row, {
830
953
  ...getProps(getRowComponentProps, rowId),
831
954
  key: rowId,
@@ -841,13 +964,14 @@ const TableView = ({
841
964
  );
842
965
  const TablesView = ({
843
966
  store,
967
+ trackReorder,
844
968
  tableComponent: Table = TableView,
845
969
  getTableComponentProps,
846
970
  separator,
847
971
  debugIds,
848
972
  }) =>
849
973
  wrap(
850
- arrayMap(useTableIds(store), (tableId) =>
974
+ arrayMap(useTableIds(store, trackReorder), (tableId) =>
851
975
  /* @__PURE__ */ createElement(Table, {
852
976
  ...getProps(getTableComponentProps, tableId),
853
977
  key: tableId,
@@ -953,9 +1077,66 @@ const LocalRowsView = (props) =>
953
1077
  useComponentPerRow(props, useLocalRowIds, props.remoteRowId);
954
1078
  const LinkedRowsView = (props) =>
955
1079
  useComponentPerRow(props, useLinkedRowIds, props.firstRowId);
1080
+ const ResultCellView = ({queryId, rowId, cellId, queries, debugIds}) =>
1081
+ wrap(
1082
+ EMPTY_STRING +
1083
+ (useResultCell(queryId, rowId, cellId, queries) ?? EMPTY_STRING),
1084
+ void 0,
1085
+ debugIds,
1086
+ cellId,
1087
+ );
1088
+ const ResultRowView = ({
1089
+ queryId,
1090
+ rowId,
1091
+ queries,
1092
+ resultCellComponent: ResultCell = ResultCellView,
1093
+ getResultCellComponentProps,
1094
+ separator,
1095
+ debugIds,
1096
+ }) =>
1097
+ wrap(
1098
+ arrayMap(useResultCellIds(queryId, rowId, queries), (cellId) =>
1099
+ /* @__PURE__ */ createElement(ResultCell, {
1100
+ ...getProps(getResultCellComponentProps, cellId),
1101
+ key: cellId,
1102
+ queryId,
1103
+ rowId,
1104
+ cellId,
1105
+ queries,
1106
+ debugIds,
1107
+ }),
1108
+ ),
1109
+ separator,
1110
+ debugIds,
1111
+ rowId,
1112
+ );
1113
+ const ResultTableView = ({
1114
+ queryId,
1115
+ queries,
1116
+ trackReorder,
1117
+ resultRowComponent: ResultRow = ResultRowView,
1118
+ getResultRowComponentProps,
1119
+ separator,
1120
+ debugIds,
1121
+ }) =>
1122
+ wrap(
1123
+ arrayMap(useResultRowIds(queryId, queries, trackReorder), (rowId) =>
1124
+ /* @__PURE__ */ createElement(ResultRow, {
1125
+ ...getProps(getResultRowComponentProps, rowId),
1126
+ key: rowId,
1127
+ queryId,
1128
+ rowId,
1129
+ queries,
1130
+ debugIds,
1131
+ }),
1132
+ ),
1133
+ separator,
1134
+ debugIds,
1135
+ queryId,
1136
+ );
956
1137
  const CheckpointView = ({checkpoints, checkpointId, debugIds}) =>
957
1138
  wrap(
958
- useCheckpoint(checkpointId, checkpoints) ?? '',
1139
+ useCheckpoint(checkpointId, checkpoints) ?? EMPTY_STRING,
959
1140
  void 0,
960
1141
  debugIds,
961
1142
  checkpointId,
@@ -982,6 +1163,9 @@ export {
982
1163
  MetricView,
983
1164
  Provider,
984
1165
  RemoteRowView,
1166
+ ResultCellView,
1167
+ ResultRowView,
1168
+ ResultTableView,
985
1169
  RowView,
986
1170
  SliceView,
987
1171
  TableView,
@@ -1000,6 +1184,7 @@ export {
1000
1184
  useCreateIndexes,
1001
1185
  useCreateMetrics,
1002
1186
  useCreatePersister,
1187
+ useCreateQueries,
1003
1188
  useCreateRelationships,
1004
1189
  useCreateStore,
1005
1190
  useDelCellCallback,
@@ -1017,10 +1202,21 @@ export {
1017
1202
  useMetric,
1018
1203
  useMetricListener,
1019
1204
  useMetrics,
1205
+ useQueries,
1020
1206
  useRedoInformation,
1021
1207
  useRelationships,
1022
1208
  useRemoteRowId,
1023
1209
  useRemoteRowIdListener,
1210
+ useResultCell,
1211
+ useResultCellIds,
1212
+ useResultCellIdsListener,
1213
+ useResultCellListener,
1214
+ useResultRow,
1215
+ useResultRowIds,
1216
+ useResultRowIdsListener,
1217
+ useResultRowListener,
1218
+ useResultTable,
1219
+ useResultTableListener,
1024
1220
  useRow,
1025
1221
  useRowIds,
1026
1222
  useRowIdsListener,
package/lib/indexes.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),s=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),n=(e,t)=>e.sort(t),o=(e,t)=>e.forEach(t),r=e=>e.length,c=e=>0==r(e),d=e=>e.slice(1),l=e=>null==e,i=(e,t,s)=>l(e)?s?.():t(e),a=(e,t)=>e?.has(t)??!1,h=e=>l(e)||0==(e=>e.size)(e),u=e=>e.clear(),I=(e,t)=>e?.forEach(t),f=(e,t)=>e?.delete(t),g=e=>new Map(e),S=e=>[...e?.keys()??[]],w=(e,t)=>e?.get(t),p=(e,t)=>I(e,((e,s)=>t(s,e))),L=(e,t,s)=>l(s)?(f(e,t),e):e?.set(t,s),x=(e,t,s)=>(a(e,t)||e.set(t,s()),w(e,t)),v=e=>new Set(e),E=(e,t)=>e?.add(t),R=(s,n)=>e(s)==t?e=>e(s):s??(()=>n??""),b=(e,t)=>e<t?-1:1,y=(e,t,s)=>r(s)<2?E(c(s)?e:x(e,s[0],v),t):y(x(e,s[0],g),t,d(s)),T=e=>{const t=(s,n,...r)=>i(s,(s=>c(r)?e(s,n):o([r[0],null],(e=>t(w(s,e),n,...d(r))))));return t},k=Object.freeze,z=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((e=>{const t=g(),c=g(),[d,x,z,C,D,M,j,O,W,m]=((e,t,s)=>{const n=e.hasRow,r=g(),c=g(),d=g(),h=g(),f=g(),x=t=>i(w(f,t),(s=>{I(s,e.delListener),L(f,t)})),E=e=>{L(r,e),L(c,e),L(d,e),L(h,e),x(e)};return[()=>e,()=>S(r),e=>p(c,e),e=>a(c,e),e=>w(r,e),e=>w(c,e),(e,t)=>L(c,e,t),(i,S,E,R,b)=>{const y=g(),T=g();L(r,i,S),a(c,i)||(L(c,i,t()),L(d,i,g()),L(h,i,g()));const k=w(d,i),z=w(h,i),C=t=>{const o=s=>e.getCell(S,t,s),r=w(k,t),c=n(S,t)?s(R(o,t)):void 0;if(r!=c&&L(y,t,[r,c]),!l(b)){const e=w(z,t),s=n(S,t)?b(o,t):void 0;e!=s&&L(T,t,s)}},D=e=>{E((()=>{I(y,(([,e],t)=>L(k,t,e))),I(T,((e,t)=>L(z,t,e)))}),y,T,k,z,e),u(y),u(T)};p(k,C),e.hasTable(S)&&o(e.getRowIds(S),(e=>{a(k,e)||C(e)})),D(!0),x(i),L(f,i,v([e.addRowListener(S,null,((e,t,s)=>C(s))),e.addTableListener(S,(()=>D()))]))},E,()=>p(f,E)]})(e,g,(e=>l(e)?"":e+"")),[q,A,B]=(e=>{let t,s=0;const n=[],c=g();return[(o,r,d=[])=>{t??=e();const l=n.pop()??""+s++;return L(c,l,[o,r,d]),y(r,l,d),l},(e,s=[],...n)=>T(I)(e,(e=>i(w(c,e),(([e])=>e(t,...s,...n)))),...s),e=>i(w(c,e),(([,t,s])=>(T(f)(t,e,...s),L(c,e),r(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>i(w(c,e),(([e,,c])=>{const d=(...i)=>{const a=r(i);a==r(c)?e(t,...i,...n(i)):l(c[a])?o(s[a](...i),(e=>d(...i,e))):d(...i,c[a])};d()}))]})((()=>G)),F=(t,s,n)=>{const o=D(t);I(n,((t,n)=>s(n,(s=>I(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},G={setIndexDefinition:(e,o,r,d,u,S=b)=>{const x=l(u)?void 0:([e],[t])=>u(e,t);return O(e,o,((o,r,u,R,b,y)=>{let T=0;const k=v(),z=v(),C=M(e);if(I(r,(([e,t],s)=>{l(e)||(E(k,e),i(w(C,e),(t=>{f(t,s),h(t)&&(L(C,e),T=1)}))),l(t)||(E(k,t),a(C,t)||(L(C,t,v()),T=1),E(w(C,t),s),l(d)||E(z,t))})),o(),h(b)||(y?p(C,(e=>E(z,e))):p(u,(e=>i(w(R,e),(e=>E(z,e))))),I(z,(e=>{const t=(t,s)=>S(w(b,t),w(b,s),e),o=[...w(C,e)];s(o,t)||(L(C,e,v(n(o,t))),E(k,e))}))),(T||y)&&!l(x)){const t=[...C];s(t,x)||(j(e,g(n(t,x))),T=1)}T&&A(t,[e]),I(k,(t=>A(c,[e,t])))}),R(r),i(d,R)),G},delIndexDefinition:e=>(W(e),G),getStore:d,getIndexIds:x,forEachIndex:e=>z(((t,s)=>e(t,(e=>F(t,e,s))))),forEachSlice:(e,t)=>F(e,t,M(e)),hasIndex:C,hasSlice:(e,t)=>a(M(e),t),getTableId:D,getSliceIds:e=>S(M(e)),getSliceRowIds:(e,t)=>[...w(M(e),t)?.values()??[]],addSliceIdsListener:(e,s)=>q(s,t,[e]),addSliceRowIdsListener:(e,t,s)=>q(s,c,[e,t]),delListener:e=>(B(e),G),destroy:m,getListenerStats:()=>({})};return k(G)}));export{z as createIndexes};
1
+ const e=e=>typeof e,t=e(""),n=(e,t)=>e.every(t),s=(e,t)=>n(e,((n,s)=>0==s||t(e[s-1],n)<=0)),o=(e,t)=>e.sort(t),r=(e,t)=>e.forEach(t),c=e=>e.length,d=(e,...t)=>e.push(...t),l=e=>null==e,i=(e,t,n)=>l(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,u=e=>l(e)||0==(e=>e.size)(e),h=e=>[...e?.values()??[]],f=e=>e.clear(),I=(e,t)=>e?.forEach(t),g=(e,t)=>e?.delete(t),S=e=>new Map(e),w=e=>[...e?.keys()??[]],L=(e,t)=>e?.get(t),p=(e,t)=>I(e,((e,n)=>t(n,e))),v=(e,t,n)=>l(n)?(g(e,t),e):e?.set(t,n),x=(e,t,n)=>(a(e,t)||e.set(t,n()),L(e,t)),E=(e,t,n,s,o=0)=>i((n?x:L)(e,t[o],o>c(t)-2?n:S),(r=>{if(o>c(t)-2)return s?.(r)&&v(e,t[o]),r;const d=E(r,t,n,s,o+1);return u(r)&&v(e,t[o]),d})),R=e=>new Set(e),b=(e,t)=>e?.add(t),y=(e,t,n)=>{const s=e.hasRow,o=S(),d=S(),E=S(),y=S(),T=S(),k=(t,n,...s)=>{const o=x(T,t,R);return r(s,(t=>b(o,t)&&n&&e.callListener(t))),s},z=(t,...n)=>i(L(T,t),(s=>{r(0==c(n)?h(s):n,(t=>{e.delListener(t),g(s,t)})),u(s)&&v(T,t)})),C=(e,n)=>{v(o,e,n),a(d,e)||(v(d,e,t()),v(E,e,S()),v(y,e,S()))},D=e=>{v(o,e),v(d,e),v(E,e),v(y,e),z(e)};return[()=>e,()=>w(o),e=>p(d,e),e=>a(d,e),e=>L(o,e),e=>L(d,e),(e,t)=>v(d,e,t),C,(t,o,c,d,i)=>{C(t,o);const u=S(),h=S(),g=L(E,t),w=L(y,t),x=t=>{const r=n=>e.getCell(o,t,n),c=L(g,t),a=s(o,t)?n(d(r,t)):void 0;if(c!=a&&v(u,t,[c,a]),!l(i)){const e=L(w,t),n=s(o,t)?i(r,t):void 0;e!=n&&v(h,t,n)}},R=e=>{c((()=>{I(u,(([,e],t)=>v(g,t,e))),I(h,((e,t)=>v(w,t,e)))}),u,h,g,w,e),f(u),f(h)};p(g,x),e.hasTable(o)&&r(e.getRowIds(o),(e=>{a(g,e)||x(e)})),R(!0),z(t),k(t,0,e.addRowListener(o,null,((e,t,n)=>x(n))),e.addTableListener(o,(()=>R())))},D,()=>p(T,D),k,z]},T=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),k=(e,t)=>e<t?-1:1,z=(e,t=[""])=>{const n=[],s=(e,o)=>o==c(t)?d(n,e):r([t[o],null],(t=>s(L(e,t),o+1)));return s(e,0),n},C=Object.freeze,D=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=S(),f=S(),[x,D,M,j,O,W,m,,q,A,B]=y(e,S,(e=>l(e)?"":e+"")),[F,G,H]=(e=>{let t,s=0;const o=[],a=S();return[(n,r,c)=>{t??=e();const d=o.pop()??""+s++;return v(a,d,[n,r,c]),b(E(r,c??[""],R),d),d},(e,n,...s)=>r(z(e,n),(e=>I(e,(e=>i(L(a,e),(([e])=>e(t,...n??[],...s))))))),e=>i(L(a,e),(([,t,n])=>(E(t,n??[""],void 0,(t=>(g(t,e),u(t)?1:0))),v(a,e),c(o)<1e3&&d(o,e),n))),(e,t)=>!n(z(e,t),l),(e,n,s)=>i(L(a,e),(([e,,o=[]])=>{const d=(...i)=>{const a=c(i);a==c(o)?e(t,...i,...s(i)):l(o[a])?r(n[a](...i),(e=>d(...i,e))):d(...i,o[a])};d()}))]})((()=>K)),J=(t,n,s)=>{const o=O(t);I(s,((t,s)=>n(s,(n=>I(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},K={setIndexDefinition:(e,n,r,c,d,h=k)=>{const w=l(d)?void 0:([e],[t])=>d(e,t);return q(e,n,((n,r,d,x,E,y)=>{let T=0;const k=R(),z=R(),C=W(e);if(I(r,(([e,t],n)=>{l(e)||(b(k,e),i(L(C,e),(t=>{g(t,n),u(t)&&(v(C,e),T=1)}))),l(t)||(b(k,t),a(C,t)||(v(C,t,R()),T=1),b(L(C,t),n),l(c)||b(z,t))})),n(),u(E)||(y?p(C,(e=>b(z,e))):p(d,(e=>i(L(x,e),(e=>b(z,e))))),I(z,(e=>{const t=(t,n)=>h(L(E,t),L(E,n),e),n=[...L(C,e)];s(n,t)||(v(C,e,R(o(n,t))),b(k,e))}))),(T||y)&&!l(w)){const t=[...C];s(t,w)||(m(e,S(o(t,w))),T=1)}T&&G(t,[e]),I(k,(t=>G(f,[e,t])))}),T(r),i(c,T)),K},delIndexDefinition:e=>(A(e),K),getStore:x,getIndexIds:D,forEachIndex:e=>M(((t,n)=>e(t,(e=>J(t,e,n))))),forEachSlice:(e,t)=>J(e,t,W(e)),hasIndex:j,hasSlice:(e,t)=>a(W(e),t),getTableId:O,getSliceIds:e=>w(W(e)),getSliceRowIds:(e,t)=>h(L(W(e),t)),addSliceIdsListener:(e,n)=>F(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>F(n,f,[e,t]),delListener:e=>(H(e),K),destroy:B,getListenerStats:()=>({})};return C(K)}));export{D as createIndexes};
package/lib/indexes.js.gz CHANGED
Binary file