import{cI as e,cj as t,d$ as n,dS as r,dU as i,dV as a,dW as o,dY as s,dZ as c,d_ as l,dd as u,dm as d,dp as f,e1 as p,e3 as m,e5 as h,e6 as g,e7 as _,e8 as v,e9 as y,ee as b,ef as x,eh as S,ei as C,el as w,em as T,eq as E}from"./index-B9WIljdS.js";var D=n({__name:`Option`,props:{value:{},label:{},active:{type:Boolean}},setup(e){let t=e,n=p(`selectOption`),r=p(`hide`);return(e,i)=>(_(),s(`div`,m({...e.$attrs,class:null,style:null},{class:[`cursor-pointer rounded px-2 py-1 text-neutral-700 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-800`,{"bg-neutral-100 dark:bg-neutral-800":t.active}],"line-clamp-1":``,"overflow-hidden":``,"text-ellipsis":``,"whitespace-pre-wrap":``,text:`xs sm:sm`,"transition-colors":``,"duration-150":``,"ease-in-out":``,"will-change-background-color":``,"will-change-color":``,onClick:i[0]||=()=>{T(n)(t.value),T(r)()}}),[y(e.$slots,`default`,{},()=>[c(E(t.label),1)])],16))}}),O=D;function k(){let e=u({constraints:{audio:!0},requestPermissions:!1}),t=C(e.audioInputs.value[0]?.deviceId||``),n=C(),r=i(()=>e.audioInputs.value),a=C({audio:!0}),o=d({constraints:a,autoSwitch:!0,enabled:!1});async function s(){e.permissionGranted.value||e.isSupported.value&&await e.ensurePermissions()}b(t,()=>{t.value&&(a.value={audio:{deviceId:{exact:t.value}}})},{immediate:!0}),b(e.audioInputs,()=>{n.value=r.value.find(e=>e.deviceId===t.value)},{immediate:!0}),b([e.permissionGranted,r,t],async()=>{await s(),e.permissionGranted.value&&r.value.length!==0&&(n.value||=r.value[0])},{immediate:!0});async function c(){await s(),e.permissionGranted.value&&n.value&&(o.enabled.value&&o.restart(),o.start())}function l(){o.stop()}return{selectedAudioInputId:t,selectedAudioInput:n,audioInputs:r,start:c,stop:l,request:s,media:o}}function A(e,t=()=>Promise.resolve()){let n=C(),r=w(e);async function i(){if(await t(),await f(r).toBeTruthy(),!r.value){console.error(`No media media available`);return}n.value=new MediaRecorder(r.value),n.value.start()}function a(){n.value&&(n.value.stop(),n.value.ondataavailable=e=>{let t=e.data,n=URL.createObjectURL(t),r=new Audio(n);r.play()})}return{startRecord:i,stopRecord:a}}const j={class:`mt-4 w-full flex justify-center gap-2`};var M=n({__name:`audio-record`,setup(n){let{audioInputs:i,selectedAudioInputId:u,start:d,stop:f,media:p,request:m}=k(),{startRecord:y,stopRecord:b}=A(p.stream,d);return h(()=>m()),g(()=>f()),(n,f)=>(_(),s(`div`,null,[l(T(e),{modelValue:T(u),"onUpdate:modelValue":f[0]||=e=>S(u)?u.value=e:null,onChange:f[1]||=()=>T(d)()},{default:x(({value:e})=>[a(`div`,null,E(e?T(i).find(t=>t.deviceId===e)?.label:`Select Audio Input`),1)]),options:x(({hide:e})=>[(_(!0),s(r,null,v(T(i),t=>(_(),o(T(O),{key:t.deviceId,value:t.deviceId,active:t.deviceId===T(u),onClick:t=>e()},{default:x(()=>[c(E(t.label),1)]),_:2},1032,[`value`,`active`,`onClick`]))),128))]),_:1},8,[`modelValue`]),a(`div`,j,[l(T(t),{onClick:T(y)},{default:x(()=>f[2]||=[c(` Start Recording `,-1)]),_:1,__:[2]},8,[`onClick`]),l(T(t),{onClick:T(b)},{default:x(()=>f[3]||=[c(` Stop Recording `,-1)]),_:1,__:[3]},8,[`onClick`])])]))}}),N=M;export{N as default}; |