@dxos/react-hooks 0.8.4-main.1f223c7 → 0.8.4-main.2244d791bb
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.
- package/dist/lib/browser/index.mjs +149 -162
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +149 -162
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/index.d.ts +2 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/useControlledState.d.ts +2 -2
- package/dist/types/src/useControlledState.d.ts.map +1 -1
- package/dist/types/src/useDebugDeps.d.ts +1 -1
- package/dist/types/src/useDebugDeps.d.ts.map +1 -1
- package/dist/types/src/useDynamicRef.d.ts +3 -3
- package/dist/types/src/useDynamicRef.d.ts.map +1 -1
- package/dist/types/src/useForwardedRef.d.ts +23 -3
- package/dist/types/src/useForwardedRef.d.ts.map +1 -1
- package/dist/types/src/useId.d.ts.map +1 -1
- package/dist/types/src/useIsFocused.d.ts +1 -1
- package/dist/types/src/useIsFocused.d.ts.map +1 -1
- package/dist/types/src/useMediaQuery.d.ts +1 -1
- package/dist/types/src/useMediaQuery.d.ts.map +1 -1
- package/dist/types/src/useMulticastObservable.test.d.ts.map +1 -1
- package/dist/types/src/useTransitions.d.ts +2 -1
- package/dist/types/src/useTransitions.d.ts.map +1 -1
- package/dist/types/src/useViewportResize.d.ts +3 -0
- package/dist/types/src/useViewportResize.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -11
- package/src/index.ts +3 -3
- package/src/useControlledState.ts +22 -12
- package/src/useDebugDeps.ts +17 -8
- package/src/useDynamicRef.ts +5 -6
- package/src/useForwardedRef.ts +48 -13
- package/src/useId.ts +3 -2
- package/src/useIsFocused.ts +1 -1
- package/src/useMediaQuery.ts +8 -9
- package/src/{useMulticastObservable.test.tsx → useMulticastObservable.test.ts} +1 -3
- package/src/useTransitions.ts +3 -1
- package/src/{useResize.ts → useViewportResize.ts} +4 -4
- package/dist/types/src/useAsyncEffect.stories.d.ts +0 -9
- package/dist/types/src/useAsyncEffect.stories.d.ts.map +0 -1
- package/dist/types/src/useResize.d.ts +0 -3
- package/dist/types/src/useResize.d.ts.map +0 -1
- package/dist/types/src/useSignals.d.ts +0 -10
- package/dist/types/src/useSignals.d.ts.map +0 -1
- package/dist/types/src/useTrackProps.d.ts +0 -5
- package/dist/types/src/useTrackProps.d.ts.map +0 -1
- package/src/useAsyncEffect.stories.tsx +0 -34
- package/src/useSignals.ts +0 -27
- package/src/useTrackProps.ts +0 -40
|
@@ -41,58 +41,107 @@ var useAsyncState = (cb, deps = []) => {
|
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
// src/useControlledState.ts
|
|
44
|
-
import { useEffect as
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
import { useCallback as useCallback2, useEffect as useEffect4, useRef as useRef2, useState as useState3 } from "react";
|
|
45
|
+
|
|
46
|
+
// src/useDynamicRef.ts
|
|
47
|
+
import { useCallback, useEffect as useEffect3, useRef, useState as useState2 } from "react";
|
|
48
|
+
var useStateWithRef = (valueProp) => {
|
|
49
|
+
const [value, setValue] = useState2(valueProp);
|
|
50
|
+
const valueRef = useRef(valueProp);
|
|
51
|
+
const setter = useCallback((value2) => {
|
|
52
|
+
if (typeof value2 === "function") {
|
|
53
|
+
setValue((current) => {
|
|
54
|
+
valueRef.current = value2(current);
|
|
55
|
+
return valueRef.current;
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
valueRef.current = value2;
|
|
59
|
+
setValue(value2);
|
|
50
60
|
}
|
|
61
|
+
}, []);
|
|
62
|
+
return [
|
|
63
|
+
value,
|
|
64
|
+
setter,
|
|
65
|
+
valueRef
|
|
66
|
+
];
|
|
67
|
+
};
|
|
68
|
+
var useDynamicRef = (value) => {
|
|
69
|
+
const valueRef = useRef(value);
|
|
70
|
+
useEffect3(() => {
|
|
71
|
+
valueRef.current = value;
|
|
51
72
|
}, [
|
|
52
|
-
|
|
53
|
-
...deps
|
|
73
|
+
value
|
|
54
74
|
]);
|
|
55
|
-
|
|
56
|
-
|
|
75
|
+
return valueRef;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// src/useControlledState.ts
|
|
79
|
+
var useControlledState = (valueProp, onChange) => {
|
|
80
|
+
const [value, setControlledValue] = useState3(valueProp);
|
|
81
|
+
useEffect4(() => {
|
|
82
|
+
setControlledValue(valueProp);
|
|
57
83
|
}, [
|
|
58
|
-
|
|
59
|
-
|
|
84
|
+
valueProp
|
|
85
|
+
]);
|
|
86
|
+
const onChangeRef = useRef2(onChange);
|
|
87
|
+
const valueRef = useDynamicRef(valueProp);
|
|
88
|
+
const setValue = useCallback2((nextValue) => {
|
|
89
|
+
const value2 = isFunction(nextValue) ? nextValue(valueRef.current) : nextValue;
|
|
90
|
+
setControlledValue(value2);
|
|
91
|
+
onChangeRef.current?.(value2);
|
|
92
|
+
}, [
|
|
93
|
+
valueRef,
|
|
94
|
+
onChangeRef
|
|
60
95
|
]);
|
|
61
96
|
return [
|
|
62
97
|
value,
|
|
63
98
|
setValue
|
|
64
99
|
];
|
|
65
100
|
};
|
|
101
|
+
function isFunction(value) {
|
|
102
|
+
return typeof value === "function";
|
|
103
|
+
}
|
|
66
104
|
|
|
67
105
|
// src/useDebugDeps.ts
|
|
68
|
-
import { useEffect as
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
106
|
+
import { useEffect as useEffect5, useRef as useRef3 } from "react";
|
|
107
|
+
import { log } from "@dxos/log";
|
|
108
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-primitives/react-hooks/src/useDebugDeps.ts";
|
|
109
|
+
var useDebugDeps = (deps = [], label = "useDebugDeps", active = true) => {
|
|
110
|
+
const lastDeps = useRef3([]);
|
|
111
|
+
useEffect5(() => {
|
|
112
|
+
if (!active) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const diff = {};
|
|
76
116
|
for (let i = 0; i < Math.max(lastDeps.current.length ?? 0, deps.length ?? 0); i++) {
|
|
77
|
-
if (lastDeps.current[i] !== deps[i]) {
|
|
78
|
-
|
|
79
|
-
index: i,
|
|
117
|
+
if (lastDeps.current[i] !== deps[i] || i > lastDeps.current.length) {
|
|
118
|
+
diff[i] = {
|
|
80
119
|
previous: lastDeps.current[i],
|
|
81
120
|
current: deps[i]
|
|
82
|
-
}
|
|
121
|
+
};
|
|
83
122
|
}
|
|
84
123
|
}
|
|
85
|
-
|
|
124
|
+
if (Object.keys(diff).length > 0) {
|
|
125
|
+
log.warn(`Updated: ${label} [${lastDeps.current.length}/${deps.length}]`, diff, {
|
|
126
|
+
F: __dxlog_file,
|
|
127
|
+
L: 30,
|
|
128
|
+
S: void 0,
|
|
129
|
+
C: (f, a) => f(...a)
|
|
130
|
+
});
|
|
131
|
+
}
|
|
86
132
|
lastDeps.current = deps;
|
|
87
|
-
},
|
|
133
|
+
}, [
|
|
134
|
+
...deps,
|
|
135
|
+
active
|
|
136
|
+
]);
|
|
88
137
|
};
|
|
89
138
|
|
|
90
139
|
// src/useDefaultValue.ts
|
|
91
|
-
import { useEffect as
|
|
140
|
+
import { useEffect as useEffect6, useMemo, useState as useState4 } from "react";
|
|
92
141
|
var useDefaultValue = (reactiveValue, getDefaultValue) => {
|
|
93
142
|
const stableDefaultValue = useMemo(getDefaultValue, []);
|
|
94
|
-
const [value, setValue] =
|
|
95
|
-
|
|
143
|
+
const [value, setValue] = useState4(reactiveValue ?? stableDefaultValue);
|
|
144
|
+
useEffect6(() => {
|
|
96
145
|
setValue(reactiveValue ?? stableDefaultValue);
|
|
97
146
|
}, [
|
|
98
147
|
reactiveValue,
|
|
@@ -111,39 +160,6 @@ var useDefaults = (value, defaults) => {
|
|
|
111
160
|
]);
|
|
112
161
|
};
|
|
113
162
|
|
|
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
163
|
// src/useFileDownload.ts
|
|
148
164
|
import { useMemo as useMemo3 } from "react";
|
|
149
165
|
var useFileDownload = () => {
|
|
@@ -158,38 +174,59 @@ var useFileDownload = () => {
|
|
|
158
174
|
};
|
|
159
175
|
|
|
160
176
|
// src/useForwardedRef.ts
|
|
161
|
-
import { useEffect as useEffect7, useRef as
|
|
162
|
-
var useForwardedRef = (
|
|
163
|
-
const
|
|
177
|
+
import { useEffect as useEffect7, useMemo as useMemo4, useRef as useRef4 } from "react";
|
|
178
|
+
var useForwardedRef = (forwardedRef) => {
|
|
179
|
+
const localRef = useRef4(null);
|
|
164
180
|
useEffect7(() => {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
181
|
+
setRef(forwardedRef, localRef.current);
|
|
182
|
+
}, [
|
|
183
|
+
forwardedRef
|
|
184
|
+
]);
|
|
185
|
+
return localRef;
|
|
186
|
+
};
|
|
187
|
+
function setRef(ref, value) {
|
|
188
|
+
if (typeof ref === "function") {
|
|
189
|
+
return ref(value);
|
|
190
|
+
} else if (ref) {
|
|
191
|
+
ref.current = value;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
var mergeRefs = (refs) => {
|
|
195
|
+
return (value) => {
|
|
196
|
+
const cleanups = [];
|
|
197
|
+
for (const ref of refs) {
|
|
198
|
+
const cleanup = setRef(ref, value);
|
|
199
|
+
cleanups.push(typeof cleanup === "function" ? cleanup : () => setRef(ref, null));
|
|
172
200
|
}
|
|
173
|
-
|
|
174
|
-
|
|
201
|
+
return () => {
|
|
202
|
+
for (const cleanup of cleanups) cleanup();
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
var useMergeRefs = (refs) => {
|
|
207
|
+
return useMemo4(() => mergeRefs(refs), [
|
|
208
|
+
...refs
|
|
209
|
+
]);
|
|
175
210
|
};
|
|
176
211
|
|
|
177
212
|
// src/useId.ts
|
|
178
213
|
import alea from "alea";
|
|
179
|
-
import { useMemo as
|
|
214
|
+
import { useMemo as useMemo5 } from "react";
|
|
180
215
|
var Alea = alea;
|
|
181
216
|
var prng = new Alea("@dxos/react-hooks");
|
|
182
217
|
var randomString = (n = 4) => prng().toString(16).slice(2, n + 2);
|
|
183
|
-
var useId = (namespace, propsId, opts) =>
|
|
184
|
-
propsId
|
|
185
|
-
|
|
218
|
+
var useId = (namespace, propsId, opts) => {
|
|
219
|
+
return useMemo5(() => makeId(namespace, propsId, opts), [
|
|
220
|
+
propsId
|
|
221
|
+
]);
|
|
222
|
+
};
|
|
186
223
|
var makeId = (namespace, propsId, opts) => propsId ?? `${namespace}-${randomString(opts?.n ?? 4)}`;
|
|
187
224
|
|
|
188
225
|
// src/useIsFocused.ts
|
|
189
|
-
import { useEffect as useEffect8, useRef as
|
|
226
|
+
import { useEffect as useEffect8, useRef as useRef5, useState as useState5 } from "react";
|
|
190
227
|
var useIsFocused = (inputRef) => {
|
|
191
228
|
const [isFocused, setIsFocused] = useState5(void 0);
|
|
192
|
-
const isFocusedRef =
|
|
229
|
+
const isFocusedRef = useRef5(isFocused);
|
|
193
230
|
isFocusedRef.current = isFocused;
|
|
194
231
|
useEffect8(() => {
|
|
195
232
|
const input = inputRef.current;
|
|
@@ -224,7 +261,7 @@ var breakpointMediaQueries = {
|
|
|
224
261
|
"2xl": "(min-width: 1536px)"
|
|
225
262
|
};
|
|
226
263
|
var useMediaQuery = (query, options = {}) => {
|
|
227
|
-
const { ssr =
|
|
264
|
+
const { ssr = false, fallback } = options;
|
|
228
265
|
const queries = (Array.isArray(query) ? query : [
|
|
229
266
|
query
|
|
230
267
|
]).map((query2) => query2 in breakpointMediaQueries ? breakpointMediaQueries[query2] : query2);
|
|
@@ -280,9 +317,9 @@ var useMediaQuery = (query, options = {}) => {
|
|
|
280
317
|
};
|
|
281
318
|
|
|
282
319
|
// src/useMulticastObservable.ts
|
|
283
|
-
import { useMemo as
|
|
320
|
+
import { useMemo as useMemo6, useSyncExternalStore } from "react";
|
|
284
321
|
var useMulticastObservable = (observable) => {
|
|
285
|
-
const subscribeFn =
|
|
322
|
+
const subscribeFn = useMemo6(() => (listener) => {
|
|
286
323
|
const subscription = observable.subscribe(listener);
|
|
287
324
|
return () => subscription.unsubscribe();
|
|
288
325
|
}, [
|
|
@@ -301,19 +338,19 @@ var useRefCallback = () => {
|
|
|
301
338
|
};
|
|
302
339
|
};
|
|
303
340
|
|
|
304
|
-
// src/
|
|
305
|
-
import { useLayoutEffect, useMemo as
|
|
306
|
-
var
|
|
307
|
-
const debouncedHandler =
|
|
341
|
+
// src/useViewportResize.ts
|
|
342
|
+
import { useLayoutEffect, useMemo as useMemo7 } from "react";
|
|
343
|
+
var useViewportResize = (cb, deps = [], delay = 800) => {
|
|
344
|
+
const debouncedHandler = useMemo7(() => {
|
|
308
345
|
let timeout;
|
|
309
346
|
return (event) => {
|
|
310
347
|
clearTimeout(timeout);
|
|
311
348
|
timeout = setTimeout(() => {
|
|
312
|
-
|
|
349
|
+
cb(event);
|
|
313
350
|
}, delay);
|
|
314
351
|
};
|
|
315
352
|
}, [
|
|
316
|
-
|
|
353
|
+
cb,
|
|
317
354
|
delay
|
|
318
355
|
]);
|
|
319
356
|
return useLayoutEffect(() => {
|
|
@@ -326,39 +363,16 @@ var useResize = (handler, deps = [], delay = 800) => {
|
|
|
326
363
|
]);
|
|
327
364
|
};
|
|
328
365
|
|
|
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
366
|
// src/useTimeout.ts
|
|
353
|
-
import { useEffect as
|
|
367
|
+
import { useEffect as useEffect10, useRef as useRef6 } from "react";
|
|
354
368
|
var useTimeout = (callback, delay = 0, deps = []) => {
|
|
355
369
|
const callbackRef = useRef6(callback);
|
|
356
|
-
|
|
370
|
+
useEffect10(() => {
|
|
357
371
|
callbackRef.current = callback;
|
|
358
372
|
}, [
|
|
359
373
|
callback
|
|
360
374
|
]);
|
|
361
|
-
|
|
375
|
+
useEffect10(() => {
|
|
362
376
|
if (delay == null) {
|
|
363
377
|
return;
|
|
364
378
|
}
|
|
@@ -371,12 +385,12 @@ var useTimeout = (callback, delay = 0, deps = []) => {
|
|
|
371
385
|
};
|
|
372
386
|
var useInterval = (callback, delay = 0, deps = []) => {
|
|
373
387
|
const callbackRef = useRef6(callback);
|
|
374
|
-
|
|
388
|
+
useEffect10(() => {
|
|
375
389
|
callbackRef.current = callback;
|
|
376
390
|
}, [
|
|
377
391
|
callback
|
|
378
392
|
]);
|
|
379
|
-
|
|
393
|
+
useEffect10(() => {
|
|
380
394
|
if (delay == null) {
|
|
381
395
|
return;
|
|
382
396
|
}
|
|
@@ -393,49 +407,17 @@ var useInterval = (callback, delay = 0, deps = []) => {
|
|
|
393
407
|
]);
|
|
394
408
|
};
|
|
395
409
|
|
|
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
410
|
// src/useTransitions.ts
|
|
429
|
-
import { useEffect as
|
|
430
|
-
var
|
|
411
|
+
import { useEffect as useEffect11, useRef as useRef7, useState as useState8 } from "react";
|
|
412
|
+
var isFunction2 = (functionToCheck) => {
|
|
431
413
|
return functionToCheck instanceof Function;
|
|
432
414
|
};
|
|
433
415
|
var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
434
416
|
const [hasTransitioned, setHasTransitioned] = useState8(false);
|
|
435
|
-
const previousValue =
|
|
436
|
-
|
|
437
|
-
const toValueValid =
|
|
438
|
-
const fromValueValid =
|
|
417
|
+
const previousValue = useRef7(currentValue);
|
|
418
|
+
useEffect11(() => {
|
|
419
|
+
const toValueValid = isFunction2(toValue) ? toValue(currentValue) : toValue === currentValue;
|
|
420
|
+
const fromValueValid = isFunction2(fromValue) ? fromValue(previousValue.current) : fromValue === previousValue.current;
|
|
439
421
|
if (fromValueValid && toValueValid && !hasTransitioned) {
|
|
440
422
|
setHasTransitioned(true);
|
|
441
423
|
} else if ((!fromValueValid || !toValueValid) && hasTransitioned) {
|
|
@@ -451,15 +433,15 @@ var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
|
451
433
|
return hasTransitioned;
|
|
452
434
|
};
|
|
453
435
|
var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
454
|
-
const dirty =
|
|
436
|
+
const dirty = useRef7(false);
|
|
455
437
|
const hasTransitioned = useDidTransition(currentValue, fromValue, toValue);
|
|
456
|
-
|
|
438
|
+
useEffect11(() => {
|
|
457
439
|
dirty.current = false;
|
|
458
440
|
}, [
|
|
459
441
|
currentValue,
|
|
460
442
|
dirty
|
|
461
443
|
]);
|
|
462
|
-
|
|
444
|
+
useEffect11(() => {
|
|
463
445
|
if (hasTransitioned && !dirty.current) {
|
|
464
446
|
callback();
|
|
465
447
|
dirty.current = true;
|
|
@@ -470,9 +452,14 @@ var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
|
470
452
|
callback
|
|
471
453
|
]);
|
|
472
454
|
};
|
|
455
|
+
|
|
456
|
+
// src/index.ts
|
|
457
|
+
import { useSize, useScroller } from "mini-virtual-list";
|
|
473
458
|
export {
|
|
474
459
|
makeId,
|
|
460
|
+
mergeRefs,
|
|
475
461
|
randomString,
|
|
462
|
+
setRef,
|
|
476
463
|
useAsyncEffect,
|
|
477
464
|
useAsyncState,
|
|
478
465
|
useControlledState,
|
|
@@ -487,14 +474,14 @@ export {
|
|
|
487
474
|
useInterval,
|
|
488
475
|
useIsFocused,
|
|
489
476
|
useMediaQuery,
|
|
477
|
+
useMergeRefs,
|
|
490
478
|
useMulticastObservable,
|
|
491
479
|
useOnTransition,
|
|
492
480
|
useRefCallback,
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
useSignalsMemo,
|
|
481
|
+
useScroller,
|
|
482
|
+
useSize,
|
|
496
483
|
useStateWithRef,
|
|
497
484
|
useTimeout,
|
|
498
|
-
|
|
485
|
+
useViewportResize
|
|
499
486
|
};
|
|
500
487
|
//# sourceMappingURL=index.mjs.map
|