@take-out/hooks 0.4.3 → 0.4.5
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/dist/cjs/index.cjs +7 -5
- package/dist/cjs/index.native.js +7 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/useClickOutside.cjs +24 -15
- package/dist/cjs/useClickOutside.native.js +34 -22
- package/dist/cjs/useClickOutside.native.js.map +1 -1
- package/dist/cjs/useDebouncePrepend.cjs +47 -27
- package/dist/cjs/useDebouncePrepend.native.js +48 -32
- package/dist/cjs/useDebouncePrepend.native.js.map +1 -1
- package/dist/cjs/useDeepMemoizedObject.cjs +154 -95
- package/dist/cjs/useDeepMemoizedObject.native.js +177 -111
- package/dist/cjs/useDeepMemoizedObject.native.js.map +1 -1
- package/dist/cjs/useDeepMemoizedObject.test.cjs +269 -199
- package/dist/cjs/useDeepMemoizedObject.test.native.js +265 -202
- package/dist/cjs/useDeepMemoizedObject.test.native.js.map +1 -1
- package/dist/cjs/useDeferredBoolean.cjs +20 -15
- package/dist/cjs/useDeferredBoolean.native.js +22 -17
- package/dist/cjs/useDeferredBoolean.native.js.map +1 -1
- package/dist/cjs/useEffectOnceGlobally.cjs +24 -12
- package/dist/cjs/useEffectOnceGlobally.native.js +27 -15
- package/dist/cjs/useEffectOnceGlobally.native.js.map +1 -1
- package/dist/cjs/useEvent.cjs +14 -11
- package/dist/cjs/useEvent.native.js +17 -12
- package/dist/cjs/useEvent.native.js.map +1 -1
- package/dist/cjs/useIsMounted.cjs +17 -14
- package/dist/cjs/useIsMounted.native.js +20 -17
- package/dist/cjs/useIsMounted.native.js.map +1 -1
- package/dist/cjs/useLastValue.cjs +13 -11
- package/dist/cjs/useLastValue.native.js +13 -11
- package/dist/cjs/useLastValue.native.js.map +1 -1
- package/dist/cjs/useLastValueIf.cjs +21 -14
- package/dist/cjs/useLastValueIf.native.js +21 -14
- package/dist/cjs/useLastValueIf.native.js.map +1 -1
- package/dist/cjs/useMemoStable.cjs +17 -14
- package/dist/cjs/useMemoStable.native.js +17 -14
- package/dist/cjs/useMemoStable.native.js.map +1 -1
- package/dist/cjs/useMemoizedObjectList.cjs +45 -29
- package/dist/cjs/useMemoizedObjectList.native.js +60 -39
- package/dist/cjs/useMemoizedObjectList.native.js.map +1 -1
- package/dist/cjs/useThrottle.cjs +34 -21
- package/dist/cjs/useThrottle.native.js +41 -27
- package/dist/cjs/useThrottle.native.js.map +1 -1
- package/dist/cjs/useWarnIfDepsChange.cjs +38 -27
- package/dist/cjs/useWarnIfDepsChange.native.js +38 -28
- package/dist/cjs/useWarnIfDepsChange.native.js.map +1 -1
- package/dist/cjs/useWarnIfMemoChangesOften.cjs +24 -15
- package/dist/cjs/useWarnIfMemoChangesOften.native.js +27 -21
- package/dist/cjs/useWarnIfMemoChangesOften.native.js.map +1 -1
- package/dist/esm/useClickOutside.mjs +10 -3
- package/dist/esm/useClickOutside.mjs.map +1 -1
- package/dist/esm/useClickOutside.native.js +20 -10
- package/dist/esm/useClickOutside.native.js.map +1 -1
- package/dist/esm/useDebouncePrepend.mjs +33 -15
- package/dist/esm/useDebouncePrepend.mjs.map +1 -1
- package/dist/esm/useDebouncePrepend.native.js +34 -20
- package/dist/esm/useDebouncePrepend.native.js.map +1 -1
- package/dist/esm/useDeepMemoizedObject.mjs +142 -85
- package/dist/esm/useDeepMemoizedObject.mjs.map +1 -1
- package/dist/esm/useDeepMemoizedObject.native.js +165 -101
- package/dist/esm/useDeepMemoizedObject.native.js.map +1 -1
- package/dist/esm/useDeepMemoizedObject.test.mjs +267 -197
- package/dist/esm/useDeepMemoizedObject.test.mjs.map +1 -1
- package/dist/esm/useDeepMemoizedObject.test.native.js +263 -200
- package/dist/esm/useDeepMemoizedObject.test.native.js.map +1 -1
- package/dist/esm/useDeferredBoolean.mjs +8 -5
- package/dist/esm/useDeferredBoolean.mjs.map +1 -1
- package/dist/esm/useDeferredBoolean.native.js +8 -5
- package/dist/esm/useDeferredBoolean.native.js.map +1 -1
- package/dist/esm/useEffectOnceGlobally.mjs +12 -2
- package/dist/esm/useEffectOnceGlobally.mjs.map +1 -1
- package/dist/esm/useEffectOnceGlobally.native.js +13 -3
- package/dist/esm/useEffectOnceGlobally.native.js.map +1 -1
- package/dist/esm/useEvent.mjs +2 -1
- package/dist/esm/useEvent.mjs.map +1 -1
- package/dist/esm/useEvent.native.js +5 -2
- package/dist/esm/useEvent.native.js.map +1 -1
- package/dist/esm/useIsMounted.mjs +5 -4
- package/dist/esm/useIsMounted.mjs.map +1 -1
- package/dist/esm/useIsMounted.native.js +5 -4
- package/dist/esm/useIsMounted.native.js.map +1 -1
- package/dist/esm/useLastValue.mjs +1 -1
- package/dist/esm/useLastValue.mjs.map +1 -1
- package/dist/esm/useLastValue.native.js +1 -1
- package/dist/esm/useLastValue.native.js.map +1 -1
- package/dist/esm/useLastValueIf.mjs +9 -4
- package/dist/esm/useLastValueIf.mjs.map +1 -1
- package/dist/esm/useLastValueIf.native.js +9 -4
- package/dist/esm/useLastValueIf.native.js.map +1 -1
- package/dist/esm/useMemoStable.mjs +3 -2
- package/dist/esm/useMemoStable.mjs.map +1 -1
- package/dist/esm/useMemoStable.native.js +3 -2
- package/dist/esm/useMemoStable.native.js.map +1 -1
- package/dist/esm/useMemoizedObjectList.mjs +31 -17
- package/dist/esm/useMemoizedObjectList.mjs.map +1 -1
- package/dist/esm/useMemoizedObjectList.native.js +46 -27
- package/dist/esm/useMemoizedObjectList.native.js.map +1 -1
- package/dist/esm/useThrottle.mjs +20 -9
- package/dist/esm/useThrottle.mjs.map +1 -1
- package/dist/esm/useThrottle.native.js +24 -12
- package/dist/esm/useThrottle.native.js.map +1 -1
- package/dist/esm/useWarnIfDepsChange.mjs +24 -15
- package/dist/esm/useWarnIfDepsChange.mjs.map +1 -1
- package/dist/esm/useWarnIfDepsChange.native.js +24 -16
- package/dist/esm/useWarnIfDepsChange.native.js.map +1 -1
- package/dist/esm/useWarnIfMemoChangesOften.mjs +10 -3
- package/dist/esm/useWarnIfMemoChangesOften.mjs.map +1 -1
- package/dist/esm/useWarnIfMemoChangesOften.native.js +10 -6
- package/dist/esm/useWarnIfMemoChangesOften.native.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,123 +1,180 @@
|
|
|
1
1
|
import { useRef } from "react";
|
|
2
2
|
function shouldBeImmutable(path, immutableToNestedChanges) {
|
|
3
|
-
if (!immutableToNestedChanges) return
|
|
3
|
+
if (!immutableToNestedChanges) return false;
|
|
4
4
|
const currentPath = path.join(".");
|
|
5
|
-
for (const pattern in immutableToNestedChanges)
|
|
6
|
-
|
|
5
|
+
for (const pattern in immutableToNestedChanges) {
|
|
6
|
+
if (immutableToNestedChanges[pattern] && currentPath === pattern) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
return false;
|
|
7
11
|
}
|
|
8
12
|
function deepMutateInPlace(target, source) {
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
if (typeof target !== "object" || target === null || typeof source !== "object" || source === null) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(target) && Array.isArray(source)) {
|
|
17
|
+
;
|
|
18
|
+
target.length = 0;
|
|
19
|
+
target.push(...source);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
for (const key in source) {
|
|
23
|
+
const targetValue = target[key];
|
|
24
|
+
const sourceValue = source[key];
|
|
25
|
+
if (typeof sourceValue === "object" && sourceValue !== null && typeof targetValue === "object" && targetValue !== null) {
|
|
26
|
+
deepMutateInPlace(targetValue, sourceValue);
|
|
27
|
+
} else {
|
|
28
|
+
;
|
|
29
|
+
target[key] = sourceValue;
|
|
18
30
|
}
|
|
19
31
|
}
|
|
20
32
|
}
|
|
21
|
-
function deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges, parentIsImmutable =
|
|
22
|
-
if (current === previous)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
32
|
-
if (typeof previous != "object" || previous === null) return {
|
|
33
|
-
value: current,
|
|
34
|
-
hasChanges: !0,
|
|
35
|
-
hasImmutableMutation: !1
|
|
36
|
-
};
|
|
37
|
-
const shouldMutateInPlace = shouldBeImmutable(path, immutableToNestedChanges) || parentIsImmutable;
|
|
38
|
-
if (Array.isArray(current)) {
|
|
39
|
-
if (!Array.isArray(previous)) return {
|
|
33
|
+
function deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges, parentIsImmutable = false) {
|
|
34
|
+
if (current === previous) {
|
|
35
|
+
return {
|
|
36
|
+
value: previous,
|
|
37
|
+
hasChanges: false,
|
|
38
|
+
hasImmutableMutation: false
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (typeof current !== "object" || current === null) {
|
|
42
|
+
return {
|
|
40
43
|
value: current,
|
|
41
|
-
hasChanges:
|
|
42
|
-
hasImmutableMutation:
|
|
44
|
+
hasChanges: true,
|
|
45
|
+
hasImmutableMutation: false
|
|
43
46
|
};
|
|
44
|
-
|
|
47
|
+
}
|
|
48
|
+
if (typeof previous !== "object" || previous === null) {
|
|
49
|
+
return {
|
|
45
50
|
value: current,
|
|
46
|
-
hasChanges:
|
|
47
|
-
hasImmutableMutation:
|
|
51
|
+
hasChanges: true,
|
|
52
|
+
hasImmutableMutation: false
|
|
48
53
|
};
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
}
|
|
55
|
+
const isCurrentImmutable = shouldBeImmutable(path, immutableToNestedChanges);
|
|
56
|
+
const shouldMutateInPlace = isCurrentImmutable || parentIsImmutable;
|
|
57
|
+
if (Array.isArray(current)) {
|
|
58
|
+
if (!Array.isArray(previous)) {
|
|
59
|
+
return {
|
|
60
|
+
value: current,
|
|
61
|
+
hasChanges: true,
|
|
62
|
+
hasImmutableMutation: false
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (current.length !== previous.length) {
|
|
66
|
+
return {
|
|
67
|
+
value: current,
|
|
68
|
+
hasChanges: true,
|
|
69
|
+
hasImmutableMutation: false
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
let hasChanges2 = false;
|
|
73
|
+
let hasImmutableMutation2 = false;
|
|
51
74
|
const memoizedArray = [];
|
|
52
75
|
for (let i = 0; i < current.length; i++) {
|
|
53
|
-
const itemPath = [...path, String(i)]
|
|
54
|
-
|
|
55
|
-
memoizedArray[i] = result.value
|
|
76
|
+
const itemPath = [...path, String(i)];
|
|
77
|
+
const result = deepMemoizeWithTracking(current[i], previous[i], itemPath, immutableToNestedChanges, false);
|
|
78
|
+
memoizedArray[i] = result.value;
|
|
79
|
+
if (result.hasChanges) {
|
|
80
|
+
hasChanges2 = true;
|
|
81
|
+
}
|
|
82
|
+
if (result.hasImmutableMutation) {
|
|
83
|
+
hasImmutableMutation2 = true;
|
|
84
|
+
}
|
|
56
85
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
86
|
+
if (hasChanges2 || hasImmutableMutation2) {
|
|
87
|
+
return {
|
|
88
|
+
value: memoizedArray,
|
|
89
|
+
hasChanges: true,
|
|
90
|
+
hasImmutableMutation: false
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
62
94
|
value: previous,
|
|
63
|
-
hasChanges:
|
|
64
|
-
hasImmutableMutation:
|
|
95
|
+
hasChanges: false,
|
|
96
|
+
hasImmutableMutation: false
|
|
65
97
|
};
|
|
66
98
|
}
|
|
67
|
-
const currentKeys = Object.keys(current)
|
|
68
|
-
|
|
69
|
-
if (currentKeys.length !== previousKeys.length)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
99
|
+
const currentKeys = Object.keys(current);
|
|
100
|
+
const previousKeys = Object.keys(previous);
|
|
101
|
+
if (currentKeys.length !== previousKeys.length) {
|
|
102
|
+
return {
|
|
103
|
+
value: current,
|
|
104
|
+
hasChanges: true,
|
|
105
|
+
hasImmutableMutation: false
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const keysMatch = currentKeys.every(key => key in previous);
|
|
109
|
+
if (!keysMatch) {
|
|
110
|
+
return {
|
|
111
|
+
value: current,
|
|
112
|
+
hasChanges: true,
|
|
113
|
+
hasImmutableMutation: false
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
let hasChanges = false;
|
|
117
|
+
let hasImmutableMutation = false;
|
|
81
118
|
const memoizedObject = {};
|
|
82
119
|
for (const key of currentKeys) {
|
|
83
|
-
const propPath = [...path, key]
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
memoizedObject[key] = result.value
|
|
120
|
+
const propPath = [...path, key];
|
|
121
|
+
const currentValue = current[key];
|
|
122
|
+
const previousValue = previous[key];
|
|
123
|
+
const result = deepMemoizeWithTracking(currentValue, previousValue, propPath, immutableToNestedChanges, shouldMutateInPlace);
|
|
124
|
+
memoizedObject[key] = result.value;
|
|
125
|
+
if (result.hasChanges) {
|
|
126
|
+
hasChanges = true;
|
|
127
|
+
}
|
|
128
|
+
if (result.hasImmutableMutation) {
|
|
129
|
+
hasImmutableMutation = true;
|
|
130
|
+
}
|
|
88
131
|
}
|
|
89
132
|
if (shouldMutateInPlace && (hasChanges || hasImmutableMutation)) {
|
|
90
|
-
if (parentIsImmutable)
|
|
133
|
+
if (parentIsImmutable) {
|
|
134
|
+
deepMutateInPlace(previous, current);
|
|
135
|
+
} else {
|
|
136
|
+
for (const key of currentKeys) {
|
|
137
|
+
;
|
|
138
|
+
previous[key] = memoizedObject[key];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
91
141
|
return {
|
|
92
142
|
value: previous,
|
|
93
|
-
hasChanges:
|
|
94
|
-
hasImmutableMutation:
|
|
143
|
+
hasChanges: false,
|
|
144
|
+
hasImmutableMutation: true
|
|
95
145
|
};
|
|
96
146
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
147
|
+
if (hasChanges || hasImmutableMutation) {
|
|
148
|
+
return {
|
|
149
|
+
value: memoizedObject,
|
|
150
|
+
hasChanges: true,
|
|
151
|
+
hasImmutableMutation: false
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
102
155
|
value: previous,
|
|
103
|
-
hasChanges:
|
|
104
|
-
hasImmutableMutation:
|
|
156
|
+
hasChanges: false,
|
|
157
|
+
hasImmutableMutation: false
|
|
105
158
|
};
|
|
106
159
|
}
|
|
107
160
|
function deepMemoize(current, previous, path = [], immutableToNestedChanges) {
|
|
108
|
-
const result = deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges,
|
|
161
|
+
const result = deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges, false);
|
|
109
162
|
if (path.length === 0 && result.hasImmutableMutation && !result.hasChanges) {
|
|
110
|
-
if (Array.isArray(result.value))
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
163
|
+
if (Array.isArray(result.value)) {
|
|
164
|
+
return [...result.value];
|
|
165
|
+
} else if (typeof result.value === "object" && result.value !== null) {
|
|
166
|
+
return {
|
|
167
|
+
...result.value
|
|
168
|
+
};
|
|
169
|
+
}
|
|
114
170
|
}
|
|
115
171
|
return result.value;
|
|
116
172
|
}
|
|
117
173
|
function useDeepMemoizedObject(value, options) {
|
|
118
|
-
const previousValueRef = useRef(value)
|
|
119
|
-
|
|
120
|
-
|
|
174
|
+
const previousValueRef = useRef(value);
|
|
175
|
+
const memoizedValue = deepMemoize(value, previousValueRef.current, [], options?.immutableToNestedChanges);
|
|
176
|
+
previousValueRef.current = memoizedValue;
|
|
177
|
+
return memoizedValue;
|
|
121
178
|
}
|
|
122
179
|
export { deepMemoize, shouldBeImmutable, useDeepMemoizedObject };
|
|
123
180
|
//# sourceMappingURL=useDeepMemoizedObject.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","shouldBeImmutable","path","immutableToNestedChanges","currentPath","join","pattern","deepMutateInPlace","target","source","Array","isArray","length","push","key","targetValue","sourceValue","deepMemoizeWithTracking","current","previous","parentIsImmutable","value","hasChanges","hasImmutableMutation","shouldMutateInPlace","hasChanges2","hasImmutableMutation2","memoizedArray","i","itemPath","String","result","currentKeys","Object","keys","previousKeys","every","memoizedObject","propPath","currentValue","previousValue","deepMemoize","useDeepMemoizedObject","options","previousValueRef","memoizedValue"],"sources":["../../src/useDeepMemoizedObject.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAQhB,SAASC,kBACdC,IAAA,EACAC,wBAAA,EACS;EACT,IAAI,CAACA,wBAAA,EAA0B,OAAO;EAEtC,MAAMC,WAAA,GAAcF,IAAA,CAAKG,IAAA,CAAK,GAAG;EACjC,WAAWC,OAAA,IAAWH,wBAAA,
|
|
1
|
+
{"version":3,"names":["useRef","shouldBeImmutable","path","immutableToNestedChanges","currentPath","join","pattern","deepMutateInPlace","target","source","Array","isArray","length","push","key","targetValue","sourceValue","deepMemoizeWithTracking","current","previous","parentIsImmutable","value","hasChanges","hasImmutableMutation","isCurrentImmutable","shouldMutateInPlace","hasChanges2","hasImmutableMutation2","memoizedArray","i","itemPath","String","result","currentKeys","Object","keys","previousKeys","keysMatch","every","memoizedObject","propPath","currentValue","previousValue","deepMemoize","useDeepMemoizedObject","options","previousValueRef","memoizedValue"],"sources":["../../src/useDeepMemoizedObject.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -2,163 +2,227 @@ import { useRef } from "react";
|
|
|
2
2
|
function _type_of(obj) {
|
|
3
3
|
"@swc/helpers - typeof";
|
|
4
4
|
|
|
5
|
-
return obj && typeof Symbol
|
|
5
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
6
6
|
}
|
|
7
7
|
function shouldBeImmutable(path, immutableToNestedChanges) {
|
|
8
|
-
if (!immutableToNestedChanges) return
|
|
8
|
+
if (!immutableToNestedChanges) return false;
|
|
9
9
|
var currentPath = path.join(".");
|
|
10
|
-
for (var pattern in immutableToNestedChanges)
|
|
11
|
-
|
|
10
|
+
for (var pattern in immutableToNestedChanges) {
|
|
11
|
+
if (immutableToNestedChanges[pattern] && currentPath === pattern) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
12
16
|
}
|
|
13
17
|
function deepMutateInPlace(target, source) {
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
if ((typeof target === "undefined" ? "undefined" : _type_of(target)) !== "object" || target === null || (typeof source === "undefined" ? "undefined" : _type_of(source)) !== "object" || source === null) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(target) && Array.isArray(source)) {
|
|
22
|
+
;
|
|
23
|
+
target.length = 0;
|
|
24
|
+
target.push(...source);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
for (var key in source) {
|
|
28
|
+
var targetValue = target[key];
|
|
29
|
+
var sourceValue = source[key];
|
|
30
|
+
if ((typeof sourceValue === "undefined" ? "undefined" : _type_of(sourceValue)) === "object" && sourceValue !== null && (typeof targetValue === "undefined" ? "undefined" : _type_of(targetValue)) === "object" && targetValue !== null) {
|
|
31
|
+
deepMutateInPlace(targetValue, sourceValue);
|
|
32
|
+
} else {
|
|
33
|
+
;
|
|
34
|
+
target[key] = sourceValue;
|
|
23
35
|
}
|
|
24
36
|
}
|
|
25
37
|
}
|
|
26
38
|
function deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges) {
|
|
27
|
-
var parentIsImmutable = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] :
|
|
28
|
-
if (current === previous)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
38
|
-
if ((typeof previous > "u" ? "undefined" : _type_of(previous)) !== "object" || previous === null) return {
|
|
39
|
-
value: current,
|
|
40
|
-
hasChanges: !0,
|
|
41
|
-
hasImmutableMutation: !1
|
|
42
|
-
};
|
|
43
|
-
var isCurrentImmutable = shouldBeImmutable(path, immutableToNestedChanges),
|
|
44
|
-
shouldMutateInPlace = isCurrentImmutable || parentIsImmutable;
|
|
45
|
-
if (Array.isArray(current)) {
|
|
46
|
-
if (!Array.isArray(previous)) return {
|
|
39
|
+
var parentIsImmutable = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
|
|
40
|
+
if (current === previous) {
|
|
41
|
+
return {
|
|
42
|
+
value: previous,
|
|
43
|
+
hasChanges: false,
|
|
44
|
+
hasImmutableMutation: false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if ((typeof current === "undefined" ? "undefined" : _type_of(current)) !== "object" || current === null) {
|
|
48
|
+
return {
|
|
47
49
|
value: current,
|
|
48
|
-
hasChanges:
|
|
49
|
-
hasImmutableMutation:
|
|
50
|
+
hasChanges: true,
|
|
51
|
+
hasImmutableMutation: false
|
|
50
52
|
};
|
|
51
|
-
|
|
53
|
+
}
|
|
54
|
+
if ((typeof previous === "undefined" ? "undefined" : _type_of(previous)) !== "object" || previous === null) {
|
|
55
|
+
return {
|
|
52
56
|
value: current,
|
|
53
|
-
hasChanges:
|
|
54
|
-
hasImmutableMutation:
|
|
57
|
+
hasChanges: true,
|
|
58
|
+
hasImmutableMutation: false
|
|
55
59
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
}
|
|
61
|
+
var isCurrentImmutable = shouldBeImmutable(path, immutableToNestedChanges);
|
|
62
|
+
var shouldMutateInPlace = isCurrentImmutable || parentIsImmutable;
|
|
63
|
+
if (Array.isArray(current)) {
|
|
64
|
+
if (!Array.isArray(previous)) {
|
|
65
|
+
return {
|
|
66
|
+
value: current,
|
|
67
|
+
hasChanges: true,
|
|
68
|
+
hasImmutableMutation: false
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (current.length !== previous.length) {
|
|
72
|
+
return {
|
|
73
|
+
value: current,
|
|
74
|
+
hasChanges: true,
|
|
75
|
+
hasImmutableMutation: false
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
var hasChanges = false;
|
|
79
|
+
var hasImmutableMutation = false;
|
|
80
|
+
var memoizedArray = [];
|
|
81
|
+
for (var i = 0; i < current.length; i++) {
|
|
82
|
+
var itemPath = [...path, String(i)];
|
|
83
|
+
var result = deepMemoizeWithTracking(current[i], previous[i], itemPath, immutableToNestedChanges, false);
|
|
84
|
+
memoizedArray[i] = result.value;
|
|
85
|
+
if (result.hasChanges) {
|
|
86
|
+
hasChanges = true;
|
|
87
|
+
}
|
|
88
|
+
if (result.hasImmutableMutation) {
|
|
89
|
+
hasImmutableMutation = true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (hasChanges || hasImmutableMutation) {
|
|
93
|
+
return {
|
|
94
|
+
value: memoizedArray,
|
|
95
|
+
hasChanges: true,
|
|
96
|
+
hasImmutableMutation: false
|
|
97
|
+
};
|
|
60
98
|
}
|
|
61
|
-
return
|
|
62
|
-
value: memoizedArray,
|
|
63
|
-
hasChanges: !0,
|
|
64
|
-
hasImmutableMutation: !1
|
|
65
|
-
} : {
|
|
99
|
+
return {
|
|
66
100
|
value: previous,
|
|
67
|
-
hasChanges:
|
|
68
|
-
hasImmutableMutation:
|
|
101
|
+
hasChanges: false,
|
|
102
|
+
hasImmutableMutation: false
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
var currentKeys = Object.keys(current);
|
|
106
|
+
var previousKeys = Object.keys(previous);
|
|
107
|
+
if (currentKeys.length !== previousKeys.length) {
|
|
108
|
+
return {
|
|
109
|
+
value: current,
|
|
110
|
+
hasChanges: true,
|
|
111
|
+
hasImmutableMutation: false
|
|
69
112
|
};
|
|
70
113
|
}
|
|
71
|
-
var currentKeys = Object.keys(current),
|
|
72
|
-
previousKeys = Object.keys(previous);
|
|
73
|
-
if (currentKeys.length !== previousKeys.length) return {
|
|
74
|
-
value: current,
|
|
75
|
-
hasChanges: !0,
|
|
76
|
-
hasImmutableMutation: !1
|
|
77
|
-
};
|
|
78
114
|
var keysMatch = currentKeys.every(function (key2) {
|
|
79
115
|
return key2 in previous;
|
|
80
116
|
});
|
|
81
|
-
if (!keysMatch)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
117
|
+
if (!keysMatch) {
|
|
118
|
+
return {
|
|
119
|
+
value: current,
|
|
120
|
+
hasChanges: true,
|
|
121
|
+
hasImmutableMutation: false
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
var hasChanges1 = false;
|
|
125
|
+
var hasImmutableMutation1 = false;
|
|
126
|
+
var memoizedObject = {};
|
|
127
|
+
var _iteratorNormalCompletion = true,
|
|
128
|
+
_didIteratorError = false,
|
|
91
129
|
_iteratorError = void 0;
|
|
92
130
|
try {
|
|
93
|
-
for (var _iterator = currentKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion =
|
|
94
|
-
var key = _step.value
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
memoizedObject[key] = result1.value
|
|
131
|
+
for (var _iterator = currentKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
132
|
+
var key = _step.value;
|
|
133
|
+
var propPath = [...path, key];
|
|
134
|
+
var currentValue = current[key];
|
|
135
|
+
var previousValue = previous[key];
|
|
136
|
+
var result1 = deepMemoizeWithTracking(currentValue, previousValue, propPath, immutableToNestedChanges, shouldMutateInPlace);
|
|
137
|
+
memoizedObject[key] = result1.value;
|
|
138
|
+
if (result1.hasChanges) {
|
|
139
|
+
hasChanges1 = true;
|
|
140
|
+
}
|
|
141
|
+
if (result1.hasImmutableMutation) {
|
|
142
|
+
hasImmutableMutation1 = true;
|
|
143
|
+
}
|
|
100
144
|
}
|
|
101
145
|
} catch (err) {
|
|
102
|
-
_didIteratorError =
|
|
146
|
+
_didIteratorError = true;
|
|
147
|
+
_iteratorError = err;
|
|
103
148
|
} finally {
|
|
104
149
|
try {
|
|
105
|
-
!_iteratorNormalCompletion && _iterator.return != null
|
|
150
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
151
|
+
_iterator.return();
|
|
152
|
+
}
|
|
106
153
|
} finally {
|
|
107
|
-
if (_didIteratorError)
|
|
154
|
+
if (_didIteratorError) {
|
|
155
|
+
throw _iteratorError;
|
|
156
|
+
}
|
|
108
157
|
}
|
|
109
158
|
}
|
|
110
159
|
if (shouldMutateInPlace && (hasChanges1 || hasImmutableMutation1)) {
|
|
111
|
-
if (parentIsImmutable)
|
|
112
|
-
|
|
113
|
-
|
|
160
|
+
if (parentIsImmutable) {
|
|
161
|
+
deepMutateInPlace(previous, current);
|
|
162
|
+
} else {
|
|
163
|
+
var _iteratorNormalCompletion1 = true,
|
|
164
|
+
_didIteratorError1 = false,
|
|
114
165
|
_iteratorError1 = void 0;
|
|
115
166
|
try {
|
|
116
|
-
for (var _iterator1 = currentKeys[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 =
|
|
167
|
+
for (var _iterator1 = currentKeys[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
117
168
|
var key1 = _step1.value;
|
|
169
|
+
;
|
|
118
170
|
previous[key1] = memoizedObject[key1];
|
|
119
171
|
}
|
|
120
172
|
} catch (err) {
|
|
121
|
-
_didIteratorError1 =
|
|
173
|
+
_didIteratorError1 = true;
|
|
174
|
+
_iteratorError1 = err;
|
|
122
175
|
} finally {
|
|
123
176
|
try {
|
|
124
|
-
!_iteratorNormalCompletion1 && _iterator1.return != null
|
|
177
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
178
|
+
_iterator1.return();
|
|
179
|
+
}
|
|
125
180
|
} finally {
|
|
126
|
-
if (_didIteratorError1)
|
|
181
|
+
if (_didIteratorError1) {
|
|
182
|
+
throw _iteratorError1;
|
|
183
|
+
}
|
|
127
184
|
}
|
|
128
185
|
}
|
|
129
186
|
}
|
|
130
187
|
return {
|
|
131
188
|
value: previous,
|
|
132
|
-
hasChanges:
|
|
133
|
-
hasImmutableMutation:
|
|
189
|
+
hasChanges: false,
|
|
190
|
+
hasImmutableMutation: true
|
|
134
191
|
};
|
|
135
192
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
193
|
+
if (hasChanges1 || hasImmutableMutation1) {
|
|
194
|
+
return {
|
|
195
|
+
value: memoizedObject,
|
|
196
|
+
hasChanges: true,
|
|
197
|
+
hasImmutableMutation: false
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
141
201
|
value: previous,
|
|
142
|
-
hasChanges:
|
|
143
|
-
hasImmutableMutation:
|
|
202
|
+
hasChanges: false,
|
|
203
|
+
hasImmutableMutation: false
|
|
144
204
|
};
|
|
145
205
|
}
|
|
146
206
|
function deepMemoize(current, previous) {
|
|
147
207
|
var path = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [],
|
|
148
|
-
immutableToNestedChanges = arguments.length > 3 ? arguments[3] : void 0
|
|
149
|
-
|
|
208
|
+
immutableToNestedChanges = arguments.length > 3 ? arguments[3] : void 0;
|
|
209
|
+
var result = deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges, false);
|
|
150
210
|
if (path.length === 0 && result.hasImmutableMutation && !result.hasChanges) {
|
|
151
|
-
if (Array.isArray(result.value))
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
211
|
+
if (Array.isArray(result.value)) {
|
|
212
|
+
return [...result.value];
|
|
213
|
+
} else if (_type_of(result.value) === "object" && result.value !== null) {
|
|
214
|
+
return {
|
|
215
|
+
...result.value
|
|
216
|
+
};
|
|
217
|
+
}
|
|
155
218
|
}
|
|
156
219
|
return result.value;
|
|
157
220
|
}
|
|
158
221
|
function useDeepMemoizedObject(value, options) {
|
|
159
|
-
var previousValueRef = useRef(value)
|
|
160
|
-
|
|
161
|
-
|
|
222
|
+
var previousValueRef = useRef(value);
|
|
223
|
+
var memoizedValue = deepMemoize(value, previousValueRef.current, [], options === null || options === void 0 ? void 0 : options.immutableToNestedChanges);
|
|
224
|
+
previousValueRef.current = memoizedValue;
|
|
225
|
+
return memoizedValue;
|
|
162
226
|
}
|
|
163
227
|
export { deepMemoize, shouldBeImmutable, useDeepMemoizedObject };
|
|
164
228
|
//# sourceMappingURL=useDeepMemoizedObject.native.js.map
|