UNPKG

ant-design-x-vue

Version:

Craft AI-driven interfaces effortlessly

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