@meersagor/wavesurfer-vue 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("vue"),It=require("wavesurfer.js"),J=({containerRef:o,options:t})=>{const e=P.ref(null),i=()=>{o.value&&(e.value=It.create({container:o.value,...t}))},s=()=>{e.value&&(e.value.destroy(),e.value=null)};return P.onMounted(()=>{i()}),P.onUnmounted(()=>{s()}),{waveSurfer:e}},zt=o=>{const t=P.ref(!1),e=P.ref(!1),i=P.ref(0),s=P.ref(0),r=()=>{t.value=!1,e.value=!1,i.value=0},n=d=>{t.value=!0,e.value=!1,i.value=0,s.value=d},l=()=>{e.value=!0},h=()=>{e.value=!1},c=()=>{o.value&&(i.value=o.value.getCurrentTime())},a=()=>{t.value=!1,e.value=!1};return P.onMounted(()=>{o.value&&(o.value.on("load",r),o.value.on("ready",n),o.value.on("play",l),o.value.on("pause",h),o.value.on("timeupdate",c),o.value.on("destroy",a))}),P.onUnmounted(()=>{o.value&&o.value.unAll()}),{isReady:t,isPlaying:e,currentTime:i,totalDuration:s}},st=({containerRef:o,options:t})=>{const{waveSurfer:e}=J({containerRef:o,options:t}),{isReady:i,totalDuration:s,isPlaying:r,currentTime:n}=zt(e);return{waveSurfer:e,isReady:i,totalDuration:s,isPlaying:r,currentTime:n}},Gt=["audioprocess","click","dblclick","decode","drag","finish","init","interaction","load","loading","pause","play","ready","redraw","redrawcomplete","scroll","seeking","timeupdate","zoom"],Xt=P.defineComponent({__name:"WaveSurferPlayer",props:{options:{}},setup(o){const t=o,e=P.ref(null),{waveSurfer:i}=st({containerRef:e,options:t.options}),s=P.getCurrentInstance();return P.onMounted(()=>{Gt.forEach(r=>{i.value?.on(r,(...n)=>{s?.emit(r,...n)})}),s?.emit("waveSurfer",i.value)}),(r,n)=>(P.openBlock(),P.createElementBlock("div",{ref_key:"containerRef",ref:e},null,512))}}),I=(o,t={})=>{const e=P.ref(null);return{pluginInstance:e,createPlugin:s=>{if(s){const r=s.registerPlugin(o.create({...t}));r&&(e.value=r)}}}},z=(o,{containerRef:t,options:e,pluginOptions:i={}})=>{const{waveSurfer:s}=J({containerRef:t,options:e}),r=P.ref(null);return P.onMounted(()=>{if(s.value){const n=s.value.registerPlugin(o.create({...i}));n&&(r.value=n)}}),{waveSurfer:s,pluginInstance:r}};let Nt=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},Ot=class extends Nt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function nt(o,t){const e=t.xmlns?document.createElementNS(t.xmlns,o):document.createElement(o);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[r,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(nt(r,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function B(o,t,e){return nt(o,t||{})}const Yt={height:20,timeOffset:0,formatTimeCallback:o=>o/60>1?`${Math.floor(o/60)}:${`${(o=Math.round(o%60))<10?"0":""}${o}`}`:`${Math.round(1e3*o)/1e3}`};let rt=class ot extends Ot{constructor(t){super(t||{}),this.unsubscribeNotches=[],this.options=Object.assign({},Yt,t),this.timelineWrapper=this.initTimelineWrapper()}static create(t){return new ot(t)}onInit(){var t;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");let e=this.wavesurfer.getWrapper();if(this.options.container instanceof HTMLElement)e=this.options.container;else if(typeof this.options.container=="string"){const i=document.querySelector(this.options.container);if(!i)throw Error(`No Timeline container found matching ${this.options.container}`);e=i}this.options.insertPosition?(e.firstElementChild||e).insertAdjacentElement(this.options.insertPosition,this.timelineWrapper):e.appendChild(this.timelineWrapper),this.subscriptions.push(this.wavesurfer.on("redraw",()=>this.initTimeline())),(!((t=this.wavesurfer)===null||t===void 0)&&t.getDuration()||this.options.duration)&&this.initTimeline()}destroy(){this.unsubscribeNotches.forEach(t=>t()),this.unsubscribeNotches=[],this.timelineWrapper.remove(),super.destroy()}initTimelineWrapper(){return B("div",{part:"timeline-wrapper",style:{pointerEvents:"none"}})}defaultTimeInterval(t){return t>=25?1:5*t>=25?5:15*t>=25?15:60*Math.ceil(.5/t)}defaultPrimaryLabelInterval(t){return t>=25?10:5*t>=25?6:4}defaultSecondaryLabelInterval(t){return t>=25?5:2}virtualAppend(t,e,i){let s=!1;const r=(h,c)=>{if(!this.wavesurfer)return;const a=i.clientWidth,d=t>=h&&t+a<c;d!==s&&(s=d,d?e.appendChild(i):i.remove())};if(!this.wavesurfer)return;const n=this.wavesurfer.getScroll(),l=n+this.wavesurfer.getWidth();r(n,l),this.unsubscribeNotches.push(this.wavesurfer.on("scroll",(h,c,a,d)=>{r(a,d)}))}initTimeline(){var t,e,i,s,r,n,l,h;this.unsubscribeNotches.forEach(w=>w()),this.unsubscribeNotches=[];const c=(i=(e=(t=this.wavesurfer)===null||t===void 0?void 0:t.getDuration())!==null&&e!==void 0?e:this.options.duration)!==null&&i!==void 0?i:0,a=(((s=this.wavesurfer)===null||s===void 0?void 0:s.getWrapper().scrollWidth)||this.timelineWrapper.scrollWidth)/c,d=(r=this.options.timeInterval)!==null&&r!==void 0?r:this.defaultTimeInterval(a),u=(n=this.options.primaryLabelInterval)!==null&&n!==void 0?n:this.defaultPrimaryLabelInterval(a),p=this.options.primaryLabelSpacing,b=(l=this.options.secondaryLabelInterval)!==null&&l!==void 0?l:this.defaultSecondaryLabelInterval(a),W=this.options.secondaryLabelSpacing,g=this.options.insertPosition==="beforebegin",m=B("div",{style:Object.assign({height:`${this.options.height}px`,overflow:"hidden",fontSize:this.options.height/2+"px",whiteSpace:"nowrap"},g?{position:"absolute",top:"0",left:"0",right:"0",zIndex:"2"}:{position:"relative"})});m.setAttribute("part","timeline"),typeof this.options.style=="string"?m.setAttribute("style",m.getAttribute("style")+this.options.style):typeof this.options.style=="object"&&Object.assign(m.style,this.options.style);const y=B("div",{style:{width:"0",height:"50%",display:"flex",flexDirection:"column",justifyContent:g?"flex-start":"flex-end",top:g?"0":"auto",bottom:g?"auto":"0",overflow:"visible",borderLeft:"1px solid currentColor",opacity:`${(h=this.options.secondaryLabelOpacity)!==null&&h!==void 0?h:.25}`,position:"absolute",zIndex:"1"}});for(let w=0,v=0;w<c;w+=d,v++){const f=y.cloneNode(),S=Math.round(100*w)%Math.round(100*u)==0||p&&v%p==0,x=Math.round(100*w)%Math.round(100*b)==0||W&&v%W==0;(S||x)&&(f.style.height="100%",f.style.textIndent="3px",f.textContent=this.options.formatTimeCallback(w),S&&(f.style.opacity="1"));const C=S?"primary":x?"secondary":"tick";f.setAttribute("part",`timeline-notch timeline-notch-${C}`);const M=Math.round(100*(w+this.options.timeOffset))/100*a;f.style.left=`${M}px`,this.virtualAppend(M,m,f)}this.timelineWrapper.innerHTML="",this.timelineWrapper.appendChild(m),this.emit("ready")}};const Vt=({waveSurfer:o,timelineOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(rt,t);return P.onMounted(()=>{o.value&&i(o.value)}),{timelinePlugin:e}},Kt=({containerRef:o,options:t,timelineOptions:e={}})=>z(rt,{containerRef:o,options:t,pluginOptions:e});let jt=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},At=class extends jt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};const Ft={scale:.5,deltaThreshold:5,exponentialZooming:!1,iterations:20};let at=class lt extends At{constructor(t){super(t||{}),this.wrapper=void 0,this.container=null,this.accumulatedDelta=0,this.pointerTime=0,this.oldX=0,this.endZoom=0,this.startZoom=0,this.onWheel=e=>{if(this.wavesurfer&&this.container&&!(Math.abs(e.deltaX)>=Math.abs(e.deltaY))&&(e.preventDefault(),this.accumulatedDelta+=-e.deltaY,this.startZoom===0&&this.options.exponentialZooming&&(this.startZoom=this.wavesurfer.getWrapper().clientWidth/this.wavesurfer.getDuration()),this.options.deltaThreshold===0||Math.abs(this.accumulatedDelta)>=this.options.deltaThreshold)){const i=this.wavesurfer.getDuration(),s=this.wavesurfer.options.minPxPerSec===0?this.wavesurfer.getWrapper().scrollWidth/i:this.wavesurfer.options.minPxPerSec,r=e.clientX-this.container.getBoundingClientRect().left,n=this.container.clientWidth,l=this.wavesurfer.getScroll();r===this.oldX&&this.oldX!==0||(this.pointerTime=(l+r)/s),this.oldX=r;const h=this.calculateNewZoom(s,this.accumulatedDelta),c=n/h*(r/n);h*i<n?(this.wavesurfer.zoom(n/i),this.container.scrollLeft=0):(this.wavesurfer.zoom(h),this.container.scrollLeft=(this.pointerTime-c)*h),this.accumulatedDelta=0}},this.calculateNewZoom=(e,i)=>{let s;if(this.options.exponentialZooming){const r=i>0?Math.pow(this.endZoom/this.startZoom,1/(this.options.iterations-1)):Math.pow(this.startZoom/this.endZoom,1/(this.options.iterations-1));s=Math.max(0,e*r)}else s=Math.max(0,e+i*this.options.scale);return Math.min(s,this.options.maxZoom)},this.options=Object.assign({},Ft,t)}static create(t){return new lt(t)}onInit(){var t;this.wrapper=(t=this.wavesurfer)===null||t===void 0?void 0:t.getWrapper(),this.wrapper&&(this.container=this.wrapper.parentElement,this.container.addEventListener("wheel",this.onWheel),this.options.maxZoom===void 0&&(this.options.maxZoom=this.container.clientWidth),this.endZoom=this.options.maxZoom)}destroy(){this.wrapper&&this.wrapper.removeEventListener("wheel",this.onWheel),super.destroy()}};const Ut=({waveSurfer:o,zoomOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(at,t),s=()=>{o.value&&o.value.zoom(100)},r=()=>{o.value&&o.value.zoom(50)},n=l=>{o.value&&o.value.zoom(l)};return P.onMounted(()=>{o.value&&i(o.value)}),{zoomPlugin:e,zoomIn:s,zoomOut:r,setZoom:n}},Bt=({containerRef:o,options:t,zoomOptions:e={}})=>{const{waveSurfer:i,pluginInstance:s}=z(at,{containerRef:o,options:t,pluginOptions:e});return{waveSurfer:i,zoomPlugin:s,zoomIn:()=>{i.value&&i.value.zoom(100)},zoomOut:()=>{i.value&&i.value.zoom(50)},setZoom:h=>{i.value&&i.value.zoom(h)}}};let Y=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},ht=class extends Y{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function L(o,t,e,i){return new(e||(e=Promise))(function(s,r){function n(c){try{h(i.next(c))}catch(a){r(a)}}function l(c){try{h(i.throw(c))}catch(a){r(a)}}function h(c){var a;c.done?s(c.value):(a=c.value,a instanceof e?a:new e(function(d){d(a)})).then(n,l)}h((i=i.apply(o,t||[])).next())})}const V={decode:function(o,t){return L(this,void 0,void 0,function*(){const e=new AudioContext({sampleRate:t});return e.decodeAudioData(o).finally(()=>e.close())})},createBuffer:function(o,t){return typeof o[0]=="number"&&(o=[o]),function(e){const i=e[0];if(i.some(s=>s>1||s<-1)){const s=i.length;let r=0;for(let n=0;n<s;n++){const l=Math.abs(i[n]);l>r&&(r=l)}for(const n of e)for(let l=0;l<s;l++)n[l]/=r}}(o),{duration:t,length:o[0].length,sampleRate:o[0].length/t,numberOfChannels:o.length,getChannelData:e=>o?.[e],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function ct(o,t){const e=t.xmlns?document.createElementNS(t.xmlns,o):document.createElement(o);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[r,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(ct(r,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function F(o,t,e){const i=ct(o,t||{});return e?.appendChild(i),i}var Ht=Object.freeze({__proto__:null,createElement:F,default:F});const $t={fetchBlob:function(o,t,e){return L(this,void 0,void 0,function*(){const i=yield fetch(o,e);if(i.status>=400)throw new Error(`Failed to fetch ${o}: ${i.status} (${i.statusText})`);return function(s,r){L(this,void 0,void 0,function*(){if(!s.body||!s.headers)return;const n=s.body.getReader(),l=Number(s.headers.get("Content-Length"))||0;let h=0;const c=d=>L(this,void 0,void 0,function*(){h+=d?.length||0;const u=Math.round(h/l*100);r(u)}),a=()=>L(this,void 0,void 0,function*(){let d;try{d=yield n.read()}catch{return}d.done||(c(d.value),yield a())});a()})}(i.clone(),t),i.blob()})}};let qt=class extends Y{constructor(t){super(),this.isExternalMedia=!1,t.media?(this.media=t.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),t.mediaControls&&(this.media.controls=!0),t.autoplay&&(this.media.autoplay=!0),t.playbackRate!=null&&this.onMediaEvent("canplay",()=>{t.playbackRate!=null&&(this.media.playbackRate=t.playbackRate)},{once:!0})}onMediaEvent(t,e,i){return this.media.addEventListener(t,e,i),()=>this.media.removeEventListener(t,e,i)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){const t=this.getSrc();t.startsWith("blob:")&&URL.revokeObjectURL(t)}canPlayType(t){return this.media.canPlayType(t)!==""}setSrc(t,e){const i=this.getSrc();if(t&&i===t)return;this.revokeSrc();const s=e instanceof Blob&&(this.canPlayType(e.type)||!t)?URL.createObjectURL(e):t;if(i&&this.media.removeAttribute("src"),s||t)try{this.media.src=s}catch{this.media.src=t}}destroy(){this.isExternalMedia||(this.media.pause(),this.media.remove(),this.revokeSrc(),this.media.removeAttribute("src"),this.media.load())}setMediaElement(t){this.media=t}play(){return L(this,void 0,void 0,function*(){try{return yield this.media.play()}catch(t){if(t instanceof DOMException&&t.name==="AbortError")return;throw t}})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(t){this.media.currentTime=Math.max(0,Math.min(t,this.getDuration()))}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(t){this.media.volume=t}getMuted(){return this.media.muted}setMuted(t){this.media.muted=t}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(t,e){e!=null&&(this.media.preservesPitch=e),this.media.playbackRate=t}getMediaElement(){return this.media}setSinkId(t){return this.media.setSinkId(t)}},q=class Q extends Y{constructor(t,e){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.subscriptions=[],this.options=t;const i=this.parentFromOptionsContainer(t.container);this.parent=i;const[s,r]=this.initHtml();i.appendChild(s),this.container=s,this.scrollContainer=r.querySelector(".scroll"),this.wrapper=r.querySelector(".wrapper"),this.canvasWrapper=r.querySelector(".canvases"),this.progressWrapper=r.querySelector(".progress"),this.cursor=r.querySelector(".cursor"),e&&r.appendChild(e),this.initEvents()}parentFromOptionsContainer(t){let e;if(typeof t=="string"?e=document.querySelector(t):t instanceof HTMLElement&&(e=t),!e)throw new Error("Container not found");return e}initEvents(){const t=e=>{const i=this.wrapper.getBoundingClientRect(),s=e.clientX-i.left,r=e.clientY-i.top;return[s/i.width,r/i.height]};if(this.wrapper.addEventListener("click",e=>{const[i,s]=t(e);this.emit("click",i,s)}),this.wrapper.addEventListener("dblclick",e=>{const[i,s]=t(e);this.emit("dblclick",i,s)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollContainer.addEventListener("scroll",()=>{const{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.scrollContainer,r=e/i,n=(e+s)/i;this.emit("scroll",r,n,e,e+s)}),typeof ResizeObserver=="function"){const e=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{e().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){const t=this.parent.clientWidth;t===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=t,this.reRender())}initDrag(){this.subscriptions.push(function(t,e,i,s,r=3,n=0,l=100){if(!t)return()=>{};const h=matchMedia("(pointer: coarse)").matches;let c=()=>{};const a=d=>{if(d.button!==n)return;d.preventDefault(),d.stopPropagation();let u=d.clientX,p=d.clientY,b=!1;const W=Date.now(),g=f=>{if(f.preventDefault(),f.stopPropagation(),h&&Date.now()-W<l)return;const S=f.clientX,x=f.clientY,C=S-u,M=x-p;if(b||Math.abs(C)>r||Math.abs(M)>r){const E=t.getBoundingClientRect(),{left:T,top:D}=E;b||(i?.(u-T,p-D),b=!0),e(C,M,S-T,x-D),u=S,p=x}},m=f=>{if(b){const S=f.clientX,x=f.clientY,C=t.getBoundingClientRect(),{left:M,top:E}=C;s?.(S-M,x-E)}c()},y=f=>{f.relatedTarget&&f.relatedTarget!==document.documentElement||m(f)},w=f=>{b&&(f.stopPropagation(),f.preventDefault())},v=f=>{b&&f.preventDefault()};document.addEventListener("pointermove",g),document.addEventListener("pointerup",m),document.addEventListener("pointerout",y),document.addEventListener("pointercancel",y),document.addEventListener("touchmove",v,{passive:!1}),document.addEventListener("click",w,{capture:!0}),c=()=>{document.removeEventListener("pointermove",g),document.removeEventListener("pointerup",m),document.removeEventListener("pointerout",y),document.removeEventListener("pointercancel",y),document.removeEventListener("touchmove",v),setTimeout(()=>{document.removeEventListener("click",w,{capture:!0})},10)}};return t.addEventListener("pointerdown",a),()=>{c(),t.removeEventListener("pointerdown",a)}}(this.wrapper,(t,e,i)=>{this.emit("drag",Math.max(0,Math.min(1,i/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!0,this.emit("dragstart",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!1,this.emit("dragend",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))}))}getHeight(t,e){var i;const s=((i=this.audioData)===null||i===void 0?void 0:i.numberOfChannels)||1;if(t==null)return 128;if(!isNaN(Number(t)))return Number(t);if(t==="auto"){const r=this.parent.clientHeight||128;return e?.every(n=>!n.overlay)?r/s:r}return 128}initHtml(){const t=document.createElement("div"),e=t.attachShadow({mode:"open"}),i=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return e.innerHTML=`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("vue"),Xt=require("wavesurfer.js"),tt=({containerRef:r,options:t})=>{const e=C.ref(null),i=()=>{r.value&&(e.value=Xt.create({container:r.value,...t}))},s=()=>{e.value&&(e.value.destroy(),e.value=null)};return C.onMounted(()=>{i()}),C.onUnmounted(()=>{s()}),{waveSurfer:e}},At=r=>{const t=C.ref(!1),e=C.ref(!1),i=C.ref(0),s=C.ref(0),o=()=>{t.value=!1,e.value=!1,i.value=0},n=u=>{t.value=!0,e.value=!1,i.value=0,s.value=u},l=()=>{e.value=!0},h=()=>{e.value=!1},c=()=>{r.value&&(i.value=r.value.getCurrentTime())},a=()=>{t.value=!1,e.value=!1};return C.onMounted(()=>{r.value&&(r.value.on("load",o),r.value.on("ready",n),r.value.on("play",l),r.value.on("pause",h),r.value.on("timeupdate",c),r.value.on("destroy",a))}),C.onUnmounted(()=>{r.value&&r.value.unAll()}),{isReady:t,isPlaying:e,currentTime:i,totalDuration:s}},nt=({containerRef:r,options:t})=>{const{waveSurfer:e}=tt({containerRef:r,options:t}),{isReady:i,totalDuration:s,isPlaying:o,currentTime:n}=At(e);return{waveSurfer:e,isReady:i,totalDuration:s,isPlaying:o,currentTime:n}},Yt=["audioprocess","click","dblclick","decode","drag","finish","init","interaction","load","loading","pause","play","ready","redraw","redrawcomplete","scroll","seeking","timeupdate","zoom"],Vt=C.defineComponent({__name:"WaveSurferPlayer",props:{options:{}},setup(r){const t=r,e=C.ref(null),{waveSurfer:i}=nt({containerRef:e,options:t.options}),s=C.getCurrentInstance();return C.onMounted(()=>{Yt.forEach(o=>{i.value?.on(o,(...n)=>{s?.emit(o,...n)})}),s?.emit("waveSurfer",i.value)}),(o,n)=>(C.openBlock(),C.createElementBlock("div",{ref_key:"containerRef",ref:e},null,512))}}),I=(r,t={})=>{const e=C.ref(null);return{pluginInstance:e,createPlugin:s=>{if(s){const o=s.registerPlugin(r.create({...t}));o&&(e.value=o)}}}},z=(r,{containerRef:t,options:e,pluginOptions:i={}})=>{const{waveSurfer:s}=tt({containerRef:t,options:e}),o=C.ref(null);return C.onMounted(()=>{if(s.value){const n=s.value.registerPlugin(r.create({...i}));n&&(o.value=n)}}),{waveSurfer:s,pluginInstance:o}};let jt=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},Kt=class extends jt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function rt(r,t){const e=t.xmlns?document.createElementNS(t.xmlns,r):document.createElement(r);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[o,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(rt(o,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function U(r,t,e){return rt(r,t||{})}const Ft={height:20,timeOffset:0,formatTimeCallback:r=>r/60>1?`${Math.floor(r/60)}:${`${(r=Math.round(r%60))<10?"0":""}${r}`}`:`${Math.round(1e3*r)/1e3}`};let ot=class at extends Kt{constructor(t){super(t||{}),this.unsubscribeNotches=[],this.options=Object.assign({},Ft,t),this.timelineWrapper=this.initTimelineWrapper()}static create(t){return new at(t)}onInit(){var t;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");let e=this.wavesurfer.getWrapper();if(this.options.container instanceof HTMLElement)e=this.options.container;else if(typeof this.options.container=="string"){const i=document.querySelector(this.options.container);if(!i)throw Error(`No Timeline container found matching ${this.options.container}`);e=i}this.options.insertPosition?(e.firstElementChild||e).insertAdjacentElement(this.options.insertPosition,this.timelineWrapper):e.appendChild(this.timelineWrapper),this.subscriptions.push(this.wavesurfer.on("redraw",()=>this.initTimeline())),(!((t=this.wavesurfer)===null||t===void 0)&&t.getDuration()||this.options.duration)&&this.initTimeline()}destroy(){this.unsubscribeNotches.forEach(t=>t()),this.unsubscribeNotches=[],this.timelineWrapper.remove(),super.destroy()}initTimelineWrapper(){return U("div",{part:"timeline-wrapper",style:{pointerEvents:"none"}})}defaultTimeInterval(t){return t>=25?1:5*t>=25?5:15*t>=25?15:60*Math.ceil(.5/t)}defaultPrimaryLabelInterval(t){return t>=25?10:5*t>=25?6:4}defaultSecondaryLabelInterval(t){return t>=25?5:2}virtualAppend(t,e,i){let s=!1;const o=(h,c)=>{if(!this.wavesurfer)return;const a=i.clientWidth,u=t>=h&&t+a<c;u!==s&&(s=u,u?e.appendChild(i):i.remove())};if(!this.wavesurfer)return;const n=this.wavesurfer.getScroll(),l=n+this.wavesurfer.getWidth();o(n,l),this.unsubscribeNotches.push(this.wavesurfer.on("scroll",(h,c,a,u)=>{o(a,u)}))}initTimeline(){var t,e,i,s,o,n,l,h;this.unsubscribeNotches.forEach(W=>W()),this.unsubscribeNotches=[];const c=(i=(e=(t=this.wavesurfer)===null||t===void 0?void 0:t.getDuration())!==null&&e!==void 0?e:this.options.duration)!==null&&i!==void 0?i:0,a=(((s=this.wavesurfer)===null||s===void 0?void 0:s.getWrapper().scrollWidth)||this.timelineWrapper.scrollWidth)/c,u=(o=this.options.timeInterval)!==null&&o!==void 0?o:this.defaultTimeInterval(a),d=(n=this.options.primaryLabelInterval)!==null&&n!==void 0?n:this.defaultPrimaryLabelInterval(a),p=this.options.primaryLabelSpacing,g=(l=this.options.secondaryLabelInterval)!==null&&l!==void 0?l:this.defaultSecondaryLabelInterval(a),y=this.options.secondaryLabelSpacing,f=this.options.insertPosition==="beforebegin",m=U("div",{style:Object.assign({height:`${this.options.height}px`,overflow:"hidden",fontSize:this.options.height/2+"px",whiteSpace:"nowrap"},f?{position:"absolute",top:"0",left:"0",right:"0",zIndex:"2"}:{position:"relative"})});m.setAttribute("part","timeline"),typeof this.options.style=="string"?m.setAttribute("style",m.getAttribute("style")+this.options.style):typeof this.options.style=="object"&&Object.assign(m.style,this.options.style);const w=U("div",{style:{width:"0",height:"50%",display:"flex",flexDirection:"column",justifyContent:f?"flex-start":"flex-end",top:f?"0":"auto",bottom:f?"auto":"0",overflow:"visible",borderLeft:"1px solid currentColor",opacity:`${(h=this.options.secondaryLabelOpacity)!==null&&h!==void 0?h:.25}`,position:"absolute",zIndex:"1"}});for(let W=0,v=0;W<c;W+=u,v++){const b=w.cloneNode(),S=Math.round(100*W)%Math.round(100*d)==0||p&&v%p==0,x=Math.round(100*W)%Math.round(100*g)==0||y&&v%y==0;(S||x)&&(b.style.height="100%",b.style.textIndent="3px",b.textContent=this.options.formatTimeCallback(W),S&&(b.style.opacity="1"));const M=S?"primary":x?"secondary":"tick";b.setAttribute("part",`timeline-notch timeline-notch-${M}`);const P=Math.round(100*(W+this.options.timeOffset))/100*a;b.style.left=`${P}px`,this.virtualAppend(P,m,b)}this.timelineWrapper.innerHTML="",this.timelineWrapper.appendChild(m),this.emit("ready")}};const Bt=({waveSurfer:r,timelineOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(ot,t);return C.onMounted(()=>{r.value&&i(r.value)}),{timelinePlugin:e}},Ut=({containerRef:r,options:t,timelineOptions:e={}})=>z(ot,{containerRef:r,options:t,pluginOptions:e});let Ht=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},$t=class extends Ht{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};const qt={scale:.5,deltaThreshold:5,exponentialZooming:!1,iterations:20};let lt=class ht extends $t{constructor(t){super(t||{}),this.wrapper=void 0,this.container=null,this.accumulatedDelta=0,this.pointerTime=0,this.oldX=0,this.endZoom=0,this.startZoom=0,this.onWheel=e=>{if(this.wavesurfer&&this.container&&!(Math.abs(e.deltaX)>=Math.abs(e.deltaY))&&(e.preventDefault(),this.accumulatedDelta+=-e.deltaY,this.startZoom===0&&this.options.exponentialZooming&&(this.startZoom=this.wavesurfer.getWrapper().clientWidth/this.wavesurfer.getDuration()),this.options.deltaThreshold===0||Math.abs(this.accumulatedDelta)>=this.options.deltaThreshold)){const i=this.wavesurfer.getDuration(),s=this.wavesurfer.options.minPxPerSec===0?this.wavesurfer.getWrapper().scrollWidth/i:this.wavesurfer.options.minPxPerSec,o=e.clientX-this.container.getBoundingClientRect().left,n=this.container.clientWidth,l=this.wavesurfer.getScroll();o===this.oldX&&this.oldX!==0||(this.pointerTime=(l+o)/s),this.oldX=o;const h=this.calculateNewZoom(s,this.accumulatedDelta),c=n/h*(o/n);h*i<n?(this.wavesurfer.zoom(n/i),this.container.scrollLeft=0):(this.wavesurfer.zoom(h),this.container.scrollLeft=(this.pointerTime-c)*h),this.accumulatedDelta=0}},this.calculateNewZoom=(e,i)=>{let s;if(this.options.exponentialZooming){const o=i>0?Math.pow(this.endZoom/this.startZoom,1/(this.options.iterations-1)):Math.pow(this.startZoom/this.endZoom,1/(this.options.iterations-1));s=Math.max(0,e*o)}else s=Math.max(0,e+i*this.options.scale);return Math.min(s,this.options.maxZoom)},this.options=Object.assign({},qt,t)}static create(t){return new ht(t)}onInit(){var t;this.wrapper=(t=this.wavesurfer)===null||t===void 0?void 0:t.getWrapper(),this.wrapper&&(this.container=this.wrapper.parentElement,this.container.addEventListener("wheel",this.onWheel),this.options.maxZoom===void 0&&(this.options.maxZoom=this.container.clientWidth),this.endZoom=this.options.maxZoom)}destroy(){this.wrapper&&this.wrapper.removeEventListener("wheel",this.onWheel),super.destroy()}};const Qt=({waveSurfer:r,zoomOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(lt,t),s=()=>{r.value&&r.value.zoom(100)},o=()=>{r.value&&r.value.zoom(50)},n=l=>{r.value&&r.value.zoom(l)};return C.onMounted(()=>{r.value&&i(r.value)}),{zoomPlugin:e,zoomIn:s,zoomOut:o,setZoom:n}},_t=({containerRef:r,options:t,zoomOptions:e={}})=>{const{waveSurfer:i,pluginInstance:s}=z(lt,{containerRef:r,options:t,pluginOptions:e});return{waveSurfer:i,zoomPlugin:s,zoomIn:()=>{i.value&&i.value.zoom(100)},zoomOut:()=>{i.value&&i.value.zoom(50)},setZoom:h=>{i.value&&i.value.zoom(h)}}};let A=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},ct=class extends A{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function k(r,t,e,i){return new(e||(e=Promise))(function(s,o){function n(c){try{h(i.next(c))}catch(a){o(a)}}function l(c){try{h(i.throw(c))}catch(a){o(a)}}function h(c){var a;c.done?s(c.value):(a=c.value,a instanceof e?a:new e(function(u){u(a)})).then(n,l)}h((i=i.apply(r,t||[])).next())})}const Y={decode:function(r,t){return k(this,void 0,void 0,function*(){const e=new AudioContext({sampleRate:t});return e.decodeAudioData(r).finally(()=>e.close())})},createBuffer:function(r,t){return typeof r[0]=="number"&&(r=[r]),function(e){const i=e[0];if(i.some(s=>s>1||s<-1)){const s=i.length;let o=0;for(let n=0;n<s;n++){const l=Math.abs(i[n]);l>o&&(o=l)}for(const n of e)for(let l=0;l<s;l++)n[l]/=o}}(r),{duration:t,length:r[0].length,sampleRate:r[0].length/t,numberOfChannels:r.length,getChannelData:e=>r?.[e],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function ut(r,t){const e=t.xmlns?document.createElementNS(t.xmlns,r):document.createElement(r);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[o,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(ut(o,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function F(r,t,e){const i=ut(r,t||{});return e?.appendChild(i),i}var Jt=Object.freeze({__proto__:null,createElement:F,default:F});const te={fetchBlob:function(r,t,e){return k(this,void 0,void 0,function*(){const i=yield fetch(r,e);if(i.status>=400)throw new Error(`Failed to fetch ${r}: ${i.status} (${i.statusText})`);return function(s,o){k(this,void 0,void 0,function*(){if(!s.body||!s.headers)return;const n=s.body.getReader(),l=Number(s.headers.get("Content-Length"))||0;let h=0;const c=u=>k(this,void 0,void 0,function*(){h+=u?.length||0;const d=Math.round(h/l*100);o(d)}),a=()=>k(this,void 0,void 0,function*(){let u;try{u=yield n.read()}catch{return}u.done||(c(u.value),yield a())});a()})}(i.clone(),t),i.blob()})}};let ee=class extends A{constructor(t){super(),this.isExternalMedia=!1,t.media?(this.media=t.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),t.mediaControls&&(this.media.controls=!0),t.autoplay&&(this.media.autoplay=!0),t.playbackRate!=null&&this.onMediaEvent("canplay",()=>{t.playbackRate!=null&&(this.media.playbackRate=t.playbackRate)},{once:!0})}onMediaEvent(t,e,i){return this.media.addEventListener(t,e,i),()=>this.media.removeEventListener(t,e,i)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){const t=this.getSrc();t.startsWith("blob:")&&URL.revokeObjectURL(t)}canPlayType(t){return this.media.canPlayType(t)!==""}setSrc(t,e){const i=this.getSrc();if(t&&i===t)return;this.revokeSrc();const s=e instanceof Blob&&(this.canPlayType(e.type)||!t)?URL.createObjectURL(e):t;if(i&&this.media.removeAttribute("src"),s||t)try{this.media.src=s}catch{this.media.src=t}}destroy(){this.isExternalMedia||(this.media.pause(),this.media.remove(),this.revokeSrc(),this.media.removeAttribute("src"),this.media.load())}setMediaElement(t){this.media=t}play(){return k(this,void 0,void 0,function*(){try{return yield this.media.play()}catch(t){if(t instanceof DOMException&&t.name==="AbortError")return;throw t}})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(t){this.media.currentTime=Math.max(0,Math.min(t,this.getDuration()))}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(t){this.media.volume=t}getMuted(){return this.media.muted}setMuted(t){this.media.muted=t}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(t,e){e!=null&&(this.media.preservesPitch=e),this.media.playbackRate=t}getMediaElement(){return this.media}setSinkId(t){return this.media.setSinkId(t)}},Q=class _ extends A{constructor(t,e){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.subscriptions=[],this.options=t;const i=this.parentFromOptionsContainer(t.container);this.parent=i;const[s,o]=this.initHtml();i.appendChild(s),this.container=s,this.scrollContainer=o.querySelector(".scroll"),this.wrapper=o.querySelector(".wrapper"),this.canvasWrapper=o.querySelector(".canvases"),this.progressWrapper=o.querySelector(".progress"),this.cursor=o.querySelector(".cursor"),e&&o.appendChild(e),this.initEvents()}parentFromOptionsContainer(t){let e;if(typeof t=="string"?e=document.querySelector(t):t instanceof HTMLElement&&(e=t),!e)throw new Error("Container not found");return e}initEvents(){const t=e=>{const i=this.wrapper.getBoundingClientRect(),s=e.clientX-i.left,o=e.clientY-i.top;return[s/i.width,o/i.height]};if(this.wrapper.addEventListener("click",e=>{const[i,s]=t(e);this.emit("click",i,s)}),this.wrapper.addEventListener("dblclick",e=>{const[i,s]=t(e);this.emit("dblclick",i,s)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollContainer.addEventListener("scroll",()=>{const{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.scrollContainer,o=e/i,n=(e+s)/i;this.emit("scroll",o,n,e,e+s)}),typeof ResizeObserver=="function"){const e=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{e().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){const t=this.parent.clientWidth;t===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=t,this.reRender())}initDrag(){this.subscriptions.push(function(t,e,i,s,o=3,n=0,l=100){if(!t)return()=>{};const h=matchMedia("(pointer: coarse)").matches;let c=()=>{};const a=u=>{if(u.button!==n)return;u.preventDefault(),u.stopPropagation();let d=u.clientX,p=u.clientY,g=!1;const y=Date.now(),f=b=>{if(b.preventDefault(),b.stopPropagation(),h&&Date.now()-y<l)return;const S=b.clientX,x=b.clientY,M=S-d,P=x-p;if(g||Math.abs(M)>o||Math.abs(P)>o){const E=t.getBoundingClientRect(),{left:L,top:R}=E;g||(i?.(d-L,p-R),g=!0),e(M,P,S-L,x-R),d=S,p=x}},m=b=>{if(g){const S=b.clientX,x=b.clientY,M=t.getBoundingClientRect(),{left:P,top:E}=M;s?.(S-P,x-E)}c()},w=b=>{b.relatedTarget&&b.relatedTarget!==document.documentElement||m(b)},W=b=>{g&&(b.stopPropagation(),b.preventDefault())},v=b=>{g&&b.preventDefault()};document.addEventListener("pointermove",f),document.addEventListener("pointerup",m),document.addEventListener("pointerout",w),document.addEventListener("pointercancel",w),document.addEventListener("touchmove",v,{passive:!1}),document.addEventListener("click",W,{capture:!0}),c=()=>{document.removeEventListener("pointermove",f),document.removeEventListener("pointerup",m),document.removeEventListener("pointerout",w),document.removeEventListener("pointercancel",w),document.removeEventListener("touchmove",v),setTimeout(()=>{document.removeEventListener("click",W,{capture:!0})},10)}};return t.addEventListener("pointerdown",a),()=>{c(),t.removeEventListener("pointerdown",a)}}(this.wrapper,(t,e,i)=>{this.emit("drag",Math.max(0,Math.min(1,i/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!0,this.emit("dragstart",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!1,this.emit("dragend",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))}))}getHeight(t,e){var i;const s=((i=this.audioData)===null||i===void 0?void 0:i.numberOfChannels)||1;if(t==null)return 128;if(!isNaN(Number(t)))return Number(t);if(t==="auto"){const o=this.parent.clientHeight||128;return e?.every(n=>!n.overlay)?o/s:o}return 128}initHtml(){const t=document.createElement("div"),e=t.attachShadow({mode:"open"}),i=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return e.innerHTML=`
|
|
2
2
|
<style${i?` nonce="${i}"`:""}>
|
|
3
3
|
:host {
|
|
4
4
|
user-select: none;
|
|
@@ -70,6 +70,6 @@
|
|
|
70
70
|
<div class="cursor" part="cursor"></div>
|
|
71
71
|
</div>
|
|
72
72
|
</div>
|
|
73
|
-
`,[t,e]}setOptions(t){if(this.options.container!==t.container){const e=this.parentFromOptionsContainer(t.container);e.appendChild(this.container),this.parent=e}t.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=t,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(t){this.scrollContainer.scrollLeft=t}setScrollPercentage(t){const{scrollWidth:e}=this.scrollContainer,i=e*t;this.setScroll(i)}destroy(){var t,e;this.subscriptions.forEach(i=>i()),this.container.remove(),(t=this.resizeObserver)===null||t===void 0||t.disconnect(),(e=this.unsubscribeOnScroll)===null||e===void 0||e.forEach(i=>i()),this.unsubscribeOnScroll=[]}createDelay(t=10){let e,i;const s=()=>{e&&clearTimeout(e),i&&i()};return this.timeouts.push(s),()=>new Promise((r,n)=>{s(),i=n,e=setTimeout(()=>{e=void 0,i=void 0,r()},t)})}convertColorValues(t){if(!Array.isArray(t))return t||"";if(t.length<2)return t[0]||"";const e=document.createElement("canvas"),i=e.getContext("2d"),s=e.height*(window.devicePixelRatio||1),r=i.createLinearGradient(0,0,0,s),n=1/(t.length-1);return t.forEach((l,h)=>{const c=h*n;r.addColorStop(c,l)}),r}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(t,e,i,s){const r=t[0],n=t[1]||t[0],l=r.length,{width:h,height:c}=i.canvas,a=c/2,d=this.getPixelRatio(),u=e.barWidth?e.barWidth*d:1,p=e.barGap?e.barGap*d:e.barWidth?u/2:0,b=e.barRadius||0,W=h/(u+p)/l,g=b&&"roundRect"in i?"roundRect":"rect";i.beginPath();let m=0,y=0,w=0;for(let v=0;v<=l;v++){const f=Math.round(v*W);if(f>m){const C=Math.round(y*a*s),M=C+Math.round(w*a*s)||1;let E=a-C;e.barAlign==="top"?E=0:e.barAlign==="bottom"&&(E=c-M),i[g](m*(u+p),E,u,M,b),m=f,y=0,w=0}const S=Math.abs(r[v]||0),x=Math.abs(n[v]||0);S>y&&(y=S),x>w&&(w=x)}i.fill(),i.closePath()}renderLineWaveform(t,e,i,s){const r=n=>{const l=t[n]||t[0],h=l.length,{height:c}=i.canvas,a=c/2,d=i.canvas.width/h;i.moveTo(0,a);let u=0,p=0;for(let b=0;b<=h;b++){const W=Math.round(b*d);if(W>u){const m=a+(Math.round(p*a*s)||1)*(n===0?-1:1);i.lineTo(u,m),u=W,p=0}const g=Math.abs(l[b]||0);g>p&&(p=g)}i.lineTo(u,a)};i.beginPath(),r(0),r(1),i.fill(),i.closePath()}renderWaveform(t,e,i){if(i.fillStyle=this.convertColorValues(e.waveColor),e.renderFunction)return void e.renderFunction(t,i);let s=e.barHeight||1;if(e.normalize){const r=Array.from(t[0]).reduce((n,l)=>Math.max(n,Math.abs(l)),0);s=r?1/r:1}e.barWidth||e.barGap||e.barAlign?this.renderBarWaveform(t,e,i,s):this.renderLineWaveform(t,e,i,s)}renderSingleCanvas(t,e,i,s,r,n,l){const h=this.getPixelRatio(),c=document.createElement("canvas");c.width=Math.round(i*h),c.height=Math.round(s*h),c.style.width=`${i}px`,c.style.height=`${s}px`,c.style.left=`${Math.round(r)}px`,n.appendChild(c);const a=c.getContext("2d");if(this.renderWaveform(t,e,a),c.width>0&&c.height>0){const d=c.cloneNode(),u=d.getContext("2d");u.drawImage(c,0,0),u.globalCompositeOperation="source-in",u.fillStyle=this.convertColorValues(e.progressColor),u.fillRect(0,0,c.width,c.height),l.appendChild(d)}}renderMultiCanvas(t,e,i,s,r,n){const l=this.getPixelRatio(),{clientWidth:h}=this.scrollContainer,c=i/l;let a=Math.min(Q.MAX_CANVAS_WIDTH,h,c),d={};if(e.barWidth||e.barGap){const g=e.barWidth||.5,m=g+(e.barGap||g/2);a%m!=0&&(a=Math.floor(a/m)*m)}if(a===0)return;const u=g=>{if(g<0||g>=p||d[g])return;d[g]=!0;const m=g*a;let y=Math.min(c-m,a);if(e.barWidth||e.barGap){const v=e.barWidth||.5,f=v+(e.barGap||v/2);y=Math.floor(y/f)*f}if(y<=0)return;const w=t.map(v=>{const f=Math.floor(m/c*v.length),S=Math.floor((m+y)/c*v.length);return v.slice(f,S)});this.renderSingleCanvas(w,e,y,s,m,r,n)},p=Math.ceil(c/a);if(!this.isScrollable){for(let g=0;g<p;g++)u(g);return}const b=this.scrollContainer.scrollLeft/c,W=Math.floor(b*p);if(u(W-1),u(W),u(W+1),p>1){const g=this.on("scroll",()=>{const{scrollLeft:m}=this.scrollContainer,y=Math.floor(m/c*p);Object.keys(d).length>Q.MAX_NODES&&(r.innerHTML="",n.innerHTML="",d={}),u(y-1),u(y),u(y+1)});this.unsubscribeOnScroll.push(g)}}renderChannel(t,e,i,s){var{overlay:r}=e,n=function(a,d){var u={};for(var p in a)Object.prototype.hasOwnProperty.call(a,p)&&d.indexOf(p)<0&&(u[p]=a[p]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function"){var b=0;for(p=Object.getOwnPropertySymbols(a);b<p.length;b++)d.indexOf(p[b])<0&&Object.prototype.propertyIsEnumerable.call(a,p[b])&&(u[p[b]]=a[p[b]])}return u}(e,["overlay"]);const l=document.createElement("div"),h=this.getHeight(n.height,n.splitChannels);l.style.height=`${h}px`,r&&s>0&&(l.style.marginTop=`-${h}px`),this.canvasWrapper.style.minHeight=`${h}px`,this.canvasWrapper.appendChild(l);const c=l.cloneNode();this.progressWrapper.appendChild(c),this.renderMultiCanvas(t,n,i,h,l,c)}render(t){return L(this,void 0,void 0,function*(){var e;this.timeouts.forEach(h=>h()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);const i=this.getPixelRatio(),s=this.scrollContainer.clientWidth,r=Math.ceil(t.duration*(this.options.minPxPerSec||0));this.isScrollable=r>s;const n=this.options.fillParent&&!this.isScrollable,l=(n?s:r)*i;if(this.wrapper.style.width=n?"100%":`${r}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=t,this.emit("render"),this.options.splitChannels)for(let h=0;h<t.numberOfChannels;h++){const c=Object.assign(Object.assign({},this.options),(e=this.options.splitChannels)===null||e===void 0?void 0:e[h]);this.renderChannel([t.getChannelData(h)],c,l,h)}else{const h=[t.getChannelData(0)];t.numberOfChannels>1&&h.push(t.getChannelData(1)),this.renderChannel(h,this.options,l,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(i=>i()),this.unsubscribeOnScroll=[],!this.audioData)return;const{scrollWidth:t}=this.scrollContainer,{right:e}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&t!==this.scrollContainer.scrollWidth){const{right:i}=this.progressWrapper.getBoundingClientRect();let s=i-e;s*=2,s=s<0?Math.floor(s):Math.ceil(s),s/=2,this.scrollContainer.scrollLeft+=s}}zoom(t){this.options.minPxPerSec=t,this.reRender()}scrollIntoView(t,e=!1){const{scrollLeft:i,scrollWidth:s,clientWidth:r}=this.scrollContainer,n=t*s,l=i,h=i+r,c=r/2;if(this.isDragging)n+30>h?this.scrollContainer.scrollLeft+=30:n-30<l&&(this.scrollContainer.scrollLeft-=30);else{(n<l||n>h)&&(this.scrollContainer.scrollLeft=n-(this.options.autoCenter?c:0));const a=n-i-c;e&&this.options.autoCenter&&a>0&&(this.scrollContainer.scrollLeft+=Math.min(a,10))}{const a=this.scrollContainer.scrollLeft,d=a/s,u=(a+r)/s;this.emit("scroll",d,u,a,a+r)}}renderProgress(t,e){if(isNaN(t))return;const i=100*t;this.canvasWrapper.style.clipPath=`polygon(${i}% 0%, 100% 0%, 100% 100%, ${i}% 100%)`,this.progressWrapper.style.width=`${i}%`,this.cursor.style.left=`${i}%`,this.cursor.style.transform=this.options.cursorWidth?`translateX(-${t*this.options.cursorWidth}px)`:"",this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(t,e)}exportImage(t,e,i){return L(this,void 0,void 0,function*(){const s=this.canvasWrapper.querySelectorAll("canvas");if(!s.length)throw new Error("No waveform data");if(i==="dataURL"){const r=Array.from(s).map(n=>n.toDataURL(t,e));return Promise.resolve(r)}return Promise.all(Array.from(s).map(r=>new Promise((n,l)=>{r.toBlob(h=>{h?n(h):l(new Error("Could not export image"))},t,e)})))})}};q.MAX_CANVAS_WIDTH=8e3,q.MAX_NODES=10;let Qt=class extends Y{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}},H=class extends Y{constructor(t=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=t,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return L(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(t){if(this.currentSrc=t,this._duration=void 0,!t)return this.buffer=null,void this.emit("emptied");fetch(t).then(e=>{if(e.status>=400)throw new Error(`Failed to fetch ${t}: ${e.status} (${e.statusText})`);return e.arrayBuffer()}).then(e=>this.currentSrc!==t?null:this.audioContext.decodeAudioData(e)).then(e=>{this.currentSrc===t&&(this.buffer=e,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())})}_play(){var t;if(!this.paused)return;this.paused=!1,(t=this.bufferNode)===null||t===void 0||t.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let e=this.playedDuration*this._playbackRate;(e>=this.duration||e<0)&&(e=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,e),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var t;this.paused=!0,(t=this.bufferNode)===null||t===void 0||t.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return L(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(t){const e=t-this.currentTime,i=this.bufferNode;i?.stop(this.audioContext.currentTime+e),i?.addEventListener("ended",()=>{i===this.bufferNode&&(this.bufferNode=null,this.pause())},{once:!0})}setSinkId(t){return L(this,void 0,void 0,function*(){return this.audioContext.setSinkId(t)})}get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate=t,this.bufferNode&&(this.bufferNode.playbackRate.value=t)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(t){const e=!this.paused;e&&this._pause(),this.playedDuration=t/this._playbackRate,e&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var t,e;return(t=this._duration)!==null&&t!==void 0?t:((e=this.buffer)===null||e===void 0?void 0:e.duration)||0}set duration(t){this._duration=t}get volume(){return this.gainNode.gain.value}set volume(t){this.gainNode.gain.value=t,this.emit("volumechange")}get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(t){return/^(audio|video)\//.test(t)}getGainNode(){return this.gainNode}getChannelData(){const t=[];if(!this.buffer)return t;const e=this.buffer.numberOfChannels;for(let i=0;i<e;i++)t.push(this.buffer.getChannelData(i));return t}removeAttribute(t){switch(t){case"src":this.src="";break;case"playbackRate":this.playbackRate=0;break;case"currentTime":this.currentTime=0;break;case"duration":this.duration=0;break;case"volume":this.volume=0;break;case"muted":this.muted=!1}}};const _t={waveColor:"#999",progressColor:"#555",cursorWidth:1,minPxPerSec:0,fillParent:!0,interact:!0,dragToSeek:!1,autoScroll:!0,autoCenter:!0,sampleRate:8e3};let _=class ut extends qt{static create(t){return new ut(t)}constructor(t){const e=t.media||(t.backend==="WebAudio"?new H:void 0);super({media:e,mediaControls:t.mediaControls,autoplay:t.autoplay,playbackRate:t.audioRate}),this.plugins=[],this.decodedData=null,this.stopAtPosition=null,this.subscriptions=[],this.mediaSubscriptions=[],this.abortController=null,this.options=Object.assign({},_t,t),this.timer=new Qt;const i=e?void 0:this.getMediaElement();this.renderer=new q(this.options,i),this.initPlayerEvents(),this.initRendererEvents(),this.initTimerEvents(),this.initPlugins();const s=this.options.url||this.getSrc()||"";Promise.resolve().then(()=>{this.emit("init");const{peaks:r,duration:n}=this.options;(s||r&&n)&&this.load(s,r,n).catch(()=>null)})}updateProgress(t=this.getCurrentTime()){return this.renderer.renderProgress(t/this.getDuration(),this.isPlaying()),t}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){const t=this.updateProgress();this.emit("timeupdate",t),this.emit("audioprocess",t),this.stopAtPosition!=null&&this.isPlaying()&&t>=this.stopAtPosition&&this.pause()}}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{const t=this.updateProgress();this.emit("timeupdate",t)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("emptied",()=>{this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish"),this.stopAtPosition=null}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",()=>{var t;this.emit("error",(t=this.getMediaElement().error)!==null&&t!==void 0?t:new Error("Media error")),this.stopAtPosition=null}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(t,e)=>{this.options.interact&&(this.seekTo(t),this.emit("interaction",t*this.getDuration()),this.emit("click",t,e))}),this.renderer.on("dblclick",(t,e)=>{this.emit("dblclick",t,e)}),this.renderer.on("scroll",(t,e,i,s)=>{const r=this.getDuration();this.emit("scroll",t*r,e*r,i,s)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",t=>{this.emit("dragstart",t)}),this.renderer.on("dragend",t=>{this.emit("dragend",t)}));{let t;this.subscriptions.push(this.renderer.on("drag",e=>{if(!this.options.interact)return;let i;this.renderer.renderProgress(e),clearTimeout(t),this.isPlaying()?i=0:this.options.dragToSeek===!0?i=200:typeof this.options.dragToSeek=="object"&&this.options.dragToSeek!==void 0&&(i=this.options.dragToSeek.debounceTime),t=setTimeout(()=>{this.seekTo(e)},i),this.emit("interaction",e*this.getDuration()),this.emit("drag",e)}))}}initPlugins(){var t;!((t=this.options.plugins)===null||t===void 0)&&t.length&&this.options.plugins.forEach(e=>{this.registerPlugin(e)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(t=>t()),this.mediaSubscriptions=[]}setOptions(t){this.options=Object.assign({},this.options,t),t.duration&&!t.peaks&&(this.decodedData=V.createBuffer(this.exportPeaks(),t.duration)),t.peaks&&t.duration&&(this.decodedData=V.createBuffer(t.peaks,t.duration)),this.renderer.setOptions(this.options),t.audioRate&&this.setPlaybackRate(t.audioRate),t.mediaControls!=null&&(this.getMediaElement().controls=t.mediaControls)}registerPlugin(t){if(this.plugins.includes(t))return t;t._init(this),this.plugins.push(t);const e=t.once("destroy",()=>{this.plugins=this.plugins.filter(i=>i!==t),this.subscriptions=this.subscriptions.filter(i=>i!==e)});return this.subscriptions.push(e),t}unregisterPlugin(t){this.plugins=this.plugins.filter(e=>e!==t),t.destroy()}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(t){return this.renderer.setScroll(t)}setScrollTime(t){const e=t/this.getDuration();this.renderer.setScrollPercentage(e)}getActivePlugins(){return this.plugins}loadAudio(t,e,i,s){return L(this,void 0,void 0,function*(){var r;if(this.emit("load",t),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,this.stopAtPosition=null,!e&&!i){const l=this.options.fetchParams||{};window.AbortController&&!l.signal&&(this.abortController=new AbortController,l.signal=(r=this.abortController)===null||r===void 0?void 0:r.signal);const h=a=>this.emit("loading",a);e=yield $t.fetchBlob(t,h,l);const c=this.options.blobMimeType;c&&(e=new Blob([e],{type:c}))}this.setSrc(t,e);const n=yield new Promise(l=>{const h=s||this.getDuration();h?l(h):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>l(this.getDuration()),{once:!0}))});if(!t&&!e){const l=this.getMediaElement();l instanceof H&&(l.duration=n)}if(i)this.decodedData=V.createBuffer(i,n||0);else if(e){const l=yield e.arrayBuffer();this.decodedData=yield V.decode(l,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(t,e,i){return L(this,void 0,void 0,function*(){try{return yield this.loadAudio(t,void 0,e,i)}catch(s){throw this.emit("error",s),s}})}loadBlob(t,e,i){return L(this,void 0,void 0,function*(){try{return yield this.loadAudio("",t,e,i)}catch(s){throw this.emit("error",s),s}})}zoom(t){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(t),this.emit("zoom",t)}getDecodedData(){return this.decodedData}exportPeaks({channels:t=2,maxLength:e=8e3,precision:i=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");const s=Math.min(t,this.decodedData.numberOfChannels),r=[];for(let n=0;n<s;n++){const l=this.decodedData.getChannelData(n),h=[],c=l.length/e;for(let a=0;a<e;a++){const d=l.slice(Math.floor(a*c),Math.ceil((a+1)*c));let u=0;for(let p=0;p<d.length;p++){const b=d[p];Math.abs(b)>Math.abs(u)&&(u=b)}h.push(Math.round(u*i)/i)}r.push(h)}return r}getDuration(){let t=super.getDuration()||0;return t!==0&&t!==1/0||!this.decodedData||(t=this.decodedData.duration),t}toggleInteraction(t){this.options.interact=t}setTime(t){this.stopAtPosition=null,super.setTime(t),this.updateProgress(t),this.emit("timeupdate",t)}seekTo(t){const e=this.getDuration()*t;this.setTime(e)}play(t,e){const i=Object.create(null,{play:{get:()=>super.play}});return L(this,void 0,void 0,function*(){t!=null&&this.setTime(t);const s=yield i.play.call(this);return e!=null&&(this.media instanceof H?this.media.stopAt(e):this.stopAtPosition=e),s})}playPause(){return L(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(t){this.setTime(this.getCurrentTime()+t)}empty(){this.load("",[[0]],.001)}setMediaElement(t){this.unsubscribePlayerEvents(),super.setMediaElement(t),this.initPlayerEvents()}exportImage(){return L(this,arguments,void 0,function*(t="image/png",e=1,i="dataURL"){return this.renderer.exportImage(t,e,i)})}destroy(){var t;this.emit("destroy"),(t=this.abortController)===null||t===void 0||t.abort(),this.plugins.forEach(e=>e.destroy()),this.subscriptions.forEach(e=>e()),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}};_.BasePlugin=ht,_.dom=Ht;const Jt={height:50,overlayColor:"rgba(100, 100, 100, 0.1)",insertPosition:"afterend"};let dt=class pt extends ht{constructor(t){super(t),this.miniWavesurfer=null,this.container=null,this.options=Object.assign({},Jt,t),this.minimapWrapper=this.initMinimapWrapper(),this.overlay=this.initOverlay()}static create(t){return new pt(t)}onInit(){var t,e;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");this.options.container?(typeof this.options.container=="string"?this.container=document.querySelector(this.options.container):this.options.container instanceof HTMLElement&&(this.container=this.options.container),(t=this.container)===null||t===void 0||t.appendChild(this.minimapWrapper)):(this.container=this.wavesurfer.getWrapper().parentElement,(e=this.container)===null||e===void 0||e.insertAdjacentElement(this.options.insertPosition,this.minimapWrapper)),this.initWaveSurferEvents(),Promise.resolve().then(()=>{this.initMinimap()})}initMinimapWrapper(){return F("div",{part:"minimap",style:{position:"relative"}})}initOverlay(){return F("div",{part:"minimap-overlay",style:{position:"absolute",zIndex:"2",left:"0",top:"0",bottom:"0",transition:"left 100ms ease-out",pointerEvents:"none",backgroundColor:this.options.overlayColor}},this.minimapWrapper)}initMinimap(){if(this.miniWavesurfer&&(this.miniWavesurfer.destroy(),this.miniWavesurfer=null),!this.wavesurfer)return;const t=this.wavesurfer.getDecodedData(),e=this.wavesurfer.getMediaElement();if(!t||!e)return;const i=[];for(let s=0;s<t.numberOfChannels;s++)i.push(t.getChannelData(s));this.miniWavesurfer=_.create(Object.assign(Object.assign({},this.options),{container:this.minimapWrapper,minPxPerSec:0,fillParent:!0,media:e,peaks:i,duration:t.duration})),this.subscriptions.push(this.miniWavesurfer.on("audioprocess",s=>{this.emit("audioprocess",s)}),this.miniWavesurfer.on("click",(s,r)=>{this.emit("click",s,r)}),this.miniWavesurfer.on("dblclick",(s,r)=>{this.emit("dblclick",s,r)}),this.miniWavesurfer.on("decode",s=>{this.emit("decode",s)}),this.miniWavesurfer.on("destroy",()=>{this.emit("destroy")}),this.miniWavesurfer.on("drag",s=>{this.emit("drag",s)}),this.miniWavesurfer.on("dragend",s=>{this.emit("dragend",s)}),this.miniWavesurfer.on("dragstart",s=>{this.emit("dragstart",s)}),this.miniWavesurfer.on("interaction",()=>{this.emit("interaction")}),this.miniWavesurfer.on("init",()=>{this.emit("init")}),this.miniWavesurfer.on("ready",()=>{this.emit("ready")}),this.miniWavesurfer.on("redraw",()=>{this.emit("redraw")}),this.miniWavesurfer.on("redrawcomplete",()=>{this.emit("redrawcomplete")}),this.miniWavesurfer.on("seeking",s=>{this.emit("seeking",s)}),this.miniWavesurfer.on("timeupdate",s=>{this.emit("timeupdate",s)}))}getOverlayWidth(){var t;const e=((t=this.wavesurfer)===null||t===void 0?void 0:t.getWrapper().clientWidth)||1;return Math.round(this.minimapWrapper.clientWidth/e*100)}onRedraw(){const t=this.getOverlayWidth();this.overlay.style.width=`${t}%`}onScroll(t){if(!this.wavesurfer)return;const e=this.wavesurfer.getDuration();this.overlay.style.left=t/e*100+"%"}initWaveSurferEvents(){this.wavesurfer&&this.subscriptions.push(this.wavesurfer.on("decode",()=>{this.initMinimap()}),this.wavesurfer.on("scroll",t=>{this.onScroll(t)}),this.wavesurfer.on("redraw",()=>{this.onRedraw()}))}destroy(){var t;(t=this.miniWavesurfer)===null||t===void 0||t.destroy(),this.minimapWrapper.remove(),super.destroy()}};const te=({waveSurfer:o,minimapOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(dt,t);return P.onMounted(()=>{o.value&&i(o.value)}),{minimapPlugin:e}},ee=({containerRef:o,options:t,minimapOptions:e={}})=>z(dt,{containerRef:o,options:t,pluginOptions:e});let mt=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},ie=class extends mt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function tt(o,t,e,i,s=3,r=0,n=100){if(!o)return()=>{};const l=matchMedia("(pointer: coarse)").matches;let h=()=>{};const c=a=>{if(a.button!==r)return;a.preventDefault(),a.stopPropagation();let d=a.clientX,u=a.clientY,p=!1;const b=Date.now(),W=v=>{if(v.preventDefault(),v.stopPropagation(),l&&Date.now()-b<n)return;const f=v.clientX,S=v.clientY,x=f-d,C=S-u;if(p||Math.abs(x)>s||Math.abs(C)>s){const M=o.getBoundingClientRect(),{left:E,top:T}=M;p||(e?.(d-E,u-T),p=!0),t(x,C,f-E,S-T),d=f,u=S}},g=v=>{if(p){const f=v.clientX,S=v.clientY,x=o.getBoundingClientRect(),{left:C,top:M}=x;i?.(f-C,S-M)}h()},m=v=>{v.relatedTarget&&v.relatedTarget!==document.documentElement||g(v)},y=v=>{p&&(v.stopPropagation(),v.preventDefault())},w=v=>{p&&v.preventDefault()};document.addEventListener("pointermove",W),document.addEventListener("pointerup",g),document.addEventListener("pointerout",m),document.addEventListener("pointercancel",m),document.addEventListener("touchmove",w,{passive:!1}),document.addEventListener("click",y,{capture:!0}),h=()=>{document.removeEventListener("pointermove",W),document.removeEventListener("pointerup",g),document.removeEventListener("pointerout",m),document.removeEventListener("pointercancel",m),document.removeEventListener("touchmove",w),setTimeout(()=>{document.removeEventListener("click",y,{capture:!0})},10)}};return o.addEventListener("pointerdown",c),()=>{h(),o.removeEventListener("pointerdown",c)}}function vt(o,t){const e=t.xmlns?document.createElementNS(t.xmlns,o):document.createElement(o);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[r,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(vt(r,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function $(o,t,e){const i=vt(o,t||{});return e?.appendChild(i),i}const X={points:[],lineWidth:4,lineColor:"rgba(0, 0, 255, 0.5)",dragPointSize:10,dragPointFill:"rgba(255, 255, 255, 0.8)",dragPointStroke:"rgba(255, 255, 255, 0.8)"};let se=class extends mt{constructor(t,e){super(),this.subscriptions=[],this.subscriptions=[],this.options=t,this.polyPoints=new Map;const i=e.clientWidth,s=e.clientHeight,r=$("svg",{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:`0 0 ${i} ${s}`,preserveAspectRatio:"none",style:{position:"absolute",left:"0",top:"0",zIndex:"4"},part:"envelope"},e);this.svg=r;const n=$("polyline",{xmlns:"http://www.w3.org/2000/svg",points:`0,${s} ${i},${s}`,stroke:t.lineColor,"stroke-width":t.lineWidth,fill:"none",part:"polyline",style:t.dragLine?{cursor:"row-resize",pointerEvents:"stroke"}:{}},r);t.dragLine&&this.subscriptions.push(tt(n,(l,h)=>{const{height:c}=r.viewBox.baseVal,{points:a}=n;for(let u=1;u<a.numberOfItems-1;u++){const p=a.getItem(u);p.y=Math.min(c,Math.max(0,p.y+h))}const d=r.querySelectorAll("ellipse");Array.from(d).forEach(u=>{const p=Math.min(c,Math.max(0,Number(u.getAttribute("cy"))+h));u.setAttribute("cy",p.toString())}),this.emit("line-move",h/c)})),r.addEventListener("dblclick",l=>{const h=r.getBoundingClientRect(),c=l.clientX-h.left,a=l.clientY-h.top;this.emit("point-create",c/h.width,a/h.height)});{let l;const h=()=>clearTimeout(l);r.addEventListener("touchstart",c=>{c.touches.length===1?l=window.setTimeout(()=>{c.preventDefault();const a=r.getBoundingClientRect(),d=c.touches[0].clientX-a.left,u=c.touches[0].clientY-a.top;this.emit("point-create",d/a.width,u/a.height)},500):h()}),r.addEventListener("touchmove",h),r.addEventListener("touchend",h)}}makeDraggable(t,e){this.subscriptions.push(tt(t,e,()=>t.style.cursor="grabbing",()=>t.style.cursor="grab",1))}createCircle(t,e){const i=this.options.dragPointSize/2;return $("ellipse",{xmlns:"http://www.w3.org/2000/svg",cx:t,cy:e,rx:i,ry:i,fill:this.options.dragPointFill,stroke:this.options.dragPointStroke,"stroke-width":"2",style:{cursor:"grab",pointerEvents:"all"},part:"envelope-circle"},this.svg)}removePolyPoint(t){const e=this.polyPoints.get(t);if(!e)return;const{polyPoint:i,circle:s}=e,{points:r}=this.svg.querySelector("polyline"),n=Array.from(r).findIndex(l=>l.x===i.x&&l.y===i.y);r.removeItem(n),s.remove(),this.polyPoints.delete(t)}addPolyPoint(t,e,i){const{svg:s}=this,{width:r,height:n}=s.viewBox.baseVal,l=t*r,h=n-e*n,c=this.options.dragPointSize/2,a=s.createSVGPoint();a.x=t*r,a.y=n-e*n;const d=this.createCircle(l,h),{points:u}=s.querySelector("polyline"),p=Array.from(u).findIndex(b=>b.x>=l);u.insertItemBefore(a,Math.max(p,1)),this.polyPoints.set(i,{polyPoint:a,circle:d}),this.makeDraggable(d,(b,W)=>{const g=a.x+b,m=a.y+W;if(g<-c||m<-c||g>r+c||m>n+c)return void this.emit("point-dragout",i);const y=Array.from(u).find(v=>v.x>a.x),w=Array.from(u).findLast(v=>v.x<a.x);y&&g>=y.x||w&&g<=w.x||(a.x=g,a.y=m,d.setAttribute("cx",g.toString()),d.setAttribute("cy",m.toString()),this.emit("point-move",i,g/r,m/n))})}update(){const{svg:t}=this,{clientWidth:e,clientHeight:i}=t;if(!e||!i)return;const s=t.viewBox.baseVal.width/e,r=t.viewBox.baseVal.height/i;t.querySelectorAll("ellipse").forEach(n=>{const l=this.options.dragPointSize/2,h=l*s,c=l*r;n.setAttribute("rx",h.toString()),n.setAttribute("ry",c.toString())})}destroy(){this.subscriptions.forEach(t=>t()),this.polyPoints.clear(),this.svg.remove()}},ft=class gt extends ie{constructor(t){super(t),this.polyline=null,this.throttleTimeout=null,this.volume=1,this.points=t.points||[],this.options=Object.assign({},X,t),this.options.lineColor=this.options.lineColor||X.lineColor,this.options.dragPointFill=this.options.dragPointFill||X.dragPointFill,this.options.dragPointStroke=this.options.dragPointStroke||X.dragPointStroke,this.options.dragPointSize=this.options.dragPointSize||X.dragPointSize}static create(t){return new gt(t)}addPoint(t){var e;t.id||(t.id=Math.random().toString(36).slice(2));const i=this.points.findLastIndex(r=>r.time<t.time);this.points.splice(i+1,0,t),this.emitPoints();const s=(e=this.wavesurfer)===null||e===void 0?void 0:e.getDuration();s&&this.addPolyPoint(t,s)}removePoint(t){var e;const i=this.points.indexOf(t);i>-1&&(this.points.splice(i,1),(e=this.polyline)===null||e===void 0||e.removePolyPoint(t),this.emitPoints())}getPoints(){return this.points}setPoints(t){this.points.slice().forEach(e=>this.removePoint(e)),t.forEach(e=>this.addPoint(e))}destroy(){var t;(t=this.polyline)===null||t===void 0||t.destroy(),super.destroy()}getCurrentVolume(){return this.volume}setVolume(t){var e;this.volume=t,(e=this.wavesurfer)===null||e===void 0||e.setVolume(t)}onInit(){var t;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");const{options:e}=this;e.volume=(t=e.volume)!==null&&t!==void 0?t:this.wavesurfer.getVolume(),this.setVolume(e.volume),this.subscriptions.push(this.wavesurfer.on("decode",i=>{this.initPolyline(),this.points.forEach(s=>{this.addPolyPoint(s,i)})}),this.wavesurfer.on("redraw",()=>{var i;(i=this.polyline)===null||i===void 0||i.update()}),this.wavesurfer.on("timeupdate",i=>{this.onTimeUpdate(i)}))}emitPoints(){this.throttleTimeout&&clearTimeout(this.throttleTimeout),this.throttleTimeout=setTimeout(()=>{this.emit("points-change",this.points)},200)}initPolyline(){if(this.polyline&&this.polyline.destroy(),!this.wavesurfer)return;const t=this.wavesurfer.getWrapper();this.polyline=new se(this.options,t),this.subscriptions.push(this.polyline.on("point-move",(e,i,s)=>{var r;const n=((r=this.wavesurfer)===null||r===void 0?void 0:r.getDuration())||0;e.time=i*n,e.volume=1-s,this.emitPoints()}),this.polyline.on("point-dragout",e=>{this.removePoint(e)}),this.polyline.on("point-create",(e,i)=>{var s;this.addPoint({time:e*(((s=this.wavesurfer)===null||s===void 0?void 0:s.getDuration())||0),volume:1-i})}),this.polyline.on("line-move",e=>{var i;this.points.forEach(s=>{s.volume=Math.min(1,Math.max(0,s.volume-e))}),this.emitPoints(),this.onTimeUpdate(((i=this.wavesurfer)===null||i===void 0?void 0:i.getCurrentTime())||0)}))}addPolyPoint(t,e){var i;(i=this.polyline)===null||i===void 0||i.addPolyPoint(t.time/e,t.volume,t)}onTimeUpdate(t){if(!this.wavesurfer)return;let e=this.points.find(c=>c.time>t);e||(e={time:this.wavesurfer.getDuration()||0,volume:0});let i=this.points.findLast(c=>c.time<=t);i||(i={time:0,volume:0});const s=e.time-i.time,r=e.volume-i.volume,n=i.volume+(t-i.time)*(r/s),l=Math.min(1,Math.max(0,n)),h=Math.round(100*l)/100;h!==this.getCurrentVolume()&&(this.setVolume(h),this.emit("volume-change",h))}};const ne=({waveSurfer:o,envelopeOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(ft,t);return P.onMounted(()=>{o.value&&i(o.value)}),{envelopePlugin:e}},re=({containerRef:o,options:t,envelopeOptions:e={}})=>z(ft,{containerRef:o,options:t,pluginOptions:e});function N(o,t,e,i){return new(e||(e=Promise))(function(s,r){function n(c){try{h(i.next(c))}catch(a){r(a)}}function l(c){try{h(i.throw(c))}catch(a){r(a)}}function h(c){var a;c.done?s(c.value):(a=c.value,a instanceof e?a:new e(function(d){d(a)})).then(n,l)}h((i=i.apply(o,[])).next())})}const bt=1e3*Math.log(10)/107.939;function yt(o){return 2595*Math.log10(1+o/700)}function wt(o){return 700*(Math.pow(10,o/2595)-1)}function St(o){return Math.log10(Math.max(1,o))}function Wt(o){return Math.pow(10,o)}function Ct(o){let t=26.81*o/(1960+o)-.53;return t<2&&(t+=.15*(2-t)),t>20.1&&(t+=.22*(t-20.1)),t}function xt(o){return o<2&&(o=(o-.3)/.85),o>20.1&&(o=(o+4.422)/1.22),(o+.53)/(26.28-o)*1960}function Mt(o){return bt*Math.log10(1+.00437*o)}function Pt(o){return(Math.pow(10,o/bt)-1)/.00437}function G(o,t){switch(t){case"mel":return yt(o);case"logarithmic":return St(o);case"bark":return Ct(o);case"erb":return Mt(o);default:return o}}function K(o,t,e,i,s){const r=i(0),n=i(e/2),l=Array.from({length:o},()=>Array(t/2+1).fill(0)),h=e/t;for(let c=0;c<o;c++){const a=s(r+c/o*(n-r)),d=Math.floor(a/h),u=d*h,p=(a-u)/((d+1)*h-u);l[c][d]=1-p,l[c][d+1]=p}return l}function oe(o,t){const e=t.length,i=Float32Array.from({length:e},()=>0);for(let s=0;s<e;s++)for(let r=0;r<o.length;r++)i[s]+=o[r]*t[s][r];return i}const ae={gray:()=>{const o=[];for(let t=0;t<256;t++){const e=(255-t)/256;o.push([e,e,e,1])}return o},igray:()=>{const o=[];for(let t=0;t<256;t++){const e=t/256;o.push([e,e,e,1])}return o},roseus:()=>[[.004528,.004341,.004307,1],[.005625,.006156,.00601,1],[.006628,.008293,.008161,1],[.007551,.010738,.01079,1],[.008382,.013482,.013941,1],[.009111,.01652,.017662,1],[.009727,.019846,.022009,1],[.010223,.023452,.027035,1],[.010593,.027331,.032799,1],[.010833,.031475,.039361,1],[.010941,.035875,.046415,1],[.010918,.04052,.053597,1],[.010768,.045158,.060914,1],[.010492,.049708,.068367,1],[.010098,.054171,.075954,1],[.009594,.058549,.083672,1],[.008989,.06284,.091521,1],[.008297,.067046,.099499,1],[.00753,.071165,.107603,1],[.006704,.075196,.11583,1],[.005838,.07914,.124178,1],[.004949,.082994,.132643,1],[.004062,.086758,.141223,1],[.003198,.09043,.149913,1],[.002382,.09401,.158711,1],[.001643,.097494,.167612,1],[.001009,.100883,.176612,1],[514e-6,.104174,.185704,1],[187e-6,.107366,.194886,1],[66e-6,.110457,.204151,1],[186e-6,.113445,.213496,1],[587e-6,.116329,.222914,1],[.001309,.119106,.232397,1],[.002394,.121776,.241942,1],[.003886,.124336,.251542,1],[.005831,.126784,.261189,1],[.008276,.12912,.270876,1],[.011268,.131342,.280598,1],[.014859,.133447,.290345,1],[.0191,.135435,.300111,1],[.024043,.137305,.309888,1],[.029742,.139054,.319669,1],[.036252,.140683,.329441,1],[.043507,.142189,.339203,1],[.050922,.143571,.348942,1],[.058432,.144831,.358649,1],[.066041,.145965,.368319,1],[.073744,.146974,.377938,1],[.081541,.147858,.387501,1],[.089431,.148616,.396998,1],[.097411,.149248,.406419,1],[.105479,.149754,.415755,1],[.113634,.150134,.424998,1],[.121873,.150389,.434139,1],[.130192,.150521,.443167,1],[.138591,.150528,.452075,1],[.147065,.150413,.460852,1],[.155614,.150175,.469493,1],[.164232,.149818,.477985,1],[.172917,.149343,.486322,1],[.181666,.148751,.494494,1],[.190476,.148046,.502493,1],[.199344,.147229,.510313,1],[.208267,.146302,.517944,1],[.217242,.145267,.52538,1],[.226264,.144131,.532613,1],[.235331,.142894,.539635,1],[.24444,.141559,.546442,1],[.253587,.140131,.553026,1],[.262769,.138615,.559381,1],[.271981,.137016,.5655,1],[.281222,.135335,.571381,1],[.290487,.133581,.577017,1],[.299774,.131757,.582404,1],[.30908,.129867,.587538,1],[.318399,.12792,.592415,1],[.32773,.125921,.597032,1],[.337069,.123877,.601385,1],[.346413,.121793,.605474,1],[.355758,.119678,.609295,1],[.365102,.11754,.612846,1],[.374443,.115386,.616127,1],[.383774,.113226,.619138,1],[.393096,.111066,.621876,1],[.402404,.108918,.624343,1],[.411694,.106794,.62654,1],[.420967,.104698,.628466,1],[.430217,.102645,.630123,1],[.439442,.100647,.631513,1],[.448637,.098717,.632638,1],[.457805,.096861,.633499,1],[.46694,.095095,.6341,1],[.47604,.093433,.634443,1],[.485102,.091885,.634532,1],[.494125,.090466,.63437,1],[.503104,.08919,.633962,1],[.512041,.088067,.633311,1],[.520931,.087108,.63242,1],[.529773,.086329,.631297,1],[.538564,.085738,.629944,1],[.547302,.085346,.628367,1],[.555986,.085162,.626572,1],[.564615,.08519,.624563,1],[.573187,.085439,.622345,1],[.581698,.085913,.619926,1],[.590149,.086615,.617311,1],[.598538,.087543,.614503,1],[.606862,.0887,.611511,1],[.61512,.090084,.608343,1],[.623312,.09169,.605001,1],[.631438,.093511,.601489,1],[.639492,.095546,.597821,1],[.647476,.097787,.593999,1],[.655389,.100226,.590028,1],[.66323,.102856,.585914,1],[.670995,.105669,.581667,1],[.678686,.108658,.577291,1],[.686302,.111813,.57279,1],[.69384,.115129,.568175,1],[.7013,.118597,.563449,1],[.708682,.122209,.558616,1],[.715984,.125959,.553687,1],[.723206,.12984,.548666,1],[.730346,.133846,.543558,1],[.737406,.13797,.538366,1],[.744382,.142209,.533101,1],[.751274,.146556,.527767,1],[.758082,.151008,.522369,1],[.764805,.155559,.516912,1],[.771443,.160206,.511402,1],[.777995,.164946,.505845,1],[.784459,.169774,.500246,1],[.790836,.174689,.494607,1],[.797125,.179688,.488935,1],[.803325,.184767,.483238,1],[.809435,.189925,.477518,1],[.815455,.19516,.471781,1],[.821384,.200471,.466028,1],[.827222,.205854,.460267,1],[.832968,.211308,.454505,1],[.838621,.216834,.448738,1],[.844181,.222428,.442979,1],[.849647,.22809,.43723,1],[.855019,.233819,.431491,1],[.860295,.239613,.425771,1],[.865475,.245471,.420074,1],[.870558,.251393,.414403,1],[.875545,.25738,.408759,1],[.880433,.263427,.403152,1],[.885223,.269535,.397585,1],[.889913,.275705,.392058,1],[.894503,.281934,.386578,1],[.898993,.288222,.381152,1],[.903381,.294569,.375781,1],[.907667,.300974,.370469,1],[.911849,.307435,.365223,1],[.915928,.313953,.360048,1],[.919902,.320527,.354948,1],[.923771,.327155,.349928,1],[.927533,.333838,.344994,1],[.931188,.340576,.340149,1],[.934736,.347366,.335403,1],[.938175,.354207,.330762,1],[.941504,.361101,.326229,1],[.944723,.368045,.321814,1],[.947831,.375039,.317523,1],[.950826,.382083,.313364,1],[.953709,.389175,.309345,1],[.956478,.396314,.305477,1],[.959133,.403499,.301766,1],[.961671,.410731,.298221,1],[.964093,.418008,.294853,1],[.966399,.425327,.291676,1],[.968586,.43269,.288696,1],[.970654,.440095,.285926,1],[.972603,.44754,.28338,1],[.974431,.455025,.281067,1],[.976139,.462547,.279003,1],[.977725,.470107,.277198,1],[.979188,.477703,.275666,1],[.980529,.485332,.274422,1],[.981747,.492995,.273476,1],[.98284,.50069,.272842,1],[.983808,.508415,.272532,1],[.984653,.516168,.27256,1],[.985373,.523948,.272937,1],[.985966,.531754,.273673,1],[.986436,.539582,.274779,1],[.98678,.547434,.276264,1],[.986998,.555305,.278135,1],[.987091,.563195,.280401,1],[.987061,.5711,.283066,1],[.986907,.579019,.286137,1],[.986629,.58695,.289615,1],[.986229,.594891,.293503,1],[.985709,.602839,.297802,1],[.985069,.610792,.302512,1],[.98431,.618748,.307632,1],[.983435,.626704,.313159,1],[.982445,.634657,.319089,1],[.981341,.642606,.32542,1],[.98013,.650546,.332144,1],[.978812,.658475,.339257,1],[.977392,.666391,.346753,1],[.97587,.67429,.354625,1],[.974252,.68217,.362865,1],[.972545,.690026,.371466,1],[.97075,.697856,.380419,1],[.968873,.705658,.389718,1],[.966921,.713426,.399353,1],[.964901,.721157,.409313,1],[.962815,.728851,.419594,1],[.960677,.7365,.430181,1],[.95849,.744103,.44107,1],[.956263,.751656,.452248,1],[.954009,.759153,.463702,1],[.951732,.766595,.475429,1],[.949445,.773974,.487414,1],[.947158,.781289,.499647,1],[.944885,.788535,.512116,1],[.942634,.795709,.524811,1],[.940423,.802807,.537717,1],[.938261,.809825,.550825,1],[.936163,.81676,.564121,1],[.934146,.823608,.577591,1],[.932224,.830366,.59122,1],[.930412,.837031,.604997,1],[.928727,.843599,.618904,1],[.927187,.850066,.632926,1],[.925809,.856432,.647047,1],[.92461,.862691,.661249,1],[.923607,.868843,.675517,1],[.92282,.874884,.689832,1],[.922265,.880812,.704174,1],[.921962,.886626,.718523,1],[.92193,.892323,.732859,1],[.922183,.897903,.747163,1],[.922741,.903364,.76141,1],[.92362,.908706,.77558,1],[.924837,.913928,.789648,1],[.926405,.919031,.80359,1],[.92834,.924015,.817381,1],[.930655,.928881,.830995,1],[.93336,.933631,.844405,1],[.936466,.938267,.857583,1],[.939982,.942791,.870499,1],[.943914,.947207,.883122,1],[.948267,.951519,.895421,1],[.953044,.955732,.907359,1],[.958246,.959852,.918901,1],[.963869,.963887,.930004,1],[.969909,.967845,.940623,1],[.976355,.971737,.950704,1],[.983195,.97558,.960181,1],[.990402,.979395,.968966,1],[.99793,.983217,.97692,1]]};function le(o){return o>=1e3?(o/1e3).toFixed(1):Math.round(o).toString()}function he(o){return o>=1e3?"kHz":"Hz"}function ce(o,t,e,i,s){const r=G(e,s);return function(n,l){switch(l){case"mel":return wt(n);case"logarithmic":return Wt(n);case"bark":return xt(n);case"erb":return Pt(n);default:return n}}(r+o/t*(G(i,s)-r),s)}function ue(o,t,e,i){switch(this.bufferSize=o,this.sampleRate=t,this.bandwidth=2/o*(t/2),this.sinTable=new Float32Array(o),this.cosTable=new Float32Array(o),this.windowValues=new Float32Array(o),this.reverseTable=new Uint32Array(o),this.peakBand=0,this.peak=0,e){case"bartlett":for(let n=0;n<o;n++)this.windowValues[n]=2/(o-1)*((o-1)/2-Math.abs(n-(o-1)/2));break;case"bartlettHann":for(let n=0;n<o;n++)this.windowValues[n]=.62-.48*Math.abs(n/(o-1)-.5)-.38*Math.cos(2*Math.PI*n/(o-1));break;case"blackman":i=i||.16;for(let n=0;n<o;n++)this.windowValues[n]=(1-i)/2-.5*Math.cos(2*Math.PI*n/(o-1))+i/2*Math.cos(4*Math.PI*n/(o-1));break;case"cosine":for(let n=0;n<o;n++)this.windowValues[n]=Math.cos(Math.PI*n/(o-1)-Math.PI/2);break;case"gauss":i=i||.25;for(let n=0;n<o;n++)this.windowValues[n]=Math.pow(Math.E,-.5*Math.pow((n-(o-1)/2)/(i*(o-1)/2),2));break;case"hamming":for(let n=0;n<o;n++)this.windowValues[n]=.54-.46*Math.cos(2*Math.PI*n/(o-1));break;case"hann":case void 0:for(let n=0;n<o;n++)this.windowValues[n]=.5*(1-Math.cos(2*Math.PI*n/(o-1)));break;case"lanczoz":for(let n=0;n<o;n++)this.windowValues[n]=Math.sin(Math.PI*(2*n/(o-1)-1))/(Math.PI*(2*n/(o-1)-1));break;case"rectangular":for(let n=0;n<o;n++)this.windowValues[n]=1;break;case"triangular":for(let n=0;n<o;n++)this.windowValues[n]=2/o*(o/2-Math.abs(n-(o-1)/2));break;default:throw Error("No such window function '"+e+"'")}let s=1,r=o>>1;for(;s<o;){for(let n=0;n<s;n++)this.reverseTable[n+s]=this.reverseTable[n]+r;s<<=1,r>>=1}for(let n=0;n<o;n++)this.sinTable[n]=Math.sin(-Math.PI/n),this.cosTable[n]=Math.cos(-Math.PI/n);this.calculateSpectrum=function(n){const l=this.bufferSize,h=this.cosTable,c=this.sinTable,a=this.reverseTable,d=new Float32Array(l),u=new Float32Array(l),p=2/this.bufferSize,b=Math.sqrt,W=new Float32Array(l/2);let g,m,y;const w=Math.floor(Math.log(l)/Math.LN2);if(Math.pow(2,w)!==l)throw"Invalid buffer size, must be a power of 2.";if(l!==n.length)throw"Supplied buffer is not the same size as defined FFT. FFT Size: "+l+" Buffer Size: "+n.length;let v,f,S,x,C,M,E,T,D=1;for(let k=0;k<l;k++)d[k]=n[a[k]]*this.windowValues[a[k]],u[k]=0;for(;D<l;){v=h[D],f=c[D],S=1,x=0;for(let k=0;k<D;k++){let Z=k;for(;Z<l;)C=Z+D,M=S*d[C]-x*u[C],E=S*u[C]+x*d[C],d[C]=d[Z]-M,u[C]=u[Z]-E,d[Z]+=M,u[Z]+=E,Z+=D<<1;T=S,S=T*v-x*f,x=T*f+x*v}D<<=1}for(let k=0,Z=l/2;k<Z;k++)g=d[k],m=u[k],y=p*b(g*g+m*m),y>this.peak&&(this.peakBand=k,this.peak=y),W[k]=y;return W}}class de{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}}class pe extends de{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}}function Et(o,t){const e=t.xmlns?document.createElementNS(t.xmlns,o):document.createElement(o);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[r,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(Et(r,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function j(o,t,e){const i=Et(o,t||{});return e?.appendChild(i),i}var kt=null;try{var me=typeof module<"u"&&typeof module.require=="function"&&module.require("worker_threads")||typeof __non_webpack_require__=="function"&&__non_webpack_require__("worker_threads")||typeof require=="function"&&require("worker_threads");kt=me.Worker}catch{}function ve(o,t,e){var i=function(n){return Buffer.from(n,"base64").toString("utf8")}(o),s=i.indexOf(`
|
|
74
|
-
`,10)+1,
|
|
75
|
-
`,10)+1,r=i.substring(s)+"",n=new Blob([r],{type:"application/javascript"});return URL.createObjectURL(n)}var ge=Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]";function be(o,t,e){return ge?ve(o):function(i){var s;return function(r){return s=s||fe(i),new Worker(s,r)}}(o)}var ye=be("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgdD0xZTMqTWF0aC5sb2coMTApLzEwNy45Mzk7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gMjU5NSpNYXRoLmxvZzEwKDErdC83MDApfWZ1bmN0aW9uIGEodCl7cmV0dXJuIDcwMCooTWF0aC5wb3coMTAsdC8yNTk1KS0xKX1mdW5jdGlvbiByKHQpe3JldHVybiBNYXRoLmxvZzEwKE1hdGgubWF4KDEsdCkpfWZ1bmN0aW9uIHModCl7cmV0dXJuIE1hdGgucG93KDEwLHQpfWZ1bmN0aW9uIG4odCl7bGV0IGU9MjYuODEqdC8oMTk2MCt0KS0uNTM7cmV0dXJuIGU8MiYmKGUrPS4xNSooMi1lKSksZT4yMC4xJiYoZSs9LjIyKihlLTIwLjEpKSxlfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ8MiYmKHQ9KHQtLjMpLy44NSksdD4yMC4xJiYodD0odCs0LjQyMikvMS4yMiksKHQrLjUzKS8oMjYuMjgtdCkqMTk2MH1mdW5jdGlvbiBsKGUpe3JldHVybiB0Kk1hdGgubG9nMTAoMSsuMDA0MzcqZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4oTWF0aC5wb3coMTAsZS90KS0xKS8uMDA0Mzd9ZnVuY3Rpb24gaCh0LGUsYSxyLHMpe2NvbnN0IG49cigwKSxvPXIoYS8yKSxsPUFycmF5LmZyb20oe2xlbmd0aDp0fSwoKCk9PkFycmF5KGUvMisxKS5maWxsKDApKSksaT1hL2U7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7Y29uc3QgYT1zKG4rZS90KihvLW4pKSxyPU1hdGguZmxvb3IoYS9pKSxoPXIqaSxjPShhLWgpLygocisxKSppLWgpO2xbZV1bcl09MS1jLGxbZV1bcisxXT1jfXJldHVybiBsfWZ1bmN0aW9uIGModCxlKXtjb25zdCBhPWUubGVuZ3RoLHI9RmxvYXQzMkFycmF5LmZyb20oe2xlbmd0aDphfSwoKCk9PjApKTtmb3IobGV0IHM9MDtzPGE7cysrKWZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKXJbc10rPXRbYV0qZVtzXVthXTtyZXR1cm4gcn1mdW5jdGlvbiB1KHQsZSxhLHIpe3N3aXRjaCh0aGlzLmJ1ZmZlclNpemU9dCx0aGlzLnNhbXBsZVJhdGU9ZSx0aGlzLmJhbmR3aWR0aD0yL3QqKGUvMiksdGhpcy5zaW5UYWJsZT1uZXcgRmxvYXQzMkFycmF5KHQpLHRoaXMuY29zVGFibGU9bmV3IEZsb2F0MzJBcnJheSh0KSx0aGlzLndpbmRvd1ZhbHVlcz1uZXcgRmxvYXQzMkFycmF5KHQpLHRoaXMucmV2ZXJzZVRhYmxlPW5ldyBVaW50MzJBcnJheSh0KSx0aGlzLnBlYWtCYW5kPTAsdGhpcy5wZWFrPTAsYSl7Y2FzZSJiYXJ0bGV0dCI6Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT0yLyh0LTEpKigodC0xKS8yLU1hdGguYWJzKGUtKHQtMSkvMikpO2JyZWFrO2Nhc2UiYmFydGxldHRIYW5uIjpmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPS42Mi0uNDgqTWF0aC5hYnMoZS8odC0xKS0uNSktLjM4Kk1hdGguY29zKDIqTWF0aC5QSSplLyh0LTEpKTticmVhaztjYXNlImJsYWNrbWFuIjpyPXJ8fC4xNjtmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPSgxLXIpLzItLjUqTWF0aC5jb3MoMipNYXRoLlBJKmUvKHQtMSkpK3IvMipNYXRoLmNvcyg0Kk1hdGguUEkqZS8odC0xKSk7YnJlYWs7Y2FzZSJjb3NpbmUiOmZvcihsZXQgZT0wO2U8dDtlKyspdGhpcy53aW5kb3dWYWx1ZXNbZV09TWF0aC5jb3MoTWF0aC5QSSplLyh0LTEpLU1hdGguUEkvMik7YnJlYWs7Y2FzZSJnYXVzcyI6cj1yfHwuMjU7Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT1NYXRoLnBvdyhNYXRoLkUsLS41Kk1hdGgucG93KChlLSh0LTEpLzIpLyhyKih0LTEpLzIpLDIpKTticmVhaztjYXNlImhhbW1pbmciOmZvcihsZXQgZT0wO2U8dDtlKyspdGhpcy53aW5kb3dWYWx1ZXNbZV09LjU0LS40NipNYXRoLmNvcygyKk1hdGguUEkqZS8odC0xKSk7YnJlYWs7Y2FzZSJoYW5uIjpjYXNlIHZvaWQgMDpmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPS41KigxLU1hdGguY29zKDIqTWF0aC5QSSplLyh0LTEpKSk7YnJlYWs7Y2FzZSJsYW5jem96Ijpmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPU1hdGguc2luKE1hdGguUEkqKDIqZS8odC0xKS0xKSkvKE1hdGguUEkqKDIqZS8odC0xKS0xKSk7YnJlYWs7Y2FzZSJyZWN0YW5ndWxhciI6Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT0xO2JyZWFrO2Nhc2UidHJpYW5ndWxhciI6Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT0yL3QqKHQvMi1NYXRoLmFicyhlLSh0LTEpLzIpKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJObyBzdWNoIHdpbmRvdyBmdW5jdGlvbiAnIithKyInIil9bGV0IHM9MSxuPXQ+PjE7Zm9yKDtzPHQ7KXtmb3IobGV0IHQ9MDt0PHM7dCsrKXRoaXMucmV2ZXJzZVRhYmxlW3Qrc109dGhpcy5yZXZlcnNlVGFibGVbdF0rbjtzPDw9MSxuPj49MX1mb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMuc2luVGFibGVbZV09TWF0aC5zaW4oLU1hdGguUEkvZSksdGhpcy5jb3NUYWJsZVtlXT1NYXRoLmNvcygtTWF0aC5QSS9lKTt0aGlzLmNhbGN1bGF0ZVNwZWN0cnVtPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5idWZmZXJTaXplLGE9dGhpcy5jb3NUYWJsZSxyPXRoaXMuc2luVGFibGUscz10aGlzLnJldmVyc2VUYWJsZSxuPW5ldyBGbG9hdDMyQXJyYXkoZSksbz1uZXcgRmxvYXQzMkFycmF5KGUpLGw9Mi90aGlzLmJ1ZmZlclNpemUsaT1NYXRoLnNxcnQsaD1uZXcgRmxvYXQzMkFycmF5KGUvMik7bGV0IGMsdSxmO2NvbnN0IE09TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMik7aWYoTWF0aC5wb3coMixNKSE9PWUpdGhyb3ciSW52YWxpZCBidWZmZXIgc2l6ZSwgbXVzdCBiZSBhIHBvd2VyIG9mIDIuIjtpZihlIT09dC5sZW5ndGgpdGhyb3ciU3VwcGxpZWQgYnVmZmVyIGlzIG5vdCB0aGUgc2FtZSBzaXplIGFzIGRlZmluZWQgRkZULiBGRlQgU2l6ZTogIitlKyIgQnVmZmVyIFNpemU6ICIrdC5sZW5ndGg7bGV0IHcsYixkLHAsZyxtLGsseSxUPTE7Zm9yKGxldCBhPTA7YTxlO2ErKyluW2FdPXRbc1thXV0qdGhpcy53aW5kb3dWYWx1ZXNbc1thXV0sb1thXT0wO2Zvcig7VDxlOyl7dz1hW1RdLGI9cltUXSxkPTEscD0wO2ZvcihsZXQgdD0wO3Q8VDt0Kyspe2xldCBhPXQ7Zm9yKDthPGU7KWc9YStULG09ZCpuW2ddLXAqb1tnXSxrPWQqb1tnXStwKm5bZ10sbltnXT1uW2FdLW0sb1tnXT1vW2FdLWssblthXSs9bSxvW2FdKz1rLGErPVQ8PDE7eT1kLGQ9eSp3LXAqYixwPXkqYitwKnd9VDw8PTF9Zm9yKGxldCB0PTAsYT1lLzI7dDxhO3QrKyljPW5bdF0sdT1vW3RdLGY9bCppKGMqYyt1KnUpLGY+dGhpcy5wZWFrJiYodGhpcy5wZWFrQmFuZD10LHRoaXMucGVhaz1mKSxoW3RdPWY7cmV0dXJuIGh9fWxldCBmPW51bGw7c2VsZi5vbm1lc3NhZ2U9ZnVuY3Rpb24odCl7Y29uc3R7dHlwZTpNLGlkOncsYXVkaW9EYXRhOmIsb3B0aW9uczpkfT10LmRhdGE7aWYoImNhbGN1bGF0ZUZyZXF1ZW5jaWVzIj09PU0pdHJ5e2NvbnN0IHQ9ZnVuY3Rpb24odCxNKXtjb25zdHtzdGFydFRpbWU6dyxlbmRUaW1lOmIsc2FtcGxlUmF0ZTpkLGZmdFNhbXBsZXM6cCx3aW5kb3dGdW5jOmcsYWxwaGE6bSxub3ZlcmxhcDprLHNjYWxlOnksZ2FpbkRCOlQscmFuZ2VEQjpGLHNwbGl0Q2hhbm5lbHM6SX09TSxWPU1hdGguZmxvb3IodypkKSxBPU1hdGguZmxvb3IoYipkKSxQPUk/dC5sZW5ndGg6MTtmJiZmLmJ1ZmZlclNpemU9PT1wfHwoZj1uZXcgdShwLGQsZyxtfHwuMTYpKTtjb25zdCBTPWZ1bmN0aW9uKHQsYyx1LGYpe3N3aXRjaCh0KXtjYXNlIm1lbCI6cmV0dXJuIGgoYyx1LGYsZSxhKTtjYXNlImxvZ2FyaXRobWljIjpyZXR1cm4gaChjLHUsZixyLHMpO2Nhc2UiYmFyayI6cmV0dXJuIGgoYyx1LGYsbixvKTtjYXNlImVyYiI6cmV0dXJuIGgoYyx1LGYsbCxpKTtkZWZhdWx0OnJldHVybiBudWxsfX0oeSxwLzIscCxkKTtsZXQgej1rfHxNYXRoLm1heCgwLE1hdGgucm91bmQoLjUqcCkpO2NvbnN0IHY9LjUqcDt6PU1hdGgubWluKHosdik7Y29uc3QgQj1NYXRoLm1heCg2NCwuMjUqcCkscT1NYXRoLm1heChCLHAteikseD1bXTtmb3IobGV0IGU9MDtlPFA7ZSsrKXtjb25zdCBhPXRbZV0scj1bXTtmb3IobGV0IHQ9Vjt0K3A8QTt0Kz1xKXtjb25zdCBlPWEuc2xpY2UodCx0K3ApO2xldCBzPWYuY2FsY3VsYXRlU3BlY3RydW0oZSk7UyYmKHM9YyhzLFMpKTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHMubGVuZ3RoKSxvPVQrRjtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyl7Y29uc3QgZT1zW3RdPjFlLTEyP3NbdF06MWUtMTIsYT0yMCpNYXRoLmxvZzEwKGUpO25bdF09YTwtbz8wOmE+LVQ/MjU1Ok1hdGgucm91bmQoKGErVCkvRioyNTUpfXIucHVzaChuKX14LnB1c2gocil9cmV0dXJuIHh9KGIsZCksTT17dHlwZToiZnJlcXVlbmNpZXNSZXN1bHQiLGlkOncscmVzdWx0OnR9O3NlbGYucG9zdE1lc3NhZ2UoTSl9Y2F0Y2godCl7Y29uc3QgZT17dHlwZToiZnJlcXVlbmNpZXNSZXN1bHQiLGlkOncsZXJyb3I6dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9O3NlbGYucG9zdE1lc3NhZ2UoZSl9fX0oKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3BlY3Ryb2dyYW0td29ya2VyLmpzLm1hcAoK");class R extends pe{static create(t){return new R(t||{})}constructor(t){var e,i;if(super(t),this.canvases=[],this.useWebWorker=!1,this.worker=null,this.workerPromises=new Map,this.cachedFrequencies=null,this.cachedResampledData=null,this.cachedBuffer=null,this.cachedWidth=0,this.renderTimeout=null,this.isRendering=!1,this.lastZoomLevel=0,this.renderThrottleMs=50,this.zoomThreshold=.05,this.drawnCanvases={},this.pendingBitmaps=new Set,this.isScrollable=!1,this.scrollUnsubscribe=null,this.frequenciesDataUrl=t.frequenciesDataUrl,this.frequenciesDataUrl&&!t.sampleRate)throw new Error("sampleRate option is required when using frequenciesDataUrl");this.container=typeof t.container=="string"?document.querySelector(t.container):t.container,this.useWebWorker=t.useWebWorker===!0,this.colorMap=function(s="roseus"){if(s&&typeof s!="string"){if(s.length<256)throw new Error("Colormap must contain 256 elements");for(let n=0;n<s.length;n++)if(s[n].length!==4)throw new Error("ColorMap entries must contain 4 values");return s}const r=ae[s];if(!r)throw Error("No such colormap '"+s+"'");return r()}(t.colorMap),this.fftSamples=t.fftSamples||512,this.height=t.height||200,this.noverlap=t.noverlap||null,this.windowFunc=t.windowFunc||"hann",this.alpha=t.alpha,this.frequencyMin=t.frequencyMin||0,this.frequencyMax=t.frequencyMax||0,this.gainDB=(e=t.gainDB)!==null&&e!==void 0?e:20,this.rangeDB=(i=t.rangeDB)!==null&&i!==void 0?i:80,this.scale=t.scale||"mel",this.numMelFilters=this.fftSamples/2,this.numLogFilters=this.fftSamples/2,this.numBarkFilters=this.fftSamples/2,this.numErbFilters=this.fftSamples/2,t.maxCanvasWidth&&(R.MAX_CANVAS_WIDTH=t.maxCanvasWidth),this.renderThrottleMs=50,this.zoomThreshold=.05,this.createWrapper(),this.createCanvas(),this.useWebWorker&&this.initializeWorker()}initializeWorker(){if(typeof window<"u"&&typeof Worker<"u")try{this.worker=new ye,this.worker.onmessage=t=>{const{type:e,id:i,result:s,error:r}=t.data;if(e==="frequenciesResult"){const n=this.workerPromises.get(i);n&&(this.workerPromises.delete(i),r?n.reject(new Error(r)):n.resolve(s))}},this.worker.onerror=t=>{console.warn("Spectrogram worker error, falling back to main thread:",t),this.worker=null}}catch(t){console.warn("Failed to initialize worker, falling back to main thread:",t),this.worker=null}else console.warn("Worker not available in this environment, using main thread calculation")}onInit(){this.wrapper||this.createWrapper(),this.canvasContainer||this.createCanvas(),this.container=this.wavesurfer.getWrapper(),this.container.appendChild(this.wrapper),this.wavesurfer.options.fillParent&&Object.assign(this.wrapper.style,{width:"100%",overflowX:"hidden",overflowY:"hidden"}),this.subscriptions.push(this.wavesurfer.on("redraw",()=>this.throttledRender())),this.wavesurfer.getDecodedData()&&setTimeout(()=>{this.throttledRender()},0)}destroy(){this.unAll(),this.wavesurfer&&(typeof this._onReady=="function"&&this.wavesurfer.un("ready",this._onReady),typeof this._onRender=="function"&&this.wavesurfer.un("redraw",this._onRender)),this.renderTimeout&&(clearTimeout(this.renderTimeout),this.renderTimeout=null),this.scrollUnsubscribe&&(this.scrollUnsubscribe(),this.scrollUnsubscribe=null),this.pendingBitmaps.clear(),this.worker&&(this.worker.terminate(),this.worker=null),this.cachedFrequencies=null,this.cachedResampledData=null,this.cachedBuffer=null,this.clearCanvases(),this.canvasContainer&&(this.canvasContainer.remove(),this.canvasContainer=null),this.wrapper&&(this.wrapper.remove(),this.wrapper=null),this.labelsEl&&(this.labelsEl.remove(),this.labelsEl=null),this.container=null,this.isRendering=!1,this.lastZoomLevel=0,this.wavesurfer=null,this.util=null,this.options=null,super.destroy()}loadFrequenciesData(t){return N(this,void 0,void 0,function*(){const e=yield fetch(t);if(!e.ok)throw new Error("Unable to fetch frequencies data");const i=yield e.json();this.drawSpectrogram(i)})}getFrequenciesData(){return N(this,void 0,void 0,function*(){var t;const e=(t=this.wavesurfer)===null||t===void 0?void 0:t.getDecodedData();if(!e)return null;if(this.cachedBuffer===e&&this.cachedFrequencies)return this.cachedFrequencies;{const i=yield this.getFrequencies(e);return this.cachedFrequencies=i,this.cachedBuffer=e,i}})}clearCache(){this.cachedFrequencies=null,this.cachedResampledData=null,this.cachedBuffer=null,this.cachedWidth=0,this.lastZoomLevel=0}createWrapper(){var t,e;this.wrapper=j("div",{style:{display:"block",position:"relative",userSelect:"none"}}),this.options.labels&&(this.labelsEl=j("canvas",{part:"spec-labels",style:{position:"absolute",zIndex:9,width:"55px",height:"100%"}},this.wrapper)),this._onWrapperClick=(t=this.wrapper,e=this.emit.bind(this),i=>{const s=t.getBoundingClientRect(),r=i.clientX-s.left,n=s.width;e("click",r/n)}),this.wrapper.addEventListener("click",this._onWrapperClick)}createCanvas(){this.canvasContainer=j("div",{style:{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:4}},this.wrapper)}createSingleCanvas(t,e,i){const s=j("canvas",{style:{position:"absolute",left:`${Math.round(i)}px`,top:"0",width:`${t}px`,height:`${e}px`,zIndex:4}});return s.width=Math.round(t),s.height=Math.round(e),this.canvasContainer.appendChild(s),s}clearCanvases(){this.canvases.forEach(t=>t.remove()),this.canvases=[],this.drawnCanvases={}}clearExcessCanvases(){Object.keys(this.drawnCanvases).length>R.MAX_NODES&&this.clearCanvases()}throttledRender(){var t;if(this.renderTimeout&&clearTimeout(this.renderTimeout),this.isRendering)return;const e=((t=this.wavesurfer)===null||t===void 0?void 0:t.options.minPxPerSec)||0;Math.abs(e-this.lastZoomLevel)/Math.max(e,this.lastZoomLevel,1)<this.zoomThreshold&&this.cachedFrequencies?this.renderTimeout=window.setTimeout(()=>{this.fastRender()},this.renderThrottleMs):this.renderTimeout=window.setTimeout(()=>{this.render()},this.renderThrottleMs)}render(){return N(this,void 0,void 0,function*(){var t,e;if(!this.isRendering){this.isRendering=!0;try{this.frequenciesDataUrl?yield this.loadFrequenciesData(this.frequenciesDataUrl):!((t=this.wavesurfer)===null||t===void 0)&&t.getDecodedData()&&(yield this.getFrequenciesData(),this.drawSpectrogram(this.cachedFrequencies)),this.lastZoomLevel=((e=this.wavesurfer)===null||e===void 0?void 0:e.options.minPxPerSec)||0}finally{this.isRendering=!1}}})}fastRender(){var t;if(!this.isRendering&&this.cachedFrequencies){this.isRendering=!0;try{this.drawSpectrogram(this.cachedFrequencies),this.lastZoomLevel=((t=this.wavesurfer)===null||t===void 0?void 0:t.options.minPxPerSec)||0}finally{this.isRendering=!1}}}drawSpectrogram(t){var e,i,s;isNaN(t[0][0])||(t=[t]),this.clearCanvases();const r=this.height*t.length;this.wrapper.style.height=r+"px";const n=this.getWidth(),l=Math.min(R.MAX_CANVAS_WIDTH,n);if(n===0||r===0)return;const h=Math.ceil(n/l);let c;const a=((e=t[0])===null||e===void 0?void 0:e.length)||0;n!==a?this.cachedResampledData&&this.cachedWidth===n?c=this.cachedResampledData:(c=this.efficientResample(t,n),this.cachedResampledData=c,this.cachedWidth=n):c=t;const d=!((i=this.buffer)===null||i===void 0)&&i.sampleRate?this.buffer.sampleRate/2:(this.options.sampleRate||0)/2,u=this.frequencyMin,p=this.frequencyMax,b=p>d,W=b?this.colorMap[this.colorMap.length-1]:null,g=m=>{if(m<0||m>=h||this.drawnCanvases[m])return;this.drawnCanvases[m]=!0;const y=m*l,w=Math.min(l,n-y);if(w<=0)return;const v=this.createSingleCanvas(w,r,y);this.canvases.push(v);const f=v.getContext("2d");if(f){b&&W&&(f.fillStyle=`rgba(${255*W[0]}, ${255*W[1]}, ${255*W[2]}, ${W[3]})`,f.fillRect(0,0,w,r));for(let S=0;S<c.length;S++)this.drawSpectrogramSegment(c[S],f,w,this.height,S*this.height,y,n,d,u,p)}};if(this.isScrollable=n>this.getWrapperWidth(),this.scrollUnsubscribe&&(this.scrollUnsubscribe(),this.scrollUnsubscribe=null),!this.isScrollable||h<=3)for(let m=0;m<h;m++)g(m);else{const m=()=>{var f;const S=(f=this.wavesurfer)===null||f===void 0?void 0:f.getWrapper();if(!S)return;const x=S.scrollLeft||0,C=S.clientWidth||0,M=Math.max(0,x-.5*C),E=Math.min(n,x+1.5*C),T=Math.floor(M/n*h),D=Math.min(Math.ceil(E/n*h),h-1);Object.keys(this.drawnCanvases).length>R.MAX_NODES&&this.clearExcessCanvases();for(let k=T;k<=D;k++)g(k)};m();let y=null;const w=()=>{y&&clearTimeout(y),y=window.setTimeout(m,16)},v=(s=this.wavesurfer)===null||s===void 0?void 0:s.getWrapper();v&&(v.addEventListener("scroll",w,{passive:!0}),this.scrollUnsubscribe=()=>{v.removeEventListener("scroll",w),y&&clearTimeout(y)})}this.options.labels&&this.loadLabels(this.options.labelsBackground,"12px","12px","",this.options.labelsColor,this.options.labelsHzColor||this.options.labelsColor,"center","#specLabels",t.length),this.emit("ready")}drawSpectrogramSegment(t,e,i,s,r,n,l,h,c,a){const d=t[0].length,u=Math.floor(n/l*t.length),p=Math.min(Math.ceil((n+i)/l*t.length),t.length),b=t.slice(u,p);if(b.length===0)return;const W=b.length,g=new ImageData(W,d),m=g.data;this.fillImageDataQuality(m,b,W,d);const y=G(c,this.scale)/G(h,this.scale),w=G(a,this.scale)/G(h,this.scale),v=Math.min(1,w),f=createImageBitmap(g,0,Math.round(d*(1-v)),W,Math.round(d*(v-y)));this.pendingBitmaps.add(f),f.then(S=>{if(this.pendingBitmaps.delete(f),e.canvas.parentNode){const x=s*v/w,C=r+s*(1-v/w);e.drawImage(S,0,C,i,x),"close"in S&&S.close()}}).catch(S=>{this.pendingBitmaps.delete(f)})}getWidth(){return this.wavesurfer.getWrapper().offsetWidth}getWrapperWidth(){var t,e;return((e=(t=this.wavesurfer)===null||t===void 0?void 0:t.getWrapper())===null||e===void 0?void 0:e.clientWidth)||0}calculateFrequenciesWithWorker(t){return N(this,void 0,void 0,function*(){var e,i;if(!this.worker)throw new Error("Worker not available");const s=this.fftSamples,r=((e=this.options.splitChannels)!==null&&e!==void 0?e:!((i=this.wavesurfer)===null||i===void 0)&&i.options.splitChannels)?t.numberOfChannels:1;let n=this.noverlap;if(!n){const a=this.getWidth(),d=t.length/a;n=Math.max(0,Math.round(s-d))}const l=[];for(let a=0;a<r;a++)l.push(t.getChannelData(a));const h=`${Date.now()}_${Math.random()}`,c=new Promise((a,d)=>{this.workerPromises.set(h,{resolve:a,reject:d}),setTimeout(()=>{this.workerPromises.has(h)&&(this.workerPromises.delete(h),d(new Error("Worker timeout")))},3e4)});return this.worker.postMessage({type:"calculateFrequencies",id:h,audioData:l,options:{startTime:0,endTime:t.duration,sampleRate:t.sampleRate,fftSamples:this.fftSamples,windowFunc:this.windowFunc,alpha:this.alpha,noverlap:n,scale:this.scale,gainDB:this.gainDB,rangeDB:this.rangeDB,splitChannels:this.options.splitChannels||!1}}),c})}getFrequencies(t){return N(this,void 0,void 0,function*(){var e,i;if(this.frequencyMax=this.frequencyMax||t.sampleRate/2,this.buffer=t,!t)return[];if(this.useWebWorker&&this.worker)try{return yield this.calculateFrequenciesWithWorker(t)}catch(g){console.warn("Worker calculation failed, falling back to main thread:",g)}const s=this.fftSamples,r=((e=this.options.splitChannels)!==null&&e!==void 0?e:!((i=this.wavesurfer)===null||i===void 0)&&i.options.splitChannels)?t.numberOfChannels:1,n=t.sampleRate,l=[];let h=this.noverlap;if(!h){const g=this.getWidth(),m=t.length/g;h=Math.max(0,Math.round(s-m))}let c=h||Math.max(0,Math.round(.5*s));const a=.5*s;c=Math.min(c,a);const d=Math.max(64,.25*s),u=Math.max(d,s-c),p=new ue(s,n,this.windowFunc,this.alpha),b=this.fftSamples/2,W=function(g,m,y,w){switch(g){case"mel":return K(m,y,w,yt,wt);case"logarithmic":return K(m,y,w,St,Wt);case"bark":return K(m,y,w,Ct,xt);case"erb":return K(m,y,w,Mt,Pt);default:return null}}(this.scale,b,this.fftSamples,n);for(let g=0;g<r;g++){const m=t.getChannelData(g),y=[];for(let w=0;w+s<m.length;w+=u){const v=m.slice(w,w+s);let f=p.calculateSpectrum(v);W&&(f=oe(f,W));const S=new Uint8Array(f.length),x=this.gainDB+this.rangeDB;for(let C=0;C<f.length;C++){const M=f[C]>1e-12?f[C]:1e-12,E=20*Math.log10(M);E<-x?S[C]=0:E>-this.gainDB?S[C]=255:S[C]=Math.round((E+this.gainDB)/this.rangeDB*255)}y.push(S)}l.push(y)}return l})}loadLabels(t,e,i,s,r,n,l,h,c){t=t||"rgba(68,68,68,0)",e=e||"12px",i=i||"12px",s=s||"Helvetica",r=r||"#fff",n=n||"#fff",l=l||"center";const a=this.height||512,d=a/256*5;this.frequencyMin,this.frequencyMax;const u=this.labelsEl.getContext("2d"),p=window.devicePixelRatio;if(this.labelsEl.height=this.height*c*p,this.labelsEl.width=55*p,u.scale(p,p),u)for(let b=0;b<c;b++){let W;for(u.fillStyle=t,u.fillRect(0,b*a,55,(1+b)*a),u.fill(),W=0;W<=d;W++){u.textAlign=l,u.textBaseline="middle";const g=ce(W,d,this.frequencyMin,this.frequencyMax,this.scale),m=le(g),y=he(g),w=16;let v=(1+b)*a-W/d*a;v=Math.min(Math.max(v,b*a+10),(1+b)*a-10),u.fillStyle=n,u.font=i+" "+s,u.fillText(y,w+24,v),u.fillStyle=r,u.font=e+" "+s,u.fillText(m,w,v)}}}efficientResample(t,e){return t.map(i=>this.resampleChannel(i,e))}resampleChannel(t,e){var i;const s=t.length,r=((i=t[0])===null||i===void 0?void 0:i.length)||0;if(s===e||e===0)return t;const n=s/e,l=new Array(e);if(n>=1)for(let h=0;h<e;h++){const c=Math.floor(h*n),a=Math.min(Math.ceil((h+1)*n),s),d=a-c,u=new Uint8Array(r);if(d===1)u.set(t[c]);else for(let p=0;p<r;p++){let b=0;for(let W=c;W<a;W++)b+=t[W][p];u[p]=Math.round(b/d)}l[h]=u}else for(let h=0;h<e;h++){const c=h*n,a=Math.floor(c),d=Math.min(a+1,s-1),u=c-a,p=new Uint8Array(r);if(u===0||a===d)p.set(t[a]);else{const b=t[a],W=t[d],g=1-u;for(let m=0;m<r;m++)p[m]=Math.round(b[m]*g+W[m]*u)}l[h]=p}return l}fillImageDataQuality(t,e,i,s){const r=this.colorMap;for(let n=0;n<i;n++){const l=e[n];for(let h=0;h<s;h++){const c=r[l[h]],a=4*((s-h-1)*i+n);t[a]=255*c[0],t[a+1]=255*c[1],t[a+2]=255*c[2],t[a+3]=255*c[3]}}}}R.MAX_CANVAS_WIDTH=3e4,R.MAX_NODES=10;const we=({waveSurfer:o,spectrogramOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(R,t);return P.onMounted(()=>{o.value&&i(o.value)}),{spectrogramPlugin:e}},Se=({containerRef:o,options:t,spectrogramOptions:e={}})=>z(R,{containerRef:o,options:t,pluginOptions:e});let We=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},Ce=class extends We{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function Lt(o,t){const e=t.xmlns?document.createElementNS(t.xmlns,o):document.createElement(o);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[r,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(Lt(r,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function et(o,t,e){const i=Lt(o,t||{});return e?.appendChild(i),i}const xe={lineWidth:1,labelSize:11,labelPreferLeft:!1,formatTimeCallback:o=>`${Math.floor(o/60)}:${`0${Math.floor(o)%60}`.slice(-2)}`};let Tt=class Dt extends Ce{constructor(t){super(t||{}),this.lastPointerMove=null,this.unsubscribe=()=>{},this.onPointerMove=e=>{if(!this.wavesurfer)return;this.lastPointerMove=e;const i=this.wavesurfer.getWrapper().getBoundingClientRect(),{width:s}=i,r=e.clientX-i.left,n=Math.min(1,Math.max(0,r/s)),l=Math.min(s-this.options.lineWidth-1,r);this.wrapper.style.transform=`translateX(${l}px)`,this.wrapper.style.opacity="1";const h=this.wavesurfer.getDuration()||0;this.label.textContent=this.options.formatTimeCallback(h*n);const c=this.label.offsetWidth,a=this.options.labelPreferLeft?l-c>0:l+c>s;this.label.style.transform=a?`translateX(-${c+this.options.lineWidth}px)`:"",this.emit("hover",n)},this.onPointerLeave=()=>{this.wrapper.style.opacity="0",this.lastPointerMove=null},this.options=Object.assign({},xe,t),this.wrapper=et("div",{part:"hover"}),this.label=et("span",{part:"hover-label"},this.wrapper)}static create(t){return new Dt(t)}addUnits(t){return`${t}${typeof t=="number"?"px":""}`}onInit(){if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");const t=this.wavesurfer.options,e=this.options.lineColor||t.cursorColor||t.progressColor;Object.assign(this.wrapper.style,{position:"absolute",zIndex:10,left:0,top:0,height:"100%",pointerEvents:"none",borderLeft:`${this.addUnits(this.options.lineWidth)} solid ${e}`,opacity:"0",transition:"opacity .1s ease-in"}),Object.assign(this.label.style,{display:"block",backgroundColor:this.options.labelBackground,color:this.options.labelColor,fontSize:`${this.addUnits(this.options.labelSize)}`,transition:"transform .1s ease-in",padding:"2px 3px"});const i=this.wavesurfer.getWrapper();i.appendChild(this.wrapper),i.addEventListener("pointermove",this.onPointerMove),i.addEventListener("pointerleave",this.onPointerLeave);const s=()=>{this.lastPointerMove&&this.onPointerMove(this.lastPointerMove)};this.wavesurfer.on("zoom",s),this.wavesurfer.on("scroll",s),this.unsubscribe=()=>{var r,n;i.removeEventListener("pointermove",this.onPointerMove),i.removeEventListener("pointerleave",this.onPointerLeave),(r=this.wavesurfer)===null||r===void 0||r.un("zoom",s),(n=this.wavesurfer)===null||n===void 0||n.un("scroll",s)}}destroy(){super.destroy(),this.unsubscribe(),this.wrapper.remove()}};const Me=({waveSurfer:o,hoverOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(Tt,t);return P.onMounted(()=>{o.value&&i(o.value)}),{hoverPlugin:e}},Pe=({containerRef:o,options:t,hoverOptions:e={}})=>z(Tt,{containerRef:o,options:t,pluginOptions:e});class Rt{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}}class Ee extends Rt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}}function A(o,t,e,i,s=3,r=0,n=100){if(!o)return()=>{};const l=matchMedia("(pointer: coarse)").matches;let h=()=>{};const c=a=>{if(a.button!==r)return;a.preventDefault(),a.stopPropagation();let d=a.clientX,u=a.clientY,p=!1;const b=Date.now(),W=v=>{if(v.preventDefault(),v.stopPropagation(),l&&Date.now()-b<n)return;const f=v.clientX,S=v.clientY,x=f-d,C=S-u;if(p||Math.abs(x)>s||Math.abs(C)>s){const M=o.getBoundingClientRect(),{left:E,top:T}=M;p||(e?.(d-E,u-T),p=!0),t(x,C,f-E,S-T),d=f,u=S}},g=v=>{if(p){const f=v.clientX,S=v.clientY,x=o.getBoundingClientRect(),{left:C,top:M}=x;i?.(f-C,S-M)}h()},m=v=>{v.relatedTarget&&v.relatedTarget!==document.documentElement||g(v)},y=v=>{p&&(v.stopPropagation(),v.preventDefault())},w=v=>{p&&v.preventDefault()};document.addEventListener("pointermove",W),document.addEventListener("pointerup",g),document.addEventListener("pointerout",m),document.addEventListener("pointercancel",m),document.addEventListener("touchmove",w,{passive:!1}),document.addEventListener("click",y,{capture:!0}),h=()=>{document.removeEventListener("pointermove",W),document.removeEventListener("pointerup",g),document.removeEventListener("pointerout",m),document.removeEventListener("pointercancel",m),document.removeEventListener("touchmove",w),setTimeout(()=>{document.removeEventListener("click",y,{capture:!0})},10)}};return o.addEventListener("pointerdown",c),()=>{h(),o.removeEventListener("pointerdown",c)}}function Zt(o,t){const e=t.xmlns?document.createElementNS(t.xmlns,o):document.createElement(o);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[r,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(Zt(r,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function O(o,t,e){const i=Zt(o,t||{});return e?.appendChild(i),i}class it extends Rt{constructor(t,e,i=0){var s,r,n,l,h,c,a,d,u,p;super(),this.totalDuration=e,this.numberOfChannels=i,this.element=null,this.minLength=0,this.maxLength=1/0,this.contentEditable=!1,this.subscriptions=[],this.isRemoved=!1,this.subscriptions=[],this.id=t.id||`region-${Math.random().toString(32).slice(2)}`,this.start=this.clampPosition(t.start),this.end=this.clampPosition((s=t.end)!==null&&s!==void 0?s:t.start),this.drag=(r=t.drag)===null||r===void 0||r,this.resize=(n=t.resize)===null||n===void 0||n,this.resizeStart=(l=t.resizeStart)===null||l===void 0||l,this.resizeEnd=(h=t.resizeEnd)===null||h===void 0||h,this.color=(c=t.color)!==null&&c!==void 0?c:"rgba(0, 0, 0, 0.1)",this.minLength=(a=t.minLength)!==null&&a!==void 0?a:this.minLength,this.maxLength=(d=t.maxLength)!==null&&d!==void 0?d:this.maxLength,this.channelIdx=(u=t.channelIdx)!==null&&u!==void 0?u:-1,this.contentEditable=(p=t.contentEditable)!==null&&p!==void 0?p:this.contentEditable,this.element=this.initElement(),this.setContent(t.content),this.setPart(),this.renderPosition(),this.initMouseEvents()}clampPosition(t){return Math.max(0,Math.min(this.totalDuration,t))}setPart(){var t;const e=this.start===this.end;(t=this.element)===null||t===void 0||t.setAttribute("part",`${e?"marker":"region"} ${this.id}`)}addResizeHandles(t){const e={position:"absolute",zIndex:"2",width:"6px",height:"100%",top:"0",cursor:"ew-resize",wordBreak:"keep-all"},i=O("div",{part:"region-handle region-handle-left",style:Object.assign(Object.assign({},e),{left:"0",borderLeft:"2px solid rgba(0, 0, 0, 0.5)",borderRadius:"2px 0 0 2px"})},t),s=O("div",{part:"region-handle region-handle-right",style:Object.assign(Object.assign({},e),{right:"0",borderRight:"2px solid rgba(0, 0, 0, 0.5)",borderRadius:"0 2px 2px 0"})},t);this.subscriptions.push(A(i,r=>this.onResize(r,"start"),()=>null,()=>this.onEndResizing(),1),A(s,r=>this.onResize(r,"end"),()=>null,()=>this.onEndResizing(),1))}removeResizeHandles(t){const e=t.querySelector('[part*="region-handle-left"]'),i=t.querySelector('[part*="region-handle-right"]');e&&t.removeChild(e),i&&t.removeChild(i)}initElement(){if(this.isRemoved)return null;const t=this.start===this.end;let e=0,i=100;this.channelIdx>=0&&this.channelIdx<this.numberOfChannels&&(i=100/this.numberOfChannels,e=i*this.channelIdx);const s=O("div",{style:{position:"absolute",top:`${e}%`,height:`${i}%`,backgroundColor:t?"none":this.color,borderLeft:t?"2px solid "+this.color:"none",borderRadius:"2px",boxSizing:"border-box",transition:"background-color 0.2s ease",cursor:this.drag?"grab":"default",pointerEvents:"all"}});return!t&&this.resize&&this.addResizeHandles(s),s}renderPosition(){if(!this.element)return;const t=this.start/this.totalDuration,e=(this.totalDuration-this.end)/this.totalDuration;this.element.style.left=100*t+"%",this.element.style.right=100*e+"%"}toggleCursor(t){var e;this.drag&&(!((e=this.element)===null||e===void 0)&&e.style)&&(this.element.style.cursor=t?"grabbing":"grab")}initMouseEvents(){const{element:t}=this;t&&(t.addEventListener("click",e=>this.emit("click",e)),t.addEventListener("mouseenter",e=>this.emit("over",e)),t.addEventListener("mouseleave",e=>this.emit("leave",e)),t.addEventListener("dblclick",e=>this.emit("dblclick",e)),t.addEventListener("pointerdown",()=>this.toggleCursor(!0)),t.addEventListener("pointerup",()=>this.toggleCursor(!1)),this.subscriptions.push(A(t,e=>this.onMove(e),()=>this.toggleCursor(!0),()=>{this.toggleCursor(!1),this.drag&&this.emit("update-end")})),this.contentEditable&&this.content&&(this.content.addEventListener("click",e=>this.onContentClick(e)),this.content.addEventListener("blur",()=>this.onContentBlur())))}_onUpdate(t,e){var i;if(!(!((i=this.element)===null||i===void 0)&&i.parentElement))return;const{width:s}=this.element.parentElement.getBoundingClientRect(),r=t/s*this.totalDuration,n=e&&e!=="start"?this.start:this.start+r,l=e&&e!=="end"?this.end:this.end+r,h=l-n;n>=0&&l<=this.totalDuration&&n<=l&&h>=this.minLength&&h<=this.maxLength&&(this.start=n,this.end=l,this.renderPosition(),this.emit("update",e))}onMove(t){this.drag&&this._onUpdate(t)}onResize(t,e){this.resize&&(this.resizeStart||e!=="start")&&(this.resizeEnd||e!=="end")&&this._onUpdate(t,e)}onEndResizing(){this.resize&&this.emit("update-end")}onContentClick(t){t.stopPropagation(),t.target.focus(),this.emit("click",t)}onContentBlur(){this.emit("update-end")}_setTotalDuration(t){this.totalDuration=t,this.renderPosition()}play(t){this.emit("play",t&&this.end!==this.start?this.end:void 0)}getContent(t=!1){var e;return t?this.content||void 0:this.element instanceof HTMLElement?((e=this.content)===null||e===void 0?void 0:e.innerHTML)||void 0:""}setContent(t){var e;if(this.element)if((e=this.content)===null||e===void 0||e.remove(),t){if(typeof t=="string"){const i=this.start===this.end;this.content=O("div",{style:{padding:`0.2em ${i?.2:.4}em`,display:"inline-block"},textContent:t})}else this.content=t;this.contentEditable&&(this.content.contentEditable="true"),this.content.setAttribute("part","region-content"),this.element.appendChild(this.content),this.emit("content-changed")}else this.content=void 0}setOptions(t){var e,i;if(this.element){if(t.color&&(this.color=t.color,this.element.style.backgroundColor=this.color),t.drag!==void 0&&(this.drag=t.drag,this.element.style.cursor=this.drag?"grab":"default"),t.start!==void 0||t.end!==void 0){const s=this.start===this.end;this.start=this.clampPosition((e=t.start)!==null&&e!==void 0?e:this.start),this.end=this.clampPosition((i=t.end)!==null&&i!==void 0?i:s?this.start:this.end),this.renderPosition(),this.setPart()}if(t.content&&this.setContent(t.content),t.id&&(this.id=t.id,this.setPart()),t.resize!==void 0&&t.resize!==this.resize){const s=this.start===this.end;this.resize=t.resize,this.resize&&!s?this.addResizeHandles(this.element):this.removeResizeHandles(this.element)}t.resizeStart!==void 0&&(this.resizeStart=t.resizeStart),t.resizeEnd!==void 0&&(this.resizeEnd=t.resizeEnd)}}remove(){this.isRemoved=!0,this.emit("remove"),this.subscriptions.forEach(t=>t()),this.element&&(this.element.remove(),this.element=null)}}class U extends Ee{constructor(t){super(t),this.regions=[],this.regionsContainer=this.initRegionsContainer()}static create(t){return new U(t)}onInit(){if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");this.wavesurfer.getWrapper().appendChild(this.regionsContainer);let t=[];this.subscriptions.push(this.wavesurfer.on("timeupdate",e=>{const i=this.regions.filter(s=>s.start<=e&&(s.end===s.start?s.start+.05:s.end)>=e);i.forEach(s=>{t.includes(s)||this.emit("region-in",s)}),t.forEach(s=>{i.includes(s)||this.emit("region-out",s)}),t=i}))}initRegionsContainer(){return O("div",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",zIndex:"5",pointerEvents:"none"}})}getRegions(){return this.regions}avoidOverlapping(t){t.content&&setTimeout(()=>{const e=t.content,i=e.getBoundingClientRect(),s=this.regions.map(r=>{if(r===t||!r.content)return 0;const n=r.content.getBoundingClientRect();return i.left<n.left+n.width&&n.left<i.left+i.width?n.height:0}).reduce((r,n)=>r+n,0);e.style.marginTop=`${s}px`},10)}adjustScroll(t){var e,i;if(!t.element)return;const s=(i=(e=this.wavesurfer)===null||e===void 0?void 0:e.getWrapper())===null||i===void 0?void 0:i.parentElement;if(!s)return;const{clientWidth:r,scrollWidth:n}=s;if(n<=r)return;const l=s.getBoundingClientRect(),h=t.element.getBoundingClientRect(),c=h.left-l.left,a=h.right-l.left;c<0?s.scrollLeft+=c:a>r&&(s.scrollLeft+=a-r)}virtualAppend(t,e,i){const s=()=>{if(!this.wavesurfer)return;const r=this.wavesurfer.getWidth(),n=this.wavesurfer.getScroll(),l=e.clientWidth,h=this.wavesurfer.getDuration(),c=Math.round(t.start/h*l),a=c+(Math.round((t.end-t.start)/h*l)||1)>n&&c<n+r;a&&!i.parentElement?e.appendChild(i):!a&&i.parentElement&&i.remove()};setTimeout(()=>{if(!this.wavesurfer||!t.element)return;s();const r=this.wavesurfer.on("scroll",s),n=this.wavesurfer.on("zoom",s);this.subscriptions.push(t.once("remove",r),r),this.subscriptions.push(t.once("remove",n),n)},0)}saveRegion(t){if(!t.element)return;this.virtualAppend(t,this.regionsContainer,t.element),this.avoidOverlapping(t),this.regions.push(t);const e=[t.on("update",i=>{i||this.adjustScroll(t),this.emit("region-update",t,i)}),t.on("update-end",()=>{this.avoidOverlapping(t),this.emit("region-updated",t)}),t.on("play",i=>{var s;(s=this.wavesurfer)===null||s===void 0||s.play(t.start,i)}),t.on("click",i=>{this.emit("region-clicked",t,i)}),t.on("dblclick",i=>{this.emit("region-double-clicked",t,i)}),t.on("content-changed",()=>{this.emit("region-content-changed",t)}),t.once("remove",()=>{e.forEach(i=>i()),this.regions=this.regions.filter(i=>i!==t),this.emit("region-removed",t)})];this.subscriptions.push(...e),this.emit("region-created",t)}addRegion(t){var e,i;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");const s=this.wavesurfer.getDuration(),r=(i=(e=this.wavesurfer)===null||e===void 0?void 0:e.getDecodedData())===null||i===void 0?void 0:i.numberOfChannels,n=new it(t,s,r);return this.emit("region-initialized",n),s?this.saveRegion(n):this.subscriptions.push(this.wavesurfer.once("ready",l=>{n._setTotalDuration(l),this.saveRegion(n)})),n}enableDragSelection(t,e=3){var i;const s=(i=this.wavesurfer)===null||i===void 0?void 0:i.getWrapper();if(!(s&&s instanceof HTMLElement))return()=>{};let r=null,n=0;return A(s,(l,h,c)=>{r&&r._onUpdate(l,c>n?"end":"start")},l=>{var h,c;if(n=l,!this.wavesurfer)return;const a=this.wavesurfer.getDuration(),d=(c=(h=this.wavesurfer)===null||h===void 0?void 0:h.getDecodedData())===null||c===void 0?void 0:c.numberOfChannels,{width:u}=this.wavesurfer.getWrapper().getBoundingClientRect(),p=l/u*a,b=(l+5)/u*a;r=new it(Object.assign(Object.assign({},t),{start:p,end:b}),a,d),this.emit("region-initialized",r),r.element&&this.regionsContainer.appendChild(r.element)},()=>{r&&(this.saveRegion(r),r=null)},e)}clearRegions(){this.regions.slice().forEach(t=>t.remove()),this.regions=[]}destroy(){this.clearRegions(),super.destroy(),this.regionsContainer.remove()}}const ke=({waveSurfer:o,regionsOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(U,t);return P.onMounted(()=>{o.value&&i(o.value)}),{regionsPlugin:e}},Le=({containerRef:o,options:t,regionsOptions:e={}})=>z(U,{containerRef:o,options:t,pluginOptions:e});exports.WaveSurferPlayer=Xt;exports.useWaveSurfer=st;exports.useWaveSurferEnvelope=ne;exports.useWaveSurferEnvelopeStandalone=re;exports.useWaveSurferHover=Me;exports.useWaveSurferHoverStandalone=Pe;exports.useWaveSurferInstance=J;exports.useWaveSurferMinimap=te;exports.useWaveSurferMinimapStandalone=ee;exports.useWaveSurferPlugin=I;exports.useWaveSurferPluginStandalone=z;exports.useWaveSurferRegions=ke;exports.useWaveSurferRegionsStandalone=Le;exports.useWaveSurferSpectrogram=we;exports.useWaveSurferSpectrogramStandalone=Se;exports.useWaveSurferTimeline=Vt;exports.useWaveSurferTimelineStandalone=Kt;exports.useWaveSurferZoom=Ut;exports.useWaveSurferZoomStandalone=Bt;
|
|
73
|
+
`,[t,e]}setOptions(t){if(this.options.container!==t.container){const e=this.parentFromOptionsContainer(t.container);e.appendChild(this.container),this.parent=e}t.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=t,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(t){this.scrollContainer.scrollLeft=t}setScrollPercentage(t){const{scrollWidth:e}=this.scrollContainer,i=e*t;this.setScroll(i)}destroy(){var t,e;this.subscriptions.forEach(i=>i()),this.container.remove(),(t=this.resizeObserver)===null||t===void 0||t.disconnect(),(e=this.unsubscribeOnScroll)===null||e===void 0||e.forEach(i=>i()),this.unsubscribeOnScroll=[]}createDelay(t=10){let e,i;const s=()=>{e&&clearTimeout(e),i&&i()};return this.timeouts.push(s),()=>new Promise((o,n)=>{s(),i=n,e=setTimeout(()=>{e=void 0,i=void 0,o()},t)})}convertColorValues(t){if(!Array.isArray(t))return t||"";if(t.length<2)return t[0]||"";const e=document.createElement("canvas"),i=e.getContext("2d"),s=e.height*(window.devicePixelRatio||1),o=i.createLinearGradient(0,0,0,s),n=1/(t.length-1);return t.forEach((l,h)=>{const c=h*n;o.addColorStop(c,l)}),o}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(t,e,i,s){const o=t[0],n=t[1]||t[0],l=o.length,{width:h,height:c}=i.canvas,a=c/2,u=this.getPixelRatio(),d=e.barWidth?e.barWidth*u:1,p=e.barGap?e.barGap*u:e.barWidth?d/2:0,g=e.barRadius||0,y=h/(d+p)/l,f=g&&"roundRect"in i?"roundRect":"rect";i.beginPath();let m=0,w=0,W=0;for(let v=0;v<=l;v++){const b=Math.round(v*y);if(b>m){const M=Math.round(w*a*s),P=M+Math.round(W*a*s)||1;let E=a-M;e.barAlign==="top"?E=0:e.barAlign==="bottom"&&(E=c-P),i[f](m*(d+p),E,d,P,g),m=b,w=0,W=0}const S=Math.abs(o[v]||0),x=Math.abs(n[v]||0);S>w&&(w=S),x>W&&(W=x)}i.fill(),i.closePath()}renderLineWaveform(t,e,i,s){const o=n=>{const l=t[n]||t[0],h=l.length,{height:c}=i.canvas,a=c/2,u=i.canvas.width/h;i.moveTo(0,a);let d=0,p=0;for(let g=0;g<=h;g++){const y=Math.round(g*u);if(y>d){const m=a+(Math.round(p*a*s)||1)*(n===0?-1:1);i.lineTo(d,m),d=y,p=0}const f=Math.abs(l[g]||0);f>p&&(p=f)}i.lineTo(d,a)};i.beginPath(),o(0),o(1),i.fill(),i.closePath()}renderWaveform(t,e,i){if(i.fillStyle=this.convertColorValues(e.waveColor),e.renderFunction)return void e.renderFunction(t,i);let s=e.barHeight||1;if(e.normalize){const o=Array.from(t[0]).reduce((n,l)=>Math.max(n,Math.abs(l)),0);s=o?1/o:1}e.barWidth||e.barGap||e.barAlign?this.renderBarWaveform(t,e,i,s):this.renderLineWaveform(t,e,i,s)}renderSingleCanvas(t,e,i,s,o,n,l){const h=this.getPixelRatio(),c=document.createElement("canvas");c.width=Math.round(i*h),c.height=Math.round(s*h),c.style.width=`${i}px`,c.style.height=`${s}px`,c.style.left=`${Math.round(o)}px`,n.appendChild(c);const a=c.getContext("2d");if(this.renderWaveform(t,e,a),c.width>0&&c.height>0){const u=c.cloneNode(),d=u.getContext("2d");d.drawImage(c,0,0),d.globalCompositeOperation="source-in",d.fillStyle=this.convertColorValues(e.progressColor),d.fillRect(0,0,c.width,c.height),l.appendChild(u)}}renderMultiCanvas(t,e,i,s,o,n){const l=this.getPixelRatio(),{clientWidth:h}=this.scrollContainer,c=i/l;let a=Math.min(_.MAX_CANVAS_WIDTH,h,c),u={};if(e.barWidth||e.barGap){const f=e.barWidth||.5,m=f+(e.barGap||f/2);a%m!=0&&(a=Math.floor(a/m)*m)}if(a===0)return;const d=f=>{if(f<0||f>=p||u[f])return;u[f]=!0;const m=f*a;let w=Math.min(c-m,a);if(e.barWidth||e.barGap){const v=e.barWidth||.5,b=v+(e.barGap||v/2);w=Math.floor(w/b)*b}if(w<=0)return;const W=t.map(v=>{const b=Math.floor(m/c*v.length),S=Math.floor((m+w)/c*v.length);return v.slice(b,S)});this.renderSingleCanvas(W,e,w,s,m,o,n)},p=Math.ceil(c/a);if(!this.isScrollable){for(let f=0;f<p;f++)d(f);return}const g=this.scrollContainer.scrollLeft/c,y=Math.floor(g*p);if(d(y-1),d(y),d(y+1),p>1){const f=this.on("scroll",()=>{const{scrollLeft:m}=this.scrollContainer,w=Math.floor(m/c*p);Object.keys(u).length>_.MAX_NODES&&(o.innerHTML="",n.innerHTML="",u={}),d(w-1),d(w),d(w+1)});this.unsubscribeOnScroll.push(f)}}renderChannel(t,e,i,s){var{overlay:o}=e,n=function(a,u){var d={};for(var p in a)Object.prototype.hasOwnProperty.call(a,p)&&u.indexOf(p)<0&&(d[p]=a[p]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function"){var g=0;for(p=Object.getOwnPropertySymbols(a);g<p.length;g++)u.indexOf(p[g])<0&&Object.prototype.propertyIsEnumerable.call(a,p[g])&&(d[p[g]]=a[p[g]])}return d}(e,["overlay"]);const l=document.createElement("div"),h=this.getHeight(n.height,n.splitChannels);l.style.height=`${h}px`,o&&s>0&&(l.style.marginTop=`-${h}px`),this.canvasWrapper.style.minHeight=`${h}px`,this.canvasWrapper.appendChild(l);const c=l.cloneNode();this.progressWrapper.appendChild(c),this.renderMultiCanvas(t,n,i,h,l,c)}render(t){return k(this,void 0,void 0,function*(){var e;this.timeouts.forEach(h=>h()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);const i=this.getPixelRatio(),s=this.scrollContainer.clientWidth,o=Math.ceil(t.duration*(this.options.minPxPerSec||0));this.isScrollable=o>s;const n=this.options.fillParent&&!this.isScrollable,l=(n?s:o)*i;if(this.wrapper.style.width=n?"100%":`${o}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=t,this.emit("render"),this.options.splitChannels)for(let h=0;h<t.numberOfChannels;h++){const c=Object.assign(Object.assign({},this.options),(e=this.options.splitChannels)===null||e===void 0?void 0:e[h]);this.renderChannel([t.getChannelData(h)],c,l,h)}else{const h=[t.getChannelData(0)];t.numberOfChannels>1&&h.push(t.getChannelData(1)),this.renderChannel(h,this.options,l,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(i=>i()),this.unsubscribeOnScroll=[],!this.audioData)return;const{scrollWidth:t}=this.scrollContainer,{right:e}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&t!==this.scrollContainer.scrollWidth){const{right:i}=this.progressWrapper.getBoundingClientRect();let s=i-e;s*=2,s=s<0?Math.floor(s):Math.ceil(s),s/=2,this.scrollContainer.scrollLeft+=s}}zoom(t){this.options.minPxPerSec=t,this.reRender()}scrollIntoView(t,e=!1){const{scrollLeft:i,scrollWidth:s,clientWidth:o}=this.scrollContainer,n=t*s,l=i,h=i+o,c=o/2;if(this.isDragging)n+30>h?this.scrollContainer.scrollLeft+=30:n-30<l&&(this.scrollContainer.scrollLeft-=30);else{(n<l||n>h)&&(this.scrollContainer.scrollLeft=n-(this.options.autoCenter?c:0));const a=n-i-c;e&&this.options.autoCenter&&a>0&&(this.scrollContainer.scrollLeft+=Math.min(a,10))}{const a=this.scrollContainer.scrollLeft,u=a/s,d=(a+o)/s;this.emit("scroll",u,d,a,a+o)}}renderProgress(t,e){if(isNaN(t))return;const i=100*t;this.canvasWrapper.style.clipPath=`polygon(${i}% 0%, 100% 0%, 100% 100%, ${i}% 100%)`,this.progressWrapper.style.width=`${i}%`,this.cursor.style.left=`${i}%`,this.cursor.style.transform=this.options.cursorWidth?`translateX(-${t*this.options.cursorWidth}px)`:"",this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(t,e)}exportImage(t,e,i){return k(this,void 0,void 0,function*(){const s=this.canvasWrapper.querySelectorAll("canvas");if(!s.length)throw new Error("No waveform data");if(i==="dataURL"){const o=Array.from(s).map(n=>n.toDataURL(t,e));return Promise.resolve(o)}return Promise.all(Array.from(s).map(o=>new Promise((n,l)=>{o.toBlob(h=>{h?n(h):l(new Error("Could not export image"))},t,e)})))})}};Q.MAX_CANVAS_WIDTH=8e3,Q.MAX_NODES=10;let ie=class extends A{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}},H=class extends A{constructor(t=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=t,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return k(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(t){if(this.currentSrc=t,this._duration=void 0,!t)return this.buffer=null,void this.emit("emptied");fetch(t).then(e=>{if(e.status>=400)throw new Error(`Failed to fetch ${t}: ${e.status} (${e.statusText})`);return e.arrayBuffer()}).then(e=>this.currentSrc!==t?null:this.audioContext.decodeAudioData(e)).then(e=>{this.currentSrc===t&&(this.buffer=e,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())})}_play(){var t;if(!this.paused)return;this.paused=!1,(t=this.bufferNode)===null||t===void 0||t.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let e=this.playedDuration*this._playbackRate;(e>=this.duration||e<0)&&(e=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,e),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var t;this.paused=!0,(t=this.bufferNode)===null||t===void 0||t.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return k(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(t){const e=t-this.currentTime,i=this.bufferNode;i?.stop(this.audioContext.currentTime+e),i?.addEventListener("ended",()=>{i===this.bufferNode&&(this.bufferNode=null,this.pause())},{once:!0})}setSinkId(t){return k(this,void 0,void 0,function*(){return this.audioContext.setSinkId(t)})}get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate=t,this.bufferNode&&(this.bufferNode.playbackRate.value=t)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(t){const e=!this.paused;e&&this._pause(),this.playedDuration=t/this._playbackRate,e&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var t,e;return(t=this._duration)!==null&&t!==void 0?t:((e=this.buffer)===null||e===void 0?void 0:e.duration)||0}set duration(t){this._duration=t}get volume(){return this.gainNode.gain.value}set volume(t){this.gainNode.gain.value=t,this.emit("volumechange")}get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(t){return/^(audio|video)\//.test(t)}getGainNode(){return this.gainNode}getChannelData(){const t=[];if(!this.buffer)return t;const e=this.buffer.numberOfChannels;for(let i=0;i<e;i++)t.push(this.buffer.getChannelData(i));return t}removeAttribute(t){switch(t){case"src":this.src="";break;case"playbackRate":this.playbackRate=0;break;case"currentTime":this.currentTime=0;break;case"duration":this.duration=0;break;case"volume":this.volume=0;break;case"muted":this.muted=!1}}};const se={waveColor:"#999",progressColor:"#555",cursorWidth:1,minPxPerSec:0,fillParent:!0,interact:!0,dragToSeek:!1,autoScroll:!0,autoCenter:!0,sampleRate:8e3};let J=class dt extends ee{static create(t){return new dt(t)}constructor(t){const e=t.media||(t.backend==="WebAudio"?new H:void 0);super({media:e,mediaControls:t.mediaControls,autoplay:t.autoplay,playbackRate:t.audioRate}),this.plugins=[],this.decodedData=null,this.stopAtPosition=null,this.subscriptions=[],this.mediaSubscriptions=[],this.abortController=null,this.options=Object.assign({},se,t),this.timer=new ie;const i=e?void 0:this.getMediaElement();this.renderer=new Q(this.options,i),this.initPlayerEvents(),this.initRendererEvents(),this.initTimerEvents(),this.initPlugins();const s=this.options.url||this.getSrc()||"";Promise.resolve().then(()=>{this.emit("init");const{peaks:o,duration:n}=this.options;(s||o&&n)&&this.load(s,o,n).catch(()=>null)})}updateProgress(t=this.getCurrentTime()){return this.renderer.renderProgress(t/this.getDuration(),this.isPlaying()),t}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){const t=this.updateProgress();this.emit("timeupdate",t),this.emit("audioprocess",t),this.stopAtPosition!=null&&this.isPlaying()&&t>=this.stopAtPosition&&this.pause()}}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{const t=this.updateProgress();this.emit("timeupdate",t)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("emptied",()=>{this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish"),this.stopAtPosition=null}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",()=>{var t;this.emit("error",(t=this.getMediaElement().error)!==null&&t!==void 0?t:new Error("Media error")),this.stopAtPosition=null}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(t,e)=>{this.options.interact&&(this.seekTo(t),this.emit("interaction",t*this.getDuration()),this.emit("click",t,e))}),this.renderer.on("dblclick",(t,e)=>{this.emit("dblclick",t,e)}),this.renderer.on("scroll",(t,e,i,s)=>{const o=this.getDuration();this.emit("scroll",t*o,e*o,i,s)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",t=>{this.emit("dragstart",t)}),this.renderer.on("dragend",t=>{this.emit("dragend",t)}));{let t;this.subscriptions.push(this.renderer.on("drag",e=>{if(!this.options.interact)return;let i;this.renderer.renderProgress(e),clearTimeout(t),this.isPlaying()?i=0:this.options.dragToSeek===!0?i=200:typeof this.options.dragToSeek=="object"&&this.options.dragToSeek!==void 0&&(i=this.options.dragToSeek.debounceTime),t=setTimeout(()=>{this.seekTo(e)},i),this.emit("interaction",e*this.getDuration()),this.emit("drag",e)}))}}initPlugins(){var t;!((t=this.options.plugins)===null||t===void 0)&&t.length&&this.options.plugins.forEach(e=>{this.registerPlugin(e)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(t=>t()),this.mediaSubscriptions=[]}setOptions(t){this.options=Object.assign({},this.options,t),t.duration&&!t.peaks&&(this.decodedData=Y.createBuffer(this.exportPeaks(),t.duration)),t.peaks&&t.duration&&(this.decodedData=Y.createBuffer(t.peaks,t.duration)),this.renderer.setOptions(this.options),t.audioRate&&this.setPlaybackRate(t.audioRate),t.mediaControls!=null&&(this.getMediaElement().controls=t.mediaControls)}registerPlugin(t){if(this.plugins.includes(t))return t;t._init(this),this.plugins.push(t);const e=t.once("destroy",()=>{this.plugins=this.plugins.filter(i=>i!==t),this.subscriptions=this.subscriptions.filter(i=>i!==e)});return this.subscriptions.push(e),t}unregisterPlugin(t){this.plugins=this.plugins.filter(e=>e!==t),t.destroy()}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(t){return this.renderer.setScroll(t)}setScrollTime(t){const e=t/this.getDuration();this.renderer.setScrollPercentage(e)}getActivePlugins(){return this.plugins}loadAudio(t,e,i,s){return k(this,void 0,void 0,function*(){var o;if(this.emit("load",t),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,this.stopAtPosition=null,!e&&!i){const l=this.options.fetchParams||{};window.AbortController&&!l.signal&&(this.abortController=new AbortController,l.signal=(o=this.abortController)===null||o===void 0?void 0:o.signal);const h=a=>this.emit("loading",a);e=yield te.fetchBlob(t,h,l);const c=this.options.blobMimeType;c&&(e=new Blob([e],{type:c}))}this.setSrc(t,e);const n=yield new Promise(l=>{const h=s||this.getDuration();h?l(h):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>l(this.getDuration()),{once:!0}))});if(!t&&!e){const l=this.getMediaElement();l instanceof H&&(l.duration=n)}if(i)this.decodedData=Y.createBuffer(i,n||0);else if(e){const l=yield e.arrayBuffer();this.decodedData=yield Y.decode(l,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(t,e,i){return k(this,void 0,void 0,function*(){try{return yield this.loadAudio(t,void 0,e,i)}catch(s){throw this.emit("error",s),s}})}loadBlob(t,e,i){return k(this,void 0,void 0,function*(){try{return yield this.loadAudio("",t,e,i)}catch(s){throw this.emit("error",s),s}})}zoom(t){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(t),this.emit("zoom",t)}getDecodedData(){return this.decodedData}exportPeaks({channels:t=2,maxLength:e=8e3,precision:i=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");const s=Math.min(t,this.decodedData.numberOfChannels),o=[];for(let n=0;n<s;n++){const l=this.decodedData.getChannelData(n),h=[],c=l.length/e;for(let a=0;a<e;a++){const u=l.slice(Math.floor(a*c),Math.ceil((a+1)*c));let d=0;for(let p=0;p<u.length;p++){const g=u[p];Math.abs(g)>Math.abs(d)&&(d=g)}h.push(Math.round(d*i)/i)}o.push(h)}return o}getDuration(){let t=super.getDuration()||0;return t!==0&&t!==1/0||!this.decodedData||(t=this.decodedData.duration),t}toggleInteraction(t){this.options.interact=t}setTime(t){this.stopAtPosition=null,super.setTime(t),this.updateProgress(t),this.emit("timeupdate",t)}seekTo(t){const e=this.getDuration()*t;this.setTime(e)}play(t,e){const i=Object.create(null,{play:{get:()=>super.play}});return k(this,void 0,void 0,function*(){t!=null&&this.setTime(t);const s=yield i.play.call(this);return e!=null&&(this.media instanceof H?this.media.stopAt(e):this.stopAtPosition=e),s})}playPause(){return k(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(t){this.setTime(this.getCurrentTime()+t)}empty(){this.load("",[[0]],.001)}setMediaElement(t){this.unsubscribePlayerEvents(),super.setMediaElement(t),this.initPlayerEvents()}exportImage(){return k(this,arguments,void 0,function*(t="image/png",e=1,i="dataURL"){return this.renderer.exportImage(t,e,i)})}destroy(){var t;this.emit("destroy"),(t=this.abortController)===null||t===void 0||t.abort(),this.plugins.forEach(e=>e.destroy()),this.subscriptions.forEach(e=>e()),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}};J.BasePlugin=ct,J.dom=Jt;const ne={height:50,overlayColor:"rgba(100, 100, 100, 0.1)",insertPosition:"afterend"};let pt=class mt extends ct{constructor(t){super(t),this.miniWavesurfer=null,this.container=null,this.options=Object.assign({},ne,t),this.minimapWrapper=this.initMinimapWrapper(),this.overlay=this.initOverlay()}static create(t){return new mt(t)}onInit(){var t,e;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");this.options.container?(typeof this.options.container=="string"?this.container=document.querySelector(this.options.container):this.options.container instanceof HTMLElement&&(this.container=this.options.container),(t=this.container)===null||t===void 0||t.appendChild(this.minimapWrapper)):(this.container=this.wavesurfer.getWrapper().parentElement,(e=this.container)===null||e===void 0||e.insertAdjacentElement(this.options.insertPosition,this.minimapWrapper)),this.initWaveSurferEvents(),Promise.resolve().then(()=>{this.initMinimap()})}initMinimapWrapper(){return F("div",{part:"minimap",style:{position:"relative"}})}initOverlay(){return F("div",{part:"minimap-overlay",style:{position:"absolute",zIndex:"2",left:"0",top:"0",bottom:"0",transition:"left 100ms ease-out",pointerEvents:"none",backgroundColor:this.options.overlayColor}},this.minimapWrapper)}initMinimap(){if(this.miniWavesurfer&&(this.miniWavesurfer.destroy(),this.miniWavesurfer=null),!this.wavesurfer)return;const t=this.wavesurfer.getDecodedData(),e=this.wavesurfer.getMediaElement();if(!t||!e)return;const i=[];for(let s=0;s<t.numberOfChannels;s++)i.push(t.getChannelData(s));this.miniWavesurfer=J.create(Object.assign(Object.assign({},this.options),{container:this.minimapWrapper,minPxPerSec:0,fillParent:!0,media:e,peaks:i,duration:t.duration})),this.subscriptions.push(this.miniWavesurfer.on("audioprocess",s=>{this.emit("audioprocess",s)}),this.miniWavesurfer.on("click",(s,o)=>{this.emit("click",s,o)}),this.miniWavesurfer.on("dblclick",(s,o)=>{this.emit("dblclick",s,o)}),this.miniWavesurfer.on("decode",s=>{this.emit("decode",s)}),this.miniWavesurfer.on("destroy",()=>{this.emit("destroy")}),this.miniWavesurfer.on("drag",s=>{this.emit("drag",s)}),this.miniWavesurfer.on("dragend",s=>{this.emit("dragend",s)}),this.miniWavesurfer.on("dragstart",s=>{this.emit("dragstart",s)}),this.miniWavesurfer.on("interaction",()=>{this.emit("interaction")}),this.miniWavesurfer.on("init",()=>{this.emit("init")}),this.miniWavesurfer.on("ready",()=>{this.emit("ready")}),this.miniWavesurfer.on("redraw",()=>{this.emit("redraw")}),this.miniWavesurfer.on("redrawcomplete",()=>{this.emit("redrawcomplete")}),this.miniWavesurfer.on("seeking",s=>{this.emit("seeking",s)}),this.miniWavesurfer.on("timeupdate",s=>{this.emit("timeupdate",s)}))}getOverlayWidth(){var t;const e=((t=this.wavesurfer)===null||t===void 0?void 0:t.getWrapper().clientWidth)||1;return Math.round(this.minimapWrapper.clientWidth/e*100)}onRedraw(){const t=this.getOverlayWidth();this.overlay.style.width=`${t}%`}onScroll(t){if(!this.wavesurfer)return;const e=this.wavesurfer.getDuration();this.overlay.style.left=t/e*100+"%"}initWaveSurferEvents(){this.wavesurfer&&this.subscriptions.push(this.wavesurfer.on("decode",()=>{this.initMinimap()}),this.wavesurfer.on("scroll",t=>{this.onScroll(t)}),this.wavesurfer.on("redraw",()=>{this.onRedraw()}))}destroy(){var t;(t=this.miniWavesurfer)===null||t===void 0||t.destroy(),this.minimapWrapper.remove(),super.destroy()}};const re=({waveSurfer:r,minimapOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(pt,t);return C.onMounted(()=>{r.value&&i(r.value)}),{minimapPlugin:e}},oe=({containerRef:r,options:t,minimapOptions:e={}})=>z(pt,{containerRef:r,options:t,pluginOptions:e});let vt=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},ae=class extends vt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function et(r,t,e,i,s=3,o=0,n=100){if(!r)return()=>{};const l=matchMedia("(pointer: coarse)").matches;let h=()=>{};const c=a=>{if(a.button!==o)return;a.preventDefault(),a.stopPropagation();let u=a.clientX,d=a.clientY,p=!1;const g=Date.now(),y=v=>{if(v.preventDefault(),v.stopPropagation(),l&&Date.now()-g<n)return;const b=v.clientX,S=v.clientY,x=b-u,M=S-d;if(p||Math.abs(x)>s||Math.abs(M)>s){const P=r.getBoundingClientRect(),{left:E,top:L}=P;p||(e?.(u-E,d-L),p=!0),t(x,M,b-E,S-L),u=b,d=S}},f=v=>{if(p){const b=v.clientX,S=v.clientY,x=r.getBoundingClientRect(),{left:M,top:P}=x;i?.(b-M,S-P)}h()},m=v=>{v.relatedTarget&&v.relatedTarget!==document.documentElement||f(v)},w=v=>{p&&(v.stopPropagation(),v.preventDefault())},W=v=>{p&&v.preventDefault()};document.addEventListener("pointermove",y),document.addEventListener("pointerup",f),document.addEventListener("pointerout",m),document.addEventListener("pointercancel",m),document.addEventListener("touchmove",W,{passive:!1}),document.addEventListener("click",w,{capture:!0}),h=()=>{document.removeEventListener("pointermove",y),document.removeEventListener("pointerup",f),document.removeEventListener("pointerout",m),document.removeEventListener("pointercancel",m),document.removeEventListener("touchmove",W),setTimeout(()=>{document.removeEventListener("click",w,{capture:!0})},10)}};return r.addEventListener("pointerdown",c),()=>{h(),r.removeEventListener("pointerdown",c)}}function ft(r,t){const e=t.xmlns?document.createElementNS(t.xmlns,r):document.createElement(r);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[o,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(ft(o,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function $(r,t,e){const i=ft(r,t||{});return e?.appendChild(i),i}const G={points:[],lineWidth:4,lineColor:"rgba(0, 0, 255, 0.5)",dragPointSize:10,dragPointFill:"rgba(255, 255, 255, 0.8)",dragPointStroke:"rgba(255, 255, 255, 0.8)"};let le=class extends vt{constructor(t,e){super(),this.subscriptions=[],this.subscriptions=[],this.options=t,this.polyPoints=new Map;const i=e.clientWidth,s=e.clientHeight,o=$("svg",{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:`0 0 ${i} ${s}`,preserveAspectRatio:"none",style:{position:"absolute",left:"0",top:"0",zIndex:"4"},part:"envelope"},e);this.svg=o;const n=$("polyline",{xmlns:"http://www.w3.org/2000/svg",points:`0,${s} ${i},${s}`,stroke:t.lineColor,"stroke-width":t.lineWidth,fill:"none",part:"polyline",style:t.dragLine?{cursor:"row-resize",pointerEvents:"stroke"}:{}},o);t.dragLine&&this.subscriptions.push(et(n,(l,h)=>{const{height:c}=o.viewBox.baseVal,{points:a}=n;for(let d=1;d<a.numberOfItems-1;d++){const p=a.getItem(d);p.y=Math.min(c,Math.max(0,p.y+h))}const u=o.querySelectorAll("ellipse");Array.from(u).forEach(d=>{const p=Math.min(c,Math.max(0,Number(d.getAttribute("cy"))+h));d.setAttribute("cy",p.toString())}),this.emit("line-move",h/c)})),o.addEventListener("dblclick",l=>{const h=o.getBoundingClientRect(),c=l.clientX-h.left,a=l.clientY-h.top;this.emit("point-create",c/h.width,a/h.height)});{let l;const h=()=>clearTimeout(l);o.addEventListener("touchstart",c=>{c.touches.length===1?l=window.setTimeout(()=>{c.preventDefault();const a=o.getBoundingClientRect(),u=c.touches[0].clientX-a.left,d=c.touches[0].clientY-a.top;this.emit("point-create",u/a.width,d/a.height)},500):h()}),o.addEventListener("touchmove",h),o.addEventListener("touchend",h)}}makeDraggable(t,e){this.subscriptions.push(et(t,e,()=>t.style.cursor="grabbing",()=>t.style.cursor="grab",1))}createCircle(t,e){const i=this.options.dragPointSize/2;return $("ellipse",{xmlns:"http://www.w3.org/2000/svg",cx:t,cy:e,rx:i,ry:i,fill:this.options.dragPointFill,stroke:this.options.dragPointStroke,"stroke-width":"2",style:{cursor:"grab",pointerEvents:"all"},part:"envelope-circle"},this.svg)}removePolyPoint(t){const e=this.polyPoints.get(t);if(!e)return;const{polyPoint:i,circle:s}=e,{points:o}=this.svg.querySelector("polyline"),n=Array.from(o).findIndex(l=>l.x===i.x&&l.y===i.y);o.removeItem(n),s.remove(),this.polyPoints.delete(t)}addPolyPoint(t,e,i){const{svg:s}=this,{width:o,height:n}=s.viewBox.baseVal,l=t*o,h=n-e*n,c=this.options.dragPointSize/2,a=s.createSVGPoint();a.x=t*o,a.y=n-e*n;const u=this.createCircle(l,h),{points:d}=s.querySelector("polyline"),p=Array.from(d).findIndex(g=>g.x>=l);d.insertItemBefore(a,Math.max(p,1)),this.polyPoints.set(i,{polyPoint:a,circle:u}),this.makeDraggable(u,(g,y)=>{const f=a.x+g,m=a.y+y;if(f<-c||m<-c||f>o+c||m>n+c)return void this.emit("point-dragout",i);const w=Array.from(d).find(v=>v.x>a.x),W=Array.from(d).findLast(v=>v.x<a.x);w&&f>=w.x||W&&f<=W.x||(a.x=f,a.y=m,u.setAttribute("cx",f.toString()),u.setAttribute("cy",m.toString()),this.emit("point-move",i,f/o,m/n))})}update(){const{svg:t}=this,{clientWidth:e,clientHeight:i}=t;if(!e||!i)return;const s=t.viewBox.baseVal.width/e,o=t.viewBox.baseVal.height/i;t.querySelectorAll("ellipse").forEach(n=>{const l=this.options.dragPointSize/2,h=l*s,c=l*o;n.setAttribute("rx",h.toString()),n.setAttribute("ry",c.toString())})}destroy(){this.subscriptions.forEach(t=>t()),this.polyPoints.clear(),this.svg.remove()}},gt=class bt extends ae{constructor(t){super(t),this.polyline=null,this.throttleTimeout=null,this.volume=1,this.points=t.points||[],this.options=Object.assign({},G,t),this.options.lineColor=this.options.lineColor||G.lineColor,this.options.dragPointFill=this.options.dragPointFill||G.dragPointFill,this.options.dragPointStroke=this.options.dragPointStroke||G.dragPointStroke,this.options.dragPointSize=this.options.dragPointSize||G.dragPointSize}static create(t){return new bt(t)}addPoint(t){var e;t.id||(t.id=Math.random().toString(36).slice(2));const i=this.points.findLastIndex(o=>o.time<t.time);this.points.splice(i+1,0,t),this.emitPoints();const s=(e=this.wavesurfer)===null||e===void 0?void 0:e.getDuration();s&&this.addPolyPoint(t,s)}removePoint(t){var e;const i=this.points.indexOf(t);i>-1&&(this.points.splice(i,1),(e=this.polyline)===null||e===void 0||e.removePolyPoint(t),this.emitPoints())}getPoints(){return this.points}setPoints(t){this.points.slice().forEach(e=>this.removePoint(e)),t.forEach(e=>this.addPoint(e))}destroy(){var t;(t=this.polyline)===null||t===void 0||t.destroy(),super.destroy()}getCurrentVolume(){return this.volume}setVolume(t){var e;this.volume=t,(e=this.wavesurfer)===null||e===void 0||e.setVolume(t)}onInit(){var t;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");const{options:e}=this;e.volume=(t=e.volume)!==null&&t!==void 0?t:this.wavesurfer.getVolume(),this.setVolume(e.volume),this.subscriptions.push(this.wavesurfer.on("decode",i=>{this.initPolyline(),this.points.forEach(s=>{this.addPolyPoint(s,i)})}),this.wavesurfer.on("redraw",()=>{var i;(i=this.polyline)===null||i===void 0||i.update()}),this.wavesurfer.on("timeupdate",i=>{this.onTimeUpdate(i)}))}emitPoints(){this.throttleTimeout&&clearTimeout(this.throttleTimeout),this.throttleTimeout=setTimeout(()=>{this.emit("points-change",this.points)},200)}initPolyline(){if(this.polyline&&this.polyline.destroy(),!this.wavesurfer)return;const t=this.wavesurfer.getWrapper();this.polyline=new le(this.options,t),this.subscriptions.push(this.polyline.on("point-move",(e,i,s)=>{var o;const n=((o=this.wavesurfer)===null||o===void 0?void 0:o.getDuration())||0;e.time=i*n,e.volume=1-s,this.emitPoints()}),this.polyline.on("point-dragout",e=>{this.removePoint(e)}),this.polyline.on("point-create",(e,i)=>{var s;this.addPoint({time:e*(((s=this.wavesurfer)===null||s===void 0?void 0:s.getDuration())||0),volume:1-i})}),this.polyline.on("line-move",e=>{var i;this.points.forEach(s=>{s.volume=Math.min(1,Math.max(0,s.volume-e))}),this.emitPoints(),this.onTimeUpdate(((i=this.wavesurfer)===null||i===void 0?void 0:i.getCurrentTime())||0)}))}addPolyPoint(t,e){var i;(i=this.polyline)===null||i===void 0||i.addPolyPoint(t.time/e,t.volume,t)}onTimeUpdate(t){if(!this.wavesurfer)return;let e=this.points.find(c=>c.time>t);e||(e={time:this.wavesurfer.getDuration()||0,volume:0});let i=this.points.findLast(c=>c.time<=t);i||(i={time:0,volume:0});const s=e.time-i.time,o=e.volume-i.volume,n=i.volume+(t-i.time)*(o/s),l=Math.min(1,Math.max(0,n)),h=Math.round(100*l)/100;h!==this.getCurrentVolume()&&(this.setVolume(h),this.emit("volume-change",h))}};const he=({waveSurfer:r,envelopeOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(gt,t);return C.onMounted(()=>{r.value&&i(r.value)}),{envelopePlugin:e}},ce=({containerRef:r,options:t,envelopeOptions:e={}})=>z(gt,{containerRef:r,options:t,pluginOptions:e});function N(r,t,e,i){return new(e||(e=Promise))(function(s,o){function n(c){try{h(i.next(c))}catch(a){o(a)}}function l(c){try{h(i.throw(c))}catch(a){o(a)}}function h(c){var a;c.done?s(c.value):(a=c.value,a instanceof e?a:new e(function(u){u(a)})).then(n,l)}h((i=i.apply(r,[])).next())})}const yt=1e3*Math.log(10)/107.939;function wt(r){return 2595*Math.log10(1+r/700)}function Wt(r){return 700*(Math.pow(10,r/2595)-1)}function St(r){return Math.log10(Math.max(1,r))}function Mt(r){return Math.pow(10,r)}function xt(r){let t=26.81*r/(1960+r)-.53;return t<2&&(t+=.15*(2-t)),t>20.1&&(t+=.22*(t-20.1)),t}function Ct(r){return r<2&&(r=(r-.3)/.85),r>20.1&&(r=(r+4.422)/1.22),(r+.53)/(26.28-r)*1960}function Pt(r){return yt*Math.log10(1+.00437*r)}function Et(r){return(Math.pow(10,r/yt)-1)/.00437}function O(r,t){switch(t){case"mel":return wt(r);case"logarithmic":return St(r);case"bark":return xt(r);case"erb":return Pt(r);default:return r}}function V(r,t,e,i,s){const o=i(0),n=i(e/2),l=Array.from({length:r},()=>Array(t/2+1).fill(0)),h=e/t;for(let c=0;c<r;c++){const a=s(o+c/r*(n-o)),u=Math.floor(a/h),d=u*h,p=(a-d)/((u+1)*h-d);l[c][u]=1-p,l[c][u+1]=p}return l}function ue(r,t){const e=t.length,i=Float32Array.from({length:e},()=>0);for(let s=0;s<e;s++)for(let o=0;o<r.length;o++)i[s]+=r[o]*t[s][o];return i}const de={gray:()=>{const r=[];for(let t=0;t<256;t++){const e=(255-t)/256;r.push([e,e,e,1])}return r},igray:()=>{const r=[];for(let t=0;t<256;t++){const e=t/256;r.push([e,e,e,1])}return r},roseus:()=>[[.004528,.004341,.004307,1],[.005625,.006156,.00601,1],[.006628,.008293,.008161,1],[.007551,.010738,.01079,1],[.008382,.013482,.013941,1],[.009111,.01652,.017662,1],[.009727,.019846,.022009,1],[.010223,.023452,.027035,1],[.010593,.027331,.032799,1],[.010833,.031475,.039361,1],[.010941,.035875,.046415,1],[.010918,.04052,.053597,1],[.010768,.045158,.060914,1],[.010492,.049708,.068367,1],[.010098,.054171,.075954,1],[.009594,.058549,.083672,1],[.008989,.06284,.091521,1],[.008297,.067046,.099499,1],[.00753,.071165,.107603,1],[.006704,.075196,.11583,1],[.005838,.07914,.124178,1],[.004949,.082994,.132643,1],[.004062,.086758,.141223,1],[.003198,.09043,.149913,1],[.002382,.09401,.158711,1],[.001643,.097494,.167612,1],[.001009,.100883,.176612,1],[514e-6,.104174,.185704,1],[187e-6,.107366,.194886,1],[66e-6,.110457,.204151,1],[186e-6,.113445,.213496,1],[587e-6,.116329,.222914,1],[.001309,.119106,.232397,1],[.002394,.121776,.241942,1],[.003886,.124336,.251542,1],[.005831,.126784,.261189,1],[.008276,.12912,.270876,1],[.011268,.131342,.280598,1],[.014859,.133447,.290345,1],[.0191,.135435,.300111,1],[.024043,.137305,.309888,1],[.029742,.139054,.319669,1],[.036252,.140683,.329441,1],[.043507,.142189,.339203,1],[.050922,.143571,.348942,1],[.058432,.144831,.358649,1],[.066041,.145965,.368319,1],[.073744,.146974,.377938,1],[.081541,.147858,.387501,1],[.089431,.148616,.396998,1],[.097411,.149248,.406419,1],[.105479,.149754,.415755,1],[.113634,.150134,.424998,1],[.121873,.150389,.434139,1],[.130192,.150521,.443167,1],[.138591,.150528,.452075,1],[.147065,.150413,.460852,1],[.155614,.150175,.469493,1],[.164232,.149818,.477985,1],[.172917,.149343,.486322,1],[.181666,.148751,.494494,1],[.190476,.148046,.502493,1],[.199344,.147229,.510313,1],[.208267,.146302,.517944,1],[.217242,.145267,.52538,1],[.226264,.144131,.532613,1],[.235331,.142894,.539635,1],[.24444,.141559,.546442,1],[.253587,.140131,.553026,1],[.262769,.138615,.559381,1],[.271981,.137016,.5655,1],[.281222,.135335,.571381,1],[.290487,.133581,.577017,1],[.299774,.131757,.582404,1],[.30908,.129867,.587538,1],[.318399,.12792,.592415,1],[.32773,.125921,.597032,1],[.337069,.123877,.601385,1],[.346413,.121793,.605474,1],[.355758,.119678,.609295,1],[.365102,.11754,.612846,1],[.374443,.115386,.616127,1],[.383774,.113226,.619138,1],[.393096,.111066,.621876,1],[.402404,.108918,.624343,1],[.411694,.106794,.62654,1],[.420967,.104698,.628466,1],[.430217,.102645,.630123,1],[.439442,.100647,.631513,1],[.448637,.098717,.632638,1],[.457805,.096861,.633499,1],[.46694,.095095,.6341,1],[.47604,.093433,.634443,1],[.485102,.091885,.634532,1],[.494125,.090466,.63437,1],[.503104,.08919,.633962,1],[.512041,.088067,.633311,1],[.520931,.087108,.63242,1],[.529773,.086329,.631297,1],[.538564,.085738,.629944,1],[.547302,.085346,.628367,1],[.555986,.085162,.626572,1],[.564615,.08519,.624563,1],[.573187,.085439,.622345,1],[.581698,.085913,.619926,1],[.590149,.086615,.617311,1],[.598538,.087543,.614503,1],[.606862,.0887,.611511,1],[.61512,.090084,.608343,1],[.623312,.09169,.605001,1],[.631438,.093511,.601489,1],[.639492,.095546,.597821,1],[.647476,.097787,.593999,1],[.655389,.100226,.590028,1],[.66323,.102856,.585914,1],[.670995,.105669,.581667,1],[.678686,.108658,.577291,1],[.686302,.111813,.57279,1],[.69384,.115129,.568175,1],[.7013,.118597,.563449,1],[.708682,.122209,.558616,1],[.715984,.125959,.553687,1],[.723206,.12984,.548666,1],[.730346,.133846,.543558,1],[.737406,.13797,.538366,1],[.744382,.142209,.533101,1],[.751274,.146556,.527767,1],[.758082,.151008,.522369,1],[.764805,.155559,.516912,1],[.771443,.160206,.511402,1],[.777995,.164946,.505845,1],[.784459,.169774,.500246,1],[.790836,.174689,.494607,1],[.797125,.179688,.488935,1],[.803325,.184767,.483238,1],[.809435,.189925,.477518,1],[.815455,.19516,.471781,1],[.821384,.200471,.466028,1],[.827222,.205854,.460267,1],[.832968,.211308,.454505,1],[.838621,.216834,.448738,1],[.844181,.222428,.442979,1],[.849647,.22809,.43723,1],[.855019,.233819,.431491,1],[.860295,.239613,.425771,1],[.865475,.245471,.420074,1],[.870558,.251393,.414403,1],[.875545,.25738,.408759,1],[.880433,.263427,.403152,1],[.885223,.269535,.397585,1],[.889913,.275705,.392058,1],[.894503,.281934,.386578,1],[.898993,.288222,.381152,1],[.903381,.294569,.375781,1],[.907667,.300974,.370469,1],[.911849,.307435,.365223,1],[.915928,.313953,.360048,1],[.919902,.320527,.354948,1],[.923771,.327155,.349928,1],[.927533,.333838,.344994,1],[.931188,.340576,.340149,1],[.934736,.347366,.335403,1],[.938175,.354207,.330762,1],[.941504,.361101,.326229,1],[.944723,.368045,.321814,1],[.947831,.375039,.317523,1],[.950826,.382083,.313364,1],[.953709,.389175,.309345,1],[.956478,.396314,.305477,1],[.959133,.403499,.301766,1],[.961671,.410731,.298221,1],[.964093,.418008,.294853,1],[.966399,.425327,.291676,1],[.968586,.43269,.288696,1],[.970654,.440095,.285926,1],[.972603,.44754,.28338,1],[.974431,.455025,.281067,1],[.976139,.462547,.279003,1],[.977725,.470107,.277198,1],[.979188,.477703,.275666,1],[.980529,.485332,.274422,1],[.981747,.492995,.273476,1],[.98284,.50069,.272842,1],[.983808,.508415,.272532,1],[.984653,.516168,.27256,1],[.985373,.523948,.272937,1],[.985966,.531754,.273673,1],[.986436,.539582,.274779,1],[.98678,.547434,.276264,1],[.986998,.555305,.278135,1],[.987091,.563195,.280401,1],[.987061,.5711,.283066,1],[.986907,.579019,.286137,1],[.986629,.58695,.289615,1],[.986229,.594891,.293503,1],[.985709,.602839,.297802,1],[.985069,.610792,.302512,1],[.98431,.618748,.307632,1],[.983435,.626704,.313159,1],[.982445,.634657,.319089,1],[.981341,.642606,.32542,1],[.98013,.650546,.332144,1],[.978812,.658475,.339257,1],[.977392,.666391,.346753,1],[.97587,.67429,.354625,1],[.974252,.68217,.362865,1],[.972545,.690026,.371466,1],[.97075,.697856,.380419,1],[.968873,.705658,.389718,1],[.966921,.713426,.399353,1],[.964901,.721157,.409313,1],[.962815,.728851,.419594,1],[.960677,.7365,.430181,1],[.95849,.744103,.44107,1],[.956263,.751656,.452248,1],[.954009,.759153,.463702,1],[.951732,.766595,.475429,1],[.949445,.773974,.487414,1],[.947158,.781289,.499647,1],[.944885,.788535,.512116,1],[.942634,.795709,.524811,1],[.940423,.802807,.537717,1],[.938261,.809825,.550825,1],[.936163,.81676,.564121,1],[.934146,.823608,.577591,1],[.932224,.830366,.59122,1],[.930412,.837031,.604997,1],[.928727,.843599,.618904,1],[.927187,.850066,.632926,1],[.925809,.856432,.647047,1],[.92461,.862691,.661249,1],[.923607,.868843,.675517,1],[.92282,.874884,.689832,1],[.922265,.880812,.704174,1],[.921962,.886626,.718523,1],[.92193,.892323,.732859,1],[.922183,.897903,.747163,1],[.922741,.903364,.76141,1],[.92362,.908706,.77558,1],[.924837,.913928,.789648,1],[.926405,.919031,.80359,1],[.92834,.924015,.817381,1],[.930655,.928881,.830995,1],[.93336,.933631,.844405,1],[.936466,.938267,.857583,1],[.939982,.942791,.870499,1],[.943914,.947207,.883122,1],[.948267,.951519,.895421,1],[.953044,.955732,.907359,1],[.958246,.959852,.918901,1],[.963869,.963887,.930004,1],[.969909,.967845,.940623,1],[.976355,.971737,.950704,1],[.983195,.97558,.960181,1],[.990402,.979395,.968966,1],[.99793,.983217,.97692,1]]};function pe(r){return r>=1e3?(r/1e3).toFixed(1):Math.round(r).toString()}function me(r){return r>=1e3?"kHz":"Hz"}function ve(r,t,e,i,s){const o=O(e,s);return function(n,l){switch(l){case"mel":return Wt(n);case"logarithmic":return Mt(n);case"bark":return Ct(n);case"erb":return Et(n);default:return n}}(o+r/t*(O(i,s)-o),s)}function fe(r,t,e,i){switch(this.bufferSize=r,this.sampleRate=t,this.bandwidth=2/r*(t/2),this.sinTable=new Float32Array(r),this.cosTable=new Float32Array(r),this.windowValues=new Float32Array(r),this.reverseTable=new Uint32Array(r),this.peakBand=0,this.peak=0,e){case"bartlett":for(let n=0;n<r;n++)this.windowValues[n]=2/(r-1)*((r-1)/2-Math.abs(n-(r-1)/2));break;case"bartlettHann":for(let n=0;n<r;n++)this.windowValues[n]=.62-.48*Math.abs(n/(r-1)-.5)-.38*Math.cos(2*Math.PI*n/(r-1));break;case"blackman":i=i||.16;for(let n=0;n<r;n++)this.windowValues[n]=(1-i)/2-.5*Math.cos(2*Math.PI*n/(r-1))+i/2*Math.cos(4*Math.PI*n/(r-1));break;case"cosine":for(let n=0;n<r;n++)this.windowValues[n]=Math.cos(Math.PI*n/(r-1)-Math.PI/2);break;case"gauss":i=i||.25;for(let n=0;n<r;n++)this.windowValues[n]=Math.pow(Math.E,-.5*Math.pow((n-(r-1)/2)/(i*(r-1)/2),2));break;case"hamming":for(let n=0;n<r;n++)this.windowValues[n]=.54-.46*Math.cos(2*Math.PI*n/(r-1));break;case"hann":case void 0:for(let n=0;n<r;n++)this.windowValues[n]=.5*(1-Math.cos(2*Math.PI*n/(r-1)));break;case"lanczoz":for(let n=0;n<r;n++)this.windowValues[n]=Math.sin(Math.PI*(2*n/(r-1)-1))/(Math.PI*(2*n/(r-1)-1));break;case"rectangular":for(let n=0;n<r;n++)this.windowValues[n]=1;break;case"triangular":for(let n=0;n<r;n++)this.windowValues[n]=2/r*(r/2-Math.abs(n-(r-1)/2));break;default:throw Error("No such window function '"+e+"'")}let s=1,o=r>>1;for(;s<r;){for(let n=0;n<s;n++)this.reverseTable[n+s]=this.reverseTable[n]+o;s<<=1,o>>=1}for(let n=0;n<r;n++)this.sinTable[n]=Math.sin(-Math.PI/n),this.cosTable[n]=Math.cos(-Math.PI/n);this.calculateSpectrum=function(n){const l=this.bufferSize,h=this.cosTable,c=this.sinTable,a=this.reverseTable,u=new Float32Array(l),d=new Float32Array(l),p=2/this.bufferSize,g=Math.sqrt,y=new Float32Array(l/2);let f,m,w;const W=Math.floor(Math.log(l)/Math.LN2);if(Math.pow(2,W)!==l)throw"Invalid buffer size, must be a power of 2.";if(l!==n.length)throw"Supplied buffer is not the same size as defined FFT. FFT Size: "+l+" Buffer Size: "+n.length;let v,b,S,x,M,P,E,L,R=1;for(let T=0;T<l;T++)u[T]=n[a[T]]*this.windowValues[a[T]],d[T]=0;for(;R<l;){v=h[R],b=c[R],S=1,x=0;for(let T=0;T<R;T++){let Z=T;for(;Z<l;)M=Z+R,P=S*u[M]-x*d[M],E=S*d[M]+x*u[M],u[M]=u[Z]-P,d[M]=d[Z]-E,u[Z]+=P,d[Z]+=E,Z+=R<<1;L=S,S=L*v-x*b,x=L*b+x*v}R<<=1}for(let T=0,Z=l/2;T<Z;T++)f=u[T],m=d[T],w=p*g(f*f+m*m),w>this.peak&&(this.peakBand=T,this.peak=w),y[T]=w;return y}}class ge{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}}class be extends ge{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}}function Tt(r,t){const e=t.xmlns?document.createElementNS(t.xmlns,r):document.createElement(r);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[o,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(Tt(o,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function j(r,t,e){const i=Tt(r,t||{});return e?.appendChild(i),i}var kt=null;try{var ye=typeof module<"u"&&typeof module.require=="function"&&module.require("worker_threads")||typeof __non_webpack_require__=="function"&&__non_webpack_require__("worker_threads")||typeof require=="function"&&require("worker_threads");kt=ye.Worker}catch{}function we(r,t,e){var i=function(n){return Buffer.from(n,"base64").toString("utf8")}(r),s=i.indexOf(`
|
|
74
|
+
`,10)+1,o=i.substring(s)+"";return function(n){return new kt(o,Object.assign({},n,{eval:!0}))}}function We(r,t,e){var i=function(l){return atob(l)}(r),s=i.indexOf(`
|
|
75
|
+
`,10)+1,o=i.substring(s)+"",n=new Blob([o],{type:"application/javascript"});return URL.createObjectURL(n)}var Se=Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]";function Me(r,t,e){return Se?we(r):function(i){var s;return function(o){return s=s||We(i),new Worker(s,o)}}(r)}var xe=Me("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgdD0xZTMqTWF0aC5sb2coMTApLzEwNy45Mzk7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gMjU5NSpNYXRoLmxvZzEwKDErdC83MDApfWZ1bmN0aW9uIGEodCl7cmV0dXJuIDcwMCooTWF0aC5wb3coMTAsdC8yNTk1KS0xKX1mdW5jdGlvbiByKHQpe3JldHVybiBNYXRoLmxvZzEwKE1hdGgubWF4KDEsdCkpfWZ1bmN0aW9uIHModCl7cmV0dXJuIE1hdGgucG93KDEwLHQpfWZ1bmN0aW9uIG4odCl7bGV0IGU9MjYuODEqdC8oMTk2MCt0KS0uNTM7cmV0dXJuIGU8MiYmKGUrPS4xNSooMi1lKSksZT4yMC4xJiYoZSs9LjIyKihlLTIwLjEpKSxlfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ8MiYmKHQ9KHQtLjMpLy44NSksdD4yMC4xJiYodD0odCs0LjQyMikvMS4yMiksKHQrLjUzKS8oMjYuMjgtdCkqMTk2MH1mdW5jdGlvbiBsKGUpe3JldHVybiB0Kk1hdGgubG9nMTAoMSsuMDA0MzcqZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4oTWF0aC5wb3coMTAsZS90KS0xKS8uMDA0Mzd9ZnVuY3Rpb24gaCh0LGUsYSxyLHMpe2NvbnN0IG49cigwKSxvPXIoYS8yKSxsPUFycmF5LmZyb20oe2xlbmd0aDp0fSwoKCk9PkFycmF5KGUvMisxKS5maWxsKDApKSksaT1hL2U7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7Y29uc3QgYT1zKG4rZS90KihvLW4pKSxyPU1hdGguZmxvb3IoYS9pKSxoPXIqaSxjPShhLWgpLygocisxKSppLWgpO2xbZV1bcl09MS1jLGxbZV1bcisxXT1jfXJldHVybiBsfWZ1bmN0aW9uIGModCxlKXtjb25zdCBhPWUubGVuZ3RoLHI9RmxvYXQzMkFycmF5LmZyb20oe2xlbmd0aDphfSwoKCk9PjApKTtmb3IobGV0IHM9MDtzPGE7cysrKWZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKXJbc10rPXRbYV0qZVtzXVthXTtyZXR1cm4gcn1mdW5jdGlvbiB1KHQsZSxhLHIpe3N3aXRjaCh0aGlzLmJ1ZmZlclNpemU9dCx0aGlzLnNhbXBsZVJhdGU9ZSx0aGlzLmJhbmR3aWR0aD0yL3QqKGUvMiksdGhpcy5zaW5UYWJsZT1uZXcgRmxvYXQzMkFycmF5KHQpLHRoaXMuY29zVGFibGU9bmV3IEZsb2F0MzJBcnJheSh0KSx0aGlzLndpbmRvd1ZhbHVlcz1uZXcgRmxvYXQzMkFycmF5KHQpLHRoaXMucmV2ZXJzZVRhYmxlPW5ldyBVaW50MzJBcnJheSh0KSx0aGlzLnBlYWtCYW5kPTAsdGhpcy5wZWFrPTAsYSl7Y2FzZSJiYXJ0bGV0dCI6Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT0yLyh0LTEpKigodC0xKS8yLU1hdGguYWJzKGUtKHQtMSkvMikpO2JyZWFrO2Nhc2UiYmFydGxldHRIYW5uIjpmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPS42Mi0uNDgqTWF0aC5hYnMoZS8odC0xKS0uNSktLjM4Kk1hdGguY29zKDIqTWF0aC5QSSplLyh0LTEpKTticmVhaztjYXNlImJsYWNrbWFuIjpyPXJ8fC4xNjtmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPSgxLXIpLzItLjUqTWF0aC5jb3MoMipNYXRoLlBJKmUvKHQtMSkpK3IvMipNYXRoLmNvcyg0Kk1hdGguUEkqZS8odC0xKSk7YnJlYWs7Y2FzZSJjb3NpbmUiOmZvcihsZXQgZT0wO2U8dDtlKyspdGhpcy53aW5kb3dWYWx1ZXNbZV09TWF0aC5jb3MoTWF0aC5QSSplLyh0LTEpLU1hdGguUEkvMik7YnJlYWs7Y2FzZSJnYXVzcyI6cj1yfHwuMjU7Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT1NYXRoLnBvdyhNYXRoLkUsLS41Kk1hdGgucG93KChlLSh0LTEpLzIpLyhyKih0LTEpLzIpLDIpKTticmVhaztjYXNlImhhbW1pbmciOmZvcihsZXQgZT0wO2U8dDtlKyspdGhpcy53aW5kb3dWYWx1ZXNbZV09LjU0LS40NipNYXRoLmNvcygyKk1hdGguUEkqZS8odC0xKSk7YnJlYWs7Y2FzZSJoYW5uIjpjYXNlIHZvaWQgMDpmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPS41KigxLU1hdGguY29zKDIqTWF0aC5QSSplLyh0LTEpKSk7YnJlYWs7Y2FzZSJsYW5jem96Ijpmb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMud2luZG93VmFsdWVzW2VdPU1hdGguc2luKE1hdGguUEkqKDIqZS8odC0xKS0xKSkvKE1hdGguUEkqKDIqZS8odC0xKS0xKSk7YnJlYWs7Y2FzZSJyZWN0YW5ndWxhciI6Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT0xO2JyZWFrO2Nhc2UidHJpYW5ndWxhciI6Zm9yKGxldCBlPTA7ZTx0O2UrKyl0aGlzLndpbmRvd1ZhbHVlc1tlXT0yL3QqKHQvMi1NYXRoLmFicyhlLSh0LTEpLzIpKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJObyBzdWNoIHdpbmRvdyBmdW5jdGlvbiAnIithKyInIil9bGV0IHM9MSxuPXQ+PjE7Zm9yKDtzPHQ7KXtmb3IobGV0IHQ9MDt0PHM7dCsrKXRoaXMucmV2ZXJzZVRhYmxlW3Qrc109dGhpcy5yZXZlcnNlVGFibGVbdF0rbjtzPDw9MSxuPj49MX1mb3IobGV0IGU9MDtlPHQ7ZSsrKXRoaXMuc2luVGFibGVbZV09TWF0aC5zaW4oLU1hdGguUEkvZSksdGhpcy5jb3NUYWJsZVtlXT1NYXRoLmNvcygtTWF0aC5QSS9lKTt0aGlzLmNhbGN1bGF0ZVNwZWN0cnVtPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5idWZmZXJTaXplLGE9dGhpcy5jb3NUYWJsZSxyPXRoaXMuc2luVGFibGUscz10aGlzLnJldmVyc2VUYWJsZSxuPW5ldyBGbG9hdDMyQXJyYXkoZSksbz1uZXcgRmxvYXQzMkFycmF5KGUpLGw9Mi90aGlzLmJ1ZmZlclNpemUsaT1NYXRoLnNxcnQsaD1uZXcgRmxvYXQzMkFycmF5KGUvMik7bGV0IGMsdSxmO2NvbnN0IE09TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMik7aWYoTWF0aC5wb3coMixNKSE9PWUpdGhyb3ciSW52YWxpZCBidWZmZXIgc2l6ZSwgbXVzdCBiZSBhIHBvd2VyIG9mIDIuIjtpZihlIT09dC5sZW5ndGgpdGhyb3ciU3VwcGxpZWQgYnVmZmVyIGlzIG5vdCB0aGUgc2FtZSBzaXplIGFzIGRlZmluZWQgRkZULiBGRlQgU2l6ZTogIitlKyIgQnVmZmVyIFNpemU6ICIrdC5sZW5ndGg7bGV0IHcsYixkLHAsZyxtLGsseSxUPTE7Zm9yKGxldCBhPTA7YTxlO2ErKyluW2FdPXRbc1thXV0qdGhpcy53aW5kb3dWYWx1ZXNbc1thXV0sb1thXT0wO2Zvcig7VDxlOyl7dz1hW1RdLGI9cltUXSxkPTEscD0wO2ZvcihsZXQgdD0wO3Q8VDt0Kyspe2xldCBhPXQ7Zm9yKDthPGU7KWc9YStULG09ZCpuW2ddLXAqb1tnXSxrPWQqb1tnXStwKm5bZ10sbltnXT1uW2FdLW0sb1tnXT1vW2FdLWssblthXSs9bSxvW2FdKz1rLGErPVQ8PDE7eT1kLGQ9eSp3LXAqYixwPXkqYitwKnd9VDw8PTF9Zm9yKGxldCB0PTAsYT1lLzI7dDxhO3QrKyljPW5bdF0sdT1vW3RdLGY9bCppKGMqYyt1KnUpLGY+dGhpcy5wZWFrJiYodGhpcy5wZWFrQmFuZD10LHRoaXMucGVhaz1mKSxoW3RdPWY7cmV0dXJuIGh9fWxldCBmPW51bGw7c2VsZi5vbm1lc3NhZ2U9ZnVuY3Rpb24odCl7Y29uc3R7dHlwZTpNLGlkOncsYXVkaW9EYXRhOmIsb3B0aW9uczpkfT10LmRhdGE7aWYoImNhbGN1bGF0ZUZyZXF1ZW5jaWVzIj09PU0pdHJ5e2NvbnN0IHQ9ZnVuY3Rpb24odCxNKXtjb25zdHtzdGFydFRpbWU6dyxlbmRUaW1lOmIsc2FtcGxlUmF0ZTpkLGZmdFNhbXBsZXM6cCx3aW5kb3dGdW5jOmcsYWxwaGE6bSxub3ZlcmxhcDprLHNjYWxlOnksZ2FpbkRCOlQscmFuZ2VEQjpGLHNwbGl0Q2hhbm5lbHM6SX09TSxWPU1hdGguZmxvb3IodypkKSxBPU1hdGguZmxvb3IoYipkKSxQPUk/dC5sZW5ndGg6MTtmJiZmLmJ1ZmZlclNpemU9PT1wfHwoZj1uZXcgdShwLGQsZyxtfHwuMTYpKTtjb25zdCBTPWZ1bmN0aW9uKHQsYyx1LGYpe3N3aXRjaCh0KXtjYXNlIm1lbCI6cmV0dXJuIGgoYyx1LGYsZSxhKTtjYXNlImxvZ2FyaXRobWljIjpyZXR1cm4gaChjLHUsZixyLHMpO2Nhc2UiYmFyayI6cmV0dXJuIGgoYyx1LGYsbixvKTtjYXNlImVyYiI6cmV0dXJuIGgoYyx1LGYsbCxpKTtkZWZhdWx0OnJldHVybiBudWxsfX0oeSxwLzIscCxkKTtsZXQgej1rfHxNYXRoLm1heCgwLE1hdGgucm91bmQoLjUqcCkpO2NvbnN0IHY9LjUqcDt6PU1hdGgubWluKHosdik7Y29uc3QgQj1NYXRoLm1heCg2NCwuMjUqcCkscT1NYXRoLm1heChCLHAteikseD1bXTtmb3IobGV0IGU9MDtlPFA7ZSsrKXtjb25zdCBhPXRbZV0scj1bXTtmb3IobGV0IHQ9Vjt0K3A8QTt0Kz1xKXtjb25zdCBlPWEuc2xpY2UodCx0K3ApO2xldCBzPWYuY2FsY3VsYXRlU3BlY3RydW0oZSk7UyYmKHM9YyhzLFMpKTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHMubGVuZ3RoKSxvPVQrRjtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyl7Y29uc3QgZT1zW3RdPjFlLTEyP3NbdF06MWUtMTIsYT0yMCpNYXRoLmxvZzEwKGUpO25bdF09YTwtbz8wOmE+LVQ/MjU1Ok1hdGgucm91bmQoKGErVCkvRioyNTUpfXIucHVzaChuKX14LnB1c2gocil9cmV0dXJuIHh9KGIsZCksTT17dHlwZToiZnJlcXVlbmNpZXNSZXN1bHQiLGlkOncscmVzdWx0OnR9O3NlbGYucG9zdE1lc3NhZ2UoTSl9Y2F0Y2godCl7Y29uc3QgZT17dHlwZToiZnJlcXVlbmNpZXNSZXN1bHQiLGlkOncsZXJyb3I6dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9O3NlbGYucG9zdE1lc3NhZ2UoZSl9fX0oKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3BlY3Ryb2dyYW0td29ya2VyLmpzLm1hcAoK");class D extends be{static create(t){return new D(t||{})}constructor(t){var e,i;if(super(t),this.canvases=[],this.useWebWorker=!1,this.worker=null,this.workerPromises=new Map,this.cachedFrequencies=null,this.cachedResampledData=null,this.cachedBuffer=null,this.cachedWidth=0,this.renderTimeout=null,this.isRendering=!1,this.lastZoomLevel=0,this.renderThrottleMs=50,this.zoomThreshold=.05,this.drawnCanvases={},this.pendingBitmaps=new Set,this.isScrollable=!1,this.scrollUnsubscribe=null,this.frequenciesDataUrl=t.frequenciesDataUrl,this.frequenciesDataUrl&&!t.sampleRate)throw new Error("sampleRate option is required when using frequenciesDataUrl");this.container=typeof t.container=="string"?document.querySelector(t.container):t.container,this.useWebWorker=t.useWebWorker===!0,this.colorMap=function(s="roseus"){if(s&&typeof s!="string"){if(s.length<256)throw new Error("Colormap must contain 256 elements");for(let n=0;n<s.length;n++)if(s[n].length!==4)throw new Error("ColorMap entries must contain 4 values");return s}const o=de[s];if(!o)throw Error("No such colormap '"+s+"'");return o()}(t.colorMap),this.fftSamples=t.fftSamples||512,this.height=t.height||200,this.noverlap=t.noverlap||null,this.windowFunc=t.windowFunc||"hann",this.alpha=t.alpha,this.frequencyMin=t.frequencyMin||0,this.frequencyMax=t.frequencyMax||0,this.gainDB=(e=t.gainDB)!==null&&e!==void 0?e:20,this.rangeDB=(i=t.rangeDB)!==null&&i!==void 0?i:80,this.scale=t.scale||"mel",this.numMelFilters=this.fftSamples/2,this.numLogFilters=this.fftSamples/2,this.numBarkFilters=this.fftSamples/2,this.numErbFilters=this.fftSamples/2,t.maxCanvasWidth&&(D.MAX_CANVAS_WIDTH=t.maxCanvasWidth),this.renderThrottleMs=50,this.zoomThreshold=.05,this.createWrapper(),this.createCanvas(),this.useWebWorker&&this.initializeWorker()}initializeWorker(){if(typeof window<"u"&&typeof Worker<"u")try{this.worker=new xe,this.worker.onmessage=t=>{const{type:e,id:i,result:s,error:o}=t.data;if(e==="frequenciesResult"){const n=this.workerPromises.get(i);n&&(this.workerPromises.delete(i),o?n.reject(new Error(o)):n.resolve(s))}},this.worker.onerror=t=>{console.warn("Spectrogram worker error, falling back to main thread:",t),this.worker=null}}catch(t){console.warn("Failed to initialize worker, falling back to main thread:",t),this.worker=null}else console.warn("Worker not available in this environment, using main thread calculation")}onInit(){this.wrapper||this.createWrapper(),this.canvasContainer||this.createCanvas(),this.container=this.wavesurfer.getWrapper(),this.container.appendChild(this.wrapper),this.wavesurfer.options.fillParent&&Object.assign(this.wrapper.style,{width:"100%",overflowX:"hidden",overflowY:"hidden"}),this.subscriptions.push(this.wavesurfer.on("redraw",()=>this.throttledRender())),this.wavesurfer.getDecodedData()&&setTimeout(()=>{this.throttledRender()},0)}destroy(){this.unAll(),this.wavesurfer&&(typeof this._onReady=="function"&&this.wavesurfer.un("ready",this._onReady),typeof this._onRender=="function"&&this.wavesurfer.un("redraw",this._onRender)),this.renderTimeout&&(clearTimeout(this.renderTimeout),this.renderTimeout=null),this.scrollUnsubscribe&&(this.scrollUnsubscribe(),this.scrollUnsubscribe=null),this.pendingBitmaps.clear(),this.worker&&(this.worker.terminate(),this.worker=null),this.cachedFrequencies=null,this.cachedResampledData=null,this.cachedBuffer=null,this.clearCanvases(),this.canvasContainer&&(this.canvasContainer.remove(),this.canvasContainer=null),this.wrapper&&(this.wrapper.remove(),this.wrapper=null),this.labelsEl&&(this.labelsEl.remove(),this.labelsEl=null),this.container=null,this.isRendering=!1,this.lastZoomLevel=0,this.wavesurfer=null,this.util=null,this.options=null,super.destroy()}loadFrequenciesData(t){return N(this,void 0,void 0,function*(){const e=yield fetch(t);if(!e.ok)throw new Error("Unable to fetch frequencies data");const i=yield e.json();this.drawSpectrogram(i)})}getFrequenciesData(){return N(this,void 0,void 0,function*(){var t;const e=(t=this.wavesurfer)===null||t===void 0?void 0:t.getDecodedData();if(!e)return null;if(this.cachedBuffer===e&&this.cachedFrequencies)return this.cachedFrequencies;{const i=yield this.getFrequencies(e);return this.cachedFrequencies=i,this.cachedBuffer=e,i}})}clearCache(){this.cachedFrequencies=null,this.cachedResampledData=null,this.cachedBuffer=null,this.cachedWidth=0,this.lastZoomLevel=0}createWrapper(){var t,e;this.wrapper=j("div",{style:{display:"block",position:"relative",userSelect:"none"}}),this.options.labels&&(this.labelsEl=j("canvas",{part:"spec-labels",style:{position:"absolute",zIndex:9,width:"55px",height:"100%"}},this.wrapper)),this._onWrapperClick=(t=this.wrapper,e=this.emit.bind(this),i=>{const s=t.getBoundingClientRect(),o=i.clientX-s.left,n=s.width;e("click",o/n)}),this.wrapper.addEventListener("click",this._onWrapperClick)}createCanvas(){this.canvasContainer=j("div",{style:{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:4}},this.wrapper)}createSingleCanvas(t,e,i){const s=j("canvas",{style:{position:"absolute",left:`${Math.round(i)}px`,top:"0",width:`${t}px`,height:`${e}px`,zIndex:4}});return s.width=Math.round(t),s.height=Math.round(e),this.canvasContainer.appendChild(s),s}clearCanvases(){this.canvases.forEach(t=>t.remove()),this.canvases=[],this.drawnCanvases={}}clearExcessCanvases(){Object.keys(this.drawnCanvases).length>D.MAX_NODES&&this.clearCanvases()}throttledRender(){var t;if(this.renderTimeout&&clearTimeout(this.renderTimeout),this.isRendering)return;const e=((t=this.wavesurfer)===null||t===void 0?void 0:t.options.minPxPerSec)||0;Math.abs(e-this.lastZoomLevel)/Math.max(e,this.lastZoomLevel,1)<this.zoomThreshold&&this.cachedFrequencies?this.renderTimeout=window.setTimeout(()=>{this.fastRender()},this.renderThrottleMs):this.renderTimeout=window.setTimeout(()=>{this.render()},this.renderThrottleMs)}render(){return N(this,void 0,void 0,function*(){var t,e;if(!this.isRendering){this.isRendering=!0;try{this.frequenciesDataUrl?yield this.loadFrequenciesData(this.frequenciesDataUrl):!((t=this.wavesurfer)===null||t===void 0)&&t.getDecodedData()&&(yield this.getFrequenciesData(),this.drawSpectrogram(this.cachedFrequencies)),this.lastZoomLevel=((e=this.wavesurfer)===null||e===void 0?void 0:e.options.minPxPerSec)||0}finally{this.isRendering=!1}}})}fastRender(){var t;if(!this.isRendering&&this.cachedFrequencies){this.isRendering=!0;try{this.drawSpectrogram(this.cachedFrequencies),this.lastZoomLevel=((t=this.wavesurfer)===null||t===void 0?void 0:t.options.minPxPerSec)||0}finally{this.isRendering=!1}}}drawSpectrogram(t){var e,i,s;isNaN(t[0][0])||(t=[t]),this.clearCanvases();const o=this.height*t.length;this.wrapper.style.height=o+"px";const n=this.getWidth(),l=Math.min(D.MAX_CANVAS_WIDTH,n);if(n===0||o===0)return;const h=Math.ceil(n/l);let c;const a=((e=t[0])===null||e===void 0?void 0:e.length)||0;n!==a?this.cachedResampledData&&this.cachedWidth===n?c=this.cachedResampledData:(c=this.efficientResample(t,n),this.cachedResampledData=c,this.cachedWidth=n):c=t;const u=!((i=this.buffer)===null||i===void 0)&&i.sampleRate?this.buffer.sampleRate/2:(this.options.sampleRate||0)/2,d=this.frequencyMin,p=this.frequencyMax,g=p>u,y=g?this.colorMap[this.colorMap.length-1]:null,f=m=>{if(m<0||m>=h||this.drawnCanvases[m])return;this.drawnCanvases[m]=!0;const w=m*l,W=Math.min(l,n-w);if(W<=0)return;const v=this.createSingleCanvas(W,o,w);this.canvases.push(v);const b=v.getContext("2d");if(b){g&&y&&(b.fillStyle=`rgba(${255*y[0]}, ${255*y[1]}, ${255*y[2]}, ${y[3]})`,b.fillRect(0,0,W,o));for(let S=0;S<c.length;S++)this.drawSpectrogramSegment(c[S],b,W,this.height,S*this.height,w,n,u,d,p)}};if(this.isScrollable=n>this.getWrapperWidth(),this.scrollUnsubscribe&&(this.scrollUnsubscribe(),this.scrollUnsubscribe=null),!this.isScrollable||h<=3)for(let m=0;m<h;m++)f(m);else{const m=()=>{var b;const S=(b=this.wavesurfer)===null||b===void 0?void 0:b.getWrapper();if(!S)return;const x=S.scrollLeft||0,M=S.clientWidth||0,P=Math.max(0,x-.5*M),E=Math.min(n,x+1.5*M),L=Math.floor(P/n*h),R=Math.min(Math.ceil(E/n*h),h-1);Object.keys(this.drawnCanvases).length>D.MAX_NODES&&this.clearExcessCanvases();for(let T=L;T<=R;T++)f(T)};m();let w=null;const W=()=>{w&&clearTimeout(w),w=window.setTimeout(m,16)},v=(s=this.wavesurfer)===null||s===void 0?void 0:s.getWrapper();v&&(v.addEventListener("scroll",W,{passive:!0}),this.scrollUnsubscribe=()=>{v.removeEventListener("scroll",W),w&&clearTimeout(w)})}this.options.labels&&this.loadLabels(this.options.labelsBackground,"12px","12px","",this.options.labelsColor,this.options.labelsHzColor||this.options.labelsColor,"center","#specLabels",t.length),this.emit("ready")}drawSpectrogramSegment(t,e,i,s,o,n,l,h,c,a){const u=t[0].length,d=Math.floor(n/l*t.length),p=Math.min(Math.ceil((n+i)/l*t.length),t.length),g=t.slice(d,p);if(g.length===0)return;const y=g.length,f=new ImageData(y,u),m=f.data;this.fillImageDataQuality(m,g,y,u);const w=O(c,this.scale)/O(h,this.scale),W=O(a,this.scale)/O(h,this.scale),v=Math.min(1,W),b=createImageBitmap(f,0,Math.round(u*(1-v)),y,Math.round(u*(v-w)));this.pendingBitmaps.add(b),b.then(S=>{if(this.pendingBitmaps.delete(b),e.canvas.parentNode){const x=s*v/W,M=o+s*(1-v/W);e.drawImage(S,0,M,i,x),"close"in S&&S.close()}}).catch(S=>{this.pendingBitmaps.delete(b)})}getWidth(){return this.wavesurfer.getWrapper().offsetWidth}getWrapperWidth(){var t,e;return((e=(t=this.wavesurfer)===null||t===void 0?void 0:t.getWrapper())===null||e===void 0?void 0:e.clientWidth)||0}calculateFrequenciesWithWorker(t){return N(this,void 0,void 0,function*(){var e,i;if(!this.worker)throw new Error("Worker not available");const s=this.fftSamples,o=((e=this.options.splitChannels)!==null&&e!==void 0?e:!((i=this.wavesurfer)===null||i===void 0)&&i.options.splitChannels)?t.numberOfChannels:1;let n=this.noverlap;if(!n){const a=this.getWidth(),u=t.length/a;n=Math.max(0,Math.round(s-u))}const l=[];for(let a=0;a<o;a++)l.push(t.getChannelData(a));const h=`${Date.now()}_${Math.random()}`,c=new Promise((a,u)=>{this.workerPromises.set(h,{resolve:a,reject:u}),setTimeout(()=>{this.workerPromises.has(h)&&(this.workerPromises.delete(h),u(new Error("Worker timeout")))},3e4)});return this.worker.postMessage({type:"calculateFrequencies",id:h,audioData:l,options:{startTime:0,endTime:t.duration,sampleRate:t.sampleRate,fftSamples:this.fftSamples,windowFunc:this.windowFunc,alpha:this.alpha,noverlap:n,scale:this.scale,gainDB:this.gainDB,rangeDB:this.rangeDB,splitChannels:this.options.splitChannels||!1}}),c})}getFrequencies(t){return N(this,void 0,void 0,function*(){var e,i;if(this.frequencyMax=this.frequencyMax||t.sampleRate/2,this.buffer=t,!t)return[];if(this.useWebWorker&&this.worker)try{return yield this.calculateFrequenciesWithWorker(t)}catch(f){console.warn("Worker calculation failed, falling back to main thread:",f)}const s=this.fftSamples,o=((e=this.options.splitChannels)!==null&&e!==void 0?e:!((i=this.wavesurfer)===null||i===void 0)&&i.options.splitChannels)?t.numberOfChannels:1,n=t.sampleRate,l=[];let h=this.noverlap;if(!h){const f=this.getWidth(),m=t.length/f;h=Math.max(0,Math.round(s-m))}let c=h||Math.max(0,Math.round(.5*s));const a=.5*s;c=Math.min(c,a);const u=Math.max(64,.25*s),d=Math.max(u,s-c),p=new fe(s,n,this.windowFunc,this.alpha),g=this.fftSamples/2,y=function(f,m,w,W){switch(f){case"mel":return V(m,w,W,wt,Wt);case"logarithmic":return V(m,w,W,St,Mt);case"bark":return V(m,w,W,xt,Ct);case"erb":return V(m,w,W,Pt,Et);default:return null}}(this.scale,g,this.fftSamples,n);for(let f=0;f<o;f++){const m=t.getChannelData(f),w=[];for(let W=0;W+s<m.length;W+=d){const v=m.slice(W,W+s);let b=p.calculateSpectrum(v);y&&(b=ue(b,y));const S=new Uint8Array(b.length),x=this.gainDB+this.rangeDB;for(let M=0;M<b.length;M++){const P=b[M]>1e-12?b[M]:1e-12,E=20*Math.log10(P);E<-x?S[M]=0:E>-this.gainDB?S[M]=255:S[M]=Math.round((E+this.gainDB)/this.rangeDB*255)}w.push(S)}l.push(w)}return l})}loadLabels(t,e,i,s,o,n,l,h,c){t=t||"rgba(68,68,68,0)",e=e||"12px",i=i||"12px",s=s||"Helvetica",o=o||"#fff",n=n||"#fff",l=l||"center";const a=this.height||512,u=a/256*5;this.frequencyMin,this.frequencyMax;const d=this.labelsEl.getContext("2d"),p=window.devicePixelRatio;if(this.labelsEl.height=this.height*c*p,this.labelsEl.width=55*p,d.scale(p,p),d)for(let g=0;g<c;g++){let y;for(d.fillStyle=t,d.fillRect(0,g*a,55,(1+g)*a),d.fill(),y=0;y<=u;y++){d.textAlign=l,d.textBaseline="middle";const f=ve(y,u,this.frequencyMin,this.frequencyMax,this.scale),m=pe(f),w=me(f),W=16;let v=(1+g)*a-y/u*a;v=Math.min(Math.max(v,g*a+10),(1+g)*a-10),d.fillStyle=n,d.font=i+" "+s,d.fillText(w,W+24,v),d.fillStyle=o,d.font=e+" "+s,d.fillText(m,W,v)}}}efficientResample(t,e){return t.map(i=>this.resampleChannel(i,e))}resampleChannel(t,e){var i;const s=t.length,o=((i=t[0])===null||i===void 0?void 0:i.length)||0;if(s===e||e===0)return t;const n=s/e,l=new Array(e);if(n>=1)for(let h=0;h<e;h++){const c=Math.floor(h*n),a=Math.min(Math.ceil((h+1)*n),s),u=a-c,d=new Uint8Array(o);if(u===1)d.set(t[c]);else for(let p=0;p<o;p++){let g=0;for(let y=c;y<a;y++)g+=t[y][p];d[p]=Math.round(g/u)}l[h]=d}else for(let h=0;h<e;h++){const c=h*n,a=Math.floor(c),u=Math.min(a+1,s-1),d=c-a,p=new Uint8Array(o);if(d===0||a===u)p.set(t[a]);else{const g=t[a],y=t[u],f=1-d;for(let m=0;m<o;m++)p[m]=Math.round(g[m]*f+y[m]*d)}l[h]=p}return l}fillImageDataQuality(t,e,i,s){const o=this.colorMap;for(let n=0;n<i;n++){const l=e[n];for(let h=0;h<s;h++){const c=o[l[h]],a=4*((s-h-1)*i+n);t[a]=255*c[0],t[a+1]=255*c[1],t[a+2]=255*c[2],t[a+3]=255*c[3]}}}}D.MAX_CANVAS_WIDTH=3e4,D.MAX_NODES=10;const Ce=({waveSurfer:r,spectrogramOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(D,t);return C.onMounted(()=>{r.value&&i(r.value)}),{spectrogramPlugin:e}},Pe=({containerRef:r,options:t,spectrogramOptions:e={}})=>z(D,{containerRef:r,options:t,pluginOptions:e});let Ee=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},Te=class extends Ee{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function Lt(r,t){const e=t.xmlns?document.createElementNS(t.xmlns,r):document.createElement(r);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[o,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(Lt(o,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function it(r,t,e){const i=Lt(r,t||{});return e?.appendChild(i),i}const ke={lineWidth:1,labelSize:11,labelPreferLeft:!1,formatTimeCallback:r=>`${Math.floor(r/60)}:${`0${Math.floor(r)%60}`.slice(-2)}`};let Rt=class Dt extends Te{constructor(t){super(t||{}),this.lastPointerMove=null,this.unsubscribe=()=>{},this.onPointerMove=e=>{if(!this.wavesurfer)return;this.lastPointerMove=e;const i=this.wavesurfer.getWrapper().getBoundingClientRect(),{width:s}=i,o=e.clientX-i.left,n=Math.min(1,Math.max(0,o/s)),l=Math.min(s-this.options.lineWidth-1,o);this.wrapper.style.transform=`translateX(${l}px)`,this.wrapper.style.opacity="1";const h=this.wavesurfer.getDuration()||0;this.label.textContent=this.options.formatTimeCallback(h*n);const c=this.label.offsetWidth,a=this.options.labelPreferLeft?l-c>0:l+c>s;this.label.style.transform=a?`translateX(-${c+this.options.lineWidth}px)`:"",this.emit("hover",n)},this.onPointerLeave=()=>{this.wrapper.style.opacity="0",this.lastPointerMove=null},this.options=Object.assign({},ke,t),this.wrapper=it("div",{part:"hover"}),this.label=it("span",{part:"hover-label"},this.wrapper)}static create(t){return new Dt(t)}addUnits(t){return`${t}${typeof t=="number"?"px":""}`}onInit(){if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");const t=this.wavesurfer.options,e=this.options.lineColor||t.cursorColor||t.progressColor;Object.assign(this.wrapper.style,{position:"absolute",zIndex:10,left:0,top:0,height:"100%",pointerEvents:"none",borderLeft:`${this.addUnits(this.options.lineWidth)} solid ${e}`,opacity:"0",transition:"opacity .1s ease-in"}),Object.assign(this.label.style,{display:"block",backgroundColor:this.options.labelBackground,color:this.options.labelColor,fontSize:`${this.addUnits(this.options.labelSize)}`,transition:"transform .1s ease-in",padding:"2px 3px"});const i=this.wavesurfer.getWrapper();i.appendChild(this.wrapper),i.addEventListener("pointermove",this.onPointerMove),i.addEventListener("pointerleave",this.onPointerLeave);const s=()=>{this.lastPointerMove&&this.onPointerMove(this.lastPointerMove)};this.wavesurfer.on("zoom",s),this.wavesurfer.on("scroll",s),this.unsubscribe=()=>{var o,n;i.removeEventListener("pointermove",this.onPointerMove),i.removeEventListener("pointerleave",this.onPointerLeave),(o=this.wavesurfer)===null||o===void 0||o.un("zoom",s),(n=this.wavesurfer)===null||n===void 0||n.un("scroll",s)}}destroy(){super.destroy(),this.unsubscribe(),this.wrapper.remove()}};const Le=({waveSurfer:r,hoverOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(Rt,t);return C.onMounted(()=>{r.value&&i(r.value)}),{hoverPlugin:e}},Re=({containerRef:r,options:t,hoverOptions:e={}})=>z(Rt,{containerRef:r,options:t,pluginOptions:e});let Zt=class{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}},De=class extends Zt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}};function K(r,t,e,i,s=3,o=0,n=100){if(!r)return()=>{};const l=matchMedia("(pointer: coarse)").matches;let h=()=>{};const c=a=>{if(a.button!==o)return;a.preventDefault(),a.stopPropagation();let u=a.clientX,d=a.clientY,p=!1;const g=Date.now(),y=v=>{if(v.preventDefault(),v.stopPropagation(),l&&Date.now()-g<n)return;const b=v.clientX,S=v.clientY,x=b-u,M=S-d;if(p||Math.abs(x)>s||Math.abs(M)>s){const P=r.getBoundingClientRect(),{left:E,top:L}=P;p||(e?.(u-E,d-L),p=!0),t(x,M,b-E,S-L),u=b,d=S}},f=v=>{if(p){const b=v.clientX,S=v.clientY,x=r.getBoundingClientRect(),{left:M,top:P}=x;i?.(b-M,S-P)}h()},m=v=>{v.relatedTarget&&v.relatedTarget!==document.documentElement||f(v)},w=v=>{p&&(v.stopPropagation(),v.preventDefault())},W=v=>{p&&v.preventDefault()};document.addEventListener("pointermove",y),document.addEventListener("pointerup",f),document.addEventListener("pointerout",m),document.addEventListener("pointercancel",m),document.addEventListener("touchmove",W,{passive:!1}),document.addEventListener("click",w,{capture:!0}),h=()=>{document.removeEventListener("pointermove",y),document.removeEventListener("pointerup",f),document.removeEventListener("pointerout",m),document.removeEventListener("pointercancel",m),document.removeEventListener("touchmove",W),setTimeout(()=>{document.removeEventListener("click",w,{capture:!0})},10)}};return r.addEventListener("pointerdown",c),()=>{h(),r.removeEventListener("pointerdown",c)}}function It(r,t){const e=t.xmlns?document.createElementNS(t.xmlns,r):document.createElement(r);for(const[i,s]of Object.entries(t))if(i==="children"&&s)for(const[o,n]of Object.entries(s))n instanceof Node?e.appendChild(n):typeof n=="string"?e.appendChild(document.createTextNode(n)):e.appendChild(It(o,n));else i==="style"?Object.assign(e.style,s):i==="textContent"?e.textContent=s:e.setAttribute(i,s.toString());return e}function X(r,t,e){const i=It(r,t||{});return e?.appendChild(i),i}let st=class extends Zt{constructor(t,e,i=0){var s,o,n,l,h,c,a,u,d,p;super(),this.totalDuration=e,this.numberOfChannels=i,this.element=null,this.minLength=0,this.maxLength=1/0,this.contentEditable=!1,this.subscriptions=[],this.isRemoved=!1,this.subscriptions=[],this.id=t.id||`region-${Math.random().toString(32).slice(2)}`,this.start=this.clampPosition(t.start),this.end=this.clampPosition((s=t.end)!==null&&s!==void 0?s:t.start),this.drag=(o=t.drag)===null||o===void 0||o,this.resize=(n=t.resize)===null||n===void 0||n,this.resizeStart=(l=t.resizeStart)===null||l===void 0||l,this.resizeEnd=(h=t.resizeEnd)===null||h===void 0||h,this.color=(c=t.color)!==null&&c!==void 0?c:"rgba(0, 0, 0, 0.1)",this.minLength=(a=t.minLength)!==null&&a!==void 0?a:this.minLength,this.maxLength=(u=t.maxLength)!==null&&u!==void 0?u:this.maxLength,this.channelIdx=(d=t.channelIdx)!==null&&d!==void 0?d:-1,this.contentEditable=(p=t.contentEditable)!==null&&p!==void 0?p:this.contentEditable,this.element=this.initElement(),this.setContent(t.content),this.setPart(),this.renderPosition(),this.initMouseEvents()}clampPosition(t){return Math.max(0,Math.min(this.totalDuration,t))}setPart(){var t;const e=this.start===this.end;(t=this.element)===null||t===void 0||t.setAttribute("part",`${e?"marker":"region"} ${this.id}`)}addResizeHandles(t){const e={position:"absolute",zIndex:"2",width:"6px",height:"100%",top:"0",cursor:"ew-resize",wordBreak:"keep-all"},i=X("div",{part:"region-handle region-handle-left",style:Object.assign(Object.assign({},e),{left:"0",borderLeft:"2px solid rgba(0, 0, 0, 0.5)",borderRadius:"2px 0 0 2px"})},t),s=X("div",{part:"region-handle region-handle-right",style:Object.assign(Object.assign({},e),{right:"0",borderRight:"2px solid rgba(0, 0, 0, 0.5)",borderRadius:"0 2px 2px 0"})},t);this.subscriptions.push(K(i,o=>this.onResize(o,"start"),()=>null,()=>this.onEndResizing(),1),K(s,o=>this.onResize(o,"end"),()=>null,()=>this.onEndResizing(),1))}removeResizeHandles(t){const e=t.querySelector('[part*="region-handle-left"]'),i=t.querySelector('[part*="region-handle-right"]');e&&t.removeChild(e),i&&t.removeChild(i)}initElement(){if(this.isRemoved)return null;const t=this.start===this.end;let e=0,i=100;this.channelIdx>=0&&this.channelIdx<this.numberOfChannels&&(i=100/this.numberOfChannels,e=i*this.channelIdx);const s=X("div",{style:{position:"absolute",top:`${e}%`,height:`${i}%`,backgroundColor:t?"none":this.color,borderLeft:t?"2px solid "+this.color:"none",borderRadius:"2px",boxSizing:"border-box",transition:"background-color 0.2s ease",cursor:this.drag?"grab":"default",pointerEvents:"all"}});return!t&&this.resize&&this.addResizeHandles(s),s}renderPosition(){if(!this.element)return;const t=this.start/this.totalDuration,e=(this.totalDuration-this.end)/this.totalDuration;this.element.style.left=100*t+"%",this.element.style.right=100*e+"%"}toggleCursor(t){var e;this.drag&&(!((e=this.element)===null||e===void 0)&&e.style)&&(this.element.style.cursor=t?"grabbing":"grab")}initMouseEvents(){const{element:t}=this;t&&(t.addEventListener("click",e=>this.emit("click",e)),t.addEventListener("mouseenter",e=>this.emit("over",e)),t.addEventListener("mouseleave",e=>this.emit("leave",e)),t.addEventListener("dblclick",e=>this.emit("dblclick",e)),t.addEventListener("pointerdown",()=>this.toggleCursor(!0)),t.addEventListener("pointerup",()=>this.toggleCursor(!1)),this.subscriptions.push(K(t,e=>this.onMove(e),()=>this.toggleCursor(!0),()=>{this.toggleCursor(!1),this.drag&&this.emit("update-end")})),this.contentEditable&&this.content&&(this.content.addEventListener("click",e=>this.onContentClick(e)),this.content.addEventListener("blur",()=>this.onContentBlur())))}_onUpdate(t,e){var i;if(!(!((i=this.element)===null||i===void 0)&&i.parentElement))return;const{width:s}=this.element.parentElement.getBoundingClientRect(),o=t/s*this.totalDuration,n=e&&e!=="start"?this.start:this.start+o,l=e&&e!=="end"?this.end:this.end+o,h=l-n;n>=0&&l<=this.totalDuration&&n<=l&&h>=this.minLength&&h<=this.maxLength&&(this.start=n,this.end=l,this.renderPosition(),this.emit("update",e))}onMove(t){this.drag&&this._onUpdate(t)}onResize(t,e){this.resize&&(this.resizeStart||e!=="start")&&(this.resizeEnd||e!=="end")&&this._onUpdate(t,e)}onEndResizing(){this.resize&&this.emit("update-end")}onContentClick(t){t.stopPropagation(),t.target.focus(),this.emit("click",t)}onContentBlur(){this.emit("update-end")}_setTotalDuration(t){this.totalDuration=t,this.renderPosition()}play(t){this.emit("play",t&&this.end!==this.start?this.end:void 0)}getContent(t=!1){var e;return t?this.content||void 0:this.element instanceof HTMLElement?((e=this.content)===null||e===void 0?void 0:e.innerHTML)||void 0:""}setContent(t){var e;if(this.element)if((e=this.content)===null||e===void 0||e.remove(),t){if(typeof t=="string"){const i=this.start===this.end;this.content=X("div",{style:{padding:`0.2em ${i?.2:.4}em`,display:"inline-block"},textContent:t})}else this.content=t;this.contentEditable&&(this.content.contentEditable="true"),this.content.setAttribute("part","region-content"),this.element.appendChild(this.content),this.emit("content-changed")}else this.content=void 0}setOptions(t){var e,i;if(this.element){if(t.color&&(this.color=t.color,this.element.style.backgroundColor=this.color),t.drag!==void 0&&(this.drag=t.drag,this.element.style.cursor=this.drag?"grab":"default"),t.start!==void 0||t.end!==void 0){const s=this.start===this.end;this.start=this.clampPosition((e=t.start)!==null&&e!==void 0?e:this.start),this.end=this.clampPosition((i=t.end)!==null&&i!==void 0?i:s?this.start:this.end),this.renderPosition(),this.setPart()}if(t.content&&this.setContent(t.content),t.id&&(this.id=t.id,this.setPart()),t.resize!==void 0&&t.resize!==this.resize){const s=this.start===this.end;this.resize=t.resize,this.resize&&!s?this.addResizeHandles(this.element):this.removeResizeHandles(this.element)}t.resizeStart!==void 0&&(this.resizeStart=t.resizeStart),t.resizeEnd!==void 0&&(this.resizeEnd=t.resizeEnd)}}remove(){this.isRemoved=!0,this.emit("remove"),this.subscriptions.forEach(t=>t()),this.element&&(this.element.remove(),this.element=null)}},zt=class Ot extends De{constructor(t){super(t),this.regions=[],this.regionsContainer=this.initRegionsContainer()}static create(t){return new Ot(t)}onInit(){if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");this.wavesurfer.getWrapper().appendChild(this.regionsContainer);let t=[];this.subscriptions.push(this.wavesurfer.on("timeupdate",e=>{const i=this.regions.filter(s=>s.start<=e&&(s.end===s.start?s.start+.05:s.end)>=e);i.forEach(s=>{t.includes(s)||this.emit("region-in",s)}),t.forEach(s=>{i.includes(s)||this.emit("region-out",s)}),t=i}))}initRegionsContainer(){return X("div",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",zIndex:"5",pointerEvents:"none"}})}getRegions(){return this.regions}avoidOverlapping(t){t.content&&setTimeout(()=>{const e=t.content,i=e.getBoundingClientRect(),s=this.regions.map(o=>{if(o===t||!o.content)return 0;const n=o.content.getBoundingClientRect();return i.left<n.left+n.width&&n.left<i.left+i.width?n.height:0}).reduce((o,n)=>o+n,0);e.style.marginTop=`${s}px`},10)}adjustScroll(t){var e,i;if(!t.element)return;const s=(i=(e=this.wavesurfer)===null||e===void 0?void 0:e.getWrapper())===null||i===void 0?void 0:i.parentElement;if(!s)return;const{clientWidth:o,scrollWidth:n}=s;if(n<=o)return;const l=s.getBoundingClientRect(),h=t.element.getBoundingClientRect(),c=h.left-l.left,a=h.right-l.left;c<0?s.scrollLeft+=c:a>o&&(s.scrollLeft+=a-o)}virtualAppend(t,e,i){const s=()=>{if(!this.wavesurfer)return;const o=this.wavesurfer.getWidth(),n=this.wavesurfer.getScroll(),l=e.clientWidth,h=this.wavesurfer.getDuration(),c=Math.round(t.start/h*l),a=c+(Math.round((t.end-t.start)/h*l)||1)>n&&c<n+o;a&&!i.parentElement?e.appendChild(i):!a&&i.parentElement&&i.remove()};setTimeout(()=>{if(!this.wavesurfer||!t.element)return;s();const o=this.wavesurfer.on("scroll",s),n=this.wavesurfer.on("zoom",s);this.subscriptions.push(t.once("remove",o),o),this.subscriptions.push(t.once("remove",n),n)},0)}saveRegion(t){if(!t.element)return;this.virtualAppend(t,this.regionsContainer,t.element),this.avoidOverlapping(t),this.regions.push(t);const e=[t.on("update",i=>{i||this.adjustScroll(t),this.emit("region-update",t,i)}),t.on("update-end",()=>{this.avoidOverlapping(t),this.emit("region-updated",t)}),t.on("play",i=>{var s;(s=this.wavesurfer)===null||s===void 0||s.play(t.start,i)}),t.on("click",i=>{this.emit("region-clicked",t,i)}),t.on("dblclick",i=>{this.emit("region-double-clicked",t,i)}),t.on("content-changed",()=>{this.emit("region-content-changed",t)}),t.once("remove",()=>{e.forEach(i=>i()),this.regions=this.regions.filter(i=>i!==t),this.emit("region-removed",t)})];this.subscriptions.push(...e),this.emit("region-created",t)}addRegion(t){var e,i;if(!this.wavesurfer)throw Error("WaveSurfer is not initialized");const s=this.wavesurfer.getDuration(),o=(i=(e=this.wavesurfer)===null||e===void 0?void 0:e.getDecodedData())===null||i===void 0?void 0:i.numberOfChannels,n=new st(t,s,o);return this.emit("region-initialized",n),s?this.saveRegion(n):this.subscriptions.push(this.wavesurfer.once("ready",l=>{n._setTotalDuration(l),this.saveRegion(n)})),n}enableDragSelection(t,e=3){var i;const s=(i=this.wavesurfer)===null||i===void 0?void 0:i.getWrapper();if(!(s&&s instanceof HTMLElement))return()=>{};let o=null,n=0;return K(s,(l,h,c)=>{o&&o._onUpdate(l,c>n?"end":"start")},l=>{var h,c;if(n=l,!this.wavesurfer)return;const a=this.wavesurfer.getDuration(),u=(c=(h=this.wavesurfer)===null||h===void 0?void 0:h.getDecodedData())===null||c===void 0?void 0:c.numberOfChannels,{width:d}=this.wavesurfer.getWrapper().getBoundingClientRect(),p=l/d*a,g=(l+5)/d*a;o=new st(Object.assign(Object.assign({},t),{start:p,end:g}),a,u),this.emit("region-initialized",o),o.element&&this.regionsContainer.appendChild(o.element)},()=>{o&&(this.saveRegion(o),o=null)},e)}clearRegions(){this.regions.slice().forEach(t=>t.remove()),this.regions=[]}destroy(){this.clearRegions(),super.destroy(),this.regionsContainer.remove()}};const Ze=({waveSurfer:r,regionsOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(zt,t);return C.onMounted(()=>{r.value&&i(r.value)}),{regionsPlugin:e}},Ie=({containerRef:r,options:t,regionsOptions:e={}})=>z(zt,{containerRef:r,options:t,pluginOptions:e});function q(r,t,e,i){return new(e||(e=Promise))(function(s,o){function n(c){try{h(i.next(c))}catch(a){o(a)}}function l(c){try{h(i.throw(c))}catch(a){o(a)}}function h(c){var a;c.done?s(c.value):(a=c.value,a instanceof e?a:new e(function(u){u(a)})).then(n,l)}h((i=i.apply(r,[])).next())})}class Gt{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),i?.once){const s=()=>{this.un(t,s),this.un(t,e)};return this.on(t,s),s}return()=>this.un(t,e)}un(t,e){var i;(i=this.listeners[t])===null||i===void 0||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(i=>i(...e))}}class ze extends Gt{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}}class Oe extends Gt{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}}const Ge=["audio/webm","audio/wav","audio/mpeg","audio/mp4","audio/mp3"];class B extends ze{constructor(t){var e,i,s,o,n,l;super(Object.assign(Object.assign({},t),{audioBitsPerSecond:(e=t.audioBitsPerSecond)!==null&&e!==void 0?e:128e3,scrollingWaveform:(i=t.scrollingWaveform)!==null&&i!==void 0&&i,scrollingWaveformWindow:(s=t.scrollingWaveformWindow)!==null&&s!==void 0?s:5,continuousWaveform:(o=t.continuousWaveform)!==null&&o!==void 0&&o,renderRecordedAudio:(n=t.renderRecordedAudio)===null||n===void 0||n,mediaRecorderTimeslice:(l=t.mediaRecorderTimeslice)!==null&&l!==void 0?l:void 0})),this.stream=null,this.mediaRecorder=null,this.dataWindow=null,this.isWaveformPaused=!1,this.lastStartTime=0,this.lastDuration=0,this.duration=0,this.timer=new Oe,this.subscriptions.push(this.timer.on("tick",()=>{const h=performance.now()-this.lastStartTime;this.duration=this.isPaused()?this.duration:this.lastDuration+h,this.emit("record-progress",this.duration)}))}static create(t){return new B(t||{})}renderMicStream(t){var e;const i=new AudioContext,s=i.createMediaStreamSource(t),o=i.createAnalyser();s.connect(o),this.options.continuousWaveform&&(o.fftSize=32);const n=o.frequencyBinCount,l=new Float32Array(n);let h=0;this.wavesurfer&&((e=this.originalOptions)!==null&&e!==void 0||(this.originalOptions=Object.assign({},this.wavesurfer.options)),this.wavesurfer.options.interact=!1,this.options.scrollingWaveform&&(this.wavesurfer.options.cursorWidth=0));const c=setInterval(()=>{var a,u,d,p;if(!this.isWaveformPaused){if(o.getFloatTimeDomainData(l),this.options.scrollingWaveform){const g=Math.floor((this.options.scrollingWaveformWindow||0)*i.sampleRate),y=Math.min(g,this.dataWindow?this.dataWindow.length+n:n),f=new Float32Array(g);if(this.dataWindow){const m=Math.max(0,g-this.dataWindow.length);f.set(this.dataWindow.slice(-y+n),m)}f.set(l,g-n),this.dataWindow=f}else if(this.options.continuousWaveform){if(!this.dataWindow){const y=this.options.continuousWaveformDuration?Math.round(100*this.options.continuousWaveformDuration):((u=(a=this.wavesurfer)===null||a===void 0?void 0:a.getWidth())!==null&&u!==void 0?u:0)*window.devicePixelRatio;this.dataWindow=new Float32Array(y)}let g=0;for(let y=0;y<n;y++){const f=Math.abs(l[y]);f>g&&(g=f)}if(h+1>this.dataWindow.length){const y=new Float32Array(2*this.dataWindow.length);y.set(this.dataWindow,0),this.dataWindow=y}this.dataWindow[h]=g,h++}else this.dataWindow=l;if(this.wavesurfer){const g=((p=(d=this.dataWindow)===null||d===void 0?void 0:d.length)!==null&&p!==void 0?p:0)/100;this.wavesurfer.load("",[this.dataWindow],this.options.scrollingWaveform?this.options.scrollingWaveformWindow:g).then(()=>{this.wavesurfer&&this.options.continuousWaveform&&(this.wavesurfer.setTime(this.getDuration()/1e3),this.wavesurfer.options.minPxPerSec||this.wavesurfer.setOptions({minPxPerSec:this.wavesurfer.getWidth()/this.wavesurfer.getDuration()}))}).catch(y=>{console.error("Error rendering real-time recording data:",y)})}}},10);return{onDestroy:()=>{clearInterval(c),s?.disconnect(),i?.close()},onEnd:()=>{this.isWaveformPaused=!0,clearInterval(c),this.stopMic()}}}startMic(t){return q(this,void 0,void 0,function*(){let e;try{e=yield navigator.mediaDevices.getUserMedia({audio:t==null||t})}catch(o){throw new Error("Error accessing the microphone: "+o.message)}const{onDestroy:i,onEnd:s}=this.renderMicStream(e);return this.subscriptions.push(this.once("destroy",i)),this.subscriptions.push(this.once("record-end",s)),this.stream=e,e})}stopMic(){this.stream&&(this.stream.getTracks().forEach(t=>t.stop()),this.stream=null,this.mediaRecorder=null)}startRecording(t){return q(this,void 0,void 0,function*(){const e=this.stream||(yield this.startMic(t));this.dataWindow=null;const i=this.mediaRecorder||new MediaRecorder(e,{mimeType:this.options.mimeType||Ge.find(n=>MediaRecorder.isTypeSupported(n)),audioBitsPerSecond:this.options.audioBitsPerSecond});this.mediaRecorder=i,this.stopRecording();const s=[];i.ondataavailable=n=>{n.data.size>0&&s.push(n.data),this.emit("record-data-available",n.data)};const o=n=>{var l;const h=new Blob(s,{type:i.mimeType});this.emit(n,h),this.options.renderRecordedAudio&&(this.applyOriginalOptionsIfNeeded(),(l=this.wavesurfer)===null||l===void 0||l.load(URL.createObjectURL(h)))};i.onpause=()=>o("record-pause"),i.onstop=()=>o("record-end"),i.start(this.options.mediaRecorderTimeslice),this.lastStartTime=performance.now(),this.lastDuration=0,this.duration=0,this.isWaveformPaused=!1,this.timer.start(),this.emit("record-start")})}getDuration(){return this.duration}isRecording(){var t;return((t=this.mediaRecorder)===null||t===void 0?void 0:t.state)==="recording"}isPaused(){var t;return((t=this.mediaRecorder)===null||t===void 0?void 0:t.state)==="paused"}isActive(){var t;return((t=this.mediaRecorder)===null||t===void 0?void 0:t.state)!=="inactive"}stopRecording(){var t;this.isActive()&&((t=this.mediaRecorder)===null||t===void 0||t.stop(),this.timer.stop())}pauseRecording(){var t,e;this.isRecording()&&(this.isWaveformPaused=!0,(t=this.mediaRecorder)===null||t===void 0||t.requestData(),(e=this.mediaRecorder)===null||e===void 0||e.pause(),this.timer.stop(),this.lastDuration=this.duration)}resumeRecording(){var t;this.isPaused()&&(this.isWaveformPaused=!1,(t=this.mediaRecorder)===null||t===void 0||t.resume(),this.timer.start(),this.lastStartTime=performance.now(),this.emit("record-resume"))}static getAvailableAudioDevices(){return q(this,void 0,void 0,function*(){return navigator.mediaDevices.enumerateDevices().then(t=>t.filter(e=>e.kind==="audioinput"))})}destroy(){this.applyOriginalOptionsIfNeeded(),super.destroy(),this.stopRecording(),this.stopMic()}applyOriginalOptionsIfNeeded(){this.wavesurfer&&this.originalOptions&&(this.wavesurfer.setOptions(this.originalOptions),delete this.originalOptions)}}const Nt=r=>{const t=C.ref(0),e=C.ref(!1),i=C.ref(!1),s=C.computed(()=>[Math.floor(t.value%36e5/6e4),Math.floor(t.value%6e4/1e3)].map(a=>a<10?"0"+a:a).join(":")),o=C.computed(()=>e.value||!i.value),n=()=>{r.value&&r.value?.on("record-progress",a=>{t.value=a})};return{currentTime:s,startRecording:()=>{if(r.value?.isRecording()||r.value?.isPaused()){r.value?.stopRecording(),e.value=!1,i.value=!0;return}r.value?.startRecording(),e.value=!0,i.value=!1,n()},stopRecording:()=>new Promise(a=>{let u;(r.value?.isRecording()||r.value?.isPaused())&&(r.value?.stopRecording(),e.value=!1,i.value=!1),r.value?.on("record-end",d=>{u=d,a(u)})}),pauseRecording:()=>{if(r.value?.isPaused()){r.value?.resumeRecording(),e.value=!0,i.value=!1;return}e.value=!1,i.value=!0,r.value?.pauseRecording()},isRecording:e,isPaused:i,isPauseResume:o}},Ne=({waveSurfer:r,recordPluginOptions:t={}})=>{const{pluginInstance:e,createPlugin:i}=I(B,{renderRecordedAudio:!1,...t}),s=Nt(e);return C.onMounted(()=>{r.value&&i(r.value)}),{waveSurferRecorder:e,...s}},Xe=({containerRef:r,options:t,recordPluginOptions:e={}})=>{const{waveSurfer:i,pluginInstance:s}=z(B,{containerRef:r,options:t,pluginOptions:{renderRecordedAudio:!1,...e}}),o=Nt(s);return{waveSurfer:i,waveSurferRecorder:s,...o}};exports.WaveSurferPlayer=Vt;exports.useWaveSurfer=nt;exports.useWaveSurferEnvelope=he;exports.useWaveSurferEnvelopeStandalone=ce;exports.useWaveSurferHover=Le;exports.useWaveSurferHoverStandalone=Re;exports.useWaveSurferInstance=tt;exports.useWaveSurferMinimap=re;exports.useWaveSurferMinimapStandalone=oe;exports.useWaveSurferPlugin=I;exports.useWaveSurferPluginStandalone=z;exports.useWaveSurferRecorder=Ne;exports.useWaveSurferRecorderStandalone=Xe;exports.useWaveSurferRegions=Ze;exports.useWaveSurferRegionsStandalone=Ie;exports.useWaveSurferSpectrogram=Ce;exports.useWaveSurferSpectrogramStandalone=Pe;exports.useWaveSurferTimeline=Bt;exports.useWaveSurferTimelineStandalone=Ut;exports.useWaveSurferZoom=Qt;exports.useWaveSurferZoomStandalone=_t;
|