var m=Object.defineProperty;var C=(u,t,e)=>t in u?m(u,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):u[t]=e;var b=(u,t,e)=>(C(u,typeof t!="symbol"?t+"":t,e),e);import{r as d}from"./entry.934q6iPY.js";const E=Object.prototype.hasOwnProperty;class c extends Event{constructor(t,e){super(t),this.detail=e}}class S extends EventTarget{constructor(t={}){super();const{concurrency:e=1/0,timeout:i=0,autostart:n=!1,results:s=null}=t;this.concurrency=e,this.timeout=i,this.autostart=n,this.results=s,this.pending=0,this.session=0,this.running=!1,this.jobs=[],this.timers=[],this.addEventListener("error",this._errorHandler)}_errorHandler(t){this.end(t.detail.error)}pop(){return this.jobs.pop()}shift(){return this.jobs.shift()}indexOf(t,e){return this.jobs.indexOf(t,e)}lastIndexOf(t,e){return e!==void 0?this.jobs.lastIndexOf(t,e):this.jobs.lastIndexOf(t)}slice(t,e){return this.jobs=this.jobs.slice(t,e),this}reverse(){return this.jobs.reverse(),this}push(...t){const e=this.jobs.push(...t);return this.autostart&&this._start(),e}unshift(...t){const e=this.jobs.unshift(...t);return this.autostart&&this._start(),e}splice(t,e,...i){return this.jobs.splice(t,e,...i),this.autostart&&this._start(),this}get length(){return this.pending+this.jobs.length}start(t){if(this.running)throw new Error("already started");let e;return t?this._addCallbackToEndEvent(t):e=this._createPromiseToEndEvent(),this._start(),e}_start(){if(this.running=!0,this.pending>=this.concurrency)return;if(this.jobs.length===0){this.pending===0&&this.done();return}const t=this.jobs.shift(),e=this.session,i=t!==void 0&&E.call(t,"timeout")?t.timeout:this.timeout;let n=!0,s=null,o=!1,a=null;const h=(r,...v)=>{n&&this.session===e&&(n=!1,this.pending--,s!==null&&(this.timers=this.timers.filter(A=>A!==s),clearTimeout(s)),r?this.dispatchEvent(new c("error",{error:r,job:t})):o||(a!==null&&this.results!==null&&(this.results[a]=[...v]),this.dispatchEvent(new c("success",{result:[...v],job:t}))),this.session===e&&(this.pending===0&&this.jobs.length===0?this.done():this.running&&this._start()))};i&&(s=setTimeout(()=>{o=!0,this.dispatchEvent(new c("timeout",{next:h,job:t})),h()},i),this.timers.push(s)),this.results!=null&&(a=this.results.length,this.results[a]=null),this.pending++,this.dispatchEvent(new c("start",{job:t})),t.promise=t(h),t.promise!==void 0&&typeof t.promise.then=="function"&&t.promise.then(function(r){return h(void 0,r)}).catch(function(r){return h(r||!0)}),this.running&&this.jobs.length>0&&this._start()}stop(){this.running=!1}end(t){this.clearTimers(),this.jobs.length=0,this.pending=0,this.done(t)}clearTimers(){this.timers.forEach(t=>{clearTimeout(t)}),this.timers=[]}_addCallbackToEndEvent(t){const e=i=>{this.removeEventListener("end",e),t(i.detail.error,this.results)};this.addEventListener("end",e)}_createPromiseToEndEvent(){return new Promise((t,e)=>{this._addCallbackToEndEvent((i,n)=>{i?e(i):t(n)})})}done(t){this.session++,this.running=!1,this.dispatchEvent(new c("end",{error:t}))}}class x{constructor({onPlay:t,onEnd:e}={}){b(this,"onEndedAudioSource",()=>{var t,e;this.playing=!1,this.totalChunksLoaded=0,this.audioSource&&(this.audioSource.stop(),this.audioContext.close(),this.audioContext=null,this.audioSource=null,this.audioAnalyser=null),(e=(t=this.listeners)==null?void 0:t.onEnd)==null||e.call(t)});this.activeBuffer=null,this.totalChunksLoaded=0,this.audioContext=null,this.audioBuffer=null,this.audioSource=null,this.audioAnalyser=null,this.playing=!1,this.decodeQueue=new S({concurrency:1,autostart:!0}),this.listeners={onPlay:t,onEnd:e}}appendBuffer(t,e){const i=new Uint8Array(t.byteLength+e.byteLength),n=new Uint8Array(t),s=new Uint8Array(e);return i.set(n,0),i.set(s,t.byteLength),i.buffer}initializeWebAudio(){this.audioContext=new AudioContext,this.audioAnalyser=this.audioContext.createAnalyser(),this.audioAnalyser.fftSize=2048}stop(){this.decodeQueue.end(),this.onEndedAudioSource()}play(){var i,n;this.playing||(n=(i=this.listeners)==null?void 0:i.onPlay)==null||n.call(i),this.playing=!0;const t=this.audioContext.currentTime||0,e=.015;this.audioSource&&(this.audioSource.onended=null,this.audioSource.stop(e)),this.audioSource=this.audioContext.createBufferSource(),this.audioSource.buffer=this.audioBuffer,this.audioSource.connect(this.audioAnalyser),this.audioSource.connect(this.audioContext.destination),this.audioSource.onended=()=>{var s,o;this.playing=!1,(o=(s=this.listeners)==null?void 0:s.onEnd)==null||o.call(s)},this.audioSource.start(e,t,Math.max(this.audioBuffer.duration-t,0)),this.audioSource.playbackRate.value=1}playAudioChunk(t){var e;console.log("Mp3ChunksPlayer: Play audio chunk. Audio context state:",(e=this.audioContext)==null?void 0:e.state),this.totalChunksLoaded===0?(this.initializeWebAudio(),this.activeBuffer=t.buffer):this.activeBuffer=this.appendBuffer(this.activeBuffer,t.buffer),this.totalChunksLoaded++,this.decodeQueue.push(()=>(this.audioContext.state==="suspended"&&this.audioContext.resume(),this.audioContext.decodeAudioData(this.activeBuffer.slice(0),i=>{this.audioBuffer=i,this.play()}).catch(i=>{console.log(i)})))}}class w{constructor({audioContext:t,onPlay:e,onEnd:i}){this.audioSource=null,this.playing=!1,this.audioContext=t,this.audioAnalyser=t.createAnalyser(),this.listening={onPlay:e,onEnd:i}}appendBuffer(t,e){const i=new Uint8Array(t.byteLength+e.byteLength),n=new Uint8Array(t),s=new Uint8Array(e);return i.set(n,0),i.set(s,t.byteLength),i.buffer}stop(){this.audioSource&&this.audioSource.stop()}playAudioChunks(t){let e=null;t.forEach(i=>{const n=atob(i),s=new Uint8Array(n.length);for(let o=0;o<n.length;o++)s[o]=n.charCodeAt(o);e?e=this.appendBuffer(e,s.buffer):e=s.buffer}),this.audioContext.decodeAudioData(e,i=>{this.playing=!0,this.listening.onPlay(),this.audioSource=this.audioContext.createBufferSource(),this.audioSource.buffer=i,this.audioSource.onended=()=>{this.playing=!1,this.listening.onEnd()},this.audioSource.start(),this.audioSource.connect(this.audioAnalyser),this.audioSource.connect(this.audioContext.destination)},function(i){console.error("Error decoding audio data: "+i)})}}const j=d(),l=d(),f=d(!1),k=d(!1),p=d(!1),y=d([]),g=d(!1);function P(){function u(){p.value=!1,l.value=p.value?new w({onPlay(){f.value=!0},onEnd(){f.value=!1}}):new x({onPlay(){f.value=!0},onEnd(){f.value=!1}})}function t(){g.value=!0,setTimeout(()=>{l.value.stop()},100)}function e(){l.value.onEndedAudioSource(),g.value=!1}function i(){!p.value||!y.value.length||(l.value.playAudioChunks(y.value),y.value=[])}function n(o){g.value||(p.value?y.value.push(o.data):s(o.data))}function s(o){const a=atob(o),h=new Uint8Array(a.length);for(let r=0;r<a.length;r++)h[r]=a.charCodeAt(r);l.value.playAudioChunk(h)}return{audioContext:j,initAudioContext:u,onAudioRecive:n,onAudioStart:e,onAudioEnd:i,playing:f,audioPlayer:l,recording:k,interrupted:g,interruptSpeaking:t}}export{P as u};
