@dxos/react-hooks 0.8.3 → 0.8.4-main.1c7ec43d41

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