tinybase 7.0.0-beta.2 → 7.0.0
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/common/index.d.ts +1 -1
- package/@types/mergeable-store/index.d.ts +1 -1
- package/@types/mergeable-store/with-schemas/index.d.ts +1 -1
- package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +4 -0
- package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +4 -0
- package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-electric-sql/index.d.ts +4 -0
- package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-expo-sqlite/index.d.ts +4 -0
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-libsql/index.d.ts +4 -0
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-pglite/index.d.ts +5 -1
- package/@types/persisters/persister-pglite/with-schemas/index.d.ts +5 -1
- package/@types/persisters/persister-postgres/index.d.ts +4 -0
- package/@types/persisters/persister-postgres/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-powersync/index.d.ts +4 -0
- package/@types/persisters/persister-powersync/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-react-native-sqlite/index.d.ts +4 -0
- package/@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-bun/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-wasm/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite3/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +4 -0
- package/@types/queries/index.d.ts +1 -1
- package/@types/store/index.d.ts +21 -19
- package/@types/store/with-schemas/index.d.ts +15 -13
- package/agents.md +62 -0
- package/checkpoints/index.js +8 -6
- package/checkpoints/with-schemas/index.js +8 -6
- package/common/index.js +4 -3
- package/common/with-schemas/index.js +4 -3
- package/index.js +60 -30
- package/indexes/index.js +7 -5
- package/indexes/with-schemas/index.js +7 -5
- package/mergeable-store/index.js +51 -21
- package/mergeable-store/with-schemas/index.js +51 -21
- package/metrics/index.js +7 -5
- package/metrics/with-schemas/index.js +7 -5
- 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/common/index.js +1 -1
- package/min/common/index.js.gz +0 -0
- package/min/common/with-schemas/index.js +1 -1
- package/min/common/with-schemas/index.js.gz +0 -0
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/indexes/index.js +1 -1
- package/min/indexes/index.js.gz +0 -0
- package/min/indexes/with-schemas/index.js +1 -1
- package/min/indexes/with-schemas/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/metrics/index.js +1 -1
- package/min/metrics/index.js.gz +0 -0
- package/min/metrics/with-schemas/index.js +1 -1
- package/min/metrics/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-partykit-server/index.js +1 -1
- package/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-server/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/relationships/index.js +1 -1
- package/min/relationships/index.js.gz +0 -0
- package/min/relationships/with-schemas/index.js +1 -1
- package/min/relationships/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/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/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 +78 -46
- package/omni/with-schemas/index.js +78 -46
- package/package.json +3 -3
- package/persisters/index.js +14 -10
- package/persisters/persister-automerge/index.js +12 -8
- package/persisters/persister-automerge/with-schemas/index.js +12 -8
- package/persisters/persister-browser/index.js +12 -8
- package/persisters/persister-browser/with-schemas/index.js +12 -8
- package/persisters/persister-cr-sqlite-wasm/index.js +14 -10
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +14 -10
- package/persisters/persister-durable-object-sql-storage/index.js +14 -10
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +14 -10
- package/persisters/persister-durable-object-storage/index.js +12 -8
- package/persisters/persister-durable-object-storage/with-schemas/index.js +12 -8
- package/persisters/persister-electric-sql/index.js +14 -10
- package/persisters/persister-electric-sql/with-schemas/index.js +14 -10
- package/persisters/persister-expo-sqlite/index.js +14 -10
- package/persisters/persister-expo-sqlite/with-schemas/index.js +14 -10
- package/persisters/persister-file/index.js +12 -8
- package/persisters/persister-file/with-schemas/index.js +12 -8
- package/persisters/persister-indexed-db/index.js +12 -8
- package/persisters/persister-indexed-db/with-schemas/index.js +12 -8
- package/persisters/persister-libsql/index.js +14 -10
- package/persisters/persister-libsql/with-schemas/index.js +14 -10
- package/persisters/persister-partykit-client/index.js +12 -8
- package/persisters/persister-partykit-client/with-schemas/index.js +12 -8
- package/persisters/persister-partykit-server/index.js +4 -3
- package/persisters/persister-partykit-server/with-schemas/index.js +4 -3
- package/persisters/persister-pglite/index.js +13 -9
- package/persisters/persister-pglite/with-schemas/index.js +13 -9
- package/persisters/persister-postgres/index.js +13 -9
- package/persisters/persister-postgres/with-schemas/index.js +13 -9
- package/persisters/persister-powersync/index.js +14 -10
- package/persisters/persister-powersync/with-schemas/index.js +14 -10
- package/persisters/persister-react-native-mmkv/index.js +12 -8
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +12 -8
- package/persisters/persister-react-native-sqlite/index.js +14 -10
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +14 -10
- package/persisters/persister-remote/index.js +14 -10
- package/persisters/persister-remote/with-schemas/index.js +14 -10
- package/persisters/persister-sqlite-bun/index.js +14 -10
- package/persisters/persister-sqlite-bun/with-schemas/index.js +14 -10
- package/persisters/persister-sqlite-wasm/index.js +14 -10
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +14 -10
- package/persisters/persister-sqlite3/index.js +14 -10
- package/persisters/persister-sqlite3/with-schemas/index.js +14 -10
- package/persisters/persister-yjs/index.js +18 -12
- package/persisters/persister-yjs/with-schemas/index.js +18 -12
- package/persisters/with-schemas/index.js +14 -10
- package/queries/index.js +17 -12
- package/queries/with-schemas/index.js +17 -12
- package/readme.md +2 -2
- package/relationships/index.js +7 -5
- package/relationships/with-schemas/index.js +7 -5
- package/releases.md +100 -12
- package/store/index.js +48 -18
- package/store/with-schemas/index.js +48 -18
- package/synchronizers/index.js +13 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +14 -10
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +14 -10
- package/synchronizers/synchronizer-local/index.js +14 -10
- package/synchronizers/synchronizer-local/with-schemas/index.js +14 -10
- package/synchronizers/synchronizer-ws-client/index.js +13 -9
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +13 -9
- package/synchronizers/synchronizer-ws-server/index.js +13 -9
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +13 -9
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +13 -9
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +13 -9
- package/synchronizers/synchronizer-ws-server-simple/index.js +5 -4
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +5 -4
- package/synchronizers/with-schemas/index.js +13 -9
- package/ui-react/index.js +9 -6
- package/ui-react/with-schemas/index.js +9 -6
- package/ui-react-dom/index.js +14 -7
- package/ui-react-dom/with-schemas/index.js +14 -7
- package/ui-react-inspector/index.js +53 -23
- package/ui-react-inspector/with-schemas/index.js +53 -23
- package/with-schemas/index.js +60 -30
|
@@ -4,15 +4,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
|
4
4
|
str.split(separator, limit);
|
|
5
5
|
|
|
6
6
|
const promise = Promise;
|
|
7
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
8
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
7
9
|
const GLOBAL = globalThis;
|
|
8
10
|
const THOUSAND = 1e3;
|
|
9
11
|
const startTimeout = (callback, sec = 0) =>
|
|
10
12
|
setTimeout(callback, sec * THOUSAND);
|
|
11
13
|
const math = Math;
|
|
12
14
|
const mathFloor = math.floor;
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
15
|
+
const isNullish = (thing) => thing == null;
|
|
16
|
+
const isUndefined = (thing) => thing === void 0;
|
|
17
|
+
const isNull = (thing) => thing === null;
|
|
18
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
19
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
16
20
|
const isArray = (thing) => Array.isArray(thing);
|
|
17
21
|
const size = (arrayOrString) => arrayOrString.length;
|
|
18
22
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -46,12 +50,12 @@ const object = Object;
|
|
|
46
50
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
47
51
|
const objEntries = object.entries;
|
|
48
52
|
const isObject = (obj) =>
|
|
49
|
-
!
|
|
50
|
-
|
|
53
|
+
!isNullish(obj) &&
|
|
54
|
+
ifNotNullish(
|
|
51
55
|
getPrototypeOf(obj),
|
|
52
56
|
(objPrototype) =>
|
|
53
57
|
objPrototype == object.prototype ||
|
|
54
|
-
|
|
58
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
55
59
|
|
|
56
60
|
/* istanbul ignore next */
|
|
57
61
|
() => true,
|
|
@@ -74,7 +78,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
74
78
|
const mapNew = (entries) => new Map(entries);
|
|
75
79
|
const mapGet = (map, key) => map?.get(key);
|
|
76
80
|
const mapSet = (map, key, value) =>
|
|
77
|
-
|
|
81
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
78
82
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
79
83
|
if (!collHas(map, key)) {
|
|
80
84
|
mapSet(map, key, getDefaultValue());
|
|
@@ -207,7 +211,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
207
211
|
const index = size(ids);
|
|
208
212
|
if (index == size(path)) {
|
|
209
213
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
210
|
-
} else if (
|
|
214
|
+
} else if (isNull(path[index])) {
|
|
211
215
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
212
216
|
callWithIds(...ids, id2),
|
|
213
217
|
);
|
|
@@ -644,7 +648,7 @@ const createCustomSynchronizer = (
|
|
|
644
648
|
ifNotUndefined(
|
|
645
649
|
mapGet(pendingRequests, transactionOrRequestId),
|
|
646
650
|
([toClientId, handleResponse]) =>
|
|
647
|
-
|
|
651
|
+
isNull(toClientId) || toClientId == fromClientId
|
|
648
652
|
? handleResponse(body, fromClientId)
|
|
649
653
|
: /* istanbul ignore next */
|
|
650
654
|
0,
|
package/ui-react/index.js
CHANGED
|
@@ -41,10 +41,13 @@ const LINKED = 'Linked';
|
|
|
41
41
|
const QUERY = 'Query';
|
|
42
42
|
const CHECKPOINT = 'Checkpoint';
|
|
43
43
|
|
|
44
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
45
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
44
46
|
const GLOBAL = globalThis;
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
47
|
+
const isNullish = (thing) => thing == null;
|
|
48
|
+
const isUndefined = (thing) => thing === void 0;
|
|
49
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
50
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
48
51
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
49
52
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
50
53
|
const isArray = (thing) => Array.isArray(thing);
|
|
@@ -66,12 +69,12 @@ const object = Object;
|
|
|
66
69
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
67
70
|
const objEntries = object.entries;
|
|
68
71
|
const isObject = (obj) =>
|
|
69
|
-
!
|
|
70
|
-
|
|
72
|
+
!isNullish(obj) &&
|
|
73
|
+
ifNotNullish(
|
|
71
74
|
getPrototypeOf(obj),
|
|
72
75
|
(objPrototype) =>
|
|
73
76
|
objPrototype == object.prototype ||
|
|
74
|
-
|
|
77
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
75
78
|
|
|
76
79
|
/* istanbul ignore next */
|
|
77
80
|
() => true,
|
|
@@ -41,10 +41,13 @@ const LINKED = 'Linked';
|
|
|
41
41
|
const QUERY = 'Query';
|
|
42
42
|
const CHECKPOINT = 'Checkpoint';
|
|
43
43
|
|
|
44
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
45
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
44
46
|
const GLOBAL = globalThis;
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
47
|
+
const isNullish = (thing) => thing == null;
|
|
48
|
+
const isUndefined = (thing) => thing === void 0;
|
|
49
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
50
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
48
51
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
49
52
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
50
53
|
const isArray = (thing) => Array.isArray(thing);
|
|
@@ -66,12 +69,12 @@ const object = Object;
|
|
|
66
69
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
67
70
|
const objEntries = object.entries;
|
|
68
71
|
const isObject = (obj) =>
|
|
69
|
-
!
|
|
70
|
-
|
|
72
|
+
!isNullish(obj) &&
|
|
73
|
+
ifNotNullish(
|
|
71
74
|
getPrototypeOf(obj),
|
|
72
75
|
(objPrototype) =>
|
|
73
76
|
objPrototype == object.prototype ||
|
|
74
|
-
|
|
77
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
75
78
|
|
|
76
79
|
/* istanbul ignore next */
|
|
77
80
|
() => true,
|
package/ui-react-dom/index.js
CHANGED
|
@@ -35,13 +35,17 @@ const EXTRA = 'extra';
|
|
|
35
35
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
36
36
|
str.split(separator, limit);
|
|
37
37
|
|
|
38
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
39
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
38
40
|
const GLOBAL = globalThis;
|
|
39
41
|
const math = Math;
|
|
40
42
|
const mathMin = math.min;
|
|
41
43
|
const isFiniteNumber = isFinite;
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
44
|
+
const isNullish = (thing) => thing == null;
|
|
45
|
+
const isUndefined = (thing) => thing === void 0;
|
|
46
|
+
const isNull = (thing) => thing === null;
|
|
47
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
48
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
45
49
|
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
46
50
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
47
51
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
@@ -60,12 +64,12 @@ const object = Object;
|
|
|
60
64
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
61
65
|
const objEntries = object.entries;
|
|
62
66
|
const isObject = (obj) =>
|
|
63
|
-
!
|
|
64
|
-
|
|
67
|
+
!isNullish(obj) &&
|
|
68
|
+
ifNotNullish(
|
|
65
69
|
getPrototypeOf(obj),
|
|
66
70
|
(objPrototype) =>
|
|
67
71
|
objPrototype == object.prototype ||
|
|
68
|
-
|
|
72
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
69
73
|
|
|
70
74
|
/* istanbul ignore next */
|
|
71
75
|
() => true,
|
|
@@ -395,6 +399,9 @@ const useResultSortedRowIds = (
|
|
|
395
399
|
);
|
|
396
400
|
|
|
397
401
|
const getCellOrValueType = (cellOrValue) => {
|
|
402
|
+
if (isNull(cellOrValue)) {
|
|
403
|
+
return 'null';
|
|
404
|
+
}
|
|
398
405
|
const type = getTypeOf(cellOrValue);
|
|
399
406
|
return isTypeStringOrBoolean(type) ||
|
|
400
407
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
@@ -766,7 +773,7 @@ const RelationshipInHtmlRow = ({
|
|
|
766
773
|
? localRowId
|
|
767
774
|
: tableId === remoteTableId
|
|
768
775
|
? remoteRowId
|
|
769
|
-
:
|
|
776
|
+
: void 0;
|
|
770
777
|
return isUndefined(rowId)
|
|
771
778
|
? null
|
|
772
779
|
: /* @__PURE__ */ jsx(
|
|
@@ -35,13 +35,17 @@ const EXTRA = 'extra';
|
|
|
35
35
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
36
36
|
str.split(separator, limit);
|
|
37
37
|
|
|
38
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
39
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
38
40
|
const GLOBAL = globalThis;
|
|
39
41
|
const math = Math;
|
|
40
42
|
const mathMin = math.min;
|
|
41
43
|
const isFiniteNumber = isFinite;
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
44
|
+
const isNullish = (thing) => thing == null;
|
|
45
|
+
const isUndefined = (thing) => thing === void 0;
|
|
46
|
+
const isNull = (thing) => thing === null;
|
|
47
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
48
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
45
49
|
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
46
50
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
47
51
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
@@ -60,12 +64,12 @@ const object = Object;
|
|
|
60
64
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
61
65
|
const objEntries = object.entries;
|
|
62
66
|
const isObject = (obj) =>
|
|
63
|
-
!
|
|
64
|
-
|
|
67
|
+
!isNullish(obj) &&
|
|
68
|
+
ifNotNullish(
|
|
65
69
|
getPrototypeOf(obj),
|
|
66
70
|
(objPrototype) =>
|
|
67
71
|
objPrototype == object.prototype ||
|
|
68
|
-
|
|
72
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
69
73
|
|
|
70
74
|
/* istanbul ignore next */
|
|
71
75
|
() => true,
|
|
@@ -395,6 +399,9 @@ const useResultSortedRowIds = (
|
|
|
395
399
|
);
|
|
396
400
|
|
|
397
401
|
const getCellOrValueType = (cellOrValue) => {
|
|
402
|
+
if (isNull(cellOrValue)) {
|
|
403
|
+
return 'null';
|
|
404
|
+
}
|
|
398
405
|
const type = getTypeOf(cellOrValue);
|
|
399
406
|
return isTypeStringOrBoolean(type) ||
|
|
400
407
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
@@ -766,7 +773,7 @@ const RelationshipInHtmlRow = ({
|
|
|
766
773
|
? localRowId
|
|
767
774
|
: tableId === remoteTableId
|
|
768
775
|
? remoteRowId
|
|
769
|
-
:
|
|
776
|
+
: void 0;
|
|
770
777
|
return isUndefined(rowId)
|
|
771
778
|
? null
|
|
772
779
|
: /* @__PURE__ */ jsx(
|
|
@@ -43,6 +43,7 @@ const NUMBER = getTypeOf(0);
|
|
|
43
43
|
const FUNCTION = getTypeOf(getTypeOf);
|
|
44
44
|
const TYPE = 'type';
|
|
45
45
|
const DEFAULT = 'default';
|
|
46
|
+
const ALLOW_NULL = 'allowNull';
|
|
46
47
|
const LISTENER = 'Listener';
|
|
47
48
|
const RESULT = 'Result';
|
|
48
49
|
const GET = 'get';
|
|
@@ -74,6 +75,8 @@ const id = (key) => EMPTY_STRING + key;
|
|
|
74
75
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
75
76
|
str.split(separator, limit);
|
|
76
77
|
|
|
78
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
79
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
77
80
|
const GLOBAL = globalThis;
|
|
78
81
|
const WINDOW = GLOBAL.window;
|
|
79
82
|
const math = Math;
|
|
@@ -81,9 +84,11 @@ const mathMin = math.min;
|
|
|
81
84
|
const mathFloor = math.floor;
|
|
82
85
|
const isFiniteNumber = isFinite;
|
|
83
86
|
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
84
|
-
const
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
+
const isNullish = (thing) => thing == null;
|
|
88
|
+
const isUndefined = (thing) => thing === void 0;
|
|
89
|
+
const isNull = (thing) => thing === null;
|
|
90
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
91
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
87
92
|
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
88
93
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
89
94
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
@@ -125,12 +130,12 @@ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
|
125
130
|
const objFrozen = object.isFrozen;
|
|
126
131
|
const objEntries = object.entries;
|
|
127
132
|
const isObject = (obj) =>
|
|
128
|
-
!
|
|
129
|
-
|
|
133
|
+
!isNullish(obj) &&
|
|
134
|
+
ifNotNullish(
|
|
130
135
|
getPrototypeOf(obj),
|
|
131
136
|
(objPrototype) =>
|
|
132
137
|
objPrototype == object.prototype ||
|
|
133
|
-
|
|
138
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
134
139
|
|
|
135
140
|
/* istanbul ignore next */
|
|
136
141
|
() => true,
|
|
@@ -167,7 +172,7 @@ const objIsEqual = (obj1, obj2) => {
|
|
|
167
172
|
};
|
|
168
173
|
const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
|
|
169
174
|
if (
|
|
170
|
-
|
|
175
|
+
isNullish(obj) ||
|
|
171
176
|
!isObject(obj) ||
|
|
172
177
|
(!emptyIsValid && objIsEmpty(obj)) ||
|
|
173
178
|
objFrozen(obj)
|
|
@@ -215,7 +220,7 @@ const mapForEach = (map, cb) =>
|
|
|
215
220
|
const mapMap = (coll, cb) =>
|
|
216
221
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
217
222
|
const mapSet = (map, key, value) =>
|
|
218
|
-
|
|
223
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
219
224
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
220
225
|
if (!collHas(map, key)) {
|
|
221
226
|
mapSet(map, key, getDefaultValue());
|
|
@@ -364,7 +369,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
364
369
|
const index = size(ids);
|
|
365
370
|
if (index == size(path)) {
|
|
366
371
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
367
|
-
} else if (
|
|
372
|
+
} else if (isNull(path[index])) {
|
|
368
373
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
369
374
|
callWithIds(...ids, id2),
|
|
370
375
|
);
|
|
@@ -657,6 +662,9 @@ const createSessionPersister = (store, storageName, onIgnoredError) =>
|
|
|
657
662
|
createStoragePersister(store, storageName, sessionStorage, onIgnoredError);
|
|
658
663
|
|
|
659
664
|
const getCellOrValueType = (cellOrValue) => {
|
|
665
|
+
if (isNull(cellOrValue)) {
|
|
666
|
+
return 'null';
|
|
667
|
+
}
|
|
660
668
|
const type = getTypeOf(cellOrValue);
|
|
661
669
|
return isTypeStringOrBoolean(type) ||
|
|
662
670
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
@@ -752,14 +760,22 @@ const createStore = () => {
|
|
|
752
760
|
const validateValuesSchema = (valuesSchema) =>
|
|
753
761
|
objValidate(valuesSchema, validateCellOrValueSchema);
|
|
754
762
|
const validateCellOrValueSchema = (schema) => {
|
|
755
|
-
if (
|
|
763
|
+
if (
|
|
764
|
+
!objValidate(schema, (_child, id2) =>
|
|
765
|
+
arrayHas([TYPE, DEFAULT, ALLOW_NULL], id2),
|
|
766
|
+
)
|
|
767
|
+
) {
|
|
756
768
|
return false;
|
|
757
769
|
}
|
|
758
770
|
const type = schema[TYPE];
|
|
759
771
|
if (!isTypeStringOrBoolean(type) && type != NUMBER) {
|
|
760
772
|
return false;
|
|
761
773
|
}
|
|
762
|
-
|
|
774
|
+
const defaultValue = schema[DEFAULT];
|
|
775
|
+
if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
|
|
776
|
+
return false;
|
|
777
|
+
}
|
|
778
|
+
if (!isNull(defaultValue) && getCellOrValueType(defaultValue) != type) {
|
|
763
779
|
objDel(schema, DEFAULT);
|
|
764
780
|
}
|
|
765
781
|
return true;
|
|
@@ -796,9 +812,19 @@ const createStore = () => {
|
|
|
796
812
|
? ifNotUndefined(
|
|
797
813
|
mapGet(mapGet(tablesSchemaMap, tableId), cellId),
|
|
798
814
|
(cellSchema) =>
|
|
799
|
-
|
|
800
|
-
?
|
|
801
|
-
|
|
815
|
+
isNull(cell)
|
|
816
|
+
? cellSchema[ALLOW_NULL]
|
|
817
|
+
? cell
|
|
818
|
+
: cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
|
|
819
|
+
: getCellOrValueType(cell) == cellSchema[TYPE]
|
|
820
|
+
? cell
|
|
821
|
+
: cellInvalid(
|
|
822
|
+
tableId,
|
|
823
|
+
rowId,
|
|
824
|
+
cellId,
|
|
825
|
+
cell,
|
|
826
|
+
cellSchema[DEFAULT],
|
|
827
|
+
),
|
|
802
828
|
() => cellInvalid(tableId, rowId, cellId, cell),
|
|
803
829
|
)
|
|
804
830
|
: isUndefined(getCellOrValueType(cell))
|
|
@@ -823,9 +849,13 @@ const createStore = () => {
|
|
|
823
849
|
? ifNotUndefined(
|
|
824
850
|
mapGet(valuesSchemaMap, valueId),
|
|
825
851
|
(valueSchema) =>
|
|
826
|
-
|
|
827
|
-
?
|
|
828
|
-
|
|
852
|
+
isNull(value)
|
|
853
|
+
? valueSchema[ALLOW_NULL]
|
|
854
|
+
? value
|
|
855
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT])
|
|
856
|
+
: getCellOrValueType(value) == valueSchema[TYPE]
|
|
857
|
+
? value
|
|
858
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT]),
|
|
829
859
|
() => valueInvalid(valueId, value),
|
|
830
860
|
)
|
|
831
861
|
: isUndefined(getCellOrValueType(value))
|
|
@@ -1068,7 +1098,7 @@ const createStore = () => {
|
|
|
1068
1098
|
mapSet(
|
|
1069
1099
|
cellIds,
|
|
1070
1100
|
cellId,
|
|
1071
|
-
count != -addedOrRemoved ? count + addedOrRemoved :
|
|
1101
|
+
count != -addedOrRemoved ? count + addedOrRemoved : void 0,
|
|
1072
1102
|
);
|
|
1073
1103
|
idsChanged(
|
|
1074
1104
|
mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
|
|
@@ -2819,7 +2849,7 @@ const RelationshipInHtmlRow = ({
|
|
|
2819
2849
|
? localRowId
|
|
2820
2850
|
: tableId === remoteTableId
|
|
2821
2851
|
? remoteRowId
|
|
2822
|
-
:
|
|
2852
|
+
: void 0;
|
|
2823
2853
|
return isUndefined(rowId)
|
|
2824
2854
|
? null
|
|
2825
2855
|
: /* @__PURE__ */ jsx(
|
|
@@ -3481,11 +3511,11 @@ const getNewIdFromSuggestedId = (suggestedId, has) => {
|
|
|
3481
3511
|
};
|
|
3482
3512
|
const ConfirmableActions = ({actions, ...props}) => {
|
|
3483
3513
|
const [confirming, setConfirming] = useState();
|
|
3484
|
-
const handleDone = useCallback(() => setConfirming(
|
|
3514
|
+
const handleDone = useCallback(() => setConfirming(void 0), []);
|
|
3485
3515
|
useEffect(() => {
|
|
3486
|
-
if (confirming
|
|
3516
|
+
if (!isUndefined(confirming)) {
|
|
3487
3517
|
const handleKeyDown = (e) => {
|
|
3488
|
-
if (confirming
|
|
3518
|
+
if (!isUndefined(confirming) && e.key === 'Escape') {
|
|
3489
3519
|
e.preventDefault();
|
|
3490
3520
|
handleDone();
|
|
3491
3521
|
}
|
|
@@ -3494,7 +3524,7 @@ const ConfirmableActions = ({actions, ...props}) => {
|
|
|
3494
3524
|
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
3495
3525
|
}
|
|
3496
3526
|
}, [confirming, handleDone]);
|
|
3497
|
-
if (confirming
|
|
3527
|
+
if (!isUndefined(confirming)) {
|
|
3498
3528
|
const [, , Component] = actions[confirming];
|
|
3499
3529
|
return /* @__PURE__ */ jsxs(Fragment, {
|
|
3500
3530
|
children: [
|
|
@@ -43,6 +43,7 @@ const NUMBER = getTypeOf(0);
|
|
|
43
43
|
const FUNCTION = getTypeOf(getTypeOf);
|
|
44
44
|
const TYPE = 'type';
|
|
45
45
|
const DEFAULT = 'default';
|
|
46
|
+
const ALLOW_NULL = 'allowNull';
|
|
46
47
|
const LISTENER = 'Listener';
|
|
47
48
|
const RESULT = 'Result';
|
|
48
49
|
const GET = 'get';
|
|
@@ -74,6 +75,8 @@ const id = (key) => EMPTY_STRING + key;
|
|
|
74
75
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
75
76
|
str.split(separator, limit);
|
|
76
77
|
|
|
78
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
79
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
77
80
|
const GLOBAL = globalThis;
|
|
78
81
|
const WINDOW = GLOBAL.window;
|
|
79
82
|
const math = Math;
|
|
@@ -81,9 +84,11 @@ const mathMin = math.min;
|
|
|
81
84
|
const mathFloor = math.floor;
|
|
82
85
|
const isFiniteNumber = isFinite;
|
|
83
86
|
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
84
|
-
const
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
+
const isNullish = (thing) => thing == null;
|
|
88
|
+
const isUndefined = (thing) => thing === void 0;
|
|
89
|
+
const isNull = (thing) => thing === null;
|
|
90
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
91
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
87
92
|
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
88
93
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
89
94
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
@@ -125,12 +130,12 @@ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
|
125
130
|
const objFrozen = object.isFrozen;
|
|
126
131
|
const objEntries = object.entries;
|
|
127
132
|
const isObject = (obj) =>
|
|
128
|
-
!
|
|
129
|
-
|
|
133
|
+
!isNullish(obj) &&
|
|
134
|
+
ifNotNullish(
|
|
130
135
|
getPrototypeOf(obj),
|
|
131
136
|
(objPrototype) =>
|
|
132
137
|
objPrototype == object.prototype ||
|
|
133
|
-
|
|
138
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
134
139
|
|
|
135
140
|
/* istanbul ignore next */
|
|
136
141
|
() => true,
|
|
@@ -167,7 +172,7 @@ const objIsEqual = (obj1, obj2) => {
|
|
|
167
172
|
};
|
|
168
173
|
const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
|
|
169
174
|
if (
|
|
170
|
-
|
|
175
|
+
isNullish(obj) ||
|
|
171
176
|
!isObject(obj) ||
|
|
172
177
|
(!emptyIsValid && objIsEmpty(obj)) ||
|
|
173
178
|
objFrozen(obj)
|
|
@@ -215,7 +220,7 @@ const mapForEach = (map, cb) =>
|
|
|
215
220
|
const mapMap = (coll, cb) =>
|
|
216
221
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
217
222
|
const mapSet = (map, key, value) =>
|
|
218
|
-
|
|
223
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
219
224
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
220
225
|
if (!collHas(map, key)) {
|
|
221
226
|
mapSet(map, key, getDefaultValue());
|
|
@@ -364,7 +369,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
364
369
|
const index = size(ids);
|
|
365
370
|
if (index == size(path)) {
|
|
366
371
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
367
|
-
} else if (
|
|
372
|
+
} else if (isNull(path[index])) {
|
|
368
373
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
369
374
|
callWithIds(...ids, id2),
|
|
370
375
|
);
|
|
@@ -657,6 +662,9 @@ const createSessionPersister = (store, storageName, onIgnoredError) =>
|
|
|
657
662
|
createStoragePersister(store, storageName, sessionStorage, onIgnoredError);
|
|
658
663
|
|
|
659
664
|
const getCellOrValueType = (cellOrValue) => {
|
|
665
|
+
if (isNull(cellOrValue)) {
|
|
666
|
+
return 'null';
|
|
667
|
+
}
|
|
660
668
|
const type = getTypeOf(cellOrValue);
|
|
661
669
|
return isTypeStringOrBoolean(type) ||
|
|
662
670
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
@@ -752,14 +760,22 @@ const createStore = () => {
|
|
|
752
760
|
const validateValuesSchema = (valuesSchema) =>
|
|
753
761
|
objValidate(valuesSchema, validateCellOrValueSchema);
|
|
754
762
|
const validateCellOrValueSchema = (schema) => {
|
|
755
|
-
if (
|
|
763
|
+
if (
|
|
764
|
+
!objValidate(schema, (_child, id2) =>
|
|
765
|
+
arrayHas([TYPE, DEFAULT, ALLOW_NULL], id2),
|
|
766
|
+
)
|
|
767
|
+
) {
|
|
756
768
|
return false;
|
|
757
769
|
}
|
|
758
770
|
const type = schema[TYPE];
|
|
759
771
|
if (!isTypeStringOrBoolean(type) && type != NUMBER) {
|
|
760
772
|
return false;
|
|
761
773
|
}
|
|
762
|
-
|
|
774
|
+
const defaultValue = schema[DEFAULT];
|
|
775
|
+
if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
|
|
776
|
+
return false;
|
|
777
|
+
}
|
|
778
|
+
if (!isNull(defaultValue) && getCellOrValueType(defaultValue) != type) {
|
|
763
779
|
objDel(schema, DEFAULT);
|
|
764
780
|
}
|
|
765
781
|
return true;
|
|
@@ -796,9 +812,19 @@ const createStore = () => {
|
|
|
796
812
|
? ifNotUndefined(
|
|
797
813
|
mapGet(mapGet(tablesSchemaMap, tableId), cellId),
|
|
798
814
|
(cellSchema) =>
|
|
799
|
-
|
|
800
|
-
?
|
|
801
|
-
|
|
815
|
+
isNull(cell)
|
|
816
|
+
? cellSchema[ALLOW_NULL]
|
|
817
|
+
? cell
|
|
818
|
+
: cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
|
|
819
|
+
: getCellOrValueType(cell) == cellSchema[TYPE]
|
|
820
|
+
? cell
|
|
821
|
+
: cellInvalid(
|
|
822
|
+
tableId,
|
|
823
|
+
rowId,
|
|
824
|
+
cellId,
|
|
825
|
+
cell,
|
|
826
|
+
cellSchema[DEFAULT],
|
|
827
|
+
),
|
|
802
828
|
() => cellInvalid(tableId, rowId, cellId, cell),
|
|
803
829
|
)
|
|
804
830
|
: isUndefined(getCellOrValueType(cell))
|
|
@@ -823,9 +849,13 @@ const createStore = () => {
|
|
|
823
849
|
? ifNotUndefined(
|
|
824
850
|
mapGet(valuesSchemaMap, valueId),
|
|
825
851
|
(valueSchema) =>
|
|
826
|
-
|
|
827
|
-
?
|
|
828
|
-
|
|
852
|
+
isNull(value)
|
|
853
|
+
? valueSchema[ALLOW_NULL]
|
|
854
|
+
? value
|
|
855
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT])
|
|
856
|
+
: getCellOrValueType(value) == valueSchema[TYPE]
|
|
857
|
+
? value
|
|
858
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT]),
|
|
829
859
|
() => valueInvalid(valueId, value),
|
|
830
860
|
)
|
|
831
861
|
: isUndefined(getCellOrValueType(value))
|
|
@@ -1068,7 +1098,7 @@ const createStore = () => {
|
|
|
1068
1098
|
mapSet(
|
|
1069
1099
|
cellIds,
|
|
1070
1100
|
cellId,
|
|
1071
|
-
count != -addedOrRemoved ? count + addedOrRemoved :
|
|
1101
|
+
count != -addedOrRemoved ? count + addedOrRemoved : void 0,
|
|
1072
1102
|
);
|
|
1073
1103
|
idsChanged(
|
|
1074
1104
|
mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
|
|
@@ -2819,7 +2849,7 @@ const RelationshipInHtmlRow = ({
|
|
|
2819
2849
|
? localRowId
|
|
2820
2850
|
: tableId === remoteTableId
|
|
2821
2851
|
? remoteRowId
|
|
2822
|
-
:
|
|
2852
|
+
: void 0;
|
|
2823
2853
|
return isUndefined(rowId)
|
|
2824
2854
|
? null
|
|
2825
2855
|
: /* @__PURE__ */ jsx(
|
|
@@ -3481,11 +3511,11 @@ const getNewIdFromSuggestedId = (suggestedId, has) => {
|
|
|
3481
3511
|
};
|
|
3482
3512
|
const ConfirmableActions = ({actions, ...props}) => {
|
|
3483
3513
|
const [confirming, setConfirming] = useState();
|
|
3484
|
-
const handleDone = useCallback(() => setConfirming(
|
|
3514
|
+
const handleDone = useCallback(() => setConfirming(void 0), []);
|
|
3485
3515
|
useEffect(() => {
|
|
3486
|
-
if (confirming
|
|
3516
|
+
if (!isUndefined(confirming)) {
|
|
3487
3517
|
const handleKeyDown = (e) => {
|
|
3488
|
-
if (confirming
|
|
3518
|
+
if (!isUndefined(confirming) && e.key === 'Escape') {
|
|
3489
3519
|
e.preventDefault();
|
|
3490
3520
|
handleDone();
|
|
3491
3521
|
}
|
|
@@ -3494,7 +3524,7 @@ const ConfirmableActions = ({actions, ...props}) => {
|
|
|
3494
3524
|
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
3495
3525
|
}
|
|
3496
3526
|
}, [confirming, handleDone]);
|
|
3497
|
-
if (confirming
|
|
3527
|
+
if (!isUndefined(confirming)) {
|
|
3498
3528
|
const [, , Component] = actions[confirming];
|
|
3499
3529
|
return /* @__PURE__ */ jsxs(Fragment, {
|
|
3500
3530
|
children: [
|