@dxos/react-hooks 0.8.4-main.f9ba587 → 0.8.4-main.fcc0d83b33

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