tinybase 7.3.3 → 7.3.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/checkpoints/index.js +12 -11
- package/checkpoints/with-schemas/index.js +12 -11
- package/common/index.js +3 -2
- package/common/with-schemas/index.js +3 -2
- package/index.js +92 -64
- package/indexes/index.js +13 -12
- package/indexes/with-schemas/index.js +13 -12
- package/mergeable-store/index.js +92 -64
- package/mergeable-store/with-schemas/index.js +92 -64
- package/metrics/index.js +13 -12
- package/metrics/with-schemas/index.js +13 -12
- 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-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-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 +99 -64
- package/omni/with-schemas/index.js +99 -64
- package/package.json +3 -3
- package/persisters/index.js +19 -11
- package/persisters/persister-automerge/index.js +17 -9
- package/persisters/persister-automerge/with-schemas/index.js +17 -9
- package/persisters/persister-browser/index.js +17 -9
- package/persisters/persister-browser/with-schemas/index.js +17 -9
- package/persisters/persister-cr-sqlite-wasm/index.js +19 -11
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +19 -11
- package/persisters/persister-durable-object-sql-storage/index.js +19 -11
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +19 -11
- package/persisters/persister-durable-object-storage/index.js +19 -11
- package/persisters/persister-durable-object-storage/with-schemas/index.js +19 -11
- package/persisters/persister-electric-sql/index.js +19 -11
- package/persisters/persister-electric-sql/with-schemas/index.js +19 -11
- package/persisters/persister-expo-sqlite/index.js +19 -11
- package/persisters/persister-expo-sqlite/with-schemas/index.js +19 -11
- package/persisters/persister-file/index.js +17 -9
- package/persisters/persister-file/with-schemas/index.js +17 -9
- package/persisters/persister-indexed-db/index.js +17 -9
- package/persisters/persister-indexed-db/with-schemas/index.js +17 -9
- package/persisters/persister-libsql/index.js +19 -11
- package/persisters/persister-libsql/with-schemas/index.js +19 -11
- package/persisters/persister-partykit-client/index.js +17 -9
- package/persisters/persister-partykit-client/with-schemas/index.js +17 -9
- package/persisters/persister-partykit-server/index.js +2 -2
- package/persisters/persister-partykit-server/with-schemas/index.js +2 -2
- package/persisters/persister-pglite/index.js +19 -11
- package/persisters/persister-pglite/with-schemas/index.js +19 -11
- package/persisters/persister-postgres/index.js +19 -11
- package/persisters/persister-postgres/with-schemas/index.js +19 -11
- package/persisters/persister-powersync/index.js +19 -11
- package/persisters/persister-powersync/with-schemas/index.js +19 -11
- package/persisters/persister-react-native-mmkv/index.js +17 -9
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +17 -9
- package/persisters/persister-react-native-sqlite/index.js +19 -11
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +19 -11
- package/persisters/persister-remote/index.js +17 -9
- package/persisters/persister-remote/with-schemas/index.js +17 -9
- package/persisters/persister-sqlite-bun/index.js +19 -11
- package/persisters/persister-sqlite-bun/with-schemas/index.js +19 -11
- package/persisters/persister-sqlite-wasm/index.js +19 -11
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +19 -11
- package/persisters/persister-sqlite3/index.js +19 -11
- package/persisters/persister-sqlite3/with-schemas/index.js +19 -11
- package/persisters/persister-yjs/index.js +19 -11
- package/persisters/persister-yjs/with-schemas/index.js +19 -11
- package/persisters/with-schemas/index.js +19 -11
- package/queries/index.js +15 -14
- package/queries/with-schemas/index.js +15 -14
- package/readme.md +2 -2
- package/relationships/index.js +13 -12
- package/relationships/with-schemas/index.js +13 -12
- package/store/index.js +74 -60
- package/store/with-schemas/index.js +74 -60
- package/synchronizers/index.js +17 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +17 -9
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +17 -9
- package/synchronizers/synchronizer-local/index.js +19 -11
- package/synchronizers/synchronizer-local/with-schemas/index.js +19 -11
- package/synchronizers/synchronizer-ws-client/index.js +17 -9
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +17 -9
- package/synchronizers/synchronizer-ws-server/index.js +20 -12
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +20 -12
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +17 -9
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +17 -9
- package/synchronizers/synchronizer-ws-server-simple/index.js +11 -10
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +11 -10
- package/synchronizers/with-schemas/index.js +17 -9
- package/ui-react-inspector/index.js +81 -60
- package/ui-react-inspector/with-schemas/index.js +81 -60
- package/with-schemas/index.js +92 -64
|
@@ -92,22 +92,23 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
92
92
|
return obj[id];
|
|
93
93
|
};
|
|
94
94
|
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
|
|
95
|
+
const map = Map;
|
|
96
|
+
const mapNew = (entries) => new map(entries);
|
|
97
|
+
const mapKeys = (map2) => [...(map2?.keys() ?? [])];
|
|
98
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
99
|
+
const mapForEach = (map2, cb) =>
|
|
100
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
100
101
|
const mapMap = (coll, cb) =>
|
|
101
102
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
102
|
-
const mapSet = (
|
|
103
|
-
isUndefined(value) ? (collDel(
|
|
104
|
-
const mapEnsure = (
|
|
105
|
-
if (!collHas(
|
|
106
|
-
mapSet(
|
|
103
|
+
const mapSet = (map2, key, value) =>
|
|
104
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
105
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
106
|
+
if (!collHas(map2, key)) {
|
|
107
|
+
mapSet(map2, key, getDefaultValue());
|
|
107
108
|
} else {
|
|
108
|
-
hadExistingValue?.(mapGet(
|
|
109
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
109
110
|
}
|
|
110
|
-
return mapGet(
|
|
111
|
+
return mapGet(map2, key);
|
|
111
112
|
};
|
|
112
113
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
113
114
|
ifNotUndefined(
|
|
@@ -363,6 +364,11 @@ const createCustomPersister = (
|
|
|
363
364
|
? store.applyChanges
|
|
364
365
|
: store.setContent)(contentOrChanges);
|
|
365
366
|
};
|
|
367
|
+
const saveAfterMutated = async () => {
|
|
368
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
369
|
+
await save();
|
|
370
|
+
}
|
|
371
|
+
};
|
|
366
372
|
const load = async (initialContent) => {
|
|
367
373
|
/* istanbul ignore else */
|
|
368
374
|
if (status != 2 /* Saving */) {
|
|
@@ -387,6 +393,7 @@ const createCustomPersister = (
|
|
|
387
393
|
},
|
|
388
394
|
);
|
|
389
395
|
setStatus(0 /* Idle */);
|
|
396
|
+
await saveAfterMutated();
|
|
390
397
|
});
|
|
391
398
|
}
|
|
392
399
|
return persister;
|
|
@@ -405,6 +412,7 @@ const createCustomPersister = (
|
|
|
405
412
|
loads++;
|
|
406
413
|
setContentOrChanges(changes ?? content);
|
|
407
414
|
setStatus(0 /* Idle */);
|
|
415
|
+
await saveAfterMutated();
|
|
408
416
|
}
|
|
409
417
|
} else {
|
|
410
418
|
await load();
|
|
@@ -92,22 +92,23 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
92
92
|
return obj[id];
|
|
93
93
|
};
|
|
94
94
|
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
|
|
95
|
+
const map = Map;
|
|
96
|
+
const mapNew = (entries) => new map(entries);
|
|
97
|
+
const mapKeys = (map2) => [...(map2?.keys() ?? [])];
|
|
98
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
99
|
+
const mapForEach = (map2, cb) =>
|
|
100
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
100
101
|
const mapMap = (coll, cb) =>
|
|
101
102
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
102
|
-
const mapSet = (
|
|
103
|
-
isUndefined(value) ? (collDel(
|
|
104
|
-
const mapEnsure = (
|
|
105
|
-
if (!collHas(
|
|
106
|
-
mapSet(
|
|
103
|
+
const mapSet = (map2, key, value) =>
|
|
104
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
105
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
106
|
+
if (!collHas(map2, key)) {
|
|
107
|
+
mapSet(map2, key, getDefaultValue());
|
|
107
108
|
} else {
|
|
108
|
-
hadExistingValue?.(mapGet(
|
|
109
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
109
110
|
}
|
|
110
|
-
return mapGet(
|
|
111
|
+
return mapGet(map2, key);
|
|
111
112
|
};
|
|
112
113
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
113
114
|
ifNotUndefined(
|
|
@@ -363,6 +364,11 @@ const createCustomPersister = (
|
|
|
363
364
|
? store.applyChanges
|
|
364
365
|
: store.setContent)(contentOrChanges);
|
|
365
366
|
};
|
|
367
|
+
const saveAfterMutated = async () => {
|
|
368
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
369
|
+
await save();
|
|
370
|
+
}
|
|
371
|
+
};
|
|
366
372
|
const load = async (initialContent) => {
|
|
367
373
|
/* istanbul ignore else */
|
|
368
374
|
if (status != 2 /* Saving */) {
|
|
@@ -387,6 +393,7 @@ const createCustomPersister = (
|
|
|
387
393
|
},
|
|
388
394
|
);
|
|
389
395
|
setStatus(0 /* Idle */);
|
|
396
|
+
await saveAfterMutated();
|
|
390
397
|
});
|
|
391
398
|
}
|
|
392
399
|
return persister;
|
|
@@ -405,6 +412,7 @@ const createCustomPersister = (
|
|
|
405
412
|
loads++;
|
|
406
413
|
setContentOrChanges(changes ?? content);
|
|
407
414
|
setStatus(0 /* Idle */);
|
|
415
|
+
await saveAfterMutated();
|
|
408
416
|
}
|
|
409
417
|
} else {
|
|
410
418
|
await load();
|
|
@@ -119,17 +119,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
119
119
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
120
120
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
121
121
|
|
|
122
|
-
const
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
122
|
+
const map = Map;
|
|
123
|
+
const mapNew = (entries) => new map(entries);
|
|
124
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
125
|
+
const mapSet = (map2, key, value) =>
|
|
126
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
127
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
128
|
+
if (!collHas(map2, key)) {
|
|
129
|
+
mapSet(map2, key, getDefaultValue());
|
|
129
130
|
} else {
|
|
130
|
-
hadExistingValue?.(mapGet(
|
|
131
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
131
132
|
}
|
|
132
|
-
return mapGet(
|
|
133
|
+
return mapGet(map2, key);
|
|
133
134
|
};
|
|
134
135
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
135
136
|
ifNotUndefined(
|
|
@@ -353,6 +354,11 @@ const createCustomPersister = (
|
|
|
353
354
|
? store.applyChanges
|
|
354
355
|
: store.setContent)(contentOrChanges);
|
|
355
356
|
};
|
|
357
|
+
const saveAfterMutated = async () => {
|
|
358
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
359
|
+
await save();
|
|
360
|
+
}
|
|
361
|
+
};
|
|
356
362
|
const load = async (initialContent) => {
|
|
357
363
|
/* istanbul ignore else */
|
|
358
364
|
if (status != 2 /* Saving */) {
|
|
@@ -377,6 +383,7 @@ const createCustomPersister = (
|
|
|
377
383
|
},
|
|
378
384
|
);
|
|
379
385
|
setStatus(0 /* Idle */);
|
|
386
|
+
await saveAfterMutated();
|
|
380
387
|
});
|
|
381
388
|
}
|
|
382
389
|
return persister;
|
|
@@ -395,6 +402,7 @@ const createCustomPersister = (
|
|
|
395
402
|
loads++;
|
|
396
403
|
setContentOrChanges(changes ?? content);
|
|
397
404
|
setStatus(0 /* Idle */);
|
|
405
|
+
await saveAfterMutated();
|
|
398
406
|
}
|
|
399
407
|
} else {
|
|
400
408
|
await load();
|
|
@@ -119,17 +119,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
119
119
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
120
120
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
121
121
|
|
|
122
|
-
const
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
122
|
+
const map = Map;
|
|
123
|
+
const mapNew = (entries) => new map(entries);
|
|
124
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
125
|
+
const mapSet = (map2, key, value) =>
|
|
126
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
127
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
128
|
+
if (!collHas(map2, key)) {
|
|
129
|
+
mapSet(map2, key, getDefaultValue());
|
|
129
130
|
} else {
|
|
130
|
-
hadExistingValue?.(mapGet(
|
|
131
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
131
132
|
}
|
|
132
|
-
return mapGet(
|
|
133
|
+
return mapGet(map2, key);
|
|
133
134
|
};
|
|
134
135
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
135
136
|
ifNotUndefined(
|
|
@@ -353,6 +354,11 @@ const createCustomPersister = (
|
|
|
353
354
|
? store.applyChanges
|
|
354
355
|
: store.setContent)(contentOrChanges);
|
|
355
356
|
};
|
|
357
|
+
const saveAfterMutated = async () => {
|
|
358
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
359
|
+
await save();
|
|
360
|
+
}
|
|
361
|
+
};
|
|
356
362
|
const load = async (initialContent) => {
|
|
357
363
|
/* istanbul ignore else */
|
|
358
364
|
if (status != 2 /* Saving */) {
|
|
@@ -377,6 +383,7 @@ const createCustomPersister = (
|
|
|
377
383
|
},
|
|
378
384
|
);
|
|
379
385
|
setStatus(0 /* Idle */);
|
|
386
|
+
await saveAfterMutated();
|
|
380
387
|
});
|
|
381
388
|
}
|
|
382
389
|
return persister;
|
|
@@ -395,6 +402,7 @@ const createCustomPersister = (
|
|
|
395
402
|
loads++;
|
|
396
403
|
setContentOrChanges(changes ?? content);
|
|
397
404
|
setStatus(0 /* Idle */);
|
|
405
|
+
await saveAfterMutated();
|
|
398
406
|
}
|
|
399
407
|
} else {
|
|
400
408
|
await load();
|
|
@@ -19,17 +19,18 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
19
19
|
const object = Object;
|
|
20
20
|
const objFreeze = object.freeze;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
const map = Map;
|
|
23
|
+
const mapNew = (entries) => new map(entries);
|
|
24
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
25
|
+
const mapForEach = (map2, cb) =>
|
|
26
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
27
|
+
const mapSet = (map2, key, value) =>
|
|
28
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
29
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
30
|
+
if (!collHas(map2, key)) {
|
|
31
|
+
mapSet(map2, key, getDefaultValue());
|
|
31
32
|
}
|
|
32
|
-
return mapGet(
|
|
33
|
+
return mapGet(map2, key);
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
const MESSAGE_SEPARATOR = '\n';
|
|
@@ -19,17 +19,18 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
19
19
|
const object = Object;
|
|
20
20
|
const objFreeze = object.freeze;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
const map = Map;
|
|
23
|
+
const mapNew = (entries) => new map(entries);
|
|
24
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
25
|
+
const mapForEach = (map2, cb) =>
|
|
26
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
27
|
+
const mapSet = (map2, key, value) =>
|
|
28
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
29
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
30
|
+
if (!collHas(map2, key)) {
|
|
31
|
+
mapSet(map2, key, getDefaultValue());
|
|
31
32
|
}
|
|
32
|
-
return mapGet(
|
|
33
|
+
return mapGet(map2, key);
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
const MESSAGE_SEPARATOR = '\n';
|
|
@@ -75,17 +75,18 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
75
75
|
return obj[id];
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
const map = Map;
|
|
79
|
+
const mapNew = (entries) => new map(entries);
|
|
80
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
81
|
+
const mapSet = (map2, key, value) =>
|
|
82
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
83
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
84
|
+
if (!collHas(map2, key)) {
|
|
85
|
+
mapSet(map2, key, getDefaultValue());
|
|
85
86
|
} else {
|
|
86
|
-
hadExistingValue?.(mapGet(
|
|
87
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
87
88
|
}
|
|
88
|
-
return mapGet(
|
|
89
|
+
return mapGet(map2, key);
|
|
89
90
|
};
|
|
90
91
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
91
92
|
ifNotUndefined(
|
|
@@ -309,6 +310,11 @@ const createCustomPersister = (
|
|
|
309
310
|
? store.applyChanges
|
|
310
311
|
: store.setContent)(contentOrChanges);
|
|
311
312
|
};
|
|
313
|
+
const saveAfterMutated = async () => {
|
|
314
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
315
|
+
await save();
|
|
316
|
+
}
|
|
317
|
+
};
|
|
312
318
|
const load = async (initialContent) => {
|
|
313
319
|
/* istanbul ignore else */
|
|
314
320
|
if (status != 2 /* Saving */) {
|
|
@@ -333,6 +339,7 @@ const createCustomPersister = (
|
|
|
333
339
|
},
|
|
334
340
|
);
|
|
335
341
|
setStatus(0 /* Idle */);
|
|
342
|
+
await saveAfterMutated();
|
|
336
343
|
});
|
|
337
344
|
}
|
|
338
345
|
return persister;
|
|
@@ -351,6 +358,7 @@ const createCustomPersister = (
|
|
|
351
358
|
loads++;
|
|
352
359
|
setContentOrChanges(changes ?? content);
|
|
353
360
|
setStatus(0 /* Idle */);
|
|
361
|
+
await saveAfterMutated();
|
|
354
362
|
}
|
|
355
363
|
} else {
|
|
356
364
|
await load();
|
|
@@ -236,31 +236,32 @@ const collClear = (coll) => coll.clear();
|
|
|
236
236
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
237
237
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
238
238
|
|
|
239
|
-
const
|
|
240
|
-
const
|
|
241
|
-
const
|
|
242
|
-
const
|
|
243
|
-
|
|
239
|
+
const map = Map;
|
|
240
|
+
const mapNew = (entries) => new map(entries);
|
|
241
|
+
const mapKeys = (map2) => [...(map2?.keys() ?? [])];
|
|
242
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
243
|
+
const mapForEach = (map2, cb) =>
|
|
244
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
244
245
|
const mapMap = (coll, cb) =>
|
|
245
246
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
246
|
-
const mapSet = (
|
|
247
|
-
isUndefined(value) ? (collDel(
|
|
248
|
-
const mapEnsure = (
|
|
249
|
-
if (!collHas(
|
|
250
|
-
mapSet(
|
|
247
|
+
const mapSet = (map2, key, value) =>
|
|
248
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
249
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
250
|
+
if (!collHas(map2, key)) {
|
|
251
|
+
mapSet(map2, key, getDefaultValue());
|
|
251
252
|
} else {
|
|
252
|
-
hadExistingValue?.(mapGet(
|
|
253
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
253
254
|
}
|
|
254
|
-
return mapGet(
|
|
255
|
+
return mapGet(map2, key);
|
|
255
256
|
};
|
|
256
|
-
const mapMatch = (
|
|
257
|
-
objMap(obj, (value, id) => set(
|
|
258
|
-
mapForEach(
|
|
259
|
-
return
|
|
257
|
+
const mapMatch = (map2, obj, set, del = mapSet) => {
|
|
258
|
+
objMap(obj, (value, id) => set(map2, id, value));
|
|
259
|
+
mapForEach(map2, (id) => (objHas(obj, id) ? 0 : del(map2, id)));
|
|
260
|
+
return map2;
|
|
260
261
|
};
|
|
261
|
-
const mapToObj = (
|
|
262
|
+
const mapToObj = (map2, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
262
263
|
const obj = {};
|
|
263
|
-
collForEach(
|
|
264
|
+
collForEach(map2, (mapValue, id) => {
|
|
264
265
|
if (!excludeMapValue?.(mapValue, id)) {
|
|
265
266
|
const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;
|
|
266
267
|
if (!excludeObjValue?.(objValue)) {
|
|
@@ -270,27 +271,27 @@ const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
|
270
271
|
});
|
|
271
272
|
return obj;
|
|
272
273
|
};
|
|
273
|
-
const mapToObj2 = (
|
|
274
|
+
const mapToObj2 = (map2, valueMapper, excludeMapValue) =>
|
|
274
275
|
mapToObj(
|
|
275
|
-
|
|
276
|
+
map2,
|
|
276
277
|
(childMap) => mapToObj(childMap, valueMapper, excludeMapValue),
|
|
277
278
|
collIsEmpty,
|
|
278
279
|
objIsEmpty,
|
|
279
280
|
);
|
|
280
|
-
const mapToObj3 = (
|
|
281
|
+
const mapToObj3 = (map2, valueMapper, excludeMapValue) =>
|
|
281
282
|
mapToObj(
|
|
282
|
-
|
|
283
|
+
map2,
|
|
283
284
|
(childMap) => mapToObj2(childMap, valueMapper, excludeMapValue),
|
|
284
285
|
collIsEmpty,
|
|
285
286
|
objIsEmpty,
|
|
286
287
|
);
|
|
287
|
-
const mapClone = (
|
|
288
|
-
const
|
|
289
|
-
collForEach(
|
|
290
|
-
return
|
|
288
|
+
const mapClone = (map2, mapValue) => {
|
|
289
|
+
const map22 = mapNew();
|
|
290
|
+
collForEach(map2, (value, key) => map22.set(key, mapValue?.(value) ?? value));
|
|
291
|
+
return map22;
|
|
291
292
|
};
|
|
292
|
-
const mapClone2 = (
|
|
293
|
-
const mapClone3 = (
|
|
293
|
+
const mapClone2 = (map2) => mapClone(map2, mapClone);
|
|
294
|
+
const mapClone3 = (map2) => mapClone(map2, mapClone2);
|
|
294
295
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
295
296
|
ifNotUndefined(
|
|
296
297
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
@@ -491,6 +492,11 @@ const createCustomPersister = (
|
|
|
491
492
|
? store.applyChanges
|
|
492
493
|
: store.setContent)(contentOrChanges);
|
|
493
494
|
};
|
|
495
|
+
const saveAfterMutated = async () => {
|
|
496
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
497
|
+
await save();
|
|
498
|
+
}
|
|
499
|
+
};
|
|
494
500
|
const load = async (initialContent) => {
|
|
495
501
|
/* istanbul ignore else */
|
|
496
502
|
if (status != 2 /* Saving */) {
|
|
@@ -515,6 +521,7 @@ const createCustomPersister = (
|
|
|
515
521
|
},
|
|
516
522
|
);
|
|
517
523
|
setStatus(0 /* Idle */);
|
|
524
|
+
await saveAfterMutated();
|
|
518
525
|
});
|
|
519
526
|
}
|
|
520
527
|
return persister;
|
|
@@ -533,6 +540,7 @@ const createCustomPersister = (
|
|
|
533
540
|
loads++;
|
|
534
541
|
setContentOrChanges(changes ?? content);
|
|
535
542
|
setStatus(0 /* Idle */);
|
|
543
|
+
await saveAfterMutated();
|
|
536
544
|
}
|
|
537
545
|
} else {
|
|
538
546
|
await load();
|
|
@@ -732,6 +740,7 @@ const createStore = () => {
|
|
|
732
740
|
let hadValues = false;
|
|
733
741
|
let transactions = 0;
|
|
734
742
|
let internalListeners = [];
|
|
743
|
+
let mutating = 0;
|
|
735
744
|
const changedTableIds = mapNew();
|
|
736
745
|
const changedTableCellIds = mapNew();
|
|
737
746
|
const changedRowCount = mapNew();
|
|
@@ -1136,13 +1145,13 @@ const createStore = () => {
|
|
|
1136
1145
|
cellId,
|
|
1137
1146
|
() => [oldCell, 0],
|
|
1138
1147
|
)[1] = newCell;
|
|
1139
|
-
internalListeners[3]?.(tableId, rowId, cellId, newCell);
|
|
1148
|
+
internalListeners[3]?.(tableId, rowId, cellId, newCell, mutating);
|
|
1140
1149
|
};
|
|
1141
1150
|
const valueIdsChanged = (valueId, addedOrRemoved) =>
|
|
1142
1151
|
idsChanged(changedValueIds, valueId, addedOrRemoved);
|
|
1143
1152
|
const valueChanged = (valueId, oldValue, newValue) => {
|
|
1144
1153
|
mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
|
|
1145
|
-
internalListeners[4]?.(valueId, newValue);
|
|
1154
|
+
internalListeners[4]?.(valueId, newValue, mutating);
|
|
1146
1155
|
};
|
|
1147
1156
|
const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
|
|
1148
1157
|
arrayPush(
|
|
@@ -1217,14 +1226,11 @@ const createStore = () => {
|
|
|
1217
1226
|
}
|
|
1218
1227
|
};
|
|
1219
1228
|
const callTabularListenersForChanges = (mutator) => {
|
|
1220
|
-
const
|
|
1221
|
-
|
|
1222
|
-
callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
|
|
1223
|
-
}
|
|
1224
|
-
const emptySortedRowIdListeners = collIsEmpty(
|
|
1229
|
+
const hasHasTablesListeners = !collIsEmpty(hasTablesListeners[mutator]);
|
|
1230
|
+
const hasSortedRowIdListeners = !collIsEmpty(
|
|
1225
1231
|
sortedRowIdsListeners[mutator],
|
|
1226
1232
|
);
|
|
1227
|
-
const
|
|
1233
|
+
const hasIdOrHasListeners = !(
|
|
1228
1234
|
collIsEmpty(cellIdsListeners[mutator]) &&
|
|
1229
1235
|
collIsEmpty(hasCellListeners[mutator]) &&
|
|
1230
1236
|
collIsEmpty(rowIdsListeners[mutator]) &&
|
|
@@ -1232,15 +1238,17 @@ const createStore = () => {
|
|
|
1232
1238
|
collIsEmpty(tableCellIdsListeners[mutator]) &&
|
|
1233
1239
|
collIsEmpty(hasTableCellListeners[mutator]) &&
|
|
1234
1240
|
collIsEmpty(rowCountListeners[mutator]) &&
|
|
1235
|
-
|
|
1241
|
+
!hasSortedRowIdListeners &&
|
|
1236
1242
|
collIsEmpty(tableIdsListeners[mutator]) &&
|
|
1237
|
-
collIsEmpty(hasTableListeners[mutator])
|
|
1238
|
-
|
|
1243
|
+
collIsEmpty(hasTableListeners[mutator])
|
|
1244
|
+
);
|
|
1245
|
+
const hasOtherListeners = !(
|
|
1239
1246
|
collIsEmpty(cellListeners[mutator]) &&
|
|
1240
1247
|
collIsEmpty(rowListeners[mutator]) &&
|
|
1241
1248
|
collIsEmpty(tableListeners[mutator]) &&
|
|
1242
|
-
collIsEmpty(tablesListeners[mutator])
|
|
1243
|
-
|
|
1249
|
+
collIsEmpty(tablesListeners[mutator])
|
|
1250
|
+
);
|
|
1251
|
+
if (hasHasTablesListeners || hasIdOrHasListeners || hasOtherListeners) {
|
|
1244
1252
|
const changes = mutator
|
|
1245
1253
|
? [
|
|
1246
1254
|
mapClone(changedTableIds),
|
|
@@ -1248,7 +1256,9 @@ const createStore = () => {
|
|
|
1248
1256
|
mapClone(changedRowCount),
|
|
1249
1257
|
mapClone2(changedRowIds),
|
|
1250
1258
|
mapClone3(changedCellIds),
|
|
1251
|
-
|
|
1259
|
+
mapClone(changedCells, (map) =>
|
|
1260
|
+
mapClone(map, (map2) => mapClone(map2, pairClone)),
|
|
1261
|
+
),
|
|
1252
1262
|
]
|
|
1253
1263
|
: [
|
|
1254
1264
|
changedTableIds,
|
|
@@ -1258,7 +1268,13 @@ const createStore = () => {
|
|
|
1258
1268
|
changedCellIds,
|
|
1259
1269
|
changedCells,
|
|
1260
1270
|
];
|
|
1261
|
-
if (
|
|
1271
|
+
if (hasHasTablesListeners) {
|
|
1272
|
+
const hasTablesNow = hasTables();
|
|
1273
|
+
if (hasTablesNow != hadTables) {
|
|
1274
|
+
callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
if (hasIdOrHasListeners) {
|
|
1262
1278
|
callIdsAndHasListenersIfChanged(
|
|
1263
1279
|
changes[0],
|
|
1264
1280
|
tableIdsListeners[mutator],
|
|
@@ -1290,13 +1306,13 @@ const createStore = () => {
|
|
|
1290
1306
|
hasRowListeners[mutator],
|
|
1291
1307
|
[tableId],
|
|
1292
1308
|
) &&
|
|
1293
|
-
|
|
1309
|
+
hasSortedRowIdListeners
|
|
1294
1310
|
) {
|
|
1295
1311
|
callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
|
|
1296
1312
|
setAdd(calledSortableTableIds, tableId);
|
|
1297
1313
|
}
|
|
1298
1314
|
});
|
|
1299
|
-
if (
|
|
1315
|
+
if (hasSortedRowIdListeners) {
|
|
1300
1316
|
collForEach(changes[5], (rows, tableId) => {
|
|
1301
1317
|
if (!collHas(calledSortableTableIds, tableId)) {
|
|
1302
1318
|
const sortableCellIds = setNew();
|
|
@@ -1327,7 +1343,7 @@ const createStore = () => {
|
|
|
1327
1343
|
),
|
|
1328
1344
|
);
|
|
1329
1345
|
}
|
|
1330
|
-
if (
|
|
1346
|
+
if (hasOtherListeners) {
|
|
1331
1347
|
let tablesChanged;
|
|
1332
1348
|
collForEach(changes[5], (rows, tableId) => {
|
|
1333
1349
|
let tableChanged;
|
|
@@ -1364,28 +1380,31 @@ const createStore = () => {
|
|
|
1364
1380
|
}
|
|
1365
1381
|
};
|
|
1366
1382
|
const callValuesListenersForChanges = (mutator) => {
|
|
1367
|
-
const
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
const
|
|
1372
|
-
collIsEmpty(
|
|
1373
|
-
collIsEmpty(
|
|
1374
|
-
|
|
1375
|
-
collIsEmpty(valueListeners[mutator]) &&
|
|
1376
|
-
collIsEmpty(valuesListeners[mutator]);
|
|
1377
|
-
if (!emptyIdAndHasListeners || !emptyOtherListeners) {
|
|
1383
|
+
const hasHasValuesListeners = !collIsEmpty(hasValuesListeners[mutator]);
|
|
1384
|
+
const hasIdOrHasListeners =
|
|
1385
|
+
!collIsEmpty(valueIdsListeners[mutator]) ||
|
|
1386
|
+
!collIsEmpty(hasValueListeners[mutator]);
|
|
1387
|
+
const hasOtherListeners =
|
|
1388
|
+
!collIsEmpty(valueListeners[mutator]) ||
|
|
1389
|
+
!collIsEmpty(valuesListeners[mutator]);
|
|
1390
|
+
if (hasHasValuesListeners || hasIdOrHasListeners || hasOtherListeners) {
|
|
1378
1391
|
const changes = mutator
|
|
1379
|
-
? [mapClone(changedValueIds), mapClone(changedValues)]
|
|
1392
|
+
? [mapClone(changedValueIds), mapClone(changedValues, pairClone)]
|
|
1380
1393
|
: [changedValueIds, changedValues];
|
|
1381
|
-
if (
|
|
1394
|
+
if (hasHasValuesListeners) {
|
|
1395
|
+
const hasValuesNow = hasValues();
|
|
1396
|
+
if (hasValuesNow != hadValues) {
|
|
1397
|
+
callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
|
|
1398
|
+
}
|
|
1399
|
+
}
|
|
1400
|
+
if (hasIdOrHasListeners) {
|
|
1382
1401
|
callIdsAndHasListenersIfChanged(
|
|
1383
1402
|
changes[0],
|
|
1384
1403
|
valueIdsListeners[mutator],
|
|
1385
1404
|
hasValueListeners[mutator],
|
|
1386
1405
|
);
|
|
1387
1406
|
}
|
|
1388
|
-
if (
|
|
1407
|
+
if (hasOtherListeners) {
|
|
1389
1408
|
let valuesChanged;
|
|
1390
1409
|
collForEach(changes[1], ([oldValue, newValue], valueId) => {
|
|
1391
1410
|
if (newValue !== oldValue) {
|
|
@@ -1782,6 +1801,7 @@ const createStore = () => {
|
|
|
1782
1801
|
transactions--;
|
|
1783
1802
|
if (transactions == 0) {
|
|
1784
1803
|
transactions = 1;
|
|
1804
|
+
mutating = 1;
|
|
1785
1805
|
callInvalidCellListeners(1);
|
|
1786
1806
|
if (!collIsEmpty(changedCells)) {
|
|
1787
1807
|
callTabularListenersForChanges(1);
|
|
@@ -1790,6 +1810,7 @@ const createStore = () => {
|
|
|
1790
1810
|
if (!collIsEmpty(changedValues)) {
|
|
1791
1811
|
callValuesListenersForChanges(1);
|
|
1792
1812
|
}
|
|
1813
|
+
mutating = 0;
|
|
1793
1814
|
if (doRollback?.(store)) {
|
|
1794
1815
|
collForEach(changedCells, (table, tableId) =>
|
|
1795
1816
|
collForEach(table, (row, rowId) =>
|