@reactuses/core 1.0.6-beta.1 → 1.0.7
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/index.cjs +101 -43
- package/index.d.ts +12 -2
- package/index.mjs +100 -45
- package/package.json +1 -1
package/index.cjs
CHANGED
|
@@ -13,7 +13,7 @@ function usePrevious(state) {
|
|
|
13
13
|
return ref.current;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
var __async$
|
|
16
|
+
var __async$2 = (__this, __arguments, generator) => {
|
|
17
17
|
return new Promise((resolve, reject) => {
|
|
18
18
|
var fulfilled = (value) => {
|
|
19
19
|
try {
|
|
@@ -36,7 +36,7 @@ var __async$1 = (__this, __arguments, generator) => {
|
|
|
36
36
|
function useMarkdown(filepath) {
|
|
37
37
|
const [content, setContent] = react.useState("");
|
|
38
38
|
react.useEffect(() => {
|
|
39
|
-
const getContent = () => __async$
|
|
39
|
+
const getContent = () => __async$2(this, null, function* () {
|
|
40
40
|
const data = yield (yield fetch(filepath)).text();
|
|
41
41
|
setContent(data);
|
|
42
42
|
});
|
|
@@ -231,47 +231,29 @@ function useInterval(callback, delay, options) {
|
|
|
231
231
|
}, [delay, immediate]);
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
const onChange = () => {
|
|
254
|
-
if (!mounted) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
setState(!!mql.matches);
|
|
258
|
-
};
|
|
259
|
-
if ("addEventListener" in mql) {
|
|
260
|
-
mql.addEventListener("change", onChange);
|
|
261
|
-
} else {
|
|
262
|
-
mql.addListener(onChange);
|
|
263
|
-
}
|
|
264
|
-
setState(mql.matches);
|
|
265
|
-
return () => {
|
|
266
|
-
mounted = false;
|
|
267
|
-
if ("removeEventListener" in mql) {
|
|
268
|
-
mql.removeEventListener("change", onChange);
|
|
269
|
-
} else {
|
|
270
|
-
mql.removeListener(onChange);
|
|
234
|
+
function useMediaQuery(query, serverFallback) {
|
|
235
|
+
const getServerSnapshot = serverFallback !== void 0 ? () => serverFallback : void 0;
|
|
236
|
+
const [getSnapshot, subscribe] = react.useMemo(() => {
|
|
237
|
+
const mediaQueryList = window.matchMedia(query);
|
|
238
|
+
return [
|
|
239
|
+
() => mediaQueryList.matches,
|
|
240
|
+
(notify) => {
|
|
241
|
+
try {
|
|
242
|
+
mediaQueryList.addEventListener("change", notify);
|
|
243
|
+
} catch (e) {
|
|
244
|
+
mediaQueryList.addListener(notify);
|
|
245
|
+
}
|
|
246
|
+
return () => {
|
|
247
|
+
try {
|
|
248
|
+
mediaQueryList.removeEventListener("change", notify);
|
|
249
|
+
} catch (e) {
|
|
250
|
+
mediaQueryList.removeListener(notify);
|
|
251
|
+
}
|
|
252
|
+
};
|
|
271
253
|
}
|
|
272
|
-
|
|
254
|
+
];
|
|
273
255
|
}, [query]);
|
|
274
|
-
return
|
|
256
|
+
return react.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
275
257
|
}
|
|
276
258
|
|
|
277
259
|
function usePreferredDark(defaultState) {
|
|
@@ -1787,7 +1769,7 @@ var __spreadValues = (a, b) => {
|
|
|
1787
1769
|
return a;
|
|
1788
1770
|
};
|
|
1789
1771
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
1790
|
-
var __async = (__this, __arguments, generator) => {
|
|
1772
|
+
var __async$1 = (__this, __arguments, generator) => {
|
|
1791
1773
|
return new Promise((resolve, reject) => {
|
|
1792
1774
|
var fulfilled = (value) => {
|
|
1793
1775
|
try {
|
|
@@ -1818,7 +1800,7 @@ function useInfiniteScroll(target, onLoadMore, options = {}) {
|
|
|
1818
1800
|
}));
|
|
1819
1801
|
const di = state[3][direction];
|
|
1820
1802
|
useUpdateEffect(() => {
|
|
1821
|
-
const fn = () => __async(this, null, function* () {
|
|
1803
|
+
const fn = () => __async$1(this, null, function* () {
|
|
1822
1804
|
var _a2, _b2;
|
|
1823
1805
|
const element = getTargetElement(target);
|
|
1824
1806
|
const previous = {
|
|
@@ -2362,9 +2344,85 @@ function useWindowScroll() {
|
|
|
2362
2344
|
return state;
|
|
2363
2345
|
}
|
|
2364
2346
|
|
|
2347
|
+
var __async = (__this, __arguments, generator) => {
|
|
2348
|
+
return new Promise((resolve, reject) => {
|
|
2349
|
+
var fulfilled = (value) => {
|
|
2350
|
+
try {
|
|
2351
|
+
step(generator.next(value));
|
|
2352
|
+
} catch (e) {
|
|
2353
|
+
reject(e);
|
|
2354
|
+
}
|
|
2355
|
+
};
|
|
2356
|
+
var rejected = (value) => {
|
|
2357
|
+
try {
|
|
2358
|
+
step(generator.throw(value));
|
|
2359
|
+
} catch (e) {
|
|
2360
|
+
reject(e);
|
|
2361
|
+
}
|
|
2362
|
+
};
|
|
2363
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
2364
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
2365
|
+
});
|
|
2366
|
+
};
|
|
2367
|
+
function useClipBorad() {
|
|
2368
|
+
const [text, setText] = react.useState("");
|
|
2369
|
+
const updateText = react.useCallback(() => {
|
|
2370
|
+
window.navigator.clipboard.readText().then((value) => {
|
|
2371
|
+
setText(value);
|
|
2372
|
+
});
|
|
2373
|
+
}, []);
|
|
2374
|
+
useEventListener("copy", updateText);
|
|
2375
|
+
useEventListener("cut", updateText);
|
|
2376
|
+
const copy = react.useCallback((txt) => __async(this, null, function* () {
|
|
2377
|
+
setText(txt);
|
|
2378
|
+
yield window.navigator.clipboard.writeText(txt);
|
|
2379
|
+
}), []);
|
|
2380
|
+
return [text, copy];
|
|
2381
|
+
}
|
|
2382
|
+
|
|
2383
|
+
function useClickOutSide(target, handler) {
|
|
2384
|
+
const savedHandler = useLatest(handler);
|
|
2385
|
+
const listener = (event) => {
|
|
2386
|
+
const element = getTargetElement(target);
|
|
2387
|
+
if (!element) {
|
|
2388
|
+
return;
|
|
2389
|
+
}
|
|
2390
|
+
const elements = event.composedPath();
|
|
2391
|
+
if (element === event.target || elements.includes(element)) {
|
|
2392
|
+
return;
|
|
2393
|
+
}
|
|
2394
|
+
savedHandler.current(event);
|
|
2395
|
+
};
|
|
2396
|
+
useEventListener("mousedown", listener, window, {
|
|
2397
|
+
passive: true
|
|
2398
|
+
});
|
|
2399
|
+
useEventListener("touchstart", listener, window, {
|
|
2400
|
+
passive: true
|
|
2401
|
+
});
|
|
2402
|
+
}
|
|
2403
|
+
|
|
2404
|
+
function useCycleList(list, i = 0) {
|
|
2405
|
+
const [index, setIndex] = react.useState(i);
|
|
2406
|
+
const set = (i2) => {
|
|
2407
|
+
const length = list.length;
|
|
2408
|
+
const nextIndex = ((index + i2) % length + length) % length;
|
|
2409
|
+
setIndex(nextIndex);
|
|
2410
|
+
};
|
|
2411
|
+
const next = (i2 = 1) => {
|
|
2412
|
+
set(i2);
|
|
2413
|
+
};
|
|
2414
|
+
const prev = (i2 = 1) => {
|
|
2415
|
+
set(-i2);
|
|
2416
|
+
};
|
|
2417
|
+
return [list[index], next, prev];
|
|
2418
|
+
}
|
|
2419
|
+
|
|
2365
2420
|
exports.useActiveElement = useActiveElement;
|
|
2421
|
+
exports.useClickOutside = useClickOutSide;
|
|
2422
|
+
exports.useClipboard = useClipBorad;
|
|
2366
2423
|
exports.useCounter = useCounter;
|
|
2367
2424
|
exports.useCustomCompareEffect = useCustomCompareEffect;
|
|
2425
|
+
exports.useCycleList = useCycleList;
|
|
2368
2426
|
exports.useDarkMode = useDarkMode;
|
|
2369
2427
|
exports.useDebounce = useDebounce;
|
|
2370
2428
|
exports.useDebounceFn = useDebounceFn;
|
package/index.d.ts
CHANGED
|
@@ -92,7 +92,7 @@ interface UseDarkOptions<T> {
|
|
|
92
92
|
}
|
|
93
93
|
declare function useDarkMode<T extends string | "light" | "dark">(options?: UseDarkOptions<T>): readonly [T | null, react.Dispatch<react.SetStateAction<T | null>>];
|
|
94
94
|
|
|
95
|
-
declare function useMediaQuery(query: string,
|
|
95
|
+
declare function useMediaQuery(query: string, serverFallback?: boolean): boolean;
|
|
96
96
|
|
|
97
97
|
declare function usePreferredDark(defaultState?: boolean): boolean;
|
|
98
98
|
|
|
@@ -702,4 +702,14 @@ interface State {
|
|
|
702
702
|
}
|
|
703
703
|
declare function useWindowScroll(): State;
|
|
704
704
|
|
|
705
|
-
|
|
705
|
+
declare function useClipBorad(): readonly [
|
|
706
|
+
string,
|
|
707
|
+
(txt: string) => Promise<void>
|
|
708
|
+
];
|
|
709
|
+
|
|
710
|
+
declare type EventType = MouseEvent | TouchEvent;
|
|
711
|
+
declare function useClickOutSide(target: BasicTarget, handler: (evt: EventType) => void): void;
|
|
712
|
+
|
|
713
|
+
declare function useCycleList<T>(list: T[], i?: number): readonly [T, (i?: number) => void, (i?: number) => void];
|
|
714
|
+
|
|
715
|
+
export { useActiveElement, useClickOutSide as useClickOutside, useClipBorad as useClipboard, useCounter, useCustomCompareEffect, useCycleList, useDarkMode, useDebounce, useDebounceFn, useDeepCompareEffect, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementSize, useElementVisibility, useEvent, useEventEmitter, useEventListener, useFavicon, useFileDialog, useFirstMountState, _default as useFps, useFullscreen, useGeolocation, useIdle, useInfiniteScroll, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyModifier, useLatest, useLocalStorage, useLongPress, useMarkdown, _default$1 as useMediaDevices, useMediaQuery, useMount, useMountedState, useMouse, useMousePressed, useMutationObserver, useNetwork, useObjectUrl, useOnline, useOrientation, usePageLeave, usePermission, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePrevious, useRafFn, useRafState, useResizeObserver, useScriptTag, useScroll, useScrollLock, useSessionStorage, useTextDirection, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useTitle, useToggle, useUnmount, useUpdate, _default$3 as useUpdateEffect, _default$2 as useUpdateLayoutEffect, useVirtualList, useWindowScroll, useWindowSize, useWindowsFocus };
|
package/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useRef, useEffect, useState, useLayoutEffect, useCallback, useReducer, useMemo } from 'react';
|
|
1
|
+
import { useRef, useEffect, useState, useLayoutEffect, useCallback, useReducer, useMemo, useSyncExternalStore } from 'react';
|
|
2
2
|
import { throttle, debounce, isEqual } from 'lodash';
|
|
3
3
|
|
|
4
4
|
function usePrevious(state) {
|
|
@@ -9,7 +9,7 @@ function usePrevious(state) {
|
|
|
9
9
|
return ref.current;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
var __async$
|
|
12
|
+
var __async$2 = (__this, __arguments, generator) => {
|
|
13
13
|
return new Promise((resolve, reject) => {
|
|
14
14
|
var fulfilled = (value) => {
|
|
15
15
|
try {
|
|
@@ -32,7 +32,7 @@ var __async$1 = (__this, __arguments, generator) => {
|
|
|
32
32
|
function useMarkdown(filepath) {
|
|
33
33
|
const [content, setContent] = useState("");
|
|
34
34
|
useEffect(() => {
|
|
35
|
-
const getContent = () => __async$
|
|
35
|
+
const getContent = () => __async$2(this, null, function* () {
|
|
36
36
|
const data = yield (yield fetch(filepath)).text();
|
|
37
37
|
setContent(data);
|
|
38
38
|
});
|
|
@@ -227,47 +227,29 @@ function useInterval(callback, delay, options) {
|
|
|
227
227
|
}, [delay, immediate]);
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
const onChange = () => {
|
|
250
|
-
if (!mounted) {
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
setState(!!mql.matches);
|
|
254
|
-
};
|
|
255
|
-
if ("addEventListener" in mql) {
|
|
256
|
-
mql.addEventListener("change", onChange);
|
|
257
|
-
} else {
|
|
258
|
-
mql.addListener(onChange);
|
|
259
|
-
}
|
|
260
|
-
setState(mql.matches);
|
|
261
|
-
return () => {
|
|
262
|
-
mounted = false;
|
|
263
|
-
if ("removeEventListener" in mql) {
|
|
264
|
-
mql.removeEventListener("change", onChange);
|
|
265
|
-
} else {
|
|
266
|
-
mql.removeListener(onChange);
|
|
230
|
+
function useMediaQuery(query, serverFallback) {
|
|
231
|
+
const getServerSnapshot = serverFallback !== void 0 ? () => serverFallback : void 0;
|
|
232
|
+
const [getSnapshot, subscribe] = useMemo(() => {
|
|
233
|
+
const mediaQueryList = window.matchMedia(query);
|
|
234
|
+
return [
|
|
235
|
+
() => mediaQueryList.matches,
|
|
236
|
+
(notify) => {
|
|
237
|
+
try {
|
|
238
|
+
mediaQueryList.addEventListener("change", notify);
|
|
239
|
+
} catch (e) {
|
|
240
|
+
mediaQueryList.addListener(notify);
|
|
241
|
+
}
|
|
242
|
+
return () => {
|
|
243
|
+
try {
|
|
244
|
+
mediaQueryList.removeEventListener("change", notify);
|
|
245
|
+
} catch (e) {
|
|
246
|
+
mediaQueryList.removeListener(notify);
|
|
247
|
+
}
|
|
248
|
+
};
|
|
267
249
|
}
|
|
268
|
-
|
|
250
|
+
];
|
|
269
251
|
}, [query]);
|
|
270
|
-
return
|
|
252
|
+
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
271
253
|
}
|
|
272
254
|
|
|
273
255
|
function usePreferredDark(defaultState) {
|
|
@@ -1783,7 +1765,7 @@ var __spreadValues = (a, b) => {
|
|
|
1783
1765
|
return a;
|
|
1784
1766
|
};
|
|
1785
1767
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
1786
|
-
var __async = (__this, __arguments, generator) => {
|
|
1768
|
+
var __async$1 = (__this, __arguments, generator) => {
|
|
1787
1769
|
return new Promise((resolve, reject) => {
|
|
1788
1770
|
var fulfilled = (value) => {
|
|
1789
1771
|
try {
|
|
@@ -1814,7 +1796,7 @@ function useInfiniteScroll(target, onLoadMore, options = {}) {
|
|
|
1814
1796
|
}));
|
|
1815
1797
|
const di = state[3][direction];
|
|
1816
1798
|
useUpdateEffect(() => {
|
|
1817
|
-
const fn = () => __async(this, null, function* () {
|
|
1799
|
+
const fn = () => __async$1(this, null, function* () {
|
|
1818
1800
|
var _a2, _b2;
|
|
1819
1801
|
const element = getTargetElement(target);
|
|
1820
1802
|
const previous = {
|
|
@@ -2358,4 +2340,77 @@ function useWindowScroll() {
|
|
|
2358
2340
|
return state;
|
|
2359
2341
|
}
|
|
2360
2342
|
|
|
2361
|
-
|
|
2343
|
+
var __async = (__this, __arguments, generator) => {
|
|
2344
|
+
return new Promise((resolve, reject) => {
|
|
2345
|
+
var fulfilled = (value) => {
|
|
2346
|
+
try {
|
|
2347
|
+
step(generator.next(value));
|
|
2348
|
+
} catch (e) {
|
|
2349
|
+
reject(e);
|
|
2350
|
+
}
|
|
2351
|
+
};
|
|
2352
|
+
var rejected = (value) => {
|
|
2353
|
+
try {
|
|
2354
|
+
step(generator.throw(value));
|
|
2355
|
+
} catch (e) {
|
|
2356
|
+
reject(e);
|
|
2357
|
+
}
|
|
2358
|
+
};
|
|
2359
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
2360
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
2361
|
+
});
|
|
2362
|
+
};
|
|
2363
|
+
function useClipBorad() {
|
|
2364
|
+
const [text, setText] = useState("");
|
|
2365
|
+
const updateText = useCallback(() => {
|
|
2366
|
+
window.navigator.clipboard.readText().then((value) => {
|
|
2367
|
+
setText(value);
|
|
2368
|
+
});
|
|
2369
|
+
}, []);
|
|
2370
|
+
useEventListener("copy", updateText);
|
|
2371
|
+
useEventListener("cut", updateText);
|
|
2372
|
+
const copy = useCallback((txt) => __async(this, null, function* () {
|
|
2373
|
+
setText(txt);
|
|
2374
|
+
yield window.navigator.clipboard.writeText(txt);
|
|
2375
|
+
}), []);
|
|
2376
|
+
return [text, copy];
|
|
2377
|
+
}
|
|
2378
|
+
|
|
2379
|
+
function useClickOutSide(target, handler) {
|
|
2380
|
+
const savedHandler = useLatest(handler);
|
|
2381
|
+
const listener = (event) => {
|
|
2382
|
+
const element = getTargetElement(target);
|
|
2383
|
+
if (!element) {
|
|
2384
|
+
return;
|
|
2385
|
+
}
|
|
2386
|
+
const elements = event.composedPath();
|
|
2387
|
+
if (element === event.target || elements.includes(element)) {
|
|
2388
|
+
return;
|
|
2389
|
+
}
|
|
2390
|
+
savedHandler.current(event);
|
|
2391
|
+
};
|
|
2392
|
+
useEventListener("mousedown", listener, window, {
|
|
2393
|
+
passive: true
|
|
2394
|
+
});
|
|
2395
|
+
useEventListener("touchstart", listener, window, {
|
|
2396
|
+
passive: true
|
|
2397
|
+
});
|
|
2398
|
+
}
|
|
2399
|
+
|
|
2400
|
+
function useCycleList(list, i = 0) {
|
|
2401
|
+
const [index, setIndex] = useState(i);
|
|
2402
|
+
const set = (i2) => {
|
|
2403
|
+
const length = list.length;
|
|
2404
|
+
const nextIndex = ((index + i2) % length + length) % length;
|
|
2405
|
+
setIndex(nextIndex);
|
|
2406
|
+
};
|
|
2407
|
+
const next = (i2 = 1) => {
|
|
2408
|
+
set(i2);
|
|
2409
|
+
};
|
|
2410
|
+
const prev = (i2 = 1) => {
|
|
2411
|
+
set(-i2);
|
|
2412
|
+
};
|
|
2413
|
+
return [list[index], next, prev];
|
|
2414
|
+
}
|
|
2415
|
+
|
|
2416
|
+
export { useActiveElement, useClickOutSide as useClickOutside, useClipBorad as useClipboard, useCounter, useCustomCompareEffect, useCycleList, useDarkMode, useDebounce, useDebounceFn, useDeepCompareEffect, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementSize, useElementVisibility, useEvent, useEventEmitter, useEventListener, useFavicon, useFileDialog, useFirstMountState, useFps$1 as useFps, useFullscreen, useGeolocation, useIdle, useInfiniteScroll, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyModifier, useLatest, useLocalStorage, useLongPress, useMarkdown, useMediaDevices$1 as useMediaDevices, useMediaQuery, useMount, useMountedState, useMouse, useMousePressed, useMutationObserver, useNetwork, useObjectUrl, useOnline, useOrientation, usePageLeave, usePermission, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePrevious, useRafFn, useRafState, useResizeObserver, useScriptTag, useScroll, useScrollLock, useSessionStorage, useTextDirection, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useTitle, useToggle, useUnmount, useUpdate, useUpdateEffect, useUpdateLayoutEffect, useVirtualList, useWindowScroll, useWindowSize, useWindowsFocus };
|