@dxos/react-hooks 0.8.4-main.e098934 → 0.8.4-main.e8ec1fe
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 +122 -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 +122 -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/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 -5
- 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/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":3732,"imports":[{"path":"@preact-signals/safe-react/react","kind":"import-statement","external":true},{"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":2923,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/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":35116},"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":"@preact-signals/safe-react/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":"@preact-signals/safe-react/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":778},"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":664},"src/useTimeout.ts":{"bytesInOutput":946},"src/useTransitions.ts":{"bytesInOutput":1409}},"bytes":13409}}}
|
|
@@ -43,40 +43,79 @@ 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 } from "@preact-signals/safe-react/react";
|
|
50
|
+
import { useEffect as useEffect3, useRef, useState as useState2 } from "react";
|
|
51
|
+
var useStateWithRef = (valueParam) => {
|
|
52
|
+
const [value, setValue] = useState2(valueParam);
|
|
53
|
+
const valueRef = useRef(valueParam);
|
|
54
|
+
const setter = useCallback((value2) => {
|
|
55
|
+
if (typeof value2 === "function") {
|
|
56
|
+
setValue((current) => {
|
|
57
|
+
valueRef.current = value2(current);
|
|
58
|
+
return valueRef.current;
|
|
59
|
+
});
|
|
60
|
+
} else {
|
|
61
|
+
valueRef.current = value2;
|
|
62
|
+
setValue(value2);
|
|
52
63
|
}
|
|
64
|
+
}, []);
|
|
65
|
+
return [
|
|
66
|
+
value,
|
|
67
|
+
setter,
|
|
68
|
+
valueRef
|
|
69
|
+
];
|
|
70
|
+
};
|
|
71
|
+
var useDynamicRef = (value) => {
|
|
72
|
+
const valueRef = useRef(value);
|
|
73
|
+
useEffect3(() => {
|
|
74
|
+
valueRef.current = value;
|
|
53
75
|
}, [
|
|
54
|
-
|
|
55
|
-
...deps
|
|
76
|
+
value
|
|
56
77
|
]);
|
|
57
|
-
|
|
58
|
-
|
|
78
|
+
return valueRef;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/useControlledState.ts
|
|
82
|
+
var useControlledState = (valueParam, onChange) => {
|
|
83
|
+
const [value, setControlledValue] = useState3(valueParam);
|
|
84
|
+
useEffect4(() => {
|
|
85
|
+
setControlledValue(valueParam);
|
|
59
86
|
}, [
|
|
60
|
-
|
|
61
|
-
|
|
87
|
+
valueParam
|
|
88
|
+
]);
|
|
89
|
+
const onChangeRef = useRef2(onChange);
|
|
90
|
+
const valueRef = useDynamicRef(valueParam);
|
|
91
|
+
const setValue = useCallback2((nextValue) => {
|
|
92
|
+
const value2 = isFunction(nextValue) ? nextValue(valueRef.current) : nextValue;
|
|
93
|
+
setControlledValue(value2);
|
|
94
|
+
onChangeRef.current?.(value2);
|
|
95
|
+
}, [
|
|
96
|
+
valueRef,
|
|
97
|
+
onChangeRef
|
|
62
98
|
]);
|
|
63
99
|
return [
|
|
64
100
|
value,
|
|
65
101
|
setValue
|
|
66
102
|
];
|
|
67
103
|
};
|
|
104
|
+
function isFunction(value) {
|
|
105
|
+
return typeof value === "function";
|
|
106
|
+
}
|
|
68
107
|
|
|
69
108
|
// src/useDebugDeps.ts
|
|
70
|
-
import { useEffect as
|
|
71
|
-
var useDebugDeps = (deps = []) => {
|
|
72
|
-
const lastDeps =
|
|
73
|
-
|
|
109
|
+
import { useEffect as useEffect5, useRef as useRef3 } from "react";
|
|
110
|
+
var useDebugDeps = (deps = [], active = true) => {
|
|
111
|
+
const lastDeps = useRef3([]);
|
|
112
|
+
useEffect5(() => {
|
|
74
113
|
console.group("deps changed", {
|
|
75
114
|
previous: lastDeps.current.length,
|
|
76
115
|
current: deps.length
|
|
77
116
|
});
|
|
78
117
|
for (let i = 0; i < Math.max(lastDeps.current.length ?? 0, deps.length ?? 0); i++) {
|
|
79
|
-
if (lastDeps.current[i] !== deps[i]) {
|
|
118
|
+
if (lastDeps.current[i] !== deps[i] && active) {
|
|
80
119
|
console.log("changed", {
|
|
81
120
|
index: i,
|
|
82
121
|
previous: lastDeps.current[i],
|
|
@@ -90,11 +129,11 @@ var useDebugDeps = (deps = []) => {
|
|
|
90
129
|
};
|
|
91
130
|
|
|
92
131
|
// src/useDefaultValue.ts
|
|
93
|
-
import { useEffect as
|
|
132
|
+
import { useEffect as useEffect6, useMemo, useState as useState4 } from "react";
|
|
94
133
|
var useDefaultValue = (reactiveValue, getDefaultValue) => {
|
|
95
134
|
const stableDefaultValue = useMemo(getDefaultValue, []);
|
|
96
|
-
const [value, setValue] =
|
|
97
|
-
|
|
135
|
+
const [value, setValue] = useState4(reactiveValue ?? stableDefaultValue);
|
|
136
|
+
useEffect6(() => {
|
|
98
137
|
setValue(reactiveValue ?? stableDefaultValue);
|
|
99
138
|
}, [
|
|
100
139
|
reactiveValue,
|
|
@@ -113,39 +152,6 @@ var useDefaults = (value, defaults) => {
|
|
|
113
152
|
]);
|
|
114
153
|
};
|
|
115
154
|
|
|
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
155
|
// src/useFileDownload.ts
|
|
150
156
|
import { useMemo as useMemo3 } from "react";
|
|
151
157
|
var useFileDownload = () => {
|
|
@@ -160,38 +166,55 @@ var useFileDownload = () => {
|
|
|
160
166
|
};
|
|
161
167
|
|
|
162
168
|
// src/useForwardedRef.ts
|
|
163
|
-
import { useEffect as useEffect7, useRef as
|
|
164
|
-
var useForwardedRef = (
|
|
165
|
-
const
|
|
169
|
+
import { useEffect as useEffect7, useMemo as useMemo4, useRef as useRef4 } from "react";
|
|
170
|
+
var useForwardedRef = (forwardedRef) => {
|
|
171
|
+
const localRef = useRef4(null);
|
|
166
172
|
useEffect7(() => {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
173
|
+
setRef(forwardedRef, localRef.current);
|
|
174
|
+
}, [
|
|
175
|
+
forwardedRef
|
|
176
|
+
]);
|
|
177
|
+
return localRef;
|
|
178
|
+
};
|
|
179
|
+
function setRef(ref, value) {
|
|
180
|
+
if (typeof ref === "function") {
|
|
181
|
+
return ref(value);
|
|
182
|
+
} else if (ref) {
|
|
183
|
+
ref.current = value;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
var mergeRefs = (refs) => {
|
|
187
|
+
return (value) => {
|
|
188
|
+
const cleanups = [];
|
|
189
|
+
for (const ref of refs) {
|
|
190
|
+
const cleanup = setRef(ref, value);
|
|
191
|
+
cleanups.push(typeof cleanup === "function" ? cleanup : () => setRef(ref, null));
|
|
174
192
|
}
|
|
175
|
-
|
|
176
|
-
|
|
193
|
+
return () => {
|
|
194
|
+
for (const cleanup of cleanups) cleanup();
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
var useMergeRefs = (refs) => {
|
|
199
|
+
return useMemo4(() => mergeRefs(refs), refs);
|
|
177
200
|
};
|
|
178
201
|
|
|
179
202
|
// src/useId.ts
|
|
180
203
|
import alea from "alea";
|
|
181
|
-
import { useMemo as
|
|
204
|
+
import { useMemo as useMemo5 } from "react";
|
|
182
205
|
var Alea = alea;
|
|
183
206
|
var prng = new Alea("@dxos/react-hooks");
|
|
184
207
|
var randomString = (n = 4) => prng().toString(16).slice(2, n + 2);
|
|
185
|
-
var useId = (namespace, propsId, opts) =>
|
|
208
|
+
var useId = (namespace, propsId, opts) => useMemo5(() => makeId(namespace, propsId, opts), [
|
|
186
209
|
propsId
|
|
187
210
|
]);
|
|
188
211
|
var makeId = (namespace, propsId, opts) => propsId ?? `${namespace}-${randomString(opts?.n ?? 4)}`;
|
|
189
212
|
|
|
190
213
|
// src/useIsFocused.ts
|
|
191
|
-
import { useEffect as useEffect8, useRef as
|
|
214
|
+
import { useEffect as useEffect8, useRef as useRef5, useState as useState5 } from "react";
|
|
192
215
|
var useIsFocused = (inputRef) => {
|
|
193
216
|
const [isFocused, setIsFocused] = useState5(void 0);
|
|
194
|
-
const isFocusedRef =
|
|
217
|
+
const isFocusedRef = useRef5(isFocused);
|
|
195
218
|
isFocusedRef.current = isFocused;
|
|
196
219
|
useEffect8(() => {
|
|
197
220
|
const input = inputRef.current;
|
|
@@ -226,7 +249,7 @@ var breakpointMediaQueries = {
|
|
|
226
249
|
"2xl": "(min-width: 1536px)"
|
|
227
250
|
};
|
|
228
251
|
var useMediaQuery = (query, options = {}) => {
|
|
229
|
-
const { ssr =
|
|
252
|
+
const { ssr = false, fallback } = options;
|
|
230
253
|
const queries = (Array.isArray(query) ? query : [
|
|
231
254
|
query
|
|
232
255
|
]).map((query2) => query2 in breakpointMediaQueries ? breakpointMediaQueries[query2] : query2);
|
|
@@ -282,9 +305,9 @@ var useMediaQuery = (query, options = {}) => {
|
|
|
282
305
|
};
|
|
283
306
|
|
|
284
307
|
// src/useMulticastObservable.ts
|
|
285
|
-
import { useMemo as
|
|
308
|
+
import { useMemo as useMemo6, useSyncExternalStore } from "react";
|
|
286
309
|
var useMulticastObservable = (observable) => {
|
|
287
|
-
const subscribeFn =
|
|
310
|
+
const subscribeFn = useMemo6(() => (listener) => {
|
|
288
311
|
const subscription = observable.subscribe(listener);
|
|
289
312
|
return () => subscription.unsubscribe();
|
|
290
313
|
}, [
|
|
@@ -303,10 +326,10 @@ var useRefCallback = () => {
|
|
|
303
326
|
};
|
|
304
327
|
};
|
|
305
328
|
|
|
306
|
-
// src/
|
|
307
|
-
import { useLayoutEffect, useMemo as
|
|
308
|
-
var
|
|
309
|
-
const debouncedHandler =
|
|
329
|
+
// src/useViewportResize.ts
|
|
330
|
+
import { useLayoutEffect, useMemo as useMemo7 } from "react";
|
|
331
|
+
var useViewportResize = (handler, deps = [], delay = 800) => {
|
|
332
|
+
const debouncedHandler = useMemo7(() => {
|
|
310
333
|
let timeout;
|
|
311
334
|
return (event) => {
|
|
312
335
|
clearTimeout(timeout);
|
|
@@ -331,10 +354,10 @@ var useResize = (handler, deps = [], delay = 800) => {
|
|
|
331
354
|
// src/useSignals.ts
|
|
332
355
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
333
356
|
import { computed, effect } from "@preact-signals/safe-react";
|
|
334
|
-
import { useRef as
|
|
335
|
-
import { useEffect as useEffect10, useMemo as
|
|
357
|
+
import { useRef as useRef6 } from "@preact-signals/safe-react/react";
|
|
358
|
+
import { useEffect as useEffect10, useMemo as useMemo8 } from "react";
|
|
336
359
|
var useSignalsEffect = (cb, deps) => {
|
|
337
|
-
const callback =
|
|
360
|
+
const callback = useRef6(cb);
|
|
338
361
|
callback.current = cb;
|
|
339
362
|
useEffect10(() => {
|
|
340
363
|
return effect(() => {
|
|
@@ -345,16 +368,16 @@ var useSignalsEffect = (cb, deps) => {
|
|
|
345
368
|
var useSignalsMemo = (cb, deps) => {
|
|
346
369
|
var _effect = _useSignals();
|
|
347
370
|
try {
|
|
348
|
-
return
|
|
371
|
+
return useMemo8(() => computed(cb), deps ?? []).value;
|
|
349
372
|
} finally {
|
|
350
373
|
_effect.f();
|
|
351
374
|
}
|
|
352
375
|
};
|
|
353
376
|
|
|
354
377
|
// src/useTimeout.ts
|
|
355
|
-
import { useEffect as useEffect11, useRef as
|
|
378
|
+
import { useEffect as useEffect11, useRef as useRef7 } from "react";
|
|
356
379
|
var useTimeout = (callback, delay = 0, deps = []) => {
|
|
357
|
-
const callbackRef =
|
|
380
|
+
const callbackRef = useRef7(callback);
|
|
358
381
|
useEffect11(() => {
|
|
359
382
|
callbackRef.current = callback;
|
|
360
383
|
}, [
|
|
@@ -372,7 +395,7 @@ var useTimeout = (callback, delay = 0, deps = []) => {
|
|
|
372
395
|
]);
|
|
373
396
|
};
|
|
374
397
|
var useInterval = (callback, delay = 0, deps = []) => {
|
|
375
|
-
const callbackRef =
|
|
398
|
+
const callbackRef = useRef7(callback);
|
|
376
399
|
useEffect11(() => {
|
|
377
400
|
callbackRef.current = callback;
|
|
378
401
|
}, [
|
|
@@ -395,49 +418,17 @@ var useInterval = (callback, delay = 0, deps = []) => {
|
|
|
395
418
|
]);
|
|
396
419
|
};
|
|
397
420
|
|
|
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
421
|
// src/useTransitions.ts
|
|
431
|
-
import { useEffect as
|
|
432
|
-
var
|
|
422
|
+
import { useEffect as useEffect12, useRef as useRef8, useState as useState8 } from "react";
|
|
423
|
+
var isFunction2 = (functionToCheck) => {
|
|
433
424
|
return functionToCheck instanceof Function;
|
|
434
425
|
};
|
|
435
426
|
var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
436
427
|
const [hasTransitioned, setHasTransitioned] = useState8(false);
|
|
437
428
|
const previousValue = useRef8(currentValue);
|
|
438
|
-
|
|
439
|
-
const toValueValid =
|
|
440
|
-
const fromValueValid =
|
|
429
|
+
useEffect12(() => {
|
|
430
|
+
const toValueValid = isFunction2(toValue) ? toValue(currentValue) : toValue === currentValue;
|
|
431
|
+
const fromValueValid = isFunction2(fromValue) ? fromValue(previousValue.current) : fromValue === previousValue.current;
|
|
441
432
|
if (fromValueValid && toValueValid && !hasTransitioned) {
|
|
442
433
|
setHasTransitioned(true);
|
|
443
434
|
} else if ((!fromValueValid || !toValueValid) && hasTransitioned) {
|
|
@@ -455,13 +446,13 @@ var useDidTransition = (currentValue, fromValue, toValue) => {
|
|
|
455
446
|
var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
456
447
|
const dirty = useRef8(false);
|
|
457
448
|
const hasTransitioned = useDidTransition(currentValue, fromValue, toValue);
|
|
458
|
-
|
|
449
|
+
useEffect12(() => {
|
|
459
450
|
dirty.current = false;
|
|
460
451
|
}, [
|
|
461
452
|
currentValue,
|
|
462
453
|
dirty
|
|
463
454
|
]);
|
|
464
|
-
|
|
455
|
+
useEffect12(() => {
|
|
465
456
|
if (hasTransitioned && !dirty.current) {
|
|
466
457
|
callback();
|
|
467
458
|
dirty.current = true;
|
|
@@ -472,9 +463,14 @@ var useOnTransition = (currentValue, fromValue, toValue, callback) => {
|
|
|
472
463
|
callback
|
|
473
464
|
]);
|
|
474
465
|
};
|
|
466
|
+
|
|
467
|
+
// src/index.ts
|
|
468
|
+
import { useSize, useScroller } from "mini-virtual-list";
|
|
475
469
|
export {
|
|
476
470
|
makeId,
|
|
471
|
+
mergeRefs,
|
|
477
472
|
randomString,
|
|
473
|
+
setRef,
|
|
478
474
|
useAsyncEffect,
|
|
479
475
|
useAsyncState,
|
|
480
476
|
useControlledState,
|
|
@@ -489,14 +485,16 @@ export {
|
|
|
489
485
|
useInterval,
|
|
490
486
|
useIsFocused,
|
|
491
487
|
useMediaQuery,
|
|
488
|
+
useMergeRefs,
|
|
492
489
|
useMulticastObservable,
|
|
493
490
|
useOnTransition,
|
|
494
491
|
useRefCallback,
|
|
495
|
-
|
|
492
|
+
useScroller,
|
|
496
493
|
useSignalsEffect,
|
|
497
494
|
useSignalsMemo,
|
|
495
|
+
useSize,
|
|
498
496
|
useStateWithRef,
|
|
499
497
|
useTimeout,
|
|
500
|
-
|
|
498
|
+
useViewportResize
|
|
501
499
|
};
|
|
502
500
|
//# sourceMappingURL=index.mjs.map
|