@dxos/react-hooks 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef
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/README.md +1 -0
- package/dist/lib/browser/index.mjs +179 -141
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +179 -141
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/index.d.ts +4 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/useAsyncEffect.d.ts.map +1 -1
- package/dist/types/src/useAsyncState.d.ts.map +1 -1
- package/dist/types/src/useAtomState.d.ts +12 -0
- package/dist/types/src/useAtomState.d.ts.map +1 -0
- package/dist/types/src/useControlledState.d.ts +2 -2
- package/dist/types/src/useControlledState.d.ts.map +1 -1
- package/dist/types/src/useDebugDeps.d.ts +1 -1
- package/dist/types/src/useDebugDeps.d.ts.map +1 -1
- package/dist/types/src/useDefaultValue.d.ts.map +1 -1
- package/dist/types/src/useDefaults.d.ts.map +1 -1
- package/dist/types/src/useDynamicRef.d.ts +3 -3
- package/dist/types/src/useDynamicRef.d.ts.map +1 -1
- package/dist/types/src/useForwardedRef.d.ts +23 -3
- package/dist/types/src/useForwardedRef.d.ts.map +1 -1
- package/dist/types/src/useId.d.ts.map +1 -1
- package/dist/types/src/useIsFocused.d.ts.map +1 -1
- package/dist/types/src/useMediaQuery.d.ts +1 -1
- package/dist/types/src/useMediaQuery.d.ts.map +1 -1
- package/dist/types/src/useMulticastObservable.d.ts.map +1 -1
- package/dist/types/src/useTimeout.d.ts.map +1 -1
- package/dist/types/src/useTransitions.d.ts +2 -1
- package/dist/types/src/useTransitions.d.ts.map +1 -1
- package/dist/types/src/useViewportResize.d.ts +3 -0
- package/dist/types/src/useViewportResize.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -14
- package/src/index.ts +5 -2
- package/src/useAtomState.ts +23 -0
- package/src/useControlledState.ts +22 -12
- package/src/useDebugDeps.ts +17 -8
- package/src/useDynamicRef.ts +5 -6
- package/src/useForwardedRef.ts +50 -13
- package/src/useId.ts +3 -2
- package/src/useIsFocused.ts +1 -1
- package/src/useMediaQuery.ts +8 -9
- package/src/useMulticastObservable.test.ts +1 -1
- package/src/useTransitions.ts +3 -1
- package/src/{useResize.ts → useViewportResize.ts} +4 -4
- package/dist/types/src/useResize.d.ts +0 -3
- package/dist/types/src/useResize.d.ts.map +0 -1
- package/dist/types/src/useSignals.d.ts +0 -10
- package/dist/types/src/useSignals.d.ts.map +0 -1
- package/src/useSignals.ts +0 -27
package/README.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
3
|
+
import { useSize, useScroller } from "mini-virtual-list";
|
|
4
|
+
|
|
1
5
|
// src/useAsyncEffect.ts
|
|
2
6
|
import { useEffect } from "react";
|
|
3
7
|
var useAsyncEffect = (cb, deps) => {
|
|
@@ -17,10 +21,28 @@ var useAsyncEffect = (cb, deps) => {
|
|
|
17
21
|
}, deps ?? []);
|
|
18
22
|
};
|
|
19
23
|
|
|
24
|
+
// src/useAtomState.ts
|
|
25
|
+
import { Atom, useAtomSet, useAtomValue } from "@effect-atom/atom-react";
|
|
26
|
+
import { useMemo, useState } from "react";
|
|
27
|
+
var useAtomState = (initialValue) => {
|
|
28
|
+
const [atom] = useState(() => Atom.make(initialValue));
|
|
29
|
+
const value = useAtomValue(atom);
|
|
30
|
+
const set = useAtomSet(atom);
|
|
31
|
+
return useMemo(() => ({
|
|
32
|
+
atom,
|
|
33
|
+
value,
|
|
34
|
+
set
|
|
35
|
+
}), [
|
|
36
|
+
atom,
|
|
37
|
+
value,
|
|
38
|
+
set
|
|
39
|
+
]);
|
|
40
|
+
};
|
|
41
|
+
|
|
20
42
|
// src/useAsyncState.ts
|
|
21
|
-
import { useEffect as useEffect2, useState } from "react";
|
|
43
|
+
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
22
44
|
var useAsyncState = (cb, deps = []) => {
|
|
23
|
-
const [value, setValue] =
|
|
45
|
+
const [value, setValue] = useState2();
|
|
24
46
|
useEffect2(() => {
|
|
25
47
|
let disposed = false;
|
|
26
48
|
const t = setTimeout(async () => {
|
|
@@ -41,58 +63,102 @@ var useAsyncState = (cb, deps = []) => {
|
|
|
41
63
|
};
|
|
42
64
|
|
|
43
65
|
// src/useControlledState.ts
|
|
44
|
-
import { useEffect as
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
66
|
+
import { useCallback as useCallback2, useEffect as useEffect4, useRef as useRef2, useState as useState4 } from "react";
|
|
67
|
+
|
|
68
|
+
// src/useDynamicRef.ts
|
|
69
|
+
import { useCallback, useEffect as useEffect3, useRef, useState as useState3 } from "react";
|
|
70
|
+
var useStateWithRef = (valueProp) => {
|
|
71
|
+
const [value, setValue] = useState3(valueProp);
|
|
72
|
+
const valueRef = useRef(valueProp);
|
|
73
|
+
const setter = useCallback((value2) => {
|
|
74
|
+
if (typeof value2 === "function") {
|
|
75
|
+
setValue((current) => {
|
|
76
|
+
valueRef.current = value2(current);
|
|
77
|
+
return valueRef.current;
|
|
78
|
+
});
|
|
79
|
+
} else {
|
|
80
|
+
valueRef.current = value2;
|
|
81
|
+
setValue(value2);
|
|
50
82
|
}
|
|
83
|
+
}, []);
|
|
84
|
+
return [
|
|
85
|
+
value,
|
|
86
|
+
setter,
|
|
87
|
+
valueRef
|
|
88
|
+
];
|
|
89
|
+
};
|
|
90
|
+
var useDynamicRef = (value) => {
|
|
91
|
+
const valueRef = useRef(value);
|
|
92
|
+
useEffect3(() => {
|
|
93
|
+
valueRef.current = value;
|
|
51
94
|
}, [
|
|
52
|
-
|
|
53
|
-
...deps
|
|
95
|
+
value
|
|
54
96
|
]);
|
|
55
|
-
|
|
56
|
-
|
|
97
|
+
return valueRef;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
// src/useControlledState.ts
|
|
101
|
+
var useControlledState = (valueProp, onChange) => {
|
|
102
|
+
const [value, setControlledValue] = useState4(valueProp);
|
|
103
|
+
useEffect4(() => {
|
|
104
|
+
setControlledValue(valueProp);
|
|
57
105
|
}, [
|
|
58
|
-
|
|
59
|
-
|
|
106
|
+
valueProp
|
|
107
|
+
]);
|
|
108
|
+
const onChangeRef = useRef2(onChange);
|
|
109
|
+
const valueRef = useDynamicRef(valueProp);
|
|
110
|
+
const setValue = useCallback2((nextValue) => {
|
|
111
|
+
const value2 = isFunction(nextValue) ? nextValue(valueRef.current) : nextValue;
|
|
112
|
+
setControlledValue(value2);
|
|
113
|
+
onChangeRef.current?.(value2);
|
|
114
|
+
}, [
|
|
115
|
+
valueRef,
|
|
116
|
+
onChangeRef
|
|
60
117
|
]);
|
|
61
118
|
return [
|
|
62
119
|
value,
|
|
63
120
|
setValue
|
|
64
121
|
];
|
|
65
122
|
};
|
|
123
|
+
function isFunction(value) {
|
|
124
|
+
return typeof value === "function";
|
|
125
|
+
}
|
|
66
126
|
|
|
67
127
|
// src/useDebugDeps.ts
|
|
68
|
-
import { useEffect as
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
128
|
+
import { useEffect as useEffect5, useRef as useRef3 } from "react";
|
|
129
|
+
import { log } from "@dxos/log";
|
|
130
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-primitives/react-hooks/src/useDebugDeps.ts";
|
|
131
|
+
var useDebugDeps = (deps = [], label = "useDebugDeps", active = true) => {
|
|
132
|
+
const lastDeps = useRef3([]);
|
|
133
|
+
useEffect5(() => {
|
|
134
|
+
if (!active) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const diff = {};
|
|
76
138
|
for (let i = 0; i < Math.max(lastDeps.current.length ?? 0, deps.length ?? 0); i++) {
|
|
77
|
-
if (lastDeps.current[i] !== deps[i]
|
|
78
|
-
|
|
79
|
-
index: i,
|
|
139
|
+
if (lastDeps.current[i] !== deps[i] || i > lastDeps.current.length) {
|
|
140
|
+
diff[i] = {
|
|
80
141
|
previous: lastDeps.current[i],
|
|
81
142
|
current: deps[i]
|
|
82
|
-
}
|
|
143
|
+
};
|
|
83
144
|
}
|
|
84
145
|
}
|
|
85
|
-
|
|
146
|
+
if (Object.keys(diff).length > 0) {
|
|
147
|
+
log.warn(`Updated: ${label} [${lastDeps.current.length}/${deps.length}]`, diff, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 24, S: void 0 });
|
|
148
|
+
}
|
|
86
149
|
lastDeps.current = deps;
|
|
87
|
-
},
|
|
150
|
+
}, [
|
|
151
|
+
...deps,
|
|
152
|
+
active
|
|
153
|
+
]);
|
|
88
154
|
};
|
|
89
155
|
|
|
90
156
|
// src/useDefaultValue.ts
|
|
91
|
-
import { useEffect as
|
|
157
|
+
import { useEffect as useEffect6, useMemo as useMemo2, useState as useState5 } from "react";
|
|
92
158
|
var useDefaultValue = (reactiveValue, getDefaultValue) => {
|
|
93
|
-
const stableDefaultValue =
|
|
94
|
-
const [value, setValue] =
|
|
95
|
-
|
|
159
|
+
const stableDefaultValue = useMemo2(getDefaultValue, []);
|
|
160
|
+
const [value, setValue] = useState5(reactiveValue ?? stableDefaultValue);
|
|
161
|
+
useEffect6(() => {
|
|
96
162
|
setValue(reactiveValue ?? stableDefaultValue);
|
|
97
163
|
}, [
|
|
98
164
|
reactiveValue,
|
|
@@ -103,51 +169,18 @@ var useDefaultValue = (reactiveValue, getDefaultValue) => {
|
|
|
103
169
|
|
|
104
170
|
// src/useDefaults.ts
|
|
105
171
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
106
|
-
import { useMemo as
|
|
172
|
+
import { useMemo as useMemo3 } from "react";
|
|
107
173
|
var useDefaults = (value, defaults) => {
|
|
108
|
-
return
|
|
174
|
+
return useMemo3(() => defaultsDeep({}, defaults, value), [
|
|
109
175
|
value,
|
|
110
176
|
defaults
|
|
111
177
|
]);
|
|
112
178
|
};
|
|
113
179
|
|
|
114
|
-
// src/useDynamicRef.ts
|
|
115
|
-
import { useCallback } from "@preact-signals/safe-react/react";
|
|
116
|
-
import { useEffect as useEffect6, useRef as useRef2, useState as useState4 } from "react";
|
|
117
|
-
var useStateWithRef = (valueParam) => {
|
|
118
|
-
const [value, setValue] = useState4(valueParam);
|
|
119
|
-
const valueRef = useRef2(valueParam);
|
|
120
|
-
const setter = useCallback((value2) => {
|
|
121
|
-
if (typeof value2 === "function") {
|
|
122
|
-
setValue((current) => {
|
|
123
|
-
valueRef.current = value2(current);
|
|
124
|
-
return valueRef.current;
|
|
125
|
-
});
|
|
126
|
-
} else {
|
|
127
|
-
valueRef.current = value2;
|
|
128
|
-
setValue(value2);
|
|
129
|
-
}
|
|
130
|
-
}, []);
|
|
131
|
-
return [
|
|
132
|
-
value,
|
|
133
|
-
setter,
|
|
134
|
-
valueRef
|
|
135
|
-
];
|
|
136
|
-
};
|
|
137
|
-
var useDynamicRef = (value) => {
|
|
138
|
-
const valueRef = useRef2(value);
|
|
139
|
-
useEffect6(() => {
|
|
140
|
-
valueRef.current = value;
|
|
141
|
-
}, [
|
|
142
|
-
value
|
|
143
|
-
]);
|
|
144
|
-
return valueRef;
|
|
145
|
-
};
|
|
146
|
-
|
|
147
180
|
// src/useFileDownload.ts
|
|
148
|
-
import { useMemo as
|
|
181
|
+
import { useMemo as useMemo4 } from "react";
|
|
149
182
|
var useFileDownload = () => {
|
|
150
|
-
return
|
|
183
|
+
return useMemo4(() => (data, filename) => {
|
|
151
184
|
const url = typeof data === "string" ? data : URL.createObjectURL(data);
|
|
152
185
|
const element = document.createElement("a");
|
|
153
186
|
element.setAttribute("href", url);
|
|
@@ -158,38 +191,61 @@ var useFileDownload = () => {
|
|
|
158
191
|
};
|
|
159
192
|
|
|
160
193
|
// src/useForwardedRef.ts
|
|
161
|
-
import { useEffect as useEffect7, useRef as
|
|
162
|
-
var useForwardedRef = (
|
|
163
|
-
const
|
|
194
|
+
import { useEffect as useEffect7, useMemo as useMemo5, useRef as useRef4 } from "react";
|
|
195
|
+
var useForwardedRef = (forwardedRef) => {
|
|
196
|
+
const localRef = useRef4(null);
|
|
164
197
|
useEffect7(() => {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
198
|
+
setRef(forwardedRef, localRef.current);
|
|
199
|
+
}, [
|
|
200
|
+
forwardedRef
|
|
201
|
+
]);
|
|
202
|
+
return localRef;
|
|
203
|
+
};
|
|
204
|
+
function setRef(ref, value) {
|
|
205
|
+
if (typeof ref === "function") {
|
|
206
|
+
return ref(value);
|
|
207
|
+
} else if (ref) {
|
|
208
|
+
ref.current = value;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
var mergeRefs = (refs) => {
|
|
212
|
+
return (value) => {
|
|
213
|
+
const cleanups = [];
|
|
214
|
+
for (const ref of refs) {
|
|
215
|
+
const cleanup = setRef(ref, value);
|
|
216
|
+
cleanups.push(typeof cleanup === "function" ? cleanup : () => setRef(ref, null));
|
|
172
217
|
}
|
|
173
|
-
|
|
174
|
-
|
|
218
|
+
return () => {
|
|
219
|
+
for (const cleanup of cleanups) {
|
|
220
|
+
cleanup();
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
var useMergeRefs = (refs) => {
|
|
226
|
+
return useMemo5(() => mergeRefs(refs), [
|
|
227
|
+
...refs
|
|
228
|
+
]);
|
|
175
229
|
};
|
|
176
230
|
|
|
177
231
|
// src/useId.ts
|
|
178
232
|
import alea from "alea";
|
|
179
|
-
import { useMemo as
|
|
233
|
+
import { useMemo as useMemo6 } from "react";
|
|
180
234
|
var Alea = alea;
|
|
181
235
|
var prng = new Alea("@dxos/react-hooks");
|
|
182
236
|
var randomString = (n = 4) => prng().toString(16).slice(2, n + 2);
|
|
183
|
-
var useId = (namespace, propsId, opts) =>
|
|
184
|
-
propsId
|
|
185
|
-
|
|
237
|
+
var useId = (namespace, propsId, opts) => {
|
|
238
|
+
return useMemo6(() => makeId(namespace, propsId, opts), [
|
|
239
|
+
propsId
|
|
240
|
+
]);
|
|
241
|
+
};
|
|
186
242
|
var makeId = (namespace, propsId, opts) => propsId ?? `${namespace}-${randomString(opts?.n ?? 4)}`;
|
|
187
243
|
|
|
188
244
|
// src/useIsFocused.ts
|
|
189
|
-
import { useEffect as useEffect8, useRef as
|
|
245
|
+
import { useEffect as useEffect8, useRef as useRef5, useState as useState6 } from "react";
|
|
190
246
|
var useIsFocused = (inputRef) => {
|
|
191
|
-
const [isFocused, setIsFocused] =
|
|
192
|
-
const isFocusedRef =
|
|
247
|
+
const [isFocused, setIsFocused] = useState6(void 0);
|
|
248
|
+
const isFocusedRef = useRef5(isFocused);
|
|
193
249
|
isFocusedRef.current = isFocused;
|
|
194
250
|
useEffect8(() => {
|
|
195
251
|
const input = inputRef.current;
|
|
@@ -215,7 +271,7 @@ var useIsFocused = (inputRef) => {
|
|
|
215
271
|
};
|
|
216
272
|
|
|
217
273
|
// src/useMediaQuery.ts
|
|
218
|
-
import { useEffect as useEffect9, useState as
|
|
274
|
+
import { useEffect as useEffect9, useState as useState7 } from "react";
|
|
219
275
|
var breakpointMediaQueries = {
|
|
220
276
|
sm: "(min-width: 640px)",
|
|
221
277
|
md: "(min-width: 768px)",
|
|
@@ -224,7 +280,7 @@ var breakpointMediaQueries = {
|
|
|
224
280
|
"2xl": "(min-width: 1536px)"
|
|
225
281
|
};
|
|
226
282
|
var useMediaQuery = (query, options = {}) => {
|
|
227
|
-
const { ssr =
|
|
283
|
+
const { ssr = false, fallback } = options;
|
|
228
284
|
const queries = (Array.isArray(query) ? query : [
|
|
229
285
|
query
|
|
230
286
|
]).map((query2) => query2 in breakpointMediaQueries ? breakpointMediaQueries[query2] : query2);
|
|
@@ -232,7 +288,7 @@ var useMediaQuery = (query, options = {}) => {
|
|
|
232
288
|
fallback
|
|
233
289
|
];
|
|
234
290
|
fallbackValues = fallbackValues.filter((v) => v != null);
|
|
235
|
-
const [value, setValue] =
|
|
291
|
+
const [value, setValue] = useState7(() => {
|
|
236
292
|
return queries.map((query2, index) => ({
|
|
237
293
|
media: query2,
|
|
238
294
|
matches: ssr ? !!fallbackValues[index] : document.defaultView?.matchMedia(query2).matches
|
|
@@ -280,9 +336,9 @@ var useMediaQuery = (query, options = {}) => {
|
|
|
280
336
|
};
|
|
281
337
|
|
|
282
338
|
// src/useMulticastObservable.ts
|
|
283
|
-
import { useMemo as
|
|
339
|
+
import { useMemo as useMemo7, useSyncExternalStore } from "react";
|
|
284
340
|
var useMulticastObservable = (observable) => {
|
|
285
|
-
const subscribeFn =
|
|
341
|
+
const subscribeFn = useMemo7(() => (listener) => {
|
|
286
342
|
const subscription = observable.subscribe(listener);
|
|
287
343
|
return () => subscription.unsubscribe();
|
|
288
344
|
}, [
|
|
@@ -292,28 +348,28 @@ var useMulticastObservable = (observable) => {
|
|
|
292
348
|
};
|
|
293
349
|
|
|
294
350
|
// src/useRefCallback.ts
|
|
295
|
-
import { useState as
|
|
351
|
+
import { useState as useState8 } from "react";
|
|
296
352
|
var useRefCallback = () => {
|
|
297
|
-
const [value, setValue] =
|
|
353
|
+
const [value, setValue] = useState8(null);
|
|
298
354
|
return {
|
|
299
355
|
refCallback: (value2) => setValue(value2),
|
|
300
356
|
value
|
|
301
357
|
};
|
|
302
358
|
};
|
|
303
359
|
|
|
304
|
-
// src/
|
|
305
|
-
import { useLayoutEffect, useMemo as
|
|
306
|
-
var
|
|
307
|
-
const debouncedHandler =
|
|
360
|
+
// src/useViewportResize.ts
|
|
361
|
+
import { useLayoutEffect, useMemo as useMemo8 } from "react";
|
|
362
|
+
var useViewportResize = (cb, deps = [], delay = 800) => {
|
|
363
|
+
const debouncedHandler = useMemo8(() => {
|
|
308
364
|
let timeout;
|
|
309
365
|
return (event) => {
|
|
310
366
|
clearTimeout(timeout);
|
|
311
367
|
timeout = setTimeout(() => {
|
|
312
|
-
|
|
368
|
+
cb(event);
|
|
313
369
|
}, delay);
|
|
314
370
|
};
|
|
315
371
|
}, [
|
|
316
|
-
|
|
372
|
+
cb,
|
|
317
373
|
delay
|
|
318
374
|
]);
|
|
319
375
|
return useLayoutEffect(() => {
|
|
@@ -326,39 +382,16 @@ var useResize = (handler, deps = [], delay = 800) => {
|
|
|
326
382
|
]);
|
|
327
383
|
};
|
|
328
384
|
|
|
329
|
-
// src/useSignals.ts
|
|
330
|
-
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
331
|
-
import { computed, effect } from "@preact-signals/safe-react";
|
|
332
|
-
import { useRef as useRef5 } from "@preact-signals/safe-react/react";
|
|
333
|
-
import { useEffect as useEffect10, useMemo as useMemo7 } from "react";
|
|
334
|
-
var useSignalsEffect = (cb, deps) => {
|
|
335
|
-
const callback = useRef5(cb);
|
|
336
|
-
callback.current = cb;
|
|
337
|
-
useEffect10(() => {
|
|
338
|
-
return effect(() => {
|
|
339
|
-
return callback.current();
|
|
340
|
-
});
|
|
341
|
-
}, deps ?? []);
|
|
342
|
-
};
|
|
343
|
-
var useSignalsMemo = (cb, deps) => {
|
|
344
|
-
var _effect = _useSignals();
|
|
345
|
-
try {
|
|
346
|
-
return useMemo7(() => computed(cb), deps ?? []).value;
|
|
347
|
-
} finally {
|
|
348
|
-
_effect.f();
|
|
349
|
-
}
|
|
350
|
-
};
|
|
351
|
-
|
|
352
385
|
// src/useTimeout.ts
|
|
353
|
-
import { useEffect as
|
|
386
|
+
import { useEffect as useEffect10, useRef as useRef6 } from "react";
|
|
354
387
|
var useTimeout = (callback, delay = 0, deps = []) => {
|
|
355
388
|
const callbackRef = useRef6(callback);
|
|
356
|
-
|
|
389
|
+
useEffect10(() => {
|
|
357
390
|
callbackRef.current = callback;
|
|
358
391
|
}, [
|
|
359
392
|
callback
|
|
360
393
|
]);
|
|
361
|
-
|
|
394
|
+
useEffect10(() => {
|
|
362
395
|
if (delay == null) {
|
|
363
396
|
return;
|
|
364
397
|
}
|
|
@@ -371,12 +404,12 @@ var useTimeout = (callback, delay = 0, deps = []) => {
|
|
|
371
404
|
};
|
|
372
405
|
var useInterval = (callback, delay = 0, deps = []) => {
|
|
373
406
|
const callbackRef = useRef6(callback);
|
|
374
|
-
|
|
407
|
+
useEffect10(() => {
|
|
375
408
|
callbackRef.current = callback;
|
|
376
409
|
}, [
|
|
377
410
|
callback
|
|
378
411
|
]);
|
|
379
|
-
|
|
412
|
+
useEffect10(() => {
|
|
380
413
|
if (delay == null) {
|
|
381
414
|
return;
|
|
382
415
|
}
|
|
@@ -394,16 +427,16 @@ var useInterval = (callback, delay = 0, deps = []) => {
|
|
|
394
427
|
};
|
|
395
428
|
|
|
396
429
|
// src/useTransitions.ts
|
|
397
|
-
import { useEffect as
|
|
398
|
-
var
|
|
430
|
+
import { useEffect as useEffect11, useRef as useRef7, useState as useState9 } from "react";
|
|
431
|
+
var isFunction2 = (functionToCheck) => {
|
|
399
432
|
return functionToCheck instanceof Function;
|
|
400
433
|
};
|
|
401
434
|
var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
402
|
-
const [hasTransitioned, setHasTransitioned] =
|
|
435
|
+
const [hasTransitioned, setHasTransitioned] = useState9(false);
|
|
403
436
|
const previousValue = useRef7(currentValue);
|
|
404
|
-
|
|
405
|
-
const toValueValid =
|
|
406
|
-
const fromValueValid =
|
|
437
|
+
useEffect11(() => {
|
|
438
|
+
const toValueValid = isFunction2(toValue) ? toValue(currentValue) : toValue === currentValue;
|
|
439
|
+
const fromValueValid = isFunction2(fromValue) ? fromValue(previousValue.current) : fromValue === previousValue.current;
|
|
407
440
|
if (fromValueValid && toValueValid && !hasTransitioned) {
|
|
408
441
|
setHasTransitioned(true);
|
|
409
442
|
} else if ((!fromValueValid || !toValueValid) && hasTransitioned) {
|
|
@@ -421,13 +454,13 @@ var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
|
421
454
|
var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
422
455
|
const dirty = useRef7(false);
|
|
423
456
|
const hasTransitioned = useDidTransition(currentValue, fromValue, toValue);
|
|
424
|
-
|
|
457
|
+
useEffect11(() => {
|
|
425
458
|
dirty.current = false;
|
|
426
459
|
}, [
|
|
427
460
|
currentValue,
|
|
428
461
|
dirty
|
|
429
462
|
]);
|
|
430
|
-
|
|
463
|
+
useEffect11(() => {
|
|
431
464
|
if (hasTransitioned && !dirty.current) {
|
|
432
465
|
callback();
|
|
433
466
|
dirty.current = true;
|
|
@@ -440,9 +473,13 @@ var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
|
440
473
|
};
|
|
441
474
|
export {
|
|
442
475
|
makeId,
|
|
476
|
+
mergeRefs,
|
|
443
477
|
randomString,
|
|
478
|
+
setRef,
|
|
444
479
|
useAsyncEffect,
|
|
445
480
|
useAsyncState,
|
|
481
|
+
useAtomState,
|
|
482
|
+
useComposedRefs,
|
|
446
483
|
useControlledState,
|
|
447
484
|
useDebugDeps,
|
|
448
485
|
useDefaultValue,
|
|
@@ -455,13 +492,14 @@ export {
|
|
|
455
492
|
useInterval,
|
|
456
493
|
useIsFocused,
|
|
457
494
|
useMediaQuery,
|
|
495
|
+
useMergeRefs,
|
|
458
496
|
useMulticastObservable,
|
|
459
497
|
useOnTransition,
|
|
460
498
|
useRefCallback,
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
useSignalsMemo,
|
|
499
|
+
useScroller,
|
|
500
|
+
useSize,
|
|
464
501
|
useStateWithRef,
|
|
465
|
-
useTimeout
|
|
502
|
+
useTimeout,
|
|
503
|
+
useViewportResize
|
|
466
504
|
};
|
|
467
505
|
//# sourceMappingURL=index.mjs.map
|