@legendapp/state 0.12.0 → 0.12.1

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-native.js CHANGED
@@ -13,22 +13,40 @@ 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
+ const refFirstListeners = react.useRef(undefined);
21
17
  // Cache previous tracking nodes since this might be nested from another observing component
22
18
  const trackingPrev = state.tracking.nodes;
23
19
  // Reset tracking nodes
24
20
  state.tracking.nodes = new Map();
21
+ let nodes;
22
+ // Create the listener effect before calling fn so that it gets called before
23
+ // effects in the component
24
+ const effect = () => {
25
+ // If we have pre-mount listeners, clear them off
26
+ if (refFirstListeners.current) {
27
+ refFirstListeners.current();
28
+ refFirstListeners.current = undefined;
29
+ }
30
+ const listeners = [];
31
+ // Listen to tracked nodes
32
+ for (let tracked of nodes) {
33
+ const { node, shallow } = tracked[1];
34
+ listeners.push(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
35
+ }
36
+ // Cleanup listeners
37
+ return () => {
38
+ for (let i = 0; i < listeners.length; i++) {
39
+ listeners[i]();
40
+ }
41
+ };
42
+ };
43
+ react.useEffect(effect);
25
44
  // Calling the function fills up the tracking nodes
26
45
  const ret = fn();
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));
46
+ nodes = state.tracking.nodes;
47
+ // Call the effect immediately to set up listeners without waiting for mount
48
+ if (!refFirstListeners.current) {
49
+ refFirstListeners.current = effect();
32
50
  }
33
51
  // Do tracing if it was requested
34
52
  if (process.env.NODE_ENV === 'development') {
@@ -39,17 +57,8 @@ function useObserver(fn, updateFn) {
39
57
  }
40
58
  // Restore previous tracking nodes
41
59
  state.tracking.nodes = trackingPrev;
42
- // Cleanup listeners on unmounts
43
- react.useEffect(() => () => cleanup(listeners), []);
44
60
  return ret;
45
61
  }
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
- }
53
62
 
54
63
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
55
64
  // 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","useRef","tracking","onChangeShallow","onChange","useEffect","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
@@ -9,22 +9,40 @@ 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
+ const refFirstListeners = useRef(undefined);
17
13
  // Cache previous tracking nodes since this might be nested from another observing component
18
14
  const trackingPrev = tracking.nodes;
19
15
  // Reset tracking nodes
20
16
  tracking.nodes = new Map();
17
+ let nodes;
18
+ // Create the listener effect before calling fn so that it gets called before
19
+ // effects in the component
20
+ const effect = () => {
21
+ // If we have pre-mount listeners, clear them off
22
+ if (refFirstListeners.current) {
23
+ refFirstListeners.current();
24
+ refFirstListeners.current = undefined;
25
+ }
26
+ const listeners = [];
27
+ // Listen to tracked nodes
28
+ for (let tracked of nodes) {
29
+ const { node, shallow } = tracked[1];
30
+ listeners.push(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
31
+ }
32
+ // Cleanup listeners
33
+ return () => {
34
+ for (let i = 0; i < listeners.length; i++) {
35
+ listeners[i]();
36
+ }
37
+ };
38
+ };
39
+ useEffect(effect);
21
40
  // Calling the function fills up the tracking nodes
22
41
  const ret = fn();
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));
42
+ nodes = tracking.nodes;
43
+ // Call the effect immediately to set up listeners without waiting for mount
44
+ if (!refFirstListeners.current) {
45
+ refFirstListeners.current = effect();
28
46
  }
29
47
  // Do tracing if it was requested
30
48
  if (process.env.NODE_ENV === 'development') {
@@ -35,17 +53,8 @@ function useObserver(fn, updateFn) {
35
53
  }
36
54
  // Restore previous tracking nodes
37
55
  tracking.nodes = trackingPrev;
38
- // Cleanup listeners on unmounts
39
- useEffect(() => () => cleanup(listeners), []);
40
56
  return ret;
41
57
  }
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
- }
49
58
 
50
59
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
51
60
  // 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":";;;;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;;IAC5D,MAAM,SAAS,GAAG,MAAM,CAA8B,EAAE,CAAC,CAAC,OAAO,CAAC;;AAGlE,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,OAAO,CAAC,SAAS,CAAC,CAAC;AACtB,KAAA;;AAGD,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC;;AAGpC,IAAA,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;;AAG3B,IAAA,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC;AAEjB,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;;AAG7B,IAAA,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE;QACvB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAErC,SAAS,CAAC,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxF,KAAA;;AAGD,IAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,QAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,SAAS,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,EAAA,KAAK,CAAC,CAAC;QAC5B,IAAI,QAAQ,CAAC,OAAO,EAAE;AAClB,YAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzC,SAAA;AACJ,KAAA;;AAGD,IAAA,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC;;AAG9B,IAAA,SAAS,CAAC,MAAM,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AAE9C,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,SAAsC,EAAA;;AAEnD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAClB,KAAA;AACD,IAAA,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB;;AChDA,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC;AAE7D;AACA,MAAM,qBAAqB,GAAG,SAAS;AACnC,MAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACjC,MAAE,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,CAAC,CAAC,KAAU,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;AAEvE,SAAA,QAAQ,CACpB,SAAY,EACZ,aAA2G,EAAA;;AAG3G,IAAA,IAAI,aAAsB,CAAC;IAC3B,IAAI,qBAAqB,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,qBAAqB,EAAE;QAC1E,aAAa,GAAG,IAAI,CAAC;AACrB,QAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChC,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AAC3E,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,mEAAA,CAAqE,CAAC,CAAC;AAC1F,SAAA;AACJ,KAAA;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC;;AAG9D,IAAA,IAAI,QAAQ,GAAG,UAAU,KAAK,EAAE,GAAG,EAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;;AAGrC,QAAA,OAAO,WAAW,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;AACjE,KAAC,CAAC;IAEF,IAAI,aAAa,KAAK,EAAE,EAAE;AACrB,QAAA,QAAe,CAAC,WAAW,GAAG,aAAa,CAAC;AAChD,KAAA;;AAGD,IAAA,IAAI,aAAa,EAAE;AACf,QAAA,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAA;AAED,IAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAiB,CAAC;AACzD;;ACvBa,MAAA,MAAM,GAAG,UAIpB,SAAS,EAAE,QAA2B,EAAA;AACpC,IAAA,OAAO,QAAQ,CACX,UAAU,CAAC,SAAS,KAAK,CACrB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAgD,EACjF,GAAG,EAAA;AAEH,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,KAAI;gBAChC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,CAAC,CAAC,CAAC;aACjB,EAAE,EAAE,CAAC,CAAC;AAEP,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAE7B,YAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACxB,aAAA;YAED,OAAO,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACzG,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,aAAa,CAAC,SAAS,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AACpE,SAAA;KACJ,CAAC,CACL,CAAC;AACN,EAAE;AAEI,IAAW,GAMhB;AAND,CAAA,UAAiB,EAAE,EAAA;AACF,IAAA,EAAA,CAAA,SAAS,GAAG,MAAM,CAC3BA,SAAW,EACX,CAAC,CAAiD,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAC5E,CAAC;AACW,IAAA,EAAA,CAAA,MAAM,GAAG,MAAM,CAAoCC,MAAQ,EAAE,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AACjH,CAAC,EANgB,EAAE,KAAF,EAAE,GAMlB,EAAA,CAAA,CAAA;;;;"}
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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"}
package/react.js CHANGED
@@ -12,22 +12,40 @@ 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
+ const refFirstListeners = react.useRef(undefined);
20
16
  // Cache previous tracking nodes since this might be nested from another observing component
21
17
  const trackingPrev = state.tracking.nodes;
22
18
  // Reset tracking nodes
23
19
  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
+ const effect = () => {
24
+ // If we have pre-mount listeners, clear them off
25
+ if (refFirstListeners.current) {
26
+ refFirstListeners.current();
27
+ refFirstListeners.current = undefined;
28
+ }
29
+ const listeners = [];
30
+ // Listen to tracked nodes
31
+ for (let tracked of nodes) {
32
+ const { node, shallow } = tracked[1];
33
+ listeners.push(shallow ? state.onChangeShallow(node, updateFn) : state.onChange(node, updateFn));
34
+ }
35
+ // Cleanup listeners
36
+ return () => {
37
+ for (let i = 0; i < listeners.length; i++) {
38
+ listeners[i]();
39
+ }
40
+ };
41
+ };
42
+ react.useEffect(effect);
24
43
  // Calling the function fills up the tracking nodes
25
44
  const ret = fn();
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));
45
+ nodes = state.tracking.nodes;
46
+ // Call the effect immediately to set up listeners without waiting for mount
47
+ if (!refFirstListeners.current) {
48
+ refFirstListeners.current = effect();
31
49
  }
32
50
  // Do tracing if it was requested
33
51
  if (process.env.NODE_ENV === 'development') {
@@ -38,17 +56,8 @@ function useObserver(fn, updateFn) {
38
56
  }
39
57
  // Restore previous tracking nodes
40
58
  state.tracking.nodes = trackingPrev;
41
- // Cleanup listeners on unmounts
42
- react.useEffect(() => () => cleanup(listeners), []);
43
59
  return ret;
44
60
  }
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
- }
52
61
 
53
62
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
54
63
  // 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","useRef","tracking","onChangeShallow","onChange","useEffect","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
@@ -8,22 +8,40 @@ 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
+ const refFirstListeners = useRef(undefined);
16
12
  // Cache previous tracking nodes since this might be nested from another observing component
17
13
  const trackingPrev = tracking.nodes;
18
14
  // Reset tracking nodes
19
15
  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
+ const effect = () => {
20
+ // If we have pre-mount listeners, clear them off
21
+ if (refFirstListeners.current) {
22
+ refFirstListeners.current();
23
+ refFirstListeners.current = undefined;
24
+ }
25
+ const listeners = [];
26
+ // Listen to tracked nodes
27
+ for (let tracked of nodes) {
28
+ const { node, shallow } = tracked[1];
29
+ listeners.push(shallow ? onChangeShallow(node, updateFn) : onChange(node, updateFn));
30
+ }
31
+ // Cleanup listeners
32
+ return () => {
33
+ for (let i = 0; i < listeners.length; i++) {
34
+ listeners[i]();
35
+ }
36
+ };
37
+ };
38
+ useEffect(effect);
20
39
  // Calling the function fills up the tracking nodes
21
40
  const ret = fn();
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));
41
+ nodes = tracking.nodes;
42
+ // Call the effect immediately to set up listeners without waiting for mount
43
+ if (!refFirstListeners.current) {
44
+ refFirstListeners.current = effect();
27
45
  }
28
46
  // Do tracing if it was requested
29
47
  if (process.env.NODE_ENV === 'development') {
@@ -34,17 +52,8 @@ function useObserver(fn, updateFn) {
34
52
  }
35
53
  // Restore previous tracking nodes
36
54
  tracking.nodes = trackingPrev;
37
- // Cleanup listeners on unmounts
38
- useEffect(() => () => cleanup(listeners), []);
39
55
  return ret;
40
56
  }
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
- }
48
57
 
49
58
  const hasSymbol = typeof Symbol === 'function' && Symbol.for;
50
59
  // 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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"}