@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
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,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] = useState();
45
+ const [value, setValue] = useState2();
24
46
  useEffect2(() => {
25
47
  let disposed = false;
26
48
  const t = setTimeout(async () => {
@@ -41,58 +63,101 @@ var useAsyncState = (cb, deps = []) => {
41
63
  };
42
64
 
43
65
  // src/useControlledState.ts
44
- import { useEffect as useEffect3, useState as useState2 } from "react";
45
- var useControlledState = (controlledValue, onChange, ...deps) => {
46
- const [value, setValue] = useState2(controlledValue);
47
- useEffect3(() => {
48
- if (controlledValue !== void 0) {
49
- 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);
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
- controlledValue,
53
- ...deps
95
+ value
54
96
  ]);
55
- useEffect3(() => {
56
- 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);
57
105
  }, [
58
- value,
59
- 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
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 useEffect4, useRef } from "react";
69
- var useDebugDeps = (deps = []) => {
70
- const lastDeps = useRef([]);
71
- useEffect4(() => {
72
- console.group("deps changed", {
73
- previous: lastDeps.current.length,
74
- current: deps.length
75
- });
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 = {};
76
137
  for (let i = 0; i < Math.max(lastDeps.current.length ?? 0, deps.length ?? 0); i++) {
77
- if (lastDeps.current[i] !== deps[i]) {
78
- console.log("changed", {
79
- index: i,
138
+ if (lastDeps.current[i] !== deps[i] || i > lastDeps.current.length) {
139
+ diff[i] = {
80
140
  previous: lastDeps.current[i],
81
141
  current: deps[i]
82
- });
142
+ };
83
143
  }
84
144
  }
85
- console.groupEnd();
145
+ if (Object.keys(diff).length > 0) {
146
+ log.warn(`Updated: ${label} [${lastDeps.current.length}/${deps.length}]`, diff);
147
+ }
86
148
  lastDeps.current = deps;
87
- }, deps);
149
+ }, [
150
+ ...deps,
151
+ active
152
+ ]);
88
153
  };
89
154
 
90
155
  // src/useDefaultValue.ts
91
- import { useEffect as useEffect5, useMemo, useState as useState3 } from "react";
156
+ import { useEffect as useEffect6, useMemo as useMemo2, useState as useState5 } from "react";
92
157
  var useDefaultValue = (reactiveValue, getDefaultValue) => {
93
- const stableDefaultValue = useMemo(getDefaultValue, []);
94
- const [value, setValue] = useState3(reactiveValue ?? stableDefaultValue);
95
- useEffect5(() => {
158
+ const stableDefaultValue = useMemo2(getDefaultValue, []);
159
+ const [value, setValue] = useState5(reactiveValue ?? stableDefaultValue);
160
+ useEffect6(() => {
96
161
  setValue(reactiveValue ?? stableDefaultValue);
97
162
  }, [
98
163
  reactiveValue,
@@ -103,51 +168,18 @@ var useDefaultValue = (reactiveValue, getDefaultValue) => {
103
168
 
104
169
  // src/useDefaults.ts
105
170
  import defaultsDeep from "lodash.defaultsdeep";
106
- import { useMemo as useMemo2 } from "react";
171
+ import { useMemo as useMemo3 } from "react";
107
172
  var useDefaults = (value, defaults) => {
108
- return useMemo2(() => defaultsDeep({}, defaults, value), [
173
+ return useMemo3(() => defaultsDeep({}, defaults, value), [
109
174
  value,
110
175
  defaults
111
176
  ]);
112
177
  };
113
178
 
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 = (value$) => {
118
- const [value, setValue] = useState4(value$);
119
- const valueRef = useRef2(value$);
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
179
  // src/useFileDownload.ts
148
- import { useMemo as useMemo3 } from "react";
180
+ import { useMemo as useMemo4 } from "react";
149
181
  var useFileDownload = () => {
150
- return useMemo3(() => (data, filename) => {
182
+ return useMemo4(() => (data, filename) => {
151
183
  const url = typeof data === "string" ? data : URL.createObjectURL(data);
152
184
  const element = document.createElement("a");
153
185
  element.setAttribute("href", url);
@@ -158,38 +190,61 @@ var useFileDownload = () => {
158
190
  };
159
191
 
160
192
  // src/useForwardedRef.ts
161
- import { useEffect as useEffect7, useRef as useRef3 } from "react";
162
- var useForwardedRef = (ref) => {
163
- 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);
164
196
  useEffect7(() => {
165
- if (!ref) {
166
- return;
167
- }
168
- if (typeof ref === "function") {
169
- ref(innerRef.current);
170
- } else {
171
- 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));
172
216
  }
173
- });
174
- 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
+ ]);
175
228
  };
176
229
 
177
230
  // src/useId.ts
178
231
  import alea from "alea";
179
- import { useMemo as useMemo4 } from "react";
232
+ import { useMemo as useMemo6 } from "react";
180
233
  var Alea = alea;
181
234
  var prng = new Alea("@dxos/react-hooks");
182
235
  var randomString = (n = 4) => prng().toString(16).slice(2, n + 2);
183
- var useId = (namespace, propsId, opts) => useMemo4(() => makeId(namespace, propsId, opts), [
184
- propsId
185
- ]);
236
+ var useId = (namespace, propsId, opts) => {
237
+ return useMemo6(() => makeId(namespace, propsId, opts), [
238
+ propsId
239
+ ]);
240
+ };
186
241
  var makeId = (namespace, propsId, opts) => propsId ?? `${namespace}-${randomString(opts?.n ?? 4)}`;
187
242
 
188
243
  // src/useIsFocused.ts
189
- import { useEffect as useEffect8, useRef as useRef4, useState as useState5 } from "react";
244
+ import { useEffect as useEffect8, useRef as useRef5, useState as useState6 } from "react";
190
245
  var useIsFocused = (inputRef) => {
191
- const [isFocused, setIsFocused] = useState5(void 0);
192
- const isFocusedRef = useRef4(isFocused);
246
+ const [isFocused, setIsFocused] = useState6(void 0);
247
+ const isFocusedRef = useRef5(isFocused);
193
248
  isFocusedRef.current = isFocused;
194
249
  useEffect8(() => {
195
250
  const input = inputRef.current;
@@ -215,7 +270,7 @@ var useIsFocused = (inputRef) => {
215
270
  };
216
271
 
217
272
  // src/useMediaQuery.ts
218
- import { useEffect as useEffect9, useState as useState6 } from "react";
273
+ import { useEffect as useEffect9, useState as useState7 } from "react";
219
274
  var breakpointMediaQueries = {
220
275
  sm: "(min-width: 640px)",
221
276
  md: "(min-width: 768px)",
@@ -224,7 +279,7 @@ var breakpointMediaQueries = {
224
279
  "2xl": "(min-width: 1536px)"
225
280
  };
226
281
  var useMediaQuery = (query, options = {}) => {
227
- const { ssr = true, fallback } = options;
282
+ const { ssr = false, fallback } = options;
228
283
  const queries = (Array.isArray(query) ? query : [
229
284
  query
230
285
  ]).map((query2) => query2 in breakpointMediaQueries ? breakpointMediaQueries[query2] : query2);
@@ -232,7 +287,7 @@ var useMediaQuery = (query, options = {}) => {
232
287
  fallback
233
288
  ];
234
289
  fallbackValues = fallbackValues.filter((v) => v != null);
235
- const [value, setValue] = useState6(() => {
290
+ const [value, setValue] = useState7(() => {
236
291
  return queries.map((query2, index) => ({
237
292
  media: query2,
238
293
  matches: ssr ? !!fallbackValues[index] : document.defaultView?.matchMedia(query2).matches
@@ -280,9 +335,9 @@ var useMediaQuery = (query, options = {}) => {
280
335
  };
281
336
 
282
337
  // src/useMulticastObservable.ts
283
- import { useMemo as useMemo5, useSyncExternalStore } from "react";
338
+ import { useMemo as useMemo7, useSyncExternalStore } from "react";
284
339
  var useMulticastObservable = (observable) => {
285
- const subscribeFn = useMemo5(() => (listener) => {
340
+ const subscribeFn = useMemo7(() => (listener) => {
286
341
  const subscription = observable.subscribe(listener);
287
342
  return () => subscription.unsubscribe();
288
343
  }, [
@@ -292,28 +347,28 @@ var useMulticastObservable = (observable) => {
292
347
  };
293
348
 
294
349
  // src/useRefCallback.ts
295
- import { useState as useState7 } from "react";
350
+ import { useState as useState8 } from "react";
296
351
  var useRefCallback = () => {
297
- const [value, setValue] = useState7(null);
352
+ const [value, setValue] = useState8(null);
298
353
  return {
299
354
  refCallback: (value2) => setValue(value2),
300
355
  value
301
356
  };
302
357
  };
303
358
 
304
- // src/useResize.ts
305
- import { useLayoutEffect, useMemo as useMemo6 } from "react";
306
- var useResize = (handler, deps = [], delay = 800) => {
307
- 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(() => {
308
363
  let timeout;
309
364
  return (event) => {
310
365
  clearTimeout(timeout);
311
366
  timeout = setTimeout(() => {
312
- handler(event);
367
+ cb(event);
313
368
  }, delay);
314
369
  };
315
370
  }, [
316
- handler,
371
+ cb,
317
372
  delay
318
373
  ]);
319
374
  return useLayoutEffect(() => {
@@ -326,39 +381,16 @@ var useResize = (handler, deps = [], delay = 800) => {
326
381
  ]);
327
382
  };
328
383
 
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
384
  // src/useTimeout.ts
353
- import { useEffect as useEffect11, useRef as useRef6 } from "react";
385
+ import { useEffect as useEffect10, useRef as useRef6 } from "react";
354
386
  var useTimeout = (callback, delay = 0, deps = []) => {
355
387
  const callbackRef = useRef6(callback);
356
- useEffect11(() => {
388
+ useEffect10(() => {
357
389
  callbackRef.current = callback;
358
390
  }, [
359
391
  callback
360
392
  ]);
361
- useEffect11(() => {
393
+ useEffect10(() => {
362
394
  if (delay == null) {
363
395
  return;
364
396
  }
@@ -371,12 +403,12 @@ var useTimeout = (callback, delay = 0, deps = []) => {
371
403
  };
372
404
  var useInterval = (callback, delay = 0, deps = []) => {
373
405
  const callbackRef = useRef6(callback);
374
- useEffect11(() => {
406
+ useEffect10(() => {
375
407
  callbackRef.current = callback;
376
408
  }, [
377
409
  callback
378
410
  ]);
379
- useEffect11(() => {
411
+ useEffect10(() => {
380
412
  if (delay == null) {
381
413
  return;
382
414
  }
@@ -393,49 +425,17 @@ var useInterval = (callback, delay = 0, deps = []) => {
393
425
  ]);
394
426
  };
395
427
 
396
- // src/useTrackProps.ts
397
- import { useEffect as useEffect12, useRef as useRef7 } from "react";
398
- import { log } from "@dxos/log";
399
- var __dxlog_file = "/__w/dxos/dxos/packages/ui/primitives/react-hooks/src/useTrackProps.ts";
400
- var useTrackProps = (props, componentName = "Component", active = true) => {
401
- const prevProps = useRef7(props);
402
- useEffect12(() => {
403
- const changes = Object.entries(props).filter(([key]) => props[key] !== prevProps.current[key]);
404
- if (changes.length > 0) {
405
- if (active) {
406
- log.info("props changed", {
407
- componentName,
408
- keys: changes.map(([key]) => key).join(","),
409
- props: Object.fromEntries(changes.map(([key]) => [
410
- key,
411
- {
412
- from: prevProps.current[key],
413
- to: props[key]
414
- }
415
- ]))
416
- }, {
417
- F: __dxlog_file,
418
- L: 22,
419
- S: void 0,
420
- C: (f, a) => f(...a)
421
- });
422
- }
423
- }
424
- prevProps.current = props;
425
- });
426
- };
427
-
428
428
  // src/useTransitions.ts
429
- import { useEffect as useEffect13, useRef as useRef8, useState as useState8 } from "react";
430
- var isFunction = (functionToCheck) => {
429
+ import { useEffect as useEffect11, useRef as useRef7, useState as useState9 } from "react";
430
+ var isFunction2 = (functionToCheck) => {
431
431
  return functionToCheck instanceof Function;
432
432
  };
433
433
  var useDidTransition = (currentValue, fromValue, toValue) => {
434
- const [hasTransitioned, setHasTransitioned] = useState8(false);
435
- const previousValue = useRef8(currentValue);
436
- useEffect13(() => {
437
- const toValueValid = isFunction(toValue) ? toValue(currentValue) : toValue === currentValue;
438
- const fromValueValid = isFunction(fromValue) ? fromValue(previousValue.current) : fromValue === previousValue.current;
434
+ const [hasTransitioned, setHasTransitioned] = useState9(false);
435
+ const previousValue = useRef7(currentValue);
436
+ useEffect11(() => {
437
+ const toValueValid = isFunction2(toValue) ? toValue(currentValue) : toValue === currentValue;
438
+ const fromValueValid = isFunction2(fromValue) ? fromValue(previousValue.current) : fromValue === previousValue.current;
439
439
  if (fromValueValid && toValueValid && !hasTransitioned) {
440
440
  setHasTransitioned(true);
441
441
  } else if ((!fromValueValid || !toValueValid) && hasTransitioned) {
@@ -451,15 +451,15 @@ var useDidTransition = (currentValue, fromValue, toValue) => {
451
451
  return hasTransitioned;
452
452
  };
453
453
  var useOnTransition = (currentValue, fromValue, toValue, callback) => {
454
- const dirty = useRef8(false);
454
+ const dirty = useRef7(false);
455
455
  const hasTransitioned = useDidTransition(currentValue, fromValue, toValue);
456
- useEffect13(() => {
456
+ useEffect11(() => {
457
457
  dirty.current = false;
458
458
  }, [
459
459
  currentValue,
460
460
  dirty
461
461
  ]);
462
- useEffect13(() => {
462
+ useEffect11(() => {
463
463
  if (hasTransitioned && !dirty.current) {
464
464
  callback();
465
465
  dirty.current = true;
@@ -472,9 +472,13 @@ var useOnTransition = (currentValue, fromValue, toValue, callback) => {
472
472
  };
473
473
  export {
474
474
  makeId,
475
+ mergeRefs,
475
476
  randomString,
477
+ setRef,
476
478
  useAsyncEffect,
477
479
  useAsyncState,
480
+ useAtomState,
481
+ useComposedRefs,
478
482
  useControlledState,
479
483
  useDebugDeps,
480
484
  useDefaultValue,
@@ -487,14 +491,14 @@ export {
487
491
  useInterval,
488
492
  useIsFocused,
489
493
  useMediaQuery,
494
+ useMergeRefs,
490
495
  useMulticastObservable,
491
496
  useOnTransition,
492
497
  useRefCallback,
493
- useResize,
494
- useSignalsEffect,
495
- useSignalsMemo,
498
+ useScroller,
499
+ useSize,
496
500
  useStateWithRef,
497
501
  useTimeout,
498
- useTrackProps
502
+ useViewportResize
499
503
  };
500
504
  //# sourceMappingURL=index.mjs.map