@dxos/react-hooks 0.8.4-main.67995b8 → 0.8.4-main.70d3990
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/lib/browser/index.mjs +193 -129
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +193 -129
- 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 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/useAsyncEffect.d.ts +5 -29
- package/dist/types/src/useAsyncEffect.d.ts.map +1 -1
- package/dist/types/src/useControlledState.d.ts +2 -1
- package/dist/types/src/useControlledState.d.ts.map +1 -1
- package/dist/types/src/useDebugDeps.d.ts +6 -0
- package/dist/types/src/useDebugDeps.d.ts.map +1 -0
- package/dist/types/src/useDynamicRef.d.ts +6 -1
- 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/useIsFocused.d.ts +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.test.d.ts.map +1 -1
- package/dist/types/src/useSignals.d.ts +10 -0
- package/dist/types/src/useSignals.d.ts.map +1 -0
- package/dist/types/src/useTimeout.d.ts +2 -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 +13 -11
- package/src/index.ts +5 -3
- package/src/useAsyncEffect.ts +19 -49
- package/src/useControlledState.ts +22 -11
- package/src/useDebugDeps.ts +26 -0
- package/src/useDefaultValue.ts +1 -1
- package/src/useDynamicRef.ts +26 -5
- package/src/useForwardedRef.ts +48 -13
- package/src/useIsFocused.ts +2 -2
- package/src/useMediaQuery.ts +8 -9
- package/src/{useMulticastObservable.test.tsx → useMulticastObservable.test.ts} +1 -3
- package/src/useSignals.ts +26 -0
- package/src/useTimeout.ts +28 -3
- package/src/useTransitions.ts +4 -2
- package/src/{useResize.ts → useViewportResize.ts} +1 -1
- package/dist/types/src/useAsyncEffect.test.d.ts +0 -2
- package/dist/types/src/useAsyncEffect.test.d.ts.map +0 -1
- package/dist/types/src/useDebugReactDeps.d.ts +0 -6
- package/dist/types/src/useDebugReactDeps.d.ts.map +0 -1
- package/dist/types/src/useResize.d.ts +0 -3
- package/dist/types/src/useResize.d.ts.map +0 -1
- package/dist/types/src/useTrackProps.d.ts +0 -5
- package/dist/types/src/useTrackProps.d.ts.map +0 -1
- package/src/useAsyncEffect.test.tsx +0 -51
- package/src/useDebugReactDeps.ts +0 -27
- package/src/useTrackProps.ts +0 -40
|
@@ -2,27 +2,21 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
2
2
|
|
|
3
3
|
// src/useAsyncEffect.ts
|
|
4
4
|
import { useEffect } from "react";
|
|
5
|
-
|
|
6
|
-
var useAsyncEffect = (callback, destructor, deps) => {
|
|
7
|
-
const [effectDestructor, effectDeps] = typeof destructor === "function" ? [
|
|
8
|
-
destructor,
|
|
9
|
-
deps
|
|
10
|
-
] : [
|
|
11
|
-
void 0,
|
|
12
|
-
destructor
|
|
13
|
-
];
|
|
5
|
+
var useAsyncEffect = (cb, deps) => {
|
|
14
6
|
useEffect(() => {
|
|
15
|
-
|
|
16
|
-
let
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
7
|
+
const controller = new AbortController();
|
|
8
|
+
let cleanup;
|
|
9
|
+
const t = setTimeout(async () => {
|
|
10
|
+
if (!controller.signal.aborted) {
|
|
11
|
+
cleanup = await cb(controller);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
21
14
|
return () => {
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
clearTimeout(t);
|
|
16
|
+
controller.abort();
|
|
17
|
+
cleanup?.();
|
|
24
18
|
};
|
|
25
|
-
},
|
|
19
|
+
}, deps ?? []);
|
|
26
20
|
};
|
|
27
21
|
|
|
28
22
|
// src/useAsyncState.ts
|
|
@@ -49,43 +43,84 @@ var useAsyncState = (cb, deps = []) => {
|
|
|
49
43
|
};
|
|
50
44
|
|
|
51
45
|
// src/useControlledState.ts
|
|
52
|
-
import { useEffect as
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
46
|
+
import { useCallback as useCallback2, useEffect as useEffect4, useRef as useRef2, useState as useState3 } from "react";
|
|
47
|
+
|
|
48
|
+
// src/useDynamicRef.ts
|
|
49
|
+
import { useCallback, useEffect as useEffect3, useRef, useState as useState2 } from "react";
|
|
50
|
+
var useStateWithRef = (valueParam) => {
|
|
51
|
+
const [value, setValue] = useState2(valueParam);
|
|
52
|
+
const valueRef = useRef(valueParam);
|
|
53
|
+
const setter = useCallback((value2) => {
|
|
54
|
+
if (typeof value2 === "function") {
|
|
55
|
+
setValue((current) => {
|
|
56
|
+
valueRef.current = value2(current);
|
|
57
|
+
return valueRef.current;
|
|
58
|
+
});
|
|
59
|
+
} else {
|
|
60
|
+
valueRef.current = value2;
|
|
61
|
+
setValue(value2);
|
|
58
62
|
}
|
|
63
|
+
}, []);
|
|
64
|
+
return [
|
|
65
|
+
value,
|
|
66
|
+
setter,
|
|
67
|
+
valueRef
|
|
68
|
+
];
|
|
69
|
+
};
|
|
70
|
+
var useDynamicRef = (value) => {
|
|
71
|
+
const valueRef = useRef(value);
|
|
72
|
+
useEffect3(() => {
|
|
73
|
+
valueRef.current = value;
|
|
59
74
|
}, [
|
|
60
|
-
|
|
61
|
-
...deps
|
|
75
|
+
value
|
|
62
76
|
]);
|
|
63
|
-
|
|
64
|
-
|
|
77
|
+
return valueRef;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/useControlledState.ts
|
|
81
|
+
var useControlledState = (valueParam, onChange) => {
|
|
82
|
+
const [value, setControlledValue] = useState3(valueParam);
|
|
83
|
+
useEffect4(() => {
|
|
84
|
+
setControlledValue(valueParam);
|
|
65
85
|
}, [
|
|
66
|
-
|
|
67
|
-
|
|
86
|
+
valueParam
|
|
87
|
+
]);
|
|
88
|
+
const onChangeRef = useRef2(onChange);
|
|
89
|
+
const valueRef = useDynamicRef(valueParam);
|
|
90
|
+
const setValue = useCallback2((nextValue) => {
|
|
91
|
+
const value2 = isFunction(nextValue) ? nextValue(valueRef.current) : nextValue;
|
|
92
|
+
setControlledValue(value2);
|
|
93
|
+
onChangeRef.current?.(value2);
|
|
94
|
+
}, [
|
|
95
|
+
valueRef,
|
|
96
|
+
onChangeRef
|
|
68
97
|
]);
|
|
69
98
|
return [
|
|
70
99
|
value,
|
|
71
100
|
setValue
|
|
72
101
|
];
|
|
73
102
|
};
|
|
103
|
+
function isFunction(value) {
|
|
104
|
+
return typeof value === "function";
|
|
105
|
+
}
|
|
74
106
|
|
|
75
|
-
// src/
|
|
76
|
-
import { useEffect as
|
|
77
|
-
var
|
|
78
|
-
const lastDeps =
|
|
79
|
-
|
|
107
|
+
// src/useDebugDeps.ts
|
|
108
|
+
import { useEffect as useEffect5, useRef as useRef3 } from "react";
|
|
109
|
+
var useDebugDeps = (deps = [], active = true) => {
|
|
110
|
+
const lastDeps = useRef3([]);
|
|
111
|
+
useEffect5(() => {
|
|
80
112
|
console.group("deps changed", {
|
|
81
|
-
|
|
82
|
-
|
|
113
|
+
previous: lastDeps.current.length,
|
|
114
|
+
current: deps.length
|
|
83
115
|
});
|
|
84
116
|
for (let i = 0; i < Math.max(lastDeps.current.length ?? 0, deps.length ?? 0); i++) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
117
|
+
if (lastDeps.current[i] !== deps[i] && active) {
|
|
118
|
+
console.log("changed", {
|
|
119
|
+
index: i,
|
|
120
|
+
previous: lastDeps.current[i],
|
|
121
|
+
current: deps[i]
|
|
122
|
+
});
|
|
123
|
+
}
|
|
89
124
|
}
|
|
90
125
|
console.groupEnd();
|
|
91
126
|
lastDeps.current = deps;
|
|
@@ -93,11 +128,11 @@ var useDebugReactDeps = (deps = []) => {
|
|
|
93
128
|
};
|
|
94
129
|
|
|
95
130
|
// src/useDefaultValue.ts
|
|
96
|
-
import { useEffect as
|
|
131
|
+
import { useEffect as useEffect6, useMemo, useState as useState4 } from "react";
|
|
97
132
|
var useDefaultValue = (reactiveValue, getDefaultValue) => {
|
|
98
133
|
const stableDefaultValue = useMemo(getDefaultValue, []);
|
|
99
|
-
const [value, setValue] =
|
|
100
|
-
|
|
134
|
+
const [value, setValue] = useState4(reactiveValue ?? stableDefaultValue);
|
|
135
|
+
useEffect6(() => {
|
|
101
136
|
setValue(reactiveValue ?? stableDefaultValue);
|
|
102
137
|
}, [
|
|
103
138
|
reactiveValue,
|
|
@@ -116,18 +151,6 @@ var useDefaults = (value, defaults) => {
|
|
|
116
151
|
]);
|
|
117
152
|
};
|
|
118
153
|
|
|
119
|
-
// src/useDynamicRef.ts
|
|
120
|
-
import { useEffect as useEffect6, useRef as useRef2 } from "react";
|
|
121
|
-
var useDynamicRef = (value) => {
|
|
122
|
-
const ref = useRef2(value);
|
|
123
|
-
useEffect6(() => {
|
|
124
|
-
ref.current = value;
|
|
125
|
-
}, [
|
|
126
|
-
value
|
|
127
|
-
]);
|
|
128
|
-
return ref;
|
|
129
|
-
};
|
|
130
|
-
|
|
131
154
|
// src/useFileDownload.ts
|
|
132
155
|
import { useMemo as useMemo3 } from "react";
|
|
133
156
|
var useFileDownload = () => {
|
|
@@ -142,38 +165,55 @@ var useFileDownload = () => {
|
|
|
142
165
|
};
|
|
143
166
|
|
|
144
167
|
// src/useForwardedRef.ts
|
|
145
|
-
import {
|
|
146
|
-
var useForwardedRef = (
|
|
147
|
-
const
|
|
168
|
+
import { useEffect as useEffect7, useMemo as useMemo4, useRef as useRef4 } from "react";
|
|
169
|
+
var useForwardedRef = (forwardedRef) => {
|
|
170
|
+
const localRef = useRef4(null);
|
|
148
171
|
useEffect7(() => {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
172
|
+
setRef(forwardedRef, localRef.current);
|
|
173
|
+
}, [
|
|
174
|
+
forwardedRef
|
|
175
|
+
]);
|
|
176
|
+
return localRef;
|
|
177
|
+
};
|
|
178
|
+
function setRef(ref, value) {
|
|
179
|
+
if (typeof ref === "function") {
|
|
180
|
+
return ref(value);
|
|
181
|
+
} else if (ref) {
|
|
182
|
+
ref.current = value;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
var mergeRefs = (refs) => {
|
|
186
|
+
return (value) => {
|
|
187
|
+
const cleanups = [];
|
|
188
|
+
for (const ref of refs) {
|
|
189
|
+
const cleanup = setRef(ref, value);
|
|
190
|
+
cleanups.push(typeof cleanup === "function" ? cleanup : () => setRef(ref, null));
|
|
156
191
|
}
|
|
157
|
-
|
|
158
|
-
|
|
192
|
+
return () => {
|
|
193
|
+
for (const cleanup of cleanups) cleanup();
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
var useMergeRefs = (refs) => {
|
|
198
|
+
return useMemo4(() => mergeRefs(refs), refs);
|
|
159
199
|
};
|
|
160
200
|
|
|
161
201
|
// src/useId.ts
|
|
162
202
|
import alea from "alea";
|
|
163
|
-
import { useMemo as
|
|
203
|
+
import { useMemo as useMemo5 } from "react";
|
|
164
204
|
var Alea = alea;
|
|
165
205
|
var prng = new Alea("@dxos/react-hooks");
|
|
166
206
|
var randomString = (n = 4) => prng().toString(16).slice(2, n + 2);
|
|
167
|
-
var useId = (namespace, propsId, opts) =>
|
|
207
|
+
var useId = (namespace, propsId, opts) => useMemo5(() => makeId(namespace, propsId, opts), [
|
|
168
208
|
propsId
|
|
169
209
|
]);
|
|
170
210
|
var makeId = (namespace, propsId, opts) => propsId ?? `${namespace}-${randomString(opts?.n ?? 4)}`;
|
|
171
211
|
|
|
172
212
|
// src/useIsFocused.ts
|
|
173
|
-
import { useEffect as useEffect8, useRef as
|
|
213
|
+
import { useEffect as useEffect8, useRef as useRef5, useState as useState5 } from "react";
|
|
174
214
|
var useIsFocused = (inputRef) => {
|
|
175
|
-
const [isFocused, setIsFocused] =
|
|
176
|
-
const isFocusedRef =
|
|
215
|
+
const [isFocused, setIsFocused] = useState5(void 0);
|
|
216
|
+
const isFocusedRef = useRef5(isFocused);
|
|
177
217
|
isFocusedRef.current = isFocused;
|
|
178
218
|
useEffect8(() => {
|
|
179
219
|
const input = inputRef.current;
|
|
@@ -199,7 +239,7 @@ var useIsFocused = (inputRef) => {
|
|
|
199
239
|
};
|
|
200
240
|
|
|
201
241
|
// src/useMediaQuery.ts
|
|
202
|
-
import { useEffect as useEffect9, useState as
|
|
242
|
+
import { useEffect as useEffect9, useState as useState6 } from "react";
|
|
203
243
|
var breakpointMediaQueries = {
|
|
204
244
|
sm: "(min-width: 640px)",
|
|
205
245
|
md: "(min-width: 768px)",
|
|
@@ -208,7 +248,7 @@ var breakpointMediaQueries = {
|
|
|
208
248
|
"2xl": "(min-width: 1536px)"
|
|
209
249
|
};
|
|
210
250
|
var useMediaQuery = (query, options = {}) => {
|
|
211
|
-
const { ssr =
|
|
251
|
+
const { ssr = false, fallback } = options;
|
|
212
252
|
const queries = (Array.isArray(query) ? query : [
|
|
213
253
|
query
|
|
214
254
|
]).map((query2) => query2 in breakpointMediaQueries ? breakpointMediaQueries[query2] : query2);
|
|
@@ -216,7 +256,7 @@ var useMediaQuery = (query, options = {}) => {
|
|
|
216
256
|
fallback
|
|
217
257
|
];
|
|
218
258
|
fallbackValues = fallbackValues.filter((v) => v != null);
|
|
219
|
-
const [value, setValue] =
|
|
259
|
+
const [value, setValue] = useState6(() => {
|
|
220
260
|
return queries.map((query2, index) => ({
|
|
221
261
|
media: query2,
|
|
222
262
|
matches: ssr ? !!fallbackValues[index] : document.defaultView?.matchMedia(query2).matches
|
|
@@ -264,9 +304,9 @@ var useMediaQuery = (query, options = {}) => {
|
|
|
264
304
|
};
|
|
265
305
|
|
|
266
306
|
// src/useMulticastObservable.ts
|
|
267
|
-
import { useMemo as
|
|
307
|
+
import { useMemo as useMemo6, useSyncExternalStore } from "react";
|
|
268
308
|
var useMulticastObservable = (observable) => {
|
|
269
|
-
const subscribeFn =
|
|
309
|
+
const subscribeFn = useMemo6(() => (listener) => {
|
|
270
310
|
const subscription = observable.subscribe(listener);
|
|
271
311
|
return () => subscription.unsubscribe();
|
|
272
312
|
}, [
|
|
@@ -276,19 +316,19 @@ var useMulticastObservable = (observable) => {
|
|
|
276
316
|
};
|
|
277
317
|
|
|
278
318
|
// src/useRefCallback.ts
|
|
279
|
-
import { useState as
|
|
319
|
+
import { useState as useState7 } from "react";
|
|
280
320
|
var useRefCallback = () => {
|
|
281
|
-
const [value, setValue] =
|
|
321
|
+
const [value, setValue] = useState7(null);
|
|
282
322
|
return {
|
|
283
323
|
refCallback: (value2) => setValue(value2),
|
|
284
324
|
value
|
|
285
325
|
};
|
|
286
326
|
};
|
|
287
327
|
|
|
288
|
-
// src/
|
|
289
|
-
import { useLayoutEffect, useMemo as
|
|
290
|
-
var
|
|
291
|
-
const debouncedHandler =
|
|
328
|
+
// src/useViewportResize.ts
|
|
329
|
+
import { useLayoutEffect, useMemo as useMemo7 } from "react";
|
|
330
|
+
var useViewportResize = (handler, deps = [], delay = 800) => {
|
|
331
|
+
const debouncedHandler = useMemo7(() => {
|
|
292
332
|
let timeout;
|
|
293
333
|
return (event) => {
|
|
294
334
|
clearTimeout(timeout);
|
|
@@ -310,70 +350,83 @@ var useResize = (handler, deps = [], delay = 800) => {
|
|
|
310
350
|
]);
|
|
311
351
|
};
|
|
312
352
|
|
|
353
|
+
// src/useSignals.ts
|
|
354
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
355
|
+
import { computed, effect } from "@preact-signals/safe-react";
|
|
356
|
+
import { useEffect as useEffect10, useMemo as useMemo8, useRef as useRef6 } from "react";
|
|
357
|
+
var useSignalsEffect = (cb, deps) => {
|
|
358
|
+
const callback = useRef6(cb);
|
|
359
|
+
callback.current = cb;
|
|
360
|
+
useEffect10(() => {
|
|
361
|
+
return effect(() => {
|
|
362
|
+
return callback.current();
|
|
363
|
+
});
|
|
364
|
+
}, deps ?? []);
|
|
365
|
+
};
|
|
366
|
+
var useSignalsMemo = (cb, deps) => {
|
|
367
|
+
var _effect = _useSignals();
|
|
368
|
+
try {
|
|
369
|
+
return useMemo8(() => computed(cb), deps ?? []).value;
|
|
370
|
+
} finally {
|
|
371
|
+
_effect.f();
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
|
|
313
375
|
// src/useTimeout.ts
|
|
314
|
-
import { useEffect as
|
|
376
|
+
import { useEffect as useEffect11, useRef as useRef7 } from "react";
|
|
315
377
|
var useTimeout = (callback, delay = 0, deps = []) => {
|
|
316
|
-
const callbackRef =
|
|
317
|
-
|
|
378
|
+
const callbackRef = useRef7(callback);
|
|
379
|
+
useEffect11(() => {
|
|
318
380
|
callbackRef.current = callback;
|
|
319
381
|
}, [
|
|
320
382
|
callback
|
|
321
383
|
]);
|
|
322
|
-
|
|
384
|
+
useEffect11(() => {
|
|
323
385
|
if (delay == null) {
|
|
324
386
|
return;
|
|
325
387
|
}
|
|
326
|
-
const
|
|
327
|
-
return () => clearTimeout(
|
|
388
|
+
const t = setTimeout(() => callbackRef.current?.(), delay);
|
|
389
|
+
return () => clearTimeout(t);
|
|
328
390
|
}, [
|
|
329
391
|
delay,
|
|
330
392
|
...deps
|
|
331
393
|
]);
|
|
332
394
|
};
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
import { useRef as useRef6, useEffect as useEffect11 } from "react";
|
|
336
|
-
import { log as log2 } from "@dxos/log";
|
|
337
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/ui/primitives/react-hooks/src/useTrackProps.ts";
|
|
338
|
-
var useTrackProps = (props, componentName = "Component", active = true) => {
|
|
339
|
-
const prevProps = useRef6(props);
|
|
395
|
+
var useInterval = (callback, delay = 0, deps = []) => {
|
|
396
|
+
const callbackRef = useRef7(callback);
|
|
340
397
|
useEffect11(() => {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
key,
|
|
349
|
-
{
|
|
350
|
-
from: prevProps.current[key],
|
|
351
|
-
to: props[key]
|
|
352
|
-
}
|
|
353
|
-
]))
|
|
354
|
-
}, {
|
|
355
|
-
F: __dxlog_file,
|
|
356
|
-
L: 22,
|
|
357
|
-
S: void 0,
|
|
358
|
-
C: (f, a) => f(...a)
|
|
359
|
-
});
|
|
360
|
-
}
|
|
398
|
+
callbackRef.current = callback;
|
|
399
|
+
}, [
|
|
400
|
+
callback
|
|
401
|
+
]);
|
|
402
|
+
useEffect11(() => {
|
|
403
|
+
if (delay == null) {
|
|
404
|
+
return;
|
|
361
405
|
}
|
|
362
|
-
|
|
363
|
-
|
|
406
|
+
const i = setInterval(async () => {
|
|
407
|
+
const result = await callbackRef.current?.();
|
|
408
|
+
if (result === false) {
|
|
409
|
+
clearInterval(i);
|
|
410
|
+
}
|
|
411
|
+
}, delay);
|
|
412
|
+
return () => clearInterval(i);
|
|
413
|
+
}, [
|
|
414
|
+
delay,
|
|
415
|
+
...deps
|
|
416
|
+
]);
|
|
364
417
|
};
|
|
365
418
|
|
|
366
419
|
// src/useTransitions.ts
|
|
367
|
-
import {
|
|
368
|
-
var
|
|
420
|
+
import { useEffect as useEffect12, useRef as useRef8, useState as useState8 } from "react";
|
|
421
|
+
var isFunction2 = (functionToCheck) => {
|
|
369
422
|
return functionToCheck instanceof Function;
|
|
370
423
|
};
|
|
371
424
|
var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
372
|
-
const [hasTransitioned, setHasTransitioned] =
|
|
373
|
-
const previousValue =
|
|
425
|
+
const [hasTransitioned, setHasTransitioned] = useState8(false);
|
|
426
|
+
const previousValue = useRef8(currentValue);
|
|
374
427
|
useEffect12(() => {
|
|
375
|
-
const toValueValid =
|
|
376
|
-
const fromValueValid =
|
|
428
|
+
const toValueValid = isFunction2(toValue) ? toValue(currentValue) : toValue === currentValue;
|
|
429
|
+
const fromValueValid = isFunction2(fromValue) ? fromValue(previousValue.current) : fromValue === previousValue.current;
|
|
377
430
|
if (fromValueValid && toValueValid && !hasTransitioned) {
|
|
378
431
|
setHasTransitioned(true);
|
|
379
432
|
} else if ((!fromValueValid || !toValueValid) && hasTransitioned) {
|
|
@@ -389,7 +442,7 @@ var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
|
389
442
|
return hasTransitioned;
|
|
390
443
|
};
|
|
391
444
|
var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
392
|
-
const dirty =
|
|
445
|
+
const dirty = useRef8(false);
|
|
393
446
|
const hasTransitioned = useDidTransition(currentValue, fromValue, toValue);
|
|
394
447
|
useEffect12(() => {
|
|
395
448
|
dirty.current = false;
|
|
@@ -408,13 +461,18 @@ var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
|
408
461
|
callback
|
|
409
462
|
]);
|
|
410
463
|
};
|
|
464
|
+
|
|
465
|
+
// src/index.ts
|
|
466
|
+
import { useSize, useScroller } from "mini-virtual-list";
|
|
411
467
|
export {
|
|
412
468
|
makeId,
|
|
469
|
+
mergeRefs,
|
|
413
470
|
randomString,
|
|
471
|
+
setRef,
|
|
414
472
|
useAsyncEffect,
|
|
415
473
|
useAsyncState,
|
|
416
474
|
useControlledState,
|
|
417
|
-
|
|
475
|
+
useDebugDeps,
|
|
418
476
|
useDefaultValue,
|
|
419
477
|
useDefaults,
|
|
420
478
|
useDidTransition,
|
|
@@ -422,13 +480,19 @@ export {
|
|
|
422
480
|
useFileDownload,
|
|
423
481
|
useForwardedRef,
|
|
424
482
|
useId,
|
|
483
|
+
useInterval,
|
|
425
484
|
useIsFocused,
|
|
426
485
|
useMediaQuery,
|
|
486
|
+
useMergeRefs,
|
|
427
487
|
useMulticastObservable,
|
|
428
488
|
useOnTransition,
|
|
429
489
|
useRefCallback,
|
|
430
|
-
|
|
490
|
+
useScroller,
|
|
491
|
+
useSignalsEffect,
|
|
492
|
+
useSignalsMemo,
|
|
493
|
+
useSize,
|
|
494
|
+
useStateWithRef,
|
|
431
495
|
useTimeout,
|
|
432
|
-
|
|
496
|
+
useViewportResize
|
|
433
497
|
};
|
|
434
498
|
//# sourceMappingURL=index.mjs.map
|