@siberiacancode/reactuse 0.3.10 → 0.3.13
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/cjs/hooks/useActiveElement/useActiveElement.cjs +1 -1
- package/dist/cjs/hooks/useActiveElement/useActiveElement.cjs.map +1 -1
- package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs +1 -1
- package/dist/cjs/hooks/useAutoScroll/useAutoScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs +1 -1
- package/dist/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.cjs.map +1 -1
- package/dist/cjs/hooks/useHash/useHash.cjs +1 -1
- package/dist/cjs/hooks/useHash/useHash.cjs.map +1 -1
- package/dist/cjs/hooks/useHover/useHover.cjs +1 -1
- package/dist/cjs/hooks/useHover/useHover.cjs.map +1 -1
- package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs +1 -1
- package/dist/cjs/hooks/useInfiniteScroll/useInfiniteScroll.cjs.map +1 -1
- package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs +1 -1
- package/dist/cjs/hooks/useKeyPress/useKeyPress.cjs.map +1 -1
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs +1 -1
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.cjs.map +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
- package/dist/cjs/hooks/useMediaControls/useMediaControls.cjs.map +1 -1
- package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs +1 -1
- package/dist/cjs/hooks/usePostMessage/usePostMessage.cjs.map +1 -1
- package/dist/cjs/hooks/useProgress/useProgress.cjs +2 -0
- package/dist/cjs/hooks/useProgress/useProgress.cjs.map +1 -0
- package/dist/cjs/hooks/useSticky/useSticky.cjs +1 -1
- package/dist/cjs/hooks/useSticky/useSticky.cjs.map +1 -1
- package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs +1 -1
- package/dist/cjs/hooks/useWindowScroll/useWindowScroll.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/hooks/useActiveElement/useActiveElement.mjs +1 -1
- package/dist/esm/hooks/useActiveElement/useActiveElement.mjs.map +1 -1
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs +11 -11
- package/dist/esm/hooks/useAutoScroll/useAutoScroll.mjs.map +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs +9 -9
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +3 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.mjs.map +1 -1
- package/dist/esm/hooks/useHash/useHash.mjs +6 -3
- package/dist/esm/hooks/useHash/useHash.mjs.map +1 -1
- package/dist/esm/hooks/useHover/useHover.mjs +4 -4
- package/dist/esm/hooks/useHover/useHover.mjs.map +1 -1
- package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs +1 -1
- package/dist/esm/hooks/useInfiniteScroll/useInfiniteScroll.mjs.map +1 -1
- package/dist/esm/hooks/useKeyPress/useKeyPress.mjs +1 -1
- package/dist/esm/hooks/useKeyPress/useKeyPress.mjs.map +1 -1
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs +1 -1
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.mjs.map +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs +1 -4
- package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
- package/dist/esm/hooks/useMediaControls/useMediaControls.mjs.map +1 -1
- package/dist/esm/hooks/usePostMessage/usePostMessage.mjs +18 -14
- package/dist/esm/hooks/usePostMessage/usePostMessage.mjs.map +1 -1
- package/dist/esm/hooks/useProgress/useProgress.mjs +25 -0
- package/dist/esm/hooks/useProgress/useProgress.mjs.map +1 -0
- package/dist/esm/hooks/useSticky/useSticky.mjs +1 -1
- package/dist/esm/hooks/useSticky/useSticky.mjs.map +1 -1
- package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs +1 -4
- package/dist/esm/hooks/useWindowScroll/useWindowScroll.mjs.map +1 -1
- package/dist/esm/index.mjs +74 -72
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/hooks/time.d.ts +1 -0
- package/dist/types/hooks/useActiveElement/useActiveElement.d.ts +4 -3
- package/dist/types/hooks/useAutoScroll/useAutoScroll.d.ts +5 -3
- package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +5 -3
- package/dist/types/hooks/useDoubleClick/useDoubleClick.d.ts +7 -5
- package/dist/types/hooks/useFocusTrap/useFocusTrap.d.ts +2 -2
- package/dist/types/hooks/useHash/useHash.d.ts +10 -5
- package/dist/types/hooks/useHover/useHover.d.ts +8 -6
- package/dist/types/hooks/useInfiniteScroll/useInfiniteScroll.d.ts +12 -6
- package/dist/types/hooks/useKeyPress/useKeyPress.d.ts +10 -4
- package/dist/types/hooks/useKeysPressed/useKeysPressed.d.ts +10 -10
- package/dist/types/hooks/useLongPress/useLongPress.d.ts +9 -3
- package/dist/types/hooks/usePostMessage/usePostMessage.d.ts +5 -2
- package/dist/types/hooks/useProgress/useProgress.d.ts +51 -0
- package/dist/types/hooks/useSticky/useSticky.d.ts +5 -5
- package/package.json +89 -89
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { HookTarget } from '../../utils/helpers';
|
|
2
2
|
import { StateRef } from '../useRefState/useRefState';
|
|
3
3
|
/** The use active element return type */
|
|
4
|
-
export
|
|
4
|
+
export interface UseActiveElementReturn<ActiveElement extends HTMLElement = HTMLElement> {
|
|
5
|
+
value: ActiveElement | null;
|
|
6
|
+
}
|
|
5
7
|
export interface UseActiveElement {
|
|
6
8
|
(): UseActiveElementReturn;
|
|
7
9
|
<Target extends Element, ActiveElement extends HTMLElement = HTMLElement>(target?: never): {
|
|
8
10
|
ref: StateRef<Target>;
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
+
} & UseActiveElementReturn<ActiveElement>;
|
|
11
12
|
<ActiveElement extends HTMLElement = HTMLElement>(target: HookTarget): UseActiveElementReturn<ActiveElement>;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
@@ -9,7 +9,9 @@ export interface UseAutoScrollOptions {
|
|
|
9
9
|
}
|
|
10
10
|
export interface UseAutoScroll {
|
|
11
11
|
(target: HookTarget, options?: UseAutoScrollOptions): void;
|
|
12
|
-
<Target extends HTMLElement>(options?: UseAutoScrollOptions):
|
|
12
|
+
<Target extends HTMLElement>(options?: UseAutoScrollOptions): {
|
|
13
|
+
ref: StateRef<Target>;
|
|
14
|
+
};
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* @name useAutoScroll
|
|
@@ -28,9 +30,9 @@ export interface UseAutoScroll {
|
|
|
28
30
|
* @overload
|
|
29
31
|
* @template Target
|
|
30
32
|
* @param {boolean} [options.enabled] Whether auto-scrolling is enabled
|
|
31
|
-
* @returns {StateRef<Target>} A React ref to attach to the list element
|
|
33
|
+
* @returns {{ ref: StateRef<Target> }} A React ref to attach to the list element
|
|
32
34
|
*
|
|
33
35
|
* @example
|
|
34
|
-
* const ref = useAutoScroll();
|
|
36
|
+
* const { ref } = useAutoScroll();
|
|
35
37
|
*/
|
|
36
38
|
export declare const useAutoScroll: UseAutoScroll;
|
|
@@ -2,7 +2,9 @@ import { HookTarget } from '../../utils/helpers';
|
|
|
2
2
|
import { StateRef } from '../useRefState/useRefState';
|
|
3
3
|
export interface UseClickOutside {
|
|
4
4
|
(target: HookTarget, callback: (event: Event) => void): void;
|
|
5
|
-
<Target extends Element>(callback: (event: Event) => void, target?: never):
|
|
5
|
+
<Target extends Element>(callback: (event: Event) => void, target?: never): {
|
|
6
|
+
ref: StateRef<Target>;
|
|
7
|
+
};
|
|
6
8
|
}
|
|
7
9
|
/**
|
|
8
10
|
* @name useClickOutside
|
|
@@ -21,10 +23,10 @@ export interface UseClickOutside {
|
|
|
21
23
|
* @overload
|
|
22
24
|
* @template Target The target element(s)
|
|
23
25
|
* @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected
|
|
24
|
-
* @returns {StateRef<Target>} A ref to attach to the target element
|
|
26
|
+
* @returns {{ ref: StateRef<Target> }} A ref to attach to the target element
|
|
25
27
|
*
|
|
26
28
|
* @example
|
|
27
|
-
* const ref = useClickOutside<HTMLDivElement>(() => console.log('click outside'));
|
|
29
|
+
* const { ref } = useClickOutside<HTMLDivElement>(() => console.log('click outside'));
|
|
28
30
|
*
|
|
29
31
|
* @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useClickOutside.html}
|
|
30
32
|
*/
|
|
@@ -9,8 +9,10 @@ export interface UseDoubleClickOptions {
|
|
|
9
9
|
onSingleClick?: (event: DoubleClickEvents) => void;
|
|
10
10
|
}
|
|
11
11
|
export interface UseDoubleClick {
|
|
12
|
-
(target: HookTarget, callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions):
|
|
13
|
-
<Target extends Element>(callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions, target?: never):
|
|
12
|
+
(target: HookTarget, callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions): void;
|
|
13
|
+
<Target extends Element>(callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions, target?: never): {
|
|
14
|
+
ref: StateRef<Target>;
|
|
15
|
+
};
|
|
14
16
|
}
|
|
15
17
|
export declare const DEFAULT_THRESHOLD_TIME = 300;
|
|
16
18
|
/**
|
|
@@ -23,7 +25,7 @@ export declare const DEFAULT_THRESHOLD_TIME = 300;
|
|
|
23
25
|
* @param {HookTarget} target The target element to be double clicked
|
|
24
26
|
* @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click
|
|
25
27
|
* @param {UseDoubleClickOptions} [options] The options for the double click
|
|
26
|
-
* @returns {
|
|
28
|
+
* @returns {void} The double clicking state
|
|
27
29
|
*
|
|
28
30
|
* @example
|
|
29
31
|
* useDoubleClick(ref, () => console.log('double clicked'));
|
|
@@ -32,10 +34,10 @@ export declare const DEFAULT_THRESHOLD_TIME = 300;
|
|
|
32
34
|
* @template Target The target element
|
|
33
35
|
* @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click
|
|
34
36
|
* @param {UseDoubleClickOptions} [options] The options for the double click
|
|
35
|
-
* @returns {
|
|
37
|
+
* @returns {{ ref: StateRef<Target> }} The double clicking state
|
|
36
38
|
*
|
|
37
39
|
* @example
|
|
38
|
-
* const ref = useDoubleClick(() => console.log('double clicked'));
|
|
40
|
+
* const { ref } = useDoubleClick(() => console.log('double clicked'));
|
|
39
41
|
*
|
|
40
42
|
* @see {@link https://siberiacancode.github.io/reactuse/functions/hooks/useDoubleClick.html}
|
|
41
43
|
*/
|
|
@@ -27,7 +27,7 @@ export interface UseFocusTrap {
|
|
|
27
27
|
* @overload
|
|
28
28
|
* @param {HookTarget} target The target element for focus trap
|
|
29
29
|
* @param {boolean} [active=true] Whether focus trap is active
|
|
30
|
-
* @returns {UseFocusTrapReturn} Object with
|
|
30
|
+
* @returns {UseFocusTrapReturn} Object with the focus trap state and methods
|
|
31
31
|
*
|
|
32
32
|
* @example
|
|
33
33
|
* const { active, disable, toggle, enable } = useFocusTrap(ref, true);
|
|
@@ -35,7 +35,7 @@ export interface UseFocusTrap {
|
|
|
35
35
|
* @overload
|
|
36
36
|
* @template Target The target element type
|
|
37
37
|
* @param {boolean} [active=true] Whether focus trap is active
|
|
38
|
-
* @returns {UseFocusTrapReturn & { ref: StateRef<Target> }} Object with
|
|
38
|
+
* @returns {UseFocusTrapReturn & { ref: StateRef<Target> }} Object with the focus trap state and methods
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
41
41
|
* const { ref, active, disable, toggle, enable } = useFocusTrap(true);
|
|
@@ -9,7 +9,12 @@ export interface UseHashOptions {
|
|
|
9
9
|
onChange?: (hash: string) => void;
|
|
10
10
|
}
|
|
11
11
|
/** The use hash return type */
|
|
12
|
-
|
|
12
|
+
interface UseHashReturn {
|
|
13
|
+
/** The hash value */
|
|
14
|
+
value: string;
|
|
15
|
+
/** The function to set the hash value */
|
|
16
|
+
set: (value: string) => void;
|
|
17
|
+
}
|
|
13
18
|
export interface UseHash {
|
|
14
19
|
(initialValue?: string, options?: UseHashOptions): UseHashReturn;
|
|
15
20
|
(options?: UseHashOptions): UseHashReturn;
|
|
@@ -31,7 +36,7 @@ export interface UseHash {
|
|
|
31
36
|
* @returns {UseHashReturn} An array containing the hash value and a function to set the hash value
|
|
32
37
|
*
|
|
33
38
|
* @example
|
|
34
|
-
* const
|
|
39
|
+
* const { value, set } = useHash("initial");
|
|
35
40
|
*
|
|
36
41
|
* @overload
|
|
37
42
|
* @param {string} [initialValue] The initial hash value if no hash exists
|
|
@@ -39,7 +44,7 @@ export interface UseHash {
|
|
|
39
44
|
* @returns {UseHashReturn} An array containing the hash value and a function to set the hash value
|
|
40
45
|
*
|
|
41
46
|
* @example
|
|
42
|
-
* const
|
|
47
|
+
* const { value, set } = useHash("initial", (newHash) => console.log('callback'));
|
|
43
48
|
*
|
|
44
49
|
* @overload
|
|
45
50
|
* @param {UseHashOptions} [options] Configuration options
|
|
@@ -49,14 +54,14 @@ export interface UseHash {
|
|
|
49
54
|
* @returns {UseHashReturn} An array containing the hash value and a function to set the hash value
|
|
50
55
|
*
|
|
51
56
|
* @example
|
|
52
|
-
* const
|
|
57
|
+
* const { value, set } = useHash();
|
|
53
58
|
*
|
|
54
59
|
* @overload
|
|
55
60
|
* @param {(hash: string) => void} [callback] Callback function called when hash changes
|
|
56
61
|
* @returns {UseHashReturn} An array containing the hash value and a function to set the hash value
|
|
57
62
|
*
|
|
58
63
|
* @example
|
|
59
|
-
* const
|
|
64
|
+
* const { value, set } = useHash((newHash) => console.log('callback'));
|
|
60
65
|
*/
|
|
61
66
|
export declare const useHash: UseHash;
|
|
62
67
|
export {};
|
|
@@ -9,18 +9,20 @@ export interface UseHoverOptions {
|
|
|
9
9
|
/** The on leave callback */
|
|
10
10
|
onLeave?: (event: Event) => void;
|
|
11
11
|
}
|
|
12
|
+
/** The use hover return type */
|
|
12
13
|
export interface UseHoverReturn {
|
|
14
|
+
/** The value of the hover */
|
|
13
15
|
value: boolean;
|
|
14
16
|
}
|
|
15
17
|
export interface UseHover {
|
|
16
|
-
(target: HookTarget, callback?: (event: Event) => void):
|
|
17
|
-
(target: HookTarget, options?: UseHoverOptions):
|
|
18
|
-
<Target extends Element>(callback?: (event: Event) => void, target?: never): {
|
|
18
|
+
(target: HookTarget, callback?: (event: Event) => void): UseHoverReturn;
|
|
19
|
+
(target: HookTarget, options?: UseHoverOptions): UseHoverReturn;
|
|
20
|
+
<Target extends Element>(callback?: (event: Event) => void, target?: never): UseHoverReturn & {
|
|
19
21
|
ref: StateRef<Target>;
|
|
20
|
-
}
|
|
21
|
-
<Target extends Element>(options?: UseHoverOptions, target?: never): {
|
|
22
|
+
};
|
|
23
|
+
<Target extends Element>(options?: UseHoverOptions, target?: never): UseHoverReturn & {
|
|
22
24
|
ref: StateRef<Target>;
|
|
23
|
-
}
|
|
25
|
+
};
|
|
24
26
|
}
|
|
25
27
|
/**
|
|
26
28
|
* @name useHover
|
|
@@ -7,11 +7,17 @@ export interface UseInfiniteScrollOptions {
|
|
|
7
7
|
/** The distance in pixels to trigger the callback */
|
|
8
8
|
distance?: number;
|
|
9
9
|
}
|
|
10
|
+
/** The use infinite scroll return type */
|
|
11
|
+
export interface UseInfiniteScrollReturn {
|
|
12
|
+
/** The loading state of the infinite scroll */
|
|
13
|
+
loading: boolean;
|
|
14
|
+
/** The ref to attach to the element */
|
|
15
|
+
ref: StateRef<Element>;
|
|
16
|
+
}
|
|
10
17
|
export interface UseInfiniteScroll {
|
|
11
|
-
(target: HookTarget, callback: (event: Event) => void, options?: UseInfiniteScrollOptions):
|
|
12
|
-
<Target extends Element>(callback: (event: Event) => void, options?: UseInfiniteScrollOptions, target?: never): {
|
|
18
|
+
(target: HookTarget, callback: (event: Event) => void, options?: UseInfiniteScrollOptions): UseInfiniteScrollReturn;
|
|
19
|
+
<Target extends Element>(callback: (event: Event) => void, options?: UseInfiniteScrollOptions, target?: never): UseInfiniteScrollReturn & {
|
|
13
20
|
ref: StateRef<Target>;
|
|
14
|
-
loading: boolean;
|
|
15
21
|
};
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
@@ -25,7 +31,7 @@ export interface UseInfiniteScroll {
|
|
|
25
31
|
* @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected
|
|
26
32
|
* @param {number} [options.distance=10] The distance in pixels to trigger the callback
|
|
27
33
|
* @param {string} [options.direction='bottom'] The direction to trigger the callback
|
|
28
|
-
* @returns {{ ref: StateRef<Target
|
|
34
|
+
* @returns {UseInfiniteScrollReturn & { ref: StateRef<Target> }} An object containing the ref and loading
|
|
29
35
|
*
|
|
30
36
|
* @example
|
|
31
37
|
* const { ref, loading } = useInfiniteScroll(() => console.log('infinite scroll'));
|
|
@@ -35,9 +41,9 @@ export interface UseInfiniteScroll {
|
|
|
35
41
|
* @param {(event: Event) => void} callback The callback to execute when a click outside the target is detected
|
|
36
42
|
* @param {number} [options.distance=10] The distance in pixels to trigger the callback
|
|
37
43
|
* @param {string} [options.direction='bottom'] The direction to trigger the callback
|
|
38
|
-
* @returns {
|
|
44
|
+
* @returns {UseInfiniteScrollReturn} An object containing the ref and loading
|
|
39
45
|
*
|
|
40
46
|
* @example
|
|
41
|
-
* const loading = useInfiniteScroll(ref, () => console.log('infinite scroll'));
|
|
47
|
+
* const { loading } = useInfiniteScroll(ref, () => console.log('infinite scroll'));
|
|
42
48
|
*/
|
|
43
49
|
export declare const useInfiniteScroll: UseInfiniteScroll;
|
|
@@ -4,10 +4,16 @@ import { StateRef } from '../useRefState/useRefState';
|
|
|
4
4
|
export type UseKeyPressKey = string | string[];
|
|
5
5
|
/** The callback function to be invoked when key is pressed */
|
|
6
6
|
export type UseKeyPressCallback = (pressed: boolean, event: KeyboardEvent) => void;
|
|
7
|
+
/** The use key press return type */
|
|
8
|
+
export interface UseKeyPressReturn {
|
|
9
|
+
/** The pressed state of the key */
|
|
10
|
+
pressed: boolean;
|
|
11
|
+
/** The ref to attach to the element */
|
|
12
|
+
ref: StateRef<Element>;
|
|
13
|
+
}
|
|
7
14
|
export interface UseKeyPress {
|
|
8
|
-
(target: HookTarget | Window, key: UseKeyPressKey, callback?: UseKeyPressCallback):
|
|
9
|
-
<Target extends Element>(key: UseKeyPressKey, callback?: UseKeyPressCallback, target?: never): {
|
|
10
|
-
pressed: boolean;
|
|
15
|
+
(target: HookTarget | Window, key: UseKeyPressKey, callback?: UseKeyPressCallback): UseKeyPressReturn;
|
|
16
|
+
<Target extends Element>(key: UseKeyPressKey, callback?: UseKeyPressCallback, target?: never): UseKeyPressReturn & {
|
|
11
17
|
ref: StateRef<Target>;
|
|
12
18
|
};
|
|
13
19
|
}
|
|
@@ -21,7 +27,7 @@ export interface UseKeyPress {
|
|
|
21
27
|
* @param {HookTarget} [target=window] The target to attach the event listeners to
|
|
22
28
|
* @param {UseKeyPressKey} key The key or keys to listen for
|
|
23
29
|
* @param {(pressed: boolean, event: KeyboardEvent) => void} [callback] Callback function invoked when key is pressed
|
|
24
|
-
* @returns {
|
|
30
|
+
* @returns {UseKeyPressReturn} An object containing the pressed state and ref
|
|
25
31
|
*
|
|
26
32
|
* @example
|
|
27
33
|
* const isKeyPressed = useKeyPress(ref, 'a');
|
|
@@ -5,16 +5,16 @@ export interface UseKeysPressedOptions {
|
|
|
5
5
|
/** Enable or disable the event listeners */
|
|
6
6
|
enabled?: boolean;
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
9
|
-
|
|
8
|
+
export interface UseKeysPressedReturn {
|
|
9
|
+
/** The array of currently pressed keys */
|
|
10
|
+
value: Array<{
|
|
10
11
|
key: string;
|
|
11
12
|
code: string;
|
|
12
13
|
}>;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}>;
|
|
14
|
+
}
|
|
15
|
+
export interface UseKeysPressed {
|
|
16
|
+
(target: HookTarget | Window, options?: UseKeysPressedOptions): UseKeysPressedReturn;
|
|
17
|
+
<Target extends Element>(options?: UseKeysPressedOptions): UseKeysPressedReturn & {
|
|
18
18
|
ref: StateRef<Target>;
|
|
19
19
|
};
|
|
20
20
|
}
|
|
@@ -27,15 +27,15 @@ export interface UseKeysPressed {
|
|
|
27
27
|
* @overload
|
|
28
28
|
* @param {HookTarget | Window} target DOM element or ref to attach keyboard listeners to
|
|
29
29
|
* @param {UseKeysPressedOptions} [options.enabled=true] Enable or disable the event listeners
|
|
30
|
-
* @returns {
|
|
30
|
+
* @returns {UseKeysPressedReturn} Object containing the array of currently pressed keys
|
|
31
31
|
*
|
|
32
32
|
* @example
|
|
33
|
-
* const
|
|
33
|
+
* const { value } = useKeysPressed(ref);
|
|
34
34
|
*
|
|
35
35
|
* @overload
|
|
36
36
|
* @template Target - Type of the target DOM element
|
|
37
37
|
* @param {UseKeysPressedOptions} [options] - Optional configuration options
|
|
38
|
-
* @returns {
|
|
38
|
+
* @returns {UseKeysPressedReturn & { ref: StateRef<Target> }} Object containing the array of currently pressed keys and ref to attach to the element
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
41
41
|
* const { value, ref } = useKeysPressed();
|
|
@@ -7,12 +7,18 @@ export interface UseLongPressOptions {
|
|
|
7
7
|
onFinish?: (event: LongPressEvents) => void;
|
|
8
8
|
onStart?: (event: LongPressEvents) => void;
|
|
9
9
|
}
|
|
10
|
+
/** The use long press return type */
|
|
11
|
+
export interface UseLongPressReturn {
|
|
12
|
+
/** The long pressing state */
|
|
13
|
+
pressed: boolean;
|
|
14
|
+
/** The ref to attach to the element */
|
|
15
|
+
ref: StateRef<Element>;
|
|
16
|
+
}
|
|
10
17
|
export interface UseLongPress {
|
|
11
|
-
(target: HookTarget, callback: (event: LongPressEvents) => void, options?: UseLongPressOptions):
|
|
18
|
+
(target: HookTarget, callback: (event: LongPressEvents) => void, options?: UseLongPressOptions): UseLongPressReturn;
|
|
12
19
|
<Target extends Element>(callback: (event: LongPressEvents) => void, options?: UseLongPressOptions, target?: never): {
|
|
13
20
|
ref: StateRef<Target>;
|
|
14
|
-
|
|
15
|
-
};
|
|
21
|
+
} & UseLongPressReturn;
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* @name useLongPress
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/** The origin of the message */
|
|
2
|
+
export type UsePostMessageOrigin = string | '*' | string[];
|
|
3
|
+
/** The return type of the usePostMessage hook */
|
|
1
4
|
export type UsePostMessageReturn<Message> = (message: Message) => void;
|
|
2
5
|
/**
|
|
3
6
|
* @name usePostMessage
|
|
@@ -7,11 +10,11 @@ export type UsePostMessageReturn<Message> = (message: Message) => void;
|
|
|
7
10
|
*
|
|
8
11
|
* @overload
|
|
9
12
|
* @template Message The message data type
|
|
10
|
-
* @param {
|
|
13
|
+
* @param {UsePostMessageOrigin} origin The origin of the message
|
|
11
14
|
* @param {(message: Message) => Message} callback callback to get received message
|
|
12
15
|
* @returns {(message: Message) => void} An object containing the current message
|
|
13
16
|
*
|
|
14
17
|
* @example
|
|
15
18
|
* const postMessage = usePostMessage();
|
|
16
19
|
*/
|
|
17
|
-
export declare const usePostMessage: <Message>(origin:
|
|
20
|
+
export declare const usePostMessage: <Message>(origin: UsePostMessageOrigin, callback: (message: Message, event: MessageEvent<Message>) => void) => UsePostMessageReturn<Message>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** The use progress options type */
|
|
2
|
+
export interface UseProgressOptions {
|
|
3
|
+
/** Start progress immediately */
|
|
4
|
+
immediately?: boolean;
|
|
5
|
+
/** Maximum progress value */
|
|
6
|
+
maximum?: number;
|
|
7
|
+
/** Additional random amount for each auto increment */
|
|
8
|
+
rate?: number;
|
|
9
|
+
/** Auto-increment frequency in milliseconds */
|
|
10
|
+
speed?: number;
|
|
11
|
+
}
|
|
12
|
+
/** The use progress return type */
|
|
13
|
+
export interface UseProgressReturn {
|
|
14
|
+
/** Whether progress is currently active */
|
|
15
|
+
active: boolean;
|
|
16
|
+
/** Current progress value in range 0..1, null means hidden */
|
|
17
|
+
value: number;
|
|
18
|
+
/** Complete progress to 100% */
|
|
19
|
+
done: (force?: boolean) => number | null;
|
|
20
|
+
/** Increment progress with easing behavior */
|
|
21
|
+
inc: (amount?: number) => number | null;
|
|
22
|
+
/** Remove progress and stop timers */
|
|
23
|
+
remove: () => void;
|
|
24
|
+
/** Start progress and auto incrementing */
|
|
25
|
+
start: (from?: number | null) => number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @name useProgress
|
|
29
|
+
* @description - Hook that creates a lightweight progress bar state with NProgress-like behavior
|
|
30
|
+
* @category Time
|
|
31
|
+
* @usage medium
|
|
32
|
+
*
|
|
33
|
+
* @param {number} [initialProgress] Initial progress value in range 0..1
|
|
34
|
+
* @param {boolean} [options.active] Controls progress externally (true -> start, false -> done)
|
|
35
|
+
* @param {number} [options.maximum=0.95] Maximum value when progress starts
|
|
36
|
+
* @param {number} [options.speed=250] Auto increment interval in milliseconds
|
|
37
|
+
* @param {number} [options.rate=0.02] Additional random increment amount on each tick
|
|
38
|
+
* @param {number} [options.doneResetDelay=250] Delay before reset to null after done
|
|
39
|
+
* @returns {UseProgressReturn} Current progress state and control methods
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* const { value, active, start, done, inc, set, remove } = useProgress(0.2);
|
|
43
|
+
*/
|
|
44
|
+
export declare const useProgress: (initialValue?: number, options?: UseProgressOptions) => {
|
|
45
|
+
value: number;
|
|
46
|
+
active: boolean;
|
|
47
|
+
start: (from?: number) => void;
|
|
48
|
+
done: () => void;
|
|
49
|
+
inc: (amount?: number) => void;
|
|
50
|
+
remove: () => void;
|
|
51
|
+
};
|
|
@@ -12,10 +12,10 @@ export interface UseStickyOptions {
|
|
|
12
12
|
root?: HookTarget;
|
|
13
13
|
}
|
|
14
14
|
export interface UseSticky {
|
|
15
|
-
(target: HookTarget, options?: UseStickyOptions):
|
|
16
|
-
<Target extends Element>(options?: UseStickyOptions, target?: never): {
|
|
15
|
+
(target: HookTarget, options?: UseStickyOptions): UseStickyReturn;
|
|
16
|
+
<Target extends Element>(options?: UseStickyOptions, target?: never): UseStickyReturn & {
|
|
17
17
|
ref: StateRef<Target>;
|
|
18
|
-
}
|
|
18
|
+
};
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* @name UseSticky
|
|
@@ -30,12 +30,12 @@ export interface UseSticky {
|
|
|
30
30
|
* @returns {UseStickyReturn} The state of the sticky
|
|
31
31
|
*
|
|
32
32
|
* @example
|
|
33
|
-
* const stuck
|
|
33
|
+
* const { stuck } = useSticky(ref);
|
|
34
34
|
*
|
|
35
35
|
* @overload
|
|
36
36
|
* @param {UseStickyAxis} [options.axis='vertical'] The axis of motion of the sticky component
|
|
37
37
|
* @param {UseStickyRoot} [options.root=document] The element that contains your sticky component
|
|
38
|
-
* @returns {{
|
|
38
|
+
* @returns {{ ref: StateRef<Target> } & UseStickyReturn} The state of the sticky
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
41
41
|
* const { stuck, ref } = useSticky();
|
package/package.json
CHANGED
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@siberiacancode/reactuse",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "The ultimate collection of react hooks",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "SIBERIA CAN CODE 🧊",
|
|
7
|
-
"url": "https://github.com/siberiacancode"
|
|
8
|
-
},
|
|
9
|
-
"license": "MIT",
|
|
10
|
-
"homepage": "https://siberiacancode.github.io/reactuse/",
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/siberiacancode/reactuse.git",
|
|
14
|
-
"directory": "packages/core"
|
|
15
|
-
},
|
|
16
|
-
"bugs": "https://github.com/siberiacancode/reactuse/issues",
|
|
17
|
-
"keywords": [
|
|
18
|
-
"react",
|
|
19
|
-
"react hooks",
|
|
20
|
-
"react use",
|
|
21
|
-
"use",
|
|
22
|
-
"hooks"
|
|
23
|
-
],
|
|
24
|
-
"sideEffects": false,
|
|
25
|
-
"exports": {
|
|
26
|
-
"types": "./dist/types/index.d.ts",
|
|
27
|
-
"import": "./dist/esm/index.mjs",
|
|
28
|
-
"require": "./dist/cjs/index.cjs"
|
|
29
|
-
},
|
|
30
|
-
"main": "dist/cjs/index.cjs",
|
|
31
|
-
"module": "dist/esm/index.mjs",
|
|
32
|
-
"types": "dist/types/index.d.ts",
|
|
33
|
-
"files": [
|
|
34
|
-
"dist"
|
|
35
|
-
],
|
|
36
|
-
"engines": {
|
|
37
|
-
"node": ">=14"
|
|
38
|
-
},
|
|
39
|
-
"publishConfig": {
|
|
40
|
-
"access": "public"
|
|
41
|
-
},
|
|
42
|
-
"scripts": {
|
|
43
|
-
"prepublishOnly": "pnpm unit-test run && pnpm build",
|
|
44
|
-
"build": "shx rm -rf dist && vite build",
|
|
45
|
-
"build:js": "tsc --project tsconfig.build.json && prettier --write src/bundle",
|
|
46
|
-
"lint": "eslint . --fix",
|
|
47
|
-
"lint-inspector": "npx @eslint/config-inspector@latest",
|
|
48
|
-
"format": "prettier --write .",
|
|
49
|
-
"pretty": "pnpm lint && pnpm format",
|
|
50
|
-
"unit-test": "vitest",
|
|
51
|
-
"lint-staged": "lint-staged"
|
|
52
|
-
},
|
|
53
|
-
"peerDependencies": {
|
|
54
|
-
"@types/react": "^18 || ^19",
|
|
55
|
-
"react": "^18 || ^19",
|
|
56
|
-
"react-dom": "^18 || ^19"
|
|
57
|
-
},
|
|
58
|
-
"peerDependenciesMeta": {
|
|
59
|
-
"@types/react": {
|
|
60
|
-
"optional": true
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"dependencies": {
|
|
64
|
-
"screenfull": "^6.0.2"
|
|
65
|
-
},
|
|
66
|
-
"devDependencies": {
|
|
67
|
-
"@siberiacancode/vitest": "^2.3.0",
|
|
68
|
-
"@testing-library/dom": "^10.4.1",
|
|
69
|
-
"@testing-library/react": "^16.3.
|
|
70
|
-
"@types/dom-speech-recognition": "^0.0.7",
|
|
71
|
-
"@types/react": "^19.2.
|
|
72
|
-
"@types/react-dom": "^19.2.3",
|
|
73
|
-
"@types/web-bluetooth": "^0.0.21",
|
|
74
|
-
"@vitejs/plugin-react": "^5.1.
|
|
75
|
-
"core-js": "^3.
|
|
76
|
-
"react": "^19.2.
|
|
77
|
-
"react-dom": "^19.2.
|
|
78
|
-
"shx": "^0.4.0",
|
|
79
|
-
"vite": "^7.3.
|
|
80
|
-
"vite-plugin-dts": "^4.5.4",
|
|
81
|
-
"vitest": "^4.0.
|
|
82
|
-
},
|
|
83
|
-
"lint-staged": {
|
|
84
|
-
"*.{js,ts,tsx}": [
|
|
85
|
-
"eslint --fix",
|
|
86
|
-
"prettier --write"
|
|
87
|
-
]
|
|
88
|
-
}
|
|
89
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@siberiacancode/reactuse",
|
|
3
|
+
"version": "0.3.13",
|
|
4
|
+
"description": "The ultimate collection of react hooks",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "SIBERIA CAN CODE 🧊",
|
|
7
|
+
"url": "https://github.com/siberiacancode"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"homepage": "https://siberiacancode.github.io/reactuse/",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/siberiacancode/reactuse.git",
|
|
14
|
+
"directory": "packages/core"
|
|
15
|
+
},
|
|
16
|
+
"bugs": "https://github.com/siberiacancode/reactuse/issues",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"react",
|
|
19
|
+
"react hooks",
|
|
20
|
+
"react use",
|
|
21
|
+
"use",
|
|
22
|
+
"hooks"
|
|
23
|
+
],
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"exports": {
|
|
26
|
+
"types": "./dist/types/index.d.ts",
|
|
27
|
+
"import": "./dist/esm/index.mjs",
|
|
28
|
+
"require": "./dist/cjs/index.cjs"
|
|
29
|
+
},
|
|
30
|
+
"main": "dist/cjs/index.cjs",
|
|
31
|
+
"module": "dist/esm/index.mjs",
|
|
32
|
+
"types": "dist/types/index.d.ts",
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=14"
|
|
38
|
+
},
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"prepublishOnly": "pnpm unit-test run && pnpm build",
|
|
44
|
+
"build": "shx rm -rf dist && vite build",
|
|
45
|
+
"build:js": "tsc --project tsconfig.build.json && prettier --write src/bundle",
|
|
46
|
+
"lint": "eslint . --fix",
|
|
47
|
+
"lint-inspector": "npx @eslint/config-inspector@latest",
|
|
48
|
+
"format": "prettier --write .",
|
|
49
|
+
"pretty": "pnpm lint && pnpm format",
|
|
50
|
+
"unit-test": "vitest",
|
|
51
|
+
"lint-staged": "lint-staged"
|
|
52
|
+
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"@types/react": "^18 || ^19",
|
|
55
|
+
"react": "^18 || ^19",
|
|
56
|
+
"react-dom": "^18 || ^19"
|
|
57
|
+
},
|
|
58
|
+
"peerDependenciesMeta": {
|
|
59
|
+
"@types/react": {
|
|
60
|
+
"optional": true
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"screenfull": "^6.0.2"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@siberiacancode/vitest": "^2.3.0",
|
|
68
|
+
"@testing-library/dom": "^10.4.1",
|
|
69
|
+
"@testing-library/react": "^16.3.2",
|
|
70
|
+
"@types/dom-speech-recognition": "^0.0.7",
|
|
71
|
+
"@types/react": "^19.2.13",
|
|
72
|
+
"@types/react-dom": "^19.2.3",
|
|
73
|
+
"@types/web-bluetooth": "^0.0.21",
|
|
74
|
+
"@vitejs/plugin-react": "^5.1.3",
|
|
75
|
+
"core-js": "^3.48.0",
|
|
76
|
+
"react": "^19.2.4",
|
|
77
|
+
"react-dom": "^19.2.4",
|
|
78
|
+
"shx": "^0.4.0",
|
|
79
|
+
"vite": "^7.3.1",
|
|
80
|
+
"vite-plugin-dts": "^4.5.4",
|
|
81
|
+
"vitest": "^4.0.18"
|
|
82
|
+
},
|
|
83
|
+
"lint-staged": {
|
|
84
|
+
"*.{js,ts,tsx}": [
|
|
85
|
+
"eslint --fix",
|
|
86
|
+
"prettier --write"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
}
|