@dxos/react-hooks 0.8.4-main.dedc0f3 → 0.8.4-main.e00bdcdb52

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