tinybase 8.0.0-beta.2 → 8.0.0-beta.4
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/_internal/store/with-schemas/index.d.ts +2 -2
- package/@types/common/index.d.ts +22 -0
- package/@types/common/with-schemas/index.d.ts +22 -0
- package/@types/middleware/index.d.ts +44 -119
- package/@types/middleware/with-schemas/index.d.ts +44 -142
- package/@types/store/index.d.ts +132 -79
- package/@types/store/with-schemas/index.d.ts +137 -81
- package/@types/ui-react-dom/index.d.ts +6 -4
- package/@types/ui-react-dom/with-schemas/index.d.ts +6 -4
- package/checkpoints/index.js +2 -8
- package/checkpoints/with-schemas/index.js +2 -8
- package/index.js +311 -209
- package/mergeable-store/index.js +330 -201
- package/mergeable-store/with-schemas/index.js +330 -201
- package/middleware/index.js +2 -40
- package/middleware/with-schemas/index.js +2 -40
- package/min/checkpoints/index.js +1 -1
- package/min/checkpoints/index.js.gz +0 -0
- package/min/checkpoints/with-schemas/index.js +1 -1
- package/min/checkpoints/with-schemas/index.js.gz +0 -0
- 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/middleware/index.js +1 -1
- package/min/middleware/index.js.gz +0 -0
- package/min/middleware/with-schemas/index.js +1 -1
- package/min/middleware/with-schemas/index.js.gz +0 -0
- package/min/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/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-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/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-react-native-mmkv/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/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/queries/index.js +1 -1
- package/min/queries/index.js.gz +0 -0
- package/min/queries/with-schemas/index.js +1 -1
- package/min/queries/with-schemas/index.js.gz +0 -0
- package/min/schematizers/index.js +1 -1
- package/min/schematizers/index.js.gz +0 -0
- package/min/schematizers/schematizer-arktype/index.js +1 -1
- package/min/schematizers/schematizer-arktype/index.js.gz +0 -0
- package/min/schematizers/schematizer-arktype/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-arktype/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-effect/index.js +1 -1
- package/min/schematizers/schematizer-effect/index.js.gz +0 -0
- package/min/schematizers/schematizer-effect/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-effect/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-typebox/index.js +1 -1
- package/min/schematizers/schematizer-typebox/index.js.gz +0 -0
- package/min/schematizers/schematizer-typebox/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-typebox/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-valibot/index.js +1 -1
- package/min/schematizers/schematizer-valibot/index.js.gz +0 -0
- package/min/schematizers/schematizer-valibot/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-valibot/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-yup/index.js +1 -1
- package/min/schematizers/schematizer-yup/index.js.gz +0 -0
- package/min/schematizers/schematizer-yup/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-yup/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-zod/index.js +1 -1
- package/min/schematizers/schematizer-zod/index.js.gz +0 -0
- package/min/schematizers/schematizer-zod/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-zod/with-schemas/index.js.gz +0 -0
- package/min/schematizers/with-schemas/index.js +1 -1
- package/min/schematizers/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-dom/index.js +1 -1
- package/min/ui-react-dom/index.js.gz +0 -0
- package/min/ui-react-dom/with-schemas/index.js +1 -1
- package/min/ui-react-dom/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/omni/index.js +418 -219
- package/omni/with-schemas/index.js +418 -219
- package/package.json +10 -10
- package/persisters/index.js +5 -5
- package/persisters/persister-automerge/index.js +5 -5
- package/persisters/persister-automerge/with-schemas/index.js +5 -5
- package/persisters/persister-browser/index.js +5 -5
- package/persisters/persister-browser/with-schemas/index.js +5 -5
- package/persisters/persister-cr-sqlite-wasm/index.js +5 -5
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +5 -5
- package/persisters/persister-durable-object-sql-storage/index.js +5 -5
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +5 -5
- package/persisters/persister-durable-object-storage/index.js +5 -5
- package/persisters/persister-durable-object-storage/with-schemas/index.js +5 -5
- package/persisters/persister-electric-sql/index.js +5 -5
- package/persisters/persister-electric-sql/with-schemas/index.js +5 -5
- package/persisters/persister-expo-sqlite/index.js +5 -5
- package/persisters/persister-expo-sqlite/with-schemas/index.js +5 -5
- package/persisters/persister-file/index.js +5 -5
- package/persisters/persister-file/with-schemas/index.js +5 -5
- package/persisters/persister-indexed-db/index.js +5 -5
- package/persisters/persister-indexed-db/with-schemas/index.js +5 -5
- package/persisters/persister-libsql/index.js +5 -5
- package/persisters/persister-libsql/with-schemas/index.js +5 -5
- package/persisters/persister-partykit-client/index.js +5 -5
- package/persisters/persister-partykit-client/with-schemas/index.js +5 -5
- package/persisters/persister-pglite/index.js +5 -5
- package/persisters/persister-pglite/with-schemas/index.js +5 -5
- package/persisters/persister-postgres/index.js +5 -5
- package/persisters/persister-postgres/with-schemas/index.js +5 -5
- package/persisters/persister-powersync/index.js +5 -5
- package/persisters/persister-powersync/with-schemas/index.js +5 -5
- package/persisters/persister-react-native-mmkv/index.js +5 -5
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +5 -5
- package/persisters/persister-react-native-sqlite/index.js +5 -5
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +5 -5
- package/persisters/persister-remote/index.js +5 -5
- package/persisters/persister-remote/with-schemas/index.js +5 -5
- package/persisters/persister-sqlite-bun/index.js +5 -5
- package/persisters/persister-sqlite-bun/with-schemas/index.js +5 -5
- package/persisters/persister-sqlite-wasm/index.js +5 -5
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +5 -5
- package/persisters/persister-sqlite3/index.js +5 -5
- package/persisters/persister-sqlite3/with-schemas/index.js +5 -5
- package/persisters/persister-yjs/index.js +5 -5
- package/persisters/persister-yjs/with-schemas/index.js +5 -5
- package/persisters/with-schemas/index.js +5 -5
- package/queries/index.js +11 -4
- package/queries/with-schemas/index.js +11 -4
- package/readme.md +3 -3
- package/releases.md +38 -3
- package/schematizers/index.js +9 -1
- package/schematizers/schematizer-arktype/index.js +16 -1
- package/schematizers/schematizer-arktype/with-schemas/index.js +16 -1
- package/schematizers/schematizer-effect/index.js +15 -2
- package/schematizers/schematizer-effect/with-schemas/index.js +15 -2
- package/schematizers/schematizer-typebox/index.js +9 -1
- package/schematizers/schematizer-typebox/with-schemas/index.js +9 -1
- package/schematizers/schematizer-valibot/index.js +17 -2
- package/schematizers/schematizer-valibot/with-schemas/index.js +17 -2
- package/schematizers/schematizer-yup/index.js +9 -1
- package/schematizers/schematizer-yup/with-schemas/index.js +9 -1
- package/schematizers/schematizer-zod/index.js +13 -2
- package/schematizers/schematizer-zod/with-schemas/index.js +13 -2
- package/schematizers/with-schemas/index.js +9 -1
- package/store/index.js +254 -149
- package/store/with-schemas/index.js +254 -149
- package/synchronizers/index.js +5 -5
- package/synchronizers/synchronizer-broadcast-channel/index.js +5 -5
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-local/index.js +5 -5
- package/synchronizers/synchronizer-local/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-ws-client/index.js +5 -5
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-ws-server/index.js +5 -5
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +5 -5
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +5 -5
- package/synchronizers/with-schemas/index.js +5 -5
- package/ui-react/index.js +6 -0
- package/ui-react/with-schemas/index.js +6 -0
- package/ui-react-dom/index.js +113 -6
- package/ui-react-dom/with-schemas/index.js +113 -6
- package/ui-react-inspector/index.js +329 -129
- package/ui-react-inspector/with-schemas/index.js +329 -129
- package/with-schemas/index.js +311 -209
|
@@ -15,6 +15,8 @@ const STRING = getTypeOf(EMPTY_STRING);
|
|
|
15
15
|
const BOOLEAN = getTypeOf(true);
|
|
16
16
|
const NUMBER = getTypeOf(0);
|
|
17
17
|
const FUNCTION$1 = getTypeOf(getTypeOf);
|
|
18
|
+
const OBJECT = 'object';
|
|
19
|
+
const ARRAY = 'array';
|
|
18
20
|
const TRUE = 'true';
|
|
19
21
|
const TYPE = 'type';
|
|
20
22
|
const DEFAULT = 'default';
|
|
@@ -68,6 +70,7 @@ const EXTRA = 'extra';
|
|
|
68
70
|
const T = 't';
|
|
69
71
|
const V = 'v';
|
|
70
72
|
const UNDEFINED = '\uFFFC';
|
|
73
|
+
const JSON_PREFIX = '\uFFFD';
|
|
71
74
|
const id = (key) => EMPTY_STRING + key;
|
|
72
75
|
const strStartsWith = (str, prefix) => str.startsWith(prefix);
|
|
73
76
|
const strEndsWith = (str, suffix) => str.endsWith(suffix);
|
|
@@ -118,6 +121,14 @@ const structuredClone = GLOBAL.structuredClone;
|
|
|
118
121
|
const errorNew = (message) => {
|
|
119
122
|
throw new Error(message);
|
|
120
123
|
};
|
|
124
|
+
const tryReturn = (tryF, catchReturn) => {
|
|
125
|
+
try {
|
|
126
|
+
return tryF();
|
|
127
|
+
} catch {
|
|
128
|
+
/* istanbul ignore next */
|
|
129
|
+
return catchReturn;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
121
132
|
const tryCatch = async (action, then1, then2) => {
|
|
122
133
|
try {
|
|
123
134
|
return await action();
|
|
@@ -619,18 +630,12 @@ const createCheckpoints = getCreateFunction(
|
|
|
619
630
|
collForEach(cellsDelta2, (table, tableId) =>
|
|
620
631
|
collForEach(table, (row, rowId) =>
|
|
621
632
|
collForEach(row, (oldNew, cellId) =>
|
|
622
|
-
store.
|
|
623
|
-
tableId,
|
|
624
|
-
rowId,
|
|
625
|
-
cellId,
|
|
626
|
-
oldNew[oldOrNew],
|
|
627
|
-
true,
|
|
628
|
-
),
|
|
633
|
+
store._[5](tableId, rowId, cellId, oldNew[oldOrNew], true),
|
|
629
634
|
),
|
|
630
635
|
),
|
|
631
636
|
);
|
|
632
637
|
collForEach(valuesDelta2, (oldNew, valueId) =>
|
|
633
|
-
store.
|
|
638
|
+
store._[6](valueId, oldNew[oldOrNew], true),
|
|
634
639
|
);
|
|
635
640
|
});
|
|
636
641
|
listening = 1;
|
|
@@ -1233,6 +1238,12 @@ const getCellOrValueType = (cellOrValue) => {
|
|
|
1233
1238
|
if (isNull(cellOrValue)) {
|
|
1234
1239
|
return NULL;
|
|
1235
1240
|
}
|
|
1241
|
+
if (isArray(cellOrValue)) {
|
|
1242
|
+
return ARRAY;
|
|
1243
|
+
}
|
|
1244
|
+
if (isObject(cellOrValue)) {
|
|
1245
|
+
return OBJECT;
|
|
1246
|
+
}
|
|
1236
1247
|
const type = getTypeOf(cellOrValue);
|
|
1237
1248
|
return isTypeStringOrBoolean(type) ||
|
|
1238
1249
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
@@ -1241,17 +1252,33 @@ const getCellOrValueType = (cellOrValue) => {
|
|
|
1241
1252
|
};
|
|
1242
1253
|
const isCellOrValueOrUndefined = (cellOrValue) =>
|
|
1243
1254
|
isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));
|
|
1244
|
-
const
|
|
1255
|
+
const isJsonType = (type) => type == OBJECT || type == ARRAY;
|
|
1256
|
+
const encodeIfJson = (value) =>
|
|
1257
|
+
isObject(value) || isArray(value) ? JSON_PREFIX + jsonString(value) : value;
|
|
1258
|
+
const isEncodedJson = (value) => isString(value) && value[0] == JSON_PREFIX;
|
|
1259
|
+
const decodeIfJson = (raw, _id, encoded) =>
|
|
1260
|
+
!encoded && isEncodedJson(raw) ? jsonParse(slice(raw, 1)) : raw;
|
|
1261
|
+
const getTypeCase = (
|
|
1262
|
+
type,
|
|
1263
|
+
stringCase,
|
|
1264
|
+
numberCase,
|
|
1265
|
+
booleanCase,
|
|
1266
|
+
objectCase,
|
|
1267
|
+
arrayCase,
|
|
1268
|
+
) =>
|
|
1245
1269
|
type == STRING
|
|
1246
1270
|
? stringCase
|
|
1247
1271
|
: type == NUMBER
|
|
1248
1272
|
? numberCase
|
|
1249
1273
|
: type == BOOLEAN
|
|
1250
1274
|
? booleanCase
|
|
1251
|
-
:
|
|
1275
|
+
: type == OBJECT
|
|
1276
|
+
? objectCase
|
|
1277
|
+
: type == ARRAY
|
|
1278
|
+
? arrayCase
|
|
1279
|
+
: null;
|
|
1252
1280
|
|
|
1253
1281
|
const stampClone = ([value, hlc]) => stampNew(value, hlc);
|
|
1254
|
-
const stampCloneWithHash = ([value, hlc, hash]) => [value, hlc, hash];
|
|
1255
1282
|
const stampNew = (value, hlc) => (hlc ? [value, hlc] : [value]);
|
|
1256
1283
|
const stampNewWithHash = (value, hlc, hash) => [value, hlc, hash];
|
|
1257
1284
|
const getStampHash = (stamp) => stamp[2];
|
|
@@ -1268,10 +1295,11 @@ const stampUpdate = (stamp, hlc, hash) => {
|
|
|
1268
1295
|
};
|
|
1269
1296
|
const stampNewObj = (hlc = EMPTY_STRING) => stampNew(objNew(), hlc);
|
|
1270
1297
|
const stampNewMap = (hlc = EMPTY_STRING) => [mapNew(), hlc, 0];
|
|
1271
|
-
const stampMapToObjWithHash = (
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1298
|
+
const stampMapToObjWithHash = ([map, hlc, hash], mapper) => [
|
|
1299
|
+
mapToObj(map, mapper),
|
|
1300
|
+
hlc,
|
|
1301
|
+
hash,
|
|
1302
|
+
];
|
|
1275
1303
|
const stampMapToObjWithoutHash = ([map, hlc], mapper = stampClone) =>
|
|
1276
1304
|
stampNew(mapToObj(map, mapper), hlc);
|
|
1277
1305
|
const stampValidate = (stamp, validateThing) =>
|
|
@@ -1378,15 +1406,19 @@ const createStore = () => {
|
|
|
1378
1406
|
return false;
|
|
1379
1407
|
}
|
|
1380
1408
|
const type = schema[TYPE];
|
|
1381
|
-
if (!isTypeStringOrBoolean(type) && type != NUMBER) {
|
|
1409
|
+
if (!isTypeStringOrBoolean(type) && type != NUMBER && !isJsonType(type)) {
|
|
1382
1410
|
return false;
|
|
1383
1411
|
}
|
|
1384
1412
|
const defaultValue = schema[DEFAULT];
|
|
1385
1413
|
if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
|
|
1386
1414
|
return false;
|
|
1387
1415
|
}
|
|
1388
|
-
if (!isNull(defaultValue)
|
|
1389
|
-
|
|
1416
|
+
if (!isNull(defaultValue)) {
|
|
1417
|
+
if (getCellOrValueType(defaultValue) != type) {
|
|
1418
|
+
objDel(schema, DEFAULT);
|
|
1419
|
+
} else {
|
|
1420
|
+
schema[DEFAULT] = encodeIfJson(defaultValue);
|
|
1421
|
+
}
|
|
1390
1422
|
}
|
|
1391
1423
|
return true;
|
|
1392
1424
|
};
|
|
@@ -1426,20 +1458,22 @@ const createStore = () => {
|
|
|
1426
1458
|
? cellSchema[ALLOW_NULL]
|
|
1427
1459
|
? cell
|
|
1428
1460
|
: cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
|
|
1429
|
-
: getCellOrValueType(cell)
|
|
1430
|
-
? cell
|
|
1431
|
-
:
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1461
|
+
: getCellOrValueType(cell) === cellSchema[TYPE]
|
|
1462
|
+
? encodeIfJson(cell)
|
|
1463
|
+
: isJsonType(cellSchema[TYPE]) && isEncodedJson(cell)
|
|
1464
|
+
? cell
|
|
1465
|
+
: cellInvalid(
|
|
1466
|
+
tableId,
|
|
1467
|
+
rowId,
|
|
1468
|
+
cellId,
|
|
1469
|
+
cell,
|
|
1470
|
+
cellSchema[DEFAULT],
|
|
1471
|
+
),
|
|
1438
1472
|
() => cellInvalid(tableId, rowId, cellId, cell),
|
|
1439
1473
|
)
|
|
1440
1474
|
: isUndefined(getCellOrValueType(cell))
|
|
1441
1475
|
? cellInvalid(tableId, rowId, cellId, cell)
|
|
1442
|
-
: cell;
|
|
1476
|
+
: encodeIfJson(cell);
|
|
1443
1477
|
const validateValues = (values, skipDefaults) =>
|
|
1444
1478
|
objValidate(
|
|
1445
1479
|
skipDefaults ? values : addDefaultsToValues(values),
|
|
@@ -1463,14 +1497,16 @@ const createStore = () => {
|
|
|
1463
1497
|
? valueSchema[ALLOW_NULL]
|
|
1464
1498
|
? value
|
|
1465
1499
|
: valueInvalid(valueId, value, valueSchema[DEFAULT])
|
|
1466
|
-
: getCellOrValueType(value)
|
|
1467
|
-
? value
|
|
1468
|
-
:
|
|
1500
|
+
: getCellOrValueType(value) === valueSchema[TYPE]
|
|
1501
|
+
? encodeIfJson(value)
|
|
1502
|
+
: isJsonType(valueSchema[TYPE]) && isEncodedJson(value)
|
|
1503
|
+
? value
|
|
1504
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT]),
|
|
1469
1505
|
() => valueInvalid(valueId, value),
|
|
1470
1506
|
)
|
|
1471
1507
|
: isUndefined(getCellOrValueType(value))
|
|
1472
1508
|
? valueInvalid(valueId, value)
|
|
1473
|
-
: value;
|
|
1509
|
+
: encodeIfJson(value);
|
|
1474
1510
|
const addDefaultsToRow = (row, tableId, rowId) => {
|
|
1475
1511
|
ifNotUndefined(
|
|
1476
1512
|
mapGet(tablesSchemaRowCache, tableId),
|
|
@@ -1550,10 +1586,24 @@ const createStore = () => {
|
|
|
1550
1586
|
);
|
|
1551
1587
|
const setOrDelTables = (tables) =>
|
|
1552
1588
|
objIsEmpty(tables) ? delTables() : setTables(tables);
|
|
1553
|
-
const setOrDelCell = (
|
|
1589
|
+
const setOrDelCell = (
|
|
1590
|
+
tableId,
|
|
1591
|
+
rowId,
|
|
1592
|
+
cellId,
|
|
1593
|
+
cell,
|
|
1594
|
+
skipMiddleware,
|
|
1595
|
+
skipRowMiddleware,
|
|
1596
|
+
) =>
|
|
1554
1597
|
isUndefined(cell)
|
|
1555
1598
|
? delCell(tableId, rowId, cellId, true, skipMiddleware)
|
|
1556
|
-
: setCell(
|
|
1599
|
+
: setCell(
|
|
1600
|
+
tableId,
|
|
1601
|
+
rowId,
|
|
1602
|
+
cellId,
|
|
1603
|
+
cell,
|
|
1604
|
+
skipMiddleware,
|
|
1605
|
+
skipRowMiddleware,
|
|
1606
|
+
);
|
|
1557
1607
|
const setOrDelValues = (values) =>
|
|
1558
1608
|
objIsEmpty(values) ? delValues() : setValues(values);
|
|
1559
1609
|
const setOrDelValue = (valueId, value, skipMiddleware) =>
|
|
@@ -1653,6 +1703,30 @@ const createStore = () => {
|
|
|
1653
1703
|
),
|
|
1654
1704
|
objIsEqual,
|
|
1655
1705
|
);
|
|
1706
|
+
const applyRowDirectly = (tableId, tableMap, rowId, row, skipMiddleware) => {
|
|
1707
|
+
mapMatch(
|
|
1708
|
+
mapEnsure(tableMap, rowId, () => {
|
|
1709
|
+
rowIdsChanged(tableId, rowId, 1);
|
|
1710
|
+
return mapNew();
|
|
1711
|
+
}),
|
|
1712
|
+
row,
|
|
1713
|
+
(rowMap, cellId, cell) =>
|
|
1714
|
+
ifNotUndefined(
|
|
1715
|
+
getValidatedCell(tableId, rowId, cellId, cell),
|
|
1716
|
+
(validCell) =>
|
|
1717
|
+
setValidCell(
|
|
1718
|
+
tableId,
|
|
1719
|
+
rowId,
|
|
1720
|
+
rowMap,
|
|
1721
|
+
cellId,
|
|
1722
|
+
validCell,
|
|
1723
|
+
skipMiddleware,
|
|
1724
|
+
),
|
|
1725
|
+
),
|
|
1726
|
+
(rowMap, cellId) =>
|
|
1727
|
+
delValidCell(tableId, tableMap, rowId, rowMap, cellId, true),
|
|
1728
|
+
);
|
|
1729
|
+
};
|
|
1656
1730
|
const setValidCell = (tableId, rowId, rowMap, cellId, cell, skipMiddleware) =>
|
|
1657
1731
|
ifTransformed(
|
|
1658
1732
|
cell,
|
|
@@ -1893,13 +1967,21 @@ const createStore = () => {
|
|
|
1893
1967
|
const getCellChange = (tableId, rowId, cellId) =>
|
|
1894
1968
|
ifNotUndefined(
|
|
1895
1969
|
mapGet(mapGet(mapGet(changedCells, tableId), rowId), cellId),
|
|
1896
|
-
([oldCell, newCell]) => [
|
|
1970
|
+
([oldCell, newCell]) => [
|
|
1971
|
+
true,
|
|
1972
|
+
decodeIfJson(oldCell),
|
|
1973
|
+
decodeIfJson(newCell),
|
|
1974
|
+
],
|
|
1897
1975
|
() => [false, ...pairNew(getCell(tableId, rowId, cellId))],
|
|
1898
1976
|
);
|
|
1899
1977
|
const getValueChange = (valueId) =>
|
|
1900
1978
|
ifNotUndefined(
|
|
1901
1979
|
mapGet(changedValues, valueId),
|
|
1902
|
-
([oldValue, newValue]) => [
|
|
1980
|
+
([oldValue, newValue]) => [
|
|
1981
|
+
true,
|
|
1982
|
+
decodeIfJson(oldValue),
|
|
1983
|
+
decodeIfJson(newValue),
|
|
1984
|
+
],
|
|
1903
1985
|
() => [false, ...pairNew(getValue(valueId))],
|
|
1904
1986
|
);
|
|
1905
1987
|
const callInvalidCellListeners = (mutator) =>
|
|
@@ -2075,8 +2157,8 @@ const createStore = () => {
|
|
|
2075
2157
|
callListeners(
|
|
2076
2158
|
cellListeners[mutator],
|
|
2077
2159
|
[tableId, rowId, cellId],
|
|
2078
|
-
newCell,
|
|
2079
|
-
oldCell,
|
|
2160
|
+
decodeIfJson(newCell),
|
|
2161
|
+
decodeIfJson(oldCell),
|
|
2080
2162
|
getCellChange,
|
|
2081
2163
|
);
|
|
2082
2164
|
tablesChanged = tableChanged = rowChanged = 1;
|
|
@@ -2132,8 +2214,8 @@ const createStore = () => {
|
|
|
2132
2214
|
callListeners(
|
|
2133
2215
|
valueListeners[mutator],
|
|
2134
2216
|
[valueId],
|
|
2135
|
-
newValue,
|
|
2136
|
-
oldValue,
|
|
2217
|
+
decodeIfJson(newValue),
|
|
2218
|
+
decodeIfJson(oldValue),
|
|
2137
2219
|
getValueChange,
|
|
2138
2220
|
);
|
|
2139
2221
|
valuesChanged = 1;
|
|
@@ -2170,10 +2252,42 @@ const createStore = () => {
|
|
|
2170
2252
|
[getTableIds],
|
|
2171
2253
|
);
|
|
2172
2254
|
};
|
|
2255
|
+
const getTransactionChangesImpl = (encoded = false) => [
|
|
2256
|
+
mapToObj(
|
|
2257
|
+
changedCells,
|
|
2258
|
+
(table, tableId) =>
|
|
2259
|
+
mapGet(changedTableIds, tableId) === -1
|
|
2260
|
+
? void 0
|
|
2261
|
+
: mapToObj(
|
|
2262
|
+
table,
|
|
2263
|
+
(row, rowId) =>
|
|
2264
|
+
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
2265
|
+
? void 0
|
|
2266
|
+
: mapToObj(
|
|
2267
|
+
row,
|
|
2268
|
+
([, newCell]) =>
|
|
2269
|
+
decodeIfJson(newCell, EMPTY_STRING, encoded),
|
|
2270
|
+
(changedCell) => pairIsEqual(changedCell),
|
|
2271
|
+
),
|
|
2272
|
+
collIsEmpty,
|
|
2273
|
+
objIsEmpty,
|
|
2274
|
+
),
|
|
2275
|
+
collIsEmpty,
|
|
2276
|
+
objIsEmpty,
|
|
2277
|
+
),
|
|
2278
|
+
mapToObj(
|
|
2279
|
+
changedValues,
|
|
2280
|
+
([, newValue]) => decodeIfJson(newValue, EMPTY_STRING, encoded),
|
|
2281
|
+
(changedValue) => pairIsEqual(changedValue),
|
|
2282
|
+
),
|
|
2283
|
+
1,
|
|
2284
|
+
];
|
|
2173
2285
|
const getContent = () => [getTables(), getValues()];
|
|
2174
|
-
const
|
|
2286
|
+
const getEncodedContent = () => [mapToObj3(tablesMap), mapToObj(valuesMap)];
|
|
2287
|
+
const getTables = () => mapToObj3(tablesMap, decodeIfJson);
|
|
2175
2288
|
const getTableIds = () => mapKeys(tablesMap);
|
|
2176
|
-
const getTable = (tableId) =>
|
|
2289
|
+
const getTable = (tableId) =>
|
|
2290
|
+
mapToObj2(mapGet(tablesMap, id(tableId)), decodeIfJson);
|
|
2177
2291
|
const getTableCellIds = (tableId) =>
|
|
2178
2292
|
mapKeys(mapGet(tableCellIds, id(tableId)));
|
|
2179
2293
|
const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));
|
|
@@ -2209,14 +2323,16 @@ const createStore = () => {
|
|
|
2209
2323
|
([, rowId]) => rowId,
|
|
2210
2324
|
);
|
|
2211
2325
|
const getRow = (tableId, rowId) =>
|
|
2212
|
-
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
2326
|
+
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), decodeIfJson);
|
|
2213
2327
|
const getCellIds = (tableId, rowId) =>
|
|
2214
2328
|
mapKeys(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
2215
2329
|
const getCell = (tableId, rowId, cellId) =>
|
|
2216
|
-
|
|
2217
|
-
|
|
2330
|
+
decodeIfJson(
|
|
2331
|
+
mapGet(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId)),
|
|
2332
|
+
);
|
|
2333
|
+
const getValues = () => mapToObj(valuesMap, decodeIfJson);
|
|
2218
2334
|
const getValueIds = () => mapKeys(valuesMap);
|
|
2219
|
-
const getValue = (valueId) => mapGet(valuesMap, id(valueId));
|
|
2335
|
+
const getValue = (valueId) => decodeIfJson(mapGet(valuesMap, id(valueId)));
|
|
2220
2336
|
const hasTables = () => !collIsEmpty(tablesMap);
|
|
2221
2337
|
const hasTable = (tableId) => collHas(tablesMap, id(tableId));
|
|
2222
2338
|
const hasTableCell = (tableId, cellId) =>
|
|
@@ -2287,7 +2403,14 @@ const createStore = () => {
|
|
|
2287
2403
|
tableId,
|
|
2288
2404
|
rowId,
|
|
2289
2405
|
);
|
|
2290
|
-
const setCell = (
|
|
2406
|
+
const setCell = (
|
|
2407
|
+
tableId,
|
|
2408
|
+
rowId,
|
|
2409
|
+
cellId,
|
|
2410
|
+
cell,
|
|
2411
|
+
skipMiddleware,
|
|
2412
|
+
skipRowMiddleware,
|
|
2413
|
+
) =>
|
|
2291
2414
|
fluentTransaction(
|
|
2292
2415
|
(tableId2, rowId2, cellId2) =>
|
|
2293
2416
|
ifNotUndefined(
|
|
@@ -2297,15 +2420,47 @@ const createStore = () => {
|
|
|
2297
2420
|
cellId2,
|
|
2298
2421
|
isFunction(cell) ? cell(getCell(tableId2, rowId2, cellId2)) : cell,
|
|
2299
2422
|
),
|
|
2300
|
-
(validCell) =>
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2423
|
+
(validCell) => {
|
|
2424
|
+
const tableMap = getOrCreateTable(tableId2);
|
|
2425
|
+
ifNotUndefined(
|
|
2426
|
+
skipMiddleware || skipRowMiddleware || !middleware[14]?.()
|
|
2427
|
+
? void 0
|
|
2428
|
+
: middleware[3],
|
|
2429
|
+
(willSetRow) => {
|
|
2430
|
+
const existingRowMap = mapGet(tableMap, rowId2);
|
|
2431
|
+
const prospectiveRow = {
|
|
2432
|
+
...(existingRowMap ? mapToObj(existingRowMap) : {}),
|
|
2433
|
+
[cellId2]: validCell,
|
|
2434
|
+
};
|
|
2435
|
+
ifNotUndefined(
|
|
2436
|
+
whileMutating(() =>
|
|
2437
|
+
willSetRow(
|
|
2438
|
+
tableId2,
|
|
2439
|
+
rowId2,
|
|
2440
|
+
structuredClone(prospectiveRow),
|
|
2441
|
+
),
|
|
2442
|
+
),
|
|
2443
|
+
(row) =>
|
|
2444
|
+
applyRowDirectly(
|
|
2445
|
+
tableId2,
|
|
2446
|
+
tableMap,
|
|
2447
|
+
rowId2,
|
|
2448
|
+
row,
|
|
2449
|
+
skipMiddleware,
|
|
2450
|
+
),
|
|
2451
|
+
);
|
|
2452
|
+
},
|
|
2453
|
+
() =>
|
|
2454
|
+
setCellIntoNewRow(
|
|
2455
|
+
tableId2,
|
|
2456
|
+
tableMap,
|
|
2457
|
+
rowId2,
|
|
2458
|
+
cellId2,
|
|
2459
|
+
validCell,
|
|
2460
|
+
skipMiddleware,
|
|
2461
|
+
),
|
|
2462
|
+
);
|
|
2463
|
+
},
|
|
2309
2464
|
),
|
|
2310
2465
|
tableId,
|
|
2311
2466
|
rowId,
|
|
@@ -2354,7 +2509,14 @@ const createStore = () => {
|
|
|
2354
2509
|
isUndefined(row)
|
|
2355
2510
|
? delRow(tableId, rowId)
|
|
2356
2511
|
: objMap(row, (cell, cellId) =>
|
|
2357
|
-
setOrDelCell(
|
|
2512
|
+
setOrDelCell(
|
|
2513
|
+
tableId,
|
|
2514
|
+
rowId,
|
|
2515
|
+
cellId,
|
|
2516
|
+
cell,
|
|
2517
|
+
void 0,
|
|
2518
|
+
true,
|
|
2519
|
+
),
|
|
2358
2520
|
),
|
|
2359
2521
|
),
|
|
2360
2522
|
);
|
|
@@ -2503,35 +2665,8 @@ const createStore = () => {
|
|
|
2503
2665
|
}
|
|
2504
2666
|
return store;
|
|
2505
2667
|
};
|
|
2506
|
-
const getTransactionChanges = () =>
|
|
2507
|
-
|
|
2508
|
-
changedCells,
|
|
2509
|
-
(table, tableId) =>
|
|
2510
|
-
mapGet(changedTableIds, tableId) === -1
|
|
2511
|
-
? void 0
|
|
2512
|
-
: mapToObj(
|
|
2513
|
-
table,
|
|
2514
|
-
(row, rowId) =>
|
|
2515
|
-
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
2516
|
-
? void 0
|
|
2517
|
-
: mapToObj(
|
|
2518
|
-
row,
|
|
2519
|
-
([, newCell]) => newCell,
|
|
2520
|
-
(changedCell) => pairIsEqual(changedCell),
|
|
2521
|
-
),
|
|
2522
|
-
collIsEmpty,
|
|
2523
|
-
objIsEmpty,
|
|
2524
|
-
),
|
|
2525
|
-
collIsEmpty,
|
|
2526
|
-
objIsEmpty,
|
|
2527
|
-
),
|
|
2528
|
-
mapToObj(
|
|
2529
|
-
changedValues,
|
|
2530
|
-
([, newValue]) => newValue,
|
|
2531
|
-
(changedValue) => pairIsEqual(changedValue),
|
|
2532
|
-
),
|
|
2533
|
-
1,
|
|
2534
|
-
];
|
|
2668
|
+
const getTransactionChanges = () => getTransactionChangesImpl();
|
|
2669
|
+
const getEncodedTransactionChanges = () => getTransactionChangesImpl(true);
|
|
2535
2670
|
const getTransactionLog = () => [
|
|
2536
2671
|
!collIsEmpty(changedCells),
|
|
2537
2672
|
!collIsEmpty(changedValues),
|
|
@@ -2544,37 +2679,6 @@ const createStore = () => {
|
|
|
2544
2679
|
mapToObj3(changedCellIds),
|
|
2545
2680
|
mapToObj(changedValueIds),
|
|
2546
2681
|
];
|
|
2547
|
-
const doDidSetRows = () => {
|
|
2548
|
-
if (middleware[14]) {
|
|
2549
|
-
const changedCells2 = clonedChangedCells(changedCells);
|
|
2550
|
-
collForEach(changedCells2, (rows, tableId) =>
|
|
2551
|
-
collForEach(rows, (cells, rowId) => {
|
|
2552
|
-
if (
|
|
2553
|
-
!arrayEvery(
|
|
2554
|
-
collValues(cells),
|
|
2555
|
-
([oldCell, newCell]) => oldCell === newCell,
|
|
2556
|
-
)
|
|
2557
|
-
) {
|
|
2558
|
-
const newRow = getRow(tableId, rowId);
|
|
2559
|
-
const oldRow = objMerge(newRow);
|
|
2560
|
-
collForEach(cells, ([oldCell], cellId) =>
|
|
2561
|
-
isUndefined(oldCell)
|
|
2562
|
-
? objDel(oldRow, cellId)
|
|
2563
|
-
: (oldRow[cellId] = oldCell),
|
|
2564
|
-
);
|
|
2565
|
-
const didSetRow = middleware[14](tableId, rowId, oldRow, newRow);
|
|
2566
|
-
if (!objIsEqual(didSetRow, newRow)) {
|
|
2567
|
-
const setOrDelRow = objMap(newRow, () => void 0);
|
|
2568
|
-
objMap(didSetRow, (cell, cellId) => (setOrDelRow[cellId] = cell));
|
|
2569
|
-
objMap(setOrDelRow, (cell, cellId) =>
|
|
2570
|
-
setOrDelCell(tableId, rowId, cellId, cell, true),
|
|
2571
|
-
);
|
|
2572
|
-
}
|
|
2573
|
-
}
|
|
2574
|
-
}),
|
|
2575
|
-
);
|
|
2576
|
-
}
|
|
2577
|
-
};
|
|
2578
2682
|
const finishTransaction = (doRollback) => {
|
|
2579
2683
|
if (transactions > 0) {
|
|
2580
2684
|
transactions--;
|
|
@@ -2584,7 +2688,6 @@ const createStore = () => {
|
|
|
2584
2688
|
callInvalidCellListeners(1);
|
|
2585
2689
|
if (!collIsEmpty(changedCells)) {
|
|
2586
2690
|
callTabularListenersForChanges(1);
|
|
2587
|
-
doDidSetRows();
|
|
2588
2691
|
}
|
|
2589
2692
|
callInvalidValueListeners(1);
|
|
2590
2693
|
if (!collIsEmpty(changedValues)) {
|
|
@@ -2645,7 +2748,9 @@ const createStore = () => {
|
|
|
2645
2748
|
tableCallback(tableId, (rowCallback) =>
|
|
2646
2749
|
collForEach(tableMap, (rowMap, rowId) =>
|
|
2647
2750
|
rowCallback(rowId, (cellCallback) =>
|
|
2648
|
-
mapForEach(rowMap,
|
|
2751
|
+
mapForEach(rowMap, (cellId, cell) =>
|
|
2752
|
+
cellCallback(cellId, decodeIfJson(cell)),
|
|
2753
|
+
),
|
|
2649
2754
|
),
|
|
2650
2755
|
),
|
|
2651
2756
|
),
|
|
@@ -2654,11 +2759,21 @@ const createStore = () => {
|
|
|
2654
2759
|
mapForEach(mapGet(tableCellIds, id(tableId)), tableCellCallback);
|
|
2655
2760
|
const forEachRow = (tableId, rowCallback) =>
|
|
2656
2761
|
collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>
|
|
2657
|
-
rowCallback(rowId, (cellCallback) =>
|
|
2762
|
+
rowCallback(rowId, (cellCallback) =>
|
|
2763
|
+
mapForEach(rowMap, (cellId, cell) =>
|
|
2764
|
+
cellCallback(cellId, decodeIfJson(cell)),
|
|
2765
|
+
),
|
|
2766
|
+
),
|
|
2658
2767
|
);
|
|
2659
2768
|
const forEachCell = (tableId, rowId, cellCallback) =>
|
|
2660
|
-
mapForEach(
|
|
2661
|
-
|
|
2769
|
+
mapForEach(
|
|
2770
|
+
mapGet(mapGet(tablesMap, id(tableId)), id(rowId)),
|
|
2771
|
+
(cellId, cell) => cellCallback(cellId, decodeIfJson(cell)),
|
|
2772
|
+
);
|
|
2773
|
+
const forEachValue = (valueCallback) =>
|
|
2774
|
+
mapForEach(valuesMap, (valueId, value) =>
|
|
2775
|
+
valueCallback(valueId, decodeIfJson(value)),
|
|
2776
|
+
);
|
|
2662
2777
|
const addSortedRowIdsListener = (
|
|
2663
2778
|
tableIdOrArgs,
|
|
2664
2779
|
cellIdOrListener,
|
|
@@ -2743,7 +2858,7 @@ const createStore = () => {
|
|
|
2743
2858
|
willDelValues,
|
|
2744
2859
|
willDelValue,
|
|
2745
2860
|
willApplyChanges,
|
|
2746
|
-
|
|
2861
|
+
hasWillSetRowCallbacks,
|
|
2747
2862
|
) =>
|
|
2748
2863
|
(middleware = [
|
|
2749
2864
|
willSetContent,
|
|
@@ -2760,7 +2875,7 @@ const createStore = () => {
|
|
|
2760
2875
|
willDelValues,
|
|
2761
2876
|
willDelValue,
|
|
2762
2877
|
willApplyChanges,
|
|
2763
|
-
|
|
2878
|
+
hasWillSetRowCallbacks,
|
|
2764
2879
|
]);
|
|
2765
2880
|
const setInternalListeners = (
|
|
2766
2881
|
preStartTransaction,
|
|
@@ -2850,14 +2965,17 @@ const createStore = () => {
|
|
|
2850
2965
|
delListener,
|
|
2851
2966
|
getListenerStats,
|
|
2852
2967
|
isMergeable: () => false,
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2968
|
+
_: [
|
|
2969
|
+
createStore,
|
|
2970
|
+
addListener,
|
|
2971
|
+
callListeners,
|
|
2972
|
+
setInternalListeners,
|
|
2973
|
+
setMiddleware,
|
|
2974
|
+
setOrDelCell,
|
|
2975
|
+
setOrDelValue,
|
|
2976
|
+
getEncodedContent,
|
|
2977
|
+
getEncodedTransactionChanges,
|
|
2978
|
+
],
|
|
2861
2979
|
};
|
|
2862
2980
|
objMap(
|
|
2863
2981
|
{
|
|
@@ -3172,14 +3290,78 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3172
3290
|
]);
|
|
3173
3291
|
}
|
|
3174
3292
|
};
|
|
3175
|
-
const
|
|
3293
|
+
const getMergeableContentImpl = (encoded = false) => [
|
|
3176
3294
|
stampMapToObjWithHash(contentStampMap[0], (tableStampMap) =>
|
|
3177
3295
|
stampMapToObjWithHash(tableStampMap, (rowStampMap) =>
|
|
3178
|
-
stampMapToObjWithHash(rowStampMap)
|
|
3296
|
+
stampMapToObjWithHash(rowStampMap, ([cell, hlc, hash]) => [
|
|
3297
|
+
decodeIfJson(cell, EMPTY_STRING, encoded),
|
|
3298
|
+
hlc,
|
|
3299
|
+
hash,
|
|
3300
|
+
]),
|
|
3179
3301
|
),
|
|
3180
3302
|
),
|
|
3181
|
-
stampMapToObjWithHash(contentStampMap[1])
|
|
3303
|
+
stampMapToObjWithHash(contentStampMap[1], ([value, hlc, hash]) => [
|
|
3304
|
+
decodeIfJson(value, EMPTY_STRING, encoded),
|
|
3305
|
+
hlc,
|
|
3306
|
+
hash,
|
|
3307
|
+
]),
|
|
3182
3308
|
];
|
|
3309
|
+
const getTransactionMergeableChangesImpl = (withHashes, encoded = false) => {
|
|
3310
|
+
const [
|
|
3311
|
+
[tableStampMaps, tablesHlc, tablesHash],
|
|
3312
|
+
[valueStampMaps, valuesHlc, valuesHash],
|
|
3313
|
+
] = contentStampMap;
|
|
3314
|
+
const newStamp = withHashes ? stampNewWithHash : stampNew;
|
|
3315
|
+
const tablesObj = {};
|
|
3316
|
+
collForEach(touchedCells, (touchedTable, tableId) =>
|
|
3317
|
+
ifNotUndefined(
|
|
3318
|
+
mapGet(tableStampMaps, tableId),
|
|
3319
|
+
([rowStampMaps, tableHlc, tableHash]) => {
|
|
3320
|
+
const tableObj = {};
|
|
3321
|
+
collForEach(touchedTable, (touchedRow, rowId) =>
|
|
3322
|
+
ifNotUndefined(
|
|
3323
|
+
mapGet(rowStampMaps, rowId),
|
|
3324
|
+
([cellStampMaps, rowHlc, rowHash]) => {
|
|
3325
|
+
const rowObj = {};
|
|
3326
|
+
collForEach(touchedRow, (cellId) => {
|
|
3327
|
+
ifNotUndefined(
|
|
3328
|
+
mapGet(cellStampMaps, cellId),
|
|
3329
|
+
([cell, time, hash]) =>
|
|
3330
|
+
(rowObj[cellId] = newStamp(
|
|
3331
|
+
encoded ? cell : decodeIfJson(cell),
|
|
3332
|
+
time,
|
|
3333
|
+
hash,
|
|
3334
|
+
)),
|
|
3335
|
+
);
|
|
3336
|
+
});
|
|
3337
|
+
tableObj[rowId] = newStamp(rowObj, rowHlc, rowHash);
|
|
3338
|
+
},
|
|
3339
|
+
),
|
|
3340
|
+
);
|
|
3341
|
+
tablesObj[tableId] = newStamp(tableObj, tableHlc, tableHash);
|
|
3342
|
+
},
|
|
3343
|
+
),
|
|
3344
|
+
);
|
|
3345
|
+
const valuesObj = {};
|
|
3346
|
+
collForEach(touchedValues, (valueId) =>
|
|
3347
|
+
ifNotUndefined(
|
|
3348
|
+
mapGet(valueStampMaps, valueId),
|
|
3349
|
+
([value, time, hash]) =>
|
|
3350
|
+
(valuesObj[valueId] = newStamp(
|
|
3351
|
+
encoded ? value : decodeIfJson(value),
|
|
3352
|
+
time,
|
|
3353
|
+
hash,
|
|
3354
|
+
)),
|
|
3355
|
+
),
|
|
3356
|
+
);
|
|
3357
|
+
return [
|
|
3358
|
+
newStamp(tablesObj, tablesHlc, tablesHash),
|
|
3359
|
+
newStamp(valuesObj, valuesHlc, valuesHash),
|
|
3360
|
+
1,
|
|
3361
|
+
];
|
|
3362
|
+
};
|
|
3363
|
+
const getMergeableContent = () => getMergeableContentImpl();
|
|
3364
|
+
const getEncodedMergeableContent = () => getMergeableContentImpl(true);
|
|
3183
3365
|
const getMergeableContentHashes = () => [
|
|
3184
3366
|
contentStampMap[0][2],
|
|
3185
3367
|
contentStampMap[1][2],
|
|
@@ -3319,52 +3501,10 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3319
3501
|
});
|
|
3320
3502
|
return mergeableStore;
|
|
3321
3503
|
};
|
|
3322
|
-
const getTransactionMergeableChanges = (withHashes = false) =>
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
] = contentStampMap;
|
|
3327
|
-
const newStamp = withHashes ? stampNewWithHash : stampNew;
|
|
3328
|
-
const tablesObj = {};
|
|
3329
|
-
collForEach(touchedCells, (touchedTable, tableId) =>
|
|
3330
|
-
ifNotUndefined(
|
|
3331
|
-
mapGet(tableStampMaps, tableId),
|
|
3332
|
-
([rowStampMaps, tableHlc, tableHash]) => {
|
|
3333
|
-
const tableObj = {};
|
|
3334
|
-
collForEach(touchedTable, (touchedRow, rowId) =>
|
|
3335
|
-
ifNotUndefined(
|
|
3336
|
-
mapGet(rowStampMaps, rowId),
|
|
3337
|
-
([cellStampMaps, rowHlc, rowHash]) => {
|
|
3338
|
-
const rowObj = {};
|
|
3339
|
-
collForEach(touchedRow, (cellId) => {
|
|
3340
|
-
ifNotUndefined(
|
|
3341
|
-
mapGet(cellStampMaps, cellId),
|
|
3342
|
-
([cell, time, hash]) =>
|
|
3343
|
-
(rowObj[cellId] = newStamp(cell, time, hash)),
|
|
3344
|
-
);
|
|
3345
|
-
});
|
|
3346
|
-
tableObj[rowId] = newStamp(rowObj, rowHlc, rowHash);
|
|
3347
|
-
},
|
|
3348
|
-
),
|
|
3349
|
-
);
|
|
3350
|
-
tablesObj[tableId] = newStamp(tableObj, tableHlc, tableHash);
|
|
3351
|
-
},
|
|
3352
|
-
),
|
|
3353
|
-
);
|
|
3354
|
-
const valuesObj = {};
|
|
3355
|
-
collForEach(touchedValues, (valueId) =>
|
|
3356
|
-
ifNotUndefined(
|
|
3357
|
-
mapGet(valueStampMaps, valueId),
|
|
3358
|
-
([value, time, hash]) =>
|
|
3359
|
-
(valuesObj[valueId] = newStamp(value, time, hash)),
|
|
3360
|
-
),
|
|
3361
|
-
);
|
|
3362
|
-
return [
|
|
3363
|
-
newStamp(tablesObj, tablesHlc, tablesHash),
|
|
3364
|
-
newStamp(valuesObj, valuesHlc, valuesHash),
|
|
3365
|
-
1,
|
|
3366
|
-
];
|
|
3367
|
-
};
|
|
3504
|
+
const getTransactionMergeableChanges = (withHashes = false) =>
|
|
3505
|
+
getTransactionMergeableChangesImpl(withHashes);
|
|
3506
|
+
const getEncodedTransactionMergeableChanges = (withHashes) =>
|
|
3507
|
+
getTransactionMergeableChangesImpl(withHashes, true);
|
|
3368
3508
|
const applyMergeableChanges = (mergeableChanges) =>
|
|
3369
3509
|
disableListeningToRawStoreChanges(() =>
|
|
3370
3510
|
store.applyChanges(mergeContentOrChanges(mergeableChanges)),
|
|
@@ -3396,10 +3536,13 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3396
3536
|
getTransactionMergeableChanges,
|
|
3397
3537
|
applyMergeableChanges,
|
|
3398
3538
|
merge,
|
|
3399
|
-
|
|
3400
|
-
|
|
3539
|
+
__: [
|
|
3540
|
+
hadMutated,
|
|
3541
|
+
getEncodedMergeableContent,
|
|
3542
|
+
getEncodedTransactionMergeableChanges,
|
|
3543
|
+
],
|
|
3401
3544
|
};
|
|
3402
|
-
store.
|
|
3545
|
+
store._[3](
|
|
3403
3546
|
preStartTransaction,
|
|
3404
3547
|
preFinishTransaction,
|
|
3405
3548
|
postFinishTransaction,
|
|
@@ -3638,7 +3781,6 @@ const createMiddleware = getCreateFunction((store) => {
|
|
|
3638
3781
|
const willDelValuesCallbacks = [];
|
|
3639
3782
|
const willDelValueCallbacks = [];
|
|
3640
3783
|
const willApplyChangesCallbacks = [];
|
|
3641
|
-
const didSetRowCallbacksMap = mapNew();
|
|
3642
3784
|
const willSetContent = (content) =>
|
|
3643
3785
|
reduceCallbacks(willSetContentCallbacks, content);
|
|
3644
3786
|
const willSetTables = (tables) =>
|
|
@@ -3665,17 +3807,6 @@ const createMiddleware = getCreateFunction((store) => {
|
|
|
3665
3807
|
everyCallback(willDelValueCallbacks, valueId);
|
|
3666
3808
|
const willApplyChanges = (changes) =>
|
|
3667
3809
|
reduceCallbacks(willApplyChangesCallbacks, changes);
|
|
3668
|
-
const didSetRow = (tableId, rowId, oldRow, newRow) =>
|
|
3669
|
-
ifNotUndefined(
|
|
3670
|
-
mapGet(didSetRowCallbacksMap, tableId),
|
|
3671
|
-
(callbacks) =>
|
|
3672
|
-
arrayReduce(
|
|
3673
|
-
callbacks,
|
|
3674
|
-
(current, callback) => callback(tableId, rowId, oldRow, current),
|
|
3675
|
-
newRow,
|
|
3676
|
-
),
|
|
3677
|
-
() => newRow,
|
|
3678
|
-
);
|
|
3679
3810
|
const getStore = () => store;
|
|
3680
3811
|
const addWillSetContentCallback = addCallback(willSetContentCallbacks);
|
|
3681
3812
|
const addWillSetTablesCallback = addCallback(willSetTablesCallbacks);
|
|
@@ -3691,13 +3822,6 @@ const createMiddleware = getCreateFunction((store) => {
|
|
|
3691
3822
|
const addWillDelValuesCallback = addCallback(willDelValuesCallbacks);
|
|
3692
3823
|
const addWillDelValueCallback = addCallback(willDelValueCallbacks);
|
|
3693
3824
|
const addWillApplyChangesCallback = addCallback(willApplyChangesCallbacks);
|
|
3694
|
-
const addDidSetRowCallback = (tableId, callback) =>
|
|
3695
|
-
fluent(() =>
|
|
3696
|
-
arrayPush(
|
|
3697
|
-
mapEnsure(didSetRowCallbacksMap, tableId, () => []),
|
|
3698
|
-
callback,
|
|
3699
|
-
),
|
|
3700
|
-
);
|
|
3701
3825
|
const destroy = () => {};
|
|
3702
3826
|
const middleware = objFreeze({
|
|
3703
3827
|
getStore,
|
|
@@ -3715,10 +3839,9 @@ const createMiddleware = getCreateFunction((store) => {
|
|
|
3715
3839
|
addWillDelValuesCallback,
|
|
3716
3840
|
addWillDelValueCallback,
|
|
3717
3841
|
addWillApplyChangesCallback,
|
|
3718
|
-
addDidSetRowCallback,
|
|
3719
3842
|
destroy,
|
|
3720
3843
|
});
|
|
3721
|
-
store.
|
|
3844
|
+
store._[4](
|
|
3722
3845
|
willSetContent,
|
|
3723
3846
|
willSetTables,
|
|
3724
3847
|
willSetTable,
|
|
@@ -3733,7 +3856,7 @@ const createMiddleware = getCreateFunction((store) => {
|
|
|
3733
3856
|
willDelValues,
|
|
3734
3857
|
willDelValue,
|
|
3735
3858
|
willApplyChanges,
|
|
3736
|
-
|
|
3859
|
+
() => willSetRowCallbacks.length > 0,
|
|
3737
3860
|
);
|
|
3738
3861
|
return middleware;
|
|
3739
3862
|
});
|
|
@@ -3758,8 +3881,8 @@ const getStoreFunctions = (
|
|
|
3758
3881
|
persist != 1 /* StoreOnly */ && store.isMergeable()
|
|
3759
3882
|
? [
|
|
3760
3883
|
1,
|
|
3761
|
-
store.
|
|
3762
|
-
() => store.
|
|
3884
|
+
store.__[1],
|
|
3885
|
+
() => store.__[2](!isSynchronizer),
|
|
3763
3886
|
([[changedTables], [changedValues]]) =>
|
|
3764
3887
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
3765
3888
|
store.setDefaultContent,
|
|
@@ -3767,8 +3890,8 @@ const getStoreFunctions = (
|
|
|
3767
3890
|
: persist != 2 /* MergeableStoreOnly */
|
|
3768
3891
|
? [
|
|
3769
3892
|
0,
|
|
3770
|
-
store.
|
|
3771
|
-
store.
|
|
3893
|
+
store._[7],
|
|
3894
|
+
store._[8],
|
|
3772
3895
|
([changedTables, changedValues]) =>
|
|
3773
3896
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
3774
3897
|
store.setContent,
|
|
@@ -3833,7 +3956,7 @@ const createCustomPersister = (
|
|
|
3833
3956
|
: store.setContent)(contentOrChanges);
|
|
3834
3957
|
};
|
|
3835
3958
|
const saveAfterMutated = async () => {
|
|
3836
|
-
if (isAutoSaving() && store.
|
|
3959
|
+
if (isAutoSaving() && store.__?.[0]?.()) {
|
|
3837
3960
|
await save();
|
|
3838
3961
|
}
|
|
3839
3962
|
};
|
|
@@ -6246,15 +6369,14 @@ const createYjsPersister = (
|
|
|
6246
6369
|
};
|
|
6247
6370
|
|
|
6248
6371
|
const createQueries = getCreateFunction((store) => {
|
|
6249
|
-
const createStore = store.
|
|
6372
|
+
const createStore = store._[0];
|
|
6250
6373
|
const preStore = createStore();
|
|
6251
6374
|
const resultStore = createStore();
|
|
6252
6375
|
const preStoreListenerIds = mapNew();
|
|
6253
6376
|
const paramValuesListeners = mapNew();
|
|
6254
6377
|
const paramValueListeners = mapNew();
|
|
6255
6378
|
const {
|
|
6256
|
-
addListener,
|
|
6257
|
-
callListeners,
|
|
6379
|
+
_: [, addListener, callListeners],
|
|
6258
6380
|
delListener: delListenerImpl,
|
|
6259
6381
|
} = resultStore;
|
|
6260
6382
|
const [
|
|
@@ -6573,7 +6695,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
6573
6695
|
selectJoinWhereStore.transaction(() =>
|
|
6574
6696
|
arrayEvery(wheres, (where2) => where2(getTableCell))
|
|
6575
6697
|
? mapForEach(selects, (asCellId, tableCellGetter) =>
|
|
6576
|
-
selectJoinWhereStore.
|
|
6698
|
+
selectJoinWhereStore._[5](
|
|
6577
6699
|
queryId,
|
|
6578
6700
|
rootRowId,
|
|
6579
6701
|
asCellId,
|
|
@@ -7894,6 +8016,10 @@ const IS_EQUALS = [
|
|
|
7894
8016
|
(paramValues1, paramValues2) =>
|
|
7895
8017
|
objIsEqual(paramValues1, paramValues2, arrayOrValueEqual),
|
|
7896
8018
|
arrayOrValueEqual,
|
|
8019
|
+
(thing1, thing2) =>
|
|
8020
|
+
thing1 === thing2 ||
|
|
8021
|
+
((isObject(thing1) || isArray(thing1)) &&
|
|
8022
|
+
jsonString(thing1) === jsonString(thing2)),
|
|
7897
8023
|
];
|
|
7898
8024
|
const isEqual = (thing1, thing2) => thing1 === thing2;
|
|
7899
8025
|
const useCreate = (store, create, createDeps = EMPTY_ARRAY) => {
|
|
@@ -9635,12 +9761,22 @@ const EditableThing = ({
|
|
|
9635
9761
|
const [stringThing, setStringThing] = useState();
|
|
9636
9762
|
const [numberThing, setNumberThing] = useState();
|
|
9637
9763
|
const [booleanThing, setBooleanThing] = useState();
|
|
9764
|
+
const [objectThing, setObjectThing] = useState('{}');
|
|
9765
|
+
const [arrayThing, setArrayThing] = useState('[]');
|
|
9766
|
+
const [objectClassName, setObjectClassName] = useState('');
|
|
9767
|
+
const [arrayClassName, setArrayClassName] = useState('');
|
|
9638
9768
|
if (currentThing !== thing) {
|
|
9639
9769
|
setThingType(getCellOrValueType(thing));
|
|
9640
9770
|
setCurrentThing(thing);
|
|
9641
|
-
|
|
9642
|
-
|
|
9643
|
-
|
|
9771
|
+
if (isObject(thing)) {
|
|
9772
|
+
setObjectThing(jsonString(thing));
|
|
9773
|
+
} else if (isArray(thing)) {
|
|
9774
|
+
setArrayThing(jsonString(thing));
|
|
9775
|
+
} else {
|
|
9776
|
+
setStringThing(String(thing));
|
|
9777
|
+
setNumberThing(Number(thing) || 0);
|
|
9778
|
+
setBooleanThing(Boolean(thing));
|
|
9779
|
+
}
|
|
9644
9780
|
}
|
|
9645
9781
|
const handleThingChange = useCallback(
|
|
9646
9782
|
(thing2, setTypedThing) => {
|
|
@@ -9650,14 +9786,39 @@ const EditableThing = ({
|
|
|
9650
9786
|
},
|
|
9651
9787
|
[onThingChange],
|
|
9652
9788
|
);
|
|
9789
|
+
const handleJsonThingChange = useCallback(
|
|
9790
|
+
(value, setTypedThing, isThing, setTypedClassName) => {
|
|
9791
|
+
setTypedThing(value);
|
|
9792
|
+
try {
|
|
9793
|
+
const object = jsonParse(value);
|
|
9794
|
+
if (isThing(object)) {
|
|
9795
|
+
setCurrentThing(object);
|
|
9796
|
+
onThingChange(object);
|
|
9797
|
+
setTypedClassName('');
|
|
9798
|
+
}
|
|
9799
|
+
} catch {
|
|
9800
|
+
setTypedClassName('invalid');
|
|
9801
|
+
}
|
|
9802
|
+
},
|
|
9803
|
+
[onThingChange],
|
|
9804
|
+
);
|
|
9653
9805
|
const handleTypeChange = useCallback(() => {
|
|
9654
9806
|
if (!hasSchema?.()) {
|
|
9655
|
-
const nextType = getTypeCase(
|
|
9807
|
+
const nextType = getTypeCase(
|
|
9808
|
+
thingType,
|
|
9809
|
+
NUMBER,
|
|
9810
|
+
BOOLEAN,
|
|
9811
|
+
OBJECT,
|
|
9812
|
+
ARRAY,
|
|
9813
|
+
STRING,
|
|
9814
|
+
);
|
|
9656
9815
|
const thing2 = getTypeCase(
|
|
9657
9816
|
nextType,
|
|
9658
9817
|
stringThing,
|
|
9659
9818
|
numberThing,
|
|
9660
9819
|
booleanThing,
|
|
9820
|
+
tryReturn(() => jsonParse(objectThing), {}),
|
|
9821
|
+
tryReturn(() => jsonParse(arrayThing), []),
|
|
9661
9822
|
);
|
|
9662
9823
|
setThingType(nextType);
|
|
9663
9824
|
setCurrentThing(thing2);
|
|
@@ -9669,6 +9830,8 @@ const EditableThing = ({
|
|
|
9669
9830
|
stringThing,
|
|
9670
9831
|
numberThing,
|
|
9671
9832
|
booleanThing,
|
|
9833
|
+
objectThing,
|
|
9834
|
+
arrayThing,
|
|
9672
9835
|
thingType,
|
|
9673
9836
|
]);
|
|
9674
9837
|
const widget = getTypeCase(
|
|
@@ -9720,6 +9883,42 @@ const EditableThing = ({
|
|
|
9720
9883
|
},
|
|
9721
9884
|
thingType,
|
|
9722
9885
|
),
|
|
9886
|
+
/* @__PURE__ */ jsx(
|
|
9887
|
+
'input',
|
|
9888
|
+
{
|
|
9889
|
+
value: objectThing,
|
|
9890
|
+
className: objectClassName,
|
|
9891
|
+
onChange: useCallback(
|
|
9892
|
+
(event) =>
|
|
9893
|
+
handleJsonThingChange(
|
|
9894
|
+
event[CURRENT_TARGET][_VALUE],
|
|
9895
|
+
setObjectThing,
|
|
9896
|
+
isObject,
|
|
9897
|
+
setObjectClassName,
|
|
9898
|
+
),
|
|
9899
|
+
[handleJsonThingChange],
|
|
9900
|
+
),
|
|
9901
|
+
},
|
|
9902
|
+
thingType,
|
|
9903
|
+
),
|
|
9904
|
+
/* @__PURE__ */ jsx(
|
|
9905
|
+
'input',
|
|
9906
|
+
{
|
|
9907
|
+
value: arrayThing,
|
|
9908
|
+
className: arrayClassName,
|
|
9909
|
+
onChange: useCallback(
|
|
9910
|
+
(event) =>
|
|
9911
|
+
handleJsonThingChange(
|
|
9912
|
+
event[CURRENT_TARGET][_VALUE],
|
|
9913
|
+
setArrayThing,
|
|
9914
|
+
isArray,
|
|
9915
|
+
setArrayClassName,
|
|
9916
|
+
),
|
|
9917
|
+
[handleJsonThingChange],
|
|
9918
|
+
),
|
|
9919
|
+
},
|
|
9920
|
+
thingType,
|
|
9921
|
+
),
|
|
9723
9922
|
);
|
|
9724
9923
|
return /* @__PURE__ */ jsxs('div', {
|
|
9725
9924
|
className,
|