@legendapp/state 0.9.2-alpha.9 → 0.10.0-next.2
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/index.cjs +634 -0
- package/index.cjs.map +1 -0
- package/index.d.ts +10 -6
- package/index.esm.mjs +613 -0
- package/index.esm.mjs.map +1 -0
- package/index.js +633 -42
- package/index.js.map +1 -1
- package/internal.cjs +26 -0
- package/internal.cjs.map +1 -0
- package/internal.d.ts +2 -3
- package/internal.esm.mjs +3 -0
- package/internal.esm.mjs.map +1 -0
- package/internal.js +26 -12
- package/internal.js.map +1 -1
- package/{src/persist/local-storage.js → local-storage.cjs} +6 -4
- package/local-storage.cjs.map +1 -0
- package/local-storage.esm.mjs +36 -0
- package/local-storage.esm.mjs.map +1 -0
- package/local-storage.js +39 -17
- package/local-storage.js.map +1 -1
- package/{src/persist/mmkv.js → mmkv.cjs} +9 -6
- package/mmkv.cjs.map +1 -0
- package/mmkv.esm.mjs +50 -0
- package/mmkv.esm.mjs.map +1 -0
- package/mmkv.js +53 -17
- package/mmkv.js.map +1 -1
- package/package.json +34 -10
- package/persist.cjs +195 -0
- package/persist.cjs.map +1 -0
- package/persist.d.ts +6 -0
- package/persist.esm.mjs +188 -0
- package/persist.esm.mjs.map +1 -0
- package/persist.js +195 -0
- package/persist.js.map +1 -0
- package/react.cjs +124 -0
- package/react.cjs.map +1 -0
- package/react.d.ts +1 -3
- package/react.esm.mjs +119 -0
- package/react.esm.mjs.map +1 -0
- package/react.js +123 -20
- package/react.js.map +1 -1
- package/src/globals.d.ts +12 -7
- package/src/helpers.d.ts +5 -0
- package/src/is.d.ts +7 -0
- package/src/observable.d.ts +6 -8
- package/src/observableBatcher.d.ts +11 -2
- package/src/observableComputed.d.ts +2 -2
- package/src/observableInterfaces.d.ts +156 -49
- package/src/on.d.ts +7 -0
- package/src/{configureObservable.d.ts → persist/configureObservablePersistence.d.ts} +2 -3
- package/src/persist/persistHelpers.d.ts +3 -0
- package/src/persist/persistObservable.d.ts +3 -0
- package/src/react/useNewObservable.d.ts +2 -3
- package/src/react/useObservables.d.ts +2 -2
- package/src/state.d.ts +13 -0
- package/src/configureObservable.js +0 -13
- package/src/configureObservable.js.map +0 -1
- package/src/globals.js +0 -71
- package/src/globals.js.map +0 -1
- package/src/observable.js +0 -347
- package/src/observable.js.map +0 -1
- package/src/observableBatcher.js +0 -61
- package/src/observableBatcher.js.map +0 -1
- package/src/observableComputed.js +0 -28
- package/src/observableComputed.js.map +0 -1
- package/src/observableEvent.js +0 -28
- package/src/observableEvent.js.map +0 -1
- package/src/observableFns.d.ts +0 -36
- package/src/observableFns.js +0 -231
- package/src/observableFns.js.map +0 -1
- package/src/observableInterfaces.js +0 -3
- package/src/observableInterfaces.js.map +0 -1
- package/src/observableState.d.ts +0 -29
- package/src/observableState.js +0 -32
- package/src/observableState.js.map +0 -1
- package/src/persist/local-storage.js.map +0 -1
- package/src/persist/mmkv.js.map +0 -1
- package/src/persistObservable.d.ts +0 -3
- package/src/persistObservable.js +0 -120
- package/src/persistObservable.js.map +0 -1
- package/src/primitivePrototypes.d.ts +0 -1
- package/src/primitivePrototypes.js +0 -22
- package/src/primitivePrototypes.js.map +0 -1
- package/src/react/useComputed.d.ts +0 -2
- package/src/react/useComputed.js +0 -16
- package/src/react/useComputed.js.map +0 -1
- package/src/react/useNewObservable.js +0 -33
- package/src/react/useNewObservable.js.map +0 -1
- package/src/react/useObservables.js +0 -114
- package/src/react/useObservables.js.map +0 -1
- package/src/react/usePrimitiveFunctions.d.ts +0 -4
- package/src/react/usePrimitiveFunctions.js +0 -21
- package/src/react/usePrimitiveFunctions.js.map +0 -1
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useObservables = void 0;
|
|
4
|
-
const tools_1 = require("@legendapp/tools");
|
|
5
|
-
const react_1 = require("@legendapp/tools/react");
|
|
6
|
-
const react_2 = require("react");
|
|
7
|
-
const observableFns_1 = require("../observableFns");
|
|
8
|
-
const observableState_1 = require("../observableState");
|
|
9
|
-
function getRawValue(obs) {
|
|
10
|
-
return obs && ((0, observableFns_1.isObservableEvent)(obs) ? undefined : (0, observableFns_1.isObservable)(obs) ? obs.get() : obs);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* A React hook that listens to observables and returns their values.
|
|
14
|
-
*
|
|
15
|
-
* @param fn A function that returns a single observable, an array of observables, or a flat object of observables
|
|
16
|
-
*
|
|
17
|
-
* @see https://www.legendapp.com/dev/state/react/#useobservables
|
|
18
|
-
*/
|
|
19
|
-
function useObservables(fn) {
|
|
20
|
-
const forceRender = (0, react_1.useForceRender)();
|
|
21
|
-
const ref = (0, react_2.useRef)();
|
|
22
|
-
if (!ref.current) {
|
|
23
|
-
ref.current = {
|
|
24
|
-
proxies: [],
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
observableState_1.state.isTracking = true;
|
|
28
|
-
const args = fn();
|
|
29
|
-
const isArr = (0, tools_1.isArray)(args);
|
|
30
|
-
const isObj = !isArr && (0, tools_1.isObject)(args);
|
|
31
|
-
const arr = (isArr ? args : isObj ? Object.values(args) : [args]);
|
|
32
|
-
// Compare to previous args and update listeners if any changed or first mount
|
|
33
|
-
updateListeners(arr, ref.current, forceRender);
|
|
34
|
-
// Reset state
|
|
35
|
-
observableState_1.state.isTracking = false;
|
|
36
|
-
observableState_1.state.trackedProxies = [];
|
|
37
|
-
observableState_1.state.trackedRootProxies = [];
|
|
38
|
-
// Dispose listeners on unmount
|
|
39
|
-
(0, react_2.useEffect)(() => () => {
|
|
40
|
-
if (ref.current.proxies) {
|
|
41
|
-
ref.current.proxies.forEach((p) => p[2].dispose());
|
|
42
|
-
ref.current.proxies = [];
|
|
43
|
-
}
|
|
44
|
-
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
45
|
-
// Return the raw values based on the shape of the arguments
|
|
46
|
-
if (isArr) {
|
|
47
|
-
return arr.map(getRawValue);
|
|
48
|
-
}
|
|
49
|
-
else if (isObj) {
|
|
50
|
-
const ret = {};
|
|
51
|
-
Object.keys(args).forEach((key) => (ret[key] = getRawValue(args[key])));
|
|
52
|
-
return ret;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return getRawValue(args);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.useObservables = useObservables;
|
|
59
|
-
const updateListeners = (ret, saved, onChange) => {
|
|
60
|
-
const tracked = observableState_1.state.trackedProxies;
|
|
61
|
-
const trackedRoots = observableState_1.state.trackedRootProxies;
|
|
62
|
-
// Passing the root of an observable will not trigger any tracking from the proxies, so
|
|
63
|
-
// need to add them to the array of observables to listen
|
|
64
|
-
for (let i = 0; i < ret.length; i++) {
|
|
65
|
-
const r = ret[i];
|
|
66
|
-
if (r && !trackedRoots.includes(r)) {
|
|
67
|
-
const info = observableState_1.state.infos.get(r);
|
|
68
|
-
if (info) {
|
|
69
|
-
tracked.push([r, undefined, false]);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// Unlisten proxies no longer tracked
|
|
74
|
-
for (let i = 0; i < saved.proxies.length; i++) {
|
|
75
|
-
const p = saved.proxies[i];
|
|
76
|
-
let found = false;
|
|
77
|
-
for (let u = 0; u < tracked.length; u++) {
|
|
78
|
-
if (tracked[u][0] === p[0] && tracked[u][1] === p[1]) {
|
|
79
|
-
found = true;
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (!found) {
|
|
84
|
-
saved.proxies.splice(i--, 1);
|
|
85
|
-
p[2].dispose();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// Listen to all tracked proxies
|
|
89
|
-
for (let i = 0; i < tracked.length; i++) {
|
|
90
|
-
const p = tracked[i];
|
|
91
|
-
// Skip arguments that are undefined
|
|
92
|
-
if (p) {
|
|
93
|
-
const [obs, prop, shallow] = p;
|
|
94
|
-
// Skip arguments that are not observables
|
|
95
|
-
if ((0, observableFns_1.isObservable)(obs)) {
|
|
96
|
-
let found = false;
|
|
97
|
-
// If already listening to this observable, can skip it
|
|
98
|
-
for (let u = 0; u < saved.proxies.length; u++) {
|
|
99
|
-
if (saved.proxies[u][0] === obs && saved.proxies[u][1] === prop) {
|
|
100
|
-
found = true;
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (!found) {
|
|
105
|
-
// Listen to the observable, by prop if applicable, and by `changeShallow`
|
|
106
|
-
// if the argument was shallow(...)
|
|
107
|
-
const listener = (prop ? obs.prop(prop) : obs).on(shallow ? 'changeShallow' : 'change', onChange);
|
|
108
|
-
saved.proxies.push([obs, prop, listener]);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
//# sourceMappingURL=useObservables.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useObservables.js","sourceRoot":"","sources":["../../../src/react/useObservables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useAssigner = exports.useGetter = exports.useSetter = void 0;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const observable_1 = require("../observable");
|
|
6
|
-
function usePrimitiveFunction(obs, fn) {
|
|
7
|
-
return (0, react_1.useCallback)(fn(obs), [obs]);
|
|
8
|
-
}
|
|
9
|
-
function useSetter(obs) {
|
|
10
|
-
return usePrimitiveFunction(obs, observable_1.setter);
|
|
11
|
-
}
|
|
12
|
-
exports.useSetter = useSetter;
|
|
13
|
-
function useGetter(obs) {
|
|
14
|
-
return usePrimitiveFunction(obs, observable_1.getter);
|
|
15
|
-
}
|
|
16
|
-
exports.useGetter = useGetter;
|
|
17
|
-
function useAssigner(obs) {
|
|
18
|
-
return usePrimitiveFunction(obs, observable_1.assigner);
|
|
19
|
-
}
|
|
20
|
-
exports.useAssigner = useAssigner;
|
|
21
|
-
//# sourceMappingURL=usePrimitiveFunctions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePrimitiveFunctions.js","sourceRoot":"","sources":["../../../src/react/usePrimitiveFunctions.ts"],"names":[],"mappings":";;;AACA,iCAAoC;AACpC,8CAAyD;AAEzD,SAAS,oBAAoB,CAAI,GAAsB,EAAE,EAAY;IACjE,OAAO,IAAA,mBAAW,EAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,SAAS,CAAI,GAAsB;IAC/C,OAAO,oBAAoB,CAAC,GAAG,EAAE,mBAAM,CAAC,CAAC;AAC7C,CAAC;AAFD,8BAEC;AACD,SAAgB,SAAS,CAAI,GAAsB;IAC/C,OAAO,oBAAoB,CAAC,GAAG,EAAE,mBAAM,CAAC,CAAC;AAC7C,CAAC;AAFD,8BAEC;AACD,SAAgB,WAAW,CAAI,GAAsB;IACjD,OAAO,oBAAoB,CAAC,GAAG,EAAE,qBAAQ,CAAC,CAAC;AAC/C,CAAC;AAFD,kCAEC"}
|