@legendapp/state 3.0.0-alpha.4 → 3.0.0-alpha.6
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 +3 -2
- package/index.d.ts +3 -2
- package/package.json +1 -1
- package/react.js +15 -10
- package/react.mjs +16 -11
package/index.d.mts
CHANGED
|
@@ -87,7 +87,8 @@ type HasOneStringParam<T> = T extends (...args: infer P) => any ? P extends {
|
|
|
87
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> & {};
|
|
88
88
|
type Observable<T = any> = ObservableNode<T> & {};
|
|
89
89
|
type ObservableParam<T = any> = ImmutableObservableSimple<T> & MutableObservableSimple;
|
|
90
|
-
type
|
|
90
|
+
type FixExpanded<T> = [T] extends [boolean] ? boolean : T;
|
|
91
|
+
type ValueOrFunction<T> = [T] extends [Function] ? T : T | ImmutableObservableBase<FixExpanded<T> | T> | Promise<FixExpanded<T> | T> | (() => FixExpanded<T> | T | Promise<FixExpanded<T> | T> | ImmutableObservableBase<FixExpanded<T> | T>);
|
|
91
92
|
type ValueOrFunctionKeys<T> = {
|
|
92
93
|
[K in keyof T]: RecursiveValueOrFunction<T[K]>;
|
|
93
94
|
};
|
|
@@ -401,4 +402,4 @@ declare const internal: {
|
|
|
401
402
|
};
|
|
402
403
|
};
|
|
403
404
|
|
|
404
|
-
export { type ArrayValue, type Change, type ChildNodeValue, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeValue, type NodeValueListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, type ObservableListenerDispose, type ObservableObject, type ObservableParam, type ObservablePrimitive, type ObservableRoot, type ObservableState, type ObservableSyncState, type ObservableSyncStateBase, type ObservableValue, type ObserveEvent, type ObserveEventCallback, type ObserveOptions, type OpaqueObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeValue, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, configureLegendState, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPrimitive, isPromise, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setInObservableAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
|
405
|
+
export { type ArrayValue, type Change, type ChildNodeValue, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeValue, type NodeValueListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, type ObservableListenerDispose, type ObservableObject, type ObservableObjectFns, type ObservableParam, type ObservablePrimitive, type ObservableRoot, type ObservableState, type ObservableSyncState, type ObservableSyncStateBase, type ObservableValue, type ObserveEvent, type ObserveEventCallback, type ObserveOptions, type OpaqueObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeValue, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, configureLegendState, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPrimitive, isPromise, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setInObservableAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
package/index.d.ts
CHANGED
|
@@ -87,7 +87,8 @@ type HasOneStringParam<T> = T extends (...args: infer P) => any ? P extends {
|
|
|
87
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> & {};
|
|
88
88
|
type Observable<T = any> = ObservableNode<T> & {};
|
|
89
89
|
type ObservableParam<T = any> = ImmutableObservableSimple<T> & MutableObservableSimple;
|
|
90
|
-
type
|
|
90
|
+
type FixExpanded<T> = [T] extends [boolean] ? boolean : T;
|
|
91
|
+
type ValueOrFunction<T> = [T] extends [Function] ? T : T | ImmutableObservableBase<FixExpanded<T> | T> | Promise<FixExpanded<T> | T> | (() => FixExpanded<T> | T | Promise<FixExpanded<T> | T> | ImmutableObservableBase<FixExpanded<T> | T>);
|
|
91
92
|
type ValueOrFunctionKeys<T> = {
|
|
92
93
|
[K in keyof T]: RecursiveValueOrFunction<T[K]>;
|
|
93
94
|
};
|
|
@@ -401,4 +402,4 @@ declare const internal: {
|
|
|
401
402
|
};
|
|
402
403
|
};
|
|
403
404
|
|
|
404
|
-
export { type ArrayValue, type Change, type ChildNodeValue, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeValue, type NodeValueListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, type ObservableListenerDispose, type ObservableObject, type ObservableParam, type ObservablePrimitive, type ObservableRoot, type ObservableState, type ObservableSyncState, type ObservableSyncStateBase, type ObservableValue, type ObserveEvent, type ObserveEventCallback, type ObserveOptions, type OpaqueObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeValue, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, configureLegendState, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPrimitive, isPromise, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setInObservableAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
|
405
|
+
export { type ArrayValue, type Change, type ChildNodeValue, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeValue, type NodeValueListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, type ObservableListenerDispose, type ObservableObject, type ObservableObjectFns, type ObservableParam, type ObservablePrimitive, type ObservableRoot, type ObservableState, type ObservableSyncState, type ObservableSyncStateBase, type ObservableValue, type ObserveEvent, type ObserveEventCallback, type ObserveOptions, type OpaqueObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeValue, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, configureLegendState, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPrimitive, isPromise, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setInObservableAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
package/package.json
CHANGED
package/react.js
CHANGED
|
@@ -111,15 +111,6 @@ function useSelector(selector, options) {
|
|
|
111
111
|
const { subscribe, getVersion, run } = selectorFn;
|
|
112
112
|
value = run(selector);
|
|
113
113
|
index_js.useSyncExternalStore(subscribe, getVersion, getVersion);
|
|
114
|
-
if (options == null ? void 0 : options.suspense) {
|
|
115
|
-
if (state.isPromise(value) || !value && state.isObservable(selector) && state.syncState(selector).isLoaded.get() === false) {
|
|
116
|
-
if (React__default.default.use) {
|
|
117
|
-
React__default.default.use(value);
|
|
118
|
-
} else {
|
|
119
|
-
throw value;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
114
|
} catch (err) {
|
|
124
115
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && ((_a = err == null ? void 0 : err.message) == null ? void 0 : _a.includes("Rendered more"))) {
|
|
125
116
|
console.warn(
|
|
@@ -128,6 +119,17 @@ function useSelector(selector, options) {
|
|
|
128
119
|
}
|
|
129
120
|
throw err;
|
|
130
121
|
}
|
|
122
|
+
if (options == null ? void 0 : options.suspense) {
|
|
123
|
+
const isProm = state.isPromise(value);
|
|
124
|
+
if (state.isPromise(value) || !value && state.isObservable(selector)) {
|
|
125
|
+
const vProm = isProm ? value : state.when(selector);
|
|
126
|
+
if (React__default.default.use) {
|
|
127
|
+
React__default.default.use(vProm);
|
|
128
|
+
} else {
|
|
129
|
+
throw vProm;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
131
133
|
return value;
|
|
132
134
|
}
|
|
133
135
|
|
|
@@ -395,7 +397,10 @@ function useObservable(initialValue, deps) {
|
|
|
395
397
|
ref.current.value = initialValue;
|
|
396
398
|
const depsObs$ = deps ? useObservable(deps) : void 0;
|
|
397
399
|
if (!((_a = ref.current) == null ? void 0 : _a.obs$)) {
|
|
398
|
-
const value = depsObs$ ? () => {
|
|
400
|
+
const value = depsObs$ ? state.isFunction(initialValue) && initialValue.length === 1 ? (p) => {
|
|
401
|
+
depsObs$.get();
|
|
402
|
+
return ref.current.value(p);
|
|
403
|
+
} : () => {
|
|
399
404
|
depsObs$.get();
|
|
400
405
|
return state.computeSelector(ref.current.value);
|
|
401
406
|
} : initialValue;
|
package/react.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isFunction, isEmpty, observable, isPromise, isObservable,
|
|
1
|
+
import { isFunction, isEmpty, observable, isPromise, isObservable, when, computeSelector, isArray, isMap, isObservableValueReady, linked, observe, whenReady, internal, trackSelector, isPrimitive } from '@legendapp/state';
|
|
2
2
|
import React, { memo, forwardRef, createElement, useState, useContext, useMemo, useRef, useEffect, createContext, useCallback } from 'react';
|
|
3
3
|
import { useSyncExternalStore } from 'use-sync-external-store/shim/index.js';
|
|
4
4
|
|
|
@@ -105,15 +105,6 @@ function useSelector(selector, options) {
|
|
|
105
105
|
const { subscribe, getVersion, run } = selectorFn;
|
|
106
106
|
value = run(selector);
|
|
107
107
|
useSyncExternalStore(subscribe, getVersion, getVersion);
|
|
108
|
-
if (options == null ? void 0 : options.suspense) {
|
|
109
|
-
if (isPromise(value) || !value && isObservable(selector) && syncState(selector).isLoaded.get() === false) {
|
|
110
|
-
if (React.use) {
|
|
111
|
-
React.use(value);
|
|
112
|
-
} else {
|
|
113
|
-
throw value;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
108
|
} catch (err) {
|
|
118
109
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && ((_a = err == null ? void 0 : err.message) == null ? void 0 : _a.includes("Rendered more"))) {
|
|
119
110
|
console.warn(
|
|
@@ -122,6 +113,17 @@ function useSelector(selector, options) {
|
|
|
122
113
|
}
|
|
123
114
|
throw err;
|
|
124
115
|
}
|
|
116
|
+
if (options == null ? void 0 : options.suspense) {
|
|
117
|
+
const isProm = isPromise(value);
|
|
118
|
+
if (isPromise(value) || !value && isObservable(selector)) {
|
|
119
|
+
const vProm = isProm ? value : when(selector);
|
|
120
|
+
if (React.use) {
|
|
121
|
+
React.use(vProm);
|
|
122
|
+
} else {
|
|
123
|
+
throw vProm;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
125
127
|
return value;
|
|
126
128
|
}
|
|
127
129
|
|
|
@@ -389,7 +391,10 @@ function useObservable(initialValue, deps) {
|
|
|
389
391
|
ref.current.value = initialValue;
|
|
390
392
|
const depsObs$ = deps ? useObservable(deps) : void 0;
|
|
391
393
|
if (!((_a = ref.current) == null ? void 0 : _a.obs$)) {
|
|
392
|
-
const value = depsObs$ ? () => {
|
|
394
|
+
const value = depsObs$ ? isFunction(initialValue) && initialValue.length === 1 ? (p) => {
|
|
395
|
+
depsObs$.get();
|
|
396
|
+
return ref.current.value(p);
|
|
397
|
+
} : () => {
|
|
393
398
|
depsObs$.get();
|
|
394
399
|
return computeSelector(ref.current.value);
|
|
395
400
|
} : initialValue;
|