airi / assets /audio-record-BwBJ1j7e.js
nekomeowww's picture
release: build 9dd16015554ffc3cee7f29a842ea68651acfb58f
9c58d41
raw
history blame
2.41 kB
import{aT as e,ag as t,ao as n,ap as r,b2 as i,b9 as a,bA as o,bC as s,bE as c,bF as l,bG as u,bH as d,bM as f,bO as p,bP as m,bR as h,bT as g,bU as _,bV as v,bW as y,bZ as b,b_ as x,bx as S,by as C,c1 as w}from"./index-Cqd4rp-B.js";function T(){let t=i({constraints:{audio:!0},requestPermissions:!1}),n=y(t.audioInputs.value[0]?.deviceId||``),r=y(),a=m(()=>t.audioInputs.value),s=y({audio:!0}),c=e({constraints:s,autoSwitch:!0,enabled:!1});async function l(){t.permissionGranted.value||t.isSupported.value&&await t.ensurePermissions()}o(n,()=>{n.value&&(s.value={audio:{deviceId:{exact:n.value}}})},{immediate:!0}),o(t.audioInputs,()=>{r.value=a.value.find(e=>e.deviceId===n.value)},{immediate:!0}),o([t.permissionGranted,a,n],async()=>{await l(),t.permissionGranted.value&&a.value.length!==0&&(r.value||=a.value[0])},{immediate:!0});async function u(){await l(),t.permissionGranted.value&&r.value&&(c.enabled.value&&c.restart(),c.start())}function d(){c.stop()}return{selectedAudioInputId:n,selectedAudioInput:r,audioInputs:a,start:u,stop:d,request:l,media:c}}function E(e,t=()=>Promise.resolve()){let n=y(),r=v(e);async function i(){if(await t(),await a(r).toBeTruthy(),!r.value){console.error(`No media media available`);return}n.value=new MediaRecorder(r.value),n.value.start()}function o(){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:o}}const D={class:`mt-4 w-full flex justify-center gap-2`};var O=h({__name:`audio-record`,setup(e){let{audioInputs:i,selectedAudioInputId:a,start:o,stop:m,media:h,request:v}=T(),{startRecord:y,stopRecord:O}=E(h.stream,o);return f(()=>v()),S(()=>m()),(e,f)=>(s(),_(`div`,null,[C(b(n),{modelValue:b(a),"onUpdate:modelValue":f[0]||=e=>x(a)?a.value=e:null,onChange:f[1]||=()=>b(o)()},{default:g(({value:e})=>[c(`div`,null,w(e?b(i).find(t=>t.deviceId===e)?.label:`Select Audio Input`),1)]),options:g(({hide:e})=>[(s(!0),_(p,null,l(b(i),t=>(s(),d(b(r),{key:t.deviceId,value:t.deviceId,active:t.deviceId===b(a),onClick:t=>e()},{default:g(()=>[u(w(t.label),1)]),_:2},1032,[`value`,`active`,`onClick`]))),128))]),_:1},8,[`modelValue`]),c(`div`,D,[C(b(t),{onClick:b(y)},{default:g(()=>f[2]||=[u(` Start Recording `)]),_:1,__:[2]},8,[`onClick`]),C(b(t),{onClick:b(O)},{default:g(()=>f[3]||=[u(` Stop Recording `)]),_:1,__:[3]},8,[`onClick`])])]))}}),k=O;export{k as default};