@legendapp/state 0.15.3 → 0.16.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.d.ts +1 -1
- package/index.js +111 -82
- package/index.js.map +1 -1
- package/index.mjs +109 -83
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/react-components.js +9 -13
- package/react-components.js.map +1 -1
- package/react-components.mjs +9 -13
- package/react-components.mjs.map +1 -1
- package/react-native-components.js +5 -9
- package/react-native-components.js.map +1 -1
- package/react-native-components.mjs +5 -9
- package/react-native-components.mjs.map +1 -1
- package/react.d.ts +2 -1
- package/react.js +153 -121
- package/react.js.map +1 -1
- package/react.mjs +154 -123
- package/react.mjs.map +1 -1
- package/src/batching.d.ts +6 -6
- package/src/globals.d.ts +0 -1
- package/src/observableInterfaces.d.ts +1 -0
- package/src/observe.d.ts +1 -1
- package/src/onChange.d.ts +1 -1
- package/src/react/enableLegendStateReact.d.ts +1 -0
- package/src/tracking.d.ts +4 -0
- package/src/when.d.ts +2 -2
- package/src/react/observer.d.ts +0 -2
package/react.mjs
CHANGED
|
@@ -1,5 +1,151 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { isFunction, Tracking, isObservable, updateTracking, getNodeValue, extraPrimitiveProps, tracking, beginTracking, setupTracking, endTracking, observe, symbolUndef, observable } from '@legendapp/state';
|
|
2
|
+
import { memo, useRef, useMemo, createElement, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, useReducer, useCallback, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
function computeProp(prop) {
|
|
5
|
+
let p = prop;
|
|
6
|
+
if (isFunction(p)) {
|
|
7
|
+
p = p();
|
|
8
|
+
}
|
|
9
|
+
if (isObservable(p)) {
|
|
10
|
+
p = p.get();
|
|
11
|
+
}
|
|
12
|
+
return p;
|
|
13
|
+
}
|
|
14
|
+
function Computed({ children }) {
|
|
15
|
+
return children();
|
|
16
|
+
}
|
|
17
|
+
const Memo = memo(function Memo({ children }) {
|
|
18
|
+
return children();
|
|
19
|
+
}, () => true);
|
|
20
|
+
function Show({ if: if_, else: else_, children, }) {
|
|
21
|
+
const value = computeProp(if_);
|
|
22
|
+
return (value
|
|
23
|
+
? isFunction(children)
|
|
24
|
+
? children(value)
|
|
25
|
+
: children
|
|
26
|
+
: else_
|
|
27
|
+
? isFunction(else_)
|
|
28
|
+
? else_()
|
|
29
|
+
: else_
|
|
30
|
+
: null);
|
|
31
|
+
}
|
|
32
|
+
function Switch({ value, children, }) {
|
|
33
|
+
var _a, _b, _c, _d;
|
|
34
|
+
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);
|
|
35
|
+
}
|
|
36
|
+
function For({ each, optimized, item, children, }) {
|
|
37
|
+
if (!each)
|
|
38
|
+
return null;
|
|
39
|
+
// Get the raw value with a shallow listener so this list only re-renders
|
|
40
|
+
// when the array length changes
|
|
41
|
+
const v = each.get(optimized ? Tracking.optimized : Tracking.shallow);
|
|
42
|
+
if (!v)
|
|
43
|
+
return null;
|
|
44
|
+
// The child function gets wrapped in a memoized observer component
|
|
45
|
+
if (!item && children) {
|
|
46
|
+
// Update the ref so the generated component uses the latest function
|
|
47
|
+
const refChildren = useRef();
|
|
48
|
+
refChildren.current = children;
|
|
49
|
+
item = useMemo(() => memo(({ item }) => refChildren.current(item)), []);
|
|
50
|
+
}
|
|
51
|
+
// Get the appropriate id field
|
|
52
|
+
const id = v.length > 0 ? (v[0].id ? 'id' : v[0]._id ? '_id' : v[0].__id ? '__id' : undefined) : undefined;
|
|
53
|
+
// Create the child elements
|
|
54
|
+
let out = [];
|
|
55
|
+
for (let i = 0; i < v.length; i++) {
|
|
56
|
+
if (v[i]) {
|
|
57
|
+
const key = v[i][id];
|
|
58
|
+
out.push(createElement(item, { key: key, item: each[i] }));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let isEnabled = false;
|
|
65
|
+
function enableLegendStateReact() {
|
|
66
|
+
if (!isEnabled) {
|
|
67
|
+
isEnabled = true;
|
|
68
|
+
// 1. Add the extra primitive props so that observables can render directly
|
|
69
|
+
// Memoized component to wrap the observable value
|
|
70
|
+
const Text = memo(function Text({ data }) {
|
|
71
|
+
updateTracking(data);
|
|
72
|
+
return getNodeValue(data);
|
|
73
|
+
}, () => true);
|
|
74
|
+
const hasSymbol = typeof Symbol === 'function' && Symbol.for;
|
|
75
|
+
const ReactTypeofSymbol = hasSymbol ? Symbol.for('react.element') : createElement('a').$$typeof;
|
|
76
|
+
// Set extra props for the proxyHandler to return on primitives
|
|
77
|
+
extraPrimitiveProps.set('$$typeof', ReactTypeofSymbol);
|
|
78
|
+
extraPrimitiveProps.set('type', Text);
|
|
79
|
+
extraPrimitiveProps.set('props', {
|
|
80
|
+
__fn: (obs) => ({ data: obs }),
|
|
81
|
+
});
|
|
82
|
+
extraPrimitiveProps.set('ref', null);
|
|
83
|
+
// 2. Override dispatcher access to hook up tracking
|
|
84
|
+
let dispatcher;
|
|
85
|
+
let didBeginTracking = false;
|
|
86
|
+
let prevNodes;
|
|
87
|
+
Object.defineProperty(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher, 'current', {
|
|
88
|
+
get() {
|
|
89
|
+
return dispatcher;
|
|
90
|
+
},
|
|
91
|
+
set(newDispatcher) {
|
|
92
|
+
// When the React render is complete it sets the dispatcher to an object where useCallback has a length of 0
|
|
93
|
+
if (dispatcher && didBeginTracking && (newDispatcher === null || newDispatcher === void 0 ? void 0 : newDispatcher.useCallback.length) < 2) {
|
|
94
|
+
didBeginTracking = false;
|
|
95
|
+
// If the previous dispatcher tracked nodes then set up hooks
|
|
96
|
+
if (tracking.nodes) {
|
|
97
|
+
try {
|
|
98
|
+
const [, forceRender] = dispatcher.useReducer((s) => s + 1, 0);
|
|
99
|
+
// Track all of the nodes accessed during the dispatcher
|
|
100
|
+
let dispose = setupTracking(tracking.nodes, forceRender, /*noArgs*/ true);
|
|
101
|
+
if (process.env.NODE_ENV === 'development') {
|
|
102
|
+
const cachedNodes = tracking.nodes;
|
|
103
|
+
dispatcher.useEffect(() => {
|
|
104
|
+
// Workaround for React 18's double calling useEffect. If this is the
|
|
105
|
+
// second useEffect, set up tracking again.
|
|
106
|
+
if (dispose === undefined) {
|
|
107
|
+
dispose = setupTracking(cachedNodes, forceRender, /*noArgs*/ true);
|
|
108
|
+
}
|
|
109
|
+
return () => {
|
|
110
|
+
dispose();
|
|
111
|
+
dispose = undefined;
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Return dispose to cleanup before each render or on unmount
|
|
117
|
+
dispatcher.useEffect(() => dispose);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
// This may not ever be an error but since this is new we'll leave this here
|
|
122
|
+
// for a bit while we see what the behavior is like
|
|
123
|
+
if (process.env.NODE_ENV === 'development') {
|
|
124
|
+
console.error('[legend-state] error creating hooks', err);
|
|
125
|
+
throw new Error('[legend-state] error creating hooks');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Restore the previous tracking context
|
|
130
|
+
endTracking(prevNodes);
|
|
131
|
+
}
|
|
132
|
+
dispatcher = newDispatcher;
|
|
133
|
+
// Start a new tracking context when entering a new rendering dispatcher
|
|
134
|
+
// In development, rendering dispatchers have useCallback named either "mountHookTypes" or "updateHookTypes"
|
|
135
|
+
// In production, they just have length = 2
|
|
136
|
+
if (newDispatcher &&
|
|
137
|
+
!tracking.isTracking &&
|
|
138
|
+
(process.env.NODE_ENV === 'development'
|
|
139
|
+
? !newDispatcher.useCallback.toString().includes('Invalid')
|
|
140
|
+
: newDispatcher.useCallback.length === 2)) {
|
|
141
|
+
didBeginTracking = true;
|
|
142
|
+
// Keep a copy of the previous tracking context
|
|
143
|
+
prevNodes = beginTracking();
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
3
149
|
|
|
4
150
|
function useForceRender() {
|
|
5
151
|
const [, forceRender] = useReducer((s) => s + 1, 0);
|
|
@@ -17,8 +163,8 @@ function useComputed(selector, whenToRender) {
|
|
|
17
163
|
let cachedNodes;
|
|
18
164
|
const fr = whenToRender !== false && useForceRender();
|
|
19
165
|
const update = function () {
|
|
20
|
-
// If running,
|
|
21
|
-
// Don't need to
|
|
166
|
+
// If running, call selector and return the value
|
|
167
|
+
// Don't need to call the selector again if not running and alwaysUpdate
|
|
22
168
|
if (inRun || !whenToRender) {
|
|
23
169
|
const cur = selector();
|
|
24
170
|
// Re-render if not currently rendering and value has changed
|
|
@@ -43,7 +189,7 @@ function useComputed(selector, whenToRender) {
|
|
|
43
189
|
// Workaround for React 18's double calling useEffect. If this is the
|
|
44
190
|
// second useEffect, set up tracking again.
|
|
45
191
|
if (dispose === undefined) {
|
|
46
|
-
dispose = setupTracking(cachedNodes, update);
|
|
192
|
+
dispose = setupTracking(cachedNodes, update, /*noArgs*/ true);
|
|
47
193
|
}
|
|
48
194
|
return () => {
|
|
49
195
|
dispose();
|
|
@@ -58,124 +204,9 @@ function useComputed(selector, whenToRender) {
|
|
|
58
204
|
return ret;
|
|
59
205
|
}
|
|
60
206
|
|
|
61
|
-
function
|
|
62
|
-
return useComputed(
|
|
63
|
-
let p = prop;
|
|
64
|
-
if (isFunction(p)) {
|
|
65
|
-
p = p();
|
|
66
|
-
}
|
|
67
|
-
if (isObservable(p)) {
|
|
68
|
-
p = p.get();
|
|
69
|
-
}
|
|
70
|
-
return p;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
function Computed({ children }) {
|
|
74
|
-
return useComputed(children, true);
|
|
75
|
-
}
|
|
76
|
-
const Memo = memo(function Memo({ children }) {
|
|
77
|
-
return useComputed(children, true);
|
|
78
|
-
}, () => true);
|
|
79
|
-
function Show({ if: if_, else: else_, children, }) {
|
|
80
|
-
const value = computeProp(if_);
|
|
81
|
-
return (value
|
|
82
|
-
? isFunction(children)
|
|
83
|
-
? children(value)
|
|
84
|
-
: children
|
|
85
|
-
: else_
|
|
86
|
-
? isFunction(else_)
|
|
87
|
-
? else_()
|
|
88
|
-
: else_
|
|
89
|
-
: null);
|
|
90
|
-
}
|
|
91
|
-
function Switch({ value, children, }) {
|
|
92
|
-
var _a, _b, _c, _d;
|
|
93
|
-
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);
|
|
94
|
-
}
|
|
95
|
-
function For({ each, optimized, item, children, }) {
|
|
96
|
-
if (!each)
|
|
97
|
-
return null;
|
|
98
|
-
// Get the raw value with a shallow listener so this list only re-renders
|
|
99
|
-
// when the array length changes
|
|
100
|
-
const v = useComputed(() => each.get(optimized ? Tracking.optimized : Tracking.shallow), true);
|
|
101
|
-
if (!v)
|
|
102
|
-
return null;
|
|
103
|
-
// The child function gets wrapped in a memoized observer component
|
|
104
|
-
if (!item && children) {
|
|
105
|
-
// Update the ref so the generated component uses the latest function
|
|
106
|
-
const refChildren = useRef();
|
|
107
|
-
refChildren.current = children;
|
|
108
|
-
item = useMemo(() => memo(({ item }) => useComputed(() => refChildren.current(item), true)), []);
|
|
109
|
-
}
|
|
110
|
-
// Get the appropriate id field
|
|
111
|
-
const id = v.length > 0 ? (v[0].id ? 'id' : v[0]._id ? '_id' : v[0].__id ? '__id' : undefined) : undefined;
|
|
112
|
-
// Create the child elements
|
|
113
|
-
let out = [];
|
|
114
|
-
for (let i = 0; i < v.length; i++) {
|
|
115
|
-
if (v[i]) {
|
|
116
|
-
const key = v[i][id];
|
|
117
|
-
out.push(createElement(item, { key: key, item: each[i] }));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return out;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
const hasSymbol = typeof Symbol === 'function' && Symbol.for;
|
|
124
|
-
// Extracting the forwardRef inspired by https://github.com/mobxjs/mobx/blob/main/packages/mobx-react-lite/src/observer.ts
|
|
125
|
-
const ReactForwardRefSymbol = hasSymbol
|
|
126
|
-
? Symbol.for('react.forward_ref')
|
|
127
|
-
: typeof forwardRef === 'function' && forwardRef((props) => null)['$$typeof'];
|
|
128
|
-
function observer(component, propsAreEqual) {
|
|
129
|
-
// Unwrap forwardRef on the component
|
|
130
|
-
let useForwardRef;
|
|
131
|
-
if (ReactForwardRefSymbol && component['$$typeof'] === ReactForwardRefSymbol) {
|
|
132
|
-
useForwardRef = true;
|
|
133
|
-
component = component['render'];
|
|
134
|
-
if (process.env.NODE_ENV === 'development' && typeof component !== 'function') {
|
|
135
|
-
throw new Error(`[legend-state] \`render\` property of ForwardRef was not a function`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
const componentName = component.displayName || component.name;
|
|
139
|
-
// Create a wrapper observer component
|
|
140
|
-
let observer = function (props, ref) {
|
|
141
|
-
return useComputed(() => component(props, ref), true);
|
|
142
|
-
};
|
|
143
|
-
if (componentName !== '') {
|
|
144
|
-
observer.displayName = componentName;
|
|
145
|
-
}
|
|
146
|
-
// Wrap back in forwardRef if necessary
|
|
147
|
-
if (useForwardRef) {
|
|
148
|
-
observer = forwardRef(observer);
|
|
149
|
-
}
|
|
150
|
-
return memo(observer, propsAreEqual);
|
|
207
|
+
function useObserve(selector) {
|
|
208
|
+
return useComputed(selector, false);
|
|
151
209
|
}
|
|
152
|
-
// Memoized component to wrap the observable value
|
|
153
|
-
const Text = memo(function Text({ data }) {
|
|
154
|
-
// Exit the tracking context first
|
|
155
|
-
const trackingPrev = tracking.nodes;
|
|
156
|
-
tracking.nodes = undefined;
|
|
157
|
-
let [value, setValue] = useState(getNodeValue(data));
|
|
158
|
-
useEffect(() => {
|
|
159
|
-
const cur = getNodeValue(data);
|
|
160
|
-
// Set to current if it changed since mount
|
|
161
|
-
if (value !== cur) {
|
|
162
|
-
setValue(cur);
|
|
163
|
-
}
|
|
164
|
-
// Set up change listener, leanup on unmount
|
|
165
|
-
return onChange(data, (v) => setValue(v));
|
|
166
|
-
}, []);
|
|
167
|
-
// Restore the tracking context
|
|
168
|
-
tracking.nodes = trackingPrev;
|
|
169
|
-
return value;
|
|
170
|
-
}, () => true);
|
|
171
|
-
const ReactTypeofSymbol = hasSymbol ? Symbol.for('react.element') : createElement('a').$$typeof;
|
|
172
|
-
// Set extra props for the proxyHandler to return on primitives
|
|
173
|
-
extraPrimitiveProps.set('$$typeof', ReactTypeofSymbol);
|
|
174
|
-
extraPrimitiveProps.set('type', Text);
|
|
175
|
-
extraPrimitiveProps.set('props', {
|
|
176
|
-
__fn: (obs) => ({ data: obs }),
|
|
177
|
-
});
|
|
178
|
-
extraPrimitiveProps.set('ref', null);
|
|
179
210
|
|
|
180
211
|
/**
|
|
181
212
|
* A React hook that creates a new observable and can optionally listen or persist its state.
|
|
@@ -189,5 +220,5 @@ function useObservable(initialValue) {
|
|
|
189
220
|
return useMemo(() => observable(isFunction(initialValue) ? initialValue() : initialValue), []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
190
221
|
}
|
|
191
222
|
|
|
192
|
-
export { Computed, For, Memo, Show, Switch,
|
|
223
|
+
export { Computed, For, Memo, Show, Switch, enableLegendStateReact, useComputed, useObservable, useObserve };
|
|
193
224
|
//# sourceMappingURL=react.mjs.map
|
package/react.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.mjs","sources":["../../src/react/
|
|
1
|
+
{"version":3,"file":"react.mjs","sources":["../../src/react/flow.tsx","../../src/react/enableLegendStateReact.ts","../../src/react/useForceRender.ts","../../src/react/useComputed.ts","../../src/react/useObserve.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["ReactInternals"],"mappings":";;;AAIA,SAAS,WAAW,CAAC,IAAI,EAAA;IACrB,IAAI,CAAC,GAAG,IAAI,CAAC;AACb,IAAA,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;QACf,CAAC,GAAG,CAAC,EAAE,CAAC;AACX,KAAA;AAED,IAAA,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;AACjB,QAAA,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACf,KAAA;AACD,IAAA,OAAO,CAAC,CAAC;AACb,CAAC;AAEe,SAAA,QAAQ,CAAC,EAAE,QAAQ,EAAiC,EAAA;IAChE,OAAO,QAAQ,EAAkB,CAAC;AACtC,CAAC;AAEY,MAAA,IAAI,GAAG,IAAI,CACpB,SAAS,IAAI,CAAC,EAAE,QAAQ,EAAiC,EAAA;IACrD,OAAO,QAAQ,EAAkB,CAAC;AACtC,CAAC,EACD,MAAM,IAAI,EACZ;AAOc,SAAA,IAAI,CAAI,EACpB,EAAE,EAAE,GAAG,EACP,IAAI,EAAE,KAAK,EACX,QAAQ,GAMX,EAAA;AACG,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAA,QACI,KAAK;AACD,UAAE,UAAU,CAAC,QAAQ,CAAC;AAClB,cAAE,QAAQ,CAAC,KAAK,CAAC;AACjB,cAAE,QAAQ;AACd,UAAE,KAAK;AACP,cAAE,UAAU,CAAC,KAAK,CAAC;kBACb,KAAK,EAAE;AACT,kBAAE,KAAK;cACT,IAAI,EACI;AACtB,CAAC;SAEe,MAAM,CAAI,EACtB,KAAK,EACL,QAAQ,GAIX,EAAA;;IACG,QAAQ,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,wDAAI,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,CAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,EAAkB;AACjG,CAAC;AAEK,SAAU,GAAG,CAEjB,EACE,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,GAMX,EAAA;AACG,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI,CAAC;;;IAIvB,MAAM,CAAC,GAAI,IAAyB,CAAC,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE5F,IAAA,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;;AAGpB,IAAA,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;;AAEnB,QAAA,MAAM,WAAW,GAAG,MAAM,EAA8B,CAAC;AACzD,QAAA,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;QAE/B,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,KAAA;;IAGD,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,IAAI,SAAS,CAAC;;IAG3G,IAAI,GAAG,GAAmB,EAAE,CAAC;AAC7B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACN,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAW,CAAC;YAE/B,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,GAA8B,CAAC;AAC1C;;AC9FA,IAAI,SAAS,GAAG,KAAK,CAAC;SAEN,sBAAsB,GAAA;IAClC,IAAI,CAAC,SAAS,EAAE;QACZ,SAAS,GAAG,IAAI,CAAC;;;QAIjB,MAAM,IAAI,GAAG,IAAI,CACb,SAAS,IAAI,CAAC,EAAE,IAAI,EAAuB,EAAA;YACvC,cAAc,CAAC,IAAI,CAAC,CAAC;AAErB,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAC,EACD,MAAM,IAAI,CACb,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC;QAC7D,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAI,aAAa,CAAC,GAAG,CAAS,CAAC,QAAQ,CAAC;;AAGzG,QAAA,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACvD,QAAA,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtC,QAAA,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACjC,SAAA,CAAC,CAAC;AACH,QAAA,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;AAGrC,QAAA,IAAI,UAAU,CAAC;QACf,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,SAAS,CAAC;QACd,MAAM,CAAC,cAAc,CAACA,kDAAc,CAAC,sBAAsB,EAAE,SAAS,EAAE;YACpE,GAAG,GAAA;AACC,gBAAA,OAAO,UAAU,CAAC;aACrB;AACD,YAAA,GAAG,CAAC,aAAa,EAAA;;AAEb,gBAAA,IAAI,UAAU,IAAI,gBAAgB,IAAI,CAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,WAAW,CAAC,MAAM,IAAG,CAAC,EAAE;oBACzE,gBAAgB,GAAG,KAAK,CAAC;;oBAEzB,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAChB,IAAI;4BACA,MAAM,GAAG,WAAW,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;;AAG/D,4BAAA,IAAI,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,aAAa,IAAI,CAAC,CAAC;AAE1E,4BAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,gCAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnC,gCAAA,UAAU,CAAC,SAAS,CAAC,MAAK;;;oCAGtB,IAAI,OAAO,KAAK,SAAS,EAAE;wCACvB,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,aAAa,IAAI,CAAC,CAAC;AACtE,qCAAA;AACD,oCAAA,OAAO,MAAK;AACR,wCAAA,OAAO,EAAE,CAAC;wCACV,OAAO,GAAG,SAAS,CAAC;AACxB,qCAAC,CAAC;AACN,iCAAC,CAAC,CAAC;AACN,6BAAA;AAAM,iCAAA;;gCAEH,UAAU,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,CAAC;AACvC,6BAAA;AACJ,yBAAA;AAAC,wBAAA,OAAO,GAAG,EAAE;;;AAGV,4BAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,gCAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;AAC1D,gCAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAC1D,6BAAA;AACJ,yBAAA;AACJ,qBAAA;;oBAED,WAAW,CAAC,SAAS,CAAC,CAAC;AAC1B,iBAAA;gBACD,UAAU,GAAG,aAAa,CAAC;;;;AAK3B,gBAAA,IACI,aAAa;oBACb,CAAC,QAAQ,CAAC,UAAU;AACpB,qBAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;AACnC,0BAAE,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;0BACzD,aAAa,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,EAC/C;oBACE,gBAAgB,GAAG,IAAI,CAAC;;oBAGxB,SAAS,GAAG,aAAa,EAAE,CAAC;AAC/B,iBAAA;aACJ;AACJ,SAAA,CAAC,CAAC;AACN,KAAA;AACL;;SC/GgB,cAAc,GAAA;AAC1B,IAAA,MAAM,GAAG,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,WAAW,CAAC,MAAM,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD;;ACDA;;;;AAIG;AACa,SAAA,WAAW,CAAI,QAAiB,EAAE,YAAsB,EAAA;IACpE,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,IAAI,GAAG,GAAM,WAA2B,CAAC;AACzC,IAAA,IAAI,WAAW,CAAC;IAEhB,MAAM,EAAE,GAAG,YAAY,KAAK,KAAK,IAAI,cAAc,EAAE,CAAC;AAEtD,IAAA,MAAM,MAAM,GAAG,YAAA;;;AAGX,QAAA,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;AACxB,YAAA,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;;YAEvB,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI,YAAY,KAAK,KAAK,EAAE;;AAEjD,gBAAA,EAAE,EAAE,CAAC;AACR,aAAA;YACD,GAAG,GAAG,GAAG,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,YAAY,EAAE;AACrB,YAAA,EAAE,EAAE,CAAC;AACR,SAAA;QACD,KAAK,GAAG,KAAK,CAAC;;AAGd,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,YAAA,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;AAChC,SAAA;AACL,KAAC,CAAC;AAEF,IAAA,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9B,IAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;QACxC,SAAS,CAAC,MAAK;;;YAGX,IAAI,OAAO,KAAK,SAAS,EAAE;gBACvB,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,MAAM,aAAa,IAAI,CAAC,CAAC;AACjE,aAAA;AACD,YAAA,OAAO,MAAK;AACR,gBAAA,OAAO,EAAE,CAAC;gBACV,OAAO,GAAG,SAAS,CAAC;AACxB,aAAC,CAAC;AACN,SAAC,CAAC,CAAC;AACN,KAAA;AAAM,SAAA;;AAEH,QAAA,SAAS,CAAC,MAAM,OAAO,CAAC,CAAC;AAC5B,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACf;;ACzDM,SAAU,UAAU,CAAI,QAAiB,EAAA;AAC3C,IAAA,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACxC;;ACAA;;;;;;AAMG;AACG,SAAU,aAAa,CAAI,YAA2B,EAAA;;IAExD,OAAO,OAAO,CACV,MAAM,UAAU,CAAM,UAAU,CAAC,YAAY,CAAC,GAAG,YAAY,EAAE,GAAG,YAAY,CAAC,EAC/E,EAAE,CAC6B,CAAC;AACxC;;;;"}
|
package/src/batching.d.ts
CHANGED
|
@@ -2,13 +2,13 @@ import { ListenerFn, NodeValue } from './observableInterfaces';
|
|
|
2
2
|
interface BatchItem {
|
|
3
3
|
cb: ListenerFn<any>;
|
|
4
4
|
value: any;
|
|
5
|
-
getPrevious
|
|
6
|
-
path
|
|
7
|
-
valueAtPath
|
|
8
|
-
prevAtPath
|
|
9
|
-
node
|
|
5
|
+
getPrevious?: () => any;
|
|
6
|
+
path?: (string | number)[];
|
|
7
|
+
valueAtPath?: any;
|
|
8
|
+
prevAtPath?: any;
|
|
9
|
+
node?: NodeValue;
|
|
10
10
|
}
|
|
11
|
-
export declare function batchNotify(b: BatchItem): void;
|
|
11
|
+
export declare function batchNotify(b: BatchItem | (() => void)): void;
|
|
12
12
|
export declare function batch(fn: () => void): void;
|
|
13
13
|
export declare function beginBatch(): void;
|
|
14
14
|
export declare function endBatch(force?: boolean): void;
|
package/src/globals.d.ts
CHANGED
|
@@ -12,7 +12,6 @@ export declare namespace Tracking {
|
|
|
12
12
|
export declare const nextNodeID: {
|
|
13
13
|
current: number;
|
|
14
14
|
};
|
|
15
|
-
export declare function checkTracking(node: NodeValue, track: boolean | Symbol): void;
|
|
16
15
|
export declare function get(node: NodeValue, keyOrTrack?: string | number | boolean | Symbol, track?: boolean | Symbol): any;
|
|
17
16
|
export declare function getNodeValue(node: NodeValue): any;
|
|
18
17
|
export declare function getChildNode(node: NodeValue, key: string | number): NodeValue;
|
package/src/observe.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { TrackingNode } from './observableInterfaces';
|
|
2
|
-
export declare function setupTracking(nodes: Map<number, TrackingNode>, update: () => void): () => void;
|
|
2
|
+
export declare function setupTracking(nodes: Map<number, TrackingNode>, update: () => void, noArgs?: boolean): () => void;
|
|
3
3
|
export declare function observe(run: () => void | (() => void)): () => void;
|
package/src/onChange.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ListenerFn, NodeValue } from './observableInterfaces';
|
|
2
|
-
export declare function onChange(node: NodeValue, callback: ListenerFn<any>, track?: boolean | Symbol): () => void;
|
|
2
|
+
export declare function onChange(node: NodeValue, callback: ListenerFn<any>, track?: boolean | Symbol, noArgs?: boolean): () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function enableLegendStateReact(): void;
|
package/src/tracking.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { NodeValue, TrackingNode } from './observableInterfaces';
|
|
2
2
|
export declare const tracking: {
|
|
3
|
+
isTracking: boolean;
|
|
3
4
|
nodes: Map<number, TrackingNode>;
|
|
4
5
|
listeners: (nodes: Map<number, TrackingNode>) => void;
|
|
5
6
|
updates: (fn: () => void) => () => void;
|
|
6
7
|
};
|
|
8
|
+
export declare function beginTracking(): Map<number, TrackingNode>;
|
|
9
|
+
export declare function endTracking(prevNodes: Map<number, TrackingNode>): void;
|
|
7
10
|
export declare function updateTracking(node: NodeValue, track?: boolean | Symbol, manual?: boolean): void;
|
|
8
11
|
export declare function untrack(node: NodeValue): void;
|
|
12
|
+
export declare function checkTracking(node: NodeValue, track: boolean | Symbol): void;
|
package/src/when.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function when(predicate: () =>
|
|
2
|
-
export declare function when(predicate: () =>
|
|
1
|
+
export declare function when<T>(predicate: () => T): Promise<T>;
|
|
2
|
+
export declare function when<T>(predicate: () => T, effect: (T: any) => void | (() => void)): () => void;
|
package/src/react/observer.d.ts
DELETED