{"version":3,"sources":["../src/hooks/useVoiceCommand.ts"],"names":["useState","useRef","useEffect","useCallback"],"mappings":";;;;;AAMO,SAAS,eAAA,CAAgB,SAAA,EAAyC,OAAA,GAAmB,KAAA,EAAO;AACjG,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,MAAA,GAASC,aAAY,IAAI,CAAA;AAE/B,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AAAE,MAAA,MAAA,CAAO,SAAS,IAAA,IAAO;AAAG,MAAA;AAAA,IAAO;AACjD,IAAA,MAAM,EAAA,GAAM,MAAA,CAAe,iBAAA,IAAsB,MAAA,CAAe,uBAAA;AAChE,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,MAAM,GAAA,GAAM,IAAI,EAAA,EAAG;AACnB,IAAA,GAAA,CAAI,UAAA,GAAa,IAAA;AACjB,IAAA,GAAA,CAAI,cAAA,GAAiB,IAAA;AACrB,IAAA,GAAA,CAAI,IAAA,GAAO,OAAA;AACX,IAAA,GAAA,CAAI,OAAA,GAAU,MAAM,YAAA,CAAa,IAAI,CAAA;AACrC,IAAA,GAAA,CAAI,KAAA,GAAQ,MAAM,YAAA,CAAa,KAAK,CAAA;AACpC,IAAA,GAAA,CAAI,QAAA,GAAW,CAAC,CAAA,KAAW;AACzB,MAAA,MAAM,OAAO,CAAA,CAAE,OAAA,CAAQ,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAC,CAAA;AAC3C,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,CAAC,CAAA,CAAE,UAAA;AACrB,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,IAAI,IAAA,CAAK,OAAA,EAAS,SAAA,CAAU,IAAA,CAAK,MAAM,CAAA;AAAA,IACzC,CAAA;AACA,IAAA,GAAA,CAAI,OAAA,GAAU,MAAM,YAAA,CAAa,KAAK,CAAA;AACtC,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AACjB,IAAA,IAAI;AAAE,MAAA,GAAA,CAAI,KAAA,EAAM;AAAA,IAAE,CAAA,CAAA,MAAQ;AAAA,IAAC;AAC3B,IAAA,OAAO,MAAM;AAAE,MAAA,IAAI;AAAE,QAAA,GAAA,CAAI,IAAA,EAAK;AAAA,MAAE,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IAAE,CAAA;AAAA,EAC7C,CAAA,EAAG,CAAC,OAAA,EAAS,SAAS,CAAC,CAAA;AAEvB,EAAA,MAAM,KAAA,GAAQC,kBAAY,MAAM;AAAE,IAAA,IAAI;AAAE,MAAA,MAAA,CAAO,SAAS,KAAA,EAAM;AAAA,IAAE,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EAAE,CAAA,EAAG,EAAE,CAAA;AAChF,EAAA,MAAM,IAAA,GAAOA,kBAAY,MAAM;AAAE,IAAA,IAAI;AAAE,MAAA,MAAA,CAAO,SAAS,IAAA,EAAK;AAAA,IAAE,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EAAE,CAAA,EAAG,EAAE,CAAA;AAE9E,EAAA,OAAO,EAAE,SAAA,EAAW,UAAA,EAAY,KAAA,EAAO,IAAA,EAAK;AAC9C","file":"chunk-A7ZHX5FS.cjs","sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react'\n\n/**\n * useVoiceCommand — continuously listens for voice commands via SpeechRecognition.\n * Chrome/Edge only (webkit prefix).\n */\nexport function useVoiceCommand(onCommand: (transcript: string) => void, enabled: boolean = false) {\n  const [listening, setListening] = useState(false)\n  const [transcript, setTranscript] = useState('')\n  const recRef = useRef<any>(null)\n\n  useEffect(() => {\n    if (!enabled) { recRef.current?.stop?.(); return }\n    const SR = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition\n    if (!SR) return\n    const rec = new SR()\n    rec.continuous = true\n    rec.interimResults = true\n    rec.lang = 'en-US'\n    rec.onstart = () => setListening(true)\n    rec.onend = () => setListening(false)\n    rec.onresult = (e: any) => {\n      const last = e.results[e.results.length - 1]\n      const text = last[0].transcript\n      setTranscript(text)\n      if (last.isFinal) onCommand(text.trim())\n    }\n    rec.onerror = () => setListening(false)\n    recRef.current = rec\n    try { rec.start() } catch {}\n    return () => { try { rec.stop() } catch {} }\n  }, [enabled, onCommand])\n\n  const start = useCallback(() => { try { recRef.current?.start() } catch {} }, [])\n  const stop = useCallback(() => { try { recRef.current?.stop() } catch {} }, [])\n\n  return { listening, transcript, start, stop }\n}\n"]}