@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.
Files changed (93) hide show
  1. package/index.cjs +634 -0
  2. package/index.cjs.map +1 -0
  3. package/index.d.ts +10 -6
  4. package/index.esm.mjs +613 -0
  5. package/index.esm.mjs.map +1 -0
  6. package/index.js +633 -42
  7. package/index.js.map +1 -1
  8. package/internal.cjs +26 -0
  9. package/internal.cjs.map +1 -0
  10. package/internal.d.ts +2 -3
  11. package/internal.esm.mjs +3 -0
  12. package/internal.esm.mjs.map +1 -0
  13. package/internal.js +26 -12
  14. package/internal.js.map +1 -1
  15. package/{src/persist/local-storage.js → local-storage.cjs} +6 -4
  16. package/local-storage.cjs.map +1 -0
  17. package/local-storage.esm.mjs +36 -0
  18. package/local-storage.esm.mjs.map +1 -0
  19. package/local-storage.js +39 -17
  20. package/local-storage.js.map +1 -1
  21. package/{src/persist/mmkv.js → mmkv.cjs} +9 -6
  22. package/mmkv.cjs.map +1 -0
  23. package/mmkv.esm.mjs +50 -0
  24. package/mmkv.esm.mjs.map +1 -0
  25. package/mmkv.js +53 -17
  26. package/mmkv.js.map +1 -1
  27. package/package.json +34 -10
  28. package/persist.cjs +195 -0
  29. package/persist.cjs.map +1 -0
  30. package/persist.d.ts +6 -0
  31. package/persist.esm.mjs +188 -0
  32. package/persist.esm.mjs.map +1 -0
  33. package/persist.js +195 -0
  34. package/persist.js.map +1 -0
  35. package/react.cjs +124 -0
  36. package/react.cjs.map +1 -0
  37. package/react.d.ts +1 -3
  38. package/react.esm.mjs +119 -0
  39. package/react.esm.mjs.map +1 -0
  40. package/react.js +123 -20
  41. package/react.js.map +1 -1
  42. package/src/globals.d.ts +12 -7
  43. package/src/helpers.d.ts +5 -0
  44. package/src/is.d.ts +7 -0
  45. package/src/observable.d.ts +6 -8
  46. package/src/observableBatcher.d.ts +11 -2
  47. package/src/observableComputed.d.ts +2 -2
  48. package/src/observableInterfaces.d.ts +156 -49
  49. package/src/on.d.ts +7 -0
  50. package/src/{configureObservable.d.ts → persist/configureObservablePersistence.d.ts} +2 -3
  51. package/src/persist/persistHelpers.d.ts +3 -0
  52. package/src/persist/persistObservable.d.ts +3 -0
  53. package/src/react/useNewObservable.d.ts +2 -3
  54. package/src/react/useObservables.d.ts +2 -2
  55. package/src/state.d.ts +13 -0
  56. package/src/configureObservable.js +0 -13
  57. package/src/configureObservable.js.map +0 -1
  58. package/src/globals.js +0 -71
  59. package/src/globals.js.map +0 -1
  60. package/src/observable.js +0 -347
  61. package/src/observable.js.map +0 -1
  62. package/src/observableBatcher.js +0 -61
  63. package/src/observableBatcher.js.map +0 -1
  64. package/src/observableComputed.js +0 -28
  65. package/src/observableComputed.js.map +0 -1
  66. package/src/observableEvent.js +0 -28
  67. package/src/observableEvent.js.map +0 -1
  68. package/src/observableFns.d.ts +0 -36
  69. package/src/observableFns.js +0 -231
  70. package/src/observableFns.js.map +0 -1
  71. package/src/observableInterfaces.js +0 -3
  72. package/src/observableInterfaces.js.map +0 -1
  73. package/src/observableState.d.ts +0 -29
  74. package/src/observableState.js +0 -32
  75. package/src/observableState.js.map +0 -1
  76. package/src/persist/local-storage.js.map +0 -1
  77. package/src/persist/mmkv.js.map +0 -1
  78. package/src/persistObservable.d.ts +0 -3
  79. package/src/persistObservable.js +0 -120
  80. package/src/persistObservable.js.map +0 -1
  81. package/src/primitivePrototypes.d.ts +0 -1
  82. package/src/primitivePrototypes.js +0 -22
  83. package/src/primitivePrototypes.js.map +0 -1
  84. package/src/react/useComputed.d.ts +0 -2
  85. package/src/react/useComputed.js +0 -16
  86. package/src/react/useComputed.js.map +0 -1
  87. package/src/react/useNewObservable.js +0 -33
  88. package/src/react/useNewObservable.js.map +0 -1
  89. package/src/react/useObservables.js +0 -114
  90. package/src/react/useObservables.js.map +0 -1
  91. package/src/react/usePrimitiveFunctions.d.ts +0 -4
  92. package/src/react/usePrimitiveFunctions.js +0 -21
  93. 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,4 +0,0 @@
1
- import { ObservableChecker } from '../observableInterfaces';
2
- export declare function useSetter<T>(obs: ObservableChecker): any;
3
- export declare function useGetter<T>(obs: ObservableChecker): any;
4
- export declare function useAssigner<T>(obs: ObservableChecker): any;
@@ -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"}