@dxos/react-hooks 0.8.3 → 0.8.4-main.05e74ebcff

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