tinybase 2.0.0-beta.0 → 2.0.0-beta.3

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 (63) 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/common.js +1 -1
  5. package/lib/common.js.gz +0 -0
  6. package/lib/debug/checkpoints.d.ts +4 -3
  7. package/lib/debug/checkpoints.js +13 -16
  8. package/lib/debug/common.js +4 -1
  9. package/lib/debug/indexes.d.ts +4 -2
  10. package/lib/debug/indexes.js +13 -15
  11. package/lib/debug/metrics.d.ts +1 -1
  12. package/lib/debug/metrics.js +13 -16
  13. package/lib/debug/persisters.d.ts +6 -0
  14. package/lib/debug/queries.d.ts +249 -299
  15. package/lib/debug/queries.js +67 -192
  16. package/lib/debug/relationships.d.ts +6 -5
  17. package/lib/debug/relationships.js +13 -16
  18. package/lib/debug/store.d.ts +386 -86
  19. package/lib/debug/store.js +278 -216
  20. package/lib/debug/tinybase.js +318 -390
  21. package/lib/debug/ui-react.d.ts +4320 -1796
  22. package/lib/debug/ui-react.js +380 -98
  23. package/lib/indexes.d.ts +4 -2
  24. package/lib/indexes.js +1 -1
  25. package/lib/indexes.js.gz +0 -0
  26. package/lib/metrics.d.ts +1 -1
  27. package/lib/metrics.js +1 -1
  28. package/lib/metrics.js.gz +0 -0
  29. package/lib/persisters.d.ts +6 -0
  30. package/lib/queries.d.ts +249 -299
  31. package/lib/queries.js +1 -1
  32. package/lib/queries.js.gz +0 -0
  33. package/lib/relationships.d.ts +6 -5
  34. package/lib/relationships.js +1 -1
  35. package/lib/relationships.js.gz +0 -0
  36. package/lib/store.d.ts +386 -86
  37. package/lib/store.js +1 -1
  38. package/lib/store.js.gz +0 -0
  39. package/lib/tinybase.js +1 -1
  40. package/lib/tinybase.js.gz +0 -0
  41. package/lib/ui-react.d.ts +4320 -1796
  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/common.js +1 -1
  47. package/lib/umd/common.js.gz +0 -0
  48. package/lib/umd/indexes.js +1 -1
  49. package/lib/umd/indexes.js.gz +0 -0
  50. package/lib/umd/metrics.js +1 -1
  51. package/lib/umd/metrics.js.gz +0 -0
  52. package/lib/umd/queries.js +1 -1
  53. package/lib/umd/queries.js.gz +0 -0
  54. package/lib/umd/relationships.js +1 -1
  55. package/lib/umd/relationships.js.gz +0 -0
  56. package/lib/umd/store.js +1 -1
  57. package/lib/umd/store.js.gz +0 -0
  58. package/lib/umd/tinybase.js +1 -1
  59. package/lib/umd/tinybase.js.gz +0 -0
  60. package/lib/umd/ui-react.js +1 -1
  61. package/lib/umd/ui-react.js.gz +0 -0
  62. package/package.json +26 -26
  63. package/readme.md +2 -2
@@ -3,6 +3,17 @@ import React, {useContext as useContext$1} from 'react';
3
3
  const getTypeOf = (thing) => typeof thing;
4
4
  const EMPTY_STRING = '';
5
5
  const STRING = getTypeOf(EMPTY_STRING);
6
+ const LISTENER = 'Listener';
7
+ const GET = 'get';
8
+ const ADD = 'add';
9
+ const TABLES = 'Tables';
10
+ const TABLE_IDS = 'TableIds';
11
+ const TABLE = 'Table';
12
+ const ROW_IDS = 'RowIds';
13
+ const SORTED_ROW_IDS = 'SortedRowIds';
14
+ const ROW = 'Row';
15
+ const CELL_IDS = 'CellIds';
16
+ const CELL = 'Cell';
6
17
 
7
18
  const arrayMap = (array, cb) => array.map(cb);
8
19
  const arrayLength = (array) => array.length;
@@ -35,7 +46,8 @@ const useStore = (id) => useThing(id, 0);
35
46
  const useMetrics = (id) => useThing(id, 2);
36
47
  const useIndexes = (id) => useThing(id, 4);
37
48
  const useRelationships = (id) => useThing(id, 6);
38
- const useCheckpoints = (id) => useThing(id, 8);
49
+ const useQueries = (id) => useThing(id, 8);
50
+ const useCheckpoints = (id) => useThing(id, 10);
39
51
  const useStoreOrStoreId = (storeOrStoreId) =>
40
52
  useThingOrThingId(storeOrStoreId, 0);
41
53
  const useMetricsOrMetricsId = (metricsOrMetricsId) =>
@@ -44,10 +56,12 @@ const useIndexesOrIndexesId = (indexesOrIndexesId) =>
44
56
  useThingOrThingId(indexesOrIndexesId, 4);
45
57
  const useRelationshipsOrRelationshipsId = (relationshipsOrRelationshipsId) =>
46
58
  useThingOrThingId(relationshipsOrRelationshipsId, 6);
59
+ const useQueriesOrQueriesId = (queriesOrQueriesId) =>
60
+ useThingOrThingId(queriesOrQueriesId, 8);
47
61
  const useCheckpointsOrCheckpointsId = (checkpointsOrCheckpointsId) =>
48
- useThingOrThingId(checkpointsOrCheckpointsId, 8);
62
+ useThingOrThingId(checkpointsOrCheckpointsId, 10);
49
63
 
50
- const {useCallback, useEffect, useMemo: useMemo$1, useState} = React;
64
+ const {useCallback, useEffect, useMemo: useMemo$1, useRef, useState} = React;
51
65
  const useCreate = (store, create, createDeps = []) => {
52
66
  const thing = useMemo$1(() => create(store), [store, ...createDeps]);
53
67
  useEffect(() => () => thing.destroy(), [thing]);
@@ -57,21 +71,30 @@ const useListenable = (
57
71
  listenable,
58
72
  thing,
59
73
  defaulted,
60
- preArgs = [],
61
- ...postArgs
74
+ args = [],
75
+ getFromListenerArg,
62
76
  ) => {
63
- const getListenable = thing?.['get' + listenable] ?? (() => defaulted);
64
- const immediateListenable = getListenable(...preArgs);
65
- const [, setListenable] = useState(immediateListenable);
66
- useEffect(() => {
67
- const listenerId = thing?.[`add${listenable}Listener`]?.(
68
- ...preArgs,
69
- () => setListenable(getListenable(...preArgs)),
70
- ...postArgs,
71
- );
72
- return () => thing?.delListener(listenerId);
73
- }, [thing, listenable, setListenable, getListenable, ...preArgs]);
74
- return immediateListenable;
77
+ const [, rerender] = useState();
78
+ const getResult = useCallback(
79
+ () => thing?.[GET + listenable]?.(...args) ?? defaulted,
80
+ [thing, ...args],
81
+ );
82
+ const [initialResult] = useState(getResult);
83
+ const result = useRef(initialResult);
84
+ useMemo$1(() => (result.current = getResult()), [getResult]);
85
+ useListener(
86
+ listenable,
87
+ thing,
88
+ (...listenerArgs) => {
89
+ result.current = isUndefined(getFromListenerArg)
90
+ ? getResult()
91
+ : listenerArgs[getFromListenerArg];
92
+ rerender([]);
93
+ },
94
+ [],
95
+ args,
96
+ );
97
+ return result.current;
75
98
  };
76
99
  const useListener = (
77
100
  listenable,
@@ -80,16 +103,15 @@ const useListener = (
80
103
  listenerDeps = [],
81
104
  preArgs = [],
82
105
  ...postArgs
83
- ) => {
106
+ ) =>
84
107
  useEffect(() => {
85
- const listenerId = thing?.[`add${listenable}Listener`]?.(
108
+ const listenerId = thing?.[ADD + listenable + LISTENER]?.(
86
109
  ...preArgs,
87
110
  listener,
88
111
  ...postArgs,
89
112
  );
90
113
  return () => thing?.delListener(listenerId);
91
- }, [thing, listenable, ...listenerDeps, ...preArgs, ...postArgs]);
92
- };
114
+ }, [thing, ...preArgs, ...listenerDeps, ...postArgs]);
93
115
  const useSetCallback = (
94
116
  storeOrStoreId,
95
117
  settable,
@@ -133,41 +155,45 @@ const useCheckpointAction = (checkpointsOrCheckpointsId, action, arg) => {
133
155
  const useCreateStore = (create, createDeps = []) =>
134
156
  useMemo$1(create, createDeps);
135
157
  const useTables = (storeOrStoreId) =>
136
- useListenable('Tables', useStoreOrStoreId(storeOrStoreId), {});
137
- const useTableIds = (storeOrStoreId, trackReorder) =>
138
- useListenable(
139
- 'TableIds',
140
- useStoreOrStoreId(storeOrStoreId),
141
- [],
142
- [],
143
- trackReorder,
144
- );
158
+ useListenable(TABLES, useStoreOrStoreId(storeOrStoreId), {});
159
+ const useTableIds = (storeOrStoreId) =>
160
+ useListenable(TABLE_IDS, useStoreOrStoreId(storeOrStoreId), [], []);
145
161
  const useTable = (tableId, storeOrStoreId) =>
146
- useListenable('Table', useStoreOrStoreId(storeOrStoreId), {}, [tableId]);
147
- const useRowIds = (tableId, storeOrStoreId, trackReorder) =>
162
+ useListenable(TABLE, useStoreOrStoreId(storeOrStoreId), {}, [tableId]);
163
+ const useRowIds = (tableId, storeOrStoreId) =>
164
+ useListenable(ROW_IDS, useStoreOrStoreId(storeOrStoreId), [], [tableId]);
165
+ const useSortedRowIds = (
166
+ tableId,
167
+ cellId,
168
+ descending,
169
+ offset = 0,
170
+ limit,
171
+ storeOrStoreId,
172
+ ) =>
148
173
  useListenable(
149
- 'RowIds',
174
+ SORTED_ROW_IDS,
150
175
  useStoreOrStoreId(storeOrStoreId),
151
176
  [],
152
- [tableId],
153
- trackReorder,
177
+ [tableId, cellId, descending, offset, limit],
178
+ 6,
154
179
  );
155
180
  const useRow = (tableId, rowId, storeOrStoreId) =>
156
- useListenable('Row', useStoreOrStoreId(storeOrStoreId), {}, [tableId, rowId]);
157
- const useCellIds = (tableId, rowId, storeOrStoreId, trackReorder) =>
181
+ useListenable(ROW, useStoreOrStoreId(storeOrStoreId), {}, [tableId, rowId]);
182
+ const useCellIds = (tableId, rowId, storeOrStoreId) =>
158
183
  useListenable(
159
- 'CellIds',
184
+ CELL_IDS,
160
185
  useStoreOrStoreId(storeOrStoreId),
161
186
  [],
162
187
  [tableId, rowId],
163
- trackReorder,
164
188
  );
165
189
  const useCell = (tableId, rowId, cellId, storeOrStoreId) =>
166
- useListenable('Cell', useStoreOrStoreId(storeOrStoreId), void 0, [
167
- tableId,
168
- rowId,
169
- cellId,
170
- ]);
190
+ useListenable(
191
+ CELL,
192
+ useStoreOrStoreId(storeOrStoreId),
193
+ void 0,
194
+ [tableId, rowId, cellId],
195
+ 4,
196
+ );
171
197
  const useSetTablesCallback = (
172
198
  getTables,
173
199
  getTablesDeps,
@@ -177,7 +203,7 @@ const useSetTablesCallback = (
177
203
  ) =>
178
204
  useSetCallback(
179
205
  storeOrStoreId,
180
- 'Tables',
206
+ TABLES,
181
207
  getTables,
182
208
  getTablesDeps,
183
209
  then,
@@ -193,7 +219,7 @@ const useSetTableCallback = (
193
219
  ) =>
194
220
  useSetCallback(
195
221
  storeOrStoreId,
196
- 'Table',
222
+ TABLE,
197
223
  getTable,
198
224
  getTableDeps,
199
225
  then,
@@ -211,7 +237,7 @@ const useSetRowCallback = (
211
237
  ) =>
212
238
  useSetCallback(
213
239
  storeOrStoreId,
214
- 'Row',
240
+ ROW,
215
241
  getRow,
216
242
  getRowDeps,
217
243
  then,
@@ -269,7 +295,7 @@ const useSetCellCallback = (
269
295
  ) =>
270
296
  useSetCallback(
271
297
  storeOrStoreId,
272
- 'Cell',
298
+ CELL,
273
299
  getCell,
274
300
  getCellDeps,
275
301
  then,
@@ -279,11 +305,11 @@ const useSetCellCallback = (
279
305
  cellId,
280
306
  );
281
307
  const useDelTablesCallback = (storeOrStoreId, then, thenDeps) =>
282
- useDel(storeOrStoreId, 'Tables', then, thenDeps);
308
+ useDel(storeOrStoreId, TABLES, then, thenDeps);
283
309
  const useDelTableCallback = (tableId, storeOrStoreId, then, thenDeps) =>
284
- useDel(storeOrStoreId, 'Table', then, thenDeps, tableId);
310
+ useDel(storeOrStoreId, TABLE, then, thenDeps, tableId);
285
311
  const useDelRowCallback = (tableId, rowId, storeOrStoreId, then, thenDeps) =>
286
- useDel(storeOrStoreId, 'Row', then, thenDeps, tableId, rowId);
312
+ useDel(storeOrStoreId, ROW, then, thenDeps, tableId, rowId);
287
313
  const useDelCellCallback = (
288
314
  tableId,
289
315
  rowId,
@@ -295,7 +321,7 @@ const useDelCellCallback = (
295
321
  ) =>
296
322
  useDel(
297
323
  storeOrStoreId,
298
- 'Cell',
324
+ CELL,
299
325
  then,
300
326
  thenDeps,
301
327
  tableId,
@@ -305,30 +331,38 @@ const useDelCellCallback = (
305
331
  );
306
332
  const useTablesListener = (listener, listenerDeps, mutator, storeOrStoreId) =>
307
333
  useListener(
308
- 'Tables',
334
+ TABLES,
335
+ useStoreOrStoreId(storeOrStoreId),
336
+ listener,
337
+ listenerDeps,
338
+ [],
339
+ mutator,
340
+ );
341
+ const useTableIdsListener = (listener, listenerDeps, mutator, storeOrStoreId) =>
342
+ useListener(
343
+ TABLE_IDS,
309
344
  useStoreOrStoreId(storeOrStoreId),
310
345
  listener,
311
346
  listenerDeps,
312
347
  [],
313
348
  mutator,
314
349
  );
315
- const useTableIdsListener = (
350
+ const useTableListener = (
351
+ tableId,
316
352
  listener,
317
353
  listenerDeps,
318
- trackReorder,
319
354
  mutator,
320
355
  storeOrStoreId,
321
356
  ) =>
322
357
  useListener(
323
- 'TableIds',
358
+ TABLE,
324
359
  useStoreOrStoreId(storeOrStoreId),
325
360
  listener,
326
361
  listenerDeps,
327
- [],
328
- trackReorder,
362
+ [tableId],
329
363
  mutator,
330
364
  );
331
- const useTableListener = (
365
+ const useRowIdsListener = (
332
366
  tableId,
333
367
  listener,
334
368
  listenerDeps,
@@ -336,28 +370,30 @@ const useTableListener = (
336
370
  storeOrStoreId,
337
371
  ) =>
338
372
  useListener(
339
- 'Table',
373
+ ROW_IDS,
340
374
  useStoreOrStoreId(storeOrStoreId),
341
375
  listener,
342
376
  listenerDeps,
343
377
  [tableId],
344
378
  mutator,
345
379
  );
346
- const useRowIdsListener = (
380
+ const useSortedRowIdsListener = (
347
381
  tableId,
382
+ cellId,
383
+ descending,
384
+ offset,
385
+ limit,
348
386
  listener,
349
387
  listenerDeps,
350
- trackReorder,
351
388
  mutator,
352
389
  storeOrStoreId,
353
390
  ) =>
354
391
  useListener(
355
- 'RowIds',
392
+ SORTED_ROW_IDS,
356
393
  useStoreOrStoreId(storeOrStoreId),
357
394
  listener,
358
395
  listenerDeps,
359
- [tableId],
360
- trackReorder,
396
+ [tableId, cellId, descending, offset, limit],
361
397
  mutator,
362
398
  );
363
399
  const useRowListener = (
@@ -369,7 +405,7 @@ const useRowListener = (
369
405
  storeOrStoreId,
370
406
  ) =>
371
407
  useListener(
372
- 'Row',
408
+ ROW,
373
409
  useStoreOrStoreId(storeOrStoreId),
374
410
  listener,
375
411
  listenerDeps,
@@ -381,17 +417,15 @@ const useCellIdsListener = (
381
417
  rowId,
382
418
  listener,
383
419
  listenerDeps,
384
- trackReorder,
385
420
  mutator,
386
421
  storeOrStoreId,
387
422
  ) =>
388
423
  useListener(
389
- 'CellIds',
424
+ CELL_IDS,
390
425
  useStoreOrStoreId(storeOrStoreId),
391
426
  listener,
392
427
  listenerDeps,
393
428
  [tableId, rowId],
394
- trackReorder,
395
429
  mutator,
396
430
  );
397
431
  const useCellListener = (
@@ -404,7 +438,7 @@ const useCellListener = (
404
438
  storeOrStoreId,
405
439
  ) =>
406
440
  useListener(
407
- 'Cell',
441
+ CELL,
408
442
  useStoreOrStoreId(storeOrStoreId),
409
443
  listener,
410
444
  listenerDeps,
@@ -550,6 +584,139 @@ const useLinkedRowIdsListener = (
550
584
  listenerDeps,
551
585
  [relationshipId, firstRowId],
552
586
  );
587
+ const useCreateQueries = (store, create, createDeps) =>
588
+ useCreate(store, create, createDeps);
589
+ const useResultTable = (queryId, queriesOrQueriesId) =>
590
+ useListenable('ResultTable', useQueriesOrQueriesId(queriesOrQueriesId), {}, [
591
+ queryId,
592
+ ]);
593
+ const useResultRowIds = (queryId, queriesOrQueriesId) =>
594
+ useListenable(
595
+ 'ResultRowIds',
596
+ useQueriesOrQueriesId(queriesOrQueriesId),
597
+ [],
598
+ [queryId],
599
+ );
600
+ const useResultSortedRowIds = (
601
+ queryId,
602
+ cellId,
603
+ descending,
604
+ offset = 0,
605
+ limit,
606
+ queriesOrQueriesId,
607
+ ) =>
608
+ useListenable(
609
+ 'ResultSortedRowIds',
610
+ useQueriesOrQueriesId(queriesOrQueriesId),
611
+ [],
612
+ [queryId, cellId, descending, offset, limit],
613
+ 6,
614
+ );
615
+ const useResultRow = (queryId, rowId, queriesOrQueriesId) =>
616
+ useListenable('ResultRow', useQueriesOrQueriesId(queriesOrQueriesId), {}, [
617
+ queryId,
618
+ rowId,
619
+ ]);
620
+ const useResultCellIds = (queryId, rowId, queriesOrQueriesId) =>
621
+ useListenable(
622
+ 'ResultCellIds',
623
+ useQueriesOrQueriesId(queriesOrQueriesId),
624
+ [],
625
+ [queryId, rowId],
626
+ );
627
+ const useResultCell = (queryId, rowId, cellId, queriesOrQueriesId) =>
628
+ useListenable(
629
+ 'ResultCell',
630
+ useQueriesOrQueriesId(queriesOrQueriesId),
631
+ void 0,
632
+ [queryId, rowId, cellId],
633
+ );
634
+ const useResultTableListener = (
635
+ queryId,
636
+ listener,
637
+ listenerDeps,
638
+ queriesOrQueriesId,
639
+ ) =>
640
+ useListener(
641
+ 'ResultTable',
642
+ useQueriesOrQueriesId(queriesOrQueriesId),
643
+ listener,
644
+ listenerDeps,
645
+ [queryId],
646
+ );
647
+ const useResultRowIdsListener = (
648
+ queryId,
649
+ listener,
650
+ listenerDeps,
651
+ queriesOrQueriesId,
652
+ ) =>
653
+ useListener(
654
+ 'ResultRowIds',
655
+ useQueriesOrQueriesId(queriesOrQueriesId),
656
+ listener,
657
+ listenerDeps,
658
+ [queryId],
659
+ );
660
+ const useResultSortedRowIdsListener = (
661
+ queryId,
662
+ cellId,
663
+ descending,
664
+ offset,
665
+ limit,
666
+ listener,
667
+ listenerDeps,
668
+ queriesOrQueriesId,
669
+ ) =>
670
+ useListener(
671
+ 'ResultSortedRowIds',
672
+ useQueriesOrQueriesId(queriesOrQueriesId),
673
+ listener,
674
+ listenerDeps,
675
+ [queryId, cellId, descending, offset, limit],
676
+ );
677
+ const useResultRowListener = (
678
+ queryId,
679
+ rowId,
680
+ listener,
681
+ listenerDeps,
682
+ queriesOrQueriesId,
683
+ ) =>
684
+ useListener(
685
+ 'ResultRow',
686
+ useQueriesOrQueriesId(queriesOrQueriesId),
687
+ listener,
688
+ listenerDeps,
689
+ [queryId, rowId],
690
+ );
691
+ const useResultCellIdsListener = (
692
+ queryId,
693
+ rowId,
694
+ listener,
695
+ listenerDeps,
696
+ queriesOrQueriesId,
697
+ ) =>
698
+ useListener(
699
+ 'ResultCellIds',
700
+ useQueriesOrQueriesId(queriesOrQueriesId),
701
+ listener,
702
+ listenerDeps,
703
+ [queryId, rowId],
704
+ );
705
+ const useResultCellListener = (
706
+ queryId,
707
+ rowId,
708
+ cellId,
709
+ listener,
710
+ listenerDeps,
711
+ queriesOrQueriesId,
712
+ ) =>
713
+ useListener(
714
+ 'ResultCell',
715
+ useQueriesOrQueriesId(queriesOrQueriesId),
716
+ listener,
717
+ listenerDeps,
718
+ [queryId, rowId, cellId],
719
+ );
553
720
  const useCreateCheckpoints = (store, create, createDeps) =>
554
721
  useCreate(store, create, createDeps);
555
722
  const useCheckpointIds = (checkpointsOrCheckpointsId) =>
@@ -673,6 +840,58 @@ const useCreatePersister = (
673
840
  };
674
841
 
675
842
  const {createElement, useMemo} = React;
843
+ const tableView = (
844
+ {
845
+ tableId,
846
+ store,
847
+ rowComponent: Row = RowView,
848
+ getRowComponentProps,
849
+ separator,
850
+ debugIds,
851
+ },
852
+ rowIds,
853
+ ) =>
854
+ wrap(
855
+ arrayMap(rowIds, (rowId) =>
856
+ /* @__PURE__ */ createElement(Row, {
857
+ ...getProps(getRowComponentProps, rowId),
858
+ key: rowId,
859
+ tableId,
860
+ rowId,
861
+ store,
862
+ debugIds,
863
+ }),
864
+ ),
865
+ separator,
866
+ debugIds,
867
+ tableId,
868
+ );
869
+ const resultTableView = (
870
+ {
871
+ queryId,
872
+ queries,
873
+ resultRowComponent: ResultRow = ResultRowView,
874
+ getResultRowComponentProps,
875
+ separator,
876
+ debugIds,
877
+ },
878
+ rowIds,
879
+ ) =>
880
+ wrap(
881
+ arrayMap(rowIds, (rowId) =>
882
+ /* @__PURE__ */ createElement(ResultRow, {
883
+ ...getProps(getResultRowComponentProps, rowId),
884
+ key: rowId,
885
+ queryId,
886
+ rowId,
887
+ queries,
888
+ debugIds,
889
+ }),
890
+ ),
891
+ separator,
892
+ debugIds,
893
+ queryId,
894
+ );
676
895
  const useRelationshipsStoreTableId = (relationships) => {
677
896
  const resolvedRelationships =
678
897
  useRelationshipsOrRelationshipsId(relationships);
@@ -746,6 +965,8 @@ const Provider = ({
746
965
  indexesById,
747
966
  relationships,
748
967
  relationshipsById,
968
+ queries,
969
+ queriesById,
749
970
  checkpoints,
750
971
  checkpointsById,
751
972
  children,
@@ -764,8 +985,10 @@ const Provider = ({
764
985
  {...thingsOrThingsId[5], ...indexesById},
765
986
  relationships ?? thingsOrThingsId[6],
766
987
  {...thingsOrThingsId[7], ...relationshipsById},
767
- checkpoints ?? thingsOrThingsId[8],
768
- {...thingsOrThingsId[9], ...checkpointsById},
988
+ queries ?? thingsOrThingsId[8],
989
+ {...thingsOrThingsId[9], ...queriesById},
990
+ checkpoints ?? thingsOrThingsId[10],
991
+ {...thingsOrThingsId[11], ...checkpointsById},
769
992
  ],
770
993
  [
771
994
  store,
@@ -776,6 +999,8 @@ const Provider = ({
776
999
  indexesById,
777
1000
  relationships,
778
1001
  relationshipsById,
1002
+ queries,
1003
+ queriesById,
779
1004
  checkpoints,
780
1005
  checkpointsById,
781
1006
  thingsOrThingsId,
@@ -803,14 +1028,13 @@ const RowView = ({
803
1028
  tableId,
804
1029
  rowId,
805
1030
  store,
806
- trackReorder,
807
1031
  cellComponent: Cell = CellView,
808
1032
  getCellComponentProps,
809
1033
  separator,
810
1034
  debugIds,
811
1035
  }) =>
812
1036
  wrap(
813
- arrayMap(useCellIds(tableId, rowId, store, trackReorder), (cellId) =>
1037
+ arrayMap(useCellIds(tableId, rowId, store), (cellId) =>
814
1038
  /* @__PURE__ */ createElement(Cell, {
815
1039
  ...getProps(getCellComponentProps, cellId),
816
1040
  key: cellId,
@@ -825,40 +1049,29 @@ const RowView = ({
825
1049
  debugIds,
826
1050
  rowId,
827
1051
  );
828
- const TableView = ({
829
- tableId,
830
- store,
831
- trackReorder,
832
- rowComponent: Row = RowView,
833
- getRowComponentProps,
834
- separator,
835
- debugIds,
836
- }) =>
837
- wrap(
838
- arrayMap(useRowIds(tableId, store, trackReorder), (rowId) =>
839
- /* @__PURE__ */ createElement(Row, {
840
- ...getProps(getRowComponentProps, rowId),
841
- key: rowId,
842
- tableId,
843
- rowId,
844
- store,
845
- debugIds,
846
- }),
1052
+ const TableView = (props) =>
1053
+ tableView(props, useRowIds(props.tableId, props.store));
1054
+ const SortedTableView = ({cellId, descending, offset, limit, ...props}) =>
1055
+ tableView(
1056
+ props,
1057
+ useSortedRowIds(
1058
+ props.tableId,
1059
+ cellId,
1060
+ descending,
1061
+ offset,
1062
+ limit,
1063
+ props.store,
847
1064
  ),
848
- separator,
849
- debugIds,
850
- tableId,
851
1065
  );
852
1066
  const TablesView = ({
853
1067
  store,
854
- trackReorder,
855
1068
  tableComponent: Table = TableView,
856
1069
  getTableComponentProps,
857
1070
  separator,
858
1071
  debugIds,
859
1072
  }) =>
860
1073
  wrap(
861
- arrayMap(useTableIds(store, trackReorder), (tableId) =>
1074
+ arrayMap(useTableIds(store), (tableId) =>
862
1075
  /* @__PURE__ */ createElement(Table, {
863
1076
  ...getProps(getTableComponentProps, tableId),
864
1077
  key: tableId,
@@ -964,6 +1177,53 @@ const LocalRowsView = (props) =>
964
1177
  useComponentPerRow(props, useLocalRowIds, props.remoteRowId);
965
1178
  const LinkedRowsView = (props) =>
966
1179
  useComponentPerRow(props, useLinkedRowIds, props.firstRowId);
1180
+ const ResultCellView = ({queryId, rowId, cellId, queries, debugIds}) =>
1181
+ wrap(
1182
+ EMPTY_STRING +
1183
+ (useResultCell(queryId, rowId, cellId, queries) ?? EMPTY_STRING),
1184
+ void 0,
1185
+ debugIds,
1186
+ cellId,
1187
+ );
1188
+ const ResultRowView = ({
1189
+ queryId,
1190
+ rowId,
1191
+ queries,
1192
+ resultCellComponent: ResultCell = ResultCellView,
1193
+ getResultCellComponentProps,
1194
+ separator,
1195
+ debugIds,
1196
+ }) =>
1197
+ wrap(
1198
+ arrayMap(useResultCellIds(queryId, rowId, queries), (cellId) =>
1199
+ /* @__PURE__ */ createElement(ResultCell, {
1200
+ ...getProps(getResultCellComponentProps, cellId),
1201
+ key: cellId,
1202
+ queryId,
1203
+ rowId,
1204
+ cellId,
1205
+ queries,
1206
+ debugIds,
1207
+ }),
1208
+ ),
1209
+ separator,
1210
+ debugIds,
1211
+ rowId,
1212
+ );
1213
+ const ResultTableView = (props) =>
1214
+ resultTableView(props, useResultRowIds(props.queryId, props.queries));
1215
+ const ResultSortedTableView = ({cellId, descending, offset, limit, ...props}) =>
1216
+ resultTableView(
1217
+ props,
1218
+ useResultSortedRowIds(
1219
+ props.queryId,
1220
+ cellId,
1221
+ descending,
1222
+ offset,
1223
+ limit,
1224
+ props.queries,
1225
+ ),
1226
+ );
967
1227
  const CheckpointView = ({checkpoints, checkpointId, debugIds}) =>
968
1228
  wrap(
969
1229
  useCheckpoint(checkpointId, checkpoints) ?? EMPTY_STRING,
@@ -993,10 +1253,16 @@ export {
993
1253
  MetricView,
994
1254
  Provider,
995
1255
  RemoteRowView,
1256
+ ResultCellView,
1257
+ ResultRowView,
1258
+ ResultSortedTableView,
1259
+ ResultTableView,
996
1260
  RowView,
997
1261
  SliceView,
1262
+ SortedTableView,
998
1263
  TableView,
999
1264
  TablesView,
1265
+ tableView,
1000
1266
  useAddRowCallback,
1001
1267
  useCell,
1002
1268
  useCellIds,
@@ -1011,6 +1277,7 @@ export {
1011
1277
  useCreateIndexes,
1012
1278
  useCreateMetrics,
1013
1279
  useCreatePersister,
1280
+ useCreateQueries,
1014
1281
  useCreateRelationships,
1015
1282
  useCreateStore,
1016
1283
  useDelCellCallback,
@@ -1028,10 +1295,23 @@ export {
1028
1295
  useMetric,
1029
1296
  useMetricListener,
1030
1297
  useMetrics,
1298
+ useQueries,
1031
1299
  useRedoInformation,
1032
1300
  useRelationships,
1033
1301
  useRemoteRowId,
1034
1302
  useRemoteRowIdListener,
1303
+ useResultCell,
1304
+ useResultCellIds,
1305
+ useResultCellIdsListener,
1306
+ useResultCellListener,
1307
+ useResultRow,
1308
+ useResultRowIds,
1309
+ useResultRowIdsListener,
1310
+ useResultRowListener,
1311
+ useResultSortedRowIds,
1312
+ useResultSortedRowIdsListener,
1313
+ useResultTable,
1314
+ useResultTableListener,
1035
1315
  useRow,
1036
1316
  useRowIds,
1037
1317
  useRowIdsListener,
@@ -1046,6 +1326,8 @@ export {
1046
1326
  useSliceIdsListener,
1047
1327
  useSliceRowIds,
1048
1328
  useSliceRowIdsListener,
1329
+ useSortedRowIds,
1330
+ useSortedRowIdsListener,
1049
1331
  useStore,
1050
1332
  useTable,
1051
1333
  useTableIds,