tinybase 4.1.0-beta.1 → 4.1.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +1 -1
- package/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/cjs/checkpoints.cjs +1 -1
- package/lib/cjs/checkpoints.cjs.gz +0 -0
- package/lib/cjs/indexes.cjs +1 -1
- package/lib/cjs/indexes.cjs.gz +0 -0
- package/lib/cjs/metrics.cjs +1 -1
- package/lib/cjs/metrics.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/queries.cjs +1 -1
- package/lib/cjs/queries.cjs.gz +0 -0
- package/lib/cjs/relationships.cjs +1 -1
- package/lib/cjs/relationships.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom.cjs +1 -1
- package/lib/cjs/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/checkpoints.cjs +1 -1
- package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
- package/lib/cjs-es6/indexes.cjs +1 -1
- package/lib/cjs-es6/indexes.cjs.gz +0 -0
- package/lib/cjs-es6/metrics.cjs +1 -1
- package/lib/cjs-es6/metrics.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/queries.cjs +1 -1
- package/lib/cjs-es6/queries.cjs.gz +0 -0
- package/lib/cjs-es6/relationships.cjs +1 -1
- package/lib/cjs-es6/relationships.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/checkpoints.js +6 -6
- package/lib/debug/indexes.js +7 -7
- package/lib/debug/metrics.js +12 -12
- package/lib/debug/persisters/persister-browser.js +10 -19
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +6 -15
- package/lib/debug/persisters/persister-file.js +10 -19
- package/lib/debug/persisters/persister-remote.js +10 -19
- package/lib/debug/persisters/persister-sqlite-wasm.js +6 -15
- package/lib/debug/persisters/persister-sqlite3.js +6 -15
- package/lib/debug/persisters.js +4 -4
- package/lib/debug/queries.js +1 -0
- package/lib/debug/relationships.js +7 -7
- package/lib/debug/store.js +16 -24
- package/lib/debug/tinybase.js +21 -28
- package/lib/debug/tools.js +14 -13
- package/lib/debug/ui-react-dom.js +253 -33
- package/lib/debug/ui-react.js +26 -4
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.js +1 -1
- package/lib/es6/indexes.js.gz +0 -0
- package/lib/es6/metrics.js +1 -1
- package/lib/es6/metrics.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/relationships.js +1 -1
- package/lib/es6/relationships.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom.js +1 -1
- package/lib/es6/ui-react-dom.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/queries.d.ts +167 -0
- package/lib/types/ui-react-dom.d.ts +568 -70
- package/lib/types/ui-react.d.ts +269 -58
- package/lib/types/with-schemas/internal/ui-react.d.ts +32 -22
- package/lib/types/with-schemas/queries.d.ts +185 -0
- package/lib/types/with-schemas/ui-react-dom.d.ts +647 -93
- package/lib/types/with-schemas/ui-react.d.ts +281 -50
- package/lib/ui-react-dom.js +1 -1
- package/lib/ui-react-dom.js.gz +0 -0
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom.js +1 -1
- package/lib/umd/ui-react-dom.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.js +1 -1
- package/lib/umd-es6/indexes.js.gz +0 -0
- package/lib/umd-es6/metrics.js +1 -1
- package/lib/umd-es6/metrics.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/relationships.js +1 -1
- package/lib/umd-es6/relationships.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom.js +1 -1
- package/lib/umd-es6/ui-react-dom.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +17 -17
- package/readme.md +2 -2
package/lib/debug/queries.js
CHANGED
|
@@ -2,6 +2,13 @@ const getTypeOf = (thing) => typeof thing;
|
|
|
2
2
|
const EMPTY_STRING = '';
|
|
3
3
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
4
4
|
|
|
5
|
+
const isUndefined = (thing) => thing == void 0;
|
|
6
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
7
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
8
|
+
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
9
|
+
const isArray = (thing) => Array.isArray(thing);
|
|
10
|
+
const test = (regex, subject) => regex.test(subject);
|
|
11
|
+
|
|
5
12
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
6
13
|
const arrayIsEqual = (array1, array2) =>
|
|
7
14
|
arrayLength(array1) === arrayLength(array2) &&
|
|
@@ -13,13 +20,6 @@ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
|
13
20
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
14
21
|
const arrayShift = (array) => array.shift();
|
|
15
22
|
|
|
16
|
-
const isUndefined = (thing) => thing == void 0;
|
|
17
|
-
const ifNotUndefined = (value, then, otherwise) =>
|
|
18
|
-
isUndefined(value) ? otherwise?.() : then(value);
|
|
19
|
-
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
20
|
-
const isArray = (thing) => Array.isArray(thing);
|
|
21
|
-
const test = (regex, subject) => regex.test(subject);
|
|
22
|
-
|
|
23
23
|
const object = Object;
|
|
24
24
|
const objFreeze = object.freeze;
|
|
25
25
|
|
package/lib/debug/store.js
CHANGED
|
@@ -21,6 +21,16 @@ const VALUES = VALUE + 's';
|
|
|
21
21
|
const VALUE_IDS = VALUE + IDS;
|
|
22
22
|
const id = (key) => EMPTY_STRING + key;
|
|
23
23
|
|
|
24
|
+
const isFiniteNumber = isFinite;
|
|
25
|
+
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
26
|
+
const isUndefined = (thing) => thing == void 0;
|
|
27
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
28
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
29
|
+
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
30
|
+
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
31
|
+
const isArray = (thing) => Array.isArray(thing);
|
|
32
|
+
const test = (regex, subject) => regex.test(subject);
|
|
33
|
+
|
|
24
34
|
const arrayHas = (array, value) => array.includes(value);
|
|
25
35
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
26
36
|
const arrayIsEqual = (array1, array2) =>
|
|
@@ -35,30 +45,6 @@ const arraySlice = (array, start, end) => array.slice(start, end);
|
|
|
35
45
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
36
46
|
const arrayShift = (array) => array.shift();
|
|
37
47
|
|
|
38
|
-
const jsonString = (obj) =>
|
|
39
|
-
JSON.stringify(obj, (_key, value) =>
|
|
40
|
-
isInstanceOf(value, Map)
|
|
41
|
-
? arrayReduce(
|
|
42
|
-
[...value],
|
|
43
|
-
(obj2, [key, value2]) => {
|
|
44
|
-
obj2[key] = value2;
|
|
45
|
-
return obj2;
|
|
46
|
-
},
|
|
47
|
-
{},
|
|
48
|
-
)
|
|
49
|
-
: value,
|
|
50
|
-
);
|
|
51
|
-
const jsonParse = JSON.parse;
|
|
52
|
-
const isFiniteNumber = isFinite;
|
|
53
|
-
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
54
|
-
const isUndefined = (thing) => thing == void 0;
|
|
55
|
-
const ifNotUndefined = (value, then, otherwise) =>
|
|
56
|
-
isUndefined(value) ? otherwise?.() : then(value);
|
|
57
|
-
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
58
|
-
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
59
|
-
const isArray = (thing) => Array.isArray(thing);
|
|
60
|
-
const test = (regex, subject) => regex.test(subject);
|
|
61
|
-
|
|
62
48
|
const object = Object;
|
|
63
49
|
const objIds = object.keys;
|
|
64
50
|
const objFrozen = object.isFrozen;
|
|
@@ -269,6 +255,12 @@ const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
|
|
|
269
255
|
const setOrDelValue = (store, valueId, value) =>
|
|
270
256
|
isUndefined(value) ? store.delValue(valueId) : store.setValue(valueId, value);
|
|
271
257
|
|
|
258
|
+
const jsonString = (obj) =>
|
|
259
|
+
JSON.stringify(obj, (_key, value) =>
|
|
260
|
+
isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
|
|
261
|
+
);
|
|
262
|
+
const jsonParse = JSON.parse;
|
|
263
|
+
|
|
272
264
|
const defaultSorter = (sortKey1, sortKey2) => (sortKey1 < sortKey2 ? -1 : 1);
|
|
273
265
|
|
|
274
266
|
const validate = (obj, validateChild, onInvalidObj) => {
|
package/lib/debug/tinybase.js
CHANGED
|
@@ -28,6 +28,20 @@ const VALUES = VALUE + 's';
|
|
|
28
28
|
const VALUE_IDS = VALUE + IDS;
|
|
29
29
|
const id = (key) => EMPTY_STRING + key;
|
|
30
30
|
|
|
31
|
+
const mathMax = Math.max;
|
|
32
|
+
const mathMin = Math.min;
|
|
33
|
+
const isFiniteNumber = isFinite;
|
|
34
|
+
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
35
|
+
const isUndefined = (thing) => thing == void 0;
|
|
36
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
37
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
38
|
+
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
39
|
+
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
40
|
+
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
41
|
+
const isArray = (thing) => Array.isArray(thing);
|
|
42
|
+
const test = (regex, subject) => regex.test(subject);
|
|
43
|
+
const getUndefined = () => void 0;
|
|
44
|
+
|
|
31
45
|
const arrayHas = (array, value) => array.includes(value);
|
|
32
46
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
33
47
|
const arrayIsEqual = (array1, array2) =>
|
|
@@ -52,34 +66,6 @@ const arrayPop = (array) => array.pop();
|
|
|
52
66
|
const arrayUnshift = (array, ...values) => array.unshift(...values);
|
|
53
67
|
const arrayShift = (array) => array.shift();
|
|
54
68
|
|
|
55
|
-
const jsonString = (obj) =>
|
|
56
|
-
JSON.stringify(obj, (_key, value) =>
|
|
57
|
-
isInstanceOf(value, Map)
|
|
58
|
-
? arrayReduce(
|
|
59
|
-
[...value],
|
|
60
|
-
(obj2, [key, value2]) => {
|
|
61
|
-
obj2[key] = value2;
|
|
62
|
-
return obj2;
|
|
63
|
-
},
|
|
64
|
-
{},
|
|
65
|
-
)
|
|
66
|
-
: value,
|
|
67
|
-
);
|
|
68
|
-
const jsonParse = JSON.parse;
|
|
69
|
-
const mathMax = Math.max;
|
|
70
|
-
const mathMin = Math.min;
|
|
71
|
-
const isFiniteNumber = isFinite;
|
|
72
|
-
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
73
|
-
const isUndefined = (thing) => thing == void 0;
|
|
74
|
-
const ifNotUndefined = (value, then, otherwise) =>
|
|
75
|
-
isUndefined(value) ? otherwise?.() : then(value);
|
|
76
|
-
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
77
|
-
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
78
|
-
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
79
|
-
const isArray = (thing) => Array.isArray(thing);
|
|
80
|
-
const test = (regex, subject) => regex.test(subject);
|
|
81
|
-
const getUndefined = () => void 0;
|
|
82
|
-
|
|
83
69
|
const object = Object;
|
|
84
70
|
const objIds = object.keys;
|
|
85
71
|
const objFrozen = object.isFrozen;
|
|
@@ -1563,6 +1549,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1563
1549
|
objMap(
|
|
1564
1550
|
{
|
|
1565
1551
|
[TABLE]: [1, 1],
|
|
1552
|
+
[TABLE + CELL_IDS]: [0, 1],
|
|
1566
1553
|
[ROW_IDS]: [0, 1],
|
|
1567
1554
|
[SORTED_ROW_IDS]: [0, 5],
|
|
1568
1555
|
[ROW]: [1, 2],
|
|
@@ -1780,6 +1767,12 @@ const pairNewMap = () => [mapNew(), mapNew()];
|
|
|
1780
1767
|
const pairClone = (array) => [...array];
|
|
1781
1768
|
const pairIsEqual = ([entry1, entry2]) => entry1 === entry2;
|
|
1782
1769
|
|
|
1770
|
+
const jsonString = (obj) =>
|
|
1771
|
+
JSON.stringify(obj, (_key, value) =>
|
|
1772
|
+
isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
|
|
1773
|
+
);
|
|
1774
|
+
const jsonParse = JSON.parse;
|
|
1775
|
+
|
|
1783
1776
|
const validate = (obj, validateChild, onInvalidObj) => {
|
|
1784
1777
|
if (isUndefined(obj) || !isObject(obj) || objIsEmpty(obj) || objFrozen(obj)) {
|
|
1785
1778
|
onInvalidObj?.();
|
package/lib/debug/tools.js
CHANGED
|
@@ -23,19 +23,6 @@ const VALUE = 'Value';
|
|
|
23
23
|
const VALUES = VALUE + 's';
|
|
24
24
|
const VALUE_IDS = VALUE + IDS;
|
|
25
25
|
|
|
26
|
-
const arrayEvery = (array, cb) => array.every(cb);
|
|
27
|
-
const arraySort = (array, sorter) => array.sort(sorter);
|
|
28
|
-
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
29
|
-
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
30
|
-
const arrayMap = (array, cb) => array.map(cb);
|
|
31
|
-
const arrayLength = (array) => array.length;
|
|
32
|
-
const arrayFilter = (array, cb) => array.filter(cb);
|
|
33
|
-
const arrayPush = (array, ...values) => array.push(...values);
|
|
34
|
-
const arrayPop = (array) => array.pop();
|
|
35
|
-
const arrayUnshift = (array, ...values) => array.unshift(...values);
|
|
36
|
-
const arrayShift = (array) => array.shift();
|
|
37
|
-
|
|
38
|
-
const jsonParse = JSON.parse;
|
|
39
26
|
const isFiniteNumber = isFinite;
|
|
40
27
|
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
41
28
|
const isUndefined = (thing) => thing == void 0;
|
|
@@ -50,6 +37,18 @@ const getCellOrValueType = (cell) => {
|
|
|
50
37
|
: void 0;
|
|
51
38
|
};
|
|
52
39
|
|
|
40
|
+
const arrayEvery = (array, cb) => array.every(cb);
|
|
41
|
+
const arraySort = (array, sorter) => array.sort(sorter);
|
|
42
|
+
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
43
|
+
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
44
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
45
|
+
const arrayLength = (array) => array.length;
|
|
46
|
+
const arrayFilter = (array, cb) => array.filter(cb);
|
|
47
|
+
const arrayPush = (array, ...values) => array.push(...values);
|
|
48
|
+
const arrayPop = (array) => array.pop();
|
|
49
|
+
const arrayUnshift = (array, ...values) => array.unshift(...values);
|
|
50
|
+
const arrayShift = (array) => array.shift();
|
|
51
|
+
|
|
53
52
|
const object = Object;
|
|
54
53
|
const objIds = object.keys;
|
|
55
54
|
const objFreeze = object.freeze;
|
|
@@ -2803,6 +2802,8 @@ const getStoreApi = (tablesSchema, valuesSchema, module) => {
|
|
|
2803
2802
|
];
|
|
2804
2803
|
};
|
|
2805
2804
|
|
|
2805
|
+
const jsonParse = JSON.parse;
|
|
2806
|
+
|
|
2806
2807
|
const prettierConfig = {
|
|
2807
2808
|
parser: 'typescript',
|
|
2808
2809
|
singleQuote: true,
|
|
@@ -1,26 +1,60 @@
|
|
|
1
1
|
import {
|
|
2
|
+
CellView,
|
|
2
3
|
useRowIds,
|
|
4
|
+
useTableCellIds,
|
|
3
5
|
useSortedRowIds,
|
|
4
6
|
useValueIds,
|
|
5
7
|
ValueView,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
ResultCellView,
|
|
9
|
+
useResultRowIds,
|
|
10
|
+
useResultTableCellIds,
|
|
11
|
+
useResultSortedRowIds,
|
|
12
|
+
useCell,
|
|
13
|
+
useSetCellCallback,
|
|
14
|
+
useValue,
|
|
15
|
+
useSetValueCallback,
|
|
8
16
|
} from './ui-react';
|
|
9
17
|
import React from 'react';
|
|
10
18
|
|
|
19
|
+
const getTypeOf = (thing) => typeof thing;
|
|
11
20
|
const EMPTY_STRING = '';
|
|
21
|
+
const STRING = getTypeOf(EMPTY_STRING);
|
|
22
|
+
const BOOLEAN = getTypeOf(true);
|
|
23
|
+
const NUMBER = getTypeOf(0);
|
|
24
|
+
const CELL = 'Cell';
|
|
12
25
|
const VALUE = 'Value';
|
|
26
|
+
const CURRENT_TARGET = 'currentTarget';
|
|
27
|
+
const _VALUE = 'value';
|
|
28
|
+
|
|
29
|
+
const isFiniteNumber = isFinite;
|
|
30
|
+
const isUndefined = (thing) => thing == void 0;
|
|
31
|
+
const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
32
|
+
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
33
|
+
const isArray = (thing) => Array.isArray(thing);
|
|
34
|
+
|
|
35
|
+
const getCellOrValueType = (cell) => {
|
|
36
|
+
const type = getTypeOf(cell);
|
|
37
|
+
return isTypeStringOrBoolean(type) || (type == NUMBER && isFiniteNumber(cell))
|
|
38
|
+
? type
|
|
39
|
+
: void 0;
|
|
40
|
+
};
|
|
41
|
+
const getTypeCase = (type, stringCase, numberCase, booleanCase) =>
|
|
42
|
+
type == STRING ? stringCase : type == NUMBER ? numberCase : booleanCase;
|
|
13
43
|
|
|
14
44
|
const arrayMap = (array, cb) => array.map(cb);
|
|
15
45
|
|
|
16
|
-
const
|
|
46
|
+
const object = Object;
|
|
47
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
48
|
+
const objMap = (obj, cb) =>
|
|
49
|
+
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
17
50
|
|
|
18
51
|
const {createContext, useContext} = React;
|
|
19
52
|
createContext([]);
|
|
20
53
|
const getProps = (getProps2, ...ids) =>
|
|
21
54
|
isUndefined(getProps2) ? {} : getProps2(...ids);
|
|
22
55
|
|
|
23
|
-
const {createElement, useCallback, useState} = React;
|
|
56
|
+
const {createElement, useCallback, useMemo, useState} = React;
|
|
57
|
+
const EDITABLE = 'editable';
|
|
24
58
|
const useCallbackOrUndefined = (callback, deps, test) => {
|
|
25
59
|
const returnCallback = useCallback(callback, deps);
|
|
26
60
|
return test ? returnCallback : void 0;
|
|
@@ -50,20 +84,36 @@ const HtmlHeaderTh = ({
|
|
|
50
84
|
label,
|
|
51
85
|
);
|
|
52
86
|
const HtmlTable = ({
|
|
53
|
-
tableId,
|
|
54
|
-
rowIds,
|
|
55
|
-
store,
|
|
56
|
-
cellComponent: Cell = CellView,
|
|
57
|
-
getCellComponentProps,
|
|
58
87
|
className,
|
|
59
88
|
headerRow,
|
|
60
89
|
idColumn,
|
|
61
|
-
|
|
90
|
+
customCells,
|
|
91
|
+
storeTableIdOrQueriesQueryId,
|
|
92
|
+
defaultCellComponent,
|
|
93
|
+
rowIds,
|
|
94
|
+
defaultCellIds,
|
|
62
95
|
sorting,
|
|
63
96
|
onHeaderThClick,
|
|
64
97
|
}) => {
|
|
65
|
-
const
|
|
66
|
-
|
|
98
|
+
const customCellConfigurations = useMemo(() => {
|
|
99
|
+
const cellIds = customCells ?? defaultCellIds;
|
|
100
|
+
return objNew(
|
|
101
|
+
objMap(
|
|
102
|
+
isArray(cellIds)
|
|
103
|
+
? objNew(arrayMap(cellIds, (cellId) => [cellId, cellId]))
|
|
104
|
+
: cellIds,
|
|
105
|
+
(labelOrCustomCell, cellId) => [
|
|
106
|
+
cellId,
|
|
107
|
+
{
|
|
108
|
+
...{label: cellId},
|
|
109
|
+
...(isString(labelOrCustomCell)
|
|
110
|
+
? {label: labelOrCustomCell}
|
|
111
|
+
: labelOrCustomCell),
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
),
|
|
115
|
+
);
|
|
116
|
+
}, [customCells, defaultCellIds]);
|
|
67
117
|
return /* @__PURE__ */ createElement(
|
|
68
118
|
'table',
|
|
69
119
|
{className},
|
|
@@ -82,10 +132,11 @@ const HtmlTable = ({
|
|
|
82
132
|
label: 'Id',
|
|
83
133
|
onClick: onHeaderThClick,
|
|
84
134
|
}),
|
|
85
|
-
|
|
135
|
+
objMap(customCellConfigurations, ({label}, cellId) =>
|
|
86
136
|
/* @__PURE__ */ createElement(HtmlHeaderTh, {
|
|
87
137
|
key: cellId,
|
|
88
138
|
cellId,
|
|
139
|
+
label,
|
|
89
140
|
sorting,
|
|
90
141
|
onClick: onHeaderThClick,
|
|
91
142
|
}),
|
|
@@ -102,30 +153,125 @@ const HtmlTable = ({
|
|
|
102
153
|
idColumn === false
|
|
103
154
|
? null
|
|
104
155
|
: /* @__PURE__ */ createElement('th', null, rowId),
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
cellId,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
156
|
+
objMap(
|
|
157
|
+
customCellConfigurations,
|
|
158
|
+
(
|
|
159
|
+
{component: CellView2 = defaultCellComponent, getComponentProps},
|
|
160
|
+
cellId,
|
|
161
|
+
) =>
|
|
162
|
+
/* @__PURE__ */ createElement(
|
|
163
|
+
'td',
|
|
164
|
+
{key: cellId},
|
|
165
|
+
/* @__PURE__ */ createElement(CellView2, {
|
|
166
|
+
...getProps(getComponentProps, rowId, cellId),
|
|
167
|
+
...storeTableIdOrQueriesQueryId,
|
|
168
|
+
rowId,
|
|
169
|
+
cellId,
|
|
170
|
+
}),
|
|
171
|
+
),
|
|
117
172
|
),
|
|
118
173
|
),
|
|
119
174
|
),
|
|
120
175
|
),
|
|
121
176
|
);
|
|
122
177
|
};
|
|
123
|
-
const
|
|
178
|
+
const EditableThing = ({thing, onThingChange, className}) => {
|
|
179
|
+
const [thingType, setThingType] = useState();
|
|
180
|
+
const [currentThing, setCurrentThing] = useState();
|
|
181
|
+
const [stringThing, setStringThing] = useState();
|
|
182
|
+
const [numberThing, setNumberThing] = useState();
|
|
183
|
+
const [booleanThing, setBooleanThing] = useState();
|
|
184
|
+
if (currentThing !== thing) {
|
|
185
|
+
setThingType(getCellOrValueType(thing));
|
|
186
|
+
setCurrentThing(thing);
|
|
187
|
+
setStringThing(String(thing));
|
|
188
|
+
setNumberThing(Number(thing) || 0);
|
|
189
|
+
setBooleanThing(Boolean(thing));
|
|
190
|
+
}
|
|
191
|
+
const handleThingChange = useCallback(
|
|
192
|
+
(thing2, setTypedThing) => {
|
|
193
|
+
setTypedThing(thing2);
|
|
194
|
+
setCurrentThing(thing2);
|
|
195
|
+
onThingChange(thing2);
|
|
196
|
+
},
|
|
197
|
+
[onThingChange],
|
|
198
|
+
);
|
|
199
|
+
return /* @__PURE__ */ createElement(
|
|
200
|
+
'div',
|
|
201
|
+
{className},
|
|
202
|
+
/* @__PURE__ */ createElement(
|
|
203
|
+
'button',
|
|
204
|
+
{
|
|
205
|
+
type: 'button',
|
|
206
|
+
className: thingType,
|
|
207
|
+
onClick: useCallback(() => {
|
|
208
|
+
const nextType = getTypeCase(thingType, NUMBER, BOOLEAN, STRING);
|
|
209
|
+
const thing2 = getTypeCase(
|
|
210
|
+
nextType,
|
|
211
|
+
stringThing,
|
|
212
|
+
numberThing,
|
|
213
|
+
booleanThing,
|
|
214
|
+
);
|
|
215
|
+
setThingType(nextType);
|
|
216
|
+
setCurrentThing(thing2);
|
|
217
|
+
onThingChange(thing2);
|
|
218
|
+
}, [onThingChange, stringThing, numberThing, booleanThing, thingType]),
|
|
219
|
+
},
|
|
220
|
+
thingType,
|
|
221
|
+
),
|
|
222
|
+
getTypeCase(
|
|
223
|
+
thingType,
|
|
224
|
+
/* @__PURE__ */ createElement('input', {
|
|
225
|
+
key: thingType,
|
|
226
|
+
value: stringThing,
|
|
227
|
+
onChange: useCallback(
|
|
228
|
+
(event) =>
|
|
229
|
+
handleThingChange(
|
|
230
|
+
String(event[CURRENT_TARGET][_VALUE]),
|
|
231
|
+
setStringThing,
|
|
232
|
+
),
|
|
233
|
+
[handleThingChange],
|
|
234
|
+
),
|
|
235
|
+
}),
|
|
236
|
+
/* @__PURE__ */ createElement('input', {
|
|
237
|
+
key: thingType,
|
|
238
|
+
type: 'number',
|
|
239
|
+
value: numberThing,
|
|
240
|
+
onChange: useCallback(
|
|
241
|
+
(event) =>
|
|
242
|
+
handleThingChange(
|
|
243
|
+
Number(event[CURRENT_TARGET][_VALUE] || 0),
|
|
244
|
+
setNumberThing,
|
|
245
|
+
),
|
|
246
|
+
[handleThingChange],
|
|
247
|
+
),
|
|
248
|
+
}),
|
|
249
|
+
/* @__PURE__ */ createElement('input', {
|
|
250
|
+
key: thingType,
|
|
251
|
+
type: 'checkbox',
|
|
252
|
+
checked: booleanThing,
|
|
253
|
+
onChange: useCallback(
|
|
254
|
+
(event) =>
|
|
255
|
+
handleThingChange(
|
|
256
|
+
Boolean(event[CURRENT_TARGET].checked),
|
|
257
|
+
setBooleanThing,
|
|
258
|
+
),
|
|
259
|
+
[handleThingChange],
|
|
260
|
+
),
|
|
261
|
+
}),
|
|
262
|
+
),
|
|
263
|
+
);
|
|
264
|
+
};
|
|
265
|
+
const TableInHtmlTable = ({tableId, store, editable, ...props}) =>
|
|
124
266
|
/* @__PURE__ */ createElement(HtmlTable, {
|
|
125
267
|
...props,
|
|
126
|
-
|
|
127
|
-
|
|
268
|
+
storeTableIdOrQueriesQueryId: useMemo(
|
|
269
|
+
() => ({store, tableId}),
|
|
270
|
+
[store, tableId],
|
|
271
|
+
),
|
|
272
|
+
defaultCellComponent: editable ? EditableCellView : CellView,
|
|
128
273
|
rowIds: useRowIds(tableId, store),
|
|
274
|
+
defaultCellIds: useTableCellIds(tableId, store),
|
|
129
275
|
});
|
|
130
276
|
const SortedTableInHtmlTable = ({
|
|
131
277
|
tableId,
|
|
@@ -134,6 +280,7 @@ const SortedTableInHtmlTable = ({
|
|
|
134
280
|
offset,
|
|
135
281
|
limit,
|
|
136
282
|
store,
|
|
283
|
+
editable,
|
|
137
284
|
sortOnClick,
|
|
138
285
|
...props
|
|
139
286
|
}) => {
|
|
@@ -146,16 +293,21 @@ const SortedTableInHtmlTable = ({
|
|
|
146
293
|
);
|
|
147
294
|
return /* @__PURE__ */ createElement(HtmlTable, {
|
|
148
295
|
...props,
|
|
149
|
-
|
|
150
|
-
|
|
296
|
+
storeTableIdOrQueriesQueryId: useMemo(
|
|
297
|
+
() => ({store, tableId}),
|
|
298
|
+
[store, tableId],
|
|
299
|
+
),
|
|
300
|
+
defaultCellComponent: editable ? EditableCellView : CellView,
|
|
151
301
|
rowIds: useSortedRowIds(tableId, ...sorting, offset, limit, store),
|
|
302
|
+
defaultCellIds: useTableCellIds(tableId, store),
|
|
152
303
|
sorting,
|
|
153
304
|
onHeaderThClick: handleHeaderThClick,
|
|
154
305
|
});
|
|
155
306
|
};
|
|
156
307
|
const ValuesInHtmlTable = ({
|
|
157
308
|
store,
|
|
158
|
-
|
|
309
|
+
editable = false,
|
|
310
|
+
valueComponent: Value2 = editable ? EditableValueView : ValueView,
|
|
159
311
|
getValueComponentProps,
|
|
160
312
|
className,
|
|
161
313
|
headerRow,
|
|
@@ -191,7 +343,7 @@ const ValuesInHtmlTable = ({
|
|
|
191
343
|
/* @__PURE__ */ createElement(
|
|
192
344
|
'td',
|
|
193
345
|
null,
|
|
194
|
-
/* @__PURE__ */ createElement(
|
|
346
|
+
/* @__PURE__ */ createElement(Value2, {
|
|
195
347
|
...getProps(getValueComponentProps, valueId),
|
|
196
348
|
valueId,
|
|
197
349
|
store,
|
|
@@ -201,5 +353,73 @@ const ValuesInHtmlTable = ({
|
|
|
201
353
|
),
|
|
202
354
|
),
|
|
203
355
|
);
|
|
356
|
+
const ResultTableInHtmlTable = ({queryId, queries, ...props}) =>
|
|
357
|
+
/* @__PURE__ */ createElement(HtmlTable, {
|
|
358
|
+
...props,
|
|
359
|
+
storeTableIdOrQueriesQueryId: useMemo(
|
|
360
|
+
() => ({queries, queryId}),
|
|
361
|
+
[queries, queryId],
|
|
362
|
+
),
|
|
363
|
+
defaultCellComponent: ResultCellView,
|
|
364
|
+
rowIds: useResultRowIds(queryId, queries),
|
|
365
|
+
defaultCellIds: useResultTableCellIds(queryId, queries),
|
|
366
|
+
});
|
|
367
|
+
const ResultSortedTableInHtmlTable = ({
|
|
368
|
+
queryId,
|
|
369
|
+
cellId,
|
|
370
|
+
descending,
|
|
371
|
+
offset,
|
|
372
|
+
limit,
|
|
373
|
+
queries,
|
|
374
|
+
sortOnClick,
|
|
375
|
+
...props
|
|
376
|
+
}) => {
|
|
377
|
+
const [sorting, setSorting] = useState([cellId, descending ? true : false]);
|
|
378
|
+
const handleHeaderThClick = useCallbackOrUndefined(
|
|
379
|
+
(cellId2) =>
|
|
380
|
+
setSorting([cellId2, cellId2 == sorting[0] ? !sorting[1] : false]),
|
|
381
|
+
[sorting],
|
|
382
|
+
sortOnClick,
|
|
383
|
+
);
|
|
384
|
+
return /* @__PURE__ */ createElement(HtmlTable, {
|
|
385
|
+
...props,
|
|
386
|
+
storeTableIdOrQueriesQueryId: useMemo(
|
|
387
|
+
() => ({queries, queryId}),
|
|
388
|
+
[queries, queryId],
|
|
389
|
+
),
|
|
390
|
+
defaultCellComponent: ResultCellView,
|
|
391
|
+
rowIds: useResultSortedRowIds(queryId, ...sorting, offset, limit, queries),
|
|
392
|
+
defaultCellIds: useResultTableCellIds(queryId, queries),
|
|
393
|
+
sorting,
|
|
394
|
+
onHeaderThClick: handleHeaderThClick,
|
|
395
|
+
});
|
|
396
|
+
};
|
|
397
|
+
const EditableCellView = ({tableId, rowId, cellId, store, className}) =>
|
|
398
|
+
/* @__PURE__ */ createElement(EditableThing, {
|
|
399
|
+
thing: useCell(tableId, rowId, cellId, store),
|
|
400
|
+
onThingChange: useSetCellCallback(
|
|
401
|
+
tableId,
|
|
402
|
+
rowId,
|
|
403
|
+
cellId,
|
|
404
|
+
(cell) => cell,
|
|
405
|
+
[],
|
|
406
|
+
store,
|
|
407
|
+
),
|
|
408
|
+
className: className ?? EDITABLE + CELL,
|
|
409
|
+
});
|
|
410
|
+
const EditableValueView = ({valueId, store, className}) =>
|
|
411
|
+
/* @__PURE__ */ createElement(EditableThing, {
|
|
412
|
+
thing: useValue(valueId, store),
|
|
413
|
+
onThingChange: useSetValueCallback(valueId, (value) => value, [], store),
|
|
414
|
+
className: className ?? EDITABLE + VALUE,
|
|
415
|
+
});
|
|
204
416
|
|
|
205
|
-
export {
|
|
417
|
+
export {
|
|
418
|
+
EditableCellView,
|
|
419
|
+
EditableValueView,
|
|
420
|
+
ResultSortedTableInHtmlTable,
|
|
421
|
+
ResultTableInHtmlTable,
|
|
422
|
+
SortedTableInHtmlTable,
|
|
423
|
+
TableInHtmlTable,
|
|
424
|
+
ValuesInHtmlTable,
|
|
425
|
+
};
|
package/lib/debug/ui-react.js
CHANGED
|
@@ -19,10 +19,6 @@ const VALUE = 'Value';
|
|
|
19
19
|
const VALUES = VALUE + 's';
|
|
20
20
|
const VALUE_IDS = VALUE + IDS;
|
|
21
21
|
|
|
22
|
-
const arrayMap = (array, cb) => array.map(cb);
|
|
23
|
-
const arrayLength = (array) => array.length;
|
|
24
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
25
|
-
|
|
26
22
|
const isUndefined = (thing) => thing == void 0;
|
|
27
23
|
const ifNotUndefined = (value, then, otherwise) =>
|
|
28
24
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
@@ -30,6 +26,10 @@ const isString = (thing) => getTypeOf(thing) == STRING;
|
|
|
30
26
|
const isArray = (thing) => Array.isArray(thing);
|
|
31
27
|
const getUndefined = () => void 0;
|
|
32
28
|
|
|
29
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
30
|
+
const arrayLength = (array) => array.length;
|
|
31
|
+
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
32
|
+
|
|
33
33
|
const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
|
|
34
34
|
|
|
35
35
|
const {createContext, useContext} = React;
|
|
@@ -727,6 +727,13 @@ const useResultRowIds = (queryId, queriesOrQueriesId) =>
|
|
|
727
727
|
[],
|
|
728
728
|
[queryId],
|
|
729
729
|
);
|
|
730
|
+
const useResultTableCellIds = (queryId, queriesOrQueriesId) =>
|
|
731
|
+
useListenable(
|
|
732
|
+
'ResultTableCellIds',
|
|
733
|
+
useQueriesOrQueriesId(queriesOrQueriesId),
|
|
734
|
+
[],
|
|
735
|
+
[queryId],
|
|
736
|
+
);
|
|
730
737
|
const useResultSortedRowIds = (
|
|
731
738
|
queryId,
|
|
732
739
|
cellId,
|
|
@@ -774,6 +781,19 @@ const useResultTableListener = (
|
|
|
774
781
|
listenerDeps,
|
|
775
782
|
[queryId],
|
|
776
783
|
);
|
|
784
|
+
const useResultTableCellIdsListener = (
|
|
785
|
+
queryId,
|
|
786
|
+
listener,
|
|
787
|
+
listenerDeps,
|
|
788
|
+
queriesOrQueriesId,
|
|
789
|
+
) =>
|
|
790
|
+
useListener(
|
|
791
|
+
'ResultTableCellIds',
|
|
792
|
+
useQueriesOrQueriesId(queriesOrQueriesId),
|
|
793
|
+
listener,
|
|
794
|
+
listenerDeps,
|
|
795
|
+
[queryId],
|
|
796
|
+
);
|
|
777
797
|
const useResultRowIdsListener = (
|
|
778
798
|
queryId,
|
|
779
799
|
listener,
|
|
@@ -1487,6 +1507,8 @@ export {
|
|
|
1487
1507
|
useResultSortedRowIds,
|
|
1488
1508
|
useResultSortedRowIdsListener,
|
|
1489
1509
|
useResultTable,
|
|
1510
|
+
useResultTableCellIds,
|
|
1511
|
+
useResultTableCellIdsListener,
|
|
1490
1512
|
useResultTableListener,
|
|
1491
1513
|
useRow,
|
|
1492
1514
|
useRowIds,
|
package/lib/es6/checkpoints.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=(e,n)=>e.includes(n),
|
|
1
|
+
const e=e=>null==e,n=(n,l,t)=>e(n)?null==t?void 0:t():l(n),l=(e,n)=>e.includes(n),t=(e,n)=>e.forEach(n),r=e=>e.length,o=e=>0==r(e),s=(e,...n)=>e.push(...n),u=e=>e.pop(),i=e=>e.shift(),d=Object.freeze,a=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},c=n=>e(n)||0==(e=>e.size)(n),h=(e,n)=>null==e?void 0:e.forEach(n),v=(e,n)=>null==e?void 0:e.delete(n),p=e=>new Map(e),C=(e,n)=>null==e?void 0:e.get(n),f=(n,l,t)=>e(t)?(v(n,l),n):null==n?void 0:n.set(l,t),g=(e,n,l)=>(a(e,n)||f(e,n,l()),C(e,n)),k=(e,l,t,o,s=0)=>n((t?g:C)(e,l[s],s>r(l)-2?t:p),(n=>{if(s>r(l)-2)return(null==o?void 0:o(n))&&f(e,l[s]),n;const u=k(n,l,t,o,s+1);return c(n)&&f(e,l[s]),u})),L=n=>new Set(Array.isArray(n)||e(n)?n:[n]),w=/^\d+$/,S=(S=>{const y=new WeakMap;return S=>(y.has(S)||y.set(S,(S=>{let y,z,E,V=100,A=p(),I=p(),M=1;const b=p(),j=p(),[x,B,F]=(l=>{let o;const[u,d]=(()=>{const e=[];let n=0;return[l=>{var t;return null!=(t=l?i(e):null)?t:""+n++},n=>{w.test(n)&&r(e)<1e3&&s(e,n)}]})(),a=p();return[(e,n,l,t=[],r=(()=>[]))=>{null!=o||(o=_);const s=u(1);var i,d;return f(a,s,[e,n,l,t,r]),d=s,null==(i=k(n,null!=l?l:[""],L))||i.add(d),s},(e,n,...l)=>t(((e,n=[""])=>{const l=[],o=(e,u)=>u==r(n)?s(l,e):null===n[u]?h(e,(e=>o(e,u+1))):t([n[u],null],(n=>o(C(e,n),u+1)));return o(e,0),l})(e,n),(e=>h(e,(e=>C(a,e)[0](o,...null!=n?n:[],...l))))),e=>n(C(a,e),(([,n,l])=>(k(n,null!=l?l:[""],void 0,(n=>(v(n,e),c(n)?1:0))),f(a,e),d(e),l))),l=>n(C(a,l),(([n,,l=[],s,u])=>{const i=(...d)=>{var a,c;const h=r(d);h==r(l)?n(o,...d,...u(d)):e(l[h])?t(null!=(c=null==(a=s[h])?void 0:a.call(s,...d))?c:[],(e=>i(...d,e))):i(...d,l[h])};i()}))]})(),O=p(),T=p(),W=[],$=[],m=(n,l)=>{M=0,S.transaction((()=>{const[t,r]=C(O,l);h(t,((l,t)=>h(l,((l,r)=>h(l,((l,o)=>((n,l,t,r,o)=>e(o)?n.delCell(l,t,r,!0):n.setCell(l,t,r,o))(S,t,r,o,l[n]))))))),h(r,((l,t)=>((n,l,t)=>e(t)?n.delValue(l):n.setValue(l,t))(S,t,l[n])))})),M=1},q=e=>{f(O,e),f(T,e),B(j,[e])},D=(e,n)=>t(((e,n)=>e.splice(0,n))(e,null!=n?n:r(e)),q),G=()=>D(W,r(W)-V),H=()=>n(y,(()=>{s(W,y),G(),D($),y=void 0,E=1})),J=()=>{y=u(W),E=1},K=S.addCellListener(null,null,null,((e,n,l,t,r,o)=>{if(M){H();const e=g(A,n,p),s=g(e,l,p),u=g(s,t,(()=>[o,void 0]));u[1]=r,u[0]===r&&c(f(s,t))&&c(f(e,l))&&c(f(A,n))&&J(),U()}})),N=S.addValueListener(null,((e,n,l,t)=>{if(M){H();const e=g(I,n,(()=>[t,void 0]));e[1]=l,e[0]===l&&c(f(I,n))&&J(),U()}})),P=(n="")=>(e(y)&&(y=""+z++,f(O,y,[A,I]),Y(y,n),A=p(),I=p(),E=1),y),Q=()=>{o(W)||(((e,...n)=>{e.unshift(...n)})($,P()),m(0,y),y=u(W),E=1)},R=()=>{o($)||(s(W,y),y=i($),m(1,y),E=1)},U=()=>{E&&(B(b),E=0)},X=e=>{const n=P(e);return U(),n},Y=(e,n)=>(Z(e)&&C(T,e)!==n&&(f(T,e,n),B(j,[e])),_),Z=e=>a(O,e),_={setSize:e=>(V=e,G(),_),addCheckpoint:X,setCheckpoint:Y,getStore:()=>S,getCheckpointIds:()=>[[...W],y,[...$]],forEachCheckpoint:e=>{return n=e,h(T,((e,l)=>n(l,e)));var n},hasCheckpoint:Z,getCheckpoint:e=>C(T,e),goBackward:()=>(Q(),U(),_),goForward:()=>(R(),U(),_),goTo:n=>{const t=l(W,n)?Q:l($,n)?R:null;for(;!e(t)&&n!=y;)t();return U(),_},addCheckpointIdsListener:e=>x(e,b),addCheckpointListener:(e,n)=>x(n,j,[e]),delListener:e=>(F(e),_),clear:()=>(D(W),D($),e(y)||q(y),y=void 0,z=0,X(),_),destroy:()=>{S.delListener(K),S.delListener(N)},getListenerStats:()=>({})};return d(_.clear())})(S)),y.get(S))})();export{S as createCheckpoints};
|
|
Binary file
|