UNPKG

ant-design-x-vue

Version:

Craft AI-driven interfaces effortlessly

2 lines (1 loc) 1.52 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const _=require("../_util/hooks/useMergedState.js"),o=require("vue");let r;!r&&typeof window<"u"&&(r=window.SpeechRecognition||window.webkitSpeechRecognition);function b(g,h){const w=g,i=o.computed(()=>{const e=o.toValue(h);return typeof e=="object"?{controlledRecording:e.recording,onControlledRecordingChange:e.onRecordingChange,speechInControlled:typeof e.recording=="boolean"}:{controlledRecording:void 0,onControlledRecordingChange:void 0,speechInControlled:!1}}),S=o.computed(()=>i.value.controlledRecording),n=i.value.onControlledRecordingChange,m=i.value.speechInControlled,s=o.ref(null);o.watchEffect(()=>{if(typeof navigator<"u"&&"permissions"in navigator){let e=null;navigator.permissions.query({name:"microphone"}).then(l=>{s.value=l.state,l.onchange=function(){s.value=this.state},e=l}),o.onWatcherCleanup(()=>{e&&(e.onchange=null)})}});const a=o.computed(()=>r&&s.value!=="denied"),t=o.ref(null),[c,d]=_.default(!1,{value:S}),u=o.ref(!1),R=()=>{if(a.value&&!t.value){const e=new r;e.onstart=()=>{d(!0)},e.onend=()=>{d(!1)},e.onresult=l=>{var f,p,v;if(!u.value){const y=(v=(p=(f=l.results)==null?void 0:f[0])==null?void 0:p[0])==null?void 0:v.transcript;w(y)}u.value=!1},t.value=e}};return{speechPermission:a,triggerSpeech:e=>{e&&!c.value||(u.value=e,m?n==null||n(!c.value):(R(),t.value&&(c.value?(t.value.stop(),n==null||n(!1)):(t.value.start(),n==null||n(!0)))))},recording:c}}exports.default=b;