tinybase 1.3.6 → 2.0.0-beta.2

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 (61) hide show
  1. package/lib/checkpoints.d.ts +4 -3
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/debug/checkpoints.d.ts +4 -3
  5. package/lib/debug/checkpoints.js +69 -56
  6. package/lib/debug/indexes.d.ts +4 -2
  7. package/lib/debug/indexes.js +106 -69
  8. package/lib/debug/metrics.d.ts +1 -1
  9. package/lib/debug/metrics.js +187 -131
  10. package/lib/debug/persisters.d.ts +6 -0
  11. package/lib/debug/persisters.js +2 -1
  12. package/lib/debug/queries.d.ts +3251 -0
  13. package/lib/debug/queries.js +900 -0
  14. package/lib/debug/relationships.d.ts +12 -10
  15. package/lib/debug/relationships.js +104 -68
  16. package/lib/debug/store.d.ts +415 -74
  17. package/lib/debug/store.js +295 -120
  18. package/lib/debug/tinybase.d.ts +1 -0
  19. package/lib/debug/tinybase.js +985 -176
  20. package/lib/debug/ui-react.d.ts +4325 -1754
  21. package/lib/debug/ui-react.js +413 -85
  22. package/lib/indexes.d.ts +4 -2
  23. package/lib/indexes.js +1 -1
  24. package/lib/indexes.js.gz +0 -0
  25. package/lib/metrics.d.ts +1 -1
  26. package/lib/metrics.js +1 -1
  27. package/lib/metrics.js.gz +0 -0
  28. package/lib/persisters.d.ts +6 -0
  29. package/lib/queries.d.ts +3251 -0
  30. package/lib/queries.js +1 -0
  31. package/lib/queries.js.gz +0 -0
  32. package/lib/relationships.d.ts +12 -10
  33. package/lib/relationships.js +1 -1
  34. package/lib/relationships.js.gz +0 -0
  35. package/lib/store.d.ts +415 -74
  36. package/lib/store.js +1 -1
  37. package/lib/store.js.gz +0 -0
  38. package/lib/tinybase.d.ts +1 -0
  39. package/lib/tinybase.js +1 -1
  40. package/lib/tinybase.js.gz +0 -0
  41. package/lib/ui-react.d.ts +4325 -1754
  42. package/lib/ui-react.js +1 -1
  43. package/lib/ui-react.js.gz +0 -0
  44. package/lib/umd/checkpoints.js +1 -1
  45. package/lib/umd/checkpoints.js.gz +0 -0
  46. package/lib/umd/indexes.js +1 -1
  47. package/lib/umd/indexes.js.gz +0 -0
  48. package/lib/umd/metrics.js +1 -1
  49. package/lib/umd/metrics.js.gz +0 -0
  50. package/lib/umd/queries.js +1 -0
  51. package/lib/umd/queries.js.gz +0 -0
  52. package/lib/umd/relationships.js +1 -1
  53. package/lib/umd/relationships.js.gz +0 -0
  54. package/lib/umd/store.js +1 -1
  55. package/lib/umd/store.js.gz +0 -0
  56. package/lib/umd/tinybase.js +1 -1
  57. package/lib/umd/tinybase.js.gz +0 -0
  58. package/lib/umd/ui-react.js +1 -1
  59. package/lib/umd/ui-react.js.gz +0 -0
  60. package/package.json +4 -4
  61. 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,46 +45,64 @@ 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
- const {useCallback, useEffect, useMemo: useMemo$1, useState} = React;
53
+ const {useCallback, useEffect, useMemo: useMemo$1, useRef, useState} = React;
51
54
  const useCreate = (store, create, createDeps = []) => {
52
55
  const thing = useMemo$1(() => create(store), [store, ...createDeps]);
53
56
  useEffect(() => () => thing.destroy(), [thing]);
54
57
  return thing;
55
58
  };
56
- const useListenable = (listenable, thing, defaulted, ...args) => {
57
- const getListenable = thing?.['get' + listenable] ?? (() => defaulted);
58
- const immediateListenable = getListenable(...args);
59
- const [, setListenable] = useState(immediateListenable);
60
- useEffect(() => {
61
- const listenerId = thing?.[`add${listenable}Listener`]?.(
62
- ...args,
63
- () => setListenable(getListenable(...args)),
64
- false,
65
- );
66
- return () => thing?.delListener(listenerId);
67
- }, [thing, listenable, setListenable, getListenable, ...args]);
68
- return immediateListenable;
59
+ const useListenable = (
60
+ listenable,
61
+ thing,
62
+ defaulted,
63
+ preArgs = [],
64
+ postArgs = [],
65
+ getFromListenerArg,
66
+ ) => {
67
+ const [, rerender] = useState();
68
+ const getResult = useCallback(
69
+ () => thing?.['get' + listenable]?.(...preArgs) ?? defaulted,
70
+ [thing, ...preArgs],
71
+ );
72
+ const [initialResult] = useState(getResult);
73
+ const result = useRef(initialResult);
74
+ useMemo$1(() => (result.current = getResult()), [getResult]);
75
+ useListener(
76
+ listenable,
77
+ thing,
78
+ (...listenerArgs) => {
79
+ result.current = isUndefined(getFromListenerArg)
80
+ ? getResult()
81
+ : listenerArgs[getFromListenerArg];
82
+ rerender([]);
83
+ },
84
+ [],
85
+ preArgs,
86
+ ...postArgs,
87
+ );
88
+ return result.current;
69
89
  };
70
90
  const useListener = (
71
91
  listenable,
72
92
  thing,
73
93
  listener,
74
94
  listenerDeps = [],
75
- mutator,
76
- ...args
77
- ) => {
95
+ preArgs = [],
96
+ ...postArgs
97
+ ) =>
78
98
  useEffect(() => {
79
99
  const listenerId = thing?.[`add${listenable}Listener`]?.(
80
- ...args,
100
+ ...preArgs,
81
101
  listener,
82
- mutator,
102
+ ...postArgs,
83
103
  );
84
104
  return () => thing?.delListener(listenerId);
85
- }, [thing, listenable, ...listenerDeps, mutator, ...args]);
86
- };
105
+ }, [thing, ...preArgs, ...listenerDeps, ...postArgs]);
87
106
  const useSetCallback = (
88
107
  storeOrStoreId,
89
108
  settable,
@@ -128,30 +147,57 @@ const useCreateStore = (create, createDeps = []) =>
128
147
  useMemo$1(create, createDeps);
129
148
  const useTables = (storeOrStoreId) =>
130
149
  useListenable('Tables', useStoreOrStoreId(storeOrStoreId), {});
131
- const useTableIds = (storeOrStoreId) =>
132
- useListenable('TableIds', useStoreOrStoreId(storeOrStoreId), []);
150
+ const useTableIds = (storeOrStoreId, trackReorder) =>
151
+ useListenable(
152
+ 'TableIds',
153
+ useStoreOrStoreId(storeOrStoreId),
154
+ [],
155
+ [],
156
+ [trackReorder],
157
+ );
133
158
  const useTable = (tableId, storeOrStoreId) =>
134
- useListenable('Table', useStoreOrStoreId(storeOrStoreId), {}, tableId);
135
- const useRowIds = (tableId, storeOrStoreId) =>
136
- useListenable('RowIds', useStoreOrStoreId(storeOrStoreId), [], tableId);
159
+ useListenable('Table', useStoreOrStoreId(storeOrStoreId), {}, [tableId]);
160
+ const useRowIds = (tableId, storeOrStoreId, trackReorder) =>
161
+ useListenable(
162
+ 'RowIds',
163
+ useStoreOrStoreId(storeOrStoreId),
164
+ [],
165
+ [tableId],
166
+ [trackReorder],
167
+ );
168
+ const useSortedRowIds = (
169
+ tableId,
170
+ cellId,
171
+ descending,
172
+ storeOrStoreId,
173
+ trackReorder,
174
+ ) =>
175
+ useListenable(
176
+ 'SortedRowIds',
177
+ useStoreOrStoreId(storeOrStoreId),
178
+ [],
179
+ [tableId, cellId, descending],
180
+ [trackReorder],
181
+ 4,
182
+ );
137
183
  const useRow = (tableId, rowId, storeOrStoreId) =>
138
- useListenable('Row', useStoreOrStoreId(storeOrStoreId), {}, tableId, rowId);
139
- const useCellIds = (tableId, rowId, storeOrStoreId) =>
184
+ useListenable('Row', useStoreOrStoreId(storeOrStoreId), {}, [tableId, rowId]);
185
+ const useCellIds = (tableId, rowId, storeOrStoreId, trackReorder) =>
140
186
  useListenable(
141
187
  'CellIds',
142
188
  useStoreOrStoreId(storeOrStoreId),
143
189
  [],
144
- tableId,
145
- rowId,
190
+ [tableId, rowId],
191
+ [trackReorder],
146
192
  );
147
193
  const useCell = (tableId, rowId, cellId, storeOrStoreId) =>
148
194
  useListenable(
149
195
  'Cell',
150
196
  useStoreOrStoreId(storeOrStoreId),
151
197
  void 0,
152
- tableId,
153
- rowId,
154
- cellId,
198
+ [tableId, rowId, cellId],
199
+ [],
200
+ 4,
155
201
  );
156
202
  const useSetTablesCallback = (
157
203
  getTables,
@@ -294,14 +340,23 @@ const useTablesListener = (listener, listenerDeps, mutator, storeOrStoreId) =>
294
340
  useStoreOrStoreId(storeOrStoreId),
295
341
  listener,
296
342
  listenerDeps,
343
+ [],
297
344
  mutator,
298
345
  );
299
- const useTableIdsListener = (listener, listenerDeps, mutator, storeOrStoreId) =>
346
+ const useTableIdsListener = (
347
+ listener,
348
+ listenerDeps,
349
+ trackReorder,
350
+ mutator,
351
+ storeOrStoreId,
352
+ ) =>
300
353
  useListener(
301
354
  'TableIds',
302
355
  useStoreOrStoreId(storeOrStoreId),
303
356
  listener,
304
357
  listenerDeps,
358
+ [],
359
+ trackReorder,
305
360
  mutator,
306
361
  );
307
362
  const useTableListener = (
@@ -316,13 +371,14 @@ const useTableListener = (
316
371
  useStoreOrStoreId(storeOrStoreId),
317
372
  listener,
318
373
  listenerDeps,
374
+ [tableId],
319
375
  mutator,
320
- tableId,
321
376
  );
322
377
  const useRowIdsListener = (
323
378
  tableId,
324
379
  listener,
325
380
  listenerDeps,
381
+ trackReorder,
326
382
  mutator,
327
383
  storeOrStoreId,
328
384
  ) =>
@@ -331,8 +387,26 @@ const useRowIdsListener = (
331
387
  useStoreOrStoreId(storeOrStoreId),
332
388
  listener,
333
389
  listenerDeps,
390
+ [tableId],
391
+ trackReorder,
392
+ mutator,
393
+ );
394
+ const useSortedRowIdsListener = (
395
+ tableId,
396
+ cellId,
397
+ descending,
398
+ listener,
399
+ listenerDeps,
400
+ mutator,
401
+ storeOrStoreId,
402
+ ) =>
403
+ useListener(
404
+ 'SortedRowIds',
405
+ useStoreOrStoreId(storeOrStoreId),
406
+ listener,
407
+ listenerDeps,
408
+ [tableId, cellId, descending],
334
409
  mutator,
335
- tableId,
336
410
  );
337
411
  const useRowListener = (
338
412
  tableId,
@@ -347,15 +421,15 @@ const useRowListener = (
347
421
  useStoreOrStoreId(storeOrStoreId),
348
422
  listener,
349
423
  listenerDeps,
424
+ [tableId, rowId],
350
425
  mutator,
351
- tableId,
352
- rowId,
353
426
  );
354
427
  const useCellIdsListener = (
355
428
  tableId,
356
429
  rowId,
357
430
  listener,
358
431
  listenerDeps,
432
+ trackReorder,
359
433
  mutator,
360
434
  storeOrStoreId,
361
435
  ) =>
@@ -364,9 +438,9 @@ const useCellIdsListener = (
364
438
  useStoreOrStoreId(storeOrStoreId),
365
439
  listener,
366
440
  listenerDeps,
441
+ [tableId, rowId],
442
+ trackReorder,
367
443
  mutator,
368
- tableId,
369
- rowId,
370
444
  );
371
445
  const useCellListener = (
372
446
  tableId,
@@ -382,20 +456,15 @@ const useCellListener = (
382
456
  useStoreOrStoreId(storeOrStoreId),
383
457
  listener,
384
458
  listenerDeps,
459
+ [tableId, rowId, cellId],
385
460
  mutator,
386
- tableId,
387
- rowId,
388
- cellId,
389
461
  );
390
462
  const useCreateMetrics = (store, create, createDeps) =>
391
463
  useCreate(store, create, createDeps);
392
464
  const useMetric = (metricId, metricsOrMetricsId) =>
393
- useListenable(
394
- 'Metric',
395
- useMetricsOrMetricsId(metricsOrMetricsId),
396
- void 0,
465
+ useListenable('Metric', useMetricsOrMetricsId(metricsOrMetricsId), void 0, [
397
466
  metricId,
398
- );
467
+ ]);
399
468
  const useMetricListener = (
400
469
  metricId,
401
470
  listener,
@@ -407,8 +476,7 @@ const useMetricListener = (
407
476
  useMetricsOrMetricsId(metricsOrMetricsId),
408
477
  listener,
409
478
  listenerDeps,
410
- void 0,
411
- metricId,
479
+ [metricId],
412
480
  );
413
481
  const useCreateIndexes = (store, create, createDeps) =>
414
482
  useCreate(store, create, createDeps);
@@ -417,15 +485,14 @@ const useSliceIds = (indexId, indexesOrIndexesId) =>
417
485
  'SliceIds',
418
486
  useIndexesOrIndexesId(indexesOrIndexesId),
419
487
  [],
420
- indexId,
488
+ [indexId],
421
489
  );
422
490
  const useSliceRowIds = (indexId, sliceId, indexesOrIndexesId) =>
423
491
  useListenable(
424
492
  'SliceRowIds',
425
493
  useIndexesOrIndexesId(indexesOrIndexesId),
426
494
  [],
427
- indexId,
428
- sliceId,
495
+ [indexId, sliceId],
429
496
  );
430
497
  const useSliceIdsListener = (
431
498
  indexId,
@@ -438,8 +505,7 @@ const useSliceIdsListener = (
438
505
  useIndexesOrIndexesId(indexesOrIndexesId),
439
506
  listener,
440
507
  listenerDeps,
441
- void 0,
442
- indexId,
508
+ [indexId],
443
509
  );
444
510
  const useSliceRowIdsListener = (
445
511
  indexId,
@@ -453,9 +519,7 @@ const useSliceRowIdsListener = (
453
519
  useIndexesOrIndexesId(indexesOrIndexesId),
454
520
  listener,
455
521
  listenerDeps,
456
- void 0,
457
- indexId,
458
- sliceId,
522
+ [indexId, sliceId],
459
523
  );
460
524
  const useCreateRelationships = (store, create, createDeps) =>
461
525
  useCreate(store, create, createDeps);
@@ -468,8 +532,7 @@ const useRemoteRowId = (
468
532
  'RemoteRowId',
469
533
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
470
534
  void 0,
471
- relationshipId,
472
- localRowId,
535
+ [relationshipId, localRowId],
473
536
  );
474
537
  const useLocalRowIds = (
475
538
  relationshipId,
@@ -480,8 +543,7 @@ const useLocalRowIds = (
480
543
  'LocalRowIds',
481
544
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
482
545
  [],
483
- relationshipId,
484
- remoteRowId,
546
+ [relationshipId, remoteRowId],
485
547
  );
486
548
  const useLinkedRowIds = (
487
549
  relationshipId,
@@ -492,8 +554,7 @@ const useLinkedRowIds = (
492
554
  'LinkedRowIds',
493
555
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
494
556
  [],
495
- relationshipId,
496
- firstRowId,
557
+ [relationshipId, firstRowId],
497
558
  );
498
559
  const useRemoteRowIdListener = (
499
560
  relationshipId,
@@ -507,9 +568,7 @@ const useRemoteRowIdListener = (
507
568
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
508
569
  listener,
509
570
  listenerDeps,
510
- void 0,
511
- relationshipId,
512
- localRowId,
571
+ [relationshipId, localRowId],
513
572
  );
514
573
  const useLocalRowIdsListener = (
515
574
  relationshipId,
@@ -523,9 +582,7 @@ const useLocalRowIdsListener = (
523
582
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
524
583
  listener,
525
584
  listenerDeps,
526
- void 0,
527
- relationshipId,
528
- remoteRowId,
585
+ [relationshipId, remoteRowId],
529
586
  );
530
587
  const useLinkedRowIdsListener = (
531
588
  relationshipId,
@@ -539,9 +596,140 @@ const useLinkedRowIdsListener = (
539
596
  useRelationshipsOrRelationshipsId(relationshipsOrRelationshipsId),
540
597
  listener,
541
598
  listenerDeps,
599
+ [relationshipId, firstRowId],
600
+ );
601
+ const useCreateQueries = (store, create, createDeps) =>
602
+ useCreate(store, create, createDeps);
603
+ const useResultTable = (queryId, queriesOrQueriesId) =>
604
+ useListenable('ResultTable', useQueriesOrQueriesId(queriesOrQueriesId), {}, [
605
+ queryId,
606
+ ]);
607
+ const useResultRowIds = (queryId, queriesOrQueriesId, trackReorder) =>
608
+ useListenable(
609
+ 'ResultRowIds',
610
+ useQueriesOrQueriesId(queriesOrQueriesId),
611
+ [],
612
+ [queryId],
613
+ [trackReorder],
614
+ );
615
+ const useResultSortedRowIds = (
616
+ queryId,
617
+ cellId,
618
+ descending,
619
+ queriesOrQueriesId,
620
+ ) =>
621
+ useListenable(
622
+ 'ResultSortedRowIds',
623
+ useQueriesOrQueriesId(queriesOrQueriesId),
624
+ [],
625
+ [queryId, cellId, descending],
626
+ [],
627
+ 4,
628
+ );
629
+ const useResultRow = (queryId, rowId, queriesOrQueriesId) =>
630
+ useListenable('ResultRow', useQueriesOrQueriesId(queriesOrQueriesId), {}, [
631
+ queryId,
632
+ rowId,
633
+ ]);
634
+ const useResultCellIds = (queryId, rowId, queriesOrQueriesId) =>
635
+ useListenable(
636
+ 'ResultCellIds',
637
+ useQueriesOrQueriesId(queriesOrQueriesId),
638
+ [],
639
+ [queryId, rowId],
640
+ );
641
+ const useResultCell = (queryId, rowId, cellId, queriesOrQueriesId) =>
642
+ useListenable(
643
+ 'ResultCell',
644
+ useQueriesOrQueriesId(queriesOrQueriesId),
542
645
  void 0,
543
- relationshipId,
544
- firstRowId,
646
+ [queryId, rowId, cellId],
647
+ );
648
+ const useResultTableListener = (
649
+ queryId,
650
+ listener,
651
+ listenerDeps,
652
+ queriesOrQueriesId,
653
+ ) =>
654
+ useListener(
655
+ 'ResultTable',
656
+ useQueriesOrQueriesId(queriesOrQueriesId),
657
+ listener,
658
+ listenerDeps,
659
+ [queryId],
660
+ );
661
+ const useResultRowIdsListener = (
662
+ queryId,
663
+ listener,
664
+ listenerDeps,
665
+ trackReorder,
666
+ queriesOrQueriesId,
667
+ ) =>
668
+ useListener(
669
+ 'ResultRowIds',
670
+ useQueriesOrQueriesId(queriesOrQueriesId),
671
+ listener,
672
+ listenerDeps,
673
+ [queryId],
674
+ trackReorder,
675
+ );
676
+ const useResultSortedRowIdsListener = (
677
+ queryId,
678
+ cellId,
679
+ descending,
680
+ listener,
681
+ listenerDeps,
682
+ queriesOrQueriesId,
683
+ ) =>
684
+ useListener(
685
+ 'ResultSortedRowIds',
686
+ useQueriesOrQueriesId(queriesOrQueriesId),
687
+ listener,
688
+ listenerDeps,
689
+ [queryId, cellId, descending],
690
+ );
691
+ const useResultRowListener = (
692
+ queryId,
693
+ rowId,
694
+ listener,
695
+ listenerDeps,
696
+ queriesOrQueriesId,
697
+ ) =>
698
+ useListener(
699
+ 'ResultRow',
700
+ useQueriesOrQueriesId(queriesOrQueriesId),
701
+ listener,
702
+ listenerDeps,
703
+ [queryId, rowId],
704
+ );
705
+ const useResultCellIdsListener = (
706
+ queryId,
707
+ rowId,
708
+ listener,
709
+ listenerDeps,
710
+ queriesOrQueriesId,
711
+ ) =>
712
+ useListener(
713
+ 'ResultCellIds',
714
+ useQueriesOrQueriesId(queriesOrQueriesId),
715
+ listener,
716
+ listenerDeps,
717
+ [queryId, rowId],
718
+ );
719
+ const useResultCellListener = (
720
+ queryId,
721
+ rowId,
722
+ cellId,
723
+ listener,
724
+ listenerDeps,
725
+ queriesOrQueriesId,
726
+ ) =>
727
+ useListener(
728
+ 'ResultCell',
729
+ useQueriesOrQueriesId(queriesOrQueriesId),
730
+ listener,
731
+ listenerDeps,
732
+ [queryId, rowId, cellId],
545
733
  );
546
734
  const useCreateCheckpoints = (store, create, createDeps) =>
547
735
  useCreate(store, create, createDeps);
@@ -556,7 +744,7 @@ const useCheckpoint = (checkpointId, checkpointsOrCheckpointsId) =>
556
744
  'Checkpoint',
557
745
  useCheckpointsOrCheckpointsId(checkpointsOrCheckpointsId),
558
746
  void 0,
559
- checkpointId,
747
+ [checkpointId],
560
748
  );
561
749
  const useSetCheckpointCallback = (
562
750
  getCheckpoint = getUndefined,
@@ -604,7 +792,8 @@ const useUndoInformation = (checkpointsOrCheckpointsId) => {
604
792
  !arrayIsEmpty(backwardIds),
605
793
  useGoBackwardCallback(checkpoints),
606
794
  currentId,
607
- ifNotUndefined(currentId, (id) => checkpoints?.getCheckpoint(id)) ?? '',
795
+ ifNotUndefined(currentId, (id) => checkpoints?.getCheckpoint(id)) ??
796
+ EMPTY_STRING,
608
797
  ];
609
798
  };
610
799
  const useRedoInformation = (checkpointsOrCheckpointsId) => {
@@ -614,7 +803,8 @@ const useRedoInformation = (checkpointsOrCheckpointsId) => {
614
803
  !isUndefined(forwardId),
615
804
  useGoForwardCallback(checkpoints),
616
805
  forwardId,
617
- ifNotUndefined(forwardId, (id) => checkpoints?.getCheckpoint(id)) ?? '',
806
+ ifNotUndefined(forwardId, (id) => checkpoints?.getCheckpoint(id)) ??
807
+ EMPTY_STRING,
618
808
  ];
619
809
  };
620
810
  const useCheckpointIdsListener = (
@@ -639,8 +829,7 @@ const useCheckpointListener = (
639
829
  useCheckpointsOrCheckpointsId(checkpointsOrCheckpointsId),
640
830
  listener,
641
831
  listenerDeps,
642
- void 0,
643
- checkpointId,
832
+ [checkpointId],
644
833
  );
645
834
  const useCreatePersister = (
646
835
  store,
@@ -738,6 +927,8 @@ const Provider = ({
738
927
  indexesById,
739
928
  relationships,
740
929
  relationshipsById,
930
+ queries,
931
+ queriesById,
741
932
  checkpoints,
742
933
  checkpointsById,
743
934
  children,
@@ -756,8 +947,10 @@ const Provider = ({
756
947
  {...thingsOrThingsId[5], ...indexesById},
757
948
  relationships ?? thingsOrThingsId[6],
758
949
  {...thingsOrThingsId[7], ...relationshipsById},
759
- checkpoints ?? thingsOrThingsId[8],
760
- {...thingsOrThingsId[9], ...checkpointsById},
950
+ queries ?? thingsOrThingsId[8],
951
+ {...thingsOrThingsId[9], ...queriesById},
952
+ checkpoints ?? thingsOrThingsId[10],
953
+ {...thingsOrThingsId[11], ...checkpointsById},
761
954
  ],
762
955
  [
763
956
  store,
@@ -768,6 +961,8 @@ const Provider = ({
768
961
  indexesById,
769
962
  relationships,
770
963
  relationshipsById,
964
+ queries,
965
+ queriesById,
771
966
  checkpoints,
772
967
  checkpointsById,
773
968
  thingsOrThingsId,
@@ -795,13 +990,14 @@ const RowView = ({
795
990
  tableId,
796
991
  rowId,
797
992
  store,
993
+ trackReorder,
798
994
  cellComponent: Cell = CellView,
799
995
  getCellComponentProps,
800
996
  separator,
801
997
  debugIds,
802
998
  }) =>
803
999
  wrap(
804
- arrayMap(useCellIds(tableId, rowId, store), (cellId) =>
1000
+ arrayMap(useCellIds(tableId, rowId, store, trackReorder), (cellId) =>
805
1001
  /* @__PURE__ */ createElement(Cell, {
806
1002
  ...getProps(getCellComponentProps, cellId),
807
1003
  key: cellId,
@@ -816,16 +1012,42 @@ const RowView = ({
816
1012
  debugIds,
817
1013
  rowId,
818
1014
  );
1015
+ const SortedTableView = ({
1016
+ tableId,
1017
+ cellId,
1018
+ descending,
1019
+ store,
1020
+ rowComponent: Row = RowView,
1021
+ getRowComponentProps,
1022
+ separator,
1023
+ debugIds,
1024
+ }) =>
1025
+ wrap(
1026
+ arrayMap(useSortedRowIds(tableId, cellId, descending, store), (rowId) =>
1027
+ /* @__PURE__ */ createElement(Row, {
1028
+ ...getProps(getRowComponentProps, rowId),
1029
+ key: rowId,
1030
+ tableId,
1031
+ rowId,
1032
+ store,
1033
+ debugIds,
1034
+ }),
1035
+ ),
1036
+ separator,
1037
+ debugIds,
1038
+ tableId,
1039
+ );
819
1040
  const TableView = ({
820
1041
  tableId,
821
1042
  store,
1043
+ trackReorder,
822
1044
  rowComponent: Row = RowView,
823
1045
  getRowComponentProps,
824
1046
  separator,
825
1047
  debugIds,
826
1048
  }) =>
827
1049
  wrap(
828
- arrayMap(useRowIds(tableId, store), (rowId) =>
1050
+ arrayMap(useRowIds(tableId, store, trackReorder), (rowId) =>
829
1051
  /* @__PURE__ */ createElement(Row, {
830
1052
  ...getProps(getRowComponentProps, rowId),
831
1053
  key: rowId,
@@ -841,13 +1063,14 @@ const TableView = ({
841
1063
  );
842
1064
  const TablesView = ({
843
1065
  store,
1066
+ trackReorder,
844
1067
  tableComponent: Table = TableView,
845
1068
  getTableComponentProps,
846
1069
  separator,
847
1070
  debugIds,
848
1071
  }) =>
849
1072
  wrap(
850
- arrayMap(useTableIds(store), (tableId) =>
1073
+ arrayMap(useTableIds(store, trackReorder), (tableId) =>
851
1074
  /* @__PURE__ */ createElement(Table, {
852
1075
  ...getProps(getTableComponentProps, tableId),
853
1076
  key: tableId,
@@ -953,9 +1176,93 @@ const LocalRowsView = (props) =>
953
1176
  useComponentPerRow(props, useLocalRowIds, props.remoteRowId);
954
1177
  const LinkedRowsView = (props) =>
955
1178
  useComponentPerRow(props, useLinkedRowIds, props.firstRowId);
1179
+ const ResultCellView = ({queryId, rowId, cellId, queries, debugIds}) =>
1180
+ wrap(
1181
+ EMPTY_STRING +
1182
+ (useResultCell(queryId, rowId, cellId, queries) ?? EMPTY_STRING),
1183
+ void 0,
1184
+ debugIds,
1185
+ cellId,
1186
+ );
1187
+ const ResultRowView = ({
1188
+ queryId,
1189
+ rowId,
1190
+ queries,
1191
+ resultCellComponent: ResultCell = ResultCellView,
1192
+ getResultCellComponentProps,
1193
+ separator,
1194
+ debugIds,
1195
+ }) =>
1196
+ wrap(
1197
+ arrayMap(useResultCellIds(queryId, rowId, queries), (cellId) =>
1198
+ /* @__PURE__ */ createElement(ResultCell, {
1199
+ ...getProps(getResultCellComponentProps, cellId),
1200
+ key: cellId,
1201
+ queryId,
1202
+ rowId,
1203
+ cellId,
1204
+ queries,
1205
+ debugIds,
1206
+ }),
1207
+ ),
1208
+ separator,
1209
+ debugIds,
1210
+ rowId,
1211
+ );
1212
+ const ResultTableView = ({
1213
+ queryId,
1214
+ queries,
1215
+ trackReorder,
1216
+ resultRowComponent: ResultRow = ResultRowView,
1217
+ getResultRowComponentProps,
1218
+ separator,
1219
+ debugIds,
1220
+ }) =>
1221
+ wrap(
1222
+ arrayMap(useResultRowIds(queryId, queries, trackReorder), (rowId) =>
1223
+ /* @__PURE__ */ createElement(ResultRow, {
1224
+ ...getProps(getResultRowComponentProps, rowId),
1225
+ key: rowId,
1226
+ queryId,
1227
+ rowId,
1228
+ queries,
1229
+ debugIds,
1230
+ }),
1231
+ ),
1232
+ separator,
1233
+ debugIds,
1234
+ queryId,
1235
+ );
1236
+ const ResultSortedTableView = ({
1237
+ queryId,
1238
+ cellId,
1239
+ descending,
1240
+ queries,
1241
+ resultRowComponent: ResultRow = ResultRowView,
1242
+ getResultRowComponentProps,
1243
+ separator,
1244
+ debugIds,
1245
+ }) =>
1246
+ wrap(
1247
+ arrayMap(
1248
+ useResultSortedRowIds(queryId, cellId, descending, queries),
1249
+ (rowId) =>
1250
+ /* @__PURE__ */ createElement(ResultRow, {
1251
+ ...getProps(getResultRowComponentProps, rowId),
1252
+ key: rowId,
1253
+ queryId,
1254
+ rowId,
1255
+ queries,
1256
+ debugIds,
1257
+ }),
1258
+ ),
1259
+ separator,
1260
+ debugIds,
1261
+ queryId,
1262
+ );
956
1263
  const CheckpointView = ({checkpoints, checkpointId, debugIds}) =>
957
1264
  wrap(
958
- useCheckpoint(checkpointId, checkpoints) ?? '',
1265
+ useCheckpoint(checkpointId, checkpoints) ?? EMPTY_STRING,
959
1266
  void 0,
960
1267
  debugIds,
961
1268
  checkpointId,
@@ -982,8 +1289,13 @@ export {
982
1289
  MetricView,
983
1290
  Provider,
984
1291
  RemoteRowView,
1292
+ ResultCellView,
1293
+ ResultRowView,
1294
+ ResultSortedTableView,
1295
+ ResultTableView,
985
1296
  RowView,
986
1297
  SliceView,
1298
+ SortedTableView,
987
1299
  TableView,
988
1300
  TablesView,
989
1301
  useAddRowCallback,
@@ -1000,6 +1312,7 @@ export {
1000
1312
  useCreateIndexes,
1001
1313
  useCreateMetrics,
1002
1314
  useCreatePersister,
1315
+ useCreateQueries,
1003
1316
  useCreateRelationships,
1004
1317
  useCreateStore,
1005
1318
  useDelCellCallback,
@@ -1017,10 +1330,23 @@ export {
1017
1330
  useMetric,
1018
1331
  useMetricListener,
1019
1332
  useMetrics,
1333
+ useQueries,
1020
1334
  useRedoInformation,
1021
1335
  useRelationships,
1022
1336
  useRemoteRowId,
1023
1337
  useRemoteRowIdListener,
1338
+ useResultCell,
1339
+ useResultCellIds,
1340
+ useResultCellIdsListener,
1341
+ useResultCellListener,
1342
+ useResultRow,
1343
+ useResultRowIds,
1344
+ useResultRowIdsListener,
1345
+ useResultRowListener,
1346
+ useResultSortedRowIds,
1347
+ useResultSortedRowIdsListener,
1348
+ useResultTable,
1349
+ useResultTableListener,
1024
1350
  useRow,
1025
1351
  useRowIds,
1026
1352
  useRowIdsListener,
@@ -1035,6 +1361,8 @@ export {
1035
1361
  useSliceIdsListener,
1036
1362
  useSliceRowIds,
1037
1363
  useSliceRowIdsListener,
1364
+ useSortedRowIds,
1365
+ useSortedRowIdsListener,
1038
1366
  useStore,
1039
1367
  useTable,
1040
1368
  useTableIds,