@siberiacancode/reactuse 0.0.113 → 0.0.115
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/useClickOutside/useClickOutside.cjs.map +1 -1
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs +1 -1
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.cjs.map +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +2 -0
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -0
- package/dist/cjs/hooks/useEventListener/useEventListener.cjs +1 -1
- package/dist/cjs/hooks/useEventListener/useEventListener.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/useMouse/useMouse.cjs.map +1 -1
- package/dist/cjs/hooks/useParallax/useParallax.cjs +1 -1
- package/dist/cjs/hooks/useParallax/useParallax.cjs.map +1 -1
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs +2 -0
- package/dist/cjs/hooks/useSpeechRecognition/useSpeechRecognition.cjs.map +1 -0
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs +1 -1
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.mjs.map +1 -1
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs +4 -3
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.mjs.map +1 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +29 -0
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -0
- package/dist/esm/hooks/useEventListener/useEventListener.mjs +15 -15
- package/dist/esm/hooks/useEventListener/useEventListener.mjs.map +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs +30 -17
- package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
- package/dist/esm/hooks/useMouse/useMouse.mjs.map +1 -1
- package/dist/esm/hooks/useParallax/useParallax.mjs +90 -85
- package/dist/esm/hooks/useParallax/useParallax.mjs.map +1 -1
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs +41 -0
- package/dist/esm/hooks/useSpeechRecognition/useSpeechRecognition.mjs.map +1 -0
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs +4 -3
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.mjs.map +1 -1
- package/dist/esm/index.mjs +257 -252
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +2 -0
- package/dist/types/hooks/useDoubleClick/useDoubleClick.d.ts +38 -0
- package/dist/types/hooks/useEventListener/useEventListener.d.ts +5 -5
- package/dist/types/hooks/useLongPress/useLongPress.d.ts +27 -25
- package/dist/types/hooks/useSpeechRecognition/useSpeechRecognition.d.ts +69 -0
- package/package.json +2 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { HookTarget } from '../../utils/helpers';
|
|
2
|
+
import { StateRef } from '../useRefState/useRefState';
|
|
3
|
+
export type DoubleClickEvents = MouseEvent | TouchEvent;
|
|
4
|
+
export interface UseDoubleClickOptions {
|
|
5
|
+
threshold?: number;
|
|
6
|
+
onSingleClick?: (event: DoubleClickEvents) => void;
|
|
7
|
+
}
|
|
8
|
+
export interface UseDoubleClick {
|
|
9
|
+
(target: HookTarget, callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions): boolean;
|
|
10
|
+
<Target extends Element>(callback: (event: DoubleClickEvents) => void, options?: UseDoubleClickOptions, target?: never): {
|
|
11
|
+
ref: StateRef<Target>;
|
|
12
|
+
clicked: boolean;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @name useDoubleClick
|
|
17
|
+
* @description - Hook that defines the logic when double clicking an element
|
|
18
|
+
* @category Sensors
|
|
19
|
+
*
|
|
20
|
+
* @overload
|
|
21
|
+
* @param {HookTarget} target The target element to be double clicked
|
|
22
|
+
* @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click
|
|
23
|
+
* @param {UseDoubleClickOptions} [options] The options for the double click
|
|
24
|
+
* @returns {boolean} The double clicking state
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* useDoubleClick(ref, () => console.log('double clicked'));
|
|
28
|
+
*
|
|
29
|
+
* @overload
|
|
30
|
+
* @template Target The target element
|
|
31
|
+
* @param {(event: DoubleClickEvents) => void} callback The callback function to be invoked on double click
|
|
32
|
+
* @param {UseDoubleClickOptions} [options] The options for the double click
|
|
33
|
+
* @returns {boolean} The double clicking state
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const ref = useDoubleClick(() => console.log('double clicked'));
|
|
37
|
+
*/
|
|
38
|
+
export declare const useDoubleClick: UseDoubleClick;
|
|
@@ -5,11 +5,11 @@ export type UseEventListenerOptions = boolean | AddEventListenerOptions;
|
|
|
5
5
|
/** The use event listener return type */
|
|
6
6
|
export type UseEventListenerReturn<Target extends Element> = StateRef<Target>;
|
|
7
7
|
export interface UseEventListener {
|
|
8
|
-
<Event extends keyof WindowEventMap = keyof WindowEventMap>(target:
|
|
9
|
-
<Event extends keyof DocumentEventMap = keyof DocumentEventMap>(target:
|
|
10
|
-
<Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(target: HookTarget, event: Event
|
|
11
|
-
<Target extends Element, Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(event: Event
|
|
12
|
-
<Target extends Element, Event extends keyof MediaQueryListEventMap = keyof MediaQueryListEventMap>(event: Event
|
|
8
|
+
<Event extends keyof WindowEventMap = keyof WindowEventMap>(target: HookTarget, event: Event, listener: (this: Window, event: WindowEventMap[Event]) => void, options?: UseEventListenerOptions): void;
|
|
9
|
+
<Event extends keyof DocumentEventMap = keyof DocumentEventMap>(target: HookTarget, event: Event, listener: (this: Document, event: DocumentEventMap[Event]) => void, options?: UseEventListenerOptions): void;
|
|
10
|
+
<Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(target: HookTarget, event: Event, listener: (this: Element, event: HTMLElementEventMap[Event]) => void, options?: UseEventListenerOptions): void;
|
|
11
|
+
<Target extends Element, Event extends keyof HTMLElementEventMap = keyof HTMLElementEventMap>(event: Event, listener: (this: Target, event: HTMLElementEventMap[Event]) => void, options?: UseEventListenerOptions, target?: never): UseEventListenerReturn<Target>;
|
|
12
|
+
<Target extends Element, Event extends keyof MediaQueryListEventMap = keyof MediaQueryListEventMap>(event: Event, listener: (this: Target, event: MediaQueryListEventMap[Event]) => void, options?: UseEventListenerOptions, target?: never): UseEventListenerReturn<Target>;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* @name useEventListener
|
|
@@ -1,38 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export type
|
|
1
|
+
import { HookTarget } from '../../utils/helpers';
|
|
2
|
+
import { StateRef } from '../useRefState/useRefState';
|
|
3
|
+
export type LongPressEvents = MouseEvent | TouchEvent;
|
|
4
4
|
export interface UseLongPressOptions {
|
|
5
5
|
threshold?: number;
|
|
6
|
-
onCancel?: (event:
|
|
7
|
-
onFinish?: (event:
|
|
8
|
-
onStart?: (event:
|
|
6
|
+
onCancel?: (event: LongPressEvents) => void;
|
|
7
|
+
onFinish?: (event: LongPressEvents) => void;
|
|
8
|
+
onStart?: (event: LongPressEvents) => void;
|
|
9
9
|
}
|
|
10
|
-
export interface
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
onTouchEnd: TouchEventHandler<Element>;
|
|
17
|
-
/** The callback function to be invoked on touch start */
|
|
18
|
-
onTouchStart: TouchEventHandler<Element>;
|
|
10
|
+
export interface UseLongPress {
|
|
11
|
+
(target: HookTarget, callback: (event: LongPressEvents) => void, options?: UseLongPressOptions): boolean;
|
|
12
|
+
<Target extends Element>(callback: (event: LongPressEvents) => void, options?: UseLongPressOptions, target?: never): {
|
|
13
|
+
ref: StateRef<Target>;
|
|
14
|
+
pressed: boolean;
|
|
15
|
+
};
|
|
19
16
|
}
|
|
20
|
-
export type UseLongPressReturn = [UseLongPressBind, boolean];
|
|
21
17
|
/**
|
|
22
18
|
* @name useLongPress
|
|
23
19
|
* @description - Hook that defines the logic when long pressing an element
|
|
24
20
|
* @category Sensors
|
|
25
21
|
*
|
|
22
|
+
* @overload
|
|
23
|
+
* @param {HookTarget} target The target element to be long pressed
|
|
24
|
+
* @param {(event: LongPressEvents) => void} callback The callback function to be invoked on long press
|
|
25
|
+
* @param {UseLongPressOptions} [options] The options for the long press
|
|
26
|
+
* @returns {boolean} The long pressing state
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const pressed = useLongPress(ref, () => console.log('callback'));
|
|
30
|
+
*
|
|
31
|
+
* @overload
|
|
26
32
|
* @template Target The target element
|
|
27
|
-
* @param {
|
|
28
|
-
* @param {
|
|
29
|
-
* @
|
|
30
|
-
* @param {(event: Event) => void} [options.onStart] The callback function to be invoked on long press start
|
|
31
|
-
* @param {(event: Event) => void} [options.onFinish] The callback function to be invoked on long press finish
|
|
32
|
-
* @param {(event: Event) => void} [options.onCancel] The callback function to be invoked on long press cancel
|
|
33
|
-
* @returns {UseLongPressReturn<Target>} The ref of the target element
|
|
33
|
+
* @param {(event: LongPressEvents) => void} callback The callback function to be invoked on long press
|
|
34
|
+
* @param {UseLongPressOptions} [options] The options for the long press
|
|
35
|
+
* @returns {boolean} The long pressing state
|
|
34
36
|
*
|
|
35
37
|
* @example
|
|
36
|
-
* const
|
|
38
|
+
* const { ref, pressed } = useLongPress(() => console.log('callback'));
|
|
37
39
|
*/
|
|
38
|
-
export declare const useLongPress:
|
|
40
|
+
export declare const useLongPress: UseLongPress;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** The use speech recognition hook options type */
|
|
2
|
+
interface UseSpeechRecognitionOptions {
|
|
3
|
+
/** If true, recognition continues even after pauses in speech. Default is false */
|
|
4
|
+
continuous?: SpeechRecognition['continuous'];
|
|
5
|
+
/** A list of grammar rules */
|
|
6
|
+
grammars?: SpeechRecognition['grammars'];
|
|
7
|
+
/** If true, interim (non-final) results are provided as the user speaks */
|
|
8
|
+
interimResults?: SpeechRecognition['interimResults'];
|
|
9
|
+
/** The language in which recognition should occur. Must be a valid BCP 47 language tag (e.g., "en-US", "ru-RU") */
|
|
10
|
+
language?: SpeechRecognition['lang'];
|
|
11
|
+
/** The maximum number of alternative transcripts returned for a given recognition result. Must be a positive integer */
|
|
12
|
+
maxAlternatives?: SpeechRecognition['maxAlternatives'];
|
|
13
|
+
/** Callback invoked when speech recognition ends */
|
|
14
|
+
onEnd?: () => void;
|
|
15
|
+
/** Callback invoked when an error occurs during recognition */
|
|
16
|
+
onError?: (error: SpeechRecognitionErrorEvent) => void;
|
|
17
|
+
/** Callback invoked when recognition produces a result */
|
|
18
|
+
onResult?: (event: SpeechRecognitionEvent) => void;
|
|
19
|
+
/** Callback invoked when speech recognition starts */
|
|
20
|
+
onStart?: () => void;
|
|
21
|
+
}
|
|
22
|
+
/** The return type of the useSpeechRecognition hook. */
|
|
23
|
+
interface UseSpeechRecognitionReturn {
|
|
24
|
+
/** The error state */
|
|
25
|
+
error: SpeechRecognitionErrorEvent | null;
|
|
26
|
+
/** The final transcript */
|
|
27
|
+
final: boolean;
|
|
28
|
+
/** Whether the hook is currently listening for speech */
|
|
29
|
+
listening: boolean;
|
|
30
|
+
/** The speech recognition instance */
|
|
31
|
+
recognition: SpeechRecognition;
|
|
32
|
+
/** Whether the current browser supports the Web Speech API */
|
|
33
|
+
supported: boolean;
|
|
34
|
+
/** The current transcript */
|
|
35
|
+
transcript: string;
|
|
36
|
+
/** Begins speech recognition */
|
|
37
|
+
start: () => void;
|
|
38
|
+
/** Ends speech recognition, finalizing results */
|
|
39
|
+
stop: () => void;
|
|
40
|
+
/** Toggles the listening state */
|
|
41
|
+
toggle: (value?: boolean) => void;
|
|
42
|
+
}
|
|
43
|
+
export declare const getSpeechRecognition: () => {
|
|
44
|
+
new (): SpeechRecognition;
|
|
45
|
+
prototype: SpeechRecognition;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* @name useSpeechRecognition
|
|
49
|
+
* @description - Hook that provides a streamlined interface for incorporating speech-to-text functionality
|
|
50
|
+
* @category Sensors
|
|
51
|
+
*
|
|
52
|
+
* @browserapi window.SpeechRecognition https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition
|
|
53
|
+
*
|
|
54
|
+
* @param {boolean} [options.continuous=false] Whether recognition should continue after pauses
|
|
55
|
+
* @param {boolean} [options.interimResults=false] Whether interim results should be provided
|
|
56
|
+
* @param {string} [options.language="en-US"] The language for recognition, as a valid BCP 47 tag
|
|
57
|
+
* @param {number} [options.maxAlternatives=1] The maximum number of alternative transcripts to return
|
|
58
|
+
* @param {SpeechGrammarList} [options.grammars] A list of grammar rules
|
|
59
|
+
* @param {() => void} [options.onStart] Callback invoked when speech recognition starts
|
|
60
|
+
* @param {() => void} [options.onEnd] Callback invoked when speech recognition ends
|
|
61
|
+
* @param {(error: SpeechRecognitionErrorEvent) => void} [options.onError] Callback invoked when an error occurs during recognition
|
|
62
|
+
* @param {(event: SpeechRecognitionEvent) => void} [options.onResult] Callback invoked when recognition produces a result
|
|
63
|
+
* @returns {UseSpeechRecognitionReturn} An object containing the speech recognition functionality
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* const { supported, value, recognition, listening, error, start, stop, toggle } = useSpeechRecognition();
|
|
67
|
+
*/
|
|
68
|
+
export declare const useSpeechRecognition: (options?: UseSpeechRecognitionOptions) => UseSpeechRecognitionReturn;
|
|
69
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@siberiacancode/reactuse",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.115",
|
|
4
4
|
"description": "The ultimate collection of react hooks",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SIBERIA CAN CODE 🧊",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"@siberiacancode/vitest": "^2.1.0",
|
|
68
68
|
"@testing-library/dom": "^10.4.0",
|
|
69
69
|
"@testing-library/react": "^16.2.0",
|
|
70
|
+
"@types/dom-speech-recognition": "^0.0.4",
|
|
70
71
|
"@types/react": "^18.3.18",
|
|
71
72
|
"@types/react-dom": "^18.3.5",
|
|
72
73
|
"@types/web-bluetooth": "^0.0.21",
|