@legendapp/state 0.12.0-next.5 → 0.12.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/state",
3
- "version": "0.12.0-next.5",
3
+ "version": "0.12.0",
4
4
  "description": "legend-state",
5
5
  "sideEffects": false,
6
6
  "private": false,
@@ -52,8 +52,11 @@
52
52
  "require": "./trace.js",
53
53
  "types": "./trace.d.ts"
54
54
  },
55
- "./types": {
56
- "types": "./types.d.ts"
55
+ "./react-types": {
56
+ "types": "./react-types.d.ts"
57
+ },
58
+ "./react-native-types": {
59
+ "types": "./react-native-types.d.ts"
57
60
  },
58
61
  "./babel": "./babel.js"
59
62
  },
@@ -66,6 +69,9 @@
66
69
  "react": {
67
70
  "optional": true
68
71
  },
72
+ "react-native": {
73
+ "optional": true
74
+ },
69
75
  "react-native-mmkv": {
70
76
  "optional": true
71
77
  }
@@ -0,0 +1,38 @@
1
+ import 'react-native';
2
+
3
+ declare module 'react-native' {
4
+ interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
5
+ isolate?: boolean;
6
+ memo?: boolean;
7
+ }
8
+
9
+ interface ImagePropsBase {
10
+ isolate?: boolean;
11
+ memo?: boolean;
12
+ }
13
+
14
+ interface ViewProps {
15
+ isolate?: boolean;
16
+ memo?: boolean;
17
+ }
18
+
19
+ interface TextProps {
20
+ isolate?: boolean;
21
+ memo?: boolean;
22
+ }
23
+
24
+ interface SwitchProps {
25
+ isolate?: boolean;
26
+ memo?: boolean;
27
+ }
28
+
29
+ interface InputAccessoryViewProps {
30
+ isolate?: boolean;
31
+ memo?: boolean;
32
+ }
33
+
34
+ interface TouchableWithoutFeedbackProps {
35
+ isolate?: boolean;
36
+ memo?: boolean;
37
+ }
38
+ }
package/react-native.js CHANGED
@@ -13,30 +13,23 @@ function useForceRender() {
13
13
 
14
14
  function useObserver(fn, updateFn) {
15
15
  var _a;
16
+ const listeners = react.useRef([]).current;
17
+ // Cleanup old listeners before tracking
18
+ if (listeners.length > 0) {
19
+ cleanup(listeners);
20
+ }
16
21
  // Cache previous tracking nodes since this might be nested from another observing component
17
22
  const trackingPrev = state.tracking.nodes;
18
23
  // Reset tracking nodes
19
24
  state.tracking.nodes = new Map();
20
- let nodes;
21
- // Create the listener effect before calling fn so that it gets called before
22
- // effects in the component
23
- react.useEffect(() => {
24
- const listeners = [];
25
- // Listen to tracked nodes
26
- for (let tracked of nodes) {
27
- const { node, shallow } = tracked[1];
28
- listeners.push(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
29
- }
30
- // Cleanup listeners
31
- return () => {
32
- for (let i = 0; i < listeners.length; i++) {
33
- listeners[i]();
34
- }
35
- };
36
- });
37
25
  // Calling the function fills up the tracking nodes
38
26
  const ret = fn();
39
- nodes = state.tracking.nodes;
27
+ const nodes = state.tracking.nodes;
28
+ // Listen to tracked nodes
29
+ for (let tracked of nodes) {
30
+ const { node, shallow } = tracked[1];
31
+ listeners.push(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
32
+ }
40
33
  // Do tracing if it was requested
41
34
  if (process.env.NODE_ENV === 'development') {
42
35
  (_a = state.tracking.listeners) === null || _a === void 0 ? void 0 : _a.call(state.tracking, nodes);
@@ -46,8 +39,17 @@ function useObserver(fn, updateFn) {
46
39
  }
47
40
  // Restore previous tracking nodes
48
41
  state.tracking.nodes = trackingPrev;
42
+ // Cleanup listeners on unmounts
43
+ react.useEffect(() => () => cleanup(listeners), []);
49
44
  return ret;
50
45
  }
46
+ function cleanup(listeners) {
47
+ // Cleanup listeners
48
+ for (let i = 0; i < listeners.length; i++) {
49
+ listeners[i]();
50
+ }
51
+ listeners.length = 0;
52
+ }
51
53
 
52
54
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
53
55
  // Extracting the forwardRef inspired by https://github.com/mobxjs/mobx/blob/main/packages/mobx-react-lite/src/observer.ts
@@ -1 +1 @@
1
- {"version":3,"file":"react-native.js","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react-native/components.tsx"],"sourcesContent":[null,null,null,null],"names":["useReducer","useCallback","tracking","useEffect","onChangeShallow","onChange","forwardRef","memo","isFunction","createElement","LS","RNTextInput","RNSwitch"],"mappings":"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"}
1
+ {"version":3,"file":"react-native.js","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react-native/components.tsx"],"sourcesContent":[null,null,null,null],"names":["useReducer","useCallback","useRef","tracking","onChangeShallow","onChange","useEffect","forwardRef","memo","isFunction","createElement","LS","RNTextInput","RNSwitch"],"mappings":"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"}
package/react-native.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { useReducer, useCallback, useEffect, forwardRef, memo, createElement } from 'react';
1
+ import { useReducer, useCallback, useRef, useEffect, forwardRef, memo, createElement } from 'react';
2
2
  import { tracking, onChangeShallow, onChange, isFunction } from '@legendapp/state';
3
3
  import { TextInput, Switch } from 'react-native';
4
4
 
@@ -9,30 +9,23 @@ function useForceRender() {
9
9
 
10
10
  function useObserver(fn, updateFn) {
11
11
  var _a;
12
+ const listeners = useRef([]).current;
13
+ // Cleanup old listeners before tracking
14
+ if (listeners.length > 0) {
15
+ cleanup(listeners);
16
+ }
12
17
  // Cache previous tracking nodes since this might be nested from another observing component
13
18
  const trackingPrev = tracking.nodes;
14
19
  // Reset tracking nodes
15
20
  tracking.nodes = new Map();
16
- let nodes;
17
- // Create the listener effect before calling fn so that it gets called before
18
- // effects in the component
19
- useEffect(() => {
20
- const listeners = [];
21
- // Listen to tracked nodes
22
- for (let tracked of nodes) {
23
- const { node, shallow } = tracked[1];
24
- listeners.push(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
25
- }
26
- // Cleanup listeners
27
- return () => {
28
- for (let i = 0; i < listeners.length; i++) {
29
- listeners[i]();
30
- }
31
- };
32
- });
33
21
  // Calling the function fills up the tracking nodes
34
22
  const ret = fn();
35
- nodes = tracking.nodes;
23
+ const nodes = tracking.nodes;
24
+ // Listen to tracked nodes
25
+ for (let tracked of nodes) {
26
+ const { node, shallow } = tracked[1];
27
+ listeners.push(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
28
+ }
36
29
  // Do tracing if it was requested
37
30
  if (process.env.NODE_ENV === 'development') {
38
31
  (_a = tracking.listeners) === null || _a === void 0 ? void 0 : _a.call(tracking, nodes);
@@ -42,8 +35,17 @@ function useObserver(fn, updateFn) {
42
35
  }
43
36
  // Restore previous tracking nodes
44
37
  tracking.nodes = trackingPrev;
38
+ // Cleanup listeners on unmounts
39
+ useEffect(() => () => cleanup(listeners), []);
45
40
  return ret;
46
41
  }
42
+ function cleanup(listeners) {
43
+ // Cleanup listeners
44
+ for (let i = 0; i < listeners.length; i++) {
45
+ listeners[i]();
46
+ }
47
+ listeners.length = 0;
48
+ }
47
49
 
48
50
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
49
51
  // Extracting the forwardRef inspired by https://github.com/mobxjs/mobx/blob/main/packages/mobx-react-lite/src/observer.ts
@@ -1 +1 @@
1
- {"version":3,"file":"react-native.mjs","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react-native/components.tsx"],"sourcesContent":[null,null,null,null],"names":["RNTextInput","RNSwitch"],"mappings":"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"}
1
+ {"version":3,"file":"react-native.mjs","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react-native/components.tsx"],"sourcesContent":[null,null,null,null],"names":["RNTextInput","RNSwitch"],"mappings":"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"}
File without changes
package/react.js CHANGED
@@ -12,30 +12,23 @@ function useForceRender() {
12
12
 
13
13
  function useObserver(fn, updateFn) {
14
14
  var _a;
15
+ const listeners = react.useRef([]).current;
16
+ // Cleanup old listeners before tracking
17
+ if (listeners.length > 0) {
18
+ cleanup(listeners);
19
+ }
15
20
  // Cache previous tracking nodes since this might be nested from another observing component
16
21
  const trackingPrev = state.tracking.nodes;
17
22
  // Reset tracking nodes
18
23
  state.tracking.nodes = new Map();
19
- let nodes;
20
- // Create the listener effect before calling fn so that it gets called before
21
- // effects in the component
22
- react.useEffect(() => {
23
- const listeners = [];
24
- // Listen to tracked nodes
25
- for (let tracked of nodes) {
26
- const { node, shallow } = tracked[1];
27
- listeners.push(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
28
- }
29
- // Cleanup listeners
30
- return () => {
31
- for (let i = 0; i < listeners.length; i++) {
32
- listeners[i]();
33
- }
34
- };
35
- });
36
24
  // Calling the function fills up the tracking nodes
37
25
  const ret = fn();
38
- nodes = state.tracking.nodes;
26
+ const nodes = state.tracking.nodes;
27
+ // Listen to tracked nodes
28
+ for (let tracked of nodes) {
29
+ const { node, shallow } = tracked[1];
30
+ listeners.push(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
31
+ }
39
32
  // Do tracing if it was requested
40
33
  if (process.env.NODE_ENV === 'development') {
41
34
  (_a = state.tracking.listeners) === null || _a === void 0 ? void 0 : _a.call(state.tracking, nodes);
@@ -45,8 +38,17 @@ function useObserver(fn, updateFn) {
45
38
  }
46
39
  // Restore previous tracking nodes
47
40
  state.tracking.nodes = trackingPrev;
41
+ // Cleanup listeners on unmounts
42
+ react.useEffect(() => () => cleanup(listeners), []);
48
43
  return ret;
49
44
  }
45
+ function cleanup(listeners) {
46
+ // Cleanup listeners
47
+ for (let i = 0; i < listeners.length; i++) {
48
+ listeners[i]();
49
+ }
50
+ listeners.length = 0;
51
+ }
50
52
 
51
53
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
52
54
  // Extracting the forwardRef inspired by https://github.com/mobxjs/mobx/blob/main/packages/mobx-react-lite/src/observer.ts
package/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react/components.tsx","../../src/globals.ts","../../src/helpers.ts","../../src/react/Isolate.tsx","../../src/react/useComputed.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["useReducer","useCallback","tracking","useEffect","onChangeShallow","onChange","forwardRef","memo","isFunction","createElement","LS","useMemo","useState","observable"],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react/components.tsx","../../src/globals.ts","../../src/helpers.ts","../../src/react/Isolate.tsx","../../src/react/useComputed.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["useReducer","useCallback","useRef","tracking","onChangeShallow","onChange","useEffect","forwardRef","memo","isFunction","createElement","LS","useMemo","useState","observable"],"mappings":"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"}
package/react.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { useReducer, useCallback, useEffect, forwardRef, memo, createElement, useMemo, useState } from 'react';
1
+ import { useReducer, useCallback, useRef, useEffect, forwardRef, memo, createElement, useMemo, useState } from 'react';
2
2
  import { tracking, onChangeShallow, onChange, isFunction, observable } from '@legendapp/state';
3
3
 
4
4
  function useForceRender() {
@@ -8,30 +8,23 @@ function useForceRender() {
8
8
 
9
9
  function useObserver(fn, updateFn) {
10
10
  var _a;
11
+ const listeners = useRef([]).current;
12
+ // Cleanup old listeners before tracking
13
+ if (listeners.length > 0) {
14
+ cleanup(listeners);
15
+ }
11
16
  // Cache previous tracking nodes since this might be nested from another observing component
12
17
  const trackingPrev = tracking.nodes;
13
18
  // Reset tracking nodes
14
19
  tracking.nodes = new Map();
15
- let nodes;
16
- // Create the listener effect before calling fn so that it gets called before
17
- // effects in the component
18
- useEffect(() => {
19
- const listeners = [];
20
- // Listen to tracked nodes
21
- for (let tracked of nodes) {
22
- const { node, shallow } = tracked[1];
23
- listeners.push(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
24
- }
25
- // Cleanup listeners
26
- return () => {
27
- for (let i = 0; i < listeners.length; i++) {
28
- listeners[i]();
29
- }
30
- };
31
- });
32
20
  // Calling the function fills up the tracking nodes
33
21
  const ret = fn();
34
- nodes = tracking.nodes;
22
+ const nodes = tracking.nodes;
23
+ // Listen to tracked nodes
24
+ for (let tracked of nodes) {
25
+ const { node, shallow } = tracked[1];
26
+ listeners.push(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
27
+ }
35
28
  // Do tracing if it was requested
36
29
  if (process.env.NODE_ENV === 'development') {
37
30
  (_a = tracking.listeners) === null || _a === void 0 ? void 0 : _a.call(tracking, nodes);
@@ -41,8 +34,17 @@ function useObserver(fn, updateFn) {
41
34
  }
42
35
  // Restore previous tracking nodes
43
36
  tracking.nodes = trackingPrev;
37
+ // Cleanup listeners on unmounts
38
+ useEffect(() => () => cleanup(listeners), []);
44
39
  return ret;
45
40
  }
41
+ function cleanup(listeners) {
42
+ // Cleanup listeners
43
+ for (let i = 0; i < listeners.length; i++) {
44
+ listeners[i]();
45
+ }
46
+ listeners.length = 0;
47
+ }
46
48
 
47
49
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
48
50
  // Extracting the forwardRef inspired by https://github.com/mobxjs/mobx/blob/main/packages/mobx-react-lite/src/observer.ts
package/react.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.mjs","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react/components.tsx","../../src/globals.ts","../../src/helpers.ts","../../src/react/Isolate.tsx","../../src/react/useComputed.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.mjs","sources":["../../src/react/useForceRender.ts","../../src/react/useObserver.ts","../../src/react/observer.ts","../../src/react/components.tsx","../../src/globals.ts","../../src/helpers.ts","../../src/react/Isolate.tsx","../../src/react/useComputed.ts","../../src/react/useObservable.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}