@reactuses/core 1.1.3 → 1.1.4
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/index.cjs +168 -143
- package/dist/index.d.ts +12 -5
- package/dist/index.mjs +21 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2,27 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var lodash = require('lodash');
|
|
7
7
|
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
11
|
+
|
|
8
12
|
function usePrevious(state) {
|
|
9
|
-
const ref =
|
|
10
|
-
|
|
13
|
+
const ref = React.useRef();
|
|
14
|
+
React.useEffect(() => {
|
|
11
15
|
ref.current = state;
|
|
12
16
|
});
|
|
13
17
|
return ref.current;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
function useLatest(value) {
|
|
17
|
-
const ref =
|
|
18
|
-
|
|
21
|
+
const ref = React.useRef(value);
|
|
22
|
+
React.useEffect(() => {
|
|
19
23
|
ref.current = value;
|
|
20
24
|
}, [value]);
|
|
21
25
|
return ref;
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
function useFirstMountState() {
|
|
25
|
-
const isFirst =
|
|
29
|
+
const isFirst = React.useRef(true);
|
|
26
30
|
if (isFirst.current) {
|
|
27
31
|
isFirst.current = false;
|
|
28
32
|
return true;
|
|
@@ -39,9 +43,9 @@ const createUpdateEffect = (hook) => (effect, deps) => {
|
|
|
39
43
|
}, deps);
|
|
40
44
|
};
|
|
41
45
|
|
|
42
|
-
var useUpdateEffect = createUpdateEffect(
|
|
46
|
+
var useUpdateEffect = createUpdateEffect(React.useEffect);
|
|
43
47
|
|
|
44
|
-
var useUpdateLayoutEffect = createUpdateEffect(
|
|
48
|
+
var useUpdateLayoutEffect = createUpdateEffect(React.useLayoutEffect);
|
|
45
49
|
|
|
46
50
|
var _a;
|
|
47
51
|
const isFunction = (val) => typeof val === "function";
|
|
@@ -51,12 +55,13 @@ const isNavigator = typeof navigator !== "undefined";
|
|
|
51
55
|
const noop = () => {
|
|
52
56
|
};
|
|
53
57
|
const isIOS = isBrowser && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
|
|
58
|
+
!React__default["default"].useId;
|
|
54
59
|
|
|
55
60
|
function guessSerializerType(rawInit) {
|
|
56
61
|
return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : Array.isArray(rawInit) ? "object" : !Number.isNaN(rawInit) ? "number" : "any";
|
|
57
62
|
}
|
|
58
63
|
|
|
59
|
-
const useIsomorphicLayoutEffect = isBrowser ?
|
|
64
|
+
const useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;
|
|
60
65
|
|
|
61
66
|
function useEvent(fn) {
|
|
62
67
|
if (isDev) {
|
|
@@ -66,11 +71,11 @@ function useEvent(fn) {
|
|
|
66
71
|
);
|
|
67
72
|
}
|
|
68
73
|
}
|
|
69
|
-
const handlerRef =
|
|
74
|
+
const handlerRef = React.useRef(fn);
|
|
70
75
|
useIsomorphicLayoutEffect(() => {
|
|
71
76
|
handlerRef.current = fn;
|
|
72
77
|
}, [fn]);
|
|
73
|
-
return
|
|
78
|
+
return React.useCallback((...args) => {
|
|
74
79
|
const fn2 = handlerRef.current;
|
|
75
80
|
return fn2(...args);
|
|
76
81
|
}, []);
|
|
@@ -139,7 +144,7 @@ function useStorage(key, defaults, getStorage, options = {}) {
|
|
|
139
144
|
onError(e);
|
|
140
145
|
}
|
|
141
146
|
};
|
|
142
|
-
const [state, setState] =
|
|
147
|
+
const [state, setState] = React.useState(() => getStoredValue());
|
|
143
148
|
useUpdateEffect(() => {
|
|
144
149
|
setState(getStoredValue());
|
|
145
150
|
}, [key]);
|
|
@@ -181,13 +186,13 @@ function useSessionStorage(key, defaults, options = {}) {
|
|
|
181
186
|
|
|
182
187
|
const toggleReducer = (state, nextValue) => typeof nextValue === "boolean" ? nextValue : !state;
|
|
183
188
|
function useToggle(initialValue) {
|
|
184
|
-
return
|
|
189
|
+
return React.useReducer(toggleReducer, initialValue);
|
|
185
190
|
}
|
|
186
191
|
|
|
187
192
|
function useInterval(callback, delay, options) {
|
|
188
193
|
const immediate = options == null ? void 0 : options.immediate;
|
|
189
194
|
const savedCallback = useLatest(callback);
|
|
190
|
-
|
|
195
|
+
React.useEffect(() => {
|
|
191
196
|
if (immediate) {
|
|
192
197
|
savedCallback.current();
|
|
193
198
|
}
|
|
@@ -214,8 +219,8 @@ const getInitialState = (query, defaultState) => {
|
|
|
214
219
|
return false;
|
|
215
220
|
};
|
|
216
221
|
function useMediaQuery(query, defaultState) {
|
|
217
|
-
const [state, setState] =
|
|
218
|
-
|
|
222
|
+
const [state, setState] = React.useState(getInitialState(query, defaultState));
|
|
223
|
+
React.useEffect(() => {
|
|
219
224
|
let mounted = true;
|
|
220
225
|
const mql = window.matchMedia(query);
|
|
221
226
|
const onChange = () => {
|
|
@@ -257,7 +262,7 @@ function useDarkMode(options = {}) {
|
|
|
257
262
|
const prefersDarkMode = usePreferredDark(false);
|
|
258
263
|
const value = initialValue ? initialValue : prefersDarkMode ? "dark" : "light";
|
|
259
264
|
const [dark, setDark] = useStorage(storageKey, value, storage);
|
|
260
|
-
|
|
265
|
+
React.useEffect(() => {
|
|
261
266
|
const element = window == null ? void 0 : window.document.querySelector(selector);
|
|
262
267
|
if (!element) {
|
|
263
268
|
return;
|
|
@@ -282,7 +287,7 @@ function useMount(fn) {
|
|
|
282
287
|
);
|
|
283
288
|
}
|
|
284
289
|
}
|
|
285
|
-
|
|
290
|
+
React.useEffect(() => {
|
|
286
291
|
fn == null ? void 0 : fn();
|
|
287
292
|
}, []);
|
|
288
293
|
}
|
|
@@ -296,7 +301,7 @@ function useUnmount(fn) {
|
|
|
296
301
|
}
|
|
297
302
|
}
|
|
298
303
|
const fnRef = useLatest(fn);
|
|
299
|
-
|
|
304
|
+
React.useEffect(
|
|
300
305
|
() => () => {
|
|
301
306
|
fnRef.current();
|
|
302
307
|
},
|
|
@@ -313,7 +318,7 @@ function useThrottleFn(fn, wait, options) {
|
|
|
313
318
|
}
|
|
314
319
|
}
|
|
315
320
|
const fnRef = useLatest(fn);
|
|
316
|
-
const throttled =
|
|
321
|
+
const throttled = React.useMemo(
|
|
317
322
|
() => lodash.throttle(
|
|
318
323
|
(...args) => {
|
|
319
324
|
return fnRef.current(...args);
|
|
@@ -334,7 +339,7 @@ function useThrottleFn(fn, wait, options) {
|
|
|
334
339
|
}
|
|
335
340
|
|
|
336
341
|
function useThrottle(value, wait, options) {
|
|
337
|
-
const [throttled, setThrottled] =
|
|
342
|
+
const [throttled, setThrottled] = React.useState(value);
|
|
338
343
|
const { run } = useThrottleFn(
|
|
339
344
|
() => {
|
|
340
345
|
setThrottled(value);
|
|
@@ -342,7 +347,7 @@ function useThrottle(value, wait, options) {
|
|
|
342
347
|
wait,
|
|
343
348
|
options
|
|
344
349
|
);
|
|
345
|
-
|
|
350
|
+
React.useEffect(() => {
|
|
346
351
|
run();
|
|
347
352
|
}, [run, value]);
|
|
348
353
|
return throttled;
|
|
@@ -357,7 +362,7 @@ function useDebounceFn(fn, wait, options) {
|
|
|
357
362
|
}
|
|
358
363
|
}
|
|
359
364
|
const fnRef = useLatest(fn);
|
|
360
|
-
const debounced =
|
|
365
|
+
const debounced = React.useMemo(
|
|
361
366
|
() => lodash.debounce(
|
|
362
367
|
(...args) => {
|
|
363
368
|
return fnRef.current(...args);
|
|
@@ -378,7 +383,7 @@ function useDebounceFn(fn, wait, options) {
|
|
|
378
383
|
}
|
|
379
384
|
|
|
380
385
|
function useDebounce(value, wait, options) {
|
|
381
|
-
const [debounced, setDebounced] =
|
|
386
|
+
const [debounced, setDebounced] = React.useState(value);
|
|
382
387
|
const { run } = useDebounceFn(
|
|
383
388
|
() => {
|
|
384
389
|
setDebounced(value);
|
|
@@ -386,16 +391,16 @@ function useDebounce(value, wait, options) {
|
|
|
386
391
|
wait,
|
|
387
392
|
options
|
|
388
393
|
);
|
|
389
|
-
|
|
394
|
+
React.useEffect(() => {
|
|
390
395
|
run();
|
|
391
396
|
}, [run, value]);
|
|
392
397
|
return debounced;
|
|
393
398
|
}
|
|
394
399
|
|
|
395
400
|
function useRafState(initialState) {
|
|
396
|
-
const frame =
|
|
397
|
-
const [state, setState] =
|
|
398
|
-
const setRafState =
|
|
401
|
+
const frame = React.useRef(0);
|
|
402
|
+
const [state, setState] = React.useState(initialState);
|
|
403
|
+
const setRafState = React.useCallback((value) => {
|
|
399
404
|
cancelAnimationFrame(frame.current);
|
|
400
405
|
frame.current = requestAnimationFrame(() => {
|
|
401
406
|
setState(value);
|
|
@@ -409,15 +414,15 @@ function useRafState(initialState) {
|
|
|
409
414
|
|
|
410
415
|
const updateReducer = (num) => (num + 1) % 1e6;
|
|
411
416
|
function useUpdate() {
|
|
412
|
-
const [, update] =
|
|
417
|
+
const [, update] = React.useReducer(updateReducer, 0);
|
|
413
418
|
return update;
|
|
414
419
|
}
|
|
415
420
|
|
|
416
421
|
function useTimeoutFn(cb, interval, options = {}) {
|
|
417
422
|
const { immediate = true } = options;
|
|
418
|
-
const [pending, setPending] =
|
|
423
|
+
const [pending, setPending] = React.useState(false);
|
|
419
424
|
const savedCallback = useLatest(cb);
|
|
420
|
-
const timer =
|
|
425
|
+
const timer = React.useRef();
|
|
421
426
|
const stop = useEvent(() => {
|
|
422
427
|
setPending(false);
|
|
423
428
|
if (timer.current) {
|
|
@@ -434,7 +439,7 @@ function useTimeoutFn(cb, interval, options = {}) {
|
|
|
434
439
|
}, interval);
|
|
435
440
|
setPending(true);
|
|
436
441
|
});
|
|
437
|
-
|
|
442
|
+
React.useEffect(() => {
|
|
438
443
|
if (immediate) {
|
|
439
444
|
start();
|
|
440
445
|
}
|
|
@@ -449,9 +454,9 @@ function useTimeout(ms = 0, options = {}) {
|
|
|
449
454
|
}
|
|
450
455
|
|
|
451
456
|
function useMountedState() {
|
|
452
|
-
const mountedRef =
|
|
453
|
-
const get =
|
|
454
|
-
|
|
457
|
+
const mountedRef = React.useRef(false);
|
|
458
|
+
const get = React.useCallback(() => mountedRef.current, []);
|
|
459
|
+
React.useEffect(() => {
|
|
455
460
|
mountedRef.current = true;
|
|
456
461
|
return () => {
|
|
457
462
|
mountedRef.current = false;
|
|
@@ -513,11 +518,11 @@ function useCustomCompareEffect(effect, deps, depsEqual) {
|
|
|
513
518
|
);
|
|
514
519
|
}
|
|
515
520
|
}
|
|
516
|
-
const ref =
|
|
521
|
+
const ref = React.useRef(void 0);
|
|
517
522
|
if (!ref.current || !depsEqual(deps, ref.current)) {
|
|
518
523
|
ref.current = deps;
|
|
519
524
|
}
|
|
520
|
-
|
|
525
|
+
React.useEffect(effect, ref.current);
|
|
521
526
|
}
|
|
522
527
|
|
|
523
528
|
const isPrimitive = (val) => val !== Object(val);
|
|
@@ -570,7 +575,7 @@ function useCounter(initialValue = 0, max = null, min = null) {
|
|
|
570
575
|
}
|
|
571
576
|
return init;
|
|
572
577
|
};
|
|
573
|
-
const [value, setValue] =
|
|
578
|
+
const [value, setValue] = React.useState(initFunc);
|
|
574
579
|
const set = useEvent(
|
|
575
580
|
(newState) => {
|
|
576
581
|
setValue((v) => {
|
|
@@ -598,10 +603,10 @@ function useCounter(initialValue = 0, max = null, min = null) {
|
|
|
598
603
|
}
|
|
599
604
|
|
|
600
605
|
function useRafFn(callback, initiallyActive = true) {
|
|
601
|
-
const raf =
|
|
602
|
-
const rafActivity =
|
|
606
|
+
const raf = React.useRef(null);
|
|
607
|
+
const rafActivity = React.useRef(false);
|
|
603
608
|
const rafCallback = useLatest(callback);
|
|
604
|
-
const step =
|
|
609
|
+
const step = React.useCallback(
|
|
605
610
|
(time) => {
|
|
606
611
|
if (rafActivity.current) {
|
|
607
612
|
rafCallback.current(time);
|
|
@@ -610,7 +615,7 @@ function useRafFn(callback, initiallyActive = true) {
|
|
|
610
615
|
},
|
|
611
616
|
[rafCallback]
|
|
612
617
|
);
|
|
613
|
-
const result =
|
|
618
|
+
const result = React.useMemo(
|
|
614
619
|
() => [
|
|
615
620
|
() => {
|
|
616
621
|
if (rafActivity.current) {
|
|
@@ -628,7 +633,7 @@ function useRafFn(callback, initiallyActive = true) {
|
|
|
628
633
|
],
|
|
629
634
|
[step]
|
|
630
635
|
);
|
|
631
|
-
|
|
636
|
+
React.useEffect(() => {
|
|
632
637
|
if (initiallyActive) {
|
|
633
638
|
result[1]();
|
|
634
639
|
}
|
|
@@ -638,8 +643,8 @@ function useRafFn(callback, initiallyActive = true) {
|
|
|
638
643
|
}
|
|
639
644
|
|
|
640
645
|
function useEventEmitter() {
|
|
641
|
-
const listeners =
|
|
642
|
-
const _event =
|
|
646
|
+
const listeners = React.useRef([]);
|
|
647
|
+
const _event = React.useRef((listener) => {
|
|
643
648
|
listeners.current.push(listener);
|
|
644
649
|
const disposable = {
|
|
645
650
|
dispose: () => {
|
|
@@ -655,7 +660,7 @@ function useEventEmitter() {
|
|
|
655
660
|
};
|
|
656
661
|
return disposable;
|
|
657
662
|
});
|
|
658
|
-
const _disposed =
|
|
663
|
+
const _disposed = React.useRef(false);
|
|
659
664
|
const fire = (arg1, arg2) => {
|
|
660
665
|
const queue = [];
|
|
661
666
|
for (let i = 0; i < listeners.current.length; i++) {
|
|
@@ -675,7 +680,7 @@ function useEventEmitter() {
|
|
|
675
680
|
}
|
|
676
681
|
|
|
677
682
|
function useFavicon(href, baseUrl = "", rel = "icon") {
|
|
678
|
-
|
|
683
|
+
React.useEffect(() => {
|
|
679
684
|
const url = `${baseUrl}${href}`;
|
|
680
685
|
const element = document.head.querySelectorAll(
|
|
681
686
|
`link[rel*="${rel}"]`
|
|
@@ -692,8 +697,8 @@ function useFavicon(href, baseUrl = "", rel = "icon") {
|
|
|
692
697
|
|
|
693
698
|
function useMutationObserver(callback, target, options = {}) {
|
|
694
699
|
const callbackRef = useLatest(callback);
|
|
695
|
-
const observerRef =
|
|
696
|
-
const stop =
|
|
700
|
+
const observerRef = React.useRef();
|
|
701
|
+
const stop = React.useCallback(() => {
|
|
697
702
|
if (observerRef.current) {
|
|
698
703
|
observerRef.current.disconnect();
|
|
699
704
|
}
|
|
@@ -711,7 +716,7 @@ function useMutationObserver(callback, target, options = {}) {
|
|
|
711
716
|
}
|
|
712
717
|
|
|
713
718
|
function useTitle(title) {
|
|
714
|
-
|
|
719
|
+
React.useEffect(() => {
|
|
715
720
|
document.title = title;
|
|
716
721
|
}, [title]);
|
|
717
722
|
}
|
|
@@ -728,9 +733,9 @@ function useScriptTag(src, onLoaded = noop, options = {}) {
|
|
|
728
733
|
defer,
|
|
729
734
|
attrs = {}
|
|
730
735
|
} = options;
|
|
731
|
-
const scriptTag =
|
|
732
|
-
const _promise =
|
|
733
|
-
const [status, setStatus] =
|
|
736
|
+
const scriptTag = React.useRef(null);
|
|
737
|
+
const _promise = React.useRef(null);
|
|
738
|
+
const [status, setStatus] = React.useState(src ? "loading" : "idle");
|
|
734
739
|
const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {
|
|
735
740
|
const resolveWithElement = (el2) => {
|
|
736
741
|
scriptTag.current = el2;
|
|
@@ -831,8 +836,8 @@ function useScriptTag(src, onLoaded = noop, options = {}) {
|
|
|
831
836
|
}
|
|
832
837
|
|
|
833
838
|
function usePermission(permissionDesc) {
|
|
834
|
-
const [state, setState] =
|
|
835
|
-
|
|
839
|
+
const [state, setState] = React.useState("");
|
|
840
|
+
React.useEffect(() => {
|
|
836
841
|
const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc;
|
|
837
842
|
let mounted = true;
|
|
838
843
|
let permissionStatus = null;
|
|
@@ -871,9 +876,9 @@ const preventDefault$1 = (ev) => {
|
|
|
871
876
|
}
|
|
872
877
|
};
|
|
873
878
|
function useLongPress(callback, { isPreventDefault = true, delay = 300 } = {}) {
|
|
874
|
-
const timeout =
|
|
875
|
-
const target =
|
|
876
|
-
const start =
|
|
879
|
+
const timeout = React.useRef();
|
|
880
|
+
const target = React.useRef();
|
|
881
|
+
const start = React.useCallback(
|
|
877
882
|
(event) => {
|
|
878
883
|
if (isPreventDefault && event.target) {
|
|
879
884
|
on(event.target, "touchend", preventDefault$1, { passive: false });
|
|
@@ -883,7 +888,7 @@ function useLongPress(callback, { isPreventDefault = true, delay = 300 } = {}) {
|
|
|
883
888
|
},
|
|
884
889
|
[callback, delay, isPreventDefault]
|
|
885
890
|
);
|
|
886
|
-
const clear =
|
|
891
|
+
const clear = React.useCallback(() => {
|
|
887
892
|
timeout.current && clearTimeout(timeout.current);
|
|
888
893
|
if (isPreventDefault && target.current) {
|
|
889
894
|
off(target.current, "touchend", preventDefault$1);
|
|
@@ -899,8 +904,8 @@ function useLongPress(callback, { isPreventDefault = true, delay = 300 } = {}) {
|
|
|
899
904
|
}
|
|
900
905
|
|
|
901
906
|
function useObjectUrl(object) {
|
|
902
|
-
const [url, setUrl] =
|
|
903
|
-
|
|
907
|
+
const [url, setUrl] = React.useState();
|
|
908
|
+
React.useEffect(() => {
|
|
904
909
|
if (object) {
|
|
905
910
|
setUrl(URL.createObjectURL(object));
|
|
906
911
|
}
|
|
@@ -923,8 +928,8 @@ const defaultEvents$1 = [
|
|
|
923
928
|
];
|
|
924
929
|
const oneMinute = 6e4;
|
|
925
930
|
function useIdle(ms = oneMinute, initialState = false, events = defaultEvents$1) {
|
|
926
|
-
const [state, setState] =
|
|
927
|
-
|
|
931
|
+
const [state, setState] = React.useState(initialState);
|
|
932
|
+
React.useEffect(() => {
|
|
928
933
|
let mounted = true;
|
|
929
934
|
let timeout;
|
|
930
935
|
let localState = state;
|
|
@@ -963,8 +968,8 @@ function useIdle(ms = oneMinute, initialState = false, events = defaultEvents$1)
|
|
|
963
968
|
}
|
|
964
969
|
|
|
965
970
|
function useMediaDevices() {
|
|
966
|
-
const [state, setState] =
|
|
967
|
-
|
|
971
|
+
const [state, setState] = React.useState({ devices: [] });
|
|
972
|
+
React.useEffect(() => {
|
|
968
973
|
let mounted = true;
|
|
969
974
|
const onChange = () => {
|
|
970
975
|
navigator.mediaDevices.enumerateDevices().then((devices) => {
|
|
@@ -1002,7 +1007,7 @@ function useTextDirection(options = {}) {
|
|
|
1002
1007
|
return initialValue;
|
|
1003
1008
|
}
|
|
1004
1009
|
};
|
|
1005
|
-
const [value, setValue] =
|
|
1010
|
+
const [value, setValue] = React.useState(getValue());
|
|
1006
1011
|
const set = (value2) => {
|
|
1007
1012
|
var _a, _b;
|
|
1008
1013
|
if (!isBrowser) {
|
|
@@ -1071,10 +1076,10 @@ function useMouse(target) {
|
|
|
1071
1076
|
|
|
1072
1077
|
function useFps(options) {
|
|
1073
1078
|
var _a;
|
|
1074
|
-
const [fps, setFps] =
|
|
1079
|
+
const [fps, setFps] = React.useState(0);
|
|
1075
1080
|
const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;
|
|
1076
|
-
const last =
|
|
1077
|
-
const ticks =
|
|
1081
|
+
const last = React.useRef(performance.now());
|
|
1082
|
+
const ticks = React.useRef(0);
|
|
1078
1083
|
useRafFn(() => {
|
|
1079
1084
|
ticks.current += 1;
|
|
1080
1085
|
if (ticks.current >= every) {
|
|
@@ -1105,20 +1110,20 @@ function useGeolocation(options = {}) {
|
|
|
1105
1110
|
maximumAge = 3e4,
|
|
1106
1111
|
timeout = 27e3
|
|
1107
1112
|
} = options;
|
|
1108
|
-
const [coordinates, setCoordinates] =
|
|
1109
|
-
const [locatedAt, setLocatedAt] =
|
|
1110
|
-
const [error, setError] =
|
|
1111
|
-
const updatePosition =
|
|
1113
|
+
const [coordinates, setCoordinates] = React.useState(initCoord);
|
|
1114
|
+
const [locatedAt, setLocatedAt] = React.useState(null);
|
|
1115
|
+
const [error, setError] = React.useState(null);
|
|
1116
|
+
const updatePosition = React.useCallback((position) => {
|
|
1112
1117
|
setCoordinates(position.coords);
|
|
1113
1118
|
setLocatedAt(position.timestamp);
|
|
1114
1119
|
setError(null);
|
|
1115
1120
|
}, []);
|
|
1116
|
-
const updateError =
|
|
1121
|
+
const updateError = React.useCallback((err) => {
|
|
1117
1122
|
setCoordinates(initCoord);
|
|
1118
1123
|
setLocatedAt(null);
|
|
1119
1124
|
setError(err);
|
|
1120
1125
|
}, []);
|
|
1121
|
-
|
|
1126
|
+
React.useEffect(() => {
|
|
1122
1127
|
navigator.geolocation.getCurrentPosition(updatePosition, updateError);
|
|
1123
1128
|
const watchId = navigator.geolocation.watchPosition(
|
|
1124
1129
|
updatePosition,
|
|
@@ -1337,7 +1342,7 @@ function useFullscreen(target, options) {
|
|
|
1337
1342
|
const { onExit, onEnter } = options || {};
|
|
1338
1343
|
const onExitRef = useLatest(onExit);
|
|
1339
1344
|
const onEnterRef = useLatest(onEnter);
|
|
1340
|
-
const [state, setState] =
|
|
1345
|
+
const [state, setState] = React.useState(false);
|
|
1341
1346
|
const onChange = () => {
|
|
1342
1347
|
var _a, _b;
|
|
1343
1348
|
if (screenfull.isEnabled) {
|
|
@@ -1411,8 +1416,8 @@ function getConnectionState(previousState) {
|
|
|
1411
1416
|
};
|
|
1412
1417
|
}
|
|
1413
1418
|
function useNetwork() {
|
|
1414
|
-
const [state, setState] =
|
|
1415
|
-
|
|
1419
|
+
const [state, setState] = React.useState(getConnectionState);
|
|
1420
|
+
React.useEffect(() => {
|
|
1416
1421
|
const handleStateChange = () => {
|
|
1417
1422
|
setState(getConnectionState);
|
|
1418
1423
|
};
|
|
@@ -1442,8 +1447,8 @@ const defaultState = {
|
|
|
1442
1447
|
type: "landscape-primary"
|
|
1443
1448
|
};
|
|
1444
1449
|
function useOrientation(initialState = defaultState) {
|
|
1445
|
-
const [state, setState] =
|
|
1446
|
-
|
|
1450
|
+
const [state, setState] = React.useState(initialState);
|
|
1451
|
+
React.useEffect(() => {
|
|
1447
1452
|
const screen = window.screen;
|
|
1448
1453
|
let mounted = true;
|
|
1449
1454
|
const onChange = () => {
|
|
@@ -1490,8 +1495,8 @@ function useOrientation(initialState = defaultState) {
|
|
|
1490
1495
|
|
|
1491
1496
|
function useIntersectionObserver(target, callback, options = {}) {
|
|
1492
1497
|
const savedCallback = useLatest(callback);
|
|
1493
|
-
const observerRef =
|
|
1494
|
-
const stop =
|
|
1498
|
+
const observerRef = React.useRef();
|
|
1499
|
+
const stop = React.useCallback(() => {
|
|
1495
1500
|
if (observerRef.current) {
|
|
1496
1501
|
observerRef.current.disconnect();
|
|
1497
1502
|
}
|
|
@@ -1512,7 +1517,7 @@ function useIntersectionObserver(target, callback, options = {}) {
|
|
|
1512
1517
|
}
|
|
1513
1518
|
|
|
1514
1519
|
function usePageLeave() {
|
|
1515
|
-
const [isLeft, setIsLeft] =
|
|
1520
|
+
const [isLeft, setIsLeft] = React.useState(false);
|
|
1516
1521
|
const handler = (event) => {
|
|
1517
1522
|
if (!window)
|
|
1518
1523
|
return;
|
|
@@ -1527,7 +1532,7 @@ function usePageLeave() {
|
|
|
1527
1532
|
}
|
|
1528
1533
|
|
|
1529
1534
|
function useDocumentVisibility() {
|
|
1530
|
-
const [visible, setVisible] =
|
|
1535
|
+
const [visible, setVisible] = React.useState(() => {
|
|
1531
1536
|
if (typeof document === "undefined") {
|
|
1532
1537
|
return "visible";
|
|
1533
1538
|
} else {
|
|
@@ -1546,8 +1551,8 @@ function useDocumentVisibility() {
|
|
|
1546
1551
|
|
|
1547
1552
|
function useResizeObserver(target, callback, options = {}) {
|
|
1548
1553
|
const savedCallback = useLatest(callback);
|
|
1549
|
-
const observerRef =
|
|
1550
|
-
const stop =
|
|
1554
|
+
const observerRef = React.useRef();
|
|
1555
|
+
const stop = React.useCallback(() => {
|
|
1551
1556
|
if (observerRef.current) {
|
|
1552
1557
|
observerRef.current.disconnect();
|
|
1553
1558
|
}
|
|
@@ -1565,8 +1570,8 @@ function useResizeObserver(target, callback, options = {}) {
|
|
|
1565
1570
|
}
|
|
1566
1571
|
|
|
1567
1572
|
function useDropZone(target, onDrop) {
|
|
1568
|
-
const [over, setOver] =
|
|
1569
|
-
const counter =
|
|
1573
|
+
const [over, setOver] = React.useState(false);
|
|
1574
|
+
const counter = React.useRef(0);
|
|
1570
1575
|
const element = getTargetElement(target);
|
|
1571
1576
|
useEventListener(
|
|
1572
1577
|
"dragenter",
|
|
@@ -1631,9 +1636,9 @@ const DEFAULT_OPTIONS = {
|
|
|
1631
1636
|
accept: "*"
|
|
1632
1637
|
};
|
|
1633
1638
|
function useFileDialog(options = {}) {
|
|
1634
|
-
const [files, setFiles] =
|
|
1635
|
-
const inputRef =
|
|
1636
|
-
const initFn =
|
|
1639
|
+
const [files, setFiles] = React.useState(null);
|
|
1640
|
+
const inputRef = React.useRef();
|
|
1641
|
+
const initFn = React.useCallback(() => {
|
|
1637
1642
|
if (typeof document === "undefined") {
|
|
1638
1643
|
return void 0;
|
|
1639
1644
|
}
|
|
@@ -1683,16 +1688,16 @@ function useScroll(target, options = {}) {
|
|
|
1683
1688
|
passive: true
|
|
1684
1689
|
}
|
|
1685
1690
|
} = options;
|
|
1686
|
-
const [x, setX] =
|
|
1687
|
-
const [y, setY] =
|
|
1688
|
-
const [isScrolling, setIsScrolling] =
|
|
1689
|
-
const [arrivedState, setArrivedState] =
|
|
1691
|
+
const [x, setX] = React.useState(0);
|
|
1692
|
+
const [y, setY] = React.useState(0);
|
|
1693
|
+
const [isScrolling, setIsScrolling] = React.useState(false);
|
|
1694
|
+
const [arrivedState, setArrivedState] = React.useState({
|
|
1690
1695
|
left: true,
|
|
1691
1696
|
right: false,
|
|
1692
1697
|
top: true,
|
|
1693
1698
|
bottom: false
|
|
1694
1699
|
});
|
|
1695
|
-
const [directions, setDirections] =
|
|
1700
|
+
const [directions, setDirections] = React.useState({
|
|
1696
1701
|
left: false,
|
|
1697
1702
|
right: false,
|
|
1698
1703
|
top: false,
|
|
@@ -1814,7 +1819,7 @@ const defaultEvents = [
|
|
|
1814
1819
|
];
|
|
1815
1820
|
function useKeyModifier(modifier, options = {}) {
|
|
1816
1821
|
const { events = defaultEvents, initial = false } = options;
|
|
1817
|
-
const [state, setState] =
|
|
1822
|
+
const [state, setState] = React.useState(initial);
|
|
1818
1823
|
useMount(() => {
|
|
1819
1824
|
events.forEach((listenEvent) => {
|
|
1820
1825
|
on(document, listenEvent, (evt) => {
|
|
@@ -1838,16 +1843,16 @@ function useKeyModifier(modifier, options = {}) {
|
|
|
1838
1843
|
|
|
1839
1844
|
function useMousePressed(target, options = {}) {
|
|
1840
1845
|
const { touch = true, drag = true, initialValue = false } = options;
|
|
1841
|
-
const [pressed, setPressed] =
|
|
1842
|
-
const [sourceType, setSourceType] =
|
|
1843
|
-
const onPressed =
|
|
1846
|
+
const [pressed, setPressed] = React.useState(initialValue);
|
|
1847
|
+
const [sourceType, setSourceType] = React.useState(null);
|
|
1848
|
+
const onPressed = React.useCallback(
|
|
1844
1849
|
(srcType) => () => {
|
|
1845
1850
|
setPressed(true);
|
|
1846
1851
|
setSourceType(srcType);
|
|
1847
1852
|
},
|
|
1848
1853
|
[]
|
|
1849
1854
|
);
|
|
1850
|
-
const onReleased =
|
|
1855
|
+
const onReleased = React.useCallback(() => {
|
|
1851
1856
|
setPressed(false);
|
|
1852
1857
|
setSourceType(null);
|
|
1853
1858
|
}, []);
|
|
@@ -1905,8 +1910,8 @@ function preventDefault(rawEvent) {
|
|
|
1905
1910
|
return false;
|
|
1906
1911
|
}
|
|
1907
1912
|
function useScrollLock(target, initialState = false) {
|
|
1908
|
-
const [locked, setLocked] =
|
|
1909
|
-
const initialOverflowRef =
|
|
1913
|
+
const [locked, setLocked] = React.useState(initialState);
|
|
1914
|
+
const initialOverflowRef = React.useRef("scroll");
|
|
1910
1915
|
useMount(() => {
|
|
1911
1916
|
const element = getTargetElement(target);
|
|
1912
1917
|
if (element) {
|
|
@@ -1950,8 +1955,8 @@ function useScrollLock(target, initialState = false) {
|
|
|
1950
1955
|
|
|
1951
1956
|
function useElementSize(target, options = {}) {
|
|
1952
1957
|
const { box = "content-box" } = options;
|
|
1953
|
-
const [width, setWidth] =
|
|
1954
|
-
const [height, setHeight] =
|
|
1958
|
+
const [width, setWidth] = React.useState(0);
|
|
1959
|
+
const [height, setHeight] = React.useState(0);
|
|
1955
1960
|
useResizeObserver(
|
|
1956
1961
|
target,
|
|
1957
1962
|
([entry]) => {
|
|
@@ -1970,12 +1975,12 @@ function useElementSize(target, options = {}) {
|
|
|
1970
1975
|
}
|
|
1971
1976
|
|
|
1972
1977
|
function useVirtualList(list = [], options) {
|
|
1973
|
-
const containerRef =
|
|
1978
|
+
const containerRef = React.useRef(null);
|
|
1974
1979
|
const [width, height] = useElementSize(containerRef);
|
|
1975
|
-
const [currentList, setCurrentList] =
|
|
1980
|
+
const [currentList, setCurrentList] = React.useState([]);
|
|
1976
1981
|
const { itemHeight, overscan = 5, containerHeight = 300 } = options;
|
|
1977
|
-
const state =
|
|
1978
|
-
const getViewCapacity =
|
|
1982
|
+
const state = React.useRef({ start: 0, end: 10 });
|
|
1983
|
+
const getViewCapacity = React.useCallback(
|
|
1979
1984
|
(containerHeight2) => {
|
|
1980
1985
|
if (typeof itemHeight === "number") {
|
|
1981
1986
|
return Math.ceil(containerHeight2 / itemHeight);
|
|
@@ -1995,7 +2000,7 @@ function useVirtualList(list = [], options) {
|
|
|
1995
2000
|
},
|
|
1996
2001
|
[itemHeight, list]
|
|
1997
2002
|
);
|
|
1998
|
-
const getOffset =
|
|
2003
|
+
const getOffset = React.useCallback(
|
|
1999
2004
|
(scrollTop) => {
|
|
2000
2005
|
if (typeof itemHeight === "number")
|
|
2001
2006
|
return Math.floor(scrollTop / itemHeight) + 1;
|
|
@@ -2032,16 +2037,16 @@ function useVirtualList(list = [], options) {
|
|
|
2032
2037
|
);
|
|
2033
2038
|
}
|
|
2034
2039
|
});
|
|
2035
|
-
|
|
2040
|
+
React.useEffect(() => {
|
|
2036
2041
|
calculateRange();
|
|
2037
2042
|
}, [width, height, list, calculateRange]);
|
|
2038
|
-
const totalHeight =
|
|
2043
|
+
const totalHeight = React.useMemo(() => {
|
|
2039
2044
|
if (typeof itemHeight === "number") {
|
|
2040
2045
|
return list.length * itemHeight;
|
|
2041
2046
|
}
|
|
2042
2047
|
return list.reduce((sum, _, index) => sum + itemHeight(index), 0);
|
|
2043
2048
|
}, [itemHeight, list]);
|
|
2044
|
-
const getDistanceTop =
|
|
2049
|
+
const getDistanceTop = React.useCallback(
|
|
2045
2050
|
(index) => {
|
|
2046
2051
|
if (typeof itemHeight === "number") {
|
|
2047
2052
|
const height3 = index * itemHeight;
|
|
@@ -2058,11 +2063,11 @@ function useVirtualList(list = [], options) {
|
|
|
2058
2063
|
calculateRange();
|
|
2059
2064
|
}
|
|
2060
2065
|
});
|
|
2061
|
-
const offsetTop =
|
|
2066
|
+
const offsetTop = React.useMemo(
|
|
2062
2067
|
() => getDistanceTop(state.current.start),
|
|
2063
2068
|
[getDistanceTop]
|
|
2064
2069
|
);
|
|
2065
|
-
const wrapperProps =
|
|
2070
|
+
const wrapperProps = React.useMemo(() => {
|
|
2066
2071
|
return {
|
|
2067
2072
|
style: {
|
|
2068
2073
|
width: "100%",
|
|
@@ -2071,7 +2076,7 @@ function useVirtualList(list = [], options) {
|
|
|
2071
2076
|
}
|
|
2072
2077
|
};
|
|
2073
2078
|
}, [offsetTop, totalHeight]);
|
|
2074
|
-
const containerStyle =
|
|
2079
|
+
const containerStyle = React.useMemo(() => {
|
|
2075
2080
|
return { overflowY: "auto", height: containerHeight };
|
|
2076
2081
|
}, [containerHeight]);
|
|
2077
2082
|
return {
|
|
@@ -2108,8 +2113,8 @@ function usePreferredContrast(defaultState) {
|
|
|
2108
2113
|
}
|
|
2109
2114
|
|
|
2110
2115
|
function useActiveElement() {
|
|
2111
|
-
const [active, setActive] =
|
|
2112
|
-
const listener =
|
|
2116
|
+
const [active, setActive] = React.useState(null);
|
|
2117
|
+
const listener = React.useCallback(() => {
|
|
2113
2118
|
setActive(window == null ? void 0 : window.document.activeElement);
|
|
2114
2119
|
}, []);
|
|
2115
2120
|
useEventListener("blur", listener, () => window, true);
|
|
@@ -2124,10 +2129,10 @@ function useDraggable(target, options = {}) {
|
|
|
2124
2129
|
defaultWindow
|
|
2125
2130
|
);
|
|
2126
2131
|
const draggingHandle = getTargetElement((_a = options.handle) != null ? _a : target);
|
|
2127
|
-
const [position, setPositon] =
|
|
2132
|
+
const [position, setPositon] = React.useState(
|
|
2128
2133
|
(_b = options.initialValue) != null ? _b : { x: 0, y: 0 }
|
|
2129
2134
|
);
|
|
2130
|
-
const [pressedDelta, setPressedDelta] =
|
|
2135
|
+
const [pressedDelta, setPressedDelta] = React.useState();
|
|
2131
2136
|
const filterEvent = (e) => {
|
|
2132
2137
|
if (options.pointerTypes) {
|
|
2133
2138
|
return options.pointerTypes.includes(e.pointerType);
|
|
@@ -2202,14 +2207,14 @@ function useElementBounding(target, options = {}) {
|
|
|
2202
2207
|
windowScroll = true,
|
|
2203
2208
|
immediate = true
|
|
2204
2209
|
} = options;
|
|
2205
|
-
const [height, setHeight] =
|
|
2206
|
-
const [bottom, setBottom] =
|
|
2207
|
-
const [left, setLeft] =
|
|
2208
|
-
const [right, setRight] =
|
|
2209
|
-
const [top, setTop] =
|
|
2210
|
-
const [width, setWidth] =
|
|
2211
|
-
const [x, setX] =
|
|
2212
|
-
const [y, setY] =
|
|
2210
|
+
const [height, setHeight] = React.useState(0);
|
|
2211
|
+
const [bottom, setBottom] = React.useState(0);
|
|
2212
|
+
const [left, setLeft] = React.useState(0);
|
|
2213
|
+
const [right, setRight] = React.useState(0);
|
|
2214
|
+
const [top, setTop] = React.useState(0);
|
|
2215
|
+
const [width, setWidth] = React.useState(0);
|
|
2216
|
+
const [x, setX] = React.useState(0);
|
|
2217
|
+
const [y, setY] = React.useState(0);
|
|
2213
2218
|
const update = useEvent(() => {
|
|
2214
2219
|
const element = getTargetElement(target);
|
|
2215
2220
|
if (!element) {
|
|
@@ -2236,12 +2241,12 @@ function useElementBounding(target, options = {}) {
|
|
|
2236
2241
|
setY(rect.y);
|
|
2237
2242
|
});
|
|
2238
2243
|
useResizeObserver(target, update);
|
|
2239
|
-
|
|
2244
|
+
React.useEffect(() => {
|
|
2240
2245
|
if (immediate) {
|
|
2241
2246
|
update();
|
|
2242
2247
|
}
|
|
2243
2248
|
}, [immediate, update]);
|
|
2244
|
-
|
|
2249
|
+
React.useEffect(() => {
|
|
2245
2250
|
if (windowScroll) {
|
|
2246
2251
|
window.addEventListener("scroll", update, { passive: true });
|
|
2247
2252
|
}
|
|
@@ -2271,8 +2276,8 @@ function useElementBounding(target, options = {}) {
|
|
|
2271
2276
|
}
|
|
2272
2277
|
|
|
2273
2278
|
function useElementVisibility(target, options = {}) {
|
|
2274
|
-
const [visible, setVisible] =
|
|
2275
|
-
const callback =
|
|
2279
|
+
const [visible, setVisible] = React.useState(false);
|
|
2280
|
+
const callback = React.useCallback((entries) => {
|
|
2276
2281
|
const rect = entries[0].boundingClientRect;
|
|
2277
2282
|
setVisible(
|
|
2278
2283
|
rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0
|
|
@@ -2283,7 +2288,7 @@ function useElementVisibility(target, options = {}) {
|
|
|
2283
2288
|
}
|
|
2284
2289
|
|
|
2285
2290
|
function useWindowsFocus() {
|
|
2286
|
-
const [focused, setFocused] =
|
|
2291
|
+
const [focused, setFocused] = React.useState(() => {
|
|
2287
2292
|
if (!isBrowser) {
|
|
2288
2293
|
return false;
|
|
2289
2294
|
}
|
|
@@ -2299,7 +2304,7 @@ function useWindowsFocus() {
|
|
|
2299
2304
|
}
|
|
2300
2305
|
|
|
2301
2306
|
function useWindowSize() {
|
|
2302
|
-
const [windowSize, setWindowSize] =
|
|
2307
|
+
const [windowSize, setWindowSize] = React.useState({
|
|
2303
2308
|
width: 0,
|
|
2304
2309
|
height: 0
|
|
2305
2310
|
});
|
|
@@ -2355,15 +2360,15 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2355
2360
|
});
|
|
2356
2361
|
};
|
|
2357
2362
|
function useClipBorad() {
|
|
2358
|
-
const [text, setText] =
|
|
2359
|
-
const updateText =
|
|
2363
|
+
const [text, setText] = React.useState("");
|
|
2364
|
+
const updateText = React.useCallback(() => {
|
|
2360
2365
|
window.navigator.clipboard.readText().then((value) => {
|
|
2361
2366
|
setText(value);
|
|
2362
2367
|
});
|
|
2363
2368
|
}, []);
|
|
2364
2369
|
useEventListener("copy", updateText);
|
|
2365
2370
|
useEventListener("cut", updateText);
|
|
2366
|
-
const copy =
|
|
2371
|
+
const copy = React.useCallback((txt) => __async(this, null, function* () {
|
|
2367
2372
|
setText(txt);
|
|
2368
2373
|
yield window.navigator.clipboard.writeText(txt);
|
|
2369
2374
|
}), []);
|
|
@@ -2392,7 +2397,7 @@ function useClickOutSide(target, handler) {
|
|
|
2392
2397
|
}
|
|
2393
2398
|
|
|
2394
2399
|
function useCycleList(list, i = 0) {
|
|
2395
|
-
const [index, setIndex] =
|
|
2400
|
+
const [index, setIndex] = React.useState(i);
|
|
2396
2401
|
const set = (i2) => {
|
|
2397
2402
|
const length = list.length;
|
|
2398
2403
|
const nextIndex = ((index + i2) % length + length) % length;
|
|
@@ -2408,7 +2413,7 @@ function useCycleList(list, i = 0) {
|
|
|
2408
2413
|
}
|
|
2409
2414
|
|
|
2410
2415
|
function useFocus(target, initialValue = false) {
|
|
2411
|
-
const [focus, innerSetFocus] =
|
|
2416
|
+
const [focus, innerSetFocus] = React.useState(initialValue);
|
|
2412
2417
|
useEventListener("focus", () => innerSetFocus(true), target);
|
|
2413
2418
|
useEventListener("blur", () => innerSetFocus(false), target);
|
|
2414
2419
|
useMount(() => {
|
|
@@ -2433,10 +2438,10 @@ function useControlled({
|
|
|
2433
2438
|
defaultValue: defaultProp,
|
|
2434
2439
|
state = "value"
|
|
2435
2440
|
}) {
|
|
2436
|
-
const { current: isControlled } =
|
|
2437
|
-
const [valueState, setValue] =
|
|
2441
|
+
const { current: isControlled } = React.useRef(controlled !== void 0);
|
|
2442
|
+
const [valueState, setValue] = React.useState(defaultProp);
|
|
2438
2443
|
const value = isControlled ? controlled : valueState;
|
|
2439
|
-
|
|
2444
|
+
React.useEffect(() => {
|
|
2440
2445
|
if (isControlled !== (controlled !== void 0)) {
|
|
2441
2446
|
console.error(
|
|
2442
2447
|
[
|
|
@@ -2449,7 +2454,7 @@ function useControlled({
|
|
|
2449
2454
|
);
|
|
2450
2455
|
}
|
|
2451
2456
|
}, [state, controlled]);
|
|
2452
|
-
const setValueIfUncontrolled =
|
|
2457
|
+
const setValueIfUncontrolled = React.useCallback((newValue) => {
|
|
2453
2458
|
if (!isControlled) {
|
|
2454
2459
|
setValue(newValue);
|
|
2455
2460
|
}
|
|
@@ -2457,6 +2462,24 @@ function useControlled({
|
|
|
2457
2462
|
return [value, setValueIfUncontrolled];
|
|
2458
2463
|
}
|
|
2459
2464
|
|
|
2465
|
+
const record = /* @__PURE__ */ new WeakSet();
|
|
2466
|
+
const createOnceEffect = (hook) => (effect, deps) => {
|
|
2467
|
+
const onceWrapper = () => {
|
|
2468
|
+
const shouldStart = !record.has(effect);
|
|
2469
|
+
if (shouldStart) {
|
|
2470
|
+
record.add(effect);
|
|
2471
|
+
effect();
|
|
2472
|
+
}
|
|
2473
|
+
};
|
|
2474
|
+
hook(() => {
|
|
2475
|
+
onceWrapper();
|
|
2476
|
+
}, deps);
|
|
2477
|
+
};
|
|
2478
|
+
|
|
2479
|
+
var useOnceEffect = createOnceEffect(React.useEffect);
|
|
2480
|
+
|
|
2481
|
+
var useOnceLayoutEffect = createOnceEffect(React.useLayoutEffect);
|
|
2482
|
+
|
|
2460
2483
|
exports.useActiveElement = useActiveElement;
|
|
2461
2484
|
exports.useClickOutside = useClickOutSide;
|
|
2462
2485
|
exports.useClipboard = useClipBorad;
|
|
@@ -2502,6 +2525,8 @@ exports.useMousePressed = useMousePressed;
|
|
|
2502
2525
|
exports.useMutationObserver = useMutationObserver;
|
|
2503
2526
|
exports.useNetwork = useNetwork;
|
|
2504
2527
|
exports.useObjectUrl = useObjectUrl;
|
|
2528
|
+
exports.useOnceEffect = useOnceEffect;
|
|
2529
|
+
exports.useOnceLayoutEffect = useOnceLayoutEffect;
|
|
2505
2530
|
exports.useOnline = useOnline;
|
|
2506
2531
|
exports.useOrientation = useOrientation;
|
|
2507
2532
|
exports.usePageLeave = usePageLeave;
|
package/dist/index.d.ts
CHANGED
|
@@ -8,9 +8,9 @@ declare function useLatest<T>(value: T): MutableRefObject<T>;
|
|
|
8
8
|
|
|
9
9
|
declare function useFirstMountState(): boolean;
|
|
10
10
|
|
|
11
|
-
declare const _default$
|
|
11
|
+
declare const _default$5: typeof useEffect | typeof react.useLayoutEffect;
|
|
12
12
|
|
|
13
|
-
declare const _default$
|
|
13
|
+
declare const _default$4: typeof react.useEffect | typeof useLayoutEffect;
|
|
14
14
|
|
|
15
15
|
interface Serializer<T> {
|
|
16
16
|
read(raw: string): T;
|
|
@@ -49,6 +49,9 @@ interface Position {
|
|
|
49
49
|
y: number;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* keep function reference immutable
|
|
54
|
+
*/
|
|
52
55
|
declare function useEvent<T extends Fn>(fn: T): T;
|
|
53
56
|
|
|
54
57
|
declare function useToggle(initialValue: boolean): [boolean, (nextValue?: any) => void];
|
|
@@ -248,7 +251,7 @@ declare function useObjectUrl(object: Blob | MediaSource | undefined): string |
|
|
|
248
251
|
|
|
249
252
|
declare function useIdle(ms?: number, initialState?: boolean, events?: (keyof WindowEventMap)[]): boolean;
|
|
250
253
|
|
|
251
|
-
declare const _default$
|
|
254
|
+
declare const _default$3: () => {};
|
|
252
255
|
|
|
253
256
|
type UseTextDirectionValue = "ltr" | "rtl" | "auto";
|
|
254
257
|
interface UseTextDirectionOptions {
|
|
@@ -290,7 +293,7 @@ interface UseFpsOptions {
|
|
|
290
293
|
*/
|
|
291
294
|
every?: number;
|
|
292
295
|
}
|
|
293
|
-
declare const _default: (options?: UseFpsOptions | undefined) => number;
|
|
296
|
+
declare const _default$2: (options?: UseFpsOptions | undefined) => number;
|
|
294
297
|
|
|
295
298
|
declare function useGeolocation(options?: Partial<PositionOptions>): {
|
|
296
299
|
readonly coordinates: GeolocationCoordinates;
|
|
@@ -719,4 +722,8 @@ interface IProps<T> {
|
|
|
719
722
|
}
|
|
720
723
|
declare function useControlled<T = string>({ controlled, defaultValue, state, }: IProps<T>): readonly [T, (newValue: T) => void];
|
|
721
724
|
|
|
722
|
-
|
|
725
|
+
declare const _default$1: typeof useEffect | typeof react.useLayoutEffect;
|
|
726
|
+
|
|
727
|
+
declare const _default: typeof react.useEffect | typeof useLayoutEffect;
|
|
728
|
+
|
|
729
|
+
export { useActiveElement, useClickOutSide as useClickOutside, useClipBorad as useClipboard, useControlled, useCounter, useCustomCompareEffect, useCycleList, useDarkMode, useDebounce, useDebounceFn, useDeepCompareEffect, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementSize, useElementVisibility, useEvent, useEventEmitter, useEventListener, useFavicon, useFileDialog, useFirstMountState, useFocus, _default$2 as useFps, useFullscreen, useGeolocation, useIdle, useInfiniteScroll, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyModifier, useLatest, useLocalStorage, useLongPress, _default$3 as useMediaDevices, useMediaQuery, useMount, useMountedState, useMouse, useMousePressed, useMutationObserver, useNetwork, useObjectUrl, _default$1 as useOnceEffect, _default as useOnceLayoutEffect, 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$5 as useUpdateEffect, _default$4 as useUpdateLayoutEffect, useVirtualList, useWindowScroll, useWindowSize, useWindowsFocus };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useRef, useEffect, useLayoutEffect, useCallback, useState, useReducer, useMemo } from 'react';
|
|
1
|
+
import React, { useRef, useEffect, useLayoutEffect, useCallback, useState, useReducer, useMemo } from 'react';
|
|
2
2
|
import { throttle, debounce, isEqual } from 'lodash';
|
|
3
3
|
|
|
4
4
|
function usePrevious(state) {
|
|
@@ -47,6 +47,7 @@ const isNavigator = typeof navigator !== "undefined";
|
|
|
47
47
|
const noop = () => {
|
|
48
48
|
};
|
|
49
49
|
const isIOS = isBrowser && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
|
|
50
|
+
!React.useId;
|
|
50
51
|
|
|
51
52
|
function guessSerializerType(rawInit) {
|
|
52
53
|
return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : Array.isArray(rawInit) ? "object" : !Number.isNaN(rawInit) ? "number" : "any";
|
|
@@ -2453,4 +2454,22 @@ function useControlled({
|
|
|
2453
2454
|
return [value, setValueIfUncontrolled];
|
|
2454
2455
|
}
|
|
2455
2456
|
|
|
2456
|
-
|
|
2457
|
+
const record = /* @__PURE__ */ new WeakSet();
|
|
2458
|
+
const createOnceEffect = (hook) => (effect, deps) => {
|
|
2459
|
+
const onceWrapper = () => {
|
|
2460
|
+
const shouldStart = !record.has(effect);
|
|
2461
|
+
if (shouldStart) {
|
|
2462
|
+
record.add(effect);
|
|
2463
|
+
effect();
|
|
2464
|
+
}
|
|
2465
|
+
};
|
|
2466
|
+
hook(() => {
|
|
2467
|
+
onceWrapper();
|
|
2468
|
+
}, deps);
|
|
2469
|
+
};
|
|
2470
|
+
|
|
2471
|
+
var useOnceEffect = createOnceEffect(useEffect);
|
|
2472
|
+
|
|
2473
|
+
var useOnceLayoutEffect = createOnceEffect(useLayoutEffect);
|
|
2474
|
+
|
|
2475
|
+
export { useActiveElement, useClickOutSide as useClickOutside, useClipBorad as useClipboard, useControlled, useCounter, useCustomCompareEffect, useCycleList, useDarkMode, useDebounce, useDebounceFn, useDeepCompareEffect, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementSize, useElementVisibility, useEvent, useEventEmitter, useEventListener, useFavicon, useFileDialog, useFirstMountState, useFocus, useFps$1 as useFps, useFullscreen, useGeolocation, useIdle, useInfiniteScroll, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyModifier, useLatest, useLocalStorage, useLongPress, useMediaDevices$1 as useMediaDevices, useMediaQuery, useMount, useMountedState, useMouse, useMousePressed, useMutationObserver, useNetwork, useObjectUrl, useOnceEffect, useOnceLayoutEffect, 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 };
|