@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/react.mjs CHANGED
@@ -1,5 +1,151 @@
1
- import { observe, setupTracking, symbolUndef, tracking, isFunction, Tracking, isObservable, getNodeValue, onChange, extraPrimitiveProps, observable } from '@legendapp/state';
2
- import { useReducer, useCallback, useEffect, memo, useRef, useMemo, createElement, forwardRef, useState } from 'react';
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, run and return the value
21
- // Don't need to run the selector again if not running and alwaysUpdate
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 computeProp(prop) {
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, observer, useComputed, useObservable };
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/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":[],"mappings":"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"}
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":"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"}
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: () => any;
6
- path: (string | number)[];
7
- valueAtPath: any;
8
- prevAtPath: any;
9
- node: NodeValue;
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;
@@ -186,6 +186,7 @@ export interface NodeValue {
186
186
  root: ObservableWrapper;
187
187
  listeners?: Set<{
188
188
  track: boolean | Symbol;
189
+ noArgs?: boolean;
189
190
  listener: ListenerFn;
190
191
  }>;
191
192
  }
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: () => any): Promise<void>;
2
- export declare function when(predicate: () => any, effect: () => void | (() => void)): () => void;
1
+ export declare function when<T>(predicate: () => T): Promise<T>;
2
+ export declare function when<T>(predicate: () => T, effect: (T: any) => void | (() => void)): () => void;
@@ -1,2 +0,0 @@
1
- import { ComponentProps, FC } from 'react';
2
- export declare function observer<T extends FC<any>>(component: T, propsAreEqual?: (prevProps: Readonly<ComponentProps<T>>, nextProps: Readonly<ComponentProps<T>>) => boolean): T;