react-native-voice-ts 1.0.0 → 1.0.1

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.
Files changed (41) hide show
  1. package/README.md +914 -83
  2. package/dist/components/MicIcon.d.ts +23 -0
  3. package/dist/components/MicIcon.d.ts.map +1 -0
  4. package/dist/components/MicIcon.js +28 -0
  5. package/dist/components/MicIcon.js.map +1 -0
  6. package/dist/components/VoiceMicrophone.d.ts +81 -0
  7. package/dist/components/VoiceMicrophone.d.ts.map +1 -0
  8. package/dist/components/VoiceMicrophone.js +151 -0
  9. package/dist/components/VoiceMicrophone.js.map +1 -0
  10. package/dist/components/index.d.ts +5 -0
  11. package/dist/components/index.d.ts.map +1 -0
  12. package/dist/components/index.js +3 -0
  13. package/dist/components/index.js.map +1 -0
  14. package/dist/hooks/index.d.ts +3 -0
  15. package/dist/hooks/index.d.ts.map +1 -0
  16. package/dist/hooks/index.js +2 -0
  17. package/dist/hooks/index.js.map +1 -0
  18. package/dist/hooks/useVoiceRecognition.d.ts +77 -0
  19. package/dist/hooks/useVoiceRecognition.d.ts.map +1 -0
  20. package/dist/hooks/useVoiceRecognition.js +129 -0
  21. package/dist/hooks/useVoiceRecognition.js.map +1 -0
  22. package/dist/index.d.ts +4 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +4 -0
  25. package/dist/index.js.map +1 -1
  26. package/ios/Voice.xcodeproj/project.xcworkspace/xcuserdata/olumayowadaniel.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  27. package/ios/Voice.xcodeproj/project.xcworkspace/xcuserdata/rudie_shahinian.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  28. package/package.json +24 -6
  29. package/plugin/src/withVoice.ts +74 -0
  30. package/plugin/tsconfig.json +10 -0
  31. package/src/components/MicIcon.tsx +72 -0
  32. package/src/components/VoiceMicrophone.tsx +238 -0
  33. package/src/components/index.ts +4 -0
  34. package/src/hooks/index.ts +5 -0
  35. package/src/hooks/useVoiceRecognition.ts +217 -0
  36. package/src/images/mic.svg +16 -0
  37. package/src/index.ts +15 -0
  38. package/.nvmrc +0 -1
  39. package/.prettierrc +0 -5
  40. package/.releaserc +0 -15
  41. package/MIGRATION_SUMMARY.md +0 -510
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ export interface MicIconProps {
3
+ size?: number;
4
+ color?: string;
5
+ strokeWidth?: number;
6
+ }
7
+ /**
8
+ * Microphone Icon Component
9
+ * Based on Lucide mic icon
10
+ */
11
+ export declare const MicIcon: React.FC<MicIconProps>;
12
+ export interface MicOffIconProps {
13
+ size?: number;
14
+ color?: string;
15
+ strokeWidth?: number;
16
+ }
17
+ /**
18
+ * Microphone Off Icon Component
19
+ * For recording/stop state
20
+ */
21
+ export declare const MicOffIcon: React.FC<MicOffIconProps>;
22
+ export default MicIcon;
23
+ //# sourceMappingURL=MicIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MicIcon.d.ts","sourceRoot":"","sources":["../../src/components/MicIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqB1C,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuBhD,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import Svg, { Path, Rect } from 'react-native-svg';
3
+ /**
4
+ * Microphone Icon Component
5
+ * Based on Lucide mic icon
6
+ */
7
+ export const MicIcon = ({ size = 24, color = 'currentColor', strokeWidth = 2, }) => {
8
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke={color} strokeWidth={strokeWidth} strokeLinecap="round" strokeLinejoin="round">
9
+ <Path d="M12 19v3"/>
10
+ <Path d="M19 10v2a7 7 0 0 1-14 0v-2"/>
11
+ <Rect x="9" y="2" width="6" height="13" rx="3"/>
12
+ </Svg>);
13
+ };
14
+ /**
15
+ * Microphone Off Icon Component
16
+ * For recording/stop state
17
+ */
18
+ export const MicOffIcon = ({ size = 24, color = 'currentColor', strokeWidth = 2, }) => {
19
+ return (<Svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke={color} strokeWidth={strokeWidth} strokeLinecap="round" strokeLinejoin="round">
20
+ <Path d="M2 2l20 20"/>
21
+ <Path d="M12 12a3 3 0 0 0 3-3V5a3 3 0 1 0-6 0v1"/>
22
+ <Path d="M19 10v2a7 7 0 0 1-11.18 5.66"/>
23
+ <Path d="M4.27 16.73A7 7 0 0 1 5 12v-2"/>
24
+ <Path d="M12 17v5"/>
25
+ </Svg>);
26
+ };
27
+ export default MicIcon;
28
+ //# sourceMappingURL=MicIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MicIcon.js","sourceRoot":"","sources":["../../src/components/MicIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQnD;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAC9C,IAAI,GAAG,EAAE,EACT,KAAK,GAAG,cAAc,EACtB,WAAW,GAAG,CAAC,GAChB,EAAE,EAAE;IACH,OAAO,CACL,CAAC,GAAG,CACF,KAAK,CAAC,CAAC,IAAI,CAAC,CACZ,MAAM,CAAC,CAAC,IAAI,CAAC,CACb,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,CAAC,KAAK,CAAC,CACd,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,aAAa,CAAC,OAAO,CACrB,cAAc,CAAC,OAAO,CAEtB;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAClB;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,EACpC;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAChD;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC,CAAC;AAQF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EACpD,IAAI,GAAG,EAAE,EACT,KAAK,GAAG,cAAc,EACtB,WAAW,GAAG,CAAC,GAChB,EAAE,EAAE;IACH,OAAO,CACL,CAAC,GAAG,CACF,KAAK,CAAC,CAAC,IAAI,CAAC,CACZ,MAAM,CAAC,CAAC,IAAI,CAAC,CACb,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,CAAC,KAAK,CAAC,CACd,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,aAAa,CAAC,OAAO,CACrB,cAAc,CAAC,OAAO,CAEtB;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EACpB;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,wCAAwC,EAChD;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,EACvC;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,EACvC;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EACpB;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,81 @@
1
+ import React from 'react';
2
+ export interface VoiceMicrophoneProps {
3
+ /**
4
+ * Callback fired when speech is recognized and converted to text
5
+ */
6
+ onSpeechResult?: (text: string) => void;
7
+ /**
8
+ * Callback fired when partial results are available (real-time)
9
+ */
10
+ onPartialResult?: (text: string) => void;
11
+ /**
12
+ * Callback fired when recording starts
13
+ */
14
+ onStart?: () => void;
15
+ /**
16
+ * Callback fired when recording stops
17
+ */
18
+ onStop?: () => void;
19
+ /**
20
+ * Callback fired when an error occurs
21
+ */
22
+ onError?: (error: string) => void;
23
+ /**
24
+ * Language locale for speech recognition
25
+ * @default 'en-US'
26
+ */
27
+ locale?: string;
28
+ /**
29
+ * Whether to automatically start recording on mount
30
+ * @default false
31
+ */
32
+ autoStart?: boolean;
33
+ /**
34
+ * Whether to enable partial results (real-time transcription)
35
+ * @default true
36
+ */
37
+ enablePartialResults?: boolean;
38
+ /**
39
+ * Custom render function for the component
40
+ * Receives isRecording state and control functions
41
+ */
42
+ children?: (props: {
43
+ isRecording: boolean;
44
+ recognizedText: string;
45
+ partialText: string;
46
+ start: () => Promise<void>;
47
+ stop: () => Promise<void>;
48
+ cancel: () => Promise<void>;
49
+ error: string | null;
50
+ }) => React.ReactNode;
51
+ }
52
+ /**
53
+ * VoiceMicrophone Component
54
+ *
55
+ * A ready-to-use voice recognition component that handles microphone access,
56
+ * speech recognition, and provides real-time text results.
57
+ *
58
+ * @example
59
+ * ```tsx
60
+ * // Simple usage with callback
61
+ * <VoiceMicrophone
62
+ * onSpeechResult={(text) => setSearchQuery(text)}
63
+ * />
64
+ *
65
+ * // Custom render with full control
66
+ * <VoiceMicrophone locale="en-US">
67
+ * {({ isRecording, recognizedText, start, stop }) => (
68
+ * <View>
69
+ * <Text>{recognizedText}</Text>
70
+ * <Button
71
+ * onPress={isRecording ? stop : start}
72
+ * title={isRecording ? 'Stop' : 'Start'}
73
+ * />
74
+ * </View>
75
+ * )}
76
+ * </VoiceMicrophone>
77
+ * ```
78
+ */
79
+ declare const VoiceMicrophone: React.FC<VoiceMicrophoneProps>;
80
+ export default VoiceMicrophone;
81
+ //# sourceMappingURL=VoiceMicrophone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceMicrophone.d.ts","sourceRoot":"","sources":["../../src/components/VoiceMicrophone.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAIhE,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,KAAK,KAAK,CAAC,SAAS,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiJnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,151 @@
1
+ import React, { useEffect, useState, useCallback } from 'react';
2
+ import Voice from '../index';
3
+ /**
4
+ * VoiceMicrophone Component
5
+ *
6
+ * A ready-to-use voice recognition component that handles microphone access,
7
+ * speech recognition, and provides real-time text results.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * // Simple usage with callback
12
+ * <VoiceMicrophone
13
+ * onSpeechResult={(text) => setSearchQuery(text)}
14
+ * />
15
+ *
16
+ * // Custom render with full control
17
+ * <VoiceMicrophone locale="en-US">
18
+ * {({ isRecording, recognizedText, start, stop }) => (
19
+ * <View>
20
+ * <Text>{recognizedText}</Text>
21
+ * <Button
22
+ * onPress={isRecording ? stop : start}
23
+ * title={isRecording ? 'Stop' : 'Start'}
24
+ * />
25
+ * </View>
26
+ * )}
27
+ * </VoiceMicrophone>
28
+ * ```
29
+ */
30
+ const VoiceMicrophone = ({ onSpeechResult, onPartialResult, onStart, onStop, onError, locale = 'en-US', autoStart = false, enablePartialResults = true, children, }) => {
31
+ const [isRecording, setIsRecording] = useState(false);
32
+ const [recognizedText, setRecognizedText] = useState('');
33
+ const [partialText, setPartialText] = useState('');
34
+ const [error, setError] = useState(null);
35
+ useEffect(() => {
36
+ // Set up event listeners
37
+ Voice.onSpeechStart = () => {
38
+ setIsRecording(true);
39
+ setError(null);
40
+ onStart?.();
41
+ };
42
+ Voice.onSpeechEnd = () => {
43
+ setIsRecording(false);
44
+ onStop?.();
45
+ };
46
+ Voice.onSpeechError = (e) => {
47
+ const errorMessage = e.error?.message || 'Unknown error';
48
+ setError(errorMessage);
49
+ setIsRecording(false);
50
+ onError?.(errorMessage);
51
+ };
52
+ Voice.onSpeechResults = (e) => {
53
+ if (e.value && e.value.length > 0) {
54
+ const text = e.value[0];
55
+ setRecognizedText(text);
56
+ onSpeechResult?.(text);
57
+ }
58
+ };
59
+ if (enablePartialResults) {
60
+ Voice.onSpeechPartialResults = (e) => {
61
+ if (e.value && e.value.length > 0) {
62
+ const text = e.value[0];
63
+ setPartialText(text);
64
+ onPartialResult?.(text);
65
+ }
66
+ };
67
+ }
68
+ // Cleanup
69
+ return () => {
70
+ Voice.destroy().then(Voice.removeAllListeners);
71
+ };
72
+ }, [
73
+ onSpeechResult,
74
+ onPartialResult,
75
+ onStart,
76
+ onStop,
77
+ onError,
78
+ enablePartialResults,
79
+ ]);
80
+ // Auto-start if enabled
81
+ useEffect(() => {
82
+ if (autoStart) {
83
+ start();
84
+ }
85
+ // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ }, [autoStart]);
87
+ const start = useCallback(async () => {
88
+ try {
89
+ setError(null);
90
+ setRecognizedText('');
91
+ setPartialText('');
92
+ // Check permission (Android only)
93
+ const hasPermission = await Voice.checkMicrophonePermission();
94
+ if (!hasPermission) {
95
+ const granted = await Voice.requestMicrophonePermission();
96
+ if (!granted) {
97
+ setError('Microphone permission denied');
98
+ return;
99
+ }
100
+ }
101
+ await Voice.start(locale, {
102
+ EXTRA_PARTIAL_RESULTS: enablePartialResults,
103
+ });
104
+ }
105
+ catch (e) {
106
+ const errorMessage = e instanceof Error ? e.message : 'Failed to start recording';
107
+ setError(errorMessage);
108
+ onError?.(errorMessage);
109
+ }
110
+ }, [locale, enablePartialResults, onError]);
111
+ const stop = useCallback(async () => {
112
+ try {
113
+ await Voice.stop();
114
+ }
115
+ catch (e) {
116
+ const errorMessage = e instanceof Error ? e.message : 'Failed to stop recording';
117
+ setError(errorMessage);
118
+ onError?.(errorMessage);
119
+ }
120
+ }, [onError]);
121
+ const cancel = useCallback(async () => {
122
+ try {
123
+ await Voice.cancel();
124
+ setRecognizedText('');
125
+ setPartialText('');
126
+ }
127
+ catch (e) {
128
+ const errorMessage = e instanceof Error ? e.message : 'Failed to cancel recording';
129
+ setError(errorMessage);
130
+ onError?.(errorMessage);
131
+ }
132
+ }, [onError]);
133
+ // If children render prop is provided, use it
134
+ if (children) {
135
+ return (<>
136
+ {children({
137
+ isRecording,
138
+ recognizedText,
139
+ partialText,
140
+ start,
141
+ stop,
142
+ cancel,
143
+ error,
144
+ })}
145
+ </>);
146
+ }
147
+ // Default: render nothing (headless component)
148
+ return null;
149
+ };
150
+ export default VoiceMicrophone;
151
+ //# sourceMappingURL=VoiceMicrophone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceMicrophone.js","sourceRoot":"","sources":["../../src/components/VoiceMicrophone.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { default as VoiceMicrophone } from './VoiceMicrophone';
2
+ export type { VoiceMicrophoneProps } from './VoiceMicrophone';
3
+ export { MicIcon, MicOffIcon } from './MicIcon';
4
+ export type { MicIconProps, MicOffIconProps } from './MicIcon';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as VoiceMicrophone } from './VoiceMicrophone';
2
+ export { MicIcon, MicOffIcon } from './MicIcon';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { useVoiceRecognition } from './useVoiceRecognition';
2
+ export type { UseVoiceRecognitionOptions, UseVoiceRecognitionReturn, } from './useVoiceRecognition';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useVoiceRecognition } from './useVoiceRecognition';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,77 @@
1
+ export interface UseVoiceRecognitionOptions {
2
+ /**
3
+ * Language locale for speech recognition
4
+ * @default 'en-US'
5
+ */
6
+ locale?: string;
7
+ /**
8
+ * Whether to enable partial results (real-time transcription)
9
+ * @default true
10
+ */
11
+ enablePartialResults?: boolean;
12
+ /**
13
+ * Callback fired when speech is recognized
14
+ */
15
+ onResult?: (text: string) => void;
16
+ /**
17
+ * Callback fired when an error occurs
18
+ */
19
+ onError?: (error: string) => void;
20
+ }
21
+ export interface UseVoiceRecognitionReturn {
22
+ /**
23
+ * Whether voice recognition is currently active
24
+ */
25
+ isRecording: boolean;
26
+ /**
27
+ * Final recognized text results
28
+ */
29
+ results: string[];
30
+ /**
31
+ * Partial results (real-time transcription)
32
+ */
33
+ partialResults: string[];
34
+ /**
35
+ * Error message if an error occurred
36
+ */
37
+ error: string | null;
38
+ /**
39
+ * Start voice recognition
40
+ */
41
+ start: () => Promise<void>;
42
+ /**
43
+ * Stop voice recognition and get final results
44
+ */
45
+ stop: () => Promise<void>;
46
+ /**
47
+ * Cancel voice recognition without getting results
48
+ */
49
+ cancel: () => Promise<void>;
50
+ /**
51
+ * Reset all state
52
+ */
53
+ reset: () => void;
54
+ }
55
+ /**
56
+ * Custom hook for voice recognition
57
+ *
58
+ * Provides a simple interface for speech-to-text functionality with automatic
59
+ * event listener setup and cleanup.
60
+ *
61
+ * @example
62
+ * ```tsx
63
+ * const { isRecording, results, start, stop } = useVoiceRecognition({
64
+ * locale: 'en-US',
65
+ * onResult: (text) => setSearchQuery(text),
66
+ * });
67
+ *
68
+ * // In your component
69
+ * <Button
70
+ * onPress={isRecording ? stop : start}
71
+ * title={isRecording ? 'Stop' : 'Start Recording'}
72
+ * />
73
+ * <Text>{results[0]}</Text>
74
+ * ```
75
+ */
76
+ export declare const useVoiceRecognition: (options?: UseVoiceRecognitionOptions) => UseVoiceRecognitionReturn;
77
+ //# sourceMappingURL=useVoiceRecognition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVoiceRecognition.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoiceRecognition.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;OAEG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;OAEG;IACH,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAS,0BAA+B,KACvC,yBA2HF,CAAC"}
@@ -0,0 +1,129 @@
1
+ import { useEffect, useState, useCallback } from 'react';
2
+ import Voice from '../index';
3
+ /**
4
+ * Custom hook for voice recognition
5
+ *
6
+ * Provides a simple interface for speech-to-text functionality with automatic
7
+ * event listener setup and cleanup.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const { isRecording, results, start, stop } = useVoiceRecognition({
12
+ * locale: 'en-US',
13
+ * onResult: (text) => setSearchQuery(text),
14
+ * });
15
+ *
16
+ * // In your component
17
+ * <Button
18
+ * onPress={isRecording ? stop : start}
19
+ * title={isRecording ? 'Stop' : 'Start Recording'}
20
+ * />
21
+ * <Text>{results[0]}</Text>
22
+ * ```
23
+ */
24
+ export const useVoiceRecognition = (options = {}) => {
25
+ const { locale = 'en-US', enablePartialResults = true, onResult, onError, } = options;
26
+ const [isRecording, setIsRecording] = useState(false);
27
+ const [results, setResults] = useState([]);
28
+ const [partialResults, setPartialResults] = useState([]);
29
+ const [error, setError] = useState(null);
30
+ useEffect(() => {
31
+ // Set up event listeners
32
+ Voice.onSpeechStart = () => {
33
+ setIsRecording(true);
34
+ setError(null);
35
+ };
36
+ Voice.onSpeechEnd = () => {
37
+ setIsRecording(false);
38
+ };
39
+ Voice.onSpeechError = (e) => {
40
+ const errorMessage = e.error?.message || 'Unknown error';
41
+ setError(errorMessage);
42
+ setIsRecording(false);
43
+ onError?.(errorMessage);
44
+ };
45
+ Voice.onSpeechResults = (e) => {
46
+ if (e.value && e.value.length > 0) {
47
+ setResults(e.value);
48
+ const firstResult = e.value[0];
49
+ if (firstResult) {
50
+ onResult?.(firstResult);
51
+ }
52
+ }
53
+ };
54
+ if (enablePartialResults) {
55
+ Voice.onSpeechPartialResults = (e) => {
56
+ if (e.value && e.value.length > 0) {
57
+ setPartialResults(e.value);
58
+ }
59
+ };
60
+ }
61
+ // Cleanup
62
+ return () => {
63
+ Voice.destroy().then(Voice.removeAllListeners);
64
+ };
65
+ }, [enablePartialResults, onResult, onError]);
66
+ const start = useCallback(async () => {
67
+ try {
68
+ setError(null);
69
+ setResults([]);
70
+ setPartialResults([]);
71
+ // Check permission (Android only)
72
+ const hasPermission = await Voice.checkMicrophonePermission();
73
+ if (!hasPermission) {
74
+ const granted = await Voice.requestMicrophonePermission();
75
+ if (!granted) {
76
+ setError('Microphone permission denied');
77
+ return;
78
+ }
79
+ }
80
+ await Voice.start(locale, {
81
+ EXTRA_PARTIAL_RESULTS: enablePartialResults,
82
+ });
83
+ }
84
+ catch (e) {
85
+ const errorMessage = e instanceof Error ? e.message : 'Failed to start recording';
86
+ setError(errorMessage);
87
+ onError?.(errorMessage);
88
+ }
89
+ }, [locale, enablePartialResults, onError]);
90
+ const stop = useCallback(async () => {
91
+ try {
92
+ await Voice.stop();
93
+ }
94
+ catch (e) {
95
+ const errorMessage = e instanceof Error ? e.message : 'Failed to stop recording';
96
+ setError(errorMessage);
97
+ onError?.(errorMessage);
98
+ }
99
+ }, [onError]);
100
+ const cancel = useCallback(async () => {
101
+ try {
102
+ await Voice.cancel();
103
+ setResults([]);
104
+ setPartialResults([]);
105
+ }
106
+ catch (e) {
107
+ const errorMessage = e instanceof Error ? e.message : 'Failed to cancel recording';
108
+ setError(errorMessage);
109
+ onError?.(errorMessage);
110
+ }
111
+ }, [onError]);
112
+ const reset = useCallback(() => {
113
+ setResults([]);
114
+ setPartialResults([]);
115
+ setError(null);
116
+ setIsRecording(false);
117
+ }, []);
118
+ return {
119
+ isRecording,
120
+ results,
121
+ partialResults,
122
+ error,
123
+ start,
124
+ stop,
125
+ cancel,
126
+ reset,
127
+ };
128
+ };
129
+ //# sourceMappingURL=useVoiceRecognition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVoiceRecognition.js","sourceRoot":"","sources":["../../src/hooks/useVoiceRecognition.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -67,6 +67,10 @@ declare class RCTVoice {
67
67
  }
68
68
  export type { SpeechEndEvent, SpeechErrorEvent, SpeechEvents, SpeechStartEvent, SpeechRecognizedEvent, SpeechResultsEvent, SpeechVolumeChangeEvent, TranscriptionEndEvent, TranscriptionErrorEvent, TranscriptionEvents, TranscriptionStartEvent, TranscriptionResultsEvent, };
69
69
  export type { VoiceOptions, RecognitionStats, PermissionResult, Language, } from './VoiceUtilTypes';
70
+ export { VoiceMicrophone, MicIcon, MicOffIcon } from './components';
71
+ export type { VoiceMicrophoneProps, MicIconProps, MicOffIconProps, } from './components';
72
+ export { useVoiceRecognition } from './hooks';
73
+ export type { UseVoiceRecognitionOptions, UseVoiceRecognitionReturn, } from './hooks';
70
74
  declare const _default: RCTVoice;
71
75
  export default _default;
72
76
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -391,5 +391,9 @@ class RCTVoice {
391
391
  this._events.onSpeechVolumeChanged = fn;
392
392
  }
393
393
  }
394
+ // Export components
395
+ export { VoiceMicrophone, MicIcon, MicOffIcon } from './components';
396
+ // Export hooks
397
+ export { useVoiceRecognition } from './hooks';
394
398
  export default new RCTVoice();
395
399
  //# sourceMappingURL=index.js.map