@legendapp/state 0.10.0 → 0.11.0-beta.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/persist.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"persist.mjs","sources":["../../src/persist/configureObservablePersistence.ts","../../src/persist/local-storage.ts","../../src/persist/persistHelpers.ts","../../src/persist/persistObservable.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persist.mjs","sources":["../../src/persist/configureObservablePersistence.ts","../../src/persist/local-storage.ts","../../src/persist/persistHelpers.ts","../../src/persist/persistObservable.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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"}
package/react.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from './src/react/useObservables';
2
- export * from './src/react/useNewObservable';
1
+ export * from './src/react/observer';
2
+ export * from './src/react/useComputed';
3
+ export * from './src/react/useObservable';
package/react.js CHANGED
@@ -2,145 +2,111 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var state = require('@legendapp/state');
6
5
  var react = require('react');
6
+ var state = require('@legendapp/state');
7
+
8
+ function listenWhileCalling(fn, listeners, updateFn) {
9
+ var _a;
10
+ // Cache previous tracking nodes since this might be nested from another observing component
11
+ const trackingPrev = state.tracking.nodes;
12
+ // Reset tracking nodes
13
+ state.tracking.nodes = new Map();
14
+ // Calling the function fills up the tracking nodes
15
+ const ret = fn();
16
+ const nodes = state.tracking.nodes;
17
+ // Restore previous tracking nodes
18
+ state.tracking.nodes = trackingPrev;
19
+ // Listen to any nodes not already listened
20
+ for (let tracked of nodes) {
21
+ const { node, shallow } = tracked[1];
22
+ // Listen to this path if not already listening
23
+ if (!((_a = node.listeners) === null || _a === void 0 ? void 0 : _a.has(updateFn))) {
24
+ listeners.add(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
25
+ }
26
+ }
27
+ return ret;
28
+ }
7
29
 
8
30
  function useForceRender() {
9
31
  const [, forceRender] = react.useReducer((s) => s + 1, 0);
10
- return () => forceRender();
32
+ return react.useCallback(() => forceRender(), []);
11
33
  }
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
- * @param deps If present, useObservables will re-activate if the values in the list change. By default it will never reactivate, which is the same as a [] argument.
17
34
 
18
- *
19
- * @see https://www.legendapp.com/dev/state/react/#useobservables
20
- */
21
- function useObservables(fn, deps) {
22
- const forceRender = useForceRender();
23
- const ref = react.useRef({ fn, isFirst: true, value: undefined, listeners: new Set() });
24
- ref.current.fn = fn;
25
- react.useMemo(() => setup(ref, forceRender), deps || []);
26
- react.useEffect(() => () => ref.current.listeners.forEach((dispose) => dispose()), []);
27
- return ref.current.value;
28
- }
29
- function setup(ref, forceRender) {
30
- // Clear out previous listeners before computing new ones
31
- if (ref.current.listeners.size > 0) {
32
- ref.current.listeners.forEach((dispose) => dispose());
33
- ref.current.listeners.clear();
34
- }
35
- let previousPrimitives;
36
- const updateFromSelector = () => {
37
- // Compute returns a string concatenated with all of the primitive values in the arguments
38
- // so we can easily compare that to the previous result and re-render only if it's different.
39
- const args = ref.current.fn();
40
- const { primitives, value } = compute(args);
41
- if (previousPrimitives !== primitives) {
42
- previousPrimitives = primitives;
43
- ref.current.value = value;
44
- forceRender();
35
+ const hasSymbol = typeof Symbol === 'function' && Symbol.for;
36
+ // Extracting the forwardRef inspired by https://github.com/mobxjs/mobx/blob/main/packages/mobx-react-lite/src/observer.ts
37
+ const ReactForwardRefSymbol = hasSymbol
38
+ ? Symbol.for('react.forward_ref')
39
+ : typeof react.forwardRef === 'function' && react.forwardRef((props) => null)['$$typeof'];
40
+ function observer(component) {
41
+ // Unwrap forwardRef on the component
42
+ let useForwardRef;
43
+ if (ReactForwardRefSymbol && component['$$typeof'] === ReactForwardRefSymbol) {
44
+ useForwardRef = true;
45
+ component = component['render'];
46
+ if (process.env.NODE_ENV === 'development' && typeof component !== 'function') {
47
+ throw new Error(`[legend-state] \`render\` property of ForwardRef was not a function`);
45
48
  }
49
+ }
50
+ const componentName = component.displayName || component.name;
51
+ // Create a wrapper observer component
52
+ let observer = function (props, ref) {
53
+ const refListeners = react.useRef();
54
+ if (!refListeners.current)
55
+ refListeners.current = new Set();
56
+ const forceRender = useForceRender();
57
+ // Clean up listeners on the way out
58
+ react.useEffect(() => () => refListeners.current.forEach((dispose) => dispose()), []);
59
+ // Set up all the listeners while rendering the component
60
+ return listenWhileCalling(() => component(props, ref), refListeners.current, forceRender);
46
61
  };
47
- const updateListeners = (nodes, updateFn) => {
48
- var _a;
49
- for (let i = 0; i < nodes.length; i++) {
50
- const { node, shallow } = nodes[i];
51
- // Listen to this path if not already listening
52
- if (!((_a = node.listeners) === null || _a === void 0 ? void 0 : _a.has(updateFn))) {
53
- ref.current.listeners.add(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
54
- }
55
- }
56
- };
57
- const update = () => {
58
- state.tracking.is = true;
59
- state.tracking.nodes = [];
60
- // tracking.nodes is updated any time a primitive is accessed or get() is called
61
- // so after calling fn(), tracking.nodes will be filled with those selectors
62
- const args = ref.current.fn();
63
- const selectorNodes = state.tracking.nodes;
64
- state.tracking.nodes = [];
65
- // compute calls symbolGet on all of the observable arguments so afterwards
66
- // tracking.nodes will be filled with all of the observables in the arguments
67
- const { primitives, value } = compute(args);
68
- state.tracking.is = false;
69
- // Set up listeners on all nodes
70
- // Selectors only need to check for changes in the primitives while
71
- // observables need to check observable arguments to add listeners to any
72
- // that weren't there before
73
- updateListeners(selectorNodes, updateFromSelector);
74
- updateListeners(state.tracking.nodes, update);
75
- ref.current.value = value;
76
- // Re-render when called by a change handler
77
- if (!ref.current.isFirst) {
78
- previousPrimitives = primitives;
79
- forceRender();
80
- }
81
- ref.current.isFirst = false;
82
- };
83
- update();
62
+ if (componentName !== '') {
63
+ observer.displayName = componentName;
64
+ }
65
+ // Wrap back in forwardRef if necessary
66
+ if (useForwardRef) {
67
+ observer = react.forwardRef(observer);
68
+ }
69
+ return react.memo(observer);
84
70
  }
85
- function compute(args) {
86
- let value;
87
- let primitives = '';
88
- if (args !== undefined && args !== null) {
89
- let isPrim;
90
- if (state.isArray(args)) {
91
- // Process arguments as an array
92
- value = [];
93
- for (let i = 0; i < args.length; i++) {
94
- isPrim = state.isPrimitive(args[i]);
95
- if (isPrim)
96
- primitives += args[i];
97
- value[i] = isPrim ? args[i] : state.getObservableRawValue(args[i]);
98
- }
99
- }
100
- else {
101
- isPrim = state.isPrimitive(args);
102
- if (isPrim || args[state.symbolIsObservable] || args[state.symbolShallow]) {
103
- // Process a single value
104
- if (isPrim)
105
- primitives += args;
106
- value = isPrim ? args : state.getObservableRawValue(args);
107
- }
108
- else if (state.isObject(args)) {
109
- // Process a flat object of observables
110
- value = {};
111
- const keys = Object.keys(args);
112
- const length = keys.length;
113
- for (let i = 0; i < length; i++) {
114
- const key = keys[i];
115
- isPrim = state.isPrimitive(args[key]);
116
- if (isPrim)
117
- primitives += args[key];
118
- value[key] = isPrim ? args[key] : state.getObservableRawValue(args[key]);
119
- }
71
+
72
+ function useComputed(selector, deps) {
73
+ const ref = react.useRef();
74
+ if (!ref.current)
75
+ ref.current = new Set();
76
+ // Do all the computed magic inside a useMemo so we can get an initial value
77
+ const initial = react.useMemo(() => {
78
+ let prevValue;
79
+ const onChange = () => {
80
+ const v = selector();
81
+ // If the selector value is different than previously
82
+ if (v !== prevValue) {
83
+ prevValue = v;
84
+ setValue(v);
120
85
  }
121
- }
122
- }
123
- return { value: value, primitives };
86
+ };
87
+ // Set up all the listeners while computing the value
88
+ prevValue = listenWhileCalling(selector, ref.current, onChange);
89
+ return prevValue;
90
+ }, deps || []);
91
+ const [value, setValue] = react.useState(initial);
92
+ // Clean up listeners on the way out
93
+ react.useEffect(() => () => ref.current.forEach((dispose) => dispose()), []);
94
+ return value;
124
95
  }
125
96
 
126
97
  /**
127
98
  * A React hook that creates a new observable and can optionally listen or persist its state.
128
99
  *
129
- * @param value The initial value of the observable or a function that returns the initial value
130
- * @param observe (optional) Listen to the observable for changes
131
- * @param persist (optional) PersistOptions for peristing the observable to state
100
+ * @param initialValue The initial value of the observable or a function that returns the initial value
132
101
  *
133
- * @see https://www.legendapp.com/dev/state/react/#usenewobservable
102
+ * @see https://www.legendapp.com/dev/state/react/#useObservable
134
103
  */
135
- function useNewObservable(value, observe) {
104
+ function useObservable(initialValue) {
136
105
  // Create the observable from the default value
137
- const obs = react.useMemo(() => state.observable(state.isFunction(value) ? value() : value), []); // eslint-disable-line react-hooks/exhaustive-deps
138
- if (observe !== false) {
139
- useObservables(() => [obs]);
140
- }
141
- return [obs, obs[state.symbolGet]];
106
+ return react.useMemo(() => state.observable(state.isFunction(initialValue) ? initialValue() : initialValue), []); // eslint-disable-line react-hooks/exhaustive-deps
142
107
  }
143
108
 
144
- exports.useNewObservable = useNewObservable;
145
- exports.useObservables = useObservables;
109
+ exports.observer = observer;
110
+ exports.useComputed = useComputed;
111
+ exports.useObservable = useObservable;
146
112
  //# sourceMappingURL=react.js.map
package/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../../src/react/useObservables.ts","../../src/react/useNewObservable.ts"],"sourcesContent":[null,null],"names":["useReducer","useRef","useMemo","useEffect","onChangeShallow","onChange","tracking","isArray","isPrimitive","getObservableRawValue","symbolIsObservable","symbolShallow","isObject","observable","isFunction","symbolGet"],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sources":["../../src/react/listenWhileCalling.ts","../../src/react/useForceRender.ts","../../src/react/observer.ts","../../src/react/useComputed.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null],"names":["tracking","onChangeShallow","onChange","useReducer","useCallback","forwardRef","useRef","useEffect","memo","useMemo","useState","observable","isFunction"],"mappings":"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"}
package/react.mjs CHANGED
@@ -1,141 +1,106 @@
1
- import { tracking, isArray, isPrimitive, getObservableRawValue, symbolIsObservable, symbolShallow, isObject, onChangeShallow, onChange, observable, isFunction, symbolGet } from '@legendapp/state';
2
- import { useRef, useMemo, useEffect, useReducer } from 'react';
1
+ import { useReducer, useCallback, forwardRef, memo, useRef, useEffect, useMemo, useState } from 'react';
2
+ import { tracking, onChangeShallow, onChange, observable, isFunction } from '@legendapp/state';
3
+
4
+ function listenWhileCalling(fn, listeners, updateFn) {
5
+ var _a;
6
+ // Cache previous tracking nodes since this might be nested from another observing component
7
+ const trackingPrev = tracking.nodes;
8
+ // Reset tracking nodes
9
+ tracking.nodes = new Map();
10
+ // Calling the function fills up the tracking nodes
11
+ const ret = fn();
12
+ const nodes = tracking.nodes;
13
+ // Restore previous tracking nodes
14
+ tracking.nodes = trackingPrev;
15
+ // Listen to any nodes not already listened
16
+ for (let tracked of nodes) {
17
+ const { node, shallow } = tracked[1];
18
+ // Listen to this path if not already listening
19
+ if (!((_a = node.listeners) === null || _a === void 0 ? void 0 : _a.has(updateFn))) {
20
+ listeners.add(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
21
+ }
22
+ }
23
+ return ret;
24
+ }
3
25
 
4
26
  function useForceRender() {
5
27
  const [, forceRender] = useReducer((s) => s + 1, 0);
6
- return () => forceRender();
28
+ return useCallback(() => forceRender(), []);
7
29
  }
8
- /**
9
- * A React hook that listens to observables and returns their values.
10
- *
11
- * @param fn A function that returns a single observable, an array of observables, or a flat object of observables
12
- * @param deps If present, useObservables will re-activate if the values in the list change. By default it will never reactivate, which is the same as a [] argument.
13
30
 
14
- *
15
- * @see https://www.legendapp.com/dev/state/react/#useobservables
16
- */
17
- function useObservables(fn, deps) {
18
- const forceRender = useForceRender();
19
- const ref = useRef({ fn, isFirst: true, value: undefined, listeners: new Set() });
20
- ref.current.fn = fn;
21
- useMemo(() => setup(ref, forceRender), deps || []);
22
- useEffect(() => () => ref.current.listeners.forEach((dispose) => dispose()), []);
23
- return ref.current.value;
24
- }
25
- function setup(ref, forceRender) {
26
- // Clear out previous listeners before computing new ones
27
- if (ref.current.listeners.size > 0) {
28
- ref.current.listeners.forEach((dispose) => dispose());
29
- ref.current.listeners.clear();
30
- }
31
- let previousPrimitives;
32
- const updateFromSelector = () => {
33
- // Compute returns a string concatenated with all of the primitive values in the arguments
34
- // so we can easily compare that to the previous result and re-render only if it's different.
35
- const args = ref.current.fn();
36
- const { primitives, value } = compute(args);
37
- if (previousPrimitives !== primitives) {
38
- previousPrimitives = primitives;
39
- ref.current.value = value;
40
- forceRender();
41
- }
42
- };
43
- const updateListeners = (nodes, updateFn) => {
44
- var _a;
45
- for (let i = 0; i < nodes.length; i++) {
46
- const { node, shallow } = nodes[i];
47
- // Listen to this path if not already listening
48
- if (!((_a = node.listeners) === null || _a === void 0 ? void 0 : _a.has(updateFn))) {
49
- ref.current.listeners.add(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
50
- }
31
+ const hasSymbol = typeof Symbol === 'function' && Symbol.for;
32
+ // Extracting the forwardRef inspired by https://github.com/mobxjs/mobx/blob/main/packages/mobx-react-lite/src/observer.ts
33
+ const ReactForwardRefSymbol = hasSymbol
34
+ ? Symbol.for('react.forward_ref')
35
+ : typeof forwardRef === 'function' && forwardRef((props) => null)['$$typeof'];
36
+ function observer(component) {
37
+ // Unwrap forwardRef on the component
38
+ let useForwardRef;
39
+ if (ReactForwardRefSymbol && component['$$typeof'] === ReactForwardRefSymbol) {
40
+ useForwardRef = true;
41
+ component = component['render'];
42
+ if (process.env.NODE_ENV === 'development' && typeof component !== 'function') {
43
+ throw new Error(`[legend-state] \`render\` property of ForwardRef was not a function`);
51
44
  }
45
+ }
46
+ const componentName = component.displayName || component.name;
47
+ // Create a wrapper observer component
48
+ let observer = function (props, ref) {
49
+ const refListeners = useRef();
50
+ if (!refListeners.current)
51
+ refListeners.current = new Set();
52
+ const forceRender = useForceRender();
53
+ // Clean up listeners on the way out
54
+ useEffect(() => () => refListeners.current.forEach((dispose) => dispose()), []);
55
+ // Set up all the listeners while rendering the component
56
+ return listenWhileCalling(() => component(props, ref), refListeners.current, forceRender);
52
57
  };
53
- const update = () => {
54
- tracking.is = true;
55
- tracking.nodes = [];
56
- // tracking.nodes is updated any time a primitive is accessed or get() is called
57
- // so after calling fn(), tracking.nodes will be filled with those selectors
58
- const args = ref.current.fn();
59
- const selectorNodes = tracking.nodes;
60
- tracking.nodes = [];
61
- // compute calls symbolGet on all of the observable arguments so afterwards
62
- // tracking.nodes will be filled with all of the observables in the arguments
63
- const { primitives, value } = compute(args);
64
- tracking.is = false;
65
- // Set up listeners on all nodes
66
- // Selectors only need to check for changes in the primitives while
67
- // observables need to check observable arguments to add listeners to any
68
- // that weren't there before
69
- updateListeners(selectorNodes, updateFromSelector);
70
- updateListeners(tracking.nodes, update);
71
- ref.current.value = value;
72
- // Re-render when called by a change handler
73
- if (!ref.current.isFirst) {
74
- previousPrimitives = primitives;
75
- forceRender();
76
- }
77
- ref.current.isFirst = false;
78
- };
79
- update();
58
+ if (componentName !== '') {
59
+ observer.displayName = componentName;
60
+ }
61
+ // Wrap back in forwardRef if necessary
62
+ if (useForwardRef) {
63
+ observer = forwardRef(observer);
64
+ }
65
+ return memo(observer);
80
66
  }
81
- function compute(args) {
82
- let value;
83
- let primitives = '';
84
- if (args !== undefined && args !== null) {
85
- let isPrim;
86
- if (isArray(args)) {
87
- // Process arguments as an array
88
- value = [];
89
- for (let i = 0; i < args.length; i++) {
90
- isPrim = isPrimitive(args[i]);
91
- if (isPrim)
92
- primitives += args[i];
93
- value[i] = isPrim ? args[i] : getObservableRawValue(args[i]);
94
- }
95
- }
96
- else {
97
- isPrim = isPrimitive(args);
98
- if (isPrim || args[symbolIsObservable] || args[symbolShallow]) {
99
- // Process a single value
100
- if (isPrim)
101
- primitives += args;
102
- value = isPrim ? args : getObservableRawValue(args);
103
- }
104
- else if (isObject(args)) {
105
- // Process a flat object of observables
106
- value = {};
107
- const keys = Object.keys(args);
108
- const length = keys.length;
109
- for (let i = 0; i < length; i++) {
110
- const key = keys[i];
111
- isPrim = isPrimitive(args[key]);
112
- if (isPrim)
113
- primitives += args[key];
114
- value[key] = isPrim ? args[key] : getObservableRawValue(args[key]);
115
- }
67
+
68
+ function useComputed(selector, deps) {
69
+ const ref = useRef();
70
+ if (!ref.current)
71
+ ref.current = new Set();
72
+ // Do all the computed magic inside a useMemo so we can get an initial value
73
+ const initial = useMemo(() => {
74
+ let prevValue;
75
+ const onChange = () => {
76
+ const v = selector();
77
+ // If the selector value is different than previously
78
+ if (v !== prevValue) {
79
+ prevValue = v;
80
+ setValue(v);
116
81
  }
117
- }
118
- }
119
- return { value: value, primitives };
82
+ };
83
+ // Set up all the listeners while computing the value
84
+ prevValue = listenWhileCalling(selector, ref.current, onChange);
85
+ return prevValue;
86
+ }, deps || []);
87
+ const [value, setValue] = useState(initial);
88
+ // Clean up listeners on the way out
89
+ useEffect(() => () => ref.current.forEach((dispose) => dispose()), []);
90
+ return value;
120
91
  }
121
92
 
122
93
  /**
123
94
  * A React hook that creates a new observable and can optionally listen or persist its state.
124
95
  *
125
- * @param value The initial value of the observable or a function that returns the initial value
126
- * @param observe (optional) Listen to the observable for changes
127
- * @param persist (optional) PersistOptions for peristing the observable to state
96
+ * @param initialValue The initial value of the observable or a function that returns the initial value
128
97
  *
129
- * @see https://www.legendapp.com/dev/state/react/#usenewobservable
98
+ * @see https://www.legendapp.com/dev/state/react/#useObservable
130
99
  */
131
- function useNewObservable(value, observe) {
100
+ function useObservable(initialValue) {
132
101
  // Create the observable from the default value
133
- const obs = useMemo(() => observable(isFunction(value) ? value() : value), []); // eslint-disable-line react-hooks/exhaustive-deps
134
- if (observe !== false) {
135
- useObservables(() => [obs]);
136
- }
137
- return [obs, obs[symbolGet]];
102
+ return useMemo(() => observable(isFunction(initialValue) ? initialValue() : initialValue), []); // eslint-disable-line react-hooks/exhaustive-deps
138
103
  }
139
104
 
140
- export { useNewObservable, useObservables };
105
+ export { observer, useComputed, useObservable };
141
106
  //# sourceMappingURL=react.mjs.map
package/react.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.mjs","sources":["../../src/react/useObservables.ts","../../src/react/useNewObservable.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.mjs","sources":["../../src/react/listenWhileCalling.ts","../../src/react/useForceRender.ts","../../src/react/observer.ts","../../src/react/useComputed.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null],"names":[],"mappings":"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"}
package/src/globals.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- import { ObservableTypeRender, NodeValue } from './observableInterfaces';
1
+ import { NodeValue } from './observableInterfaces';
2
2
  export declare const symbolDateModified: unique symbol;
3
- export declare const symbolShallow: unique symbol;
4
- export declare const symbolGet: unique symbol;
5
3
  export declare const symbolIsObservable: unique symbol;
4
+ export declare const nextNodeID: {
5
+ current: number;
6
+ };
7
+ export declare function getOutputValue(node: NodeValue): any;
8
+ export declare function get(node: NodeValue): any;
9
+ export declare function observe(node: NodeValue, shallow?: boolean): any;
6
10
  export declare function getNodeValue(node: NodeValue): any;
7
11
  export declare function getChildNode(node: NodeValue, key: string | number): NodeValue;
8
- export declare function getObservableRawValue<T>(obs: ObservableTypeRender<T>): T;
package/src/helpers.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type { ObservableType, Shallow } from './observableInterfaces';
2
- export declare function shallow(obs: ObservableType): Shallow;
1
+ import type { ObservableType } from './observableInterfaces';
3
2
  export declare function isObservable(obs: any): boolean;
4
3
  export declare function mergeIntoObservable(target: ObservableType | object, ...sources: any[]): any;