@legendapp/state 0.15.0-next.9 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/babel.js +21 -599
- package/babel.js.map +1 -1
- package/index.d.ts +7 -2
- package/index.js +123 -113
- package/index.js.map +1 -1
- package/index.mjs +117 -113
- package/index.mjs.map +1 -1
- package/internal.d.ts +1 -1
- package/internal.js +4 -0
- package/internal.js.map +1 -1
- package/internal.mjs +1 -1
- package/package.json +15 -17
- package/react-components.d.ts +1 -0
- package/react-components.js +42 -0
- package/react-components.js.map +1 -0
- package/react-components.mjs +40 -0
- package/react-components.mjs.map +1 -0
- package/react-native-components.d.ts +1 -0
- package/react-native-components.js +38 -0
- package/react-native-components.js.map +1 -0
- package/react-native-components.mjs +36 -0
- package/react-native-components.mjs.map +1 -0
- package/react.d.ts +1 -0
- package/react.js +139 -137
- package/react.js.map +1 -1
- package/react.mjs +137 -140
- package/react.mjs.map +1 -1
- package/src/globals.d.ts +3 -1
- package/src/helpers.d.ts +3 -1
- package/src/observableInterfaces.d.ts +16 -14
- package/src/{effect.d.ts → observe.d.ts} +1 -1
- package/src/onChange.d.ts +1 -5
- package/src/react/flow.d.ts +31 -0
- package/src/react/useComputed.d.ts +6 -1
- package/src/react/useObserve.d.ts +1 -0
- package/src/{react/components.d.ts → react-components/react-components.d.ts} +4 -10
- package/src/{react-native/components.d.ts → react-native-components/rn-components.d.ts} +4 -8
- package/src/tracking.d.ts +1 -1
- package/src/when.d.ts +1 -5
- package/trace.js +4 -2
- package/trace.js.map +1 -1
- package/trace.mjs +5 -3
- package/trace.mjs.map +1 -1
- package/types.d.ts +15 -0
- package/react-native-types.d.ts +0 -39
- package/react-native.d.ts +0 -1
- package/react-native.js +0 -173
- package/react-native.js.map +0 -1
- package/react-native.mjs +0 -169
- package/react-native.mjs.map +0 -1
- package/react-types.d.ts +0 -8
- package/reactivity.d.ts +0 -2
- package/reactivity.js +0 -230
- package/reactivity.js.map +0 -1
- package/reactivity.mjs +0 -222
- package/reactivity.mjs.map +0 -1
- package/src/react/controlFlow.d.ts +0 -28
- package/state-types.d.ts +0 -24
package/react.js
CHANGED
|
@@ -5,100 +5,123 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var state = require('@legendapp/state');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
updates: undefined,
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
var Tracking;
|
|
15
|
-
(function (Tracking) {
|
|
16
|
-
Tracking.normal = true;
|
|
17
|
-
Tracking.shallow = Symbol('shallow');
|
|
18
|
-
Tracking.optimized = Symbol('optimized');
|
|
19
|
-
})(Tracking || (Tracking = {}));
|
|
20
|
-
function getNodeValue(node) {
|
|
21
|
-
const arr = [];
|
|
22
|
-
let n = node;
|
|
23
|
-
while ((n === null || n === void 0 ? void 0 : n.key) !== undefined) {
|
|
24
|
-
arr.push(n.key);
|
|
25
|
-
n = n.parent;
|
|
26
|
-
}
|
|
27
|
-
let child = node.root._;
|
|
28
|
-
for (let i = arr.length - 1; i >= 0; i--) {
|
|
29
|
-
if (arr[i] !== undefined && child) {
|
|
30
|
-
child = child[arr[i]];
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return child;
|
|
8
|
+
function useForceRender() {
|
|
9
|
+
const [, forceRender] = react.useReducer((s) => s + 1, 0);
|
|
10
|
+
return react.useCallback(() => forceRender(), []);
|
|
34
11
|
}
|
|
35
12
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (
|
|
50
|
-
const
|
|
51
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Runs the specified selector, automatically tracking observable access and optionally re-rendering
|
|
15
|
+
* @param selector A computation function
|
|
16
|
+
* @param whenToRender When to re-render. false = never re-render, undefined = render if different, true = always render
|
|
17
|
+
*/
|
|
18
|
+
function useComputed(selector, whenToRender) {
|
|
19
|
+
let inRun = true;
|
|
20
|
+
let ret = state.symbolUndef;
|
|
21
|
+
let cachedNodes;
|
|
22
|
+
const fr = whenToRender !== false && useForceRender();
|
|
23
|
+
const update = function () {
|
|
24
|
+
// If running, run and return the value
|
|
25
|
+
// Don't need to run the selector again if not running and alwaysUpdate
|
|
26
|
+
if (inRun || !whenToRender) {
|
|
27
|
+
const cur = selector();
|
|
28
|
+
// Re-render if not currently rendering and value has changed
|
|
29
|
+
if (!inRun && cur !== ret && whenToRender !== false) {
|
|
30
|
+
// Re-render if value changed
|
|
31
|
+
fr();
|
|
32
|
+
}
|
|
33
|
+
ret = cur;
|
|
34
|
+
}
|
|
35
|
+
else if (whenToRender) {
|
|
36
|
+
fr();
|
|
52
37
|
}
|
|
38
|
+
inRun = false;
|
|
39
|
+
// Workaround for React 18's double calling useEffect - cached the tracking nodes
|
|
40
|
+
if (process.env.NODE_ENV === 'development') {
|
|
41
|
+
cachedNodes = state.tracking.nodes;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
let dispose = state.observe(update);
|
|
45
|
+
if (process.env.NODE_ENV === 'development') {
|
|
46
|
+
react.useEffect(() => {
|
|
47
|
+
// Workaround for React 18's double calling useEffect. If this is the
|
|
48
|
+
// second useEffect, set up tracking again.
|
|
49
|
+
if (dispose === undefined) {
|
|
50
|
+
dispose = state.setupTracking(cachedNodes, update);
|
|
51
|
+
}
|
|
52
|
+
return () => {
|
|
53
|
+
dispose();
|
|
54
|
+
dispose = undefined;
|
|
55
|
+
};
|
|
56
|
+
});
|
|
53
57
|
}
|
|
54
|
-
|
|
55
|
-
|
|
58
|
+
else {
|
|
59
|
+
// Return dispose to cleanup before each render or on unmount
|
|
60
|
+
react.useEffect(() => dispose);
|
|
61
|
+
}
|
|
62
|
+
return ret;
|
|
56
63
|
}
|
|
57
64
|
|
|
58
|
-
function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
let options;
|
|
64
|
-
if (track) {
|
|
65
|
-
options = {
|
|
66
|
-
shallow: track === Tracking.shallow,
|
|
67
|
-
optimized: track === Tracking.optimized,
|
|
68
|
-
};
|
|
65
|
+
function computeProp(prop) {
|
|
66
|
+
return useComputed(() => {
|
|
67
|
+
let p = prop;
|
|
68
|
+
if (state.isFunction(p)) {
|
|
69
|
+
p = p();
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return () => {
|
|
73
|
-
if (listeners) {
|
|
74
|
-
for (let i = 0; i < listeners.length; i++) {
|
|
75
|
-
listeners[i]();
|
|
76
|
-
}
|
|
77
|
-
listeners = undefined;
|
|
71
|
+
if (state.isObservable(p)) {
|
|
72
|
+
p = p.get();
|
|
78
73
|
}
|
|
79
|
-
|
|
74
|
+
return p;
|
|
75
|
+
});
|
|
80
76
|
}
|
|
81
|
-
function
|
|
82
|
-
|
|
83
|
-
// Wrap it in a function so it doesn't pass all the arguments to run()
|
|
84
|
-
const update = function () {
|
|
85
|
-
if (cleanup) {
|
|
86
|
-
cleanup();
|
|
87
|
-
cleanup = undefined;
|
|
88
|
-
}
|
|
89
|
-
cleanup = run();
|
|
90
|
-
};
|
|
91
|
-
const trackingPrev = tracking.nodes;
|
|
92
|
-
tracking.nodes = new Map();
|
|
93
|
-
cleanup = run();
|
|
94
|
-
const ret = setupTracking(tracking.nodes, update);
|
|
95
|
-
tracking.nodes = trackingPrev;
|
|
96
|
-
return ret;
|
|
77
|
+
function Computed({ children }) {
|
|
78
|
+
return useComputed(children, true);
|
|
97
79
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
80
|
+
const Memo = react.memo(function Memo({ children }) {
|
|
81
|
+
return useComputed(children, true);
|
|
82
|
+
}, () => true);
|
|
83
|
+
function Show({ if: if_, else: else_, children, }) {
|
|
84
|
+
const value = computeProp(if_);
|
|
85
|
+
return (value
|
|
86
|
+
? state.isFunction(children)
|
|
87
|
+
? children(value)
|
|
88
|
+
: children
|
|
89
|
+
: else_
|
|
90
|
+
? state.isFunction(else_)
|
|
91
|
+
? else_()
|
|
92
|
+
: else_
|
|
93
|
+
: null);
|
|
94
|
+
}
|
|
95
|
+
function Switch({ value, children, }) {
|
|
96
|
+
var _a, _b, _c, _d;
|
|
97
|
+
return ((_d = (_b = (_a = children[computeProp(value)]) === null || _a === void 0 ? void 0 : _a.call(children)) !== null && _b !== void 0 ? _b : (_c = children['default']) === null || _c === void 0 ? void 0 : _c.call(children)) !== null && _d !== void 0 ? _d : null);
|
|
98
|
+
}
|
|
99
|
+
function For({ each, optimized, item, children, }) {
|
|
100
|
+
if (!each)
|
|
101
|
+
return null;
|
|
102
|
+
// Get the raw value with a shallow listener so this list only re-renders
|
|
103
|
+
// when the array length changes
|
|
104
|
+
const v = useComputed(() => each.get(optimized ? state.Tracking.optimized : state.Tracking.shallow), true);
|
|
105
|
+
if (!v)
|
|
106
|
+
return null;
|
|
107
|
+
// The child function gets wrapped in a memoized observer component
|
|
108
|
+
if (!item && children) {
|
|
109
|
+
// Update the ref so the generated component uses the latest function
|
|
110
|
+
const refChildren = react.useRef();
|
|
111
|
+
refChildren.current = children;
|
|
112
|
+
item = react.useMemo(() => react.memo(({ item }) => useComputed(() => refChildren.current(item), true)), []);
|
|
113
|
+
}
|
|
114
|
+
// Get the appropriate id field
|
|
115
|
+
const id = v.length > 0 ? (v[0].id ? 'id' : v[0]._id ? '_id' : v[0].__id ? '__id' : undefined) : undefined;
|
|
116
|
+
// Create the child elements
|
|
117
|
+
let out = [];
|
|
118
|
+
for (let i = 0; i < v.length; i++) {
|
|
119
|
+
if (v[i]) {
|
|
120
|
+
const key = v[i][id];
|
|
121
|
+
out.push(react.createElement(item, { key: key, item: each[i] }));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return out;
|
|
102
125
|
}
|
|
103
126
|
|
|
104
127
|
const hasSymbol = typeof Symbol === 'function' && Symbol.for;
|
|
@@ -119,40 +142,7 @@ function observer(component, propsAreEqual) {
|
|
|
119
142
|
const componentName = component.displayName || component.name;
|
|
120
143
|
// Create a wrapper observer component
|
|
121
144
|
let observer = function (props, ref) {
|
|
122
|
-
|
|
123
|
-
let inRender = true;
|
|
124
|
-
let rendered;
|
|
125
|
-
let cachedNodes;
|
|
126
|
-
const update = function () {
|
|
127
|
-
if (inRender) {
|
|
128
|
-
rendered = component(props, ref);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
forceRender();
|
|
132
|
-
}
|
|
133
|
-
inRender = false;
|
|
134
|
-
if (process.env.NODE_ENV === 'development') {
|
|
135
|
-
cachedNodes = state.tracking.nodes;
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
let dispose = state.effect(update);
|
|
139
|
-
if (process.env.NODE_ENV === 'development') {
|
|
140
|
-
react.useEffect(() => {
|
|
141
|
-
// Workaround for React 18's double calling useEffect. If this is the
|
|
142
|
-
// second useEffect, set up tracking again.
|
|
143
|
-
if (dispose === undefined) {
|
|
144
|
-
dispose = setupTracking(cachedNodes, update);
|
|
145
|
-
}
|
|
146
|
-
return () => {
|
|
147
|
-
dispose();
|
|
148
|
-
dispose = undefined;
|
|
149
|
-
};
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
react.useEffect(() => dispose);
|
|
154
|
-
}
|
|
155
|
-
return rendered;
|
|
145
|
+
return useComputed(() => component(props, ref), true);
|
|
156
146
|
};
|
|
157
147
|
if (componentName !== '') {
|
|
158
148
|
observer.displayName = componentName;
|
|
@@ -163,26 +153,33 @@ function observer(component, propsAreEqual) {
|
|
|
163
153
|
}
|
|
164
154
|
return react.memo(observer, propsAreEqual);
|
|
165
155
|
}
|
|
166
|
-
|
|
167
|
-
function
|
|
168
|
-
//
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
const [value, setValue] = react.useState(initial);
|
|
156
|
+
// Memoized component to wrap the observable value
|
|
157
|
+
const Text = react.memo(function Text({ data }) {
|
|
158
|
+
// Exit the tracking context first
|
|
159
|
+
const trackingPrev = state.tracking.nodes;
|
|
160
|
+
state.tracking.nodes = undefined;
|
|
161
|
+
let [value, setValue] = react.useState(state.getNodeValue(data));
|
|
162
|
+
react.useEffect(() => {
|
|
163
|
+
const cur = state.getNodeValue(data);
|
|
164
|
+
// Set to current if it changed since mount
|
|
165
|
+
if (value !== cur) {
|
|
166
|
+
setValue(cur);
|
|
167
|
+
}
|
|
168
|
+
// Set up change listener, leanup on unmount
|
|
169
|
+
return state.onChange(data, (v) => setValue(v));
|
|
170
|
+
}, []);
|
|
171
|
+
// Restore the tracking context
|
|
172
|
+
state.tracking.nodes = trackingPrev;
|
|
184
173
|
return value;
|
|
185
|
-
}
|
|
174
|
+
}, () => true);
|
|
175
|
+
const ReactTypeofSymbol = hasSymbol ? Symbol.for('react.element') : react.createElement('a').$$typeof;
|
|
176
|
+
// Set extra props for the proxyHandler to return on primitives
|
|
177
|
+
state.extraPrimitiveProps.set('$$typeof', ReactTypeofSymbol);
|
|
178
|
+
state.extraPrimitiveProps.set('type', Text);
|
|
179
|
+
state.extraPrimitiveProps.set('props', {
|
|
180
|
+
__fn: (obs) => ({ data: obs }),
|
|
181
|
+
});
|
|
182
|
+
state.extraPrimitiveProps.set('ref', null);
|
|
186
183
|
|
|
187
184
|
/**
|
|
188
185
|
* A React hook that creates a new observable and can optionally listen or persist its state.
|
|
@@ -196,6 +193,11 @@ function useObservable(initialValue) {
|
|
|
196
193
|
return react.useMemo(() => state.observable(state.isFunction(initialValue) ? initialValue() : initialValue), []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
197
194
|
}
|
|
198
195
|
|
|
196
|
+
exports.Computed = Computed;
|
|
197
|
+
exports.For = For;
|
|
198
|
+
exports.Memo = Memo;
|
|
199
|
+
exports.Show = Show;
|
|
200
|
+
exports.Switch = Switch;
|
|
199
201
|
exports.observer = observer;
|
|
200
202
|
exports.useComputed = useComputed;
|
|
201
203
|
exports.useObservable = useObservable;
|
package/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"react.js","sources":["../../src/react/useForceRender.ts","../../src/react/useComputed.ts","../../src/react/flow.tsx","../../src/react/observer.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null],"names":["useReducer","useCallback","symbolUndef","tracking","observe","useEffect","setupTracking","isFunction","isObservable","memo","Tracking","useRef","useMemo","createElement","forwardRef","useState","getNodeValue","onChange","extraPrimitiveProps","observable"],"mappings":"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"}
|