@legendapp/state 3.0.0-alpha.2 → 3.0.0-alpha.4
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 +1 -1
- package/index.d.ts +1 -1
- package/index.js +15 -5
- package/index.mjs +15 -5
- package/package.json +1 -1
- package/react.d.mts +8 -8
- package/react.d.ts +8 -8
- package/react.js +26 -20
- package/react.mjs +27 -21
- package/sync.js +17 -18
- package/sync.mjs +18 -19
package/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type Primitive$1 = string | number | boolean | symbol | bigint | undefined | null | Date;
|
|
2
|
-
type ArrayOverrideFnNames = 'find' | 'every' | 'some' | 'filter' | 'reduce' | 'reduceRight' | 'forEach' | 'map' | 'sort';
|
|
2
|
+
type ArrayOverrideFnNames = 'find' | 'findIndex' | 'every' | 'some' | 'filter' | 'reduce' | 'reduceRight' | 'forEach' | 'map' | 'sort';
|
|
3
3
|
type RemoveIndex<T> = {
|
|
4
4
|
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
5
5
|
};
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type Primitive$1 = string | number | boolean | symbol | bigint | undefined | null | Date;
|
|
2
|
-
type ArrayOverrideFnNames = 'find' | 'every' | 'some' | 'filter' | 'reduce' | 'reduceRight' | 'forEach' | 'map' | 'sort';
|
|
2
|
+
type ArrayOverrideFnNames = 'find' | 'findIndex' | 'every' | 'some' | 'filter' | 'reduce' | 'reduceRight' | 'forEach' | 'map' | 'sort';
|
|
3
3
|
type RemoveIndex<T> = {
|
|
4
4
|
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
5
5
|
};
|
package/index.js
CHANGED
|
@@ -337,13 +337,18 @@ function mergeIntoObservable(target, ...sources) {
|
|
|
337
337
|
beginBatch();
|
|
338
338
|
globalState.isMerging = true;
|
|
339
339
|
for (let i = 0; i < sources.length; i++) {
|
|
340
|
-
target = _mergeIntoObservable(
|
|
340
|
+
target = _mergeIntoObservable(
|
|
341
|
+
target,
|
|
342
|
+
sources[i],
|
|
343
|
+
/*assign*/
|
|
344
|
+
i < sources.length - 1
|
|
345
|
+
);
|
|
341
346
|
}
|
|
342
347
|
globalState.isMerging = false;
|
|
343
348
|
endBatch();
|
|
344
349
|
return target;
|
|
345
350
|
}
|
|
346
|
-
function _mergeIntoObservable(target, source) {
|
|
351
|
+
function _mergeIntoObservable(target, source, assign2) {
|
|
347
352
|
var _a;
|
|
348
353
|
if (isObservable(source)) {
|
|
349
354
|
source = source.peek();
|
|
@@ -365,17 +370,22 @@ function _mergeIntoObservable(target, source) {
|
|
|
365
370
|
const targetChild = target[key];
|
|
366
371
|
if ((isObj || isArr) && targetChild && (needsSet || !isEmpty(targetChild))) {
|
|
367
372
|
if (!needsSet && (!targetChild || (isObj ? !isObject(targetChild) : !isArray(targetChild)))) {
|
|
368
|
-
target[key] = sourceValue;
|
|
373
|
+
target[key] = assign2 ? isArr ? [...sourceValue] : { ...sourceValue } : sourceValue;
|
|
369
374
|
} else {
|
|
370
375
|
_mergeIntoObservable(targetChild, sourceValue);
|
|
371
376
|
}
|
|
372
377
|
} else {
|
|
373
|
-
|
|
378
|
+
if (needsSet) {
|
|
379
|
+
targetChild.set(sourceValue);
|
|
380
|
+
} else {
|
|
381
|
+
const toSet = isObject(sourceValue) ? { ...sourceValue } : isArray(sourceValue) ? [...sourceValue] : sourceValue;
|
|
382
|
+
target[key] = toSet;
|
|
383
|
+
}
|
|
374
384
|
}
|
|
375
385
|
}
|
|
376
386
|
}
|
|
377
387
|
} else if (source !== void 0) {
|
|
378
|
-
needsSet ? target.set(source) : target = source;
|
|
388
|
+
needsSet ? target.set(source) : target = assign2 ? isArray(source) ? [...source] : { ...source } : source;
|
|
379
389
|
}
|
|
380
390
|
return target;
|
|
381
391
|
}
|
package/index.mjs
CHANGED
|
@@ -335,13 +335,18 @@ function mergeIntoObservable(target, ...sources) {
|
|
|
335
335
|
beginBatch();
|
|
336
336
|
globalState.isMerging = true;
|
|
337
337
|
for (let i = 0; i < sources.length; i++) {
|
|
338
|
-
target = _mergeIntoObservable(
|
|
338
|
+
target = _mergeIntoObservable(
|
|
339
|
+
target,
|
|
340
|
+
sources[i],
|
|
341
|
+
/*assign*/
|
|
342
|
+
i < sources.length - 1
|
|
343
|
+
);
|
|
339
344
|
}
|
|
340
345
|
globalState.isMerging = false;
|
|
341
346
|
endBatch();
|
|
342
347
|
return target;
|
|
343
348
|
}
|
|
344
|
-
function _mergeIntoObservable(target, source) {
|
|
349
|
+
function _mergeIntoObservable(target, source, assign2) {
|
|
345
350
|
var _a;
|
|
346
351
|
if (isObservable(source)) {
|
|
347
352
|
source = source.peek();
|
|
@@ -363,17 +368,22 @@ function _mergeIntoObservable(target, source) {
|
|
|
363
368
|
const targetChild = target[key];
|
|
364
369
|
if ((isObj || isArr) && targetChild && (needsSet || !isEmpty(targetChild))) {
|
|
365
370
|
if (!needsSet && (!targetChild || (isObj ? !isObject(targetChild) : !isArray(targetChild)))) {
|
|
366
|
-
target[key] = sourceValue;
|
|
371
|
+
target[key] = assign2 ? isArr ? [...sourceValue] : { ...sourceValue } : sourceValue;
|
|
367
372
|
} else {
|
|
368
373
|
_mergeIntoObservable(targetChild, sourceValue);
|
|
369
374
|
}
|
|
370
375
|
} else {
|
|
371
|
-
|
|
376
|
+
if (needsSet) {
|
|
377
|
+
targetChild.set(sourceValue);
|
|
378
|
+
} else {
|
|
379
|
+
const toSet = isObject(sourceValue) ? { ...sourceValue } : isArray(sourceValue) ? [...sourceValue] : sourceValue;
|
|
380
|
+
target[key] = toSet;
|
|
381
|
+
}
|
|
372
382
|
}
|
|
373
383
|
}
|
|
374
384
|
}
|
|
375
385
|
} else if (source !== void 0) {
|
|
376
|
-
needsSet ? target.set(source) : target = source;
|
|
386
|
+
needsSet ? target.set(source) : target = assign2 ? isArray(source) ? [...source] : { ...source } : source;
|
|
377
387
|
}
|
|
378
388
|
return target;
|
|
379
389
|
}
|
package/package.json
CHANGED
package/react.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { ReactNode, ReactElement, FC, LegacyRef, ComponentClass, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction } from 'react';
|
|
2
|
+
import { ReactNode, ReactElement, FC, LegacyRef, ComponentClass, DependencyList, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction } from 'react';
|
|
3
3
|
import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveEvent, ObserveOptions, ObserveEventCallback } from '@legendapp/state';
|
|
4
4
|
|
|
5
5
|
declare function Computed({ children }: {
|
|
@@ -110,10 +110,10 @@ declare function reactiveObserver<T extends FC<any>>(component: T, bindKeys?: Bi
|
|
|
110
110
|
declare function reactiveObserver<T extends FC<any>, T2 extends keyof ExtractFCPropsType<T>>(component: T, bindKeys?: BindKeys<ExtractFCPropsType<T>>): T | FC<ShapeWithPick$<ExtractFCPropsType<T>, T2>>;
|
|
111
111
|
declare function reactiveComponents<P extends Record<string, FC>>(components: P): ObjectShapeWith$<P>;
|
|
112
112
|
|
|
113
|
-
declare function useComputed<T>(
|
|
114
|
-
declare function useComputed<T>(
|
|
115
|
-
declare function useComputed<T, T2 = T>(
|
|
116
|
-
declare function useComputed<T, T2 = T>(
|
|
113
|
+
declare function useComputed<T>(get: () => T | Promise<T>): Observable<T>;
|
|
114
|
+
declare function useComputed<T>(get: () => T | Promise<T>, deps: any[]): Observable<T>;
|
|
115
|
+
declare function useComputed<T, T2 = T>(get: (() => T | Promise<T>) | ObservableParam<T>, set: (value: T2) => void): Observable<T>;
|
|
116
|
+
declare function useComputed<T, T2 = T>(get: (() => T | Promise<T>) | ObservableParam<T>, set: (value: T2) => void, deps: any[]): Observable<T>;
|
|
117
117
|
|
|
118
118
|
declare const useEffectOnce: (effect: () => void | (() => void), deps: any[]) => void;
|
|
119
119
|
|
|
@@ -130,9 +130,9 @@ declare const useMountOnce: typeof useMount;
|
|
|
130
130
|
* @see https://www.legendapp.com/dev/state/react/#useObservable
|
|
131
131
|
*/
|
|
132
132
|
declare function useObservable<T>(): Observable<T | undefined>;
|
|
133
|
-
declare function useObservable<T>(value: Promise<RecursiveValueOrFunction<T>> | (() => RecursiveValueOrFunction<T>) | RecursiveValueOrFunction<T
|
|
134
|
-
declare function useObservable<T>(value: T): Observable<T>;
|
|
135
|
-
declare function useObservable<T>(value?: T): Observable<any>;
|
|
133
|
+
declare function useObservable<T>(value: Promise<RecursiveValueOrFunction<T>> | (() => RecursiveValueOrFunction<T>) | RecursiveValueOrFunction<T>, deps?: DependencyList): Observable<T>;
|
|
134
|
+
declare function useObservable<T>(value: T, deps?: DependencyList): Observable<T>;
|
|
135
|
+
declare function useObservable<T>(value?: T, deps?: DependencyList): Observable<any>;
|
|
136
136
|
|
|
137
137
|
declare function useObservableReducer<R extends ReducerWithoutAction<any>, I>(reducer: R, initializerArg: I, initializer: (arg: I) => ReducerStateWithoutAction<R>): [Observable<ReducerStateWithoutAction<R>>, DispatchWithoutAction];
|
|
138
138
|
declare function useObservableReducer<R extends ReducerWithoutAction<any>>(reducer: R, initializerArg: ReducerStateWithoutAction<R>, initializer?: undefined): [Observable<ReducerStateWithoutAction<R>>, DispatchWithoutAction];
|
package/react.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { ReactNode, ReactElement, FC, LegacyRef, ComponentClass, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction } from 'react';
|
|
2
|
+
import { ReactNode, ReactElement, FC, LegacyRef, ComponentClass, DependencyList, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction } from 'react';
|
|
3
3
|
import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveEvent, ObserveOptions, ObserveEventCallback } from '@legendapp/state';
|
|
4
4
|
|
|
5
5
|
declare function Computed({ children }: {
|
|
@@ -110,10 +110,10 @@ declare function reactiveObserver<T extends FC<any>>(component: T, bindKeys?: Bi
|
|
|
110
110
|
declare function reactiveObserver<T extends FC<any>, T2 extends keyof ExtractFCPropsType<T>>(component: T, bindKeys?: BindKeys<ExtractFCPropsType<T>>): T | FC<ShapeWithPick$<ExtractFCPropsType<T>, T2>>;
|
|
111
111
|
declare function reactiveComponents<P extends Record<string, FC>>(components: P): ObjectShapeWith$<P>;
|
|
112
112
|
|
|
113
|
-
declare function useComputed<T>(
|
|
114
|
-
declare function useComputed<T>(
|
|
115
|
-
declare function useComputed<T, T2 = T>(
|
|
116
|
-
declare function useComputed<T, T2 = T>(
|
|
113
|
+
declare function useComputed<T>(get: () => T | Promise<T>): Observable<T>;
|
|
114
|
+
declare function useComputed<T>(get: () => T | Promise<T>, deps: any[]): Observable<T>;
|
|
115
|
+
declare function useComputed<T, T2 = T>(get: (() => T | Promise<T>) | ObservableParam<T>, set: (value: T2) => void): Observable<T>;
|
|
116
|
+
declare function useComputed<T, T2 = T>(get: (() => T | Promise<T>) | ObservableParam<T>, set: (value: T2) => void, deps: any[]): Observable<T>;
|
|
117
117
|
|
|
118
118
|
declare const useEffectOnce: (effect: () => void | (() => void), deps: any[]) => void;
|
|
119
119
|
|
|
@@ -130,9 +130,9 @@ declare const useMountOnce: typeof useMount;
|
|
|
130
130
|
* @see https://www.legendapp.com/dev/state/react/#useObservable
|
|
131
131
|
*/
|
|
132
132
|
declare function useObservable<T>(): Observable<T | undefined>;
|
|
133
|
-
declare function useObservable<T>(value: Promise<RecursiveValueOrFunction<T>> | (() => RecursiveValueOrFunction<T>) | RecursiveValueOrFunction<T
|
|
134
|
-
declare function useObservable<T>(value: T): Observable<T>;
|
|
135
|
-
declare function useObservable<T>(value?: T): Observable<any>;
|
|
133
|
+
declare function useObservable<T>(value: Promise<RecursiveValueOrFunction<T>> | (() => RecursiveValueOrFunction<T>) | RecursiveValueOrFunction<T>, deps?: DependencyList): Observable<T>;
|
|
134
|
+
declare function useObservable<T>(value: T, deps?: DependencyList): Observable<T>;
|
|
135
|
+
declare function useObservable<T>(value?: T, deps?: DependencyList): Observable<any>;
|
|
136
136
|
|
|
137
137
|
declare function useObservableReducer<R extends ReducerWithoutAction<any>, I>(reducer: R, initializerArg: I, initializer: (arg: I) => ReducerStateWithoutAction<R>): [Observable<ReducerStateWithoutAction<R>>, DispatchWithoutAction];
|
|
138
138
|
declare function useObservableReducer<R extends ReducerWithoutAction<any>>(reducer: R, initializerArg: ReducerStateWithoutAction<R>, initializer?: undefined): [Observable<ReducerStateWithoutAction<R>>, DispatchWithoutAction];
|
package/react.js
CHANGED
|
@@ -149,10 +149,10 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
149
149
|
if (component["__legend_proxied"])
|
|
150
150
|
return component;
|
|
151
151
|
let useForwardRef = false;
|
|
152
|
-
let
|
|
152
|
+
let useMemo4 = false;
|
|
153
153
|
let render = component;
|
|
154
154
|
if (ReactMemoSymbol && render["$$typeof"] === ReactMemoSymbol && render["type"]) {
|
|
155
|
-
|
|
155
|
+
useMemo4 = true;
|
|
156
156
|
render = render["type"];
|
|
157
157
|
}
|
|
158
158
|
if (ReactForwardRefSymbol && render["$$typeof"] === ReactForwardRefSymbol) {
|
|
@@ -233,7 +233,7 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
233
233
|
} else {
|
|
234
234
|
ret = proxy;
|
|
235
235
|
}
|
|
236
|
-
return observe3 ||
|
|
236
|
+
return observe3 || useMemo4 ? React.memo(ret) : ret;
|
|
237
237
|
}
|
|
238
238
|
function observer(component) {
|
|
239
239
|
return createReactiveComponent(component, true);
|
|
@@ -389,20 +389,33 @@ function Switch({
|
|
|
389
389
|
const child = children[useSelector(value)];
|
|
390
390
|
return (_b = child ? child() : (_a = children["default"]) == null ? void 0 : _a.call(children)) != null ? _b : null;
|
|
391
391
|
}
|
|
392
|
-
function
|
|
392
|
+
function useObservable(initialValue, deps) {
|
|
393
|
+
var _a;
|
|
394
|
+
const ref = React.useRef({});
|
|
395
|
+
ref.current.value = initialValue;
|
|
396
|
+
const depsObs$ = deps ? useObservable(deps) : void 0;
|
|
397
|
+
if (!((_a = ref.current) == null ? void 0 : _a.obs$)) {
|
|
398
|
+
const value = depsObs$ ? () => {
|
|
399
|
+
depsObs$.get();
|
|
400
|
+
return state.computeSelector(ref.current.value);
|
|
401
|
+
} : initialValue;
|
|
402
|
+
ref.current.obs$ = state.observable(value);
|
|
403
|
+
}
|
|
404
|
+
if (depsObs$) {
|
|
405
|
+
depsObs$.set(deps);
|
|
406
|
+
}
|
|
407
|
+
return ref.current.obs$;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// src/react/useComputed.ts
|
|
411
|
+
function useComputed(get, set, deps) {
|
|
393
412
|
if (!deps && state.isArray(set)) {
|
|
394
413
|
deps = set;
|
|
395
414
|
set = void 0;
|
|
396
415
|
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
return React.useMemo(
|
|
401
|
-
() => state.computed(
|
|
402
|
-
() => state.isFunction(ref.current.compute) ? ref.current.compute() : ref.current.compute,
|
|
403
|
-
set ? (value) => ref.current.set(value) : void 0
|
|
404
|
-
),
|
|
405
|
-
deps || []
|
|
416
|
+
return useObservable(
|
|
417
|
+
set ? state.linked({ get, set: ({ value }) => set(value) }) : get,
|
|
418
|
+
deps
|
|
406
419
|
);
|
|
407
420
|
}
|
|
408
421
|
var useEffectOnce = (effect, deps) => {
|
|
@@ -442,13 +455,6 @@ function useMount(fn) {
|
|
|
442
455
|
}, []);
|
|
443
456
|
}
|
|
444
457
|
var useMountOnce = useMount;
|
|
445
|
-
function useObservable(initialValue) {
|
|
446
|
-
const ref = React.useRef();
|
|
447
|
-
if (!ref.current) {
|
|
448
|
-
ref.current = state.observable(initialValue);
|
|
449
|
-
}
|
|
450
|
-
return ref.current;
|
|
451
|
-
}
|
|
452
458
|
|
|
453
459
|
// src/react/useIsMounted.ts
|
|
454
460
|
function useIsMounted() {
|
package/react.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isFunction, isEmpty, observable, isPromise, isObservable, syncState, computeSelector, isArray, isMap, isObservableValueReady,
|
|
1
|
+
import { isFunction, isEmpty, observable, isPromise, isObservable, syncState, computeSelector, isArray, isMap, isObservableValueReady, linked, observe, when, 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
|
|
|
@@ -143,10 +143,10 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
143
143
|
if (component["__legend_proxied"])
|
|
144
144
|
return component;
|
|
145
145
|
let useForwardRef = false;
|
|
146
|
-
let
|
|
146
|
+
let useMemo4 = false;
|
|
147
147
|
let render = component;
|
|
148
148
|
if (ReactMemoSymbol && render["$$typeof"] === ReactMemoSymbol && render["type"]) {
|
|
149
|
-
|
|
149
|
+
useMemo4 = true;
|
|
150
150
|
render = render["type"];
|
|
151
151
|
}
|
|
152
152
|
if (ReactForwardRefSymbol && render["$$typeof"] === ReactForwardRefSymbol) {
|
|
@@ -227,7 +227,7 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
227
227
|
} else {
|
|
228
228
|
ret = proxy;
|
|
229
229
|
}
|
|
230
|
-
return observe3 ||
|
|
230
|
+
return observe3 || useMemo4 ? memo(ret) : ret;
|
|
231
231
|
}
|
|
232
232
|
function observer(component) {
|
|
233
233
|
return createReactiveComponent(component, true);
|
|
@@ -383,20 +383,33 @@ function Switch({
|
|
|
383
383
|
const child = children[useSelector(value)];
|
|
384
384
|
return (_b = child ? child() : (_a = children["default"]) == null ? void 0 : _a.call(children)) != null ? _b : null;
|
|
385
385
|
}
|
|
386
|
-
function
|
|
386
|
+
function useObservable(initialValue, deps) {
|
|
387
|
+
var _a;
|
|
388
|
+
const ref = useRef({});
|
|
389
|
+
ref.current.value = initialValue;
|
|
390
|
+
const depsObs$ = deps ? useObservable(deps) : void 0;
|
|
391
|
+
if (!((_a = ref.current) == null ? void 0 : _a.obs$)) {
|
|
392
|
+
const value = depsObs$ ? () => {
|
|
393
|
+
depsObs$.get();
|
|
394
|
+
return computeSelector(ref.current.value);
|
|
395
|
+
} : initialValue;
|
|
396
|
+
ref.current.obs$ = observable(value);
|
|
397
|
+
}
|
|
398
|
+
if (depsObs$) {
|
|
399
|
+
depsObs$.set(deps);
|
|
400
|
+
}
|
|
401
|
+
return ref.current.obs$;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// src/react/useComputed.ts
|
|
405
|
+
function useComputed(get, set, deps) {
|
|
387
406
|
if (!deps && isArray(set)) {
|
|
388
407
|
deps = set;
|
|
389
408
|
set = void 0;
|
|
390
409
|
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
return useMemo(
|
|
395
|
-
() => computed(
|
|
396
|
-
() => isFunction(ref.current.compute) ? ref.current.compute() : ref.current.compute,
|
|
397
|
-
set ? (value) => ref.current.set(value) : void 0
|
|
398
|
-
),
|
|
399
|
-
deps || []
|
|
410
|
+
return useObservable(
|
|
411
|
+
set ? linked({ get, set: ({ value }) => set(value) }) : get,
|
|
412
|
+
deps
|
|
400
413
|
);
|
|
401
414
|
}
|
|
402
415
|
var useEffectOnce = (effect, deps) => {
|
|
@@ -436,13 +449,6 @@ function useMount(fn) {
|
|
|
436
449
|
}, []);
|
|
437
450
|
}
|
|
438
451
|
var useMountOnce = useMount;
|
|
439
|
-
function useObservable(initialValue) {
|
|
440
|
-
const ref = useRef();
|
|
441
|
-
if (!ref.current) {
|
|
442
|
-
ref.current = observable(initialValue);
|
|
443
|
-
}
|
|
444
|
-
return ref.current;
|
|
445
|
-
}
|
|
446
452
|
|
|
447
453
|
// src/react/useIsMounted.ts
|
|
448
454
|
function useIsMounted() {
|
package/sync.js
CHANGED
|
@@ -205,19 +205,16 @@ async function updateMetadataImmediate(value$, localState, syncState, syncOption
|
|
|
205
205
|
const { pluginPersist } = localState;
|
|
206
206
|
const { table, config } = parseLocalConfig(syncOptions == null ? void 0 : syncOptions.persist);
|
|
207
207
|
const oldMetadata = metadatas.get(value$);
|
|
208
|
-
const { lastSync
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
lastSync
|
|
219
|
-
});
|
|
220
|
-
}
|
|
208
|
+
const { lastSync } = newMetadata;
|
|
209
|
+
const metadata = Object.assign({}, oldMetadata, newMetadata);
|
|
210
|
+
metadatas.set(value$, metadata);
|
|
211
|
+
if (pluginPersist) {
|
|
212
|
+
await pluginPersist.setMetadata(table, metadata, config);
|
|
213
|
+
}
|
|
214
|
+
if (lastSync) {
|
|
215
|
+
syncState.assign({
|
|
216
|
+
lastSync
|
|
217
|
+
});
|
|
221
218
|
}
|
|
222
219
|
}
|
|
223
220
|
function updateMetadata(value$, localState, syncState, syncOptions, newMetadata) {
|
|
@@ -692,11 +689,13 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
692
689
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && (!obs$ || !node)) {
|
|
693
690
|
throw new Error("[legend-state] syncObservable called with undefined observable");
|
|
694
691
|
}
|
|
695
|
-
syncOptions =
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
692
|
+
syncOptions = state.mergeIntoObservable(
|
|
693
|
+
{
|
|
694
|
+
syncMode: "auto"
|
|
695
|
+
},
|
|
696
|
+
observableSyncConfiguration,
|
|
697
|
+
removeNullUndefined(syncOptions || {})
|
|
698
|
+
);
|
|
700
699
|
const localState = {};
|
|
701
700
|
let sync;
|
|
702
701
|
const syncState = node.state = state.observable({
|
package/sync.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isObject, isDate, isNullOrUndefined, isString, endBatch, beginBatch, isFunction, observable, when, linked, internal, isPromise,
|
|
1
|
+
import { isObject, isDate, isNullOrUndefined, isString, endBatch, beginBatch, isFunction, mergeIntoObservable, observable, when, linked, internal, isPromise, isEmpty, shouldIgnoreUnobserved, whenReady, constructObjectWithPath, deconstructObjectWithPath, setAtPath, isArray } from '@legendapp/state';
|
|
2
2
|
|
|
3
3
|
// sync.ts
|
|
4
4
|
|
|
@@ -203,19 +203,16 @@ async function updateMetadataImmediate(value$, localState, syncState, syncOption
|
|
|
203
203
|
const { pluginPersist } = localState;
|
|
204
204
|
const { table, config } = parseLocalConfig(syncOptions == null ? void 0 : syncOptions.persist);
|
|
205
205
|
const oldMetadata = metadatas.get(value$);
|
|
206
|
-
const { lastSync
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
lastSync
|
|
217
|
-
});
|
|
218
|
-
}
|
|
206
|
+
const { lastSync } = newMetadata;
|
|
207
|
+
const metadata = Object.assign({}, oldMetadata, newMetadata);
|
|
208
|
+
metadatas.set(value$, metadata);
|
|
209
|
+
if (pluginPersist) {
|
|
210
|
+
await pluginPersist.setMetadata(table, metadata, config);
|
|
211
|
+
}
|
|
212
|
+
if (lastSync) {
|
|
213
|
+
syncState.assign({
|
|
214
|
+
lastSync
|
|
215
|
+
});
|
|
219
216
|
}
|
|
220
217
|
}
|
|
221
218
|
function updateMetadata(value$, localState, syncState, syncOptions, newMetadata) {
|
|
@@ -690,11 +687,13 @@ function syncObservable(obs$, syncOptionsOrSynced) {
|
|
|
690
687
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && (!obs$ || !node)) {
|
|
691
688
|
throw new Error("[legend-state] syncObservable called with undefined observable");
|
|
692
689
|
}
|
|
693
|
-
syncOptions =
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
690
|
+
syncOptions = mergeIntoObservable(
|
|
691
|
+
{
|
|
692
|
+
syncMode: "auto"
|
|
693
|
+
},
|
|
694
|
+
observableSyncConfiguration,
|
|
695
|
+
removeNullUndefined(syncOptions || {})
|
|
696
|
+
);
|
|
698
697
|
const localState = {};
|
|
699
698
|
let sync;
|
|
700
699
|
const syncState = node.state = observable({
|