@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 +9 -3
- package/react-native-types.d.ts +38 -0
- package/react-native.js +20 -18
- package/react-native.js.map +1 -1
- package/react-native.mjs +21 -19
- package/react-native.mjs.map +1 -1
- package/{types.d.ts → react-types.d.ts} +0 -0
- package/react.js +20 -18
- package/react.js.map +1 -1
- package/react.mjs +21 -19
- package/react.mjs.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@legendapp/state",
|
|
3
|
-
"version": "0.12.0
|
|
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
|
package/react-native.js.map
CHANGED
|
@@ -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","
|
|
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
|
package/react-native.mjs.map
CHANGED
|
@@ -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":";;;;SAEgB,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;;ACFgB,SAAA,WAAW,CAAI,EAAW,EAAE,QAAoB,EAAA
|
|
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","
|
|
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":";;;SAEgB,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;;ACFgB,SAAA,WAAW,CAAI,EAAW,EAAE,QAAoB,EAAA
|
|
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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"}
|