tinybase 6.1.0-beta.5 → 6.1.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.
- package/@types/persisters/index.d.ts +82 -0
- package/@types/persisters/with-schemas/index.d.ts +91 -0
- package/@types/store/index.d.ts +123 -1
- package/@types/store/with-schemas/index.d.ts +159 -24
- package/@types/ui-react/index.d.ts +575 -7
- package/@types/ui-react/with-schemas/index.d.ts +184 -40
- package/index.js +73 -53
- package/mergeable-store/index.js +73 -53
- package/mergeable-store/with-schemas/index.js +73 -53
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react/index.js +1 -1
- package/min/ui-react/index.js.gz +0 -0
- package/min/ui-react/with-schemas/index.js +1 -1
- package/min/ui-react/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/package.json +6 -6
- package/persisters/index.js +33 -8
- package/persisters/persister-automerge/index.js +23 -3
- package/persisters/persister-automerge/with-schemas/index.js +23 -3
- package/persisters/persister-browser/index.js +23 -3
- package/persisters/persister-browser/with-schemas/index.js +23 -3
- package/persisters/persister-cr-sqlite-wasm/index.js +33 -8
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +33 -8
- package/persisters/persister-durable-object-storage/index.js +23 -3
- package/persisters/persister-durable-object-storage/with-schemas/index.js +23 -3
- package/persisters/persister-electric-sql/index.js +33 -8
- package/persisters/persister-electric-sql/with-schemas/index.js +33 -8
- package/persisters/persister-expo-sqlite/index.js +33 -8
- package/persisters/persister-expo-sqlite/with-schemas/index.js +33 -8
- package/persisters/persister-file/index.js +23 -3
- package/persisters/persister-file/with-schemas/index.js +23 -3
- package/persisters/persister-indexed-db/index.js +23 -3
- package/persisters/persister-indexed-db/with-schemas/index.js +23 -3
- package/persisters/persister-libsql/index.js +33 -8
- package/persisters/persister-libsql/with-schemas/index.js +33 -8
- package/persisters/persister-partykit-client/index.js +23 -3
- package/persisters/persister-partykit-client/with-schemas/index.js +23 -3
- package/persisters/persister-pglite/index.js +33 -8
- package/persisters/persister-pglite/with-schemas/index.js +33 -8
- package/persisters/persister-postgres/index.js +33 -8
- package/persisters/persister-postgres/with-schemas/index.js +33 -8
- package/persisters/persister-powersync/index.js +33 -8
- package/persisters/persister-powersync/with-schemas/index.js +33 -8
- package/persisters/persister-remote/index.js +23 -3
- package/persisters/persister-remote/with-schemas/index.js +23 -3
- package/persisters/persister-sqlite-bun/index.js +33 -8
- package/persisters/persister-sqlite-bun/with-schemas/index.js +33 -8
- package/persisters/persister-sqlite-wasm/index.js +33 -8
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +33 -8
- package/persisters/persister-sqlite3/index.js +33 -8
- package/persisters/persister-sqlite3/with-schemas/index.js +33 -8
- package/persisters/persister-yjs/index.js +23 -3
- package/persisters/persister-yjs/with-schemas/index.js +23 -3
- package/persisters/with-schemas/index.js +33 -8
- package/readme.md +17 -17
- package/releases.md +60 -36
- package/store/index.js +73 -53
- package/store/with-schemas/index.js +73 -53
- package/synchronizers/index.js +27 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +27 -9
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-local/index.js +27 -9
- package/synchronizers/synchronizer-local/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-client/index.js +27 -9
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-server/index.js +27 -9
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +27 -9
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +27 -9
- package/synchronizers/with-schemas/index.js +27 -9
- package/ui-react/index.js +84 -20
- package/ui-react/with-schemas/index.js +84 -20
- package/ui-react-dom/index.js +1 -1
- package/ui-react-dom/with-schemas/index.js +1 -1
- package/ui-react-inspector/index.js +97 -57
- package/ui-react-inspector/with-schemas/index.js +97 -57
- package/with-schemas/index.js +73 -53
|
@@ -294,6 +294,39 @@ const useCheckpointAction = (checkpointsOrCheckpointsId, action, arg) => {
|
|
|
294
294
|
[checkpoints, action, arg],
|
|
295
295
|
);
|
|
296
296
|
};
|
|
297
|
+
const useSortedRowIdsImpl = (
|
|
298
|
+
tableId,
|
|
299
|
+
cellId,
|
|
300
|
+
descending,
|
|
301
|
+
offset,
|
|
302
|
+
limit,
|
|
303
|
+
storeOrStoreId,
|
|
304
|
+
) =>
|
|
305
|
+
useListenable(
|
|
306
|
+
SORTED_ROW_IDS,
|
|
307
|
+
useStoreOrStoreById(storeOrStoreId),
|
|
308
|
+
1 /* Array */,
|
|
309
|
+
[tableId, cellId, descending, offset, limit],
|
|
310
|
+
);
|
|
311
|
+
const useSortedRowIdsListenerImpl = (
|
|
312
|
+
tableId,
|
|
313
|
+
cellId,
|
|
314
|
+
descending,
|
|
315
|
+
offset,
|
|
316
|
+
limit,
|
|
317
|
+
listener,
|
|
318
|
+
listenerDeps,
|
|
319
|
+
mutator,
|
|
320
|
+
storeOrStoreId,
|
|
321
|
+
) =>
|
|
322
|
+
useListener(
|
|
323
|
+
SORTED_ROW_IDS,
|
|
324
|
+
useStoreOrStoreById(storeOrStoreId),
|
|
325
|
+
listener,
|
|
326
|
+
listenerDeps,
|
|
327
|
+
[tableId, cellId, descending, offset, limit],
|
|
328
|
+
mutator,
|
|
329
|
+
);
|
|
297
330
|
const useCreateStore = (create, createDeps = EMPTY_ARRAY) =>
|
|
298
331
|
useMemo(create, createDeps);
|
|
299
332
|
const useStoreIds = () => useThingIds(Offsets.Store);
|
|
@@ -350,18 +383,31 @@ const useRowIds = (tableId, storeOrStoreId) =>
|
|
|
350
383
|
tableId,
|
|
351
384
|
]);
|
|
352
385
|
const useSortedRowIds = (
|
|
353
|
-
|
|
354
|
-
|
|
386
|
+
tableIdOrArgs,
|
|
387
|
+
cellIdOrStoreOrStoreId,
|
|
355
388
|
descending,
|
|
356
|
-
offset
|
|
389
|
+
offset,
|
|
357
390
|
limit,
|
|
358
391
|
storeOrStoreId,
|
|
359
392
|
) =>
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
393
|
+
useSortedRowIdsImpl(
|
|
394
|
+
...(isObject(tableIdOrArgs)
|
|
395
|
+
? [
|
|
396
|
+
tableIdOrArgs.tableId,
|
|
397
|
+
tableIdOrArgs.cellId,
|
|
398
|
+
tableIdOrArgs.descending ?? false,
|
|
399
|
+
tableIdOrArgs.offset ?? 0,
|
|
400
|
+
tableIdOrArgs.limit,
|
|
401
|
+
cellIdOrStoreOrStoreId,
|
|
402
|
+
]
|
|
403
|
+
: [
|
|
404
|
+
tableIdOrArgs,
|
|
405
|
+
cellIdOrStoreOrStoreId,
|
|
406
|
+
descending,
|
|
407
|
+
offset,
|
|
408
|
+
limit,
|
|
409
|
+
storeOrStoreId,
|
|
410
|
+
]),
|
|
365
411
|
);
|
|
366
412
|
const useHasRow = (tableId, rowId, storeOrStoreId) =>
|
|
367
413
|
useListenable(ROW, useStoreOrStoreById(storeOrStoreId), 4 /* Boolean */, [
|
|
@@ -733,23 +779,40 @@ const useRowIdsListener = (
|
|
|
733
779
|
mutator,
|
|
734
780
|
);
|
|
735
781
|
const useSortedRowIdsListener = (
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
782
|
+
tableIdOrArgs,
|
|
783
|
+
cellIdOrListener,
|
|
784
|
+
descendingOrListenerDeps,
|
|
785
|
+
offsetOrMutator,
|
|
786
|
+
limitOrStoreOrStoreId,
|
|
741
787
|
listener,
|
|
742
788
|
listenerDeps,
|
|
743
789
|
mutator,
|
|
744
790
|
storeOrStoreId,
|
|
745
791
|
) =>
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
792
|
+
useSortedRowIdsListenerImpl(
|
|
793
|
+
...(isObject(tableIdOrArgs)
|
|
794
|
+
? [
|
|
795
|
+
tableIdOrArgs.tableId,
|
|
796
|
+
tableIdOrArgs.cellId,
|
|
797
|
+
tableIdOrArgs.descending ?? false,
|
|
798
|
+
tableIdOrArgs.offset ?? 0,
|
|
799
|
+
tableIdOrArgs.limit,
|
|
800
|
+
cellIdOrListener,
|
|
801
|
+
descendingOrListenerDeps,
|
|
802
|
+
offsetOrMutator,
|
|
803
|
+
limitOrStoreOrStoreId,
|
|
804
|
+
]
|
|
805
|
+
: [
|
|
806
|
+
tableIdOrArgs,
|
|
807
|
+
cellIdOrListener,
|
|
808
|
+
descendingOrListenerDeps,
|
|
809
|
+
offsetOrMutator,
|
|
810
|
+
limitOrStoreOrStoreId,
|
|
811
|
+
listener,
|
|
812
|
+
listenerDeps,
|
|
813
|
+
mutator,
|
|
814
|
+
storeOrStoreId,
|
|
815
|
+
]),
|
|
753
816
|
);
|
|
754
817
|
const useHasRowListener = (
|
|
755
818
|
tableId,
|
|
@@ -2231,6 +2294,7 @@ export {
|
|
|
2231
2294
|
useSliceRowIdsListener,
|
|
2232
2295
|
useSortedRowIds,
|
|
2233
2296
|
useSortedRowIdsListener,
|
|
2297
|
+
useSortedRowIdsListenerImpl,
|
|
2234
2298
|
useStartTransactionListener,
|
|
2235
2299
|
useStore,
|
|
2236
2300
|
useStoreIds,
|
package/ui-react-dom/index.js
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
|
|
27
27
|
const getTypeOf = (thing) => typeof thing;
|
|
28
28
|
const EMPTY_STRING = '';
|
|
29
|
+
const DOT = '.';
|
|
29
30
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
30
31
|
const BOOLEAN = getTypeOf(true);
|
|
31
32
|
const NUMBER = getTypeOf(0);
|
|
@@ -90,7 +91,6 @@ const getIndexStoreTableId = (indexes, indexId) => [
|
|
|
90
91
|
indexes?.getTableId(indexId),
|
|
91
92
|
];
|
|
92
93
|
|
|
93
|
-
const DOT = '.';
|
|
94
94
|
const EDITABLE = 'editable';
|
|
95
95
|
const LEFT_ARROW = '\u2190';
|
|
96
96
|
const UP_ARROW = '\u2191';
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
|
|
27
27
|
const getTypeOf = (thing) => typeof thing;
|
|
28
28
|
const EMPTY_STRING = '';
|
|
29
|
+
const DOT = '.';
|
|
29
30
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
30
31
|
const BOOLEAN = getTypeOf(true);
|
|
31
32
|
const NUMBER = getTypeOf(0);
|
|
@@ -90,7 +91,6 @@ const getIndexStoreTableId = (indexes, indexId) => [
|
|
|
90
91
|
indexes?.getTableId(indexId),
|
|
91
92
|
];
|
|
92
93
|
|
|
93
|
-
const DOT = '.';
|
|
94
94
|
const EDITABLE = 'editable';
|
|
95
95
|
const LEFT_ARROW = '\u2190';
|
|
96
96
|
const UP_ARROW = '\u2191';
|
|
@@ -45,6 +45,7 @@ import {
|
|
|
45
45
|
|
|
46
46
|
const getTypeOf = (thing) => typeof thing;
|
|
47
47
|
const EMPTY_STRING = '';
|
|
48
|
+
const DOT = '.';
|
|
48
49
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
49
50
|
const BOOLEAN = getTypeOf(true);
|
|
50
51
|
const NUMBER = getTypeOf(0);
|
|
@@ -539,6 +540,25 @@ const createCustomPersister = (
|
|
|
539
540
|
return persister;
|
|
540
541
|
};
|
|
541
542
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
543
|
+
const startAutoPersisting = async (
|
|
544
|
+
initialContent,
|
|
545
|
+
startSaveFirst = false,
|
|
546
|
+
) => {
|
|
547
|
+
const [call1, call2] = startSaveFirst
|
|
548
|
+
? [startAutoSave, startAutoLoad]
|
|
549
|
+
: [startAutoLoad, startAutoSave];
|
|
550
|
+
await call1(initialContent);
|
|
551
|
+
await call2(initialContent);
|
|
552
|
+
return persister;
|
|
553
|
+
};
|
|
554
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
555
|
+
const [call1, call2] = stopSaveFirst
|
|
556
|
+
? [stopAutoSave, stopAutoLoad]
|
|
557
|
+
: [stopAutoLoad, stopAutoSave];
|
|
558
|
+
await call1();
|
|
559
|
+
await call2();
|
|
560
|
+
return persister;
|
|
561
|
+
};
|
|
542
562
|
const getStatus = () => status;
|
|
543
563
|
const addStatusListener = (listener) =>
|
|
544
564
|
addListener(listener, statusListeners);
|
|
@@ -552,10 +572,9 @@ const createCustomPersister = (
|
|
|
552
572
|
return persister;
|
|
553
573
|
};
|
|
554
574
|
const getStore = () => store;
|
|
555
|
-
const destroy =
|
|
575
|
+
const destroy = () => {
|
|
556
576
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
557
|
-
|
|
558
|
-
return await persister.stopAutoSave();
|
|
577
|
+
return stopAutoPersisting();
|
|
559
578
|
};
|
|
560
579
|
const getStats = () => ({loads, saves});
|
|
561
580
|
const persister = {
|
|
@@ -567,6 +586,8 @@ const createCustomPersister = (
|
|
|
567
586
|
startAutoSave,
|
|
568
587
|
stopAutoSave,
|
|
569
588
|
isAutoSaving,
|
|
589
|
+
startAutoPersisting,
|
|
590
|
+
stopAutoPersisting,
|
|
570
591
|
getStatus,
|
|
571
592
|
addStatusListener,
|
|
572
593
|
delListener,
|
|
@@ -1309,6 +1330,27 @@ const createStore = () => {
|
|
|
1309
1330
|
transaction(() => actions(...arrayMap(args, id)));
|
|
1310
1331
|
return store;
|
|
1311
1332
|
};
|
|
1333
|
+
const addSortedRowIdsListenerImpl = (
|
|
1334
|
+
tableId,
|
|
1335
|
+
cellId,
|
|
1336
|
+
otherArgs,
|
|
1337
|
+
listener,
|
|
1338
|
+
mutator,
|
|
1339
|
+
) => {
|
|
1340
|
+
let sortedRowIds = getSortedRowIds(tableId, cellId, ...otherArgs);
|
|
1341
|
+
return addListener(
|
|
1342
|
+
() => {
|
|
1343
|
+
const newSortedRowIds = getSortedRowIds(tableId, cellId, ...otherArgs);
|
|
1344
|
+
if (!arrayIsEqual(newSortedRowIds, sortedRowIds)) {
|
|
1345
|
+
sortedRowIds = newSortedRowIds;
|
|
1346
|
+
listener(store, tableId, cellId, ...otherArgs, sortedRowIds);
|
|
1347
|
+
}
|
|
1348
|
+
},
|
|
1349
|
+
sortedRowIdsListeners[mutator ? 1 : 0],
|
|
1350
|
+
[tableId, cellId],
|
|
1351
|
+
[getTableIds],
|
|
1352
|
+
);
|
|
1353
|
+
};
|
|
1312
1354
|
const getContent = () => [getTables(), getValues()];
|
|
1313
1355
|
const getTables = () => mapToObj3(tablesMap);
|
|
1314
1356
|
const getTableIds = () => mapKeys(tablesMap);
|
|
@@ -1317,22 +1359,36 @@ const createStore = () => {
|
|
|
1317
1359
|
mapKeys(mapGet(tableCellIds, id(tableId)));
|
|
1318
1360
|
const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));
|
|
1319
1361
|
const getRowIds = (tableId) => mapKeys(mapGet(tablesMap, id(tableId)));
|
|
1320
|
-
const getSortedRowIds = (
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1362
|
+
const getSortedRowIds = (
|
|
1363
|
+
tableIdOrArgs,
|
|
1364
|
+
cellId,
|
|
1365
|
+
descending,
|
|
1366
|
+
offset = 0,
|
|
1367
|
+
limit,
|
|
1368
|
+
) =>
|
|
1369
|
+
isObject(tableIdOrArgs)
|
|
1370
|
+
? getSortedRowIds(
|
|
1371
|
+
tableIdOrArgs.tableId,
|
|
1372
|
+
tableIdOrArgs.cellId,
|
|
1373
|
+
tableIdOrArgs.descending,
|
|
1374
|
+
tableIdOrArgs.offset,
|
|
1375
|
+
tableIdOrArgs.limit,
|
|
1376
|
+
)
|
|
1377
|
+
: arrayMap(
|
|
1378
|
+
slice(
|
|
1379
|
+
arraySort(
|
|
1380
|
+
mapMap(mapGet(tablesMap, id(tableIdOrArgs)), (row, rowId) => [
|
|
1381
|
+
isUndefined(cellId) ? rowId : mapGet(row, id(cellId)),
|
|
1382
|
+
rowId,
|
|
1383
|
+
]),
|
|
1384
|
+
([cell1], [cell2]) =>
|
|
1385
|
+
defaultSorter(cell1, cell2) * (descending ? -1 : 1),
|
|
1386
|
+
),
|
|
1387
|
+
offset,
|
|
1388
|
+
isUndefined(limit) ? limit : offset + limit,
|
|
1389
|
+
),
|
|
1390
|
+
([, rowId]) => rowId,
|
|
1391
|
+
);
|
|
1336
1392
|
const getRow = (tableId, rowId) =>
|
|
1337
1393
|
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
1338
1394
|
const getCellIds = (tableId, rowId) =>
|
|
@@ -1724,48 +1780,33 @@ const createStore = () => {
|
|
|
1724
1780
|
mapForEach(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), cellCallback);
|
|
1725
1781
|
const forEachValue = (valueCallback) => mapForEach(valuesMap, valueCallback);
|
|
1726
1782
|
const addSortedRowIdsListener = (
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1783
|
+
tableIdOrArgs,
|
|
1784
|
+
cellIdOrListener,
|
|
1785
|
+
descendingOrMutator,
|
|
1730
1786
|
offset,
|
|
1731
1787
|
limit,
|
|
1732
1788
|
listener,
|
|
1733
1789
|
mutator,
|
|
1734
|
-
) =>
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1790
|
+
) =>
|
|
1791
|
+
isObject(tableIdOrArgs)
|
|
1792
|
+
? addSortedRowIdsListenerImpl(
|
|
1793
|
+
tableIdOrArgs.tableId,
|
|
1794
|
+
tableIdOrArgs.cellId,
|
|
1795
|
+
[
|
|
1796
|
+
tableIdOrArgs.descending ?? false,
|
|
1797
|
+
tableIdOrArgs.offset ?? 0,
|
|
1798
|
+
tableIdOrArgs.limit,
|
|
1799
|
+
],
|
|
1800
|
+
cellIdOrListener,
|
|
1801
|
+
descendingOrMutator,
|
|
1802
|
+
)
|
|
1803
|
+
: addSortedRowIdsListenerImpl(
|
|
1804
|
+
tableIdOrArgs,
|
|
1805
|
+
cellIdOrListener,
|
|
1806
|
+
[descendingOrMutator, offset, limit],
|
|
1807
|
+
listener,
|
|
1808
|
+
mutator,
|
|
1750
1809
|
);
|
|
1751
|
-
if (!arrayIsEqual(newSortedRowIds, sortedRowIds)) {
|
|
1752
|
-
sortedRowIds = newSortedRowIds;
|
|
1753
|
-
listener(
|
|
1754
|
-
store,
|
|
1755
|
-
tableId,
|
|
1756
|
-
cellId,
|
|
1757
|
-
descending,
|
|
1758
|
-
offset,
|
|
1759
|
-
limit,
|
|
1760
|
-
sortedRowIds,
|
|
1761
|
-
);
|
|
1762
|
-
}
|
|
1763
|
-
},
|
|
1764
|
-
sortedRowIdsListeners[mutator ? 1 : 0],
|
|
1765
|
-
[tableId, cellId],
|
|
1766
|
-
[getTableIds],
|
|
1767
|
-
);
|
|
1768
|
-
};
|
|
1769
1810
|
const addStartTransactionListener = (listener) =>
|
|
1770
1811
|
addListener(listener, startTransactionListeners);
|
|
1771
1812
|
const addWillFinishTransactionListener = (listener) =>
|
|
@@ -2034,7 +2075,6 @@ const Nub = ({s}) => {
|
|
|
2034
2075
|
});
|
|
2035
2076
|
};
|
|
2036
2077
|
|
|
2037
|
-
const DOT = '.';
|
|
2038
2078
|
const EDITABLE = 'editable';
|
|
2039
2079
|
const LEFT_ARROW = '\u2190';
|
|
2040
2080
|
const UP_ARROW = '\u2191';
|
|
@@ -45,6 +45,7 @@ import {
|
|
|
45
45
|
|
|
46
46
|
const getTypeOf = (thing) => typeof thing;
|
|
47
47
|
const EMPTY_STRING = '';
|
|
48
|
+
const DOT = '.';
|
|
48
49
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
49
50
|
const BOOLEAN = getTypeOf(true);
|
|
50
51
|
const NUMBER = getTypeOf(0);
|
|
@@ -539,6 +540,25 @@ const createCustomPersister = (
|
|
|
539
540
|
return persister;
|
|
540
541
|
};
|
|
541
542
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
543
|
+
const startAutoPersisting = async (
|
|
544
|
+
initialContent,
|
|
545
|
+
startSaveFirst = false,
|
|
546
|
+
) => {
|
|
547
|
+
const [call1, call2] = startSaveFirst
|
|
548
|
+
? [startAutoSave, startAutoLoad]
|
|
549
|
+
: [startAutoLoad, startAutoSave];
|
|
550
|
+
await call1(initialContent);
|
|
551
|
+
await call2(initialContent);
|
|
552
|
+
return persister;
|
|
553
|
+
};
|
|
554
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
555
|
+
const [call1, call2] = stopSaveFirst
|
|
556
|
+
? [stopAutoSave, stopAutoLoad]
|
|
557
|
+
: [stopAutoLoad, stopAutoSave];
|
|
558
|
+
await call1();
|
|
559
|
+
await call2();
|
|
560
|
+
return persister;
|
|
561
|
+
};
|
|
542
562
|
const getStatus = () => status;
|
|
543
563
|
const addStatusListener = (listener) =>
|
|
544
564
|
addListener(listener, statusListeners);
|
|
@@ -552,10 +572,9 @@ const createCustomPersister = (
|
|
|
552
572
|
return persister;
|
|
553
573
|
};
|
|
554
574
|
const getStore = () => store;
|
|
555
|
-
const destroy =
|
|
575
|
+
const destroy = () => {
|
|
556
576
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
557
|
-
|
|
558
|
-
return await persister.stopAutoSave();
|
|
577
|
+
return stopAutoPersisting();
|
|
559
578
|
};
|
|
560
579
|
const getStats = () => ({loads, saves});
|
|
561
580
|
const persister = {
|
|
@@ -567,6 +586,8 @@ const createCustomPersister = (
|
|
|
567
586
|
startAutoSave,
|
|
568
587
|
stopAutoSave,
|
|
569
588
|
isAutoSaving,
|
|
589
|
+
startAutoPersisting,
|
|
590
|
+
stopAutoPersisting,
|
|
570
591
|
getStatus,
|
|
571
592
|
addStatusListener,
|
|
572
593
|
delListener,
|
|
@@ -1309,6 +1330,27 @@ const createStore = () => {
|
|
|
1309
1330
|
transaction(() => actions(...arrayMap(args, id)));
|
|
1310
1331
|
return store;
|
|
1311
1332
|
};
|
|
1333
|
+
const addSortedRowIdsListenerImpl = (
|
|
1334
|
+
tableId,
|
|
1335
|
+
cellId,
|
|
1336
|
+
otherArgs,
|
|
1337
|
+
listener,
|
|
1338
|
+
mutator,
|
|
1339
|
+
) => {
|
|
1340
|
+
let sortedRowIds = getSortedRowIds(tableId, cellId, ...otherArgs);
|
|
1341
|
+
return addListener(
|
|
1342
|
+
() => {
|
|
1343
|
+
const newSortedRowIds = getSortedRowIds(tableId, cellId, ...otherArgs);
|
|
1344
|
+
if (!arrayIsEqual(newSortedRowIds, sortedRowIds)) {
|
|
1345
|
+
sortedRowIds = newSortedRowIds;
|
|
1346
|
+
listener(store, tableId, cellId, ...otherArgs, sortedRowIds);
|
|
1347
|
+
}
|
|
1348
|
+
},
|
|
1349
|
+
sortedRowIdsListeners[mutator ? 1 : 0],
|
|
1350
|
+
[tableId, cellId],
|
|
1351
|
+
[getTableIds],
|
|
1352
|
+
);
|
|
1353
|
+
};
|
|
1312
1354
|
const getContent = () => [getTables(), getValues()];
|
|
1313
1355
|
const getTables = () => mapToObj3(tablesMap);
|
|
1314
1356
|
const getTableIds = () => mapKeys(tablesMap);
|
|
@@ -1317,22 +1359,36 @@ const createStore = () => {
|
|
|
1317
1359
|
mapKeys(mapGet(tableCellIds, id(tableId)));
|
|
1318
1360
|
const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));
|
|
1319
1361
|
const getRowIds = (tableId) => mapKeys(mapGet(tablesMap, id(tableId)));
|
|
1320
|
-
const getSortedRowIds = (
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1362
|
+
const getSortedRowIds = (
|
|
1363
|
+
tableIdOrArgs,
|
|
1364
|
+
cellId,
|
|
1365
|
+
descending,
|
|
1366
|
+
offset = 0,
|
|
1367
|
+
limit,
|
|
1368
|
+
) =>
|
|
1369
|
+
isObject(tableIdOrArgs)
|
|
1370
|
+
? getSortedRowIds(
|
|
1371
|
+
tableIdOrArgs.tableId,
|
|
1372
|
+
tableIdOrArgs.cellId,
|
|
1373
|
+
tableIdOrArgs.descending,
|
|
1374
|
+
tableIdOrArgs.offset,
|
|
1375
|
+
tableIdOrArgs.limit,
|
|
1376
|
+
)
|
|
1377
|
+
: arrayMap(
|
|
1378
|
+
slice(
|
|
1379
|
+
arraySort(
|
|
1380
|
+
mapMap(mapGet(tablesMap, id(tableIdOrArgs)), (row, rowId) => [
|
|
1381
|
+
isUndefined(cellId) ? rowId : mapGet(row, id(cellId)),
|
|
1382
|
+
rowId,
|
|
1383
|
+
]),
|
|
1384
|
+
([cell1], [cell2]) =>
|
|
1385
|
+
defaultSorter(cell1, cell2) * (descending ? -1 : 1),
|
|
1386
|
+
),
|
|
1387
|
+
offset,
|
|
1388
|
+
isUndefined(limit) ? limit : offset + limit,
|
|
1389
|
+
),
|
|
1390
|
+
([, rowId]) => rowId,
|
|
1391
|
+
);
|
|
1336
1392
|
const getRow = (tableId, rowId) =>
|
|
1337
1393
|
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
1338
1394
|
const getCellIds = (tableId, rowId) =>
|
|
@@ -1724,48 +1780,33 @@ const createStore = () => {
|
|
|
1724
1780
|
mapForEach(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), cellCallback);
|
|
1725
1781
|
const forEachValue = (valueCallback) => mapForEach(valuesMap, valueCallback);
|
|
1726
1782
|
const addSortedRowIdsListener = (
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1783
|
+
tableIdOrArgs,
|
|
1784
|
+
cellIdOrListener,
|
|
1785
|
+
descendingOrMutator,
|
|
1730
1786
|
offset,
|
|
1731
1787
|
limit,
|
|
1732
1788
|
listener,
|
|
1733
1789
|
mutator,
|
|
1734
|
-
) =>
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1790
|
+
) =>
|
|
1791
|
+
isObject(tableIdOrArgs)
|
|
1792
|
+
? addSortedRowIdsListenerImpl(
|
|
1793
|
+
tableIdOrArgs.tableId,
|
|
1794
|
+
tableIdOrArgs.cellId,
|
|
1795
|
+
[
|
|
1796
|
+
tableIdOrArgs.descending ?? false,
|
|
1797
|
+
tableIdOrArgs.offset ?? 0,
|
|
1798
|
+
tableIdOrArgs.limit,
|
|
1799
|
+
],
|
|
1800
|
+
cellIdOrListener,
|
|
1801
|
+
descendingOrMutator,
|
|
1802
|
+
)
|
|
1803
|
+
: addSortedRowIdsListenerImpl(
|
|
1804
|
+
tableIdOrArgs,
|
|
1805
|
+
cellIdOrListener,
|
|
1806
|
+
[descendingOrMutator, offset, limit],
|
|
1807
|
+
listener,
|
|
1808
|
+
mutator,
|
|
1750
1809
|
);
|
|
1751
|
-
if (!arrayIsEqual(newSortedRowIds, sortedRowIds)) {
|
|
1752
|
-
sortedRowIds = newSortedRowIds;
|
|
1753
|
-
listener(
|
|
1754
|
-
store,
|
|
1755
|
-
tableId,
|
|
1756
|
-
cellId,
|
|
1757
|
-
descending,
|
|
1758
|
-
offset,
|
|
1759
|
-
limit,
|
|
1760
|
-
sortedRowIds,
|
|
1761
|
-
);
|
|
1762
|
-
}
|
|
1763
|
-
},
|
|
1764
|
-
sortedRowIdsListeners[mutator ? 1 : 0],
|
|
1765
|
-
[tableId, cellId],
|
|
1766
|
-
[getTableIds],
|
|
1767
|
-
);
|
|
1768
|
-
};
|
|
1769
1810
|
const addStartTransactionListener = (listener) =>
|
|
1770
1811
|
addListener(listener, startTransactionListeners);
|
|
1771
1812
|
const addWillFinishTransactionListener = (listener) =>
|
|
@@ -2034,7 +2075,6 @@ const Nub = ({s}) => {
|
|
|
2034
2075
|
});
|
|
2035
2076
|
};
|
|
2036
2077
|
|
|
2037
|
-
const DOT = '.';
|
|
2038
2078
|
const EDITABLE = 'editable';
|
|
2039
2079
|
const LEFT_ARROW = '\u2190';
|
|
2040
2080
|
const UP_ARROW = '\u2191';
|