@dxos/react-hooks 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d
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 +120 -124
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +120 -124
- 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 -2
- 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/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/useSignals.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 +11 -9
- package/src/index.ts +3 -2
- package/src/useControlledState.ts +22 -12
- package/src/useDebugDeps.ts +2 -2
- package/src/useDynamicRef.ts +5 -6
- package/src/useForwardedRef.ts +48 -13
- package/src/useIsFocused.ts +1 -1
- package/src/useMediaQuery.ts +8 -9
- package/src/{useMulticastObservable.test.tsx → useMulticastObservable.test.ts} +1 -3
- package/src/useSignals.ts +1 -2
- package/src/useTransitions.ts +3 -1
- package/src/{useResize.ts → useViewportResize.ts} +1 -1
- 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/useTrackProps.d.ts +0 -5
- package/dist/types/src/useTrackProps.d.ts.map +0 -1
- package/src/useAsyncEffect.stories.tsx +0 -34
- package/src/useTrackProps.ts +0 -40
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/useAsyncEffect.ts":{"bytes":2988,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useAsyncState.ts":{"bytes":2577,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/
|
|
1
|
+
{"inputs":{"src/useAsyncEffect.ts":{"bytes":2988,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useAsyncState.ts":{"bytes":2577,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useDynamicRef.ts":{"bytes":3589,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useControlledState.ts":{"bytes":3865,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/useDynamicRef.ts","kind":"import-statement","original":"./useDynamicRef"}],"format":"esm"},"src/useDebugDeps.ts":{"bytes":3142,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useDefaultValue.ts":{"bytes":4033,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useDefaults.ts":{"bytes":1591,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useFileDownload.ts":{"bytes":2671,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useForwardedRef.ts":{"bytes":6067,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useId.ts":{"bytes":2466,"imports":[{"path":"alea","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useIsFocused.ts":{"bytes":3921,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useMediaQuery.ts":{"bytes":9256,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useMulticastObservable.ts":{"bytes":2972,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useRefCallback.ts":{"bytes":1818,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useViewportResize.ts":{"bytes":2878,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useSignals.ts":{"bytes":2776,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useTimeout.ts":{"bytes":3956,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/useTransitions.ts":{"bytes":7863,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":2454,"imports":[{"path":"src/useAsyncEffect.ts","kind":"import-statement","original":"./useAsyncEffect"},{"path":"src/useAsyncState.ts","kind":"import-statement","original":"./useAsyncState"},{"path":"src/useControlledState.ts","kind":"import-statement","original":"./useControlledState"},{"path":"src/useDebugDeps.ts","kind":"import-statement","original":"./useDebugDeps"},{"path":"src/useDefaultValue.ts","kind":"import-statement","original":"./useDefaultValue"},{"path":"src/useDefaults.ts","kind":"import-statement","original":"./useDefaults"},{"path":"src/useDynamicRef.ts","kind":"import-statement","original":"./useDynamicRef"},{"path":"src/useFileDownload.ts","kind":"import-statement","original":"./useFileDownload"},{"path":"src/useForwardedRef.ts","kind":"import-statement","original":"./useForwardedRef"},{"path":"src/useId.ts","kind":"import-statement","original":"./useId"},{"path":"src/useIsFocused.ts","kind":"import-statement","original":"./useIsFocused"},{"path":"src/useMediaQuery.ts","kind":"import-statement","original":"./useMediaQuery"},{"path":"src/useMulticastObservable.ts","kind":"import-statement","original":"./useMulticastObservable"},{"path":"src/useRefCallback.ts","kind":"import-statement","original":"./useRefCallback"},{"path":"src/useViewportResize.ts","kind":"import-statement","original":"./useViewportResize"},{"path":"src/useSignals.ts","kind":"import-statement","original":"./useSignals"},{"path":"src/useTimeout.ts","kind":"import-statement","original":"./useTimeout"},{"path":"src/useTransitions.ts","kind":"import-statement","original":"./useTransitions"},{"path":"mini-virtual-list","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":34987},"dist/lib/browser/index.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"alea","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"mini-virtual-list","kind":"import-statement","external":true}],"exports":["makeId","mergeRefs","randomString","setRef","useAsyncEffect","useAsyncState","useControlledState","useDebugDeps","useDefaultValue","useDefaults","useDidTransition","useDynamicRef","useFileDownload","useForwardedRef","useId","useInterval","useIsFocused","useMediaQuery","useMergeRefs","useMulticastObservable","useOnTransition","useRefCallback","useScroller","useSignalsEffect","useSignalsMemo","useSize","useStateWithRef","useTimeout","useViewportResize"],"entryPoint":"src/index.ts","inputs":{"src/useAsyncEffect.ts":{"bytesInOutput":405},"src/index.ts":{"bytesInOutput":58},"src/useAsyncState.ts":{"bytesInOutput":447},"src/useControlledState.ts":{"bytesInOutput":761},"src/useDynamicRef.ts":{"bytesInOutput":727},"src/useDebugDeps.ts":{"bytesInOutput":643},"src/useDefaultValue.ts":{"bytesInOutput":422},"src/useDefaults.ts":{"bytesInOutput":228},"src/useFileDownload.ts":{"bytesInOutput":416},"src/useForwardedRef.ts":{"bytesInOutput":827},"src/useId.ts":{"bytesInOutput":403},"src/useIsFocused.ts":{"bytesInOutput":833},"src/useMediaQuery.ts":{"bytesInOutput":1941},"src/useMulticastObservable.ts":{"bytesInOutput":368},"src/useRefCallback.ts":{"bytesInOutput":197},"src/useViewportResize.ts":{"bytesInOutput":627},"src/useSignals.ts":{"bytesInOutput":613},"src/useTimeout.ts":{"bytesInOutput":946},"src/useTransitions.ts":{"bytesInOutput":1409}},"bytes":13307}}}
|
|
@@ -43,40 +43,78 @@ var useAsyncState = (cb, deps = []) => {
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
// src/useControlledState.ts
|
|
46
|
-
import { useEffect as
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
import { useCallback as useCallback2, useEffect as useEffect4, useRef as useRef2, useState as useState3 } from "react";
|
|
47
|
+
|
|
48
|
+
// src/useDynamicRef.ts
|
|
49
|
+
import { useCallback, useEffect as useEffect3, useRef, useState as useState2 } from "react";
|
|
50
|
+
var useStateWithRef = (valueParam) => {
|
|
51
|
+
const [value, setValue] = useState2(valueParam);
|
|
52
|
+
const valueRef = useRef(valueParam);
|
|
53
|
+
const setter = useCallback((value2) => {
|
|
54
|
+
if (typeof value2 === "function") {
|
|
55
|
+
setValue((current) => {
|
|
56
|
+
valueRef.current = value2(current);
|
|
57
|
+
return valueRef.current;
|
|
58
|
+
});
|
|
59
|
+
} else {
|
|
60
|
+
valueRef.current = value2;
|
|
61
|
+
setValue(value2);
|
|
52
62
|
}
|
|
63
|
+
}, []);
|
|
64
|
+
return [
|
|
65
|
+
value,
|
|
66
|
+
setter,
|
|
67
|
+
valueRef
|
|
68
|
+
];
|
|
69
|
+
};
|
|
70
|
+
var useDynamicRef = (value) => {
|
|
71
|
+
const valueRef = useRef(value);
|
|
72
|
+
useEffect3(() => {
|
|
73
|
+
valueRef.current = value;
|
|
53
74
|
}, [
|
|
54
|
-
|
|
55
|
-
...deps
|
|
75
|
+
value
|
|
56
76
|
]);
|
|
57
|
-
|
|
58
|
-
|
|
77
|
+
return valueRef;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/useControlledState.ts
|
|
81
|
+
var useControlledState = (valueParam, onChange) => {
|
|
82
|
+
const [value, setControlledValue] = useState3(valueParam);
|
|
83
|
+
useEffect4(() => {
|
|
84
|
+
setControlledValue(valueParam);
|
|
59
85
|
}, [
|
|
60
|
-
|
|
61
|
-
|
|
86
|
+
valueParam
|
|
87
|
+
]);
|
|
88
|
+
const onChangeRef = useRef2(onChange);
|
|
89
|
+
const valueRef = useDynamicRef(valueParam);
|
|
90
|
+
const setValue = useCallback2((nextValue) => {
|
|
91
|
+
const value2 = isFunction(nextValue) ? nextValue(valueRef.current) : nextValue;
|
|
92
|
+
setControlledValue(value2);
|
|
93
|
+
onChangeRef.current?.(value2);
|
|
94
|
+
}, [
|
|
95
|
+
valueRef,
|
|
96
|
+
onChangeRef
|
|
62
97
|
]);
|
|
63
98
|
return [
|
|
64
99
|
value,
|
|
65
100
|
setValue
|
|
66
101
|
];
|
|
67
102
|
};
|
|
103
|
+
function isFunction(value) {
|
|
104
|
+
return typeof value === "function";
|
|
105
|
+
}
|
|
68
106
|
|
|
69
107
|
// src/useDebugDeps.ts
|
|
70
|
-
import { useEffect as
|
|
71
|
-
var useDebugDeps = (deps = []) => {
|
|
72
|
-
const lastDeps =
|
|
73
|
-
|
|
108
|
+
import { useEffect as useEffect5, useRef as useRef3 } from "react";
|
|
109
|
+
var useDebugDeps = (deps = [], active = true) => {
|
|
110
|
+
const lastDeps = useRef3([]);
|
|
111
|
+
useEffect5(() => {
|
|
74
112
|
console.group("deps changed", {
|
|
75
113
|
previous: lastDeps.current.length,
|
|
76
114
|
current: deps.length
|
|
77
115
|
});
|
|
78
116
|
for (let i = 0; i < Math.max(lastDeps.current.length ?? 0, deps.length ?? 0); i++) {
|
|
79
|
-
if (lastDeps.current[i] !== deps[i]) {
|
|
117
|
+
if (lastDeps.current[i] !== deps[i] && active) {
|
|
80
118
|
console.log("changed", {
|
|
81
119
|
index: i,
|
|
82
120
|
previous: lastDeps.current[i],
|
|
@@ -90,11 +128,11 @@ var useDebugDeps = (deps = []) => {
|
|
|
90
128
|
};
|
|
91
129
|
|
|
92
130
|
// src/useDefaultValue.ts
|
|
93
|
-
import { useEffect as
|
|
131
|
+
import { useEffect as useEffect6, useMemo, useState as useState4 } from "react";
|
|
94
132
|
var useDefaultValue = (reactiveValue, getDefaultValue) => {
|
|
95
133
|
const stableDefaultValue = useMemo(getDefaultValue, []);
|
|
96
|
-
const [value, setValue] =
|
|
97
|
-
|
|
134
|
+
const [value, setValue] = useState4(reactiveValue ?? stableDefaultValue);
|
|
135
|
+
useEffect6(() => {
|
|
98
136
|
setValue(reactiveValue ?? stableDefaultValue);
|
|
99
137
|
}, [
|
|
100
138
|
reactiveValue,
|
|
@@ -113,39 +151,6 @@ var useDefaults = (value, defaults) => {
|
|
|
113
151
|
]);
|
|
114
152
|
};
|
|
115
153
|
|
|
116
|
-
// src/useDynamicRef.ts
|
|
117
|
-
import { useCallback } from "@preact-signals/safe-react/react";
|
|
118
|
-
import { useEffect as useEffect6, useRef as useRef2, useState as useState4 } from "react";
|
|
119
|
-
var useStateWithRef = (value$) => {
|
|
120
|
-
const [value, setValue] = useState4(value$);
|
|
121
|
-
const valueRef = useRef2(value$);
|
|
122
|
-
const setter = useCallback((value2) => {
|
|
123
|
-
if (typeof value2 === "function") {
|
|
124
|
-
setValue((current) => {
|
|
125
|
-
valueRef.current = value2(current);
|
|
126
|
-
return valueRef.current;
|
|
127
|
-
});
|
|
128
|
-
} else {
|
|
129
|
-
valueRef.current = value2;
|
|
130
|
-
setValue(value2);
|
|
131
|
-
}
|
|
132
|
-
}, []);
|
|
133
|
-
return [
|
|
134
|
-
value,
|
|
135
|
-
setter,
|
|
136
|
-
valueRef
|
|
137
|
-
];
|
|
138
|
-
};
|
|
139
|
-
var useDynamicRef = (value) => {
|
|
140
|
-
const valueRef = useRef2(value);
|
|
141
|
-
useEffect6(() => {
|
|
142
|
-
valueRef.current = value;
|
|
143
|
-
}, [
|
|
144
|
-
value
|
|
145
|
-
]);
|
|
146
|
-
return valueRef;
|
|
147
|
-
};
|
|
148
|
-
|
|
149
154
|
// src/useFileDownload.ts
|
|
150
155
|
import { useMemo as useMemo3 } from "react";
|
|
151
156
|
var useFileDownload = () => {
|
|
@@ -160,38 +165,55 @@ var useFileDownload = () => {
|
|
|
160
165
|
};
|
|
161
166
|
|
|
162
167
|
// src/useForwardedRef.ts
|
|
163
|
-
import { useEffect as useEffect7, useRef as
|
|
164
|
-
var useForwardedRef = (
|
|
165
|
-
const
|
|
168
|
+
import { useEffect as useEffect7, useMemo as useMemo4, useRef as useRef4 } from "react";
|
|
169
|
+
var useForwardedRef = (forwardedRef) => {
|
|
170
|
+
const localRef = useRef4(null);
|
|
166
171
|
useEffect7(() => {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
setRef(forwardedRef, localRef.current);
|
|
173
|
+
}, [
|
|
174
|
+
forwardedRef
|
|
175
|
+
]);
|
|
176
|
+
return localRef;
|
|
177
|
+
};
|
|
178
|
+
function setRef(ref, value) {
|
|
179
|
+
if (typeof ref === "function") {
|
|
180
|
+
return ref(value);
|
|
181
|
+
} else if (ref) {
|
|
182
|
+
ref.current = value;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
var mergeRefs = (refs) => {
|
|
186
|
+
return (value) => {
|
|
187
|
+
const cleanups = [];
|
|
188
|
+
for (const ref of refs) {
|
|
189
|
+
const cleanup = setRef(ref, value);
|
|
190
|
+
cleanups.push(typeof cleanup === "function" ? cleanup : () => setRef(ref, null));
|
|
174
191
|
}
|
|
175
|
-
|
|
176
|
-
|
|
192
|
+
return () => {
|
|
193
|
+
for (const cleanup of cleanups) cleanup();
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
var useMergeRefs = (refs) => {
|
|
198
|
+
return useMemo4(() => mergeRefs(refs), refs);
|
|
177
199
|
};
|
|
178
200
|
|
|
179
201
|
// src/useId.ts
|
|
180
202
|
import alea from "alea";
|
|
181
|
-
import { useMemo as
|
|
203
|
+
import { useMemo as useMemo5 } from "react";
|
|
182
204
|
var Alea = alea;
|
|
183
205
|
var prng = new Alea("@dxos/react-hooks");
|
|
184
206
|
var randomString = (n = 4) => prng().toString(16).slice(2, n + 2);
|
|
185
|
-
var useId = (namespace, propsId, opts) =>
|
|
207
|
+
var useId = (namespace, propsId, opts) => useMemo5(() => makeId(namespace, propsId, opts), [
|
|
186
208
|
propsId
|
|
187
209
|
]);
|
|
188
210
|
var makeId = (namespace, propsId, opts) => propsId ?? `${namespace}-${randomString(opts?.n ?? 4)}`;
|
|
189
211
|
|
|
190
212
|
// src/useIsFocused.ts
|
|
191
|
-
import { useEffect as useEffect8, useRef as
|
|
213
|
+
import { useEffect as useEffect8, useRef as useRef5, useState as useState5 } from "react";
|
|
192
214
|
var useIsFocused = (inputRef) => {
|
|
193
215
|
const [isFocused, setIsFocused] = useState5(void 0);
|
|
194
|
-
const isFocusedRef =
|
|
216
|
+
const isFocusedRef = useRef5(isFocused);
|
|
195
217
|
isFocusedRef.current = isFocused;
|
|
196
218
|
useEffect8(() => {
|
|
197
219
|
const input = inputRef.current;
|
|
@@ -226,7 +248,7 @@ var breakpointMediaQueries = {
|
|
|
226
248
|
"2xl": "(min-width: 1536px)"
|
|
227
249
|
};
|
|
228
250
|
var useMediaQuery = (query, options = {}) => {
|
|
229
|
-
const { ssr =
|
|
251
|
+
const { ssr = false, fallback } = options;
|
|
230
252
|
const queries = (Array.isArray(query) ? query : [
|
|
231
253
|
query
|
|
232
254
|
]).map((query2) => query2 in breakpointMediaQueries ? breakpointMediaQueries[query2] : query2);
|
|
@@ -282,9 +304,9 @@ var useMediaQuery = (query, options = {}) => {
|
|
|
282
304
|
};
|
|
283
305
|
|
|
284
306
|
// src/useMulticastObservable.ts
|
|
285
|
-
import { useMemo as
|
|
307
|
+
import { useMemo as useMemo6, useSyncExternalStore } from "react";
|
|
286
308
|
var useMulticastObservable = (observable) => {
|
|
287
|
-
const subscribeFn =
|
|
309
|
+
const subscribeFn = useMemo6(() => (listener) => {
|
|
288
310
|
const subscription = observable.subscribe(listener);
|
|
289
311
|
return () => subscription.unsubscribe();
|
|
290
312
|
}, [
|
|
@@ -303,10 +325,10 @@ var useRefCallback = () => {
|
|
|
303
325
|
};
|
|
304
326
|
};
|
|
305
327
|
|
|
306
|
-
// src/
|
|
307
|
-
import { useLayoutEffect, useMemo as
|
|
308
|
-
var
|
|
309
|
-
const debouncedHandler =
|
|
328
|
+
// src/useViewportResize.ts
|
|
329
|
+
import { useLayoutEffect, useMemo as useMemo7 } from "react";
|
|
330
|
+
var useViewportResize = (handler, deps = [], delay = 800) => {
|
|
331
|
+
const debouncedHandler = useMemo7(() => {
|
|
310
332
|
let timeout;
|
|
311
333
|
return (event) => {
|
|
312
334
|
clearTimeout(timeout);
|
|
@@ -331,10 +353,9 @@ var useResize = (handler, deps = [], delay = 800) => {
|
|
|
331
353
|
// src/useSignals.ts
|
|
332
354
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
333
355
|
import { computed, effect } from "@preact-signals/safe-react";
|
|
334
|
-
import { useRef as
|
|
335
|
-
import { useEffect as useEffect10, useMemo as useMemo7 } from "react";
|
|
356
|
+
import { useEffect as useEffect10, useMemo as useMemo8, useRef as useRef6 } from "react";
|
|
336
357
|
var useSignalsEffect = (cb, deps) => {
|
|
337
|
-
const callback =
|
|
358
|
+
const callback = useRef6(cb);
|
|
338
359
|
callback.current = cb;
|
|
339
360
|
useEffect10(() => {
|
|
340
361
|
return effect(() => {
|
|
@@ -345,16 +366,16 @@ var useSignalsEffect = (cb, deps) => {
|
|
|
345
366
|
var useSignalsMemo = (cb, deps) => {
|
|
346
367
|
var _effect = _useSignals();
|
|
347
368
|
try {
|
|
348
|
-
return
|
|
369
|
+
return useMemo8(() => computed(cb), deps ?? []).value;
|
|
349
370
|
} finally {
|
|
350
371
|
_effect.f();
|
|
351
372
|
}
|
|
352
373
|
};
|
|
353
374
|
|
|
354
375
|
// src/useTimeout.ts
|
|
355
|
-
import { useEffect as useEffect11, useRef as
|
|
376
|
+
import { useEffect as useEffect11, useRef as useRef7 } from "react";
|
|
356
377
|
var useTimeout = (callback, delay = 0, deps = []) => {
|
|
357
|
-
const callbackRef =
|
|
378
|
+
const callbackRef = useRef7(callback);
|
|
358
379
|
useEffect11(() => {
|
|
359
380
|
callbackRef.current = callback;
|
|
360
381
|
}, [
|
|
@@ -372,7 +393,7 @@ var useTimeout = (callback, delay = 0, deps = []) => {
|
|
|
372
393
|
]);
|
|
373
394
|
};
|
|
374
395
|
var useInterval = (callback, delay = 0, deps = []) => {
|
|
375
|
-
const callbackRef =
|
|
396
|
+
const callbackRef = useRef7(callback);
|
|
376
397
|
useEffect11(() => {
|
|
377
398
|
callbackRef.current = callback;
|
|
378
399
|
}, [
|
|
@@ -395,49 +416,17 @@ var useInterval = (callback, delay = 0, deps = []) => {
|
|
|
395
416
|
]);
|
|
396
417
|
};
|
|
397
418
|
|
|
398
|
-
// src/useTrackProps.ts
|
|
399
|
-
import { useEffect as useEffect12, useRef as useRef7 } from "react";
|
|
400
|
-
import { log } from "@dxos/log";
|
|
401
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/ui/primitives/react-hooks/src/useTrackProps.ts";
|
|
402
|
-
var useTrackProps = (props, componentName = "Component", active = true) => {
|
|
403
|
-
const prevProps = useRef7(props);
|
|
404
|
-
useEffect12(() => {
|
|
405
|
-
const changes = Object.entries(props).filter(([key]) => props[key] !== prevProps.current[key]);
|
|
406
|
-
if (changes.length > 0) {
|
|
407
|
-
if (active) {
|
|
408
|
-
log.info("props changed", {
|
|
409
|
-
componentName,
|
|
410
|
-
keys: changes.map(([key]) => key).join(","),
|
|
411
|
-
props: Object.fromEntries(changes.map(([key]) => [
|
|
412
|
-
key,
|
|
413
|
-
{
|
|
414
|
-
from: prevProps.current[key],
|
|
415
|
-
to: props[key]
|
|
416
|
-
}
|
|
417
|
-
]))
|
|
418
|
-
}, {
|
|
419
|
-
F: __dxlog_file,
|
|
420
|
-
L: 22,
|
|
421
|
-
S: void 0,
|
|
422
|
-
C: (f, a) => f(...a)
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
prevProps.current = props;
|
|
427
|
-
});
|
|
428
|
-
};
|
|
429
|
-
|
|
430
419
|
// src/useTransitions.ts
|
|
431
|
-
import { useEffect as
|
|
432
|
-
var
|
|
420
|
+
import { useEffect as useEffect12, useRef as useRef8, useState as useState8 } from "react";
|
|
421
|
+
var isFunction2 = (functionToCheck) => {
|
|
433
422
|
return functionToCheck instanceof Function;
|
|
434
423
|
};
|
|
435
424
|
var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
436
425
|
const [hasTransitioned, setHasTransitioned] = useState8(false);
|
|
437
426
|
const previousValue = useRef8(currentValue);
|
|
438
|
-
|
|
439
|
-
const toValueValid =
|
|
440
|
-
const fromValueValid =
|
|
427
|
+
useEffect12(() => {
|
|
428
|
+
const toValueValid = isFunction2(toValue) ? toValue(currentValue) : toValue === currentValue;
|
|
429
|
+
const fromValueValid = isFunction2(fromValue) ? fromValue(previousValue.current) : fromValue === previousValue.current;
|
|
441
430
|
if (fromValueValid && toValueValid && !hasTransitioned) {
|
|
442
431
|
setHasTransitioned(true);
|
|
443
432
|
} else if ((!fromValueValid || !toValueValid) && hasTransitioned) {
|
|
@@ -455,13 +444,13 @@ var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
|
455
444
|
var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
456
445
|
const dirty = useRef8(false);
|
|
457
446
|
const hasTransitioned = useDidTransition(currentValue, fromValue, toValue);
|
|
458
|
-
|
|
447
|
+
useEffect12(() => {
|
|
459
448
|
dirty.current = false;
|
|
460
449
|
}, [
|
|
461
450
|
currentValue,
|
|
462
451
|
dirty
|
|
463
452
|
]);
|
|
464
|
-
|
|
453
|
+
useEffect12(() => {
|
|
465
454
|
if (hasTransitioned && !dirty.current) {
|
|
466
455
|
callback();
|
|
467
456
|
dirty.current = true;
|
|
@@ -472,9 +461,14 @@ var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
|
472
461
|
callback
|
|
473
462
|
]);
|
|
474
463
|
};
|
|
464
|
+
|
|
465
|
+
// src/index.ts
|
|
466
|
+
import { useSize, useScroller } from "mini-virtual-list";
|
|
475
467
|
export {
|
|
476
468
|
makeId,
|
|
469
|
+
mergeRefs,
|
|
477
470
|
randomString,
|
|
471
|
+
setRef,
|
|
478
472
|
useAsyncEffect,
|
|
479
473
|
useAsyncState,
|
|
480
474
|
useControlledState,
|
|
@@ -489,14 +483,16 @@ export {
|
|
|
489
483
|
useInterval,
|
|
490
484
|
useIsFocused,
|
|
491
485
|
useMediaQuery,
|
|
486
|
+
useMergeRefs,
|
|
492
487
|
useMulticastObservable,
|
|
493
488
|
useOnTransition,
|
|
494
489
|
useRefCallback,
|
|
495
|
-
|
|
490
|
+
useScroller,
|
|
496
491
|
useSignalsEffect,
|
|
497
492
|
useSignalsMemo,
|
|
493
|
+
useSize,
|
|
498
494
|
useStateWithRef,
|
|
499
495
|
useTimeout,
|
|
500
|
-
|
|
496
|
+
useViewportResize
|
|
501
497
|
};
|
|
502
498
|
//# sourceMappingURL=index.mjs.map
|