1import __buffer_polyfill from "/node_modules/.vite/deps/vite-plugin-node-polyfills_shims_buffer.js?v=bf763330" 2globalThis.Buffer = globalThis.Buffer || __buffer_polyfill 3import __global_polyfill from "/node_modules/.vite/deps/vite-plugin-node-polyfills_shims_global.js?v=bf763330" 4globalThis.global = globalThis.global || __global_polyfill 5import __process_polyfill from "/node_modules/.vite/deps/vite-plugin-node-polyfills_shims_process.js?v=bf763330" 6globalThis.process = globalThis.process || __process_polyfill 7 8import __vite__cjsImport3_react from "/node_modules/.vite/deps/react.js?v=bf763330"; const useEffect = __vite__cjsImport3_react["useEffect"]; const useRef = __vite__cjsImport3_react["useRef"]; const useState = __vite__cjsImport3_react["useState"]; 9export const useIdeaToWebsiteVoiceInput = (onTranscript) => { 10 const onTranscriptRef = useRef(onTranscript); 11 onTranscriptRef.current = onTranscript; 12 const [isListening, setIsListening] = useState(false); 13 const [recognition, setRecognition] = useState(null); 14 useEffect(() => { 15 if (typeof window === "undefined") { 16 return; 17 } 18 if (!("SpeechRecognition" in window) && !("webkitSpeechRecognition" in window)) { 19 return; 20 } 21 const speechRecognitionCtor = window.SpeechRecognition || window.webkitSpeechRecognition; 22 const instance = new speechRecognitionCtor(); 23 instance.continuous = true; 24 instance.interimResults = true; 25 instance.onresult = (event) => { 26 const transcript = Array.from(event.results).map((result) => result[0]).map((result) => result.transcript).join(""); 27 onTranscriptRef.current(transcript); 28 }; 29 instance.onerror = () => { 30 setIsListening(false); 31 }; 32 setRecognition(instance); 33 }, []); 34 const startListening = () => { 35 if (recognition) { 36 recognition.start(); 37 setIsListening(true); 38 } 39 }; 40 const stopListening = () => { 41 if (recognition) { 42 recognition.stop(); 43 setIsListening(false); 44 } 45 }; 46 return { 47 isListening, 48 voiceSupported: recognition !== null, 49 startListening, 50 stopListening 51 }; 52}; 53 54//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUlkZWFUb1dlYnNpdGVWb2ljZUlucHV0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBCcm93c2VyIHNwZWVjaC10by10ZXh0IGZvciB0aGUgaWRlYS10by13ZWJzaXRlIGNvbXBvc2VyIChXZWIgU3BlZWNoIEFQSSkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VJZGVhVG9XZWJzaXRlVm9pY2VJbnB1dCA9IChvblRyYW5zY3JpcHQ6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgY29uc3Qgb25UcmFuc2NyaXB0UmVmID0gdXNlUmVmKG9uVHJhbnNjcmlwdCk7XG4gIG9uVHJhbnNjcmlwdFJlZi5jdXJyZW50ID0gb25UcmFuc2NyaXB0O1xuXG4gIGNvbnN0IFtpc0xpc3RlbmluZywgc2V0SXNMaXN0ZW5pbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVjb2duaXRpb24sIHNldFJlY29nbml0aW9uXSA9IHVzZVN0YXRlPFNwZWVjaFJlY29nbml0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoISgnU3BlZWNoUmVjb2duaXRpb24nIGluIHdpbmRvdykgJiYgISgnd2Via2l0U3BlZWNoUmVjb2duaXRpb24nIGluIHdpbmRvdykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVlY2hSZWNvZ25pdGlvbkN0b3IgPSB3aW5kb3cuU3BlZWNoUmVjb2duaXRpb24gfHwgd2luZG93LndlYmtpdFNwZWVjaFJlY29nbml0aW9uO1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IHNwZWVjaFJlY29nbml0aW9uQ3RvcigpO1xuICAgIGluc3RhbmNlLmNvbnRpbnVvdXMgPSB0cnVlO1xuICAgIGluc3RhbmNlLmludGVyaW1SZXN1bHRzID0gdHJ1ZTtcblxuICAgIGluc3RhbmNlLm9ucmVzdWx0ID0gKGV2ZW50OiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2NyaXB0ID0gQXJyYXkuZnJvbShldmVudC5yZXN1bHRzKVxuICAgICAgICAubWFwKChyZXN1bHQpID0+IHJlc3VsdFswXSlcbiAgICAgICAgLm1hcCgocmVzdWx0KSA9PiByZXN1bHQudHJhbnNjcmlwdClcbiAgICAgICAgLmpvaW4oJycpO1xuICAgICAgb25UcmFuc2NyaXB0UmVmLmN1cnJlbnQodHJhbnNjcmlwdCk7XG4gICAgfTtcblxuICAgIGluc3RhbmNlLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBzZXRJc0xpc3RlbmluZyhmYWxzZSk7XG4gICAgfTtcblxuICAgIHNldFJlY29nbml0aW9uKGluc3RhbmNlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHN0YXJ0TGlzdGVuaW5nID0gKCkgPT4ge1xuICAgIGlmIChyZWNvZ25pdGlvbikge1xuICAgICAgcmVjb2duaXRpb24uc3RhcnQoKTtcbiAgICAgIHNldElzTGlzdGVuaW5nKHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzdG9wTGlzdGVuaW5nID0gKCkgPT4ge1xuICAgIGlmIChyZWNvZ25pdGlvbikge1xuICAgICAgcmVjb2duaXRpb24uc3RvcCgpO1xuICAgICAgc2V0SXNMaXN0ZW5pbmcoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGlzTGlzdGVuaW5nLFxuICAgIHZvaWNlU3VwcG9ydGVkOiByZWNvZ25pdGlvbiAhPT0gbnVsbCxcbiAgICBzdGFydExpc3RlbmluZyxcbiAgICBzdG9wTGlzdGVuaW5nLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVMsV0FBVyxRQUFRLGdCQUFnQjtBQUtyQyxhQUFNLDZCQUE2QixDQUFDLGlCQUF5QztBQUNsRixRQUFNLGtCQUFrQixPQUFPLFlBQVk7QUFDM0Msa0JBQWdCLFVBQVU7QUFFMUIsUUFBTSxDQUFDLGFBQWEsY0FBYyxJQUFJLFNBQVMsS0FBSztBQUNwRCxRQUFNLENBQUMsYUFBYSxjQUFjLElBQUksU0FBbUMsSUFBSTtBQUU3RSxZQU
54FVLE1BQU07QUFDZCxRQUFJLE9BQU8sV0FBVyxhQUFhO0FBQ2pDO0FBQUEsSUFDRjtBQUVBLFFBQUksRUFBRSx1QkFBdUIsV0FBVyxFQUFFLDZCQUE2QixTQUFTO0FBQzlFO0FBQUEsSUFDRjtBQUVBLFVBQU0sd0JBQXdCLE9BQU8scUJBQXFCLE9BQU87QUFDakUsVUFBTSxXQUFXLElBQUksc0JBQXNCO0FBQzNDLGFBQVMsYUFBYTtBQUN0QixhQUFTLGlCQUFpQjtBQUUxQixhQUFTLFdBQVcsQ0FBQyxVQUFrQztBQUNyRCxZQUFNLGFBQWEsTUFBTSxLQUFLLE1BQU0sT0FBTyxFQUN4QyxJQUFJLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQyxFQUN6QixJQUFJLENBQUMsV0FBVyxPQUFPLFVBQVUsRUFDakMsS0FBSyxFQUFFO0FBQ1Ysc0JBQWdCLFFBQVEsVUFBVTtBQUFBLElBQ3BDO0FBRUEsYUFBUyxVQUFVLE1BQU07QUFDdkIscUJBQWUsS0FBSztBQUFBLElBQ3RCO0FBRUEsbUJBQWUsUUFBUTtBQUFBLEVBQ3pCLEdBQUcsQ0FBQyxDQUFDO0FBRUwsUUFBTSxpQkFBaUIsTUFBTTtBQUMzQixRQUFJLGFBQWE7QUFDZixrQkFBWSxNQUFNO0FBQ2xCLHFCQUFlLElBQUk7QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGdCQUFnQixNQUFNO0FBQzFCLFFBQUksYUFBYTtBQUNmLGtCQUFZLEtBQUs7QUFDakIscUJBQWUsS0FBSztBQUFBLElBQ3RCO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxnQkFBZ0IsZ0JBQWdCO0FBQUEsSUFDaEM7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGOyIsIm5hbWVzIjpbXX0=
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.