@legendapp/state 3.0.0-alpha.19 → 3.0.0-alpha.20

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/index.d.mts CHANGED
@@ -7,7 +7,7 @@ type BuiltIns = String | Boolean | Number | Date | Error | RegExp | Array<any> |
7
7
  type IsUserDefinedObject<T> = T extends Function | BuiltIns | any[] ? false : T extends object ? true : false;
8
8
  type RemoveObservables<T> = T extends ImmutableObservableBase<infer t> ? t : T extends ImmutableObservableBase<infer t>[] ? t[] : IsUserDefinedObject<T> extends true ? {
9
9
  [K in keyof T]: RemoveObservables<T[K]>;
10
- } : T extends ImmutableObservableBase<infer TObs> ? TObs : T extends () => infer TRet ? RemoveObservables<TRet> & T : T extends (key: string) => infer TRet ? Record<string, RemoveObservables<TRet>> & T : T;
10
+ } : T extends ImmutableObservableBase<infer TObs> ? TObs : T extends () => infer TRet ? RemoveObservables<TRet> & T : T extends (key: infer TKey extends string | number) => infer TRet ? Record<TKey, RemoveObservables<TRet>> & T : T;
11
11
  interface ObservableArray<T, U> extends ObservablePrimitive<T>, Pick<Array<Observable<U>>, ArrayOverrideFnNames>, Omit<RemoveIndex<Array<U>>, ArrayOverrideFnNames> {
12
12
  }
13
13
  interface ObservableObjectFns<T> {
@@ -76,15 +76,15 @@ type ObservableChildren<T, Nullable = IsNullable<T>> = {
76
76
  [K in keyof T]-?: Observable<UndefinedIf<T[K], Nullable>>;
77
77
  };
78
78
  type ObservableFunctionChildren<T> = {
79
- [K in keyof T]-?: T[K] extends Observable ? T[K] : T[K] extends (key: infer Key extends string) => Promise<infer t> | infer t ? HasOneStringParam<T[K]> extends true ? Observable<Record<Key, t>> & T[K] : t extends void ? T[K] : t extends Observable ? t : Observable<t> & (() => t) : T[K] & Observable<T[K]>;
79
+ [K in keyof T]-?: T[K] extends Observable ? T[K] : T[K] extends (key: infer Key extends string | number) => Promise<infer t> | infer t ? IsLookupFunction<T[K]> extends true ? Observable<Record<Key, t>> & T[K] : t extends void ? T[K] : t extends Observable ? t : Observable<t> & (() => t) : T[K] & Observable<T[K]>;
80
80
  };
81
81
  type IsStrictAny<T> = 0 extends 1 & T ? true : false;
82
82
  type ObservableObject<T> = ObservableObjectFunctions<ObservableProps<T> & NonObservableProps<T>> & ObservableChildren<ObservableProps<T>> & ObservableFunctionChildren<NonObservableProps<T>>;
83
83
  type ObservableFunction<T> = T extends () => infer t ? t | (() => t) : T;
84
- type HasOneStringParam<T> = T extends (...args: infer P) => any ? P extends {
84
+ type IsLookupFunction<T> = T extends (...args: infer P) => any ? P extends {
85
85
  length: 1;
86
- } ? P[0] extends string | ObservablePrimitive<string> ? true : false : false : false;
87
- type ObservableNode<T, NT = NonNullable<T>> = [NT] extends [never] ? ObservablePrimitive<T> : IsStrictAny<T> extends true ? ObservableAny : [T] extends [Promise<infer t>] ? ObservableNode<t> : [T] extends [(key: infer K extends string) => infer t] ? [t] extends [ImmutableObservableBase<any>] ? HasOneStringParam<T> extends true ? Observable<Record<K, t>> : t : HasOneStringParam<T> extends true ? Observable<Record<K, t>> & T : Observable<ObservableFunction<t>> : [NT] extends [ImmutableObservableBase<any>] ? NT : [NT] extends [Primitive$1] ? [NT] extends [boolean] ? ObservableBoolean : ObservablePrimitive<T> : NT extends Map<any, any> | WeakMap<any, any> ? ObservableMap<NT> : NT extends Set<infer U> ? ObservableSet<Set<UndefinedIf<U, IsNullable<T>>>> : NT extends WeakSet<any> ? ObservableSet<NT> : NT extends Array<infer U> ? ObservableArray<T, U> & ObservableChildren<T> : ObservableObject<T> & {};
86
+ } ? P[0] extends string | ObservablePrimitive<string> | number | ObservablePrimitive<number> ? true : false : false : false;
87
+ type ObservableNode<T, NT = NonNullable<T>> = [NT] extends [never] ? ObservablePrimitive<T> : IsStrictAny<T> extends true ? ObservableAny : [T] extends [Promise<infer t>] ? ObservableNode<t> : [T] extends [(key: infer K extends string) => infer t] ? [t] extends [ImmutableObservableBase<any>] ? IsLookupFunction<T> extends true ? Observable<Record<K, t>> : t : IsLookupFunction<T> extends true ? Observable<Record<K, t>> & T : Observable<ObservableFunction<t>> : [NT] extends [ImmutableObservableBase<any>] ? NT : [NT] extends [Primitive$1] ? [NT] extends [boolean] ? ObservableBoolean : ObservablePrimitive<T> : NT extends Map<any, any> | WeakMap<any, any> ? ObservableMap<NT> : NT extends Set<infer U> ? ObservableSet<Set<UndefinedIf<U, IsNullable<T>>>> : NT extends WeakSet<any> ? ObservableSet<NT> : NT extends Array<infer U> ? ObservableArray<T, U> & ObservableChildren<T> : ObservableObject<T> & {};
88
88
  type Observable<T = any> = ObservableNode<T> & {};
89
89
  type ObservableParam<T = any> = ImmutableObservableSimple<T> & MutableObservableSimple;
90
90
  type FixExpanded<T> = [T] extends [boolean] ? boolean : T;
package/index.d.ts CHANGED
@@ -7,7 +7,7 @@ type BuiltIns = String | Boolean | Number | Date | Error | RegExp | Array<any> |
7
7
  type IsUserDefinedObject<T> = T extends Function | BuiltIns | any[] ? false : T extends object ? true : false;
8
8
  type RemoveObservables<T> = T extends ImmutableObservableBase<infer t> ? t : T extends ImmutableObservableBase<infer t>[] ? t[] : IsUserDefinedObject<T> extends true ? {
9
9
  [K in keyof T]: RemoveObservables<T[K]>;
10
- } : T extends ImmutableObservableBase<infer TObs> ? TObs : T extends () => infer TRet ? RemoveObservables<TRet> & T : T extends (key: string) => infer TRet ? Record<string, RemoveObservables<TRet>> & T : T;
10
+ } : T extends ImmutableObservableBase<infer TObs> ? TObs : T extends () => infer TRet ? RemoveObservables<TRet> & T : T extends (key: infer TKey extends string | number) => infer TRet ? Record<TKey, RemoveObservables<TRet>> & T : T;
11
11
  interface ObservableArray<T, U> extends ObservablePrimitive<T>, Pick<Array<Observable<U>>, ArrayOverrideFnNames>, Omit<RemoveIndex<Array<U>>, ArrayOverrideFnNames> {
12
12
  }
13
13
  interface ObservableObjectFns<T> {
@@ -76,15 +76,15 @@ type ObservableChildren<T, Nullable = IsNullable<T>> = {
76
76
  [K in keyof T]-?: Observable<UndefinedIf<T[K], Nullable>>;
77
77
  };
78
78
  type ObservableFunctionChildren<T> = {
79
- [K in keyof T]-?: T[K] extends Observable ? T[K] : T[K] extends (key: infer Key extends string) => Promise<infer t> | infer t ? HasOneStringParam<T[K]> extends true ? Observable<Record<Key, t>> & T[K] : t extends void ? T[K] : t extends Observable ? t : Observable<t> & (() => t) : T[K] & Observable<T[K]>;
79
+ [K in keyof T]-?: T[K] extends Observable ? T[K] : T[K] extends (key: infer Key extends string | number) => Promise<infer t> | infer t ? IsLookupFunction<T[K]> extends true ? Observable<Record<Key, t>> & T[K] : t extends void ? T[K] : t extends Observable ? t : Observable<t> & (() => t) : T[K] & Observable<T[K]>;
80
80
  };
81
81
  type IsStrictAny<T> = 0 extends 1 & T ? true : false;
82
82
  type ObservableObject<T> = ObservableObjectFunctions<ObservableProps<T> & NonObservableProps<T>> & ObservableChildren<ObservableProps<T>> & ObservableFunctionChildren<NonObservableProps<T>>;
83
83
  type ObservableFunction<T> = T extends () => infer t ? t | (() => t) : T;
84
- type HasOneStringParam<T> = T extends (...args: infer P) => any ? P extends {
84
+ type IsLookupFunction<T> = T extends (...args: infer P) => any ? P extends {
85
85
  length: 1;
86
- } ? P[0] extends string | ObservablePrimitive<string> ? true : false : false : false;
87
- type ObservableNode<T, NT = NonNullable<T>> = [NT] extends [never] ? ObservablePrimitive<T> : IsStrictAny<T> extends true ? ObservableAny : [T] extends [Promise<infer t>] ? ObservableNode<t> : [T] extends [(key: infer K extends string) => infer t] ? [t] extends [ImmutableObservableBase<any>] ? HasOneStringParam<T> extends true ? Observable<Record<K, t>> : t : HasOneStringParam<T> extends true ? Observable<Record<K, t>> & T : Observable<ObservableFunction<t>> : [NT] extends [ImmutableObservableBase<any>] ? NT : [NT] extends [Primitive$1] ? [NT] extends [boolean] ? ObservableBoolean : ObservablePrimitive<T> : NT extends Map<any, any> | WeakMap<any, any> ? ObservableMap<NT> : NT extends Set<infer U> ? ObservableSet<Set<UndefinedIf<U, IsNullable<T>>>> : NT extends WeakSet<any> ? ObservableSet<NT> : NT extends Array<infer U> ? ObservableArray<T, U> & ObservableChildren<T> : ObservableObject<T> & {};
86
+ } ? P[0] extends string | ObservablePrimitive<string> | number | ObservablePrimitive<number> ? true : false : false : false;
87
+ type ObservableNode<T, NT = NonNullable<T>> = [NT] extends [never] ? ObservablePrimitive<T> : IsStrictAny<T> extends true ? ObservableAny : [T] extends [Promise<infer t>] ? ObservableNode<t> : [T] extends [(key: infer K extends string) => infer t] ? [t] extends [ImmutableObservableBase<any>] ? IsLookupFunction<T> extends true ? Observable<Record<K, t>> : t : IsLookupFunction<T> extends true ? Observable<Record<K, t>> & T : Observable<ObservableFunction<t>> : [NT] extends [ImmutableObservableBase<any>] ? NT : [NT] extends [Primitive$1] ? [NT] extends [boolean] ? ObservableBoolean : ObservablePrimitive<T> : NT extends Map<any, any> | WeakMap<any, any> ? ObservableMap<NT> : NT extends Set<infer U> ? ObservableSet<Set<UndefinedIf<U, IsNullable<T>>>> : NT extends WeakSet<any> ? ObservableSet<NT> : NT extends Array<infer U> ? ObservableArray<T, U> & ObservableChildren<T> : ObservableObject<T> & {};
88
88
  type Observable<T = any> = ObservableNode<T> & {};
89
89
  type ObservableParam<T = any> = ImmutableObservableSimple<T> & MutableObservableSimple;
90
90
  type FixExpanded<T> = [T] extends [boolean] ? boolean : T;
package/index.js CHANGED
@@ -1573,7 +1573,7 @@ function setKey(node, key, newValue, level) {
1573
1573
  } while (parent = parent.parent);
1574
1574
  }
1575
1575
  const notify2 = !equals(savedValue, prevValue);
1576
- const forceNotify = !notify2 && childNode.isComputing && isObject(savedValue);
1576
+ const forceNotify = !notify2 && childNode.isComputing && !isPrim;
1577
1577
  if (notify2 || forceNotify) {
1578
1578
  updateNodesAndNotify(node, savedValue, prevValue, childNode, isPrim, isRoot, level, forceNotify);
1579
1579
  }
package/index.mjs CHANGED
@@ -1571,7 +1571,7 @@ function setKey(node, key, newValue, level) {
1571
1571
  } while (parent = parent.parent);
1572
1572
  }
1573
1573
  const notify2 = !equals(savedValue, prevValue);
1574
- const forceNotify = !notify2 && childNode.isComputing && isObject(savedValue);
1574
+ const forceNotify = !notify2 && childNode.isComputing && !isPrim;
1575
1575
  if (notify2 || forceNotify) {
1576
1576
  updateNodesAndNotify(node, savedValue, prevValue, childNode, isPrim, isRoot, level, forceNotify);
1577
1577
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/state",
3
- "version": "3.0.0-alpha.19",
3
+ "version": "3.0.0-alpha.20",
4
4
  "description": "legend-state",
5
5
  "sideEffects": false,
6
6
  "private": false,
package/react.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ReactElement, FC, LegacyRef, ComponentClass, DependencyList, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction } from 'react';
3
- import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveEvent, ObserveOptions, ObserveEventCallback } from '@legendapp/state';
3
+ import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveOptions, ObserveEvent, ObserveEventCallback } from '@legendapp/state';
4
4
 
5
5
  declare function Computed({ children }: {
6
6
  children: ObservableParam | (() => ReactNode);
@@ -140,11 +140,14 @@ declare function useObservableReducer<R extends Reducer<any, any>, I>(reducer: R
140
140
  declare function useObservableReducer<R extends Reducer<any, any>, I>(reducer: R, initializerArg: I, initializer: (arg: I) => ReducerState<R>): [Observable<ReducerState<R>>, Dispatch<ReducerAction<R>>];
141
141
  declare function useObservableReducer<R extends Reducer<any, any>>(reducer: R, initialState: ReducerState<R>, initializer?: undefined): [Observable<ReducerState<R>>, Dispatch<ReducerAction<R>>];
142
142
 
143
- declare function useObserve<T>(run: (e: ObserveEvent<T>) => T | void, options?: ObserveOptions): () => void;
144
- declare function useObserve<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: ObserveOptions): () => void;
143
+ interface UseObserveOptions extends ObserveOptions {
144
+ deps?: any[];
145
+ }
146
+ declare function useObserve<T>(run: (e: ObserveEvent<T>) => T | void, options?: UseObserveOptions): () => void;
147
+ declare function useObserve<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: UseObserveOptions): () => void;
145
148
 
146
- declare function useObserveEffect<T>(run: (e: ObserveEvent<T>) => T | void, options?: ObserveOptions): void;
147
- declare function useObserveEffect<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: ObserveOptions): void;
149
+ declare function useObserveEffect<T>(run: (e: ObserveEvent<T>) => T | void, options?: UseObserveOptions): void;
150
+ declare function useObserveEffect<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: UseObserveOptions): void;
148
151
 
149
152
  declare function useSelector<T>(selector: Selector<T>, options?: UseSelectorOptions): T;
150
153
 
@@ -154,4 +157,4 @@ declare const useUnmountOnce: typeof useUnmount;
154
157
  declare function useWhen<T>(predicate: Selector<T>, effect: (value: T) => any | (() => any)): Promise<any>;
155
158
  declare function useWhenReady<T>(predicate: Selector<T>, effect: (value: T) => any | (() => any)): Promise<any>;
156
159
 
157
- export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useComputed, useEffectOnce, useIsMounted, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useWhen, useWhenReady };
160
+ export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseObserveOptions, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useComputed, useEffectOnce, useIsMounted, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useWhen, useWhenReady };
package/react.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ReactElement, FC, LegacyRef, ComponentClass, DependencyList, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction } from 'react';
3
- import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveEvent, ObserveOptions, ObserveEventCallback } from '@legendapp/state';
3
+ import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveOptions, ObserveEvent, ObserveEventCallback } from '@legendapp/state';
4
4
 
5
5
  declare function Computed({ children }: {
6
6
  children: ObservableParam | (() => ReactNode);
@@ -140,11 +140,14 @@ declare function useObservableReducer<R extends Reducer<any, any>, I>(reducer: R
140
140
  declare function useObservableReducer<R extends Reducer<any, any>, I>(reducer: R, initializerArg: I, initializer: (arg: I) => ReducerState<R>): [Observable<ReducerState<R>>, Dispatch<ReducerAction<R>>];
141
141
  declare function useObservableReducer<R extends Reducer<any, any>>(reducer: R, initialState: ReducerState<R>, initializer?: undefined): [Observable<ReducerState<R>>, Dispatch<ReducerAction<R>>];
142
142
 
143
- declare function useObserve<T>(run: (e: ObserveEvent<T>) => T | void, options?: ObserveOptions): () => void;
144
- declare function useObserve<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: ObserveOptions): () => void;
143
+ interface UseObserveOptions extends ObserveOptions {
144
+ deps?: any[];
145
+ }
146
+ declare function useObserve<T>(run: (e: ObserveEvent<T>) => T | void, options?: UseObserveOptions): () => void;
147
+ declare function useObserve<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: UseObserveOptions): () => void;
145
148
 
146
- declare function useObserveEffect<T>(run: (e: ObserveEvent<T>) => T | void, options?: ObserveOptions): void;
147
- declare function useObserveEffect<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: ObserveOptions): void;
149
+ declare function useObserveEffect<T>(run: (e: ObserveEvent<T>) => T | void, options?: UseObserveOptions): void;
150
+ declare function useObserveEffect<T>(selector: Selector<T>, reaction?: (e: ObserveEventCallback<T>) => any, options?: UseObserveOptions): void;
148
151
 
149
152
  declare function useSelector<T>(selector: Selector<T>, options?: UseSelectorOptions): T;
150
153
 
@@ -154,4 +157,4 @@ declare const useUnmountOnce: typeof useUnmount;
154
157
  declare function useWhen<T>(predicate: Selector<T>, effect: (value: T) => any | (() => any)): Promise<any>;
155
158
  declare function useWhenReady<T>(predicate: Selector<T>, effect: (value: T) => any | (() => any)): Promise<any>;
156
159
 
157
- export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useComputed, useEffectOnce, useIsMounted, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useWhen, useWhenReady };
160
+ export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, Reactive, type ShapeWith$, type ShapeWithNew$, type ShapeWithPick$, Show, Switch, type UseObserveOptions, type UseSelectorOptions, configureReactive, hasSymbol, observer, reactive, reactiveComponents, reactiveObserver, useComputed, useEffectOnce, useIsMounted, useMount, useMountOnce, useObservable, useObservableReducer, useObserve, useObserveEffect, usePauseProvider, useSelector, useUnmount, useUnmountOnce, useWhen, useWhenReady };
package/react.js CHANGED
@@ -495,8 +495,16 @@ function useObserve(selector, reactionOrOptions, options) {
495
495
  } else {
496
496
  options = reactionOrOptions;
497
497
  }
498
+ const deps = options == null ? void 0 : options.deps;
499
+ const depsObs$ = deps ? useObservable(deps) : void 0;
500
+ if (depsObs$) {
501
+ depsObs$.set(deps);
502
+ }
498
503
  const ref = React.useRef({});
499
- ref.current.selector = selector;
504
+ ref.current.selector = deps ? () => {
505
+ depsObs$ == null ? void 0 : depsObs$.get();
506
+ return state.computeSelector(selector);
507
+ } : selector;
500
508
  ref.current.reaction = reaction;
501
509
  if (!ref.current.dispose) {
502
510
  ref.current.dispose = state.observe(
@@ -521,12 +529,18 @@ function useObserveEffect(selector, reactionOrOptions, options) {
521
529
  } else {
522
530
  options = reactionOrOptions;
523
531
  }
532
+ const deps = options == null ? void 0 : options.deps;
533
+ const depsObs$ = deps ? useObservable(deps) : void 0;
534
+ if (depsObs$) {
535
+ depsObs$.set(deps);
536
+ }
524
537
  const ref = React.useRef({ selector });
525
538
  ref.current = { selector, reaction };
526
539
  useMountOnce(
527
540
  () => state.observe(
528
541
  (e) => {
529
542
  const { selector: selector2 } = ref.current;
543
+ depsObs$ == null ? void 0 : depsObs$.get();
530
544
  return state.isFunction(selector2) ? selector2(e) : selector2;
531
545
  },
532
546
  (e) => {
package/react.mjs CHANGED
@@ -489,8 +489,16 @@ function useObserve(selector, reactionOrOptions, options) {
489
489
  } else {
490
490
  options = reactionOrOptions;
491
491
  }
492
+ const deps = options == null ? void 0 : options.deps;
493
+ const depsObs$ = deps ? useObservable(deps) : void 0;
494
+ if (depsObs$) {
495
+ depsObs$.set(deps);
496
+ }
492
497
  const ref = useRef({});
493
- ref.current.selector = selector;
498
+ ref.current.selector = deps ? () => {
499
+ depsObs$ == null ? void 0 : depsObs$.get();
500
+ return computeSelector(selector);
501
+ } : selector;
494
502
  ref.current.reaction = reaction;
495
503
  if (!ref.current.dispose) {
496
504
  ref.current.dispose = observe(
@@ -515,12 +523,18 @@ function useObserveEffect(selector, reactionOrOptions, options) {
515
523
  } else {
516
524
  options = reactionOrOptions;
517
525
  }
526
+ const deps = options == null ? void 0 : options.deps;
527
+ const depsObs$ = deps ? useObservable(deps) : void 0;
528
+ if (depsObs$) {
529
+ depsObs$.set(deps);
530
+ }
518
531
  const ref = useRef({ selector });
519
532
  ref.current = { selector, reaction };
520
533
  useMountOnce(
521
534
  () => observe(
522
535
  (e) => {
523
536
  const { selector: selector2 } = ref.current;
537
+ depsObs$ == null ? void 0 : depsObs$.get();
524
538
  return isFunction(selector2) ? selector2(e) : selector2;
525
539
  },
526
540
  (e) => {
package/sync.js CHANGED
@@ -765,7 +765,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
765
765
  let unsubscribe = void 0;
766
766
  sync = async () => {
767
767
  var _a;
768
- if (isSynced && state.shouldIgnoreUnobserved(node, sync)) {
768
+ if (isSynced && (!getNodeValue(getNode(syncState$)).isSyncEnabled || state.shouldIgnoreUnobserved(node, sync))) {
769
769
  if (unsubscribe) {
770
770
  isSubscribed = false;
771
771
  unsubscribe();
@@ -958,9 +958,9 @@ function syncObservable(obs$, syncOptionsOrSynced) {
958
958
  if (node.activationState) {
959
959
  node.activationState.waitFor = void 0;
960
960
  }
961
- state.whenReady(waitFor, runGet);
961
+ state.whenReady(waitFor, () => state.trackSelector(runGet, sync));
962
962
  } else {
963
- runGet();
963
+ state.trackSelector(runGet, sync);
964
964
  }
965
965
  } else {
966
966
  syncState$.assign({
package/sync.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { isObject, isDate, isNullOrUndefined, isString, endBatch, beginBatch, isFunction, syncState, when, linked, internal, observable, isPromise, mergeIntoObservable, isEmpty, whenReady, shouldIgnoreUnobserved, constructObjectWithPath, setAtPath, isArray } from '@legendapp/state';
1
+ import { isObject, isDate, isNullOrUndefined, isString, endBatch, beginBatch, isFunction, syncState, when, linked, internal, observable, isPromise, mergeIntoObservable, isEmpty, whenReady, trackSelector, shouldIgnoreUnobserved, constructObjectWithPath, setAtPath, isArray } from '@legendapp/state';
2
2
 
3
3
  // src/sync/configureObservableSync.ts
4
4
  var observableSyncConfiguration = {};
@@ -763,7 +763,7 @@ function syncObservable(obs$, syncOptionsOrSynced) {
763
763
  let unsubscribe = void 0;
764
764
  sync = async () => {
765
765
  var _a;
766
- if (isSynced && shouldIgnoreUnobserved(node, sync)) {
766
+ if (isSynced && (!getNodeValue(getNode(syncState$)).isSyncEnabled || shouldIgnoreUnobserved(node, sync))) {
767
767
  if (unsubscribe) {
768
768
  isSubscribed = false;
769
769
  unsubscribe();
@@ -956,9 +956,9 @@ function syncObservable(obs$, syncOptionsOrSynced) {
956
956
  if (node.activationState) {
957
957
  node.activationState.waitFor = void 0;
958
958
  }
959
- whenReady(waitFor, runGet);
959
+ whenReady(waitFor, () => trackSelector(runGet, sync));
960
960
  } else {
961
- runGet();
961
+ trackSelector(runGet, sync);
962
962
  }
963
963
  } else {
964
964
  syncState$.assign({