@legendapp/state 3.0.0-beta.12 → 3.0.0-beta.14
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/.DS_Store +0 -0
- package/config/enableReactComponents.js +3 -1
- package/config/enableReactComponents.mjs +3 -1
- package/index.d.mts +6 -1
- package/index.d.ts +6 -1
- package/index.js +35 -9
- package/index.mjs +35 -9
- package/package.json +1 -1
- package/react-reactive/enableReactComponents.js +3 -1
- package/react-reactive/enableReactComponents.mjs +3 -1
- package/react-reactive/enableReactive.js +3 -1
- package/react-reactive/enableReactive.mjs +3 -1
- package/react.d.mts +26 -15
- package/react.d.ts +26 -15
- package/react.js +13 -9
- package/react.mjs +13 -9
- package/sync-plugins/crud.d.mts +8 -3
- package/sync-plugins/crud.d.ts +8 -3
- package/sync-plugins/crud.js +144 -80
- package/sync-plugins/crud.mjs +144 -80
- package/sync-plugins/firebase.d.mts +7 -3
- package/sync-plugins/firebase.d.ts +7 -3
- package/sync-plugins/firebase.js +4 -2
- package/sync-plugins/firebase.mjs +4 -2
- package/sync-plugins/keel.d.mts +5 -9
- package/sync-plugins/keel.d.ts +5 -9
- package/sync-plugins/keel.js +48 -30
- package/sync-plugins/keel.mjs +48 -30
- package/sync-plugins/supabase.d.mts +7 -3
- package/sync-plugins/supabase.d.ts +7 -3
- package/sync-plugins/supabase.js +55 -18
- package/sync-plugins/supabase.mjs +56 -19
- package/sync.d.mts +16 -8
- package/sync.d.ts +16 -8
- package/sync.js +95 -67
- package/sync.mjs +94 -67
package/.DS_Store
CHANGED
|
Binary file
|
|
@@ -4,7 +4,9 @@ var react = require('@legendapp/state/react');
|
|
|
4
4
|
|
|
5
5
|
// src/config/enableReactComponents.ts
|
|
6
6
|
function enableReactComponents() {
|
|
7
|
-
const bindInfo = {
|
|
7
|
+
const bindInfo = {
|
|
8
|
+
value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" }
|
|
9
|
+
};
|
|
8
10
|
const bindInfoInput = Object.assign(
|
|
9
11
|
{ checked: { handler: "onChange", getValue: (e) => e.target.checked } },
|
|
10
12
|
bindInfo
|
|
@@ -2,7 +2,9 @@ import { configureReactive } from '@legendapp/state/react';
|
|
|
2
2
|
|
|
3
3
|
// src/config/enableReactComponents.ts
|
|
4
4
|
function enableReactComponents() {
|
|
5
|
-
const bindInfo = {
|
|
5
|
+
const bindInfo = {
|
|
6
|
+
value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" }
|
|
7
|
+
};
|
|
6
8
|
const bindInfoInput = Object.assign(
|
|
7
9
|
{ checked: { handler: "onChange", getValue: (e) => e.target.checked } },
|
|
8
10
|
bindInfo
|
package/index.d.mts
CHANGED
|
@@ -108,6 +108,7 @@ declare function getNode(value$: ObservableParam): NodeInfo;
|
|
|
108
108
|
declare function setNodeValue(node: NodeInfo, newValue: any): {
|
|
109
109
|
prevValue: any;
|
|
110
110
|
newValue: any;
|
|
111
|
+
parentValue: any;
|
|
111
112
|
};
|
|
112
113
|
declare function getNodeValue(node: NodeInfo): any;
|
|
113
114
|
declare function ensureNodeValue(node: NodeInfo): any;
|
|
@@ -248,7 +249,11 @@ interface UpdateFnParams<T = any> {
|
|
|
248
249
|
mode?: GetMode;
|
|
249
250
|
lastSync?: number | undefined;
|
|
250
251
|
}
|
|
252
|
+
interface UpdateSetFnParams<T = any> extends UpdateFnParams<T> {
|
|
253
|
+
lastSync?: never;
|
|
254
|
+
}
|
|
251
255
|
type UpdateFn<T = any> = (params: UpdateFnParams<T>) => void;
|
|
256
|
+
type UpdateSetFn<T = any> = (params: UpdateSetFnParams<T>) => void;
|
|
252
257
|
type Linked<T> = T;
|
|
253
258
|
interface ObserveOptions {
|
|
254
259
|
immediate?: boolean;
|
|
@@ -428,4 +433,4 @@ declare const internal: {
|
|
|
428
433
|
};
|
|
429
434
|
};
|
|
430
435
|
|
|
431
|
-
export { type ArrayValue, type Change, type ChildNodeInfo, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeInfo, type NodeListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, ObservableHint, type ObservableListenerDispose, type ObservableMap, 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 PlainObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeInfo, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type WaitForSet, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPlainObject, isPrimitive, isPromise, isSet, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
|
436
|
+
export { type ArrayValue, type Change, type ChildNodeInfo, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeInfo, type NodeListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, ObservableHint, type ObservableListenerDispose, type ObservableMap, 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 PlainObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeInfo, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type UpdateSetFn, type UpdateSetFnParams, type WaitForSet, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPlainObject, isPrimitive, isPromise, isSet, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
package/index.d.ts
CHANGED
|
@@ -108,6 +108,7 @@ declare function getNode(value$: ObservableParam): NodeInfo;
|
|
|
108
108
|
declare function setNodeValue(node: NodeInfo, newValue: any): {
|
|
109
109
|
prevValue: any;
|
|
110
110
|
newValue: any;
|
|
111
|
+
parentValue: any;
|
|
111
112
|
};
|
|
112
113
|
declare function getNodeValue(node: NodeInfo): any;
|
|
113
114
|
declare function ensureNodeValue(node: NodeInfo): any;
|
|
@@ -248,7 +249,11 @@ interface UpdateFnParams<T = any> {
|
|
|
248
249
|
mode?: GetMode;
|
|
249
250
|
lastSync?: number | undefined;
|
|
250
251
|
}
|
|
252
|
+
interface UpdateSetFnParams<T = any> extends UpdateFnParams<T> {
|
|
253
|
+
lastSync?: never;
|
|
254
|
+
}
|
|
251
255
|
type UpdateFn<T = any> = (params: UpdateFnParams<T>) => void;
|
|
256
|
+
type UpdateSetFn<T = any> = (params: UpdateSetFnParams<T>) => void;
|
|
252
257
|
type Linked<T> = T;
|
|
253
258
|
interface ObserveOptions {
|
|
254
259
|
immediate?: boolean;
|
|
@@ -428,4 +433,4 @@ declare const internal: {
|
|
|
428
433
|
};
|
|
429
434
|
};
|
|
430
435
|
|
|
431
|
-
export { type ArrayValue, type Change, type ChildNodeInfo, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeInfo, type NodeListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, ObservableHint, type ObservableListenerDispose, type ObservableMap, 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 PlainObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeInfo, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type WaitForSet, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPlainObject, isPrimitive, isPromise, isSet, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
|
436
|
+
export { type ArrayValue, type Change, type ChildNodeInfo, type ClassConstructor, type GetMode, type GetOptions, type ImmutableObservableBase, type Linked, type LinkedOptions, type ListenerFn, type ListenerParams, type NodeInfo, type NodeListener, type NotPrimitive, type Observable, type ObservableBoolean, type ObservableEvent, ObservableHint, type ObservableListenerDispose, type ObservableMap, 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 PlainObject, type Primitive, type RecordValue, type RecursiveValueOrFunction, type RemoveObservables, type RetryOptions, type RootNodeInfo, type Selector, type SetParams, type TrackingNode, type TrackingState, type TrackingType, type TypeAtPath, type UpdateFn, type UpdateFnParams, type UpdateSetFn, type UpdateSetFnParams, type WaitForSet, type WaitForSetFnParams, applyChange, applyChanges, batch, beginBatch, computeSelector, computed, constructObjectWithPath, deconstructObjectWithPath, endBatch, event, getObservableIndex, hasOwnProperty, internal, isArray, isBoolean, isDate, isEmpty, isFunction, isMap, isNullOrUndefined, isNumber, isObject, isObservable, isObservableValueReady, isObserved, isPlainObject, isPrimitive, isPromise, isSet, isString, isSymbol, linked, mergeIntoObservable, observable, observablePrimitive, observe, opaqueObject, proxy, setAtPath, setSilently, shouldIgnoreUnobserved, syncState, trackSelector, when, whenReady };
|
package/index.js
CHANGED
|
@@ -181,7 +181,7 @@ function setNodeValue(node, newValue) {
|
|
|
181
181
|
parentNode.isSetting--;
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
return { prevValue, newValue };
|
|
184
|
+
return { prevValue, newValue, parentValue };
|
|
185
185
|
}
|
|
186
186
|
var arrNodeKeys = [];
|
|
187
187
|
function getNodeValue(node) {
|
|
@@ -1173,8 +1173,8 @@ function collectionSetter(node, target, prop, ...args) {
|
|
|
1173
1173
|
return ret;
|
|
1174
1174
|
}
|
|
1175
1175
|
}
|
|
1176
|
-
function getKeys(obj, isArr, isMap2) {
|
|
1177
|
-
return isArr ? void 0 : obj ? isMap2 ? Array.from(obj.keys()) : Object.keys(obj) : [];
|
|
1176
|
+
function getKeys(obj, isArr, isMap2, isSet2) {
|
|
1177
|
+
return isArr ? void 0 : obj ? isSet2 ? Array.from(obj) : isMap2 ? Array.from(obj.keys()) : Object.keys(obj) : [];
|
|
1178
1178
|
}
|
|
1179
1179
|
function updateNodes(parent, obj, prevValue) {
|
|
1180
1180
|
var _a, _b, _c;
|
|
@@ -1204,9 +1204,11 @@ function updateNodes(parent, obj, prevValue) {
|
|
|
1204
1204
|
let prevChildrenById;
|
|
1205
1205
|
let moved;
|
|
1206
1206
|
const isCurMap = isMap(obj);
|
|
1207
|
+
const isCurSet = isSet(obj);
|
|
1207
1208
|
const isPrevMap = isMap(prevValue);
|
|
1208
|
-
const
|
|
1209
|
-
const
|
|
1209
|
+
const isPrevSet = isSet(prevValue);
|
|
1210
|
+
const keys = getKeys(obj, isArr, isCurMap, isCurSet);
|
|
1211
|
+
const keysPrev = getKeys(prevValue, isArr, isPrevMap, isPrevSet);
|
|
1210
1212
|
const length = ((_a = keys || obj) == null ? void 0 : _a.length) || 0;
|
|
1211
1213
|
const lengthPrev = ((_b = keysPrev || prevValue) == null ? void 0 : _b.length) || 0;
|
|
1212
1214
|
let idField;
|
|
@@ -1588,7 +1590,7 @@ function setKey(node, key, newValue, level) {
|
|
|
1588
1590
|
if (isObservable(newValue)) {
|
|
1589
1591
|
setToObservable(childNode, newValue);
|
|
1590
1592
|
} else {
|
|
1591
|
-
const { newValue: savedValue, prevValue } = setNodeValue(childNode, newValue);
|
|
1593
|
+
const { newValue: savedValue, prevValue, parentValue } = setNodeValue(childNode, newValue);
|
|
1592
1594
|
const isPrim = isPrimitive(savedValue) || savedValue instanceof Date;
|
|
1593
1595
|
if (!isPrim) {
|
|
1594
1596
|
let parent = childNode;
|
|
@@ -1600,7 +1602,17 @@ function setKey(node, key, newValue, level) {
|
|
|
1600
1602
|
const notify2 = !equals(savedValue, prevValue);
|
|
1601
1603
|
const forceNotify = !notify2 && childNode.isComputing && !isPrim;
|
|
1602
1604
|
if (notify2 || forceNotify) {
|
|
1603
|
-
updateNodesAndNotify(
|
|
1605
|
+
updateNodesAndNotify(
|
|
1606
|
+
node,
|
|
1607
|
+
savedValue,
|
|
1608
|
+
prevValue,
|
|
1609
|
+
childNode,
|
|
1610
|
+
parentValue,
|
|
1611
|
+
isPrim,
|
|
1612
|
+
isRoot,
|
|
1613
|
+
level,
|
|
1614
|
+
forceNotify
|
|
1615
|
+
);
|
|
1604
1616
|
}
|
|
1605
1617
|
extractFunctionOrComputed(node, key, savedValue);
|
|
1606
1618
|
}
|
|
@@ -1707,7 +1719,7 @@ function handlerMapSet(node, p, value) {
|
|
|
1707
1719
|
};
|
|
1708
1720
|
}
|
|
1709
1721
|
}
|
|
1710
|
-
function updateNodesAndNotify(node, newValue, prevValue, childNode, isPrim, isRoot, level, forceNotify) {
|
|
1722
|
+
function updateNodesAndNotify(node, newValue, prevValue, childNode, parentValue, isPrim, isRoot, level, forceNotify) {
|
|
1711
1723
|
if (!childNode)
|
|
1712
1724
|
childNode = node;
|
|
1713
1725
|
beginBatch();
|
|
@@ -1716,15 +1728,29 @@ function updateNodesAndNotify(node, newValue, prevValue, childNode, isPrim, isRo
|
|
|
1716
1728
|
}
|
|
1717
1729
|
let hasADiff = forceNotify || isPrim;
|
|
1718
1730
|
let whenOptimizedOnlyIf = false;
|
|
1731
|
+
let valueAsArr;
|
|
1732
|
+
let valueAsMap;
|
|
1719
1733
|
if (!isPrim || prevValue && !isPrimitive(prevValue)) {
|
|
1720
1734
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && typeof __devUpdateNodes !== "undefined") {
|
|
1721
1735
|
__devUpdateNodes.clear();
|
|
1722
1736
|
}
|
|
1723
1737
|
hasADiff = hasADiff || updateNodes(childNode, newValue, prevValue);
|
|
1724
1738
|
if (isArray(newValue)) {
|
|
1725
|
-
|
|
1739
|
+
valueAsArr = newValue;
|
|
1740
|
+
} else if (isMap(newValue) || isSet(newValue)) {
|
|
1741
|
+
valueAsMap = newValue;
|
|
1726
1742
|
}
|
|
1727
1743
|
}
|
|
1744
|
+
if (isArray(parentValue)) {
|
|
1745
|
+
valueAsArr = parentValue;
|
|
1746
|
+
} else if (isMap(parentValue) || isSet(parentValue)) {
|
|
1747
|
+
valueAsMap = parentValue;
|
|
1748
|
+
}
|
|
1749
|
+
if (valueAsArr) {
|
|
1750
|
+
whenOptimizedOnlyIf = (valueAsArr == null ? void 0 : valueAsArr.length) !== (prevValue == null ? void 0 : prevValue.length);
|
|
1751
|
+
} else if (valueAsMap) {
|
|
1752
|
+
whenOptimizedOnlyIf = (valueAsMap == null ? void 0 : valueAsMap.size) !== (prevValue == null ? void 0 : prevValue.size);
|
|
1753
|
+
}
|
|
1728
1754
|
if (isPrim || !newValue || isEmpty(newValue) && !isEmpty(prevValue) ? newValue !== prevValue : hasADiff) {
|
|
1729
1755
|
notify(
|
|
1730
1756
|
isPrim && isRoot ? node : childNode,
|
package/index.mjs
CHANGED
|
@@ -179,7 +179,7 @@ function setNodeValue(node, newValue) {
|
|
|
179
179
|
parentNode.isSetting--;
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
-
return { prevValue, newValue };
|
|
182
|
+
return { prevValue, newValue, parentValue };
|
|
183
183
|
}
|
|
184
184
|
var arrNodeKeys = [];
|
|
185
185
|
function getNodeValue(node) {
|
|
@@ -1171,8 +1171,8 @@ function collectionSetter(node, target, prop, ...args) {
|
|
|
1171
1171
|
return ret;
|
|
1172
1172
|
}
|
|
1173
1173
|
}
|
|
1174
|
-
function getKeys(obj, isArr, isMap2) {
|
|
1175
|
-
return isArr ? void 0 : obj ? isMap2 ? Array.from(obj.keys()) : Object.keys(obj) : [];
|
|
1174
|
+
function getKeys(obj, isArr, isMap2, isSet2) {
|
|
1175
|
+
return isArr ? void 0 : obj ? isSet2 ? Array.from(obj) : isMap2 ? Array.from(obj.keys()) : Object.keys(obj) : [];
|
|
1176
1176
|
}
|
|
1177
1177
|
function updateNodes(parent, obj, prevValue) {
|
|
1178
1178
|
var _a, _b, _c;
|
|
@@ -1202,9 +1202,11 @@ function updateNodes(parent, obj, prevValue) {
|
|
|
1202
1202
|
let prevChildrenById;
|
|
1203
1203
|
let moved;
|
|
1204
1204
|
const isCurMap = isMap(obj);
|
|
1205
|
+
const isCurSet = isSet(obj);
|
|
1205
1206
|
const isPrevMap = isMap(prevValue);
|
|
1206
|
-
const
|
|
1207
|
-
const
|
|
1207
|
+
const isPrevSet = isSet(prevValue);
|
|
1208
|
+
const keys = getKeys(obj, isArr, isCurMap, isCurSet);
|
|
1209
|
+
const keysPrev = getKeys(prevValue, isArr, isPrevMap, isPrevSet);
|
|
1208
1210
|
const length = ((_a = keys || obj) == null ? void 0 : _a.length) || 0;
|
|
1209
1211
|
const lengthPrev = ((_b = keysPrev || prevValue) == null ? void 0 : _b.length) || 0;
|
|
1210
1212
|
let idField;
|
|
@@ -1586,7 +1588,7 @@ function setKey(node, key, newValue, level) {
|
|
|
1586
1588
|
if (isObservable(newValue)) {
|
|
1587
1589
|
setToObservable(childNode, newValue);
|
|
1588
1590
|
} else {
|
|
1589
|
-
const { newValue: savedValue, prevValue } = setNodeValue(childNode, newValue);
|
|
1591
|
+
const { newValue: savedValue, prevValue, parentValue } = setNodeValue(childNode, newValue);
|
|
1590
1592
|
const isPrim = isPrimitive(savedValue) || savedValue instanceof Date;
|
|
1591
1593
|
if (!isPrim) {
|
|
1592
1594
|
let parent = childNode;
|
|
@@ -1598,7 +1600,17 @@ function setKey(node, key, newValue, level) {
|
|
|
1598
1600
|
const notify2 = !equals(savedValue, prevValue);
|
|
1599
1601
|
const forceNotify = !notify2 && childNode.isComputing && !isPrim;
|
|
1600
1602
|
if (notify2 || forceNotify) {
|
|
1601
|
-
updateNodesAndNotify(
|
|
1603
|
+
updateNodesAndNotify(
|
|
1604
|
+
node,
|
|
1605
|
+
savedValue,
|
|
1606
|
+
prevValue,
|
|
1607
|
+
childNode,
|
|
1608
|
+
parentValue,
|
|
1609
|
+
isPrim,
|
|
1610
|
+
isRoot,
|
|
1611
|
+
level,
|
|
1612
|
+
forceNotify
|
|
1613
|
+
);
|
|
1602
1614
|
}
|
|
1603
1615
|
extractFunctionOrComputed(node, key, savedValue);
|
|
1604
1616
|
}
|
|
@@ -1705,7 +1717,7 @@ function handlerMapSet(node, p, value) {
|
|
|
1705
1717
|
};
|
|
1706
1718
|
}
|
|
1707
1719
|
}
|
|
1708
|
-
function updateNodesAndNotify(node, newValue, prevValue, childNode, isPrim, isRoot, level, forceNotify) {
|
|
1720
|
+
function updateNodesAndNotify(node, newValue, prevValue, childNode, parentValue, isPrim, isRoot, level, forceNotify) {
|
|
1709
1721
|
if (!childNode)
|
|
1710
1722
|
childNode = node;
|
|
1711
1723
|
beginBatch();
|
|
@@ -1714,15 +1726,29 @@ function updateNodesAndNotify(node, newValue, prevValue, childNode, isPrim, isRo
|
|
|
1714
1726
|
}
|
|
1715
1727
|
let hasADiff = forceNotify || isPrim;
|
|
1716
1728
|
let whenOptimizedOnlyIf = false;
|
|
1729
|
+
let valueAsArr;
|
|
1730
|
+
let valueAsMap;
|
|
1717
1731
|
if (!isPrim || prevValue && !isPrimitive(prevValue)) {
|
|
1718
1732
|
if ((process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test") && typeof __devUpdateNodes !== "undefined") {
|
|
1719
1733
|
__devUpdateNodes.clear();
|
|
1720
1734
|
}
|
|
1721
1735
|
hasADiff = hasADiff || updateNodes(childNode, newValue, prevValue);
|
|
1722
1736
|
if (isArray(newValue)) {
|
|
1723
|
-
|
|
1737
|
+
valueAsArr = newValue;
|
|
1738
|
+
} else if (isMap(newValue) || isSet(newValue)) {
|
|
1739
|
+
valueAsMap = newValue;
|
|
1724
1740
|
}
|
|
1725
1741
|
}
|
|
1742
|
+
if (isArray(parentValue)) {
|
|
1743
|
+
valueAsArr = parentValue;
|
|
1744
|
+
} else if (isMap(parentValue) || isSet(parentValue)) {
|
|
1745
|
+
valueAsMap = parentValue;
|
|
1746
|
+
}
|
|
1747
|
+
if (valueAsArr) {
|
|
1748
|
+
whenOptimizedOnlyIf = (valueAsArr == null ? void 0 : valueAsArr.length) !== (prevValue == null ? void 0 : prevValue.length);
|
|
1749
|
+
} else if (valueAsMap) {
|
|
1750
|
+
whenOptimizedOnlyIf = (valueAsMap == null ? void 0 : valueAsMap.size) !== (prevValue == null ? void 0 : prevValue.size);
|
|
1751
|
+
}
|
|
1726
1752
|
if (isPrim || !newValue || isEmpty(newValue) && !isEmpty(prevValue) ? newValue !== prevValue : hasADiff) {
|
|
1727
1753
|
notify(
|
|
1728
1754
|
isPrim && isRoot ? node : childNode,
|
package/package.json
CHANGED
|
@@ -7,7 +7,9 @@ function enableReactComponents_(config) {
|
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
9
|
isEnabled = true;
|
|
10
|
-
const bindInfo = {
|
|
10
|
+
const bindInfo = {
|
|
11
|
+
value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" }
|
|
12
|
+
};
|
|
11
13
|
const bindInfoInput = Object.assign(
|
|
12
14
|
{ checked: { handler: "onChange", getValue: (e) => e.target.checked } },
|
|
13
15
|
bindInfo
|
|
@@ -5,7 +5,9 @@ function enableReactComponents_(config) {
|
|
|
5
5
|
return;
|
|
6
6
|
}
|
|
7
7
|
isEnabled = true;
|
|
8
|
-
const bindInfo = {
|
|
8
|
+
const bindInfo = {
|
|
9
|
+
value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" }
|
|
10
|
+
};
|
|
9
11
|
const bindInfoInput = Object.assign(
|
|
10
12
|
{ checked: { handler: "onChange", getValue: (e) => e.target.checked } },
|
|
11
13
|
bindInfo
|
|
@@ -7,7 +7,9 @@ function enableReactComponents_(config) {
|
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
9
|
isEnabled = true;
|
|
10
|
-
const bindInfo = {
|
|
10
|
+
const bindInfo = {
|
|
11
|
+
value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" }
|
|
12
|
+
};
|
|
11
13
|
const bindInfoInput = Object.assign(
|
|
12
14
|
{ checked: { handler: "onChange", getValue: (e) => e.target.checked } },
|
|
13
15
|
bindInfo
|
|
@@ -5,7 +5,9 @@ function enableReactComponents_(config) {
|
|
|
5
5
|
return;
|
|
6
6
|
}
|
|
7
7
|
isEnabled = true;
|
|
8
|
-
const bindInfo = {
|
|
8
|
+
const bindInfo = {
|
|
9
|
+
value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" }
|
|
10
|
+
};
|
|
9
11
|
const bindInfoInput = Object.assign(
|
|
10
12
|
{ checked: { handler: "onChange", getValue: (e) => e.target.checked } },
|
|
11
13
|
bindInfo
|
package/react.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import { ReactNode, ReactElement, FC, LegacyRef, DependencyList, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction, ComponentClass } from 'react';
|
|
3
3
|
import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveOptions, ObserveEvent, ObserveEventCallback } from '@legendapp/state';
|
|
4
4
|
|
|
@@ -22,11 +22,11 @@ declare function For<T, TProps>({ each, optimized: isOptimized, item, itemProps,
|
|
|
22
22
|
declare function usePauseProvider(): {
|
|
23
23
|
PauseProvider: ({ children }: {
|
|
24
24
|
children: ReactNode;
|
|
25
|
-
}) =>
|
|
25
|
+
}) => React.FunctionComponentElement<React.ProviderProps<ObservableBoolean>>;
|
|
26
26
|
isPaused$: ObservableBoolean;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
declare const Memo:
|
|
29
|
+
declare const Memo: React.MemoExoticComponent<typeof Computed>;
|
|
30
30
|
|
|
31
31
|
interface IReactive {
|
|
32
32
|
}
|
|
@@ -54,11 +54,11 @@ declare function Switch<T extends object>({ value, children, }: {
|
|
|
54
54
|
children: Partial<Record<keyof T | 'null' | 'undefined' | 'default', () => ReactNode>>;
|
|
55
55
|
}): ReactElement | null;
|
|
56
56
|
declare function Switch<T extends string | number | symbol>({ value, children, }: {
|
|
57
|
-
value?: Selector<T>;
|
|
57
|
+
value?: Selector<T | undefined | null>;
|
|
58
58
|
children: Partial<Record<T | 'null' | 'undefined' | 'default', () => ReactNode>>;
|
|
59
59
|
}): ReactElement | null;
|
|
60
60
|
declare function Switch<T extends boolean>({ value, children, }: {
|
|
61
|
-
value?: Selector<T>;
|
|
61
|
+
value?: Selector<T | undefined | null>;
|
|
62
62
|
children: Partial<Record<'false' | 'true' | 'null' | 'undefined' | 'default', () => ReactNode>>;
|
|
63
63
|
}): ReactElement | null;
|
|
64
64
|
declare function Switch<T>({ value, children, }: {
|
|
@@ -71,13 +71,13 @@ type ShapeWithNew$<T> = Partial<Omit<T, 'children'>> & {
|
|
|
71
71
|
} & {
|
|
72
72
|
children?: Selector<ReactNode>;
|
|
73
73
|
};
|
|
74
|
-
interface BindKey<P> {
|
|
75
|
-
handler?:
|
|
76
|
-
getValue?: (e: any) => any;
|
|
74
|
+
interface BindKey<P, K extends keyof P = keyof P> {
|
|
75
|
+
handler?: K;
|
|
76
|
+
getValue?: P[K] extends infer T ? T extends (...args: any) => any ? (params: Parameters<T>[0]) => any : (e: any) => any : (e: any) => any;
|
|
77
77
|
defaultValue?: any;
|
|
78
78
|
selector?: (propsOut: Record<string, any>, p: Observable<any>) => any;
|
|
79
79
|
}
|
|
80
|
-
type BindKeys<P = any> = Partial<Record<
|
|
80
|
+
type BindKeys<P = any, K extends keyof P = keyof P> = Partial<Record<K, BindKey<P>>>;
|
|
81
81
|
type FCReactiveObject<T> = {
|
|
82
82
|
[K in keyof T]: FC<ShapeWithNew$<T[K]>>;
|
|
83
83
|
};
|
|
@@ -99,13 +99,24 @@ type ObjectShapeWith$<T> = {
|
|
|
99
99
|
[K in keyof T]: T[K] extends FC<infer P> ? FC<ShapeWith$<P>> : T[K];
|
|
100
100
|
};
|
|
101
101
|
type ExtractFCPropsType<T> = T extends FC<infer P> ? P : never;
|
|
102
|
+
type ReactifyProps<T, K extends keyof T> = Omit<T, K> & {
|
|
103
|
+
[P in K]: Selector<T[P]>;
|
|
104
|
+
};
|
|
102
105
|
declare const hasSymbol: false | ((key: string) => symbol);
|
|
103
106
|
declare function observer<P extends FC<any>>(component: P): P;
|
|
104
|
-
declare function reactive<T extends
|
|
105
|
-
declare function reactive<T extends
|
|
106
|
-
declare function
|
|
107
|
-
declare function
|
|
108
|
-
declare function
|
|
107
|
+
declare function reactive<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
|
|
108
|
+
declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
109
|
+
declare function reactive<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
|
|
110
|
+
declare function reactive<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
|
|
111
|
+
declare function reactive<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
|
|
112
|
+
declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
113
|
+
declare function reactiveObserver<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
|
|
114
|
+
declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
115
|
+
declare function reactiveObserver<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
|
|
116
|
+
declare function reactiveObserver<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
|
|
117
|
+
declare function reactiveObserver<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
|
|
118
|
+
declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
119
|
+
declare function reactiveComponents<P extends Record<string, any>>(components: P): ObjectShapeWith$<P>;
|
|
109
120
|
|
|
110
121
|
declare function useComputed<T>(get: () => T | Promise<T>): Observable<T>;
|
|
111
122
|
declare function useComputed<T>(get: () => T | Promise<T>, deps: any[]): Observable<T>;
|
|
@@ -161,4 +172,4 @@ declare function configureReactive({ components, binders, }: {
|
|
|
161
172
|
binders?: Record<string, BindKeys>;
|
|
162
173
|
}): void;
|
|
163
174
|
|
|
164
|
-
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 };
|
|
175
|
+
export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, 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,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import { ReactNode, ReactElement, FC, LegacyRef, DependencyList, ReducerWithoutAction, ReducerStateWithoutAction, DispatchWithoutAction, Reducer, ReducerState, Dispatch, ReducerAction, ComponentClass } from 'react';
|
|
3
3
|
import { ObservableParam, Observable, ObservableBoolean, Selector, RecursiveValueOrFunction, ObserveOptions, ObserveEvent, ObserveEventCallback } from '@legendapp/state';
|
|
4
4
|
|
|
@@ -22,11 +22,11 @@ declare function For<T, TProps>({ each, optimized: isOptimized, item, itemProps,
|
|
|
22
22
|
declare function usePauseProvider(): {
|
|
23
23
|
PauseProvider: ({ children }: {
|
|
24
24
|
children: ReactNode;
|
|
25
|
-
}) =>
|
|
25
|
+
}) => React.FunctionComponentElement<React.ProviderProps<ObservableBoolean>>;
|
|
26
26
|
isPaused$: ObservableBoolean;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
declare const Memo:
|
|
29
|
+
declare const Memo: React.MemoExoticComponent<typeof Computed>;
|
|
30
30
|
|
|
31
31
|
interface IReactive {
|
|
32
32
|
}
|
|
@@ -54,11 +54,11 @@ declare function Switch<T extends object>({ value, children, }: {
|
|
|
54
54
|
children: Partial<Record<keyof T | 'null' | 'undefined' | 'default', () => ReactNode>>;
|
|
55
55
|
}): ReactElement | null;
|
|
56
56
|
declare function Switch<T extends string | number | symbol>({ value, children, }: {
|
|
57
|
-
value?: Selector<T>;
|
|
57
|
+
value?: Selector<T | undefined | null>;
|
|
58
58
|
children: Partial<Record<T | 'null' | 'undefined' | 'default', () => ReactNode>>;
|
|
59
59
|
}): ReactElement | null;
|
|
60
60
|
declare function Switch<T extends boolean>({ value, children, }: {
|
|
61
|
-
value?: Selector<T>;
|
|
61
|
+
value?: Selector<T | undefined | null>;
|
|
62
62
|
children: Partial<Record<'false' | 'true' | 'null' | 'undefined' | 'default', () => ReactNode>>;
|
|
63
63
|
}): ReactElement | null;
|
|
64
64
|
declare function Switch<T>({ value, children, }: {
|
|
@@ -71,13 +71,13 @@ type ShapeWithNew$<T> = Partial<Omit<T, 'children'>> & {
|
|
|
71
71
|
} & {
|
|
72
72
|
children?: Selector<ReactNode>;
|
|
73
73
|
};
|
|
74
|
-
interface BindKey<P> {
|
|
75
|
-
handler?:
|
|
76
|
-
getValue?: (e: any) => any;
|
|
74
|
+
interface BindKey<P, K extends keyof P = keyof P> {
|
|
75
|
+
handler?: K;
|
|
76
|
+
getValue?: P[K] extends infer T ? T extends (...args: any) => any ? (params: Parameters<T>[0]) => any : (e: any) => any : (e: any) => any;
|
|
77
77
|
defaultValue?: any;
|
|
78
78
|
selector?: (propsOut: Record<string, any>, p: Observable<any>) => any;
|
|
79
79
|
}
|
|
80
|
-
type BindKeys<P = any> = Partial<Record<
|
|
80
|
+
type BindKeys<P = any, K extends keyof P = keyof P> = Partial<Record<K, BindKey<P>>>;
|
|
81
81
|
type FCReactiveObject<T> = {
|
|
82
82
|
[K in keyof T]: FC<ShapeWithNew$<T[K]>>;
|
|
83
83
|
};
|
|
@@ -99,13 +99,24 @@ type ObjectShapeWith$<T> = {
|
|
|
99
99
|
[K in keyof T]: T[K] extends FC<infer P> ? FC<ShapeWith$<P>> : T[K];
|
|
100
100
|
};
|
|
101
101
|
type ExtractFCPropsType<T> = T extends FC<infer P> ? P : never;
|
|
102
|
+
type ReactifyProps<T, K extends keyof T> = Omit<T, K> & {
|
|
103
|
+
[P in K]: Selector<T[P]>;
|
|
104
|
+
};
|
|
102
105
|
declare const hasSymbol: false | ((key: string) => symbol);
|
|
103
106
|
declare function observer<P extends FC<any>>(component: P): P;
|
|
104
|
-
declare function reactive<T extends
|
|
105
|
-
declare function reactive<T extends
|
|
106
|
-
declare function
|
|
107
|
-
declare function
|
|
108
|
-
declare function
|
|
107
|
+
declare function reactive<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
|
|
108
|
+
declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
109
|
+
declare function reactive<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
|
|
110
|
+
declare function reactive<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
|
|
111
|
+
declare function reactive<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
|
|
112
|
+
declare function reactive<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
113
|
+
declare function reactiveObserver<T extends object>(component: React.FC<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.FC<ShapeWith$<T>>;
|
|
114
|
+
declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>, keys: undefined | null, bindKeys?: BindKeys<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
115
|
+
declare function reactiveObserver<T extends object, K extends keyof T>(component: React.FC<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.FC<ReactifyProps<T, K>>;
|
|
116
|
+
declare function reactiveObserver<T extends object, K extends keyof T>(component: React.ForwardRefExoticComponent<T>, keys: K[] | (keyof T)[], bindKeys?: BindKeys<T, K>): React.ForwardRefExoticComponent<ReactifyProps<T, K>>;
|
|
117
|
+
declare function reactiveObserver<T extends object>(component: React.FC<T>): React.FC<ShapeWith$<T>>;
|
|
118
|
+
declare function reactiveObserver<T extends object>(component: React.ForwardRefExoticComponent<T>): React.ForwardRefExoticComponent<ShapeWith$<T>>;
|
|
119
|
+
declare function reactiveComponents<P extends Record<string, any>>(components: P): ObjectShapeWith$<P>;
|
|
109
120
|
|
|
110
121
|
declare function useComputed<T>(get: () => T | Promise<T>): Observable<T>;
|
|
111
122
|
declare function useComputed<T>(get: () => T | Promise<T>, deps: any[]): Observable<T>;
|
|
@@ -161,4 +172,4 @@ declare function configureReactive({ components, binders, }: {
|
|
|
161
172
|
binders?: Record<string, BindKeys>;
|
|
162
173
|
}): void;
|
|
163
174
|
|
|
164
|
-
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 };
|
|
175
|
+
export { type BindKey, type BindKeys, Computed, type ExtractFCPropsType, type FCReactive, type FCReactiveObject, For, type IReactive, Memo, type ObjectShapeWith$, type ReactifyProps, 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
|
@@ -140,7 +140,7 @@ function Computed({ children }) {
|
|
|
140
140
|
}
|
|
141
141
|
var hasSymbol = typeof Symbol === "function" && Symbol.for;
|
|
142
142
|
var didWarnProps = false;
|
|
143
|
-
function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
143
|
+
function createReactiveComponent(component, observe3, reactive2, keysReactive, bindKeys) {
|
|
144
144
|
const ReactForwardRefSymbol = hasSymbol ? Symbol.for("react.forward_ref") : (
|
|
145
145
|
// eslint-disable-next-line react/display-name, @typescript-eslint/no-unused-vars
|
|
146
146
|
typeof React.forwardRef === "function" && React.forwardRef((props) => null)["$$typeof"]
|
|
@@ -165,6 +165,7 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
165
165
|
throw new Error(`[legend-state] \`render\` property of ForwardRef was not a function`);
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
+
const keysReactiveSet = keysReactive ? new Set(keysReactive) : void 0;
|
|
168
169
|
const proxyHandler = {
|
|
169
170
|
apply(target, thisArg, argArray) {
|
|
170
171
|
if (reactive2) {
|
|
@@ -174,9 +175,10 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
174
175
|
for (let i = 0; i < keys.length; i++) {
|
|
175
176
|
const key = keys[i];
|
|
176
177
|
const p = props[key];
|
|
178
|
+
const isReactiveKey = keysReactiveSet && keysReactiveSet.has(key);
|
|
177
179
|
if (key === "children" && (state.isFunction(p) || state.isObservable(p))) {
|
|
178
180
|
props[key] = useSelector(p, { skipCheck: true });
|
|
179
|
-
} else if (key.startsWith("$") || key.endsWith("$")) {
|
|
181
|
+
} else if (isReactiveKey || key.startsWith("$") || key.endsWith("$")) {
|
|
180
182
|
if (process.env.NODE_ENV === "development" && !didWarnProps && key.endsWith("$")) {
|
|
181
183
|
didWarnProps = true;
|
|
182
184
|
console.warn(
|
|
@@ -186,7 +188,7 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
186
188
|
)}. See https://legendapp.com/open-source/state/migrating for more details.`
|
|
187
189
|
);
|
|
188
190
|
}
|
|
189
|
-
const k = key.endsWith("$") ? key.slice(0, -1) : key.slice(1);
|
|
191
|
+
const k = isReactiveKey ? key : key.endsWith("$") ? key.slice(0, -1) : key.slice(1);
|
|
190
192
|
const bind = bindKeys == null ? void 0 : bindKeys[k];
|
|
191
193
|
const shouldBind = bind && state.isObservable(p);
|
|
192
194
|
propsOut[k] = shouldBind && (bind == null ? void 0 : bind.selector) ? bind.selector(propsOut, p) : useSelector(p);
|
|
@@ -204,7 +206,9 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
204
206
|
process.env.NODE_ENV === "development" ? handlerFn : React.useCallback(handlerFn, [props[bind.handler], bindKeys]);
|
|
205
207
|
}
|
|
206
208
|
}
|
|
207
|
-
|
|
209
|
+
if (!isReactiveKey) {
|
|
210
|
+
delete propsOut[key];
|
|
211
|
+
}
|
|
208
212
|
} else if (propsOut[key] === void 0) {
|
|
209
213
|
propsOut[key] = p;
|
|
210
214
|
}
|
|
@@ -241,11 +245,11 @@ function createReactiveComponent(component, observe3, reactive2, bindKeys) {
|
|
|
241
245
|
function observer(component) {
|
|
242
246
|
return createReactiveComponent(component, true);
|
|
243
247
|
}
|
|
244
|
-
function reactive(component, bindKeys) {
|
|
245
|
-
return createReactiveComponent(component, false, true, bindKeys);
|
|
248
|
+
function reactive(component, keys, bindKeys) {
|
|
249
|
+
return createReactiveComponent(component, false, true, keys, bindKeys);
|
|
246
250
|
}
|
|
247
|
-
function reactiveObserver(component, bindKeys) {
|
|
248
|
-
return createReactiveComponent(component, true, true, bindKeys);
|
|
251
|
+
function reactiveObserver(component, keys, bindKeys) {
|
|
252
|
+
return createReactiveComponent(component, true, true, keys, bindKeys);
|
|
249
253
|
}
|
|
250
254
|
function reactiveComponents(components) {
|
|
251
255
|
return new Proxy(
|
|
@@ -371,7 +375,7 @@ var Reactive = new Proxy(
|
|
|
371
375
|
}
|
|
372
376
|
return React.createElement(Component, propsOut);
|
|
373
377
|
});
|
|
374
|
-
target[p] = reactive(render, ReactiveFnBinders.get(p));
|
|
378
|
+
target[p] = reactive(render, [], ReactiveFnBinders.get(p));
|
|
375
379
|
}
|
|
376
380
|
return target[p];
|
|
377
381
|
}
|