@waveform-playlist/browser 5.0.0-alpha.1 → 5.0.0-alpha.10

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.
package/dist/index.js CHANGED
@@ -1,308 +1,105 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react"),W=require("styled-components");require("react-dom");var Jr=typeof document<"u"?document.currentScript:null;function Hu(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const le=Hu(S),Eo="15.1.22",za=(s,e,t)=>({endTime:e,insertTime:t,type:"exponentialRampToValue",value:s}),Za=(s,e,t)=>({endTime:e,insertTime:t,type:"linearRampToValue",value:s}),uo=(s,e)=>({startTime:e,type:"setValue",value:s}),il=(s,e,t)=>({duration:t,startTime:e,type:"setValueCurve",values:s}),rl=(s,e,{startTime:t,target:n,timeConstant:i})=>n+(e-n)*Math.exp((t-s)/i),Js=s=>s.type==="exponentialRampToValue",qi=s=>s.type==="linearRampToValue",bs=s=>Js(s)||qi(s),Mo=s=>s.type==="setValue",ls=s=>s.type==="setValueCurve",ji=(s,e,t,n)=>{const i=s[e];return i===void 0?n:bs(i)||Mo(i)?i.value:ls(i)?i.values[i.values.length-1]:rl(t,ji(s,e-1,i.startTime,n),i)},Ga=(s,e,t,n,i)=>t===void 0?[n.insertTime,i]:bs(t)?[t.endTime,t.value]:Mo(t)?[t.startTime,t.value]:ls(t)?[t.startTime+t.duration,t.values[t.values.length-1]]:[t.startTime,ji(s,e-1,t.startTime,i)],ho=s=>s.type==="cancelAndHold",po=s=>s.type==="cancelScheduledValues",ys=s=>ho(s)||po(s)?s.cancelTime:Js(s)||qi(s)?s.endTime:s.startTime,Xa=(s,e,t,{endTime:n,value:i})=>t===i?i:0<t&&0<i||t<0&&i<0?t*(i/t)**((s-e)/(n-e)):0,Ha=(s,e,t,{endTime:n,value:i})=>t+(s-e)/(n-e)*(i-t),Yu=(s,e)=>{const t=Math.floor(e),n=Math.ceil(e);return t===n?s[t]:(1-(e-t))*s[t]+(1-(n-e))*s[n]},Uu=(s,{duration:e,startTime:t,values:n})=>{const i=(s-t)/e*(n.length-1);return Yu(n,i)},Ei=s=>s.type==="setTarget";class Ku{constructor(e){this._automationEvents=[],this._currenTime=0,this._defaultValue=e}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(e){const t=ys(e);if(ho(e)||po(e)){const n=this._automationEvents.findIndex(r=>po(e)&&ls(r)?r.startTime+r.duration>=t:ys(r)>=t),i=this._automationEvents[n];if(n!==-1&&(this._automationEvents=this._automationEvents.slice(0,n)),ho(e)){const r=this._automationEvents[this._automationEvents.length-1];if(i!==void 0&&bs(i)){if(r!==void 0&&Ei(r))throw new Error("The internal list is malformed.");const o=r===void 0?i.insertTime:ls(r)?r.startTime+r.duration:ys(r),a=r===void 0?this._defaultValue:ls(r)?r.values[r.values.length-1]:r.value,c=Js(i)?Xa(t,o,a,i):Ha(t,o,a,i),l=Js(i)?za(c,t,this._currenTime):Za(c,t,this._currenTime);this._automationEvents.push(l)}if(r!==void 0&&Ei(r)&&this._automationEvents.push(uo(this.getValue(t),t)),r!==void 0&&ls(r)&&r.startTime+r.duration>t){const o=t-r.startTime,a=(r.values.length-1)/r.duration,c=Math.max(2,1+Math.ceil(o*a)),l=o/(c-1)*a,u=r.values.slice(0,c);if(l<1)for(let h=1;h<c;h+=1){const p=l*h%1;u[h]=r.values[h-1]*(1-p)+r.values[h]*p}this._automationEvents[this._automationEvents.length-1]=il(u,r.startTime,o)}}}else{const n=this._automationEvents.findIndex(o=>ys(o)>t),i=n===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[n-1];if(i!==void 0&&ls(i)&&ys(i)+i.duration>t)return!1;const r=Js(e)?za(e.value,e.endTime,this._currenTime):qi(e)?Za(e.value,t,this._currenTime):e;if(n===-1)this._automationEvents.push(r);else{if(ls(e)&&t+e.duration>ys(this._automationEvents[n]))return!1;this._automationEvents.splice(n,0,r)}}return!0}flush(e){const t=this._automationEvents.findIndex(n=>ys(n)>e);if(t>1){const n=this._automationEvents.slice(t-1),i=n[0];Ei(i)&&n.unshift(uo(ji(this._automationEvents,t-2,i.startTime,this._defaultValue),i.startTime)),this._automationEvents=n}}getValue(e){if(this._automationEvents.length===0)return this._defaultValue;const t=this._automationEvents.findIndex(o=>ys(o)>e),n=this._automationEvents[t],i=(t===-1?this._automationEvents.length:t)-1,r=this._automationEvents[i];if(r!==void 0&&Ei(r)&&(n===void 0||!bs(n)||n.insertTime>e))return rl(e,ji(this._automationEvents,i-1,r.startTime,this._defaultValue),r);if(r!==void 0&&Mo(r)&&(n===void 0||!bs(n)))return r.value;if(r!==void 0&&ls(r)&&(n===void 0||!bs(n)||r.startTime+r.duration>e))return e<r.startTime+r.duration?Uu(e,r):r.values[r.values.length-1];if(r!==void 0&&bs(r)&&(n===void 0||!bs(n)))return r.value;if(n!==void 0&&Js(n)){const[o,a]=Ga(this._automationEvents,i,r,n,this._defaultValue);return Xa(e,o,a,n)}if(n!==void 0&&qi(n)){const[o,a]=Ga(this._automationEvents,i,r,n,this._defaultValue);return Ha(e,o,a,n)}return this._defaultValue}}const Qu=s=>({cancelTime:s,type:"cancelAndHold"}),Ju=s=>({cancelTime:s,type:"cancelScheduledValues"}),eh=(s,e)=>({endTime:e,type:"exponentialRampToValue",value:s}),th=(s,e)=>({endTime:e,type:"linearRampToValue",value:s}),sh=(s,e,t)=>({startTime:e,target:s,timeConstant:t,type:"setTarget"}),nh=()=>new DOMException("","AbortError"),ih=s=>(e,t,[n,i,r],o)=>{s(e[i],[t,n,r],a=>a[0]===t&&a[1]===n,o)},rh=s=>(e,t,n)=>{const i=[];for(let r=0;r<n.numberOfInputs;r+=1)i.push(new Set);s.set(e,{activeInputs:i,outputs:new Set,passiveInputs:new WeakMap,renderer:t})},oh=s=>(e,t)=>{s.set(e,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:t})},rn=new WeakSet,ol=new WeakMap,Oo=new WeakMap,al=new WeakMap,No=new WeakMap,ir=new WeakMap,cl=new WeakMap,fo=new WeakMap,mo=new WeakMap,go=new WeakMap,ll={construct(){return ll}},ah=s=>{try{const e=new Proxy(s,ll);new e}catch{return!1}return!0},Ya=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,Ua=(s,e)=>{const t=[];let n=s.replace(/^[\s]+/,""),i=n.match(Ya);for(;i!==null;){const r=i[1].slice(1,-1),o=i[0].replace(/([\s]+)?;?$/,"").replace(r,new URL(r,e).toString());t.push(o),n=n.slice(i[0].length).replace(/^[\s]+/,""),i=n.match(Ya)}return[t.join(";"),n]},Ka=s=>{if(s!==void 0&&!Array.isArray(s))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},Qa=s=>{if(!ah(s))throw new TypeError("The given value for processorCtor should be a constructor.");if(s.prototype===null||typeof s.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},ch=(s,e,t,n,i,r,o,a,c,l,u,h,p)=>{let d=0;return(f,_,m={credentials:"omit"})=>{const g=u.get(f);if(g!==void 0&&g.has(_))return Promise.resolve();const y=l.get(f);if(y!==void 0){const v=y.get(_);if(v!==void 0)return v}const x=r(f),w=x.audioWorklet===void 0?i(_).then(([v,b])=>{const[k,T]=Ua(v,b),R=`${k};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${T}
2
- })})(window,'_AWGS')`;return t(R)}).then(()=>{const v=p._AWGS.pop();if(v===void 0)throw new SyntaxError;n(x.currentTime,x.sampleRate,()=>v(class{},void 0,(b,k)=>{if(b.trim()==="")throw e();const T=mo.get(x);if(T!==void 0){if(T.has(b))throw e();Qa(k),Ka(k.parameterDescriptors),T.set(b,k)}else Qa(k),Ka(k.parameterDescriptors),mo.set(x,new Map([[b,k]]))},x.sampleRate,void 0,void 0))}):Promise.all([i(_),Promise.resolve(s(h,h))]).then(([[v,b],k])=>{const T=d+1;d=T;const[R,I]=Ua(v,b),N=`${R};((AudioWorkletProcessor,registerProcessor)=>{${I}
3
- })(${k?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${k?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${k?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${T}',class extends AudioWorkletProcessor{process(){return !1}})`,q=new Blob([N],{type:"application/javascript; charset=utf-8"}),V=URL.createObjectURL(q);return x.audioWorklet.addModule(V,m).then(()=>{if(a(x))return x;const j=o(x);return j.audioWorklet.addModule(V,m).then(()=>j)}).then(j=>{if(c===null)throw new SyntaxError;try{new c(j,`__sac${T}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(V))});return y===void 0?l.set(f,new Map([[_,w]])):y.set(_,w),w.then(()=>{const v=u.get(f);v===void 0?u.set(f,new Set([_])):v.add(_)}).finally(()=>{const v=l.get(f);v!==void 0&&v.delete(_)}),w}},Zt=(s,e)=>{const t=s.get(e);if(t===void 0)throw new Error("A value with the given key could not be found.");return t},rr=(s,e)=>{const t=Array.from(s).filter(e);if(t.length>1)throw Error("More than one element was found.");if(t.length===0)throw Error("No element was found.");const[n]=t;return s.delete(n),n},ul=(s,e,t,n)=>{const i=Zt(s,e),r=rr(i,o=>o[0]===t&&o[1]===n);return i.size===0&&s.delete(e),r},ti=s=>Zt(cl,s),on=s=>{if(rn.has(s))throw new Error("The AudioNode is already stored.");rn.add(s),ti(s).forEach(e=>e(!0))},hl=s=>"port"in s,si=s=>{if(!rn.has(s))throw new Error("The AudioNode is not stored.");rn.delete(s),ti(s).forEach(e=>e(!1))},_o=(s,e)=>{!hl(s)&&e.every(t=>t.size===0)&&si(s)},lh=(s,e,t,n,i,r,o,a,c,l,u,h,p)=>{const d=new WeakMap;return(f,_,m,g,y)=>{const{activeInputs:x,passiveInputs:w}=r(_),{outputs:v}=r(f),b=a(f),k=T=>{const R=c(_),I=c(f);if(T){const A=ul(w,f,m,g);s(x,f,A,!1),!y&&!h(f)&&t(I,R,m,g),p(_)&&on(_)}else{const A=n(x,f,m,g);e(w,g,A,!1),!y&&!h(f)&&i(I,R,m,g);const D=o(_);if(D===0)u(_)&&_o(_,x);else{const M=d.get(_);M!==void 0&&clearTimeout(M),d.set(_,setTimeout(()=>{u(_)&&_o(_,x)},D*1e3))}}};return l(v,[_,m,g],T=>T[0]===_&&T[1]===m&&T[2]===g,!0)?(b.add(k),u(f)?s(x,f,[m,g,k],!0):e(w,g,[f,m,k],!0),!0):!1}},uh=s=>(e,t,[n,i,r],o)=>{const a=e.get(n);a===void 0?e.set(n,new Set([[i,t,r]])):s(a,[i,t,r],c=>c[0]===i&&c[1]===t,o)},hh=s=>(e,t)=>{const n=s(e,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});t.connect(n).connect(e.destination);const i=()=>{t.removeEventListener("ended",i),t.disconnect(n),n.disconnect()};t.addEventListener("ended",i)},dh=s=>(e,t)=>{s(e).add(t)},ph={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},fh=(s,e,t,n,i,r)=>class extends s{constructor(a,c){const l=i(a),u={...ph,...c},h=n(l,u),p=r(l)?e():null;super(a,!1,h,p),this._nativeAnalyserNode=h}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(a){this._nativeAnalyserNode.fftSize=a}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(a){const c=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=a,!(a>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=c,t()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(a){const c=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=a,!(this._nativeAnalyserNode.maxDecibels>a))throw this._nativeAnalyserNode.minDecibels=c,t()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(a){this._nativeAnalyserNode.smoothingTimeConstant=a}getByteFrequencyData(a){this._nativeAnalyserNode.getByteFrequencyData(a)}getByteTimeDomainData(a){this._nativeAnalyserNode.getByteTimeDomainData(a)}getFloatFrequencyData(a){this._nativeAnalyserNode.getFloatFrequencyData(a)}getFloatTimeDomainData(a){this._nativeAnalyserNode.getFloatTimeDomainData(a)}},ft=(s,e)=>s.context===e,mh=(s,e,t)=>()=>{const n=new WeakMap,i=async(r,o)=>{let a=e(r);if(!ft(a,o)){const l={channelCount:a.channelCount,channelCountMode:a.channelCountMode,channelInterpretation:a.channelInterpretation,fftSize:a.fftSize,maxDecibels:a.maxDecibels,minDecibels:a.minDecibels,smoothingTimeConstant:a.smoothingTimeConstant};a=s(o,l)}return n.set(o,a),await t(r,o,a),a};return{render(r,o){const a=n.get(o);return a!==void 0?Promise.resolve(a):i(r,o)}}},Li=s=>{try{s.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},ss=()=>new DOMException("","IndexSizeError"),Fo=s=>{s.getChannelData=(e=>t=>{try{return e.call(s,t)}catch(n){throw n.code===12?ss():n}})(s.getChannelData)},gh={numberOfChannels:1},_h=(s,e,t,n,i,r,o,a)=>{let c=null;return class dl{constructor(u){if(i===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:h,numberOfChannels:p,sampleRate:d}={...gh,...u};c===null&&(c=new i(1,1,44100));const f=n!==null&&e(r,r)?new n({length:h,numberOfChannels:p,sampleRate:d}):c.createBuffer(p,h,d);if(f.numberOfChannels===0)throw t();return typeof f.copyFromChannel!="function"?(o(f),Fo(f)):e(Li,()=>Li(f))||a(f),s.add(f),f}static[Symbol.hasInstance](u){return u!==null&&typeof u=="object"&&Object.getPrototypeOf(u)===dl.prototype||s.has(u)}}},St=-34028234663852886e22,mt=-St,ds=s=>rn.has(s),vh={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},yh=(s,e,t,n,i,r,o,a)=>class extends s{constructor(l,u){const h=r(l),p={...vh,...u},d=i(h,p),f=o(h),_=f?e():null;super(l,!1,d,_),this._audioBufferSourceNodeRenderer=_,this._isBufferNullified=!1,this._isBufferSet=p.buffer!==null,this._nativeAudioBufferSourceNode=d,this._onended=null,this._playbackRate=t(this,f,d.playbackRate,mt,St)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer(l){if(this._nativeAudioBufferSourceNode.buffer=l,l!==null){if(this._isBufferSet)throw n();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop(l){this._nativeAudioBufferSourceNode.loop=l}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd(l){this._nativeAudioBufferSourceNode.loopEnd=l}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart(l){this._nativeAudioBufferSourceNode.loopStart=l}get onended(){return this._onended}set onended(l){const u=typeof l=="function"?a(this,l):null;this._nativeAudioBufferSourceNode.onended=u;const h=this._nativeAudioBufferSourceNode.onended;this._onended=h!==null&&h===u?l:h}get playbackRate(){return this._playbackRate}start(l=0,u=0,h){if(this._nativeAudioBufferSourceNode.start(l,u,h),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=h===void 0?[l,u]:[l,u,h]),this.context.state!=="closed"){on(this);const p=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",p),ds(this)&&si(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",p)}}stop(l=0){this._nativeAudioBufferSourceNode.stop(l),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=l)}},bh=(s,e,t,n,i)=>()=>{const r=new WeakMap;let o=null,a=null;const c=async(l,u)=>{let h=t(l);const p=ft(h,u);if(!p){const d={buffer:h.buffer,channelCount:h.channelCount,channelCountMode:h.channelCountMode,channelInterpretation:h.channelInterpretation,loop:h.loop,loopEnd:h.loopEnd,loopStart:h.loopStart,playbackRate:h.playbackRate.value};h=e(u,d),o!==null&&h.start(...o),a!==null&&h.stop(a)}return r.set(u,h),p?await s(u,l.playbackRate,h.playbackRate):await n(u,l.playbackRate,h.playbackRate),await i(l,u,h),h};return{set start(l){o=l},set stop(l){a=l},render(l,u){const h=r.get(u);return h!==void 0?Promise.resolve(h):c(l,u)}}},wh=s=>"playbackRate"in s,xh=s=>"frequency"in s&&"gain"in s,Ch=s=>"offset"in s,Sh=s=>!("frequency"in s)&&"gain"in s,Th=s=>"detune"in s&&"frequency"in s&&!("gain"in s),kh=s=>"pan"in s,_t=s=>Zt(ol,s),ni=s=>Zt(al,s),vo=(s,e)=>{const{activeInputs:t}=_t(s);t.forEach(i=>i.forEach(([r])=>{e.includes(s)||vo(r,[...e,s])}));const n=wh(s)?[s.playbackRate]:hl(s)?Array.from(s.parameters.values()):xh(s)?[s.Q,s.detune,s.frequency,s.gain]:Ch(s)?[s.offset]:Sh(s)?[s.gain]:Th(s)?[s.detune,s.frequency]:kh(s)?[s.pan]:[];for(const i of n){const r=ni(i);r!==void 0&&r.activeInputs.forEach(([o])=>vo(o,e))}ds(s)&&si(s)},pl=s=>{vo(s.destination,[])},Ah=s=>s===void 0||typeof s=="number"||typeof s=="string"&&(s==="balanced"||s==="interactive"||s==="playback"),Ih=(s,e,t,n,i,r,o,a,c)=>class extends s{constructor(u={}){if(c===null)throw new Error("Missing the native AudioContext constructor.");let h;try{h=new c(u)}catch(f){throw f.code===12&&f.message==="sampleRate is not in range"?t():f}if(h===null)throw n();if(!Ah(u.latencyHint))throw new TypeError(`The provided value '${u.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(u.sampleRate!==void 0&&h.sampleRate!==u.sampleRate)throw t();super(h,2);const{latencyHint:p}=u,{sampleRate:d}=h;if(this._baseLatency=typeof h.baseLatency=="number"?h.baseLatency:p==="balanced"?512/d:p==="interactive"||p===void 0?256/d:p==="playback"?1024/d:Math.max(2,Math.min(128,Math.round(p*d/128)))*128/d,this._nativeAudioContext=h,c.name==="webkitAudioContext"?(this._nativeGainNode=h.createGain(),this._nativeOscillatorNode=h.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(h.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,h.state==="running"){this._state="suspended";const f=()=>{this._state==="suspended"&&(this._state=null),h.removeEventListener("statechange",f)};h.addEventListener("statechange",f)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw e()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),pl(this)}))}createMediaElementSource(u){return new i(this,{mediaElement:u})}createMediaStreamDestination(){return new r(this)}createMediaStreamSource(u){return new o(this,{mediaStream:u})}createMediaStreamTrackSource(u){return new a(this,{mediaStreamTrack:u})}resume(){return this._state==="suspended"?new Promise((u,h)=>{const p=()=>{this._nativeAudioContext.removeEventListener("statechange",p),this._nativeAudioContext.state==="running"?u():this.resume().then(u,h)};this._nativeAudioContext.addEventListener("statechange",p)}):this._nativeAudioContext.resume().catch(u=>{throw u===void 0||u.code===15?e():u})}suspend(){return this._nativeAudioContext.suspend().catch(u=>{throw u===void 0?e():u})}},Dh=(s,e,t,n,i,r,o,a)=>class extends s{constructor(l,u){const h=r(l),p=o(h),d=i(h,u,p),f=p?e(a):null;super(l,!1,d,f),this._isNodeOfNativeOfflineAudioContext=p,this._nativeAudioDestinationNode=d}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount(l){if(this._isNodeOfNativeOfflineAudioContext)throw n();if(l>this._nativeAudioDestinationNode.maxChannelCount)throw t();this._nativeAudioDestinationNode.channelCount=l}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode(l){if(this._isNodeOfNativeOfflineAudioContext)throw n();this._nativeAudioDestinationNode.channelCountMode=l}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},Rh=s=>{const e=new WeakMap,t=async(n,i)=>{const r=i.destination;return e.set(i,r),await s(n,i,r),r};return{render(n,i){const r=e.get(i);return r!==void 0?Promise.resolve(r):t(n,i)}}},Eh=(s,e,t,n,i,r,o,a)=>(c,l)=>{const u=l.listener,h=()=>{const v=new Float32Array(1),b=e(l,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),k=o(l);let T=!1,R=[0,0,-1,0,1,0],I=[0,0,0];const A=()=>{if(T)return;T=!0;const q=n(l,256,9,0);q.onaudioprocess=({inputBuffer:V})=>{const j=[r(V,v,0),r(V,v,1),r(V,v,2),r(V,v,3),r(V,v,4),r(V,v,5)];j.some((B,Z)=>B!==R[Z])&&(u.setOrientation(...j),R=j);const G=[r(V,v,6),r(V,v,7),r(V,v,8)];G.some((B,Z)=>B!==I[Z])&&(u.setPosition(...G),I=G)},b.connect(q)},D=q=>V=>{V!==R[q]&&(R[q]=V,u.setOrientation(...R))},M=q=>V=>{V!==I[q]&&(I[q]=V,u.setPosition(...I))},N=(q,V,j)=>{const G=t(l,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:V});G.connect(b,0,q),G.start(),Object.defineProperty(G.offset,"defaultValue",{get(){return V}});const B=s({context:c},k,G.offset,mt,St);return a(B,"value",Z=>()=>Z.call(B),Z=>X=>{try{Z.call(B,X)}catch(ee){if(ee.code!==9)throw ee}A(),k&&j(X)}),B.cancelAndHoldAtTime=(Z=>k?()=>{throw i()}:(...X)=>{const ee=Z.apply(B,X);return A(),ee})(B.cancelAndHoldAtTime),B.cancelScheduledValues=(Z=>k?()=>{throw i()}:(...X)=>{const ee=Z.apply(B,X);return A(),ee})(B.cancelScheduledValues),B.exponentialRampToValueAtTime=(Z=>k?()=>{throw i()}:(...X)=>{const ee=Z.apply(B,X);return A(),ee})(B.exponentialRampToValueAtTime),B.linearRampToValueAtTime=(Z=>k?()=>{throw i()}:(...X)=>{const ee=Z.apply(B,X);return A(),ee})(B.linearRampToValueAtTime),B.setTargetAtTime=(Z=>k?()=>{throw i()}:(...X)=>{const ee=Z.apply(B,X);return A(),ee})(B.setTargetAtTime),B.setValueAtTime=(Z=>k?()=>{throw i()}:(...X)=>{const ee=Z.apply(B,X);return A(),ee})(B.setValueAtTime),B.setValueCurveAtTime=(Z=>k?()=>{throw i()}:(...X)=>{const ee=Z.apply(B,X);return A(),ee})(B.setValueCurveAtTime),B};return{forwardX:N(0,0,D(0)),forwardY:N(1,0,D(1)),forwardZ:N(2,-1,D(2)),positionX:N(6,0,M(0)),positionY:N(7,0,M(1)),positionZ:N(8,0,M(2)),upX:N(3,0,D(3)),upY:N(4,1,D(4)),upZ:N(5,0,D(5))}},{forwardX:p,forwardY:d,forwardZ:f,positionX:_,positionY:m,positionZ:g,upX:y,upY:x,upZ:w}=u.forwardX===void 0?h():u;return{get forwardX(){return p},get forwardY(){return d},get forwardZ(){return f},get positionX(){return _},get positionY(){return m},get positionZ(){return g},get upX(){return y},get upY(){return x},get upZ(){return w}}},zi=s=>"context"in s,ii=s=>zi(s[0]),Bs=(s,e,t,n)=>{for(const i of s)if(t(i)){if(n)return!1;throw Error("The set contains at least one similar element.")}return s.add(e),!0},Ja=(s,e,[t,n],i)=>{Bs(s,[e,t,n],r=>r[0]===e&&r[1]===t,i)},ec=(s,[e,t,n],i)=>{const r=s.get(e);r===void 0?s.set(e,new Set([[t,n]])):Bs(r,[t,n],o=>o[0]===t,i)},pn=s=>"inputs"in s,Zi=(s,e,t,n)=>{if(pn(e)){const i=e.inputs[n];return s.connect(i,t,0),[i,t,0]}return s.connect(e,t,n),[e,t,n]},fl=(s,e,t)=>{for(const n of s)if(n[0]===e&&n[1]===t)return s.delete(n),n;return null},Mh=(s,e,t)=>rr(s,n=>n[0]===e&&n[1]===t),ml=(s,e)=>{if(!ti(s).delete(e))throw new Error("Missing the expected event listener.")},gl=(s,e,t)=>{const n=Zt(s,e),i=rr(n,r=>r[0]===t);return n.size===0&&s.delete(e),i},Gi=(s,e,t,n)=>{pn(e)?s.disconnect(e.inputs[n],t,0):s.disconnect(e,t,n)},Re=s=>Zt(Oo,s),Gn=s=>Zt(No,s),Ps=s=>fo.has(s),Wi=s=>!rn.has(s),tc=(s,e)=>new Promise(t=>{if(e!==null)t(!0);else{const n=s.createScriptProcessor(256,1,1),i=s.createGain(),r=s.createBuffer(1,2,44100),o=r.getChannelData(0);o[0]=1,o[1]=1;const a=s.createBufferSource();a.buffer=r,a.loop=!0,a.connect(n).connect(s.destination),a.connect(i),a.disconnect(i),n.onaudioprocess=c=>{const l=c.inputBuffer.getChannelData(0);Array.prototype.some.call(l,u=>u===1)?t(!0):t(!1),a.stop(),n.onaudioprocess=null,a.disconnect(n),n.disconnect(s.destination)},a.start()}}),eo=(s,e)=>{const t=new Map;for(const n of s)for(const i of n){const r=t.get(i);t.set(i,r===void 0?1:r+1)}t.forEach((n,i)=>e(i,n))},Xi=s=>"context"in s,Oh=s=>{const e=new Map;s.connect=(t=>(n,i=0,r=0)=>{const o=Xi(n)?t(n,i,r):t(n,i),a=e.get(n);return a===void 0?e.set(n,[{input:r,output:i}]):a.every(c=>c.input!==r||c.output!==i)&&a.push({input:r,output:i}),o})(s.connect.bind(s)),s.disconnect=(t=>(n,i,r)=>{if(t.apply(s),n===void 0)e.clear();else if(typeof n=="number")for(const[o,a]of e){const c=a.filter(l=>l.output!==n);c.length===0?e.delete(o):e.set(o,c)}else if(e.has(n))if(i===void 0)e.delete(n);else{const o=e.get(n);if(o!==void 0){const a=o.filter(c=>c.output!==i&&(c.input!==r||r===void 0));a.length===0?e.delete(n):e.set(n,a)}}for(const[o,a]of e)a.forEach(c=>{Xi(o)?s.connect(o,c.output,c.input):s.connect(o,c.output)})})(s.disconnect)},Nh=(s,e,t,n)=>{const{activeInputs:i,passiveInputs:r}=ni(e),{outputs:o}=_t(s),a=ti(s),c=l=>{const u=Re(s),h=Gn(e);if(l){const p=gl(r,s,t);Ja(i,s,p,!1),!n&&!Ps(s)&&u.connect(h,t)}else{const p=Mh(i,s,t);ec(r,p,!1),!n&&!Ps(s)&&u.disconnect(h,t)}};return Bs(o,[e,t],l=>l[0]===e&&l[1]===t,!0)?(a.add(c),ds(s)?Ja(i,s,[t,c],!0):ec(r,[s,t,c],!0),!0):!1},Fh=(s,e,t,n)=>{const{activeInputs:i,passiveInputs:r}=_t(e),o=fl(i[n],s,t);return o===null?[ul(r,s,t,n)[2],!1]:[o[2],!0]},Vh=(s,e,t)=>{const{activeInputs:n,passiveInputs:i}=ni(e),r=fl(n,s,t);return r===null?[gl(i,s,t)[1],!1]:[r[2],!0]},Vo=(s,e,t,n,i)=>{const[r,o]=Fh(s,t,n,i);if(r!==null&&(ml(s,r),o&&!e&&!Ps(s)&&Gi(Re(s),Re(t),n,i)),ds(t)){const{activeInputs:a}=_t(t);_o(t,a)}},Po=(s,e,t,n)=>{const[i,r]=Vh(s,t,n);i!==null&&(ml(s,i),r&&!e&&!Ps(s)&&Re(s).disconnect(Gn(t),n))},Ph=(s,e)=>{const t=_t(s),n=[];for(const i of t.outputs)ii(i)?Vo(s,e,...i):Po(s,e,...i),n.push(i[0]);return t.outputs.clear(),n},Wh=(s,e,t)=>{const n=_t(s),i=[];for(const r of n.outputs)r[1]===t&&(ii(r)?Vo(s,e,...r):Po(s,e,...r),i.push(r[0]),n.outputs.delete(r));return i},Bh=(s,e,t,n,i)=>{const r=_t(s);return Array.from(r.outputs).filter(o=>o[0]===t&&(n===void 0||o[1]===n)&&(i===void 0||o[2]===i)).map(o=>(ii(o)?Vo(s,e,...o):Po(s,e,...o),r.outputs.delete(o),o[0]))},$h=(s,e,t,n,i,r,o,a,c,l,u,h,p,d,f,_)=>class extends l{constructor(g,y,x,w){super(x),this._context=g,this._nativeAudioNode=x;const v=u(g);h(v)&&t(tc,()=>tc(v,_))!==!0&&Oh(x),Oo.set(this,x),cl.set(this,new Set),g.state!=="closed"&&y&&on(this),s(this,w,x)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(g){this._nativeAudioNode.channelCount=g}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(g){this._nativeAudioNode.channelCountMode=g}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(g){this._nativeAudioNode.channelInterpretation=g}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(g,y=0,x=0){if(y<0||y>=this._nativeAudioNode.numberOfOutputs)throw i();const w=u(this._context),v=f(w);if(p(g)||d(g))throw r();if(zi(g)){const T=Re(g);try{const I=Zi(this._nativeAudioNode,T,y,x),A=Wi(this);(v||A)&&this._nativeAudioNode.disconnect(...I),this.context.state!=="closed"&&!A&&Wi(g)&&on(g)}catch(I){throw I.code===12?r():I}if(e(this,g,y,x,v)){const I=c([this],g);eo(I,n(v))}return g}const b=Gn(g);if(b.name==="playbackRate"&&b.maxValue===1024)throw o();try{this._nativeAudioNode.connect(b,y),(v||Wi(this))&&this._nativeAudioNode.disconnect(b,y)}catch(T){throw T.code===12?r():T}if(Nh(this,g,y,v)){const T=c([this],g);eo(T,n(v))}}disconnect(g,y,x){let w;const v=u(this._context),b=f(v);if(g===void 0)w=Ph(this,b);else if(typeof g=="number"){if(g<0||g>=this.numberOfOutputs)throw i();w=Wh(this,b,g)}else{if(y!==void 0&&(y<0||y>=this.numberOfOutputs)||zi(g)&&x!==void 0&&(x<0||x>=g.numberOfInputs))throw i();if(w=Bh(this,b,g,y,x),w.length===0)throw r()}for(const k of w){const T=c([this],k);eo(T,a)}}},qh=(s,e,t,n,i,r,o,a,c,l,u,h,p)=>(d,f,_,m=null,g=null)=>{const y=_.value,x=new Ku(y),w=f?n(x):null,v={get defaultValue(){return y},get maxValue(){return m===null?_.maxValue:m},get minValue(){return g===null?_.minValue:g},get value(){return _.value},set value(b){_.value=b,v.setValueAtTime(b,d.context.currentTime)},cancelAndHoldAtTime(b){if(typeof _.cancelAndHoldAtTime=="function")w===null&&x.flush(d.context.currentTime),x.add(i(b)),_.cancelAndHoldAtTime(b);else{const k=Array.from(x).pop();w===null&&x.flush(d.context.currentTime),x.add(i(b));const T=Array.from(x).pop();_.cancelScheduledValues(b),k!==T&&T!==void 0&&(T.type==="exponentialRampToValue"?_.exponentialRampToValueAtTime(T.value,T.endTime):T.type==="linearRampToValue"?_.linearRampToValueAtTime(T.value,T.endTime):T.type==="setValue"?_.setValueAtTime(T.value,T.startTime):T.type==="setValueCurve"&&_.setValueCurveAtTime(T.values,T.startTime,T.duration))}return v},cancelScheduledValues(b){return w===null&&x.flush(d.context.currentTime),x.add(r(b)),_.cancelScheduledValues(b),v},exponentialRampToValueAtTime(b,k){if(b===0)throw new RangeError;if(!Number.isFinite(k)||k<0)throw new RangeError;const T=d.context.currentTime;return w===null&&x.flush(T),Array.from(x).length===0&&(x.add(l(y,T)),_.setValueAtTime(y,T)),x.add(o(b,k)),_.exponentialRampToValueAtTime(b,k),v},linearRampToValueAtTime(b,k){const T=d.context.currentTime;return w===null&&x.flush(T),Array.from(x).length===0&&(x.add(l(y,T)),_.setValueAtTime(y,T)),x.add(a(b,k)),_.linearRampToValueAtTime(b,k),v},setTargetAtTime(b,k,T){return w===null&&x.flush(d.context.currentTime),x.add(c(b,k,T)),_.setTargetAtTime(b,k,T),v},setValueAtTime(b,k){return w===null&&x.flush(d.context.currentTime),x.add(l(b,k)),_.setValueAtTime(b,k),v},setValueCurveAtTime(b,k,T){const R=b instanceof Float32Array?b:new Float32Array(b);if(h!==null&&h.name==="webkitAudioContext"){const I=k+T,A=d.context.sampleRate,D=Math.ceil(k*A),M=Math.floor(I*A),N=M-D,q=new Float32Array(N);for(let j=0;j<N;j+=1){const G=(R.length-1)/T*((D+j)/A-k),B=Math.floor(G),Z=Math.ceil(G);q[j]=B===Z?R[B]:(1-(G-B))*R[B]+(1-(Z-G))*R[Z]}w===null&&x.flush(d.context.currentTime),x.add(u(q,k,T)),_.setValueCurveAtTime(q,k,T);const V=M/A;V<I&&p(v,q[q.length-1],V),p(v,R[R.length-1],I)}else w===null&&x.flush(d.context.currentTime),x.add(u(R,k,T)),_.setValueCurveAtTime(R,k,T);return v}};return t.set(v,_),e.set(v,d),s(v,w),v},jh=s=>({replay(e){for(const t of s)if(t.type==="exponentialRampToValue"){const{endTime:n,value:i}=t;e.exponentialRampToValueAtTime(i,n)}else if(t.type==="linearRampToValue"){const{endTime:n,value:i}=t;e.linearRampToValueAtTime(i,n)}else if(t.type==="setTarget"){const{startTime:n,target:i,timeConstant:r}=t;e.setTargetAtTime(i,n,r)}else if(t.type==="setValue"){const{startTime:n,value:i}=t;e.setValueAtTime(i,n)}else if(t.type==="setValueCurve"){const{duration:n,startTime:i,values:r}=t;e.setValueCurveAtTime(r,i,n)}else throw new Error("Can't apply an unknown automation.")}});class _l{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,t=null){return this._map.forEach((n,i)=>e.call(t,n,i,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}}const Lh={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},zh=(s,e,t,n,i,r,o,a,c,l,u,h,p,d)=>class extends e{constructor(_,m,g){var y;const x=a(_),w=c(x),v=u({...Lh,...g});p(v);const b=mo.get(x),k=b?.get(m),T=w||x.state!=="closed"?x:(y=o(x))!==null&&y!==void 0?y:x,R=i(T,w?null:_.baseLatency,l,m,k,v),I=w?n(m,v,k):null;super(_,!0,R,I);const A=[];R.parameters.forEach((M,N)=>{const q=t(this,w,M);A.push([N,q])}),this._nativeAudioWorkletNode=R,this._onprocessorerror=null,this._parameters=new _l(A),w&&s(x,this);const{activeInputs:D}=r(this);h(R,D)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(_){const m=typeof _=="function"?d(this,_):null;this._nativeAudioWorkletNode.onprocessorerror=m;const g=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=g!==null&&g===m?_:g}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function Hi(s,e,t,n,i){if(typeof s.copyFromChannel=="function")e[t].byteLength===0&&(e[t]=new Float32Array(128)),s.copyFromChannel(e[t],n,i);else{const r=s.getChannelData(n);if(e[t].byteLength===0)e[t]=r.slice(i,i+128);else{const o=new Float32Array(r.buffer,i*Float32Array.BYTES_PER_ELEMENT,128);e[t].set(o)}}}const vl=(s,e,t,n,i)=>{typeof s.copyToChannel=="function"?e[t].byteLength!==0&&s.copyToChannel(e[t],n,i):e[t].byteLength!==0&&s.getChannelData(n).set(e[t],i)},Yi=(s,e)=>{const t=[];for(let n=0;n<s;n+=1){const i=[],r=typeof e=="number"?e:e[n];for(let o=0;o<r;o+=1)i.push(new Float32Array(128));t.push(i)}return t},Zh=(s,e)=>{const t=Zt(go,s),n=Re(e);return Zt(t,n)},Gh=async(s,e,t,n,i,r,o)=>{const a=e===null?Math.ceil(s.context.length/128)*128:e.length,c=n.channelCount*n.numberOfInputs,l=i.reduce((m,g)=>m+g,0),u=l===0?null:t.createBuffer(l,a,t.sampleRate);if(r===void 0)throw new Error("Missing the processor constructor.");const h=_t(s),p=await Zh(t,s),d=Yi(n.numberOfInputs,n.channelCount),f=Yi(n.numberOfOutputs,i),_=Array.from(s.parameters.keys()).reduce((m,g)=>({...m,[g]:new Float32Array(128)}),{});for(let m=0;m<a;m+=128){if(n.numberOfInputs>0&&e!==null)for(let g=0;g<n.numberOfInputs;g+=1)for(let y=0;y<n.channelCount;y+=1)Hi(e,d[g],y,y,m);r.parameterDescriptors!==void 0&&e!==null&&r.parameterDescriptors.forEach(({name:g},y)=>{Hi(e,_,g,c+y,m)});for(let g=0;g<n.numberOfInputs;g+=1)for(let y=0;y<i[g];y+=1)f[g][y].byteLength===0&&(f[g][y]=new Float32Array(128));try{const g=d.map((x,w)=>h.activeInputs[w].size===0?[]:x),y=o(m/t.sampleRate,t.sampleRate,()=>p.process(g,f,_));if(u!==null)for(let x=0,w=0;x<n.numberOfOutputs;x+=1){for(let v=0;v<i[x];v+=1)vl(u,f[x],v,w+v,m);w+=i[x]}if(!y)break}catch(g){s.dispatchEvent(new ErrorEvent("processorerror",{colno:g.colno,filename:g.filename,lineno:g.lineno,message:g.message}));break}}return u},Xh=(s,e,t,n,i,r,o,a,c,l,u,h,p,d,f,_)=>(m,g,y)=>{const x=new WeakMap;let w=null;const v=async(b,k)=>{let T=u(b),R=null;const I=ft(T,k),A=Array.isArray(g.outputChannelCount)?g.outputChannelCount:Array.from(g.outputChannelCount);if(h===null){const D=A.reduce((V,j)=>V+j,0),M=i(k,{channelCount:Math.max(1,D),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,D)}),N=[];for(let V=0;V<b.numberOfOutputs;V+=1)N.push(n(k,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:A[V]}));const q=o(k,{channelCount:g.channelCount,channelCountMode:g.channelCountMode,channelInterpretation:g.channelInterpretation,gain:1});q.connect=e.bind(null,N),q.disconnect=c.bind(null,N),R=[M,N,q]}else I||(T=new h(k,m));if(x.set(k,R===null?T:R[2]),R!==null){if(w===null){if(y===void 0)throw new Error("Missing the processor constructor.");if(p===null)throw new Error("Missing the native OfflineAudioContext constructor.");const j=b.channelCount*b.numberOfInputs,G=y.parameterDescriptors===void 0?0:y.parameterDescriptors.length,B=j+G;w=Gh(b,B===0?null:await(async()=>{const X=new p(B,Math.ceil(b.context.length/128)*128,k.sampleRate),ee=[],pe=[];for(let ye=0;ye<g.numberOfInputs;ye+=1)ee.push(o(X,{channelCount:g.channelCount,channelCountMode:g.channelCountMode,channelInterpretation:g.channelInterpretation,gain:1})),pe.push(i(X,{channelCount:g.channelCount,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:g.channelCount}));const ie=await Promise.all(Array.from(b.parameters.values()).map(async ye=>{const Ee=r(X,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:ye.value});return await d(X,ye,Ee.offset),Ee})),Q=n(X,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,j+G)});for(let ye=0;ye<g.numberOfInputs;ye+=1){ee[ye].connect(pe[ye]);for(let Ee=0;Ee<g.channelCount;Ee+=1)pe[ye].connect(Q,Ee,ye*g.channelCount+Ee)}for(const[ye,Ee]of ie.entries())Ee.connect(Q,0,j+ye),Ee.start(0);return Q.connect(X.destination),await Promise.all(ee.map(ye=>f(b,X,ye))),_(X)})(),k,g,A,y,l)}const D=await w,M=t(k,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[N,q,V]=R;D!==null&&(M.buffer=D,M.start(0)),M.connect(N);for(let j=0,G=0;j<b.numberOfOutputs;j+=1){const B=q[j];for(let Z=0;Z<A[j];Z+=1)N.connect(B,G+Z,Z);G+=A[j]}return V}if(I)for(const[D,M]of b.parameters.entries())await s(k,M,T.parameters.get(D));else for(const[D,M]of b.parameters.entries())await d(k,M,T.parameters.get(D));return await f(b,k,T),T};return{render(b,k){a(k,b);const T=x.get(k);return T!==void 0?Promise.resolve(T):v(b,k)}}},Hh=(s,e,t,n,i,r,o,a,c,l,u,h,p,d,f,_,m,g,y,x)=>class extends f{constructor(v,b){super(v,b),this._nativeContext=v,this._audioWorklet=s===void 0?void 0:{addModule:(k,T)=>s(this,k,T)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new e(this)}createBiquadFilter(){return new i(this)}createBuffer(v,b,k){return new t({length:b,numberOfChannels:v,sampleRate:k})}createBufferSource(){return new n(this)}createChannelMerger(v=6){return new r(this,{numberOfInputs:v})}createChannelSplitter(v=6){return new o(this,{numberOfOutputs:v})}createConstantSource(){return new a(this)}createConvolver(){return new c(this)}createDelay(v=1){return new u(this,{maxDelayTime:v})}createDynamicsCompressor(){return new h(this)}createGain(){return new p(this)}createIIRFilter(v,b){return new d(this,{feedback:b,feedforward:v})}createOscillator(){return new _(this)}createPanner(){return new m(this)}createPeriodicWave(v,b,k={disableNormalization:!1}){return new g(this,{...k,imag:b,real:v})}createStereoPanner(){return new y(this)}createWaveShaper(){return new x(this)}decodeAudioData(v,b,k){return l(this._nativeContext,v).then(T=>(typeof b=="function"&&b(T),T),T=>{throw typeof k=="function"&&k(T),T})}},Yh={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},Uh=(s,e,t,n,i,r,o,a)=>class extends s{constructor(l,u){const h=r(l),p={...Yh,...u},d=i(h,p),f=o(h),_=f?t():null;super(l,!1,d,_),this._Q=e(this,f,d.Q,mt,St),this._detune=e(this,f,d.detune,1200*Math.log2(mt),-1200*Math.log2(mt)),this._frequency=e(this,f,d.frequency,l.sampleRate/2,0),this._gain=e(this,f,d.gain,40*Math.log10(mt),St),this._nativeBiquadFilterNode=d,a(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type(l){this._nativeBiquadFilterNode.type=l}getFrequencyResponse(l,u,h){try{this._nativeBiquadFilterNode.getFrequencyResponse(l,u,h)}catch(p){throw p.code===11?n():p}if(l.length!==u.length||u.length!==h.length)throw n()}},Kh=(s,e,t,n,i)=>()=>{const r=new WeakMap,o=async(a,c)=>{let l=t(a);const u=ft(l,c);if(!u){const h={Q:l.Q.value,channelCount:l.channelCount,channelCountMode:l.channelCountMode,channelInterpretation:l.channelInterpretation,detune:l.detune.value,frequency:l.frequency.value,gain:l.gain.value,type:l.type};l=e(c,h)}return r.set(c,l),u?(await s(c,a.Q,l.Q),await s(c,a.detune,l.detune),await s(c,a.frequency,l.frequency),await s(c,a.gain,l.gain)):(await n(c,a.Q,l.Q),await n(c,a.detune,l.detune),await n(c,a.frequency,l.frequency),await n(c,a.gain,l.gain)),await i(a,c,l),l};return{render(a,c){const l=r.get(c);return l!==void 0?Promise.resolve(l):o(a,c)}}},Qh=(s,e)=>(t,n)=>{const i=e.get(t);if(i!==void 0)return i;const r=s.get(t);if(r!==void 0)return r;try{const o=n();return o instanceof Promise?(s.set(t,o),o.catch(()=>!1).then(a=>(s.delete(t),e.set(t,a),a))):(e.set(t,o),o)}catch{return e.set(t,!1),!1}},Jh={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},ed=(s,e,t,n,i)=>class extends s{constructor(o,a){const c=n(o),l={...Jh,...a},u=t(c,l),h=i(c)?e():null;super(o,!1,u,h)}},td=(s,e,t)=>()=>{const n=new WeakMap,i=async(r,o)=>{let a=e(r);if(!ft(a,o)){const l={channelCount:a.channelCount,channelCountMode:a.channelCountMode,channelInterpretation:a.channelInterpretation,numberOfInputs:a.numberOfInputs};a=s(o,l)}return n.set(o,a),await t(r,o,a),a};return{render(r,o){const a=n.get(o);return a!==void 0?Promise.resolve(a):i(r,o)}}},sd={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},nd=(s,e,t,n,i,r)=>class extends s{constructor(a,c){const l=n(a),u=r({...sd,...c}),h=t(l,u),p=i(l)?e():null;super(a,!1,h,p)}},id=(s,e,t)=>()=>{const n=new WeakMap,i=async(r,o)=>{let a=e(r);if(!ft(a,o)){const l={channelCount:a.channelCount,channelCountMode:a.channelCountMode,channelInterpretation:a.channelInterpretation,numberOfOutputs:a.numberOfOutputs};a=s(o,l)}return n.set(o,a),await t(r,o,a),a};return{render(r,o){const a=n.get(o);return a!==void 0?Promise.resolve(a):i(r,o)}}},rd=s=>(e,t,n)=>s(t,e,n),od=s=>(e,t,n=0,i=0)=>{const r=e[n];if(r===void 0)throw s();return Xi(t)?r.connect(t,0,i):r.connect(t,0)},ad=s=>(e,t)=>{const n=s(e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),i=e.createBuffer(1,2,44100);return n.buffer=i,n.loop=!0,n.connect(t),n.start(),()=>{n.stop(),n.disconnect(t)}},cd={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},ld=(s,e,t,n,i,r,o)=>class extends s{constructor(c,l){const u=i(c),h={...cd,...l},p=n(u,h),d=r(u),f=d?t():null;super(c,!1,p,f),this._constantSourceNodeRenderer=f,this._nativeConstantSourceNode=p,this._offset=e(this,d,p.offset,mt,St),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(c){const l=typeof c=="function"?o(this,c):null;this._nativeConstantSourceNode.onended=l;const u=this._nativeConstantSourceNode.onended;this._onended=u!==null&&u===l?c:u}start(c=0){if(this._nativeConstantSourceNode.start(c),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=c),this.context.state!=="closed"){on(this);const l=()=>{this._nativeConstantSourceNode.removeEventListener("ended",l),ds(this)&&si(this)};this._nativeConstantSourceNode.addEventListener("ended",l)}}stop(c=0){this._nativeConstantSourceNode.stop(c),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=c)}},ud=(s,e,t,n,i)=>()=>{const r=new WeakMap;let o=null,a=null;const c=async(l,u)=>{let h=t(l);const p=ft(h,u);if(!p){const d={channelCount:h.channelCount,channelCountMode:h.channelCountMode,channelInterpretation:h.channelInterpretation,offset:h.offset.value};h=e(u,d),o!==null&&h.start(o),a!==null&&h.stop(a)}return r.set(u,h),p?await s(u,l.offset,h.offset):await n(u,l.offset,h.offset),await i(l,u,h),h};return{set start(l){o=l},set stop(l){a=l},render(l,u){const h=r.get(u);return h!==void 0?Promise.resolve(h):c(l,u)}}},hd=s=>e=>(s[0]=e,s[0]),dd={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},pd=(s,e,t,n,i,r)=>class extends s{constructor(a,c){const l=n(a),u={...dd,...c},h=t(l,u),d=i(l)?e():null;super(a,!1,h,d),this._isBufferNullified=!1,this._nativeConvolverNode=h,u.buffer!==null&&r(this,u.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(a){if(this._nativeConvolverNode.buffer=a,a===null&&this._nativeConvolverNode.buffer!==null){const c=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=c.createBuffer(1,1,c.sampleRate),this._isBufferNullified=!0,r(this,0)}else this._isBufferNullified=!1,r(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(a){this._nativeConvolverNode.normalize=a}},fd=(s,e,t)=>()=>{const n=new WeakMap,i=async(r,o)=>{let a=e(r);if(!ft(a,o)){const l={buffer:a.buffer,channelCount:a.channelCount,channelCountMode:a.channelCountMode,channelInterpretation:a.channelInterpretation,disableNormalization:!a.normalize};a=s(o,l)}return n.set(o,a),pn(a)?await t(r,o,a.inputs[0]):await t(r,o,a),a};return{render(r,o){const a=n.get(o);return a!==void 0?Promise.resolve(a):i(r,o)}}},md=(s,e)=>(t,n,i)=>{if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new e(t,n,i)}catch(r){throw r.name==="SyntaxError"?s():r}},gd=()=>new DOMException("","DataCloneError"),sc=s=>{const{port1:e,port2:t}=new MessageChannel;return new Promise(n=>{const i=()=>{t.onmessage=null,e.close(),t.close(),n()};t.onmessage=()=>i();try{e.postMessage(s,[s])}catch{}finally{i()}})},_d=(s,e,t,n,i,r,o,a,c,l,u)=>(h,p)=>{const d=o(h)?h:r(h);if(i.has(p)){const f=t();return Promise.reject(f)}try{i.add(p)}catch{}return e(c,()=>c(d))?d.decodeAudioData(p).then(f=>(sc(p).catch(()=>{}),e(a,()=>a(f))||u(f),s.add(f),f)):new Promise((f,_)=>{const m=async()=>{try{await sc(p)}catch{}},g=y=>{_(y),m()};try{d.decodeAudioData(p,y=>{typeof y.copyFromChannel!="function"&&(l(y),Fo(y)),s.add(y),m().then(()=>f(y))},y=>{g(y===null?n():y)})}catch(y){g(y)}})},vd=(s,e,t,n,i,r,o,a)=>(c,l)=>{const u=e.get(c);if(u===void 0)throw new Error("Missing the expected cycle count.");const h=r(c.context),p=a(h);if(u===l){if(e.delete(c),!p&&o(c)){const d=n(c),{outputs:f}=t(c);for(const _ of f)if(ii(_)){const m=n(_[0]);s(d,m,_[1],_[2])}else{const m=i(_[0]);d.connect(m,_[1])}}}else e.set(c,u-l)},yd={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},bd=(s,e,t,n,i,r,o)=>class extends s{constructor(c,l){const u=i(c),h={...yd,...l},p=n(u,h),d=r(u),f=d?t(h.maxDelayTime):null;super(c,!1,p,f),this._delayTime=e(this,d,p.delayTime),o(this,h.maxDelayTime)}get delayTime(){return this._delayTime}},wd=(s,e,t,n,i)=>r=>{const o=new WeakMap,a=async(c,l)=>{let u=t(c);const h=ft(u,l);if(!h){const p={channelCount:u.channelCount,channelCountMode:u.channelCountMode,channelInterpretation:u.channelInterpretation,delayTime:u.delayTime.value,maxDelayTime:r};u=e(l,p)}return o.set(l,u),h?await s(l,c.delayTime,u.delayTime):await n(l,c.delayTime,u.delayTime),await i(c,l,u),u};return{render(c,l){const u=o.get(l);return u!==void 0?Promise.resolve(u):a(c,l)}}},xd=s=>(e,t,n,i)=>s(e[i],r=>r[0]===t&&r[1]===n),Cd=s=>(e,t)=>{s(e).delete(t)},Sd=s=>"delayTime"in s,Td=(s,e,t)=>function n(i,r){const o=zi(r)?r:t(s,r);if(Sd(o))return[];if(i[0]===o)return[i];if(i.includes(o))return[];const{outputs:a}=e(o);return Array.from(a).map(c=>n([...i,o],c[0])).reduce((c,l)=>c.concat(l),[])},Mi=(s,e,t)=>{const n=e[t];if(n===void 0)throw s();return n},kd=s=>(e,t=void 0,n=void 0,i=0)=>t===void 0?e.forEach(r=>r.disconnect()):typeof t=="number"?Mi(s,e,t).disconnect():Xi(t)?n===void 0?e.forEach(r=>r.disconnect(t)):i===void 0?Mi(s,e,n).disconnect(t,0):Mi(s,e,n).disconnect(t,0,i):n===void 0?e.forEach(r=>r.disconnect(t)):Mi(s,e,n).disconnect(t,0),Ad={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},Id=(s,e,t,n,i,r,o,a)=>class extends s{constructor(l,u){const h=r(l),p={...Ad,...u},d=n(h,p),f=o(h),_=f?t():null;super(l,!1,d,_),this._attack=e(this,f,d.attack),this._knee=e(this,f,d.knee),this._nativeDynamicsCompressorNode=d,this._ratio=e(this,f,d.ratio),this._release=e(this,f,d.release),this._threshold=e(this,f,d.threshold),a(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount(l){const u=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=l,l>2)throw this._nativeDynamicsCompressorNode.channelCount=u,i()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode(l){const u=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=l,l==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=u,i()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},Dd=(s,e,t,n,i)=>()=>{const r=new WeakMap,o=async(a,c)=>{let l=t(a);const u=ft(l,c);if(!u){const h={attack:l.attack.value,channelCount:l.channelCount,channelCountMode:l.channelCountMode,channelInterpretation:l.channelInterpretation,knee:l.knee.value,ratio:l.ratio.value,release:l.release.value,threshold:l.threshold.value};l=e(c,h)}return r.set(c,l),u?(await s(c,a.attack,l.attack),await s(c,a.knee,l.knee),await s(c,a.ratio,l.ratio),await s(c,a.release,l.release),await s(c,a.threshold,l.threshold)):(await n(c,a.attack,l.attack),await n(c,a.knee,l.knee),await n(c,a.ratio,l.ratio),await n(c,a.release,l.release),await n(c,a.threshold,l.threshold)),await i(a,c,l),l};return{render(a,c){const l=r.get(c);return l!==void 0?Promise.resolve(l):o(a,c)}}},Rd=()=>new DOMException("","EncodingError"),Ed=s=>e=>new Promise((t,n)=>{if(s===null){n(new SyntaxError);return}const i=s.document.head;if(i===null)n(new SyntaxError);else{const r=s.document.createElement("script"),o=new Blob([e],{type:"application/javascript"}),a=URL.createObjectURL(o),c=s.onerror,l=()=>{s.onerror=c,URL.revokeObjectURL(a)};s.onerror=(u,h,p,d,f)=>{if(h===a||h===s.location.href&&p===1&&d===1)return l(),n(f),!1;if(c!==null)return c(u,h,p,d,f)},r.onerror=()=>{l(),n(new SyntaxError)},r.onload=()=>{l(),t()},r.src=a,r.type="module",i.appendChild(r)}}),Md=s=>class{constructor(t){this._nativeEventTarget=t,this._listeners=new WeakMap}addEventListener(t,n,i){if(n!==null){let r=this._listeners.get(n);r===void 0&&(r=s(this,n),typeof n=="function"&&this._listeners.set(n,r)),this._nativeEventTarget.addEventListener(t,r,i)}}dispatchEvent(t){return this._nativeEventTarget.dispatchEvent(t)}removeEventListener(t,n,i){const r=n===null?void 0:this._listeners.get(n);this._nativeEventTarget.removeEventListener(t,r===void 0?null:r,i)}},Od=s=>(e,t,n)=>{Object.defineProperties(s,{currentFrame:{configurable:!0,get(){return Math.round(e*t)}},currentTime:{configurable:!0,get(){return e}}});try{return n()}finally{s!==null&&(delete s.currentFrame,delete s.currentTime)}},Nd=s=>async e=>{try{const t=await fetch(e);if(t.ok)return[await t.text(),t.url]}catch{}throw s()},Fd={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},Vd=(s,e,t,n,i,r)=>class extends s{constructor(a,c){const l=i(a),u={...Fd,...c},h=n(l,u),p=r(l),d=p?t():null;super(a,!1,h,d),this._gain=e(this,p,h.gain,mt,St)}get gain(){return this._gain}},Pd=(s,e,t,n,i)=>()=>{const r=new WeakMap,o=async(a,c)=>{let l=t(a);const u=ft(l,c);if(!u){const h={channelCount:l.channelCount,channelCountMode:l.channelCountMode,channelInterpretation:l.channelInterpretation,gain:l.gain.value};l=e(c,h)}return r.set(c,l),u?await s(c,a.gain,l.gain):await n(c,a.gain,l.gain),await i(a,c,l),l};return{render(a,c){const l=r.get(c);return l!==void 0?Promise.resolve(l):o(a,c)}}},Wd=(s,e)=>t=>e(s,t),Bd=s=>e=>{const t=s(e);if(t.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return t.renderer},$d=s=>e=>{var t;return(t=s.get(e))!==null&&t!==void 0?t:0},qd=s=>e=>{const t=s(e);if(t.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return t.renderer},jd=s=>e=>s.get(e),st=()=>new DOMException("","InvalidStateError"),Ld=s=>e=>{const t=s.get(e);if(t===void 0)throw st();return t},zd=(s,e)=>t=>{let n=s.get(t);if(n!==void 0)return n;if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");return n=new e(1,1,44100),s.set(t,n),n},Zd=s=>e=>{const t=s.get(e);if(t===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return t},or=()=>new DOMException("","InvalidAccessError"),Gd=s=>{s.getFrequencyResponse=(e=>(t,n,i)=>{if(t.length!==n.length||n.length!==i.length)throw or();return e.call(s,t,n,i)})(s.getFrequencyResponse)},Xd={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},Hd=(s,e,t,n,i,r)=>class extends s{constructor(a,c){const l=n(a),u=i(l),h={...Xd,...c},p=e(l,u?null:a.baseLatency,h),d=u?t(h.feedback,h.feedforward):null;super(a,!1,p,d),Gd(p),this._nativeIIRFilterNode=p,r(this,1)}getFrequencyResponse(a,c,l){return this._nativeIIRFilterNode.getFrequencyResponse(a,c,l)}},yl=(s,e,t,n,i,r,o,a,c,l,u)=>{const h=l.length;let p=a;for(let d=0;d<h;d+=1){let f=t[0]*l[d];for(let _=1;_<i;_+=1){const m=p-_&c-1;f+=t[_]*r[m],f-=s[_]*o[m]}for(let _=i;_<n;_+=1)f+=t[_]*r[p-_&c-1];for(let _=i;_<e;_+=1)f-=s[_]*o[p-_&c-1];r[p]=l[d],o[p]=f,p=p+1&c-1,u[d]=f}return p},Yd=(s,e,t,n)=>{const i=t instanceof Float64Array?t:new Float64Array(t),r=n instanceof Float64Array?n:new Float64Array(n),o=i.length,a=r.length,c=Math.min(o,a);if(i[0]!==1){for(let f=0;f<o;f+=1)r[f]/=i[0];for(let f=1;f<a;f+=1)i[f]/=i[0]}const l=32,u=new Float32Array(l),h=new Float32Array(l),p=e.createBuffer(s.numberOfChannels,s.length,s.sampleRate),d=s.numberOfChannels;for(let f=0;f<d;f+=1){const _=s.getChannelData(f),m=p.getChannelData(f);u.fill(0),h.fill(0),yl(i,o,r,a,c,u,h,0,l,_,m)}return p},Ud=(s,e,t,n,i)=>(r,o)=>{const a=new WeakMap;let c=null;const l=async(u,h)=>{let p=null,d=e(u);const f=ft(d,h);if(h.createIIRFilter===void 0?p=s(h,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):f||(d=h.createIIRFilter(o,r)),a.set(h,p===null?d:p),p!==null){if(c===null){if(t===null)throw new Error("Missing the native OfflineAudioContext constructor.");const m=new t(u.context.destination.channelCount,u.context.length,h.sampleRate);c=(async()=>{await n(u,m,m.destination);const g=await i(m);return Yd(g,h,r,o)})()}const _=await c;return p.buffer=_,p.start(0),p}return await n(u,h,d),d};return{render(u,h){const p=a.get(h);return p!==void 0?Promise.resolve(p):l(u,h)}}},Kd=(s,e,t,n,i,r)=>o=>(a,c)=>{const l=s.get(a);if(l===void 0){if(!o&&r(a)){const u=n(a),{outputs:h}=t(a);for(const p of h)if(ii(p)){const d=n(p[0]);e(u,d,p[1],p[2])}else{const d=i(p[0]);u.disconnect(d,p[1])}}s.set(a,c)}else s.set(a,l+c)},Qd=(s,e)=>t=>{const n=s.get(t);return e(n)||e(t)},Jd=(s,e)=>t=>s.has(t)||e(t),ep=(s,e)=>t=>s.has(t)||e(t),tp=(s,e)=>t=>{const n=s.get(t);return e(n)||e(t)},sp=s=>e=>s!==null&&e instanceof s,np=s=>e=>s!==null&&typeof s.AudioNode=="function"&&e instanceof s.AudioNode,ip=s=>e=>s!==null&&typeof s.AudioParam=="function"&&e instanceof s.AudioParam,rp=(s,e)=>t=>s(t)||e(t),op=s=>e=>s!==null&&e instanceof s,ap=s=>s!==null&&s.isSecureContext,cp=async(s,e,t,n,i,r,o,a,c,l,u,h,p,d,f,_)=>s(e,e)&&s(t,t)&&s(i,i)&&s(r,r)&&s(a,a)&&s(c,c)&&s(l,l)&&s(u,u)&&s(h,h)&&s(p,p)&&s(d,d)?(await Promise.all([s(n,n),s(o,o),s(f,f),s(_,_)])).every(g=>g):!1,lp=(s,e,t,n)=>class extends s{constructor(r,o){const a=t(r),c=e(a,o);if(n(a))throw TypeError();super(r,!0,c,null),this._nativeMediaElementAudioSourceNode=c}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},up={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},hp=(s,e,t,n)=>class extends s{constructor(r,o){const a=t(r);if(n(a))throw new TypeError;const c={...up,...o},l=e(a,c);super(r,!1,l,null),this._nativeMediaStreamAudioDestinationNode=l}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},dp=(s,e,t,n)=>class extends s{constructor(r,o){const a=t(r),c=e(a,o);if(n(a))throw new TypeError;super(r,!0,c,null),this._nativeMediaStreamAudioSourceNode=c}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},pp=(s,e,t)=>class extends s{constructor(i,r){const o=t(i),a=e(o,r);super(i,!0,a,null)}},fp=(s,e,t,n,i,r)=>class extends t{constructor(a,c){super(a),this._nativeContext=a,ir.set(this,a),n(a)&&i.set(a,new Set),this._destination=new s(this,c),this._listener=e(this,a),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(a){const c=typeof a=="function"?r(this,a):null;this._nativeContext.onstatechange=c;const l=this._nativeContext.onstatechange;this._onstatechange=l!==null&&l===c?a:l}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},Xn=s=>{const e=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const t=s.decodeAudioData(e.buffer,()=>{});return t===void 0?!1:(t.catch(()=>{}),!0)}catch{}return!1},mp=(s,e)=>(t,n,i)=>{const r=new Set;return t.connect=(o=>(a,c=0,l=0)=>{const u=r.size===0;if(e(a))return o.call(t,a,c,l),s(r,[a,c,l],h=>h[0]===a&&h[1]===c&&h[2]===l,!0),u&&n(),a;o.call(t,a,c),s(r,[a,c],h=>h[0]===a&&h[1]===c,!0),u&&n()})(t.connect),t.disconnect=(o=>(a,c,l)=>{const u=r.size>0;if(a===void 0)o.apply(t),r.clear();else if(typeof a=="number"){o.call(t,a);for(const p of r)p[1]===a&&r.delete(p)}else{e(a)?o.call(t,a,c,l):o.call(t,a,c);for(const p of r)p[0]===a&&(c===void 0||p[1]===c)&&(l===void 0||p[2]===l)&&r.delete(p)}const h=r.size===0;u&&h&&i()})(t.disconnect),t},Me=(s,e,t)=>{const n=e[t];n!==void 0&&n!==s[t]&&(s[t]=n)},Ue=(s,e)=>{Me(s,e,"channelCount"),Me(s,e,"channelCountMode"),Me(s,e,"channelInterpretation")},nc=s=>typeof s.getFloatTimeDomainData=="function",gp=s=>{s.getFloatTimeDomainData=e=>{const t=new Uint8Array(e.length);s.getByteTimeDomainData(t);const n=Math.max(t.length,s.fftSize);for(let i=0;i<n;i+=1)e[i]=(t[i]-128)*.0078125;return e}},_p=(s,e)=>(t,n)=>{const i=t.createAnalyser();if(Ue(i,n),!(n.maxDecibels>n.minDecibels))throw e();return Me(i,n,"fftSize"),Me(i,n,"maxDecibels"),Me(i,n,"minDecibels"),Me(i,n,"smoothingTimeConstant"),s(nc,()=>nc(i))||gp(i),i},vp=s=>s===null?null:s.hasOwnProperty("AudioBuffer")?s.AudioBuffer:null,We=(s,e,t)=>{const n=e[t];n!==void 0&&n!==s[t].value&&(s[t].value=n)},yp=s=>{s.start=(e=>{let t=!1;return(n=0,i=0,r)=>{if(t)throw st();e.call(s,n,i,r),t=!0}})(s.start)},Wo=s=>{s.start=(e=>(t=0,n=0,i)=>{if(typeof i=="number"&&i<0||n<0||t<0)throw new RangeError("The parameters can't be negative.");e.call(s,t,n,i)})(s.start)},Bo=s=>{s.stop=(e=>(t=0)=>{if(t<0)throw new RangeError("The parameter can't be negative.");e.call(s,t)})(s.stop)},bp=(s,e,t,n,i,r,o,a,c,l,u)=>(h,p)=>{const d=h.createBufferSource();return Ue(d,p),We(d,p,"playbackRate"),Me(d,p,"buffer"),Me(d,p,"loop"),Me(d,p,"loopEnd"),Me(d,p,"loopStart"),e(t,()=>t(h))||yp(d),e(n,()=>n(h))||c(d),e(i,()=>i(h))||l(d,h),e(r,()=>r(h))||Wo(d),e(o,()=>o(h))||u(d,h),e(a,()=>a(h))||Bo(d),s(h,d),d},wp=s=>s===null?null:s.hasOwnProperty("AudioContext")?s.AudioContext:s.hasOwnProperty("webkitAudioContext")?s.webkitAudioContext:null,xp=(s,e)=>(t,n,i)=>{const r=t.destination;if(r.channelCount!==n)try{r.channelCount=n}catch{}i&&r.channelCountMode!=="explicit"&&(r.channelCountMode="explicit"),r.maxChannelCount===0&&Object.defineProperty(r,"maxChannelCount",{value:n});const o=s(t,{channelCount:n,channelCountMode:r.channelCountMode,channelInterpretation:r.channelInterpretation,gain:1});return e(o,"channelCount",a=>()=>a.call(o),a=>c=>{a.call(o,c);try{r.channelCount=c}catch(l){if(c>r.maxChannelCount)throw l}}),e(o,"channelCountMode",a=>()=>a.call(o),a=>c=>{a.call(o,c),r.channelCountMode=c}),e(o,"channelInterpretation",a=>()=>a.call(o),a=>c=>{a.call(o,c),r.channelInterpretation=c}),Object.defineProperty(o,"maxChannelCount",{get:()=>r.maxChannelCount}),o.connect(r),o},Cp=s=>s===null?null:s.hasOwnProperty("AudioWorkletNode")?s.AudioWorkletNode:null,Sp=s=>{const{port1:e}=new MessageChannel;try{e.postMessage(s)}finally{e.close()}},Tp=(s,e,t,n,i)=>(r,o,a,c,l,u)=>{if(a!==null)try{const h=new a(r,c,u),p=new Map;let d=null;if(Object.defineProperties(h,{channelCount:{get:()=>u.channelCount,set:()=>{throw s()}},channelCountMode:{get:()=>"explicit",set:()=>{throw s()}},onprocessorerror:{get:()=>d,set:f=>{typeof d=="function"&&h.removeEventListener("processorerror",d),d=typeof f=="function"?f:null,typeof d=="function"&&h.addEventListener("processorerror",d)}}}),h.addEventListener=(f=>(..._)=>{if(_[0]==="processorerror"){const m=typeof _[1]=="function"?_[1]:typeof _[1]=="object"&&_[1]!==null&&typeof _[1].handleEvent=="function"?_[1].handleEvent:null;if(m!==null){const g=p.get(_[1]);g!==void 0?_[1]=g:(_[1]=y=>{y.type==="error"?(Object.defineProperties(y,{type:{value:"processorerror"}}),m(y)):m(new ErrorEvent(_[0],{...y}))},p.set(m,_[1]))}}return f.call(h,"error",_[1],_[2]),f.call(h,..._)})(h.addEventListener),h.removeEventListener=(f=>(..._)=>{if(_[0]==="processorerror"){const m=p.get(_[1]);m!==void 0&&(p.delete(_[1]),_[1]=m)}return f.call(h,"error",_[1],_[2]),f.call(h,_[0],_[1],_[2])})(h.removeEventListener),u.numberOfOutputs!==0){const f=t(r,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return h.connect(f).connect(r.destination),i(h,()=>f.disconnect(),()=>f.connect(r.destination))}return h}catch(h){throw h.code===11?n():h}if(l===void 0)throw n();return Sp(u),e(r,o,l,u)},bl=(s,e)=>s===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(s*e))))),kp=s=>new Promise((e,t)=>{const{port1:n,port2:i}=new MessageChannel;n.onmessage=({data:r})=>{n.close(),i.close(),e(r)},n.onmessageerror=({data:r})=>{n.close(),i.close(),t(r)},i.postMessage(s)}),Ap=async(s,e)=>{const t=await kp(e);return new s(t)},Ip=(s,e,t,n)=>{let i=go.get(s);i===void 0&&(i=new WeakMap,go.set(s,i));const r=Ap(t,n);return i.set(e,r),r},Dp=(s,e,t,n,i,r,o,a,c,l,u,h,p)=>(d,f,_,m)=>{if(m.numberOfInputs===0&&m.numberOfOutputs===0)throw c();const g=Array.isArray(m.outputChannelCount)?m.outputChannelCount:Array.from(m.outputChannelCount);if(g.some(L=>L<1))throw c();if(g.length!==m.numberOfOutputs)throw e();if(m.channelCountMode!=="explicit")throw c();const y=m.channelCount*m.numberOfInputs,x=g.reduce((L,H)=>L+H,0),w=_.parameterDescriptors===void 0?0:_.parameterDescriptors.length;if(y+w>6||x>6)throw c();const v=new MessageChannel,b=[],k=[];for(let L=0;L<m.numberOfInputs;L+=1)b.push(o(d,{channelCount:m.channelCount,channelCountMode:m.channelCountMode,channelInterpretation:m.channelInterpretation,gain:1})),k.push(i(d,{channelCount:m.channelCount,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:m.channelCount}));const T=[];if(_.parameterDescriptors!==void 0)for(const{defaultValue:L,maxValue:H,minValue:be,name:we}of _.parameterDescriptors){const ce=r(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:m.parameterData[we]!==void 0?m.parameterData[we]:L===void 0?0:L});Object.defineProperties(ce.offset,{defaultValue:{get:()=>L===void 0?0:L},maxValue:{get:()=>H===void 0?mt:H},minValue:{get:()=>be===void 0?St:be}}),T.push(ce)}const R=n(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,y+w)}),I=bl(f,d.sampleRate),A=a(d,I,y+w,Math.max(1,x)),D=i(d,{channelCount:Math.max(1,x),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,x)}),M=[];for(let L=0;L<m.numberOfOutputs;L+=1)M.push(n(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:g[L]}));for(let L=0;L<m.numberOfInputs;L+=1){b[L].connect(k[L]);for(let H=0;H<m.channelCount;H+=1)k[L].connect(R,H,L*m.channelCount+H)}const N=new _l(_.parameterDescriptors===void 0?[]:_.parameterDescriptors.map(({name:L},H)=>{const be=T[H];return be.connect(R,0,y+H),be.start(0),[L,be.offset]}));R.connect(A);let q=m.channelInterpretation,V=null;const j=m.numberOfOutputs===0?[A]:M,G={get bufferSize(){return I},get channelCount(){return m.channelCount},set channelCount(L){throw t()},get channelCountMode(){return m.channelCountMode},set channelCountMode(L){throw t()},get channelInterpretation(){return q},set channelInterpretation(L){for(const H of b)H.channelInterpretation=L;q=L},get context(){return A.context},get inputs(){return b},get numberOfInputs(){return m.numberOfInputs},get numberOfOutputs(){return m.numberOfOutputs},get onprocessorerror(){return V},set onprocessorerror(L){typeof V=="function"&&G.removeEventListener("processorerror",V),V=typeof L=="function"?L:null,typeof V=="function"&&G.addEventListener("processorerror",V)},get parameters(){return N},get port(){return v.port2},addEventListener(...L){return A.addEventListener(L[0],L[1],L[2])},connect:s.bind(null,j),disconnect:l.bind(null,j),dispatchEvent(...L){return A.dispatchEvent(L[0])},removeEventListener(...L){return A.removeEventListener(L[0],L[1],L[2])}},B=new Map;v.port1.addEventListener=(L=>(...H)=>{if(H[0]==="message"){const be=typeof H[1]=="function"?H[1]:typeof H[1]=="object"&&H[1]!==null&&typeof H[1].handleEvent=="function"?H[1].handleEvent:null;if(be!==null){const we=B.get(H[1]);we!==void 0?H[1]=we:(H[1]=ce=>{u(d.currentTime,d.sampleRate,()=>be(ce))},B.set(be,H[1]))}}return L.call(v.port1,H[0],H[1],H[2])})(v.port1.addEventListener),v.port1.removeEventListener=(L=>(...H)=>{if(H[0]==="message"){const be=B.get(H[1]);be!==void 0&&(B.delete(H[1]),H[1]=be)}return L.call(v.port1,H[0],H[1],H[2])})(v.port1.removeEventListener);let Z=null;Object.defineProperty(v.port1,"onmessage",{get:()=>Z,set:L=>{typeof Z=="function"&&v.port1.removeEventListener("message",Z),Z=typeof L=="function"?L:null,typeof Z=="function"&&(v.port1.addEventListener("message",Z),v.port1.start())}}),_.prototype.port=v.port1;let X=null;Ip(d,G,_,m).then(L=>X=L);const pe=Yi(m.numberOfInputs,m.channelCount),ie=Yi(m.numberOfOutputs,g),Q=_.parameterDescriptors===void 0?[]:_.parameterDescriptors.reduce((L,{name:H})=>({...L,[H]:new Float32Array(128)}),{});let ye=!0;const Ee=()=>{m.numberOfOutputs>0&&A.disconnect(D);for(let L=0,H=0;L<m.numberOfOutputs;L+=1){const be=M[L];for(let we=0;we<g[L];we+=1)D.disconnect(be,H+we,we);H+=g[L]}},z=new Map;A.onaudioprocess=({inputBuffer:L,outputBuffer:H})=>{if(X!==null){const be=h(G);for(let we=0;we<I;we+=128){for(let ce=0;ce<m.numberOfInputs;ce+=1)for(let Ce=0;Ce<m.channelCount;Ce+=1)Hi(L,pe[ce],Ce,Ce,we);_.parameterDescriptors!==void 0&&_.parameterDescriptors.forEach(({name:ce},Ce)=>{Hi(L,Q,ce,y+Ce,we)});for(let ce=0;ce<m.numberOfInputs;ce+=1)for(let Ce=0;Ce<g[ce];Ce+=1)ie[ce][Ce].byteLength===0&&(ie[ce][Ce]=new Float32Array(128));try{const ce=pe.map((He,Ze)=>{if(be[Ze].size>0)return z.set(Ze,I/128),He;const oe=z.get(Ze);return oe===void 0?[]:(He.every(ge=>ge.every(Ae=>Ae===0))&&(oe===1?z.delete(Ze):z.set(Ze,oe-1)),He)});ye=u(d.currentTime+we/d.sampleRate,d.sampleRate,()=>X.process(ce,ie,Q));for(let He=0,Ze=0;He<m.numberOfOutputs;He+=1){for(let Pt=0;Pt<g[He];Pt+=1)vl(H,ie[He],Pt,Ze+Pt,we);Ze+=g[He]}}catch(ce){ye=!1,G.dispatchEvent(new ErrorEvent("processorerror",{colno:ce.colno,filename:ce.filename,lineno:ce.lineno,message:ce.message}))}if(!ye){for(let ce=0;ce<m.numberOfInputs;ce+=1){b[ce].disconnect(k[ce]);for(let Ce=0;Ce<m.channelCount;Ce+=1)k[we].disconnect(R,Ce,ce*m.channelCount+Ce)}if(_.parameterDescriptors!==void 0){const ce=_.parameterDescriptors.length;for(let Ce=0;Ce<ce;Ce+=1){const He=T[Ce];He.disconnect(R,0,y+Ce),He.stop()}}R.disconnect(A),A.onaudioprocess=null,Je?Ee():U();break}}}};let Je=!1;const lt=o(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0}),Vt=()=>A.connect(lt).connect(d.destination),U=()=>{A.disconnect(lt),lt.disconnect()},ut=()=>{if(ye){U(),m.numberOfOutputs>0&&A.connect(D);for(let L=0,H=0;L<m.numberOfOutputs;L+=1){const be=M[L];for(let we=0;we<g[L];we+=1)D.connect(be,H+we,we);H+=g[L]}}Je=!0},$e=()=>{ye&&(Vt(),Ee()),Je=!1};return Vt(),p(G,ut,$e)},wl=(s,e)=>{const t=s.createBiquadFilter();return Ue(t,e),We(t,e,"Q"),We(t,e,"detune"),We(t,e,"frequency"),We(t,e,"gain"),Me(t,e,"type"),t},Rp=(s,e)=>(t,n)=>{const i=t.createChannelMerger(n.numberOfInputs);return s!==null&&s.name==="webkitAudioContext"&&e(t,i),Ue(i,n),i},Ep=s=>{const e=s.numberOfOutputs;Object.defineProperty(s,"channelCount",{get:()=>e,set:t=>{if(t!==e)throw st()}}),Object.defineProperty(s,"channelCountMode",{get:()=>"explicit",set:t=>{if(t!=="explicit")throw st()}}),Object.defineProperty(s,"channelInterpretation",{get:()=>"discrete",set:t=>{if(t!=="discrete")throw st()}})},ri=(s,e)=>{const t=s.createChannelSplitter(e.numberOfOutputs);return Ue(t,e),Ep(t),t},Mp=(s,e,t,n,i)=>(r,o)=>{if(r.createConstantSource===void 0)return t(r,o);const a=r.createConstantSource();return Ue(a,o),We(a,o,"offset"),e(n,()=>n(r))||Wo(a),e(i,()=>i(r))||Bo(a),s(r,a),a},fn=(s,e)=>(s.connect=e.connect.bind(e),s.disconnect=e.disconnect.bind(e),s),Op=(s,e,t,n)=>(i,{offset:r,...o})=>{const a=i.createBuffer(1,2,44100),c=e(i,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),l=t(i,{...o,gain:r}),u=a.getChannelData(0);u[0]=1,u[1]=1,c.buffer=a,c.loop=!0;const h={get bufferSize(){},get channelCount(){return l.channelCount},set channelCount(f){l.channelCount=f},get channelCountMode(){return l.channelCountMode},set channelCountMode(f){l.channelCountMode=f},get channelInterpretation(){return l.channelInterpretation},set channelInterpretation(f){l.channelInterpretation=f},get context(){return l.context},get inputs(){return[]},get numberOfInputs(){return c.numberOfInputs},get numberOfOutputs(){return l.numberOfOutputs},get offset(){return l.gain},get onended(){return c.onended},set onended(f){c.onended=f},addEventListener(...f){return c.addEventListener(f[0],f[1],f[2])},dispatchEvent(...f){return c.dispatchEvent(f[0])},removeEventListener(...f){return c.removeEventListener(f[0],f[1],f[2])},start(f=0){c.start.call(c,f)},stop(f=0){c.stop.call(c,f)}},p=()=>c.connect(l),d=()=>c.disconnect(l);return s(i,c),n(fn(h,l),p,d)},Np=(s,e)=>(t,n)=>{const i=t.createConvolver();if(Ue(i,n),n.disableNormalization===i.normalize&&(i.normalize=!n.disableNormalization),Me(i,n,"buffer"),n.channelCount>2||(e(i,"channelCount",r=>()=>r.call(i),r=>o=>{if(o>2)throw s();return r.call(i,o)}),n.channelCountMode==="max"))throw s();return e(i,"channelCountMode",r=>()=>r.call(i),r=>o=>{if(o==="max")throw s();return r.call(i,o)}),i},xl=(s,e)=>{const t=s.createDelay(e.maxDelayTime);return Ue(t,e),We(t,e,"delayTime"),t},Fp=s=>(e,t)=>{const n=e.createDynamicsCompressor();if(Ue(n,t),t.channelCount>2||t.channelCountMode==="max")throw s();return We(n,t,"attack"),We(n,t,"knee"),We(n,t,"ratio"),We(n,t,"release"),We(n,t,"threshold"),n},kt=(s,e)=>{const t=s.createGain();return Ue(t,e),We(t,e,"gain"),t},Vp=s=>(e,t,n)=>{if(e.createIIRFilter===void 0)return s(e,t,n);const i=e.createIIRFilter(n.feedforward,n.feedback);return Ue(i,n),i};function Pp(s,e){const t=e[0]*e[0]+e[1]*e[1];return[(s[0]*e[0]+s[1]*e[1])/t,(s[1]*e[0]-s[0]*e[1])/t]}function Wp(s,e){return[s[0]*e[0]-s[1]*e[1],s[0]*e[1]+s[1]*e[0]]}function ic(s,e){let t=[0,0];for(let n=s.length-1;n>=0;n-=1)t=Wp(t,e),t[0]+=s[n];return t}const Bp=(s,e,t,n)=>(i,r,{channelCount:o,channelCountMode:a,channelInterpretation:c,feedback:l,feedforward:u})=>{const h=bl(r,i.sampleRate),p=l instanceof Float64Array?l:new Float64Array(l),d=u instanceof Float64Array?u:new Float64Array(u),f=p.length,_=d.length,m=Math.min(f,_);if(f===0||f>20)throw n();if(p[0]===0)throw e();if(_===0||_>20)throw n();if(d[0]===0)throw e();if(p[0]!==1){for(let T=0;T<_;T+=1)d[T]/=p[0];for(let T=1;T<f;T+=1)p[T]/=p[0]}const g=t(i,h,o,o);g.channelCount=o,g.channelCountMode=a,g.channelInterpretation=c;const y=32,x=[],w=[],v=[];for(let T=0;T<o;T+=1){x.push(0);const R=new Float32Array(y),I=new Float32Array(y);R.fill(0),I.fill(0),w.push(R),v.push(I)}g.onaudioprocess=T=>{const R=T.inputBuffer,I=T.outputBuffer,A=R.numberOfChannels;for(let D=0;D<A;D+=1){const M=R.getChannelData(D),N=I.getChannelData(D);x[D]=yl(p,f,d,_,m,w[D],v[D],x[D],y,M,N)}};const b=i.sampleRate/2;return fn({get bufferSize(){return h},get channelCount(){return g.channelCount},set channelCount(T){g.channelCount=T},get channelCountMode(){return g.channelCountMode},set channelCountMode(T){g.channelCountMode=T},get channelInterpretation(){return g.channelInterpretation},set channelInterpretation(T){g.channelInterpretation=T},get context(){return g.context},get inputs(){return[g]},get numberOfInputs(){return g.numberOfInputs},get numberOfOutputs(){return g.numberOfOutputs},addEventListener(...T){return g.addEventListener(T[0],T[1],T[2])},dispatchEvent(...T){return g.dispatchEvent(T[0])},getFrequencyResponse(T,R,I){if(T.length!==R.length||R.length!==I.length)throw s();const A=T.length;for(let D=0;D<A;D+=1){const M=-Math.PI*(T[D]/b),N=[Math.cos(M),Math.sin(M)],q=ic(d,N),V=ic(p,N),j=Pp(q,V);R[D]=Math.sqrt(j[0]*j[0]+j[1]*j[1]),I[D]=Math.atan2(j[1],j[0])}},removeEventListener(...T){return g.removeEventListener(T[0],T[1],T[2])}},g)},$p=(s,e)=>s.createMediaElementSource(e.mediaElement),qp=(s,e)=>{const t=s.createMediaStreamDestination();return Ue(t,e),t.numberOfOutputs===1&&Object.defineProperty(t,"numberOfOutputs",{get:()=>0}),t},jp=(s,{mediaStream:e})=>{const t=e.getAudioTracks();t.sort((r,o)=>r.id<o.id?-1:r.id>o.id?1:0);const n=t.slice(0,1),i=s.createMediaStreamSource(new MediaStream(n));return Object.defineProperty(i,"mediaStream",{value:e}),i},Lp=(s,e)=>(t,{mediaStreamTrack:n})=>{if(typeof t.createMediaStreamTrackSource=="function")return t.createMediaStreamTrackSource(n);const i=new MediaStream([n]),r=t.createMediaStreamSource(i);if(n.kind!=="audio")throw s();if(e(t))throw new TypeError;return r},zp=s=>s===null?null:s.hasOwnProperty("OfflineAudioContext")?s.OfflineAudioContext:s.hasOwnProperty("webkitOfflineAudioContext")?s.webkitOfflineAudioContext:null,Zp=(s,e,t,n,i,r)=>(o,a)=>{const c=o.createOscillator();return Ue(c,a),We(c,a,"detune"),We(c,a,"frequency"),a.periodicWave!==void 0?c.setPeriodicWave(a.periodicWave):Me(c,a,"type"),e(t,()=>t(o))||Wo(c),e(n,()=>n(o))||r(c,o),e(i,()=>i(o))||Bo(c),s(o,c),c},Gp=s=>(e,t)=>{const n=e.createPanner();return n.orientationX===void 0?s(e,t):(Ue(n,t),We(n,t,"orientationX"),We(n,t,"orientationY"),We(n,t,"orientationZ"),We(n,t,"positionX"),We(n,t,"positionY"),We(n,t,"positionZ"),Me(n,t,"coneInnerAngle"),Me(n,t,"coneOuterAngle"),Me(n,t,"coneOuterGain"),Me(n,t,"distanceModel"),Me(n,t,"maxDistance"),Me(n,t,"panningModel"),Me(n,t,"refDistance"),Me(n,t,"rolloffFactor"),n)},Xp=(s,e,t,n,i,r,o,a,c,l)=>(u,{coneInnerAngle:h,coneOuterAngle:p,coneOuterGain:d,distanceModel:f,maxDistance:_,orientationX:m,orientationY:g,orientationZ:y,panningModel:x,positionX:w,positionY:v,positionZ:b,refDistance:k,rolloffFactor:T,...R})=>{const I=u.createPanner();if(R.channelCount>2||R.channelCountMode==="max")throw o();Ue(I,R);const A={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},D=t(u,{...A,channelInterpretation:"speakers",numberOfInputs:6}),M=n(u,{...R,gain:1}),N=n(u,{...A,gain:1}),q=n(u,{...A,gain:0}),V=n(u,{...A,gain:0}),j=n(u,{...A,gain:0}),G=n(u,{...A,gain:0}),B=n(u,{...A,gain:0}),Z=i(u,256,6,1),X=r(u,{...A,curve:new Float32Array([1,1]),oversample:"none"});let ee=[m,g,y],pe=[w,v,b];const ie=new Float32Array(1);Z.onaudioprocess=({inputBuffer:z})=>{const Je=[c(z,ie,0),c(z,ie,1),c(z,ie,2)];Je.some((Vt,U)=>Vt!==ee[U])&&(I.setOrientation(...Je),ee=Je);const lt=[c(z,ie,3),c(z,ie,4),c(z,ie,5)];lt.some((Vt,U)=>Vt!==pe[U])&&(I.setPosition(...lt),pe=lt)},Object.defineProperty(q.gain,"defaultValue",{get:()=>0}),Object.defineProperty(V.gain,"defaultValue",{get:()=>0}),Object.defineProperty(j.gain,"defaultValue",{get:()=>0}),Object.defineProperty(G.gain,"defaultValue",{get:()=>0}),Object.defineProperty(B.gain,"defaultValue",{get:()=>0});const Q={get bufferSize(){},get channelCount(){return I.channelCount},set channelCount(z){if(z>2)throw o();M.channelCount=z,I.channelCount=z},get channelCountMode(){return I.channelCountMode},set channelCountMode(z){if(z==="max")throw o();M.channelCountMode=z,I.channelCountMode=z},get channelInterpretation(){return I.channelInterpretation},set channelInterpretation(z){M.channelInterpretation=z,I.channelInterpretation=z},get coneInnerAngle(){return I.coneInnerAngle},set coneInnerAngle(z){I.coneInnerAngle=z},get coneOuterAngle(){return I.coneOuterAngle},set coneOuterAngle(z){I.coneOuterAngle=z},get coneOuterGain(){return I.coneOuterGain},set coneOuterGain(z){if(z<0||z>1)throw e();I.coneOuterGain=z},get context(){return I.context},get distanceModel(){return I.distanceModel},set distanceModel(z){I.distanceModel=z},get inputs(){return[M]},get maxDistance(){return I.maxDistance},set maxDistance(z){if(z<0)throw new RangeError;I.maxDistance=z},get numberOfInputs(){return I.numberOfInputs},get numberOfOutputs(){return I.numberOfOutputs},get orientationX(){return N.gain},get orientationY(){return q.gain},get orientationZ(){return V.gain},get panningModel(){return I.panningModel},set panningModel(z){I.panningModel=z},get positionX(){return j.gain},get positionY(){return G.gain},get positionZ(){return B.gain},get refDistance(){return I.refDistance},set refDistance(z){if(z<0)throw new RangeError;I.refDistance=z},get rolloffFactor(){return I.rolloffFactor},set rolloffFactor(z){if(z<0)throw new RangeError;I.rolloffFactor=z},addEventListener(...z){return M.addEventListener(z[0],z[1],z[2])},dispatchEvent(...z){return M.dispatchEvent(z[0])},removeEventListener(...z){return M.removeEventListener(z[0],z[1],z[2])}};h!==Q.coneInnerAngle&&(Q.coneInnerAngle=h),p!==Q.coneOuterAngle&&(Q.coneOuterAngle=p),d!==Q.coneOuterGain&&(Q.coneOuterGain=d),f!==Q.distanceModel&&(Q.distanceModel=f),_!==Q.maxDistance&&(Q.maxDistance=_),m!==Q.orientationX.value&&(Q.orientationX.value=m),g!==Q.orientationY.value&&(Q.orientationY.value=g),y!==Q.orientationZ.value&&(Q.orientationZ.value=y),x!==Q.panningModel&&(Q.panningModel=x),w!==Q.positionX.value&&(Q.positionX.value=w),v!==Q.positionY.value&&(Q.positionY.value=v),b!==Q.positionZ.value&&(Q.positionZ.value=b),k!==Q.refDistance&&(Q.refDistance=k),T!==Q.rolloffFactor&&(Q.rolloffFactor=T),(ee[0]!==1||ee[1]!==0||ee[2]!==0)&&I.setOrientation(...ee),(pe[0]!==0||pe[1]!==0||pe[2]!==0)&&I.setPosition(...pe);const ye=()=>{M.connect(I),s(M,X,0,0),X.connect(N).connect(D,0,0),X.connect(q).connect(D,0,1),X.connect(V).connect(D,0,2),X.connect(j).connect(D,0,3),X.connect(G).connect(D,0,4),X.connect(B).connect(D,0,5),D.connect(Z).connect(u.destination)},Ee=()=>{M.disconnect(I),a(M,X,0,0),X.disconnect(N),N.disconnect(D),X.disconnect(q),q.disconnect(D),X.disconnect(V),V.disconnect(D),X.disconnect(j),j.disconnect(D),X.disconnect(G),G.disconnect(D),X.disconnect(B),B.disconnect(D),D.disconnect(Z),Z.disconnect(u.destination)};return l(fn(Q,I),ye,Ee)},Hp=s=>(e,{disableNormalization:t,imag:n,real:i})=>{const r=n instanceof Float32Array?n:new Float32Array(n),o=i instanceof Float32Array?i:new Float32Array(i),a=e.createPeriodicWave(o,r,{disableNormalization:t});if(Array.from(n).length<2)throw s();return a},oi=(s,e,t,n)=>s.createScriptProcessor(e,t,n),Yp=(s,e)=>(t,n)=>{const i=n.channelCountMode;if(i==="clamped-max")throw e();if(t.createStereoPanner===void 0)return s(t,n);const r=t.createStereoPanner();return Ue(r,n),We(r,n,"pan"),Object.defineProperty(r,"channelCountMode",{get:()=>i,set:o=>{if(o!==i)throw e()}}),r},Up=(s,e,t,n,i,r)=>{const a=new Float32Array([1,1]),c=Math.PI/2,l={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},u={...l,oversample:"none"},h=(f,_,m,g)=>{const y=new Float32Array(16385),x=new Float32Array(16385);for(let R=0;R<16385;R+=1){const I=R/16384*c;y[R]=Math.cos(I),x[R]=Math.sin(I)}const w=t(f,{...l,gain:0}),v=n(f,{...u,curve:y}),b=n(f,{...u,curve:a}),k=t(f,{...l,gain:0}),T=n(f,{...u,curve:x});return{connectGraph(){_.connect(w),_.connect(b.inputs===void 0?b:b.inputs[0]),_.connect(k),b.connect(m),m.connect(v.inputs===void 0?v:v.inputs[0]),m.connect(T.inputs===void 0?T:T.inputs[0]),v.connect(w.gain),T.connect(k.gain),w.connect(g,0,0),k.connect(g,0,1)},disconnectGraph(){_.disconnect(w),_.disconnect(b.inputs===void 0?b:b.inputs[0]),_.disconnect(k),b.disconnect(m),m.disconnect(v.inputs===void 0?v:v.inputs[0]),m.disconnect(T.inputs===void 0?T:T.inputs[0]),v.disconnect(w.gain),T.disconnect(k.gain),w.disconnect(g,0,0),k.disconnect(g,0,1)}}},p=(f,_,m,g)=>{const y=new Float32Array(16385),x=new Float32Array(16385),w=new Float32Array(16385),v=new Float32Array(16385),b=Math.floor(16385/2);for(let j=0;j<16385;j+=1)if(j>b){const G=(j-b)/(16384-b)*c;y[j]=Math.cos(G),x[j]=Math.sin(G),w[j]=0,v[j]=1}else{const G=j/(16384-b)*c;y[j]=1,x[j]=0,w[j]=Math.cos(G),v[j]=Math.sin(G)}const k=e(f,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),T=t(f,{...l,gain:0}),R=n(f,{...u,curve:y}),I=t(f,{...l,gain:0}),A=n(f,{...u,curve:x}),D=n(f,{...u,curve:a}),M=t(f,{...l,gain:0}),N=n(f,{...u,curve:w}),q=t(f,{...l,gain:0}),V=n(f,{...u,curve:v});return{connectGraph(){_.connect(k),_.connect(D.inputs===void 0?D:D.inputs[0]),k.connect(T,0),k.connect(I,0),k.connect(M,1),k.connect(q,1),D.connect(m),m.connect(R.inputs===void 0?R:R.inputs[0]),m.connect(A.inputs===void 0?A:A.inputs[0]),m.connect(N.inputs===void 0?N:N.inputs[0]),m.connect(V.inputs===void 0?V:V.inputs[0]),R.connect(T.gain),A.connect(I.gain),N.connect(M.gain),V.connect(q.gain),T.connect(g,0,0),M.connect(g,0,0),I.connect(g,0,1),q.connect(g,0,1)},disconnectGraph(){_.disconnect(k),_.disconnect(D.inputs===void 0?D:D.inputs[0]),k.disconnect(T,0),k.disconnect(I,0),k.disconnect(M,1),k.disconnect(q,1),D.disconnect(m),m.disconnect(R.inputs===void 0?R:R.inputs[0]),m.disconnect(A.inputs===void 0?A:A.inputs[0]),m.disconnect(N.inputs===void 0?N:N.inputs[0]),m.disconnect(V.inputs===void 0?V:V.inputs[0]),R.disconnect(T.gain),A.disconnect(I.gain),N.disconnect(M.gain),V.disconnect(q.gain),T.disconnect(g,0,0),M.disconnect(g,0,0),I.disconnect(g,0,1),q.disconnect(g,0,1)}}},d=(f,_,m,g,y)=>{if(_===1)return h(f,m,g,y);if(_===2)return p(f,m,g,y);throw i()};return(f,{channelCount:_,channelCountMode:m,pan:g,...y})=>{if(m==="max")throw i();const x=s(f,{...y,channelCount:1,channelCountMode:m,numberOfInputs:2}),w=t(f,{...y,channelCount:_,channelCountMode:m,gain:1}),v=t(f,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:g});let{connectGraph:b,disconnectGraph:k}=d(f,_,w,v,x);Object.defineProperty(v.gain,"defaultValue",{get:()=>0}),Object.defineProperty(v.gain,"maxValue",{get:()=>1}),Object.defineProperty(v.gain,"minValue",{get:()=>-1});const T={get bufferSize(){},get channelCount(){return w.channelCount},set channelCount(D){w.channelCount!==D&&(R&&k(),{connectGraph:b,disconnectGraph:k}=d(f,D,w,v,x),R&&b()),w.channelCount=D},get channelCountMode(){return w.channelCountMode},set channelCountMode(D){if(D==="clamped-max"||D==="max")throw i();w.channelCountMode=D},get channelInterpretation(){return w.channelInterpretation},set channelInterpretation(D){w.channelInterpretation=D},get context(){return w.context},get inputs(){return[w]},get numberOfInputs(){return w.numberOfInputs},get numberOfOutputs(){return w.numberOfOutputs},get pan(){return v.gain},addEventListener(...D){return w.addEventListener(D[0],D[1],D[2])},dispatchEvent(...D){return w.dispatchEvent(D[0])},removeEventListener(...D){return w.removeEventListener(D[0],D[1],D[2])}};let R=!1;const I=()=>{b(),R=!0},A=()=>{k(),R=!1};return r(fn(T,x),I,A)}},Kp=(s,e,t,n,i,r,o)=>(a,c)=>{const l=a.createWaveShaper();if(r!==null&&r.name==="webkitAudioContext"&&a.createGain().gain.automationRate===void 0)return t(a,c);Ue(l,c);const u=c.curve===null||c.curve instanceof Float32Array?c.curve:new Float32Array(c.curve);if(u!==null&&u.length<2)throw e();Me(l,{curve:u},"curve"),Me(l,c,"oversample");let h=null,p=!1;return o(l,"curve",_=>()=>_.call(l),_=>m=>(_.call(l,m),p&&(n(m)&&h===null?h=s(a,l):!n(m)&&h!==null&&(h(),h=null)),m)),i(l,()=>{p=!0,n(l.curve)&&(h=s(a,l))},()=>{p=!1,h!==null&&(h(),h=null)})},Qp=(s,e,t,n,i)=>(r,{curve:o,oversample:a,...c})=>{const l=r.createWaveShaper(),u=r.createWaveShaper();Ue(l,c),Ue(u,c);const h=t(r,{...c,gain:1}),p=t(r,{...c,gain:-1}),d=t(r,{...c,gain:1}),f=t(r,{...c,gain:-1});let _=null,m=!1,g=null;const y={get bufferSize(){},get channelCount(){return l.channelCount},set channelCount(v){h.channelCount=v,p.channelCount=v,l.channelCount=v,d.channelCount=v,u.channelCount=v,f.channelCount=v},get channelCountMode(){return l.channelCountMode},set channelCountMode(v){h.channelCountMode=v,p.channelCountMode=v,l.channelCountMode=v,d.channelCountMode=v,u.channelCountMode=v,f.channelCountMode=v},get channelInterpretation(){return l.channelInterpretation},set channelInterpretation(v){h.channelInterpretation=v,p.channelInterpretation=v,l.channelInterpretation=v,d.channelInterpretation=v,u.channelInterpretation=v,f.channelInterpretation=v},get context(){return l.context},get curve(){return g},set curve(v){if(v!==null&&v.length<2)throw e();if(v===null)l.curve=v,u.curve=v;else{const b=v.length,k=new Float32Array(b+2-b%2),T=new Float32Array(b+2-b%2);k[0]=v[0],T[0]=-v[b-1];const R=Math.ceil((b+1)/2),I=(b+1)/2-1;for(let A=1;A<R;A+=1){const D=A/R*I,M=Math.floor(D),N=Math.ceil(D);k[A]=M===N?v[M]:(1-(D-M))*v[M]+(1-(N-D))*v[N],T[A]=M===N?-v[b-1-M]:-((1-(D-M))*v[b-1-M])-(1-(N-D))*v[b-1-N]}k[R]=b%2===1?v[R-1]:(v[R-2]+v[R-1])/2,l.curve=k,u.curve=T}g=v,m&&(n(g)&&_===null?_=s(r,h):_!==null&&(_(),_=null))},get inputs(){return[h]},get numberOfInputs(){return l.numberOfInputs},get numberOfOutputs(){return l.numberOfOutputs},get oversample(){return l.oversample},set oversample(v){l.oversample=v,u.oversample=v},addEventListener(...v){return h.addEventListener(v[0],v[1],v[2])},dispatchEvent(...v){return h.dispatchEvent(v[0])},removeEventListener(...v){return h.removeEventListener(v[0],v[1],v[2])}};o!==null&&(y.curve=o instanceof Float32Array?o:new Float32Array(o)),a!==y.oversample&&(y.oversample=a);const x=()=>{h.connect(l).connect(d),h.connect(p).connect(u).connect(f).connect(d),m=!0,n(g)&&(_=s(r,h))},w=()=>{h.disconnect(l),l.disconnect(d),h.disconnect(p),p.disconnect(u),u.disconnect(f),f.disconnect(d),m=!1,_!==null&&(_(),_=null)};return i(fn(y,d),x,w)},bt=()=>new DOMException("","NotSupportedError"),Jp={numberOfChannels:1},ef=(s,e,t,n,i)=>class extends s{constructor(o,a,c){let l;if(typeof o=="number"&&a!==void 0&&c!==void 0)l={length:a,numberOfChannels:o,sampleRate:c};else if(typeof o=="object")l=o;else throw new Error("The given parameters are not valid.");const{length:u,numberOfChannels:h,sampleRate:p}={...Jp,...l},d=n(h,u,p);e(Xn,()=>Xn(d))||d.addEventListener("statechange",(()=>{let f=0;const _=m=>{this._state==="running"&&(f>0?(d.removeEventListener("statechange",_),m.stopImmediatePropagation(),this._waitForThePromiseToSettle(m)):f+=1)};return _})()),super(d,h),this._length=u,this._nativeOfflineAudioContext=d,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(t()):(this._state="running",i(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,pl(this)}))}_waitForThePromiseToSettle(o){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(o):setTimeout(()=>this._waitForThePromiseToSettle(o))}},tf={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},sf=(s,e,t,n,i,r,o)=>class extends s{constructor(c,l){const u=i(c),h={...tf,...l},p=t(u,h),d=r(u),f=d?n():null,_=c.sampleRate/2;super(c,!1,p,f),this._detune=e(this,d,p.detune,153600,-153600),this._frequency=e(this,d,p.frequency,_,-_),this._nativeOscillatorNode=p,this._onended=null,this._oscillatorNodeRenderer=f,this._oscillatorNodeRenderer!==null&&h.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=h.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(c){const l=typeof c=="function"?o(this,c):null;this._nativeOscillatorNode.onended=l;const u=this._nativeOscillatorNode.onended;this._onended=u!==null&&u===l?c:u}get type(){return this._nativeOscillatorNode.type}set type(c){this._nativeOscillatorNode.type=c,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(c){this._nativeOscillatorNode.setPeriodicWave(c),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=c)}start(c=0){if(this._nativeOscillatorNode.start(c),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=c),this.context.state!=="closed"){on(this);const l=()=>{this._nativeOscillatorNode.removeEventListener("ended",l),ds(this)&&si(this)};this._nativeOscillatorNode.addEventListener("ended",l)}}stop(c=0){this._nativeOscillatorNode.stop(c),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=c)}},nf=(s,e,t,n,i)=>()=>{const r=new WeakMap;let o=null,a=null,c=null;const l=async(u,h)=>{let p=t(u);const d=ft(p,h);if(!d){const f={channelCount:p.channelCount,channelCountMode:p.channelCountMode,channelInterpretation:p.channelInterpretation,detune:p.detune.value,frequency:p.frequency.value,periodicWave:o===null?void 0:o,type:p.type};p=e(h,f),a!==null&&p.start(a),c!==null&&p.stop(c)}return r.set(h,p),d?(await s(h,u.detune,p.detune),await s(h,u.frequency,p.frequency)):(await n(h,u.detune,p.detune),await n(h,u.frequency,p.frequency)),await i(u,h,p),p};return{set periodicWave(u){o=u},set start(u){a=u},set stop(u){c=u},render(u,h){const p=r.get(h);return p!==void 0?Promise.resolve(p):l(u,h)}}},rf={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},of=(s,e,t,n,i,r,o)=>class extends s{constructor(c,l){const u=i(c),h={...rf,...l},p=t(u,h),d=r(u),f=d?n():null;super(c,!1,p,f),this._nativePannerNode=p,this._orientationX=e(this,d,p.orientationX,mt,St),this._orientationY=e(this,d,p.orientationY,mt,St),this._orientationZ=e(this,d,p.orientationZ,mt,St),this._positionX=e(this,d,p.positionX,mt,St),this._positionY=e(this,d,p.positionY,mt,St),this._positionZ=e(this,d,p.positionZ,mt,St),o(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(c){this._nativePannerNode.coneInnerAngle=c}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(c){this._nativePannerNode.coneOuterAngle=c}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(c){this._nativePannerNode.coneOuterGain=c}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(c){this._nativePannerNode.distanceModel=c}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(c){this._nativePannerNode.maxDistance=c}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(c){this._nativePannerNode.panningModel=c}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(c){this._nativePannerNode.refDistance=c}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(c){this._nativePannerNode.rolloffFactor=c}},af=(s,e,t,n,i,r,o,a,c,l)=>()=>{const u=new WeakMap;let h=null;const p=async(d,f)=>{let _=null,m=r(d);const g={channelCount:m.channelCount,channelCountMode:m.channelCountMode,channelInterpretation:m.channelInterpretation},y={...g,coneInnerAngle:m.coneInnerAngle,coneOuterAngle:m.coneOuterAngle,coneOuterGain:m.coneOuterGain,distanceModel:m.distanceModel,maxDistance:m.maxDistance,panningModel:m.panningModel,refDistance:m.refDistance,rolloffFactor:m.rolloffFactor},x=ft(m,f);if("bufferSize"in m)_=n(f,{...g,gain:1});else if(!x){const w={...y,orientationX:m.orientationX.value,orientationY:m.orientationY.value,orientationZ:m.orientationZ.value,positionX:m.positionX.value,positionY:m.positionY.value,positionZ:m.positionZ.value};m=i(f,w)}if(u.set(f,_===null?m:_),_!==null){if(h===null){if(o===null)throw new Error("Missing the native OfflineAudioContext constructor.");const A=new o(6,d.context.length,f.sampleRate),D=e(A,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});D.connect(A.destination),h=(async()=>{const M=await Promise.all([d.orientationX,d.orientationY,d.orientationZ,d.positionX,d.positionY,d.positionZ].map(async(N,q)=>{const V=t(A,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:q===0?1:0});return await a(A,N,V.offset),V}));for(let N=0;N<6;N+=1)M[N].connect(D,0,N),M[N].start(0);return l(A)})()}const w=await h,v=n(f,{...g,gain:1});await c(d,f,v);const b=[];for(let A=0;A<w.numberOfChannels;A+=1)b.push(w.getChannelData(A));let k=[b[0][0],b[1][0],b[2][0]],T=[b[3][0],b[4][0],b[5][0]],R=n(f,{...g,gain:1}),I=i(f,{...y,orientationX:k[0],orientationY:k[1],orientationZ:k[2],positionX:T[0],positionY:T[1],positionZ:T[2]});v.connect(R).connect(I.inputs[0]),I.connect(_);for(let A=128;A<w.length;A+=128){const D=[b[0][A],b[1][A],b[2][A]],M=[b[3][A],b[4][A],b[5][A]];if(D.some((N,q)=>N!==k[q])||M.some((N,q)=>N!==T[q])){k=D,T=M;const N=A/f.sampleRate;R.gain.setValueAtTime(0,N),R=n(f,{...g,gain:0}),I=i(f,{...y,orientationX:k[0],orientationY:k[1],orientationZ:k[2],positionX:T[0],positionY:T[1],positionZ:T[2]}),R.gain.setValueAtTime(1,N),v.connect(R).connect(I.inputs[0]),I.connect(_)}}return _}return x?(await s(f,d.orientationX,m.orientationX),await s(f,d.orientationY,m.orientationY),await s(f,d.orientationZ,m.orientationZ),await s(f,d.positionX,m.positionX),await s(f,d.positionY,m.positionY),await s(f,d.positionZ,m.positionZ)):(await a(f,d.orientationX,m.orientationX),await a(f,d.orientationY,m.orientationY),await a(f,d.orientationZ,m.orientationZ),await a(f,d.positionX,m.positionX),await a(f,d.positionY,m.positionY),await a(f,d.positionZ,m.positionZ)),pn(m)?await c(d,f,m.inputs[0]):await c(d,f,m),m};return{render(d,f){const _=u.get(f);return _!==void 0?Promise.resolve(_):p(d,f)}}},cf={disableNormalization:!1},lf=(s,e,t,n)=>class Cl{constructor(r,o){const a=e(r),c=n({...cf,...o}),l=s(a,c);return t.add(l),l}static[Symbol.hasInstance](r){return r!==null&&typeof r=="object"&&Object.getPrototypeOf(r)===Cl.prototype||t.has(r)}},uf=(s,e)=>(t,n,i)=>(s(n).replay(i),e(n,t,i)),hf=(s,e,t)=>async(n,i,r)=>{const o=s(n);await Promise.all(o.activeInputs.map((a,c)=>Array.from(a).map(async([l,u])=>{const p=await e(l).render(l,i),d=n.context.destination;!t(l)&&(n!==d||!t(n))&&p.connect(r,u,c)})).reduce((a,c)=>[...a,...c],[]))},df=(s,e,t)=>async(n,i,r)=>{const o=e(n);await Promise.all(Array.from(o.activeInputs).map(async([a,c])=>{const u=await s(a).render(a,i);t(a)||u.connect(r,c)}))},pf=(s,e,t,n)=>i=>s(Xn,()=>Xn(i))?Promise.resolve(s(n,n)).then(r=>{if(!r){const o=t(i,512,0,1);i.oncomplete=()=>{o.onaudioprocess=null,o.disconnect()},o.onaudioprocess=()=>i.currentTime,o.connect(i.destination)}return i.startRendering()}):new Promise(r=>{const o=e(i,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});i.oncomplete=a=>{o.disconnect(),r(a.renderedBuffer)},o.connect(i.destination),i.startRendering()}),ff=s=>(e,t)=>{s.set(e,t)},mf=s=>(e,t)=>s.set(e,t),gf=(s,e,t,n,i,r,o,a)=>(c,l)=>t(c).render(c,l).then(()=>Promise.all(Array.from(n(l)).map(u=>t(u).render(u,l)))).then(()=>i(l)).then(u=>(typeof u.copyFromChannel!="function"?(o(u),Fo(u)):e(r,()=>r(u))||a(u),s.add(u),u)),_f={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},vf=(s,e,t,n,i,r)=>class extends s{constructor(a,c){const l=i(a),u={..._f,...c},h=t(l,u),p=r(l),d=p?n():null;super(a,!1,h,d),this._pan=e(this,p,h.pan)}get pan(){return this._pan}},yf=(s,e,t,n,i)=>()=>{const r=new WeakMap,o=async(a,c)=>{let l=t(a);const u=ft(l,c);if(!u){const h={channelCount:l.channelCount,channelCountMode:l.channelCountMode,channelInterpretation:l.channelInterpretation,pan:l.pan.value};l=e(c,h)}return r.set(c,l),u?await s(c,a.pan,l.pan):await n(c,a.pan,l.pan),pn(l)?await i(a,c,l.inputs[0]):await i(a,c,l),l};return{render(a,c){const l=r.get(c);return l!==void 0?Promise.resolve(l):o(a,c)}}},bf=s=>()=>{if(s===null)return!1;try{new s({length:1,sampleRate:44100})}catch{return!1}return!0},wf=s=>()=>{if(s===null)return!1;const t=new s(1,1,44100).createBuffer(1,1,44100);if(t.copyToChannel===void 0)return!0;const n=new Float32Array(2);try{t.copyFromChannel(n,0,0)}catch{return!1}return!0},xf=s=>()=>{if(s===null)return!1;if(s.prototype!==void 0&&s.prototype.close!==void 0)return!0;const e=new s,t=e.close!==void 0;try{e.close()}catch{}return t},Cf=s=>()=>{if(s===null)return Promise.resolve(!1);const e=new s(1,1,44100);return new Promise(t=>{let n=!0;const i=o=>{n&&(n=!1,e.startRendering(),t(o instanceof TypeError))};let r;try{r=e.decodeAudioData(null,()=>{},i)}catch(o){i(o)}r!==void 0&&r.catch(i)})},Sf=s=>()=>{if(s===null)return!1;let e;try{e=new s({latencyHint:"balanced"})}catch{return!1}return e.close(),!0},Tf=s=>()=>{if(s===null)return!1;const t=new s(1,1,44100).createGain(),n=t.connect(t)===t;return t.disconnect(t),n},kf=(s,e)=>async()=>{if(s===null)return!0;if(e===null)return!1;const t=new Blob(['let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),n=new MessageChannel,i=new e(1,128,44100),r=URL.createObjectURL(t);let o=!1;try{await i.audioWorklet.addModule(r);const a=new s(i,"a",{numberOfOutputs:0}),c=i.createOscillator();await new Promise(l=>{a.port.onmessage=()=>l(),a.port.postMessage(n.port2,[n.port2])}),a.port.onmessage=()=>o=!0,c.connect(a),c.start(0),await i.startRendering(),o=await new Promise(l=>{n.port1.onmessage=({data:u})=>l(u===1),n.port1.postMessage(0)})}catch{}finally{n.port1.close(),URL.revokeObjectURL(r)}return o},Af=(s,e)=>async()=>{if(s===null)return!0;if(e===null)return!1;const t=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),n=new e(1,128,44100),i=URL.createObjectURL(t);let r=!1,o=!1;try{await n.audioWorklet.addModule(i);const a=new s(n,"a",{numberOfOutputs:0}),c=n.createOscillator();a.port.onmessage=()=>r=!0,a.onprocessorerror=()=>o=!0,c.connect(a),c.start(0),await n.startRendering(),await new Promise(l=>setTimeout(l))}catch{}finally{URL.revokeObjectURL(i)}return r&&!o},If=s=>()=>{if(s===null)return!1;const t=new s(1,1,44100).createChannelMerger();if(t.channelCountMode==="max")return!0;try{t.channelCount=2}catch{return!0}return!1},Df=s=>()=>{if(s===null)return!1;const e=new s(1,1,44100);return e.createConstantSource===void 0?!0:e.createConstantSource().offset.maxValue!==Number.POSITIVE_INFINITY},Rf=s=>()=>{if(s===null)return!1;const e=new s(1,1,44100),t=e.createConvolver();t.buffer=e.createBuffer(1,1,e.sampleRate);try{t.buffer=e.createBuffer(1,1,e.sampleRate)}catch{return!1}return!0},Ef=s=>()=>{if(s===null)return!1;const t=new s(1,1,44100).createConvolver();try{t.channelCount=1}catch{return!1}return!0},Mf=s=>()=>s!==null&&s.hasOwnProperty("isSecureContext"),Of=s=>()=>{if(s===null)return!1;const e=new s;try{return e.createMediaStreamSource(new MediaStream),!1}catch{return!0}finally{e.close()}},Nf=(s,e)=>()=>{if(e===null)return Promise.resolve(!1);const t=new e(1,1,44100),n=s(t,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(i=>{t.oncomplete=()=>{n.disconnect(),i(t.currentTime!==0)},t.startRendering()})},Ff=s=>()=>{if(s===null)return Promise.resolve(!1);const e=new s(1,1,44100);if(e.createStereoPanner===void 0||e.createConstantSource===void 0)return Promise.resolve(!0);const t=e.createConstantSource(),n=e.createStereoPanner();return t.channelCount=1,t.offset.value=1,n.channelCount=1,t.start(),t.connect(n).connect(e.destination),e.startRendering().then(i=>i.getChannelData(0)[0]!==1)},Vf=()=>new DOMException("","UnknownError"),Pf={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},Wf=(s,e,t,n,i,r,o)=>class extends s{constructor(c,l){const u=i(c),h={...Pf,...l},p=t(u,h),f=r(u)?n():null;super(c,!0,p,f),this._isCurveNullified=!1,this._nativeWaveShaperNode=p,o(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(c){if(c===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(c.length<2)throw e();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=c}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(c){this._nativeWaveShaperNode.oversample=c}},Bf=(s,e,t)=>()=>{const n=new WeakMap,i=async(r,o)=>{let a=e(r);if(!ft(a,o)){const l={channelCount:a.channelCount,channelCountMode:a.channelCountMode,channelInterpretation:a.channelInterpretation,curve:a.curve,oversample:a.oversample};a=s(o,l)}return n.set(o,a),pn(a)?await t(r,o,a.inputs[0]):await t(r,o,a),a};return{render(r,o){const a=n.get(o);return a!==void 0?Promise.resolve(a):i(r,o)}}},$f=()=>typeof window>"u"?null:window,qf=(s,e)=>t=>{t.copyFromChannel=(n,i,r=0)=>{const o=s(r),a=s(i);if(a>=t.numberOfChannels)throw e();const c=t.length,l=t.getChannelData(a),u=n.length;for(let h=o<0?-o:0;h+o<c&&h<u;h+=1)n[h]=l[h+o]},t.copyToChannel=(n,i,r=0)=>{const o=s(r),a=s(i);if(a>=t.numberOfChannels)throw e();const c=t.length,l=t.getChannelData(a),u=n.length;for(let h=o<0?-o:0;h+o<c&&h<u;h+=1)l[h+o]=n[h]}},jf=s=>e=>{e.copyFromChannel=(t=>(n,i,r=0)=>{const o=s(r),a=s(i);if(o<e.length)return t.call(e,n,a,o)})(e.copyFromChannel),e.copyToChannel=(t=>(n,i,r=0)=>{const o=s(r),a=s(i);if(o<e.length)return t.call(e,n,a,o)})(e.copyToChannel)},Lf=s=>(e,t)=>{const n=t.createBuffer(1,1,44100);e.buffer===null&&(e.buffer=n),s(e,"buffer",i=>()=>{const r=i.call(e);return r===n?null:r},i=>r=>i.call(e,r===null?n:r))},zf=(s,e)=>(t,n)=>{n.channelCount=1,n.channelCountMode="explicit",Object.defineProperty(n,"channelCount",{get:()=>1,set:()=>{throw s()}}),Object.defineProperty(n,"channelCountMode",{get:()=>"explicit",set:()=>{throw s()}});const i=t.createBufferSource();e(n,()=>{const a=n.numberOfInputs;for(let c=0;c<a;c+=1)i.connect(n,0,c)},()=>i.disconnect(n))},Sl=(s,e,t)=>s.copyFromChannel===void 0?s.getChannelData(t)[0]:(s.copyFromChannel(e,t),e[0]),Tl=s=>{if(s===null)return!1;const e=s.length;return e%2!==0?s[Math.floor(e/2)]!==0:s[e/2-1]+s[e/2]!==0},ai=(s,e,t,n)=>{let i=s;for(;!i.hasOwnProperty(e);)i=Object.getPrototypeOf(i);const{get:r,set:o}=Object.getOwnPropertyDescriptor(i,e);Object.defineProperty(s,e,{get:t(r),set:n(o)})},Zf=s=>({...s,outputChannelCount:s.outputChannelCount!==void 0?s.outputChannelCount:s.numberOfInputs===1&&s.numberOfOutputs===1?[s.channelCount]:Array.from({length:s.numberOfOutputs},()=>1)}),Gf=s=>({...s,channelCount:s.numberOfOutputs}),Xf=s=>{const{imag:e,real:t}=s;return e===void 0?t===void 0?{...s,imag:[0,0],real:[0,0]}:{...s,imag:Array.from(t,()=>0),real:t}:t===void 0?{...s,imag:e,real:Array.from(e,()=>0)}:{...s,imag:e,real:t}},kl=(s,e,t)=>{try{s.setValueAtTime(e,t)}catch(n){if(n.code!==9)throw n;kl(s,e,t+1e-7)}},Hf=s=>{const e=s.createBufferSource();e.start();try{e.start()}catch{return!0}return!1},Yf=s=>{const e=s.createBufferSource(),t=s.createBuffer(1,1,44100);e.buffer=t;try{e.start(0,1)}catch{return!1}return!0},Uf=s=>{const e=s.createBufferSource();e.start();try{e.stop()}catch{return!1}return!0},$o=s=>{const e=s.createOscillator();try{e.start(-1)}catch(t){return t instanceof RangeError}return!1},Al=s=>{const e=s.createBuffer(1,1,44100),t=s.createBufferSource();t.buffer=e,t.start(),t.stop();try{return t.stop(),!0}catch{return!1}},qo=s=>{const e=s.createOscillator();try{e.stop(-1)}catch(t){return t instanceof RangeError}return!1},Kf=s=>{const{port1:e,port2:t}=new MessageChannel;try{e.postMessage(s)}finally{e.close(),t.close()}},Qf=()=>{try{new DOMException}catch{return!1}return!0},Jf=()=>new Promise(s=>{const e=new ArrayBuffer(0),{port1:t,port2:n}=new MessageChannel;t.onmessage=({data:i})=>s(i!==null),n.postMessage(e,[e])}),em=s=>{s.start=(e=>(t=0,n=0,i)=>{const r=s.buffer,o=r===null?n:Math.min(r.duration,n);r!==null&&o>r.duration-.5/s.context.sampleRate?e.call(s,t,0,0):e.call(s,t,o,i)})(s.start)},Il=(s,e)=>{const t=e.createGain();s.connect(t);const n=(i=>()=>{i.call(s,t),s.removeEventListener("ended",n)})(s.disconnect);s.addEventListener("ended",n),fn(s,t),s.stop=(i=>{let r=!1;return(o=0)=>{if(r)try{i.call(s,o)}catch{t.gain.setValueAtTime(0,o)}else i.call(s,o),r=!0}})(s.stop)},mn=(s,e)=>t=>{const n={value:s};return Object.defineProperties(t,{currentTarget:n,target:n}),typeof e=="function"?e.call(s,t):e.handleEvent.call(s,t)},tm=ih(Bs),sm=uh(Bs),nm=xd(rr),Dl=new WeakMap,im=$d(Dl),jt=Qh(new Map,new WeakMap),Gt=$f(),Rl=_p(jt,ss),jo=Bd(_t),ct=hf(_t,jo,Ps),rm=mh(Rl,Re,ct),De=Ld(ir),tt=zp(Gt),Te=op(tt),El=new WeakMap,Ml=Md(mn),Cs=wp(Gt),Lo=sp(Cs),zo=np(Gt),Ol=ip(Gt),an=Cp(Gt),ze=$h(rh(ol),lh(tm,sm,Zi,nm,Gi,_t,im,ti,Re,Bs,ds,Ps,Wi),jt,Kd(fo,Gi,_t,Re,Gn,ds),ss,or,bt,vd(Zi,fo,_t,Re,Gn,De,ds,Te),Td(El,_t,Zt),Ml,De,Lo,zo,Ol,Te,an),om=fh(ze,rm,ss,Rl,De,Te),Zo=new WeakSet,rc=vp(Gt),Nl=hd(new Uint32Array(1)),Go=qf(Nl,ss),Xo=jf(Nl),Fl=_h(Zo,jt,bt,rc,tt,bf(rc),Go,Xo),ar=hh(kt),Vl=df(jo,ni,Ps),ns=rd(Vl),gn=bp(ar,jt,Hf,Yf,Uf,$o,Al,qo,em,Lf(ai),Il),is=uf(qd(ni),Vl),am=bh(ns,gn,Re,is,ct),Ht=qh(oh(al),El,No,jh,Qu,Ju,eh,th,sh,uo,il,Cs,kl),cm=yh(ze,am,Ht,st,gn,De,Te,mn),lm=Dh(ze,Rh,ss,st,xp(kt,ai),De,Te,ct),um=Kh(ns,wl,Re,is,ct),$s=mf(Dl),hm=Uh(ze,Ht,um,or,wl,De,Te,$s),Ds=mp(Bs,zo),dm=zf(st,Ds),Rs=Rp(Cs,dm),pm=td(Rs,Re,ct),fm=ed(ze,pm,Rs,De,Te),mm=id(ri,Re,ct),gm=nd(ze,mm,ri,De,Te,Gf),_m=Op(ar,gn,kt,Ds),_n=Mp(ar,jt,_m,$o,qo),vm=ud(ns,_n,Re,is,ct),ym=ld(ze,Ht,vm,_n,De,Te,mn),Pl=Np(bt,ai),bm=fd(Pl,Re,ct),wm=pd(ze,bm,Pl,De,Te,$s),xm=wd(ns,xl,Re,is,ct),Cm=bd(ze,Ht,xm,xl,De,Te,$s),Wl=Fp(bt),Sm=Dd(ns,Wl,Re,is,ct),Tm=Id(ze,Ht,Sm,Wl,bt,De,Te,$s),km=Pd(ns,kt,Re,is,ct),Am=Vd(ze,Ht,km,kt,De,Te),Im=Bp(or,st,oi,bt),cr=pf(jt,kt,oi,Nf(kt,tt)),Dm=Ud(gn,Re,tt,ct,cr),Rm=Vp(Im),Em=Hd(ze,Rm,Dm,De,Te,$s),Mm=Eh(Ht,Rs,_n,oi,bt,Sl,Te,ai),Bl=new WeakMap,Om=fp(lm,Mm,Ml,Te,Bl,mn),$l=Zp(ar,jt,$o,Al,qo,Il),Nm=nf(ns,$l,Re,is,ct),Fm=sf(ze,Ht,$l,Nm,De,Te,mn),ql=ad(gn),Vm=Qp(ql,st,kt,Tl,Ds),lr=Kp(ql,st,Vm,Tl,Ds,Cs,ai),Pm=Xp(Zi,st,Rs,kt,oi,lr,bt,Gi,Sl,Ds),jl=Gp(Pm),Wm=af(ns,Rs,_n,kt,jl,Re,tt,is,ct,cr),Bm=of(ze,Ht,jl,Wm,De,Te,$s),$m=Hp(ss),qm=lf($m,De,new WeakSet,Xf),jm=Up(Rs,ri,kt,lr,bt,Ds),Ll=Yp(jm,bt),Lm=yf(ns,Ll,Re,is,ct),zm=vf(ze,Ht,Ll,Lm,De,Te),Zm=Bf(lr,Re,ct),Gm=Wf(ze,st,lr,Zm,De,Te,$s),zl=ap(Gt),Ho=Od(Gt),Zl=new WeakMap,Xm=zd(Zl,tt),Hm=zl?ch(jt,bt,Ed(Gt),Ho,Nd(nh),De,Xm,Te,an,new WeakMap,new WeakMap,Af(an,tt),Gt):void 0,Ym=rp(Lo,Te),Um=_d(Zo,jt,gd,Rd,new WeakSet,De,Ym,Li,Xn,Go,Xo),Gl=Hh(Hm,om,Fl,cm,hm,fm,gm,ym,wm,Um,Cm,Tm,Am,Em,Om,Fm,Bm,qm,zm,Gm),Km=lp(ze,$p,De,Te),Qm=hp(ze,qp,De,Te),Jm=dp(ze,jp,De,Te),eg=Lp(st,Te),tg=pp(ze,eg,De),sg=Ih(Gl,st,bt,Vf,Km,Qm,Jm,tg,Cs),Yo=Zd(Bl),ng=dh(Yo),Xl=od(ss),ig=Cd(Yo),Hl=kd(ss),Yl=new WeakMap,rg=Wd(Yl,Zt),og=Dp(Xl,ss,st,Rs,ri,_n,kt,oi,bt,Hl,Ho,rg,Ds),ag=Tp(st,og,kt,bt,Ds),cg=Xh(ns,Xl,gn,Rs,ri,_n,kt,ig,Hl,Ho,Re,an,tt,is,ct,cr),lg=jd(Zl),ug=ff(Yl),oc=zl?zh(ng,ze,Ht,cg,ag,_t,lg,De,Te,an,Zf,ug,Kf,mn):void 0,hg=md(bt,tt),dg=gf(Zo,jt,jo,Yo,cr,Li,Go,Xo),pg=ef(Gl,jt,st,hg,dg),fg=Qd(ir,Lo),mg=Jd(Oo,zo),gg=ep(No,Ol),_g=tp(ir,Te),vg=()=>cp(jt,wf(tt),xf(Cs),Cf(tt),Sf(Cs),Tf(tt),kf(an,tt),If(tt),Df(tt),Rf(tt),Ef(tt),Qf,Mf(Gt),Of(Cs),Ff(tt),Jf);function Tt(s){return s===void 0}function de(s){return s!==void 0}function Ul(s){return typeof s=="function"}function Ot(s){return typeof s=="number"}function ps(s){return Object.prototype.toString.call(s)==="[object Object]"&&s.constructor===Object}function Uo(s){return typeof s=="boolean"}function ot(s){return Array.isArray(s)}function Xt(s){return typeof s=="string"}function Ln(s){return Xt(s)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(s)}function K(s,e){if(!s)throw new Error(e)}function Ye(s,e,t=1/0){if(!(e<=s&&s<=t))throw new RangeError(`Value must be within [${e}, ${t}], got: ${s}`)}function Ko(s){!s.isOffline&&s.state!=="running"&&vn('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let Kl=!1,ac=!1;function yo(s){Kl=s}function Ql(s){Tt(s)&&Kl&&!ac&&(ac=!0,vn("Events scheduled inside of scheduled callbacks should use the passed in scheduling time. See https://github.com/Tonejs/Tone.js/wiki/Accurate-Timing"))}let Qo=console;function yg(s){Qo=s}function Jl(...s){Qo.log(...s)}function vn(...s){Qo.warn(...s)}const bg=Object.freeze(Object.defineProperty({__proto__:null,assert:K,assertContextRunning:Ko,assertRange:Ye,assertUsedScheduleTime:Ql,enterScheduledCallback:yo,log:Jl,setLogger:yg,warn:vn},Symbol.toStringTag,{value:"Module"}));function wg(s){return new sg(s)}function xg(s,e,t){return new pg(s,e,t)}const gt=typeof self=="object"?self:null,Cg=gt&&(gt.hasOwnProperty("AudioContext")||gt.hasOwnProperty("webkitAudioContext"));function Sg(s,e,t){return K(de(oc),"AudioWorkletNode only works in a secure context (https or localhost)"),new(s instanceof gt?.BaseAudioContext?gt?.AudioWorkletNode:oc)(s,e,t)}function Yt(s,e,t,n){var i=arguments.length,r=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(s,e,t,n);else for(var a=s.length-1;a>=0;a--)(o=s[a])&&(r=(i<3?o(r):i>3?o(e,t,r):o(e,t))||r);return i>3&&r&&Object.defineProperty(e,t,r),r}function ke(s,e,t,n){function i(r){return r instanceof t?r:new t(function(o){o(r)})}return new(t||(t=Promise))(function(r,o){function a(u){try{l(n.next(u))}catch(h){o(h)}}function c(u){try{l(n.throw(u))}catch(h){o(h)}}function l(u){u.done?r(u.value):i(u.value).then(a,c)}l((n=n.apply(s,e||[])).next())})}class Tg{constructor(e,t,n,i){this._callback=e,this._type=t,this._minimumUpdateInterval=Math.max(128/(i||44100),.001),this.updateInterval=n,this._createClock()}_createWorker(){const e=new Blob([`
4
- // the initial timeout time
5
- let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)};
6
- // onmessage callback
7
- self.onmessage = function(msg){
8
- timeoutTime = parseInt(msg.data);
9
- };
10
- // the tick function which posts a message
11
- // and schedules a new tick
12
- function tick(){
13
- setTimeout(tick, timeoutTime);
14
- self.postMessage('tick');
15
- }
16
- // call tick initially
17
- tick();
18
- `],{type:"text/javascript"}),t=URL.createObjectURL(e),n=new Worker(t);n.onmessage=this._callback.bind(this),this._worker=n}_createTimeout(){this._timeout=setTimeout(()=>{this._createTimeout(),this._callback()},this._updateInterval*1e3)}_createClock(){if(this._type==="worker")try{this._createWorker()}catch{this._type="timeout",this._createClock()}else this._type==="timeout"&&this._createTimeout()}_disposeClock(){this._timeout&&clearTimeout(this._timeout),this._worker&&(this._worker.terminate(),this._worker.onmessage=null)}get updateInterval(){return this._updateInterval}set updateInterval(e){var t;this._updateInterval=Math.max(e,this._minimumUpdateInterval),this._type==="worker"&&((t=this._worker)===null||t===void 0||t.postMessage(this._updateInterval*1e3))}get type(){return this._type}set type(e){this._disposeClock(),this._type=e,this._createClock()}dispose(){this._disposeClock()}}function Ws(s){return gg(s)}function Ss(s){return mg(s)}function Bi(s){return _g(s)}function Qs(s){return fg(s)}function kg(s){return s instanceof Fl}function Ag(s,e){return s==="value"||Ws(e)||Ss(e)||kg(e)}function Bt(s,...e){if(!e.length)return s;const t=e.shift();if(ps(s)&&ps(t))for(const n in t)Ag(n,t[n])?s[n]=t[n]:ps(t[n])?(s[n]||Object.assign(s,{[n]:{}}),Bt(s[n],t[n])):Object.assign(s,{[n]:t[n]});return Bt(s,...e)}function Ig(s,e){return s.length===e.length&&s.every((t,n)=>e[n]===t)}function F(s,e,t=[],n){const i={},r=Array.from(e);if(ps(r[0])&&n&&!Reflect.has(r[0],n)&&(Object.keys(r[0]).some(a=>Reflect.has(s,a))||(Bt(i,{[n]:r[0]}),t.splice(t.indexOf(n),1),r.shift())),r.length===1&&ps(r[0]))Bt(i,r[0]);else for(let o=0;o<t.length;o++)de(r[o])&&(i[t[o]]=r[o]);return Bt(s,i)}function Dg(s){return s.constructor.getDefaults()}function $t(s,e){return Tt(s)?e:s}function it(s,e){return e.forEach(t=>{Reflect.has(s,t)&&delete s[t]}),s}class gs{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||gt&&this.toString()===gt.TONE_DEBUG_CLASS)&&Jl(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}gs.version=Eo;const Jo=1e-6;function cn(s,e){return s>e+Jo}function bo(s,e){return cn(s,e)||zt(s,e)}function Ui(s,e){return s+Jo<e}function zt(s,e){return Math.abs(s-e)<Jo}function qs(s,e,t){return Math.max(Math.min(s,t),e)}class Et extends gs{constructor(){super(),this.name="Timeline",this._timeline=[];const e=F(Et.getDefaults(),arguments,["memory"]);this.memory=e.memory,this.increasing=e.increasing}static getDefaults(){return{memory:1/0,increasing:!1}}get length(){return this._timeline.length}add(e){if(K(Reflect.has(e,"time"),"Timeline: events must have a time attribute"),e.time=e.time.valueOf(),this.increasing&&this.length){const t=this._timeline[this.length-1];K(bo(e.time,t.time),"The time must be greater than or equal to the last scheduled time"),this._timeline.push(e)}else{const t=this._search(e.time);this._timeline.splice(t+1,0,e)}if(this.length>this.memory){const t=this.length-this.memory;this._timeline.splice(0,t)}return this}remove(e){const t=this._timeline.indexOf(e);return t!==-1&&this._timeline.splice(t,1),this}get(e,t="time"){const n=this._search(e,t);return n!==-1?this._timeline[n]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,t="time"){const n=this._search(e,t);return n+1<this._timeline.length?this._timeline[n+1]:null}getBefore(e){const t=this._timeline.length;if(t>0&&this._timeline[t-1].time<e)return this._timeline[t-1];const n=this._search(e);return n-1>=0?this._timeline[n-1]:null}cancel(e){if(this._timeline.length>1){let t=this._search(e);if(t>=0)if(zt(this._timeline[t].time,e)){for(let n=t;n>=0&&zt(this._timeline[n].time,e);n--)t=n;this._timeline=this._timeline.slice(0,t)}else this._timeline=this._timeline.slice(0,t+1);else this._timeline=[]}else this._timeline.length===1&&bo(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){const t=this._search(e);return t>=0&&(this._timeline=this._timeline.slice(t+1)),this}previousEvent(e){const t=this._timeline.indexOf(e);return t>0?this._timeline[t-1]:null}_search(e,t="time"){if(this._timeline.length===0)return-1;let n=0;const i=this._timeline.length;let r=i;if(i>0&&this._timeline[i-1][t]<=e)return i-1;for(;n<r;){let o=Math.floor(n+(r-n)/2);const a=this._timeline[o],c=this._timeline[o+1];if(zt(a[t],e)){for(let l=o;l<this._timeline.length;l++){const u=this._timeline[l];if(zt(u[t],e))o=l;else break}return o}else{if(Ui(a[t],e)&&cn(c[t],e))return o;cn(a[t],e)?r=o:n=o+1}}return-1}_iterate(e,t=0,n=this._timeline.length-1){this._timeline.slice(t,n+1).forEach(e)}forEach(e){return this._iterate(e),this}forEachBefore(e,t){const n=this._search(e);return n!==-1&&this._iterate(t,0,n),this}forEachAfter(e,t){const n=this._search(e);return this._iterate(t,n+1),this}forEachBetween(e,t,n){let i=this._search(e),r=this._search(t);return i!==-1&&r!==-1?(this._timeline[i].time!==e&&(i+=1),this._timeline[r].time===t&&(r-=1),this._iterate(n,i,r)):i===-1&&this._iterate(n,0,r),this}forEachFrom(e,t){let n=this._search(e);for(;n>=0&&this._timeline[n].time>=e;)n--;return this._iterate(t,n+1),this}forEachAtTime(e,t){const n=this._search(e);if(n!==-1&&zt(this._timeline[n].time,e)){let i=n;for(let r=n;r>=0&&zt(this._timeline[r].time,e);r--)i=r;this._iterate(r=>{t(r)},i,n)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const eu=[];function ur(s){eu.push(s)}function Rg(s){eu.forEach(e=>e(s))}const tu=[];function hr(s){tu.push(s)}function Eg(s){tu.forEach(e=>e(s))}class yn extends gs{constructor(){super(...arguments),this.name="Emitter"}on(e,t){return e.split(/\W+/).forEach(i=>{Tt(this._events)&&(this._events={}),this._events.hasOwnProperty(i)||(this._events[i]=[]),this._events[i].push(t)}),this}once(e,t){const n=(...i)=>{t(...i),this.off(e,n)};return this.on(e,n),this}off(e,t){return e.split(/\W+/).forEach(i=>{if(Tt(this._events)&&(this._events={}),this._events.hasOwnProperty(i))if(Tt(t))this._events[i]=[];else{const r=this._events[i];for(let o=r.length-1;o>=0;o--)r[o]===t&&r.splice(o,1)}}),this}emit(e,...t){if(this._events&&this._events.hasOwnProperty(e)){const n=this._events[e].slice(0);for(let i=0,r=n.length;i<r;i++)n[i].apply(this,t)}return this}static mixin(e){["on","once","off","emit"].forEach(t=>{const n=Object.getOwnPropertyDescriptor(yn.prototype,t);Object.defineProperty(e.prototype,t,n)})}dispose(){return super.dispose(),this._events=void 0,this}}class ea extends yn{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class js extends ea{constructor(){var e,t;super(),this.name="Context",this._constants=new Map,this._timeouts=new Et,this._timeoutIds=0,this._initialized=!1,this._closeStarted=!1,this.isOffline=!1,this._workletPromise=null;const n=F(js.getDefaults(),arguments,["context"]);n.context?(this._context=n.context,this._latencyHint=((e=arguments[0])===null||e===void 0?void 0:e.latencyHint)||""):(this._context=wg({latencyHint:n.latencyHint}),this._latencyHint=n.latencyHint),this._ticker=new Tg(this.emit.bind(this,"tick"),n.clockSource,n.updateInterval,this._context.sampleRate),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this[!((t=arguments[0])===null||t===void 0)&&t.hasOwnProperty("updateInterval")?"_lookAhead":"lookAhead"]=n.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(Rg(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,t,n){return this._context.createBuffer(e,t,n)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,t){return this._context.createIIRFilter(e,t)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,t,n){return this._context.createPeriodicWave(e,t,n)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return K(Qs(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return K(Qs(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return K(Qs(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){K(!this._initialized,"The listener cannot be set after initialization."),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){K(!this._initialized,"The transport cannot be set after initialization."),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){K(!this._initialized,"Draw cannot be set after initialization."),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){K(!this._initialized,"The destination cannot be set after initialization."),this._destination=e}createAudioWorkletNode(e,t){return Sg(this.rawContext,e,t)}addAudioWorkletModule(e){return ke(this,void 0,void 0,function*(){K(de(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletPromise||(this._workletPromise=this.rawContext.audioWorklet.addModule(e)),yield this._workletPromise})}workletsAreReady(){return ke(this,void 0,void 0,function*(){(yield this._workletPromise)?this._workletPromise:Promise.resolve()})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get lookAhead(){return this._lookAhead}set lookAhead(e){this._lookAhead=e,this.updateInterval=e?e/2:.01}get latencyHint(){return this._latencyHint}get rawContext(){return this._context}now(){return this._context.currentTime+this._lookAhead}immediate(){return this._context.currentTime}resume(){return Qs(this._context)?this._context.resume():Promise.resolve()}close(){return ke(this,void 0,void 0,function*(){Qs(this._context)&&this.state!=="closed"&&!this._closeStarted&&(this._closeStarted=!0,yield this._context.close()),this._initialized&&Eg(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{const t=this._context.createBuffer(1,128,this._context.sampleRate),n=t.getChannelData(0);for(let r=0;r<n.length;r++)n[r]=e;const i=this._context.createBufferSource();return i.channelCount=1,i.channelCountMode="explicit",i.buffer=t,i.loop=!0,i.start(0),this._constants.set(e,i),i}}dispose(){return super.dispose(),this._ticker.dispose(),this._timeouts.dispose(),Object.keys(this._constants).map(e=>this._constants[e].disconnect()),this.close(),this}_timeoutLoop(){const e=this.now();this._timeouts.forEachBefore(e,t=>{t.callback(),this._timeouts.remove(t)})}setTimeout(e,t){this._timeoutIds++;const n=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:n+t}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(t=>{t.id===e&&this._timeouts.remove(t)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,t){const n=++this._timeoutIds,i=()=>{const r=this.now();this._timeouts.add({callback:()=>{e(),i()},id:n,time:r+t})};return i(),n}}class Mg extends ea{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,t,n){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,t){return{}}createPanner(){return{}}createPeriodicWave(e,t,n){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,t){return{}}get rawContext(){return{}}addAudioWorkletModule(e){return ke(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,t){return 0}clearTimeout(e){return this}setInterval(e,t){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}}function ne(s,e){ot(e)?e.forEach(t=>ne(s,t)):Object.defineProperty(s,e,{enumerable:!0,writable:!1})}function ci(s,e){ot(e)?e.forEach(t=>ci(s,t)):Object.defineProperty(s,e,{writable:!0})}const _e=()=>{};class xe extends gs{constructor(){super(),this.name="ToneAudioBuffer",this.onload=_e;const e=F(xe.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=e.reverse,this.onload=e.onload,Xt(e.url)?this.load(e.url).catch(e.onerror):e.url&&this.set(e.url)}static getDefaults(){return{onerror:_e,onload:_e,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:me().sampleRate}set(e){return e instanceof xe?e.loaded?this._buffer=e.get():e.onload=()=>{this.set(e),this.onload(this)}:this._buffer=e,this._reversed&&this._reverse(),this}get(){return this._buffer}load(e){return ke(this,void 0,void 0,function*(){const t=xe.load(e).then(n=>{this.set(n),this.onload(this)});xe.downloads.push(t);try{yield t}finally{const n=xe.downloads.indexOf(t);xe.downloads.splice(n,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){const t=ot(e)&&e[0].length>0,n=t?e.length:1,i=t?e[0].length:e.length,r=me(),o=r.createBuffer(n,i,r.sampleRate),a=!t&&n===1?[e]:e;for(let c=0;c<n;c++)o.copyToChannel(a[c],c);return this._buffer=o,this}toMono(e){if(Ot(e))this.fromArray(this.toArray(e));else{let t=new Float32Array(this.length);const n=this.numberOfChannels;for(let i=0;i<n;i++){const r=this.toArray(i);for(let o=0;o<r.length;o++)t[o]+=r[o]}t=t.map(i=>i/n),this.fromArray(t)}return this}toArray(e){if(Ot(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{const t=[];for(let n=0;n<this.numberOfChannels;n++)t[n]=this.getChannelData(n);return t}}getChannelData(e){return this._buffer?this._buffer.getChannelData(e):new Float32Array(0)}slice(e,t=this.duration){K(this.loaded,"Buffer is not loaded");const n=Math.floor(e*this.sampleRate),i=Math.floor(t*this.sampleRate);K(n<i,"The start time must be less than the end time");const r=i-n,o=me().createBuffer(this.numberOfChannels,r,this.sampleRate);for(let a=0;a<this.numberOfChannels;a++)o.copyToChannel(this.getChannelData(a).subarray(n,i),a);return new xe(o)}_reverse(){if(this.loaded)for(let e=0;e<this.numberOfChannels;e++)this.getChannelData(e).reverse();return this}get loaded(){return this.length>0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(e){return new xe().fromArray(e)}static fromUrl(e){return ke(this,void 0,void 0,function*(){return yield new xe().load(e)})}static load(e){return ke(this,void 0,void 0,function*(){const t=xe.baseUrl===""||xe.baseUrl.endsWith("/")?xe.baseUrl:xe.baseUrl+"/",n=yield fetch(t+e);if(!n.ok)throw new Error(`could not load url: ${e}`);const i=yield n.arrayBuffer();return yield me().decodeAudioData(i)})}static supportsType(e){const t=e.split("."),n=t[t.length-1];return document.createElement("audio").canPlayType("audio/"+n)!==""}static loaded(){return ke(this,void 0,void 0,function*(){for(yield Promise.resolve();xe.downloads.length;)yield xe.downloads[0]})}}xe.baseUrl="";xe.downloads=[];class bn extends js{constructor(){super({clockSource:"offline",context:Bi(arguments[0])?arguments[0]:xg(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:Bi(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=Bi(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return ke(this,void 0,void 0,function*(){let t=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,t++;const n=Math.floor(this.sampleRate/128);e&&t%n===0&&(yield new Promise(i=>setTimeout(i,1)))}})}render(){return ke(this,arguments,void 0,function*(e=!0){yield this.workletsAreReady(),yield this._renderClock(e);const t=yield this._context.startRendering();return new xe(t)})}close(){return Promise.resolve()}}const su=new Mg;let Fs=su;function me(){return Fs===su&&Cg&&Hn(new js),Fs}function Hn(s,e=!1){e&&Fs.dispose(),Qs(s)?Fs=new js(s):Bi(s)?Fs=new bn(s):Fs=s}function ta(){return Fs.resume()}if(gt&&!gt.TONE_SILENCE_LOGGING){const e=` * Tone.js v${Eo} * `;console.log(`%c${e}`,"background: #000; color: #fff")}function ln(s){return Math.pow(10,s/20)}function li(s){return 20*(Math.log(s)/Math.LN10)}function un(s){return Math.pow(2,s/12)}let dr=440;function Og(){return dr}function Ng(s){dr=s}function xs(s){return Math.round(nu(s))}function nu(s){return 69+12*Math.log2(s/dr)}function sa(s){return dr*Math.pow(2,(s-69)/12)}class na extends gs{constructor(e,t,n){super(),this.defaultUnits="s",this._val=t,this._units=n,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,t)=>{const n=parseInt(e,10),i=t==="."?1.5:1;return n===1?this._beatsToUnits(this._getTimeSignature())*i:this._beatsToUnits(4/n)*i},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{const t=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(t)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,t,n)=>{let i=0;return e&&e!=="0"&&(i+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),t&&t!=="0"&&(i+=this._beatsToUnits(parseFloat(t))),n&&n!=="0"&&(i+=this._beatsToUnits(parseFloat(n)/4)),i},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof na&&this.fromType(this._val),Tt(this._val))return this._noArg();if(Xt(this._val)&&Tt(this._units)){for(const e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(ps(this._val)){let e=0;for(const t in this._val)if(de(this._val[t])){const n=this._val[t],i=new this.constructor(this.context,t).valueOf()*n;e+=i}return e}if(de(this._units)){const e=this._expressions[this._units],t=this._val.toString().trim().match(e.regexp);return t?e.method.apply(this,t.slice(1)):e.method.call(this,this._val)}else return Xt(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case"s":this._val=e.toSeconds();break;case"i":this._val=e.toTicks();break;case"hz":this._val=e.toFrequency();break;case"midi":this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class Dt extends na{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:e=>{const t=new Dt(this.context,e).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(t))},regexp:/^@(.+)/}})}quantize(e,t=1){const n=new this.constructor(this.context,e).valueOf(),i=this.valueOf(),a=Math.round(i/n)*n-i;return i+a*t}toNotation(){const e=this.toSeconds(),t=["1m"];for(let r=1;r<9;r++){const o=Math.pow(2,r);t.push(o+"n."),t.push(o+"n"),t.push(o+"t")}t.push("0");let n=t[0],i=new Dt(this.context,t[0]).toSeconds();return t.forEach(r=>{const o=new Dt(this.context,r).toSeconds();Math.abs(o-e)<Math.abs(i-e)&&(n=r,i=o)}),n}toBarsBeatsSixteenths(){const e=this._beatsToUnits(1);let t=this.valueOf()/e;t=parseFloat(t.toFixed(4));const n=Math.floor(t/this._getTimeSignature());let i=t%1*4;t=Math.floor(t)%this._getTimeSignature();const r=i.toString();return r.length>3&&(i=parseFloat(parseFloat(r).toFixed(3))),[n,t,i].join(":")}toTicks(){const e=this._beatsToUnits(1);return this.valueOf()/e*this._getPPQ()}toSeconds(){return this.valueOf()}toMidi(){return xs(this.toFrequency())}_now(){return this.context.now()}}function Fg(s,e){return new Dt(me(),s,e)}class vt extends Dt{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return Og()}static set A4(e){Ng(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(e){return this.defaultUnits==="midi"?e:vt.mtof(e)}},note:{regexp:/^([a-g]{1}(?:b|#|##|x|bb|###|#x|x#|bbb)?)(-?[0-9]+)/i,method(e,t){const i=Vg[e.toLowerCase()]+(parseInt(t,10)+1)*12;return this.defaultUnits==="midi"?i:vt.mtof(i)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,t,n){let i=1;return e&&e!=="0"&&(i*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),t&&t!=="0"&&(i*=this._beatsToUnits(parseFloat(t))),n&&n!=="0"&&(i*=this._beatsToUnits(parseFloat(n)/4)),i}}})}transpose(e){return new vt(this.context,this.valueOf()*un(e))}harmonize(e){return e.map(t=>this.transpose(t))}toMidi(){return xs(this.valueOf())}toNote(){const e=this.toFrequency(),t=Math.log2(e/vt.A4);let n=Math.round(12*t)+57;const i=Math.floor(n/12);return i<0&&(n+=-12*i),Pg[n%12]+i.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const e=this._beatsToUnits(1),t=this.valueOf()/e;return Math.floor(t*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return sa(e)}static ftom(e){return xs(e)}}const Vg={cbbb:-3,cbb:-2,cb:-1,c:0,"c#":1,cx:2,"c##":2,"c###":3,"cx#":3,"c#x":3,dbbb:-1,dbb:0,db:1,d:2,"d#":3,dx:4,"d##":4,"d###":5,"dx#":5,"d#x":5,ebbb:1,ebb:2,eb:3,e:4,"e#":5,ex:6,"e##":6,"e###":7,"ex#":7,"e#x":7,fbbb:2,fbb:3,fb:4,f:5,"f#":6,fx:7,"f##":7,"f###":8,"fx#":8,"f#x":8,gbbb:4,gbb:5,gb:6,g:7,"g#":8,gx:9,"g##":9,"g###":10,"gx#":10,"g#x":10,abbb:6,abb:7,ab:8,a:9,"a#":10,ax:11,"a##":11,"a###":12,"ax#":12,"a#x":12,bbbb:8,bbb:9,bb:10,b:11,"b#":12,bx:13,"b##":13,"b###":14,"bx#":14,"b#x":14},Pg=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];function Wg(s,e){return new vt(me(),s,e)}class Xe extends Dt{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}function Bg(s,e){return new Xe(me(),s,e)}class nt extends gs{constructor(){super();const e=F(nt.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=e.context}static getDefaults(){return{context:me()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return Ql(e),new Dt(this.context,e).toSeconds()}toFrequency(e){return new vt(this.context,e).toFrequency()}toTicks(e){return new Xe(this.context,e).toTicks()}_getPartialProperties(e){const t=this.get();return Object.keys(t).forEach(n=>{Tt(e[n])&&delete t[n]}),t}get(){const e=Dg(this);return Object.keys(e).forEach(t=>{if(Reflect.has(this,t)){const n=this[t];de(n)&&de(n.value)&&de(n.setValueAtTime)?e[t]=n.value:n instanceof nt?e[t]=n._getPartialProperties(e[t]):ot(n)||Ot(n)||Xt(n)||Uo(n)?e[t]=n:delete e[t]}}),e}set(e){return Object.keys(e).forEach(t=>{Reflect.has(this,t)&&de(this[t])&&(this[t]&&de(this[t].value)&&de(this[t].setValueAtTime)?this[t].value!==e[t]&&(this[t].value=e[t]):this[t]instanceof nt?this[t].set(e[t]):this[t]=e[t])}),this}}class wn extends Et{constructor(e="stopped"){super(),this.name="StateTimeline",this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){const t=this.get(e);return t!==null?t.state:this._initial}setStateAtTime(e,t,n){return Ye(t,0),this.add(Object.assign({},n,{state:e,time:t})),this}getLastState(e,t){const n=this._search(t);for(let i=n;i>=0;i--){const r=this._timeline[i];if(r.state===e)return r}}getNextState(e,t){const n=this._search(t);if(n!==-1)for(let i=n;i<this._timeline.length;i++){const r=this._timeline[i];if(r.state===e)return r}}}class ae extends nt{constructor(){const e=F(ae.getDefaults(),arguments,["param","units","convert"]);for(super(e),this.name="Param",this.overridden=!1,this._minOutput=1e-7,K(de(e.param)&&(Ws(e.param)||e.param instanceof ae),"param must be an AudioParam");!Ws(e.param);)e.param=e.param._param;this._swappable=de(e.swappable)?e.swappable:!1,this._swappable?(this.input=this.context.createGain(),this._param=e.param,this.input.connect(this._param)):this._param=this.input=e.param,this._events=new Et(1e3),this._initialValue=this._param.defaultValue,this.units=e.units,this.convert=e.convert,this._minValue=e.minValue,this._maxValue=e.maxValue,de(e.value)&&e.value!==this._toType(this._initialValue)&&this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(nt.getDefaults(),{convert:!0,units:"number"})}get value(){const e=this.now();return this.getValueAtTime(e)}set value(e){this.cancelScheduledValues(this.now()),this.setValueAtTime(e,this.now())}get minValue(){return de(this._minValue)?this._minValue:this.units==="time"||this.units==="frequency"||this.units==="normalRange"||this.units==="positive"||this.units==="transportTime"||this.units==="ticks"||this.units==="bpm"||this.units==="hertz"||this.units==="samples"?0:this.units==="audioRange"?-1:this.units==="decibels"?-1/0:this._param.minValue}get maxValue(){return de(this._maxValue)?this._maxValue:this.units==="normalRange"||this.units==="audioRange"?1:this._param.maxValue}_is(e,t){return this.units===t}_assertRange(e){return de(this.maxValue)&&de(this.minValue)&&Ye(e,this._fromType(this.minValue),this._fromType(this.maxValue)),e}_fromType(e){return this.convert&&!this.overridden?this._is(e,"time")?this.toSeconds(e):this._is(e,"decibels")?ln(e):this._is(e,"frequency")?this.toFrequency(e):e:this.overridden?0:e}_toType(e){return this.convert&&this.units==="decibels"?li(e):e}setValueAtTime(e,t){const n=this.toSeconds(t),i=this._fromType(e);return K(isFinite(i)&&isFinite(n),`Invalid argument(s) to setValueAtTime: ${JSON.stringify(e)}, ${JSON.stringify(t)}`),this._assertRange(i),this.log(this.units,"setValueAtTime",e,n),this._events.add({time:n,type:"setValueAtTime",value:i}),this._param.setValueAtTime(i,n),this}getValueAtTime(e){const t=Math.max(this.toSeconds(e),0),n=this._events.getAfter(t),i=this._events.get(t);let r=this._initialValue;if(i===null)r=this._initialValue;else if(i.type==="setTargetAtTime"&&(n===null||n.type==="setValueAtTime")){const o=this._events.getBefore(i.time);let a;o===null?a=this._initialValue:a=o.value,i.type==="setTargetAtTime"&&(r=this._exponentialApproach(i.time,a,i.value,i.constant,t))}else if(n===null)r=i.value;else if(n.type==="linearRampToValueAtTime"||n.type==="exponentialRampToValueAtTime"){let o=i.value;if(i.type==="setTargetAtTime"){const a=this._events.getBefore(i.time);a===null?o=this._initialValue:o=a.value}n.type==="linearRampToValueAtTime"?r=this._linearInterpolate(i.time,o,n.time,n.value,t):r=this._exponentialInterpolate(i.time,o,n.time,n.value,t)}else r=i.value;return this._toType(r)}setRampPoint(e){e=this.toSeconds(e);let t=this.getValueAtTime(e);return this.cancelAndHoldAtTime(e),this._fromType(t)===0&&(t=this._toType(this._minOutput)),this.setValueAtTime(t,e),this}linearRampToValueAtTime(e,t){const n=this._fromType(e),i=this.toSeconds(t);return K(isFinite(n)&&isFinite(i),`Invalid argument(s) to linearRampToValueAtTime: ${JSON.stringify(e)}, ${JSON.stringify(t)}`),this._assertRange(n),this._events.add({time:i,type:"linearRampToValueAtTime",value:n}),this.log(this.units,"linearRampToValueAtTime",e,i),this._param.linearRampToValueAtTime(n,i),this}exponentialRampToValueAtTime(e,t){let n=this._fromType(e);n=zt(n,0)?this._minOutput:n,this._assertRange(n);const i=this.toSeconds(t);return K(isFinite(n)&&isFinite(i),`Invalid argument(s) to exponentialRampToValueAtTime: ${JSON.stringify(e)}, ${JSON.stringify(t)}`),this._events.add({time:i,type:"exponentialRampToValueAtTime",value:n}),this.log(this.units,"exponentialRampToValueAtTime",e,i),this._param.exponentialRampToValueAtTime(n,i),this}exponentialRampTo(e,t,n){return n=this.toSeconds(n),this.setRampPoint(n),this.exponentialRampToValueAtTime(e,n+this.toSeconds(t)),this}linearRampTo(e,t,n){return n=this.toSeconds(n),this.setRampPoint(n),this.linearRampToValueAtTime(e,n+this.toSeconds(t)),this}targetRampTo(e,t,n){return n=this.toSeconds(n),this.setRampPoint(n),this.exponentialApproachValueAtTime(e,n,t),this}exponentialApproachValueAtTime(e,t,n){t=this.toSeconds(t),n=this.toSeconds(n);const i=Math.log(n+1)/Math.log(200);return this.setTargetAtTime(e,t,i),this.cancelAndHoldAtTime(t+n*.9),this.linearRampToValueAtTime(e,t+n),this}setTargetAtTime(e,t,n){const i=this._fromType(e);K(isFinite(n)&&n>0,"timeConstant must be a number greater than 0");const r=this.toSeconds(t);return this._assertRange(i),K(isFinite(i)&&isFinite(r),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(t)}`),this._events.add({constant:n,time:r,type:"setTargetAtTime",value:i}),this.log(this.units,"setTargetAtTime",e,r,n),this._param.setTargetAtTime(i,r,n),this}setValueCurveAtTime(e,t,n,i=1){n=this.toSeconds(n),t=this.toSeconds(t);const r=this._fromType(e[0])*i;this.setValueAtTime(this._toType(r),t);const o=n/(e.length-1);for(let a=1;a<e.length;a++){const c=this._fromType(e[a])*i;this.linearRampToValueAtTime(this._toType(c),t+a*o)}return this}cancelScheduledValues(e){const t=this.toSeconds(e);return K(isFinite(t),`Invalid argument to cancelScheduledValues: ${JSON.stringify(e)}`),this._events.cancel(t),this._param.cancelScheduledValues(t),this.log(this.units,"cancelScheduledValues",t),this}cancelAndHoldAtTime(e){const t=this.toSeconds(e),n=this._fromType(this.getValueAtTime(t));K(isFinite(t),`Invalid argument to cancelAndHoldAtTime: ${JSON.stringify(e)}`),this.log(this.units,"cancelAndHoldAtTime",t,"value="+n);const i=this._events.get(t),r=this._events.getAfter(t);return i&&zt(i.time,t)?r?(this._param.cancelScheduledValues(r.time),this._events.cancel(r.time)):(this._param.cancelAndHoldAtTime(t),this._events.cancel(t+this.sampleTime)):r&&(this._param.cancelScheduledValues(r.time),this._events.cancel(r.time),r.type==="linearRampToValueAtTime"?this.linearRampToValueAtTime(this._toType(n),t):r.type==="exponentialRampToValueAtTime"&&this.exponentialRampToValueAtTime(this._toType(n),t)),this._events.add({time:t,type:"setValueAtTime",value:n}),this._param.setValueAtTime(n,t),this}rampTo(e,t=.1,n){return this.units==="frequency"||this.units==="bpm"||this.units==="decibels"?this.exponentialRampTo(e,t,n):this.linearRampTo(e,t,n),this}apply(e){const t=this.context.currentTime;e.setValueAtTime(this.getValueAtTime(t),t);const n=this._events.get(t);if(n&&n.type==="setTargetAtTime"){const i=this._events.getAfter(n.time),r=i?i.time:t+2,o=(r-t)/10;for(let a=t;a<r;a+=o)e.linearRampToValueAtTime(this.getValueAtTime(a),a)}return this._events.forEachAfter(this.context.currentTime,i=>{i.type==="cancelScheduledValues"?e.cancelScheduledValues(i.time):i.type==="setTargetAtTime"?e.setTargetAtTime(i.value,i.time,i.constant):e[i.type](i.value,i.time)}),this}setParam(e){K(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const t=this.input;return t.disconnect(this._param),this.apply(e),this._param=e,t.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,t,n,i,r){return n+(t-n)*Math.exp(-(r-e)/i)}_linearInterpolate(e,t,n,i,r){return t+(i-t)*((r-e)/(n-e))}_exponentialInterpolate(e,t,n,i,r){return t*Math.pow(i/t,(r-e)/(n-e))}}class $ extends nt{constructor(){super(...arguments),this._internalChannels=[]}get numberOfInputs(){return de(this.input)?Ws(this.input)||this.input instanceof ae?1:this.input.numberOfInputs:0}get numberOfOutputs(){return de(this.output)?this.output.numberOfOutputs:0}_isAudioNode(e){return de(e)&&(e instanceof $||Ss(e))}_getInternalNodes(){const e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(n=>{n.channelCount=e.channelCount,n.channelCountMode=e.channelCountMode,n.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){const e=this._getInternalNodes();K(e.length>0,"ToneAudioNode does not have any internal nodes");const t=e[0];return{channelCount:t.channelCount,channelCountMode:t.channelCountMode,channelInterpretation:t.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){const t=this._getChannelProperties();this._setChannelProperties(Object.assign(t,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){const t=this._getChannelProperties();this._setChannelProperties(Object.assign(t,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){const t=this._getChannelProperties();this._setChannelProperties(Object.assign(t,{channelInterpretation:e}))}connect(e,t=0,n=0){return pt(this,e,t,n),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return vn("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(e,t=0,n=0){return ia(this,e,t,n),this}chain(...e){return Nt(this,...e),this}fan(...e){return e.forEach(t=>this.connect(t)),this}dispose(){return super.dispose(),de(this.input)&&(this.input instanceof $?this.input.dispose():Ss(this.input)&&this.input.disconnect()),de(this.output)&&(this.output instanceof $?this.output.dispose():Ss(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function Nt(...s){const e=s.shift();s.reduce((t,n)=>(t instanceof $?t.connect(n):Ss(t)&&pt(t,n),n),e)}function pt(s,e,t=0,n=0){for(K(de(s),"Cannot connect from undefined node"),K(de(e),"Cannot connect to undefined node"),(e instanceof $||Ss(e))&&K(e.numberOfInputs>0,"Cannot connect to node with no inputs"),K(s.numberOfOutputs>0,"Cannot connect from node with no outputs");e instanceof $||e instanceof ae;)de(e.input)&&(e=e.input);for(;s instanceof $;)de(s.output)&&(s=s.output);Ws(e)?s.connect(e,t):s.connect(e,t,n)}function ia(s,e,t=0,n=0){if(de(e))for(;e instanceof $;)e=e.input;for(;!Ss(s);)de(s.output)&&(s=s.output);Ws(e)?s.disconnect(e,t):Ss(e)?s.disconnect(e,t,n):s.disconnect()}function $g(...s){const e=s.pop();de(e)&&s.forEach(t=>pt(t,e))}class Y extends ${constructor(){const e=F(Y.getDefaults(),arguments,["gain","units"]);super(e),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode,this.gain=new ae({context:this.context,convert:e.convert,param:this._gainNode.gain,units:e.units,value:e.gain,minValue:e.minValue,maxValue:e.maxValue}),ne(this,"gain")}static getDefaults(){return Object.assign($.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class hn extends ${constructor(e){super(e),this.onended=_e,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Y({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(t){const n=this.toSeconds(t);return this._startTime!==-1&&n>=this._startTime&&(this._stopTime===-1||n<=this._stopTime)?"started":"stopped"},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign($.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:_e})}_startGain(e,t=1){K(this._startTime===-1,"Source cannot be started more than once");const n=this.toSeconds(this._fadeIn);return this._startTime=e+n,this._startTime=Math.max(this._startTime,this.context.currentTime),n>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(t,e+n):this._gainNode.gain.exponentialApproachValueAtTime(t,e,n)):this._gainNode.gain.setValueAtTime(t,e),this}stop(e){return this.log("stop",e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){K(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const t=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+t,this._stopTime=Math.max(this._stopTime,this.now()),t>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,t,e):this._gainNode.gain.targetRampTo(0,t,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const n=this._curve==="exponential"?t*2:0;this._stopSource(this.now()+n),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==_e&&(this.onended(this),this.onended=_e,!this.context.isOffline)){const e=()=>this.dispose();typeof requestIdleCallback<"u"?requestIdleCallback(e):setTimeout(e,10)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),K(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.dispose(),this.onended=_e,this}}class pr extends hn{constructor(){const e=F(pr.getDefaults(),arguments,["offset"]);super(e),this.name="ToneConstantSource",this._source=this.context.createConstantSource(),pt(this._source,this._gainNode),this.offset=new ae({context:this.context,convert:e.convert,param:this._source.offset,units:e.units,value:e.offset,minValue:e.minValue,maxValue:e.maxValue})}static getDefaults(){return Object.assign(hn.getDefaults(),{convert:!0,offset:1,units:"number"})}start(e){const t=this.toSeconds(e);return this.log("start",t),this._startGain(t),this._source.start(t),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class re extends ${constructor(){const e=F(re.getDefaults(),arguments,["value","units"]);super(e),this.name="Signal",this.override=!0,this.output=this._constantSource=new pr({context:this.context,convert:e.convert,offset:e.value,units:e.units,minValue:e.minValue,maxValue:e.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign($.getDefaults(),{convert:!0,units:"number",value:0})}connect(e,t=0,n=0){return ui(this,e,t,n),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,t){return this._param.setValueAtTime(e,t),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,t){return this._param.linearRampToValueAtTime(e,t),this}exponentialRampToValueAtTime(e,t){return this._param.exponentialRampToValueAtTime(e,t),this}exponentialRampTo(e,t,n){return this._param.exponentialRampTo(e,t,n),this}linearRampTo(e,t,n){return this._param.linearRampTo(e,t,n),this}targetRampTo(e,t,n){return this._param.targetRampTo(e,t,n),this}exponentialApproachValueAtTime(e,t,n){return this._param.exponentialApproachValueAtTime(e,t,n),this}setTargetAtTime(e,t,n){return this._param.setTargetAtTime(e,t,n),this}setValueCurveAtTime(e,t,n,i){return this._param.setValueCurveAtTime(e,t,n,i),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,t,n){return this._param.rampTo(e,t,n),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}}function ui(s,e,t,n){(e instanceof ae||Ws(e)||e instanceof re&&e.override)&&(e.cancelScheduledValues(0),e.setValueAtTime(0,0),e instanceof re&&(e.overridden=!0)),pt(s,e,t,n)}class ra extends ae{constructor(){const e=F(ra.getDefaults(),arguments,["value"]);super(e),this.name="TickParam",this._events=new Et(1/0),this._multiplier=1,this._multiplier=e.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(e.value)}),this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(ae.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(e,t,n){t=this.toSeconds(t),this.setRampPoint(t);const i=this._fromType(e),r=this._events.get(t),o=Math.round(Math.max(1/n,1));for(let a=0;a<=o;a++){const c=n*a+t,l=this._exponentialApproach(r.time,r.value,i,n,c);this.linearRampToValueAtTime(this._toType(l),c)}return this}setValueAtTime(e,t){const n=this.toSeconds(t);super.setValueAtTime(e,t);const i=this._events.get(n),r=this._events.previousEvent(i),o=this._getTicksUntilEvent(r,n);return i.ticks=Math.max(o,0),this}linearRampToValueAtTime(e,t){const n=this.toSeconds(t);super.linearRampToValueAtTime(e,t);const i=this._events.get(n),r=this._events.previousEvent(i),o=this._getTicksUntilEvent(r,n);return i.ticks=Math.max(o,0),this}exponentialRampToValueAtTime(e,t){t=this.toSeconds(t);const n=this._fromType(e),i=this._events.get(t),r=Math.round(Math.max((t-i.time)*10,1)),o=(t-i.time)/r;for(let a=0;a<=r;a++){const c=o*a+i.time,l=this._exponentialInterpolate(i.time,i.value,t,n,c);this.linearRampToValueAtTime(this._toType(l),c)}return this}_getTicksUntilEvent(e,t){if(e===null)e={ticks:0,time:0,type:"setValueAtTime",value:0};else if(Tt(e.ticks)){const o=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(o,e.time)}const n=this._fromType(this.getValueAtTime(e.time));let i=this._fromType(this.getValueAtTime(t));const r=this._events.get(t);return r&&r.time===t&&r.type==="setValueAtTime"&&(i=this._fromType(this.getValueAtTime(t-this.sampleTime))),.5*(t-e.time)*(n+i)+e.ticks}getTicksAtTime(e){const t=this.toSeconds(e),n=this._events.get(t);return Math.max(this._getTicksUntilEvent(n,t),0)}getDurationOfTicks(e,t){const n=this.toSeconds(t),i=this.getTicksAtTime(t);return this.getTimeOfTick(i+e)-n}getTimeOfTick(e){const t=this._events.get(e,"ticks"),n=this._events.getAfter(e,"ticks");if(t&&t.ticks===e)return t.time;if(t&&n&&n.type==="linearRampToValueAtTime"&&t.value!==n.value){const i=this._fromType(this.getValueAtTime(t.time)),o=(this._fromType(this.getValueAtTime(n.time))-i)/(n.time-t.time),a=Math.sqrt(Math.pow(i,2)-2*o*(t.ticks-e)),c=(-i+a)/o,l=(-i-a)/o;return(c>0?c:l)+t.time}else return t?t.value===0?1/0:t.time+(e-t.ticks)/t.value:e/this._initialValue}ticksToTime(e,t){return this.getDurationOfTicks(e,t)}timeToTicks(e,t){const n=this.toSeconds(t),i=this.toSeconds(e),r=this.getTicksAtTime(n);return this.getTicksAtTime(n+i)-r}_fromType(e){return this.units==="bpm"&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units==="bpm"&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){const t=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(t,0)}}class oa extends re{constructor(){const e=F(oa.getDefaults(),arguments,["value"]);super(e),this.name="TickSignal",this.input=this._param=new ra({context:this.context,convert:e.convert,multiplier:e.multiplier,param:this._constantSource.offset,units:e.units,value:e.value})}static getDefaults(){return Object.assign(re.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(e,t){return this._param.ticksToTime(e,t)}timeToTicks(e,t){return this._param.timeToTicks(e,t)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,t){return this._param.getDurationOfTicks(e,t)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}}class aa extends nt{constructor(){const e=F(aa.getDefaults(),arguments,["frequency"]);super(e),this.name="TickSource",this._state=new wn,this._tickOffset=new Et,this._ticksAtTime=new Et,this._secondsAtTime=new Et,this.frequency=new oa({context:this.context,units:e.units,value:e.frequency}),ne(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},nt.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,t){const n=this.toSeconds(e);return this._state.getValueAtTime(n)!=="started"&&(this._state.setStateAtTime("started",n),de(t)&&this.setTicksAtTime(t,n),this._ticksAtTime.cancel(n),this._secondsAtTime.cancel(n)),this}stop(e){const t=this.toSeconds(e);if(this._state.getValueAtTime(t)==="stopped"){const n=this._state.get(t);n&&n.time>0&&(this._tickOffset.cancel(n.time),this._state.cancel(n.time))}return this._state.cancel(t),this._state.setStateAtTime("stopped",t),this.setTicksAtTime(0,t),this._ticksAtTime.cancel(t),this._secondsAtTime.cancel(t),this}pause(e){const t=this.toSeconds(e);return this._state.getValueAtTime(t)==="started"&&(this._state.setStateAtTime("paused",t),this._ticksAtTime.cancel(t),this._secondsAtTime.cancel(t)),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this._ticksAtTime.cancel(e),this._secondsAtTime.cancel(e),this}getTicksAtTime(e){const t=this.toSeconds(e),n=this._state.getLastState("stopped",t),i=this._ticksAtTime.get(t),r={state:"paused",time:t};this._state.add(r);let o=i||n,a=i?i.ticks:0,c=null;return this._state.forEachBetween(o.time,t+this.sampleTime,l=>{let u=o.time;const h=this._tickOffset.get(l.time);h&&h.time>=o.time&&(a=h.ticks,u=h.time),o.state==="started"&&l.state!=="started"&&(a+=this.frequency.getTicksAtTime(l.time)-this.frequency.getTicksAtTime(u),l.time!==r.time&&(c={state:l.state,time:l.time,ticks:a})),o=l}),this._state.remove(r),c&&this._ticksAtTime.add(c),a}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){const t=this.now(),n=this.frequency.timeToTicks(e,t);this.setTicksAtTime(n,t)}getSecondsAtTime(e){e=this.toSeconds(e);const t=this._state.getLastState("stopped",e),n={state:"paused",time:e};this._state.add(n);const i=this._secondsAtTime.get(e);let r=i||t,o=i?i.seconds:0,a=null;return this._state.forEachBetween(r.time,e+this.sampleTime,c=>{let l=r.time;const u=this._tickOffset.get(c.time);u&&u.time>=r.time&&(o=u.seconds,l=u.time),r.state==="started"&&c.state!=="started"&&(o+=c.time-l,c.time!==n.time&&(a={state:c.state,time:c.time,seconds:o})),r=c}),this._state.remove(n),a&&this._secondsAtTime.add(a),o}setTicksAtTime(e,t){return t=this.toSeconds(t),this._tickOffset.cancel(t),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,t),ticks:e,time:t}),this._ticksAtTime.cancel(t),this._secondsAtTime.cancel(t),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,t=this.now()){const n=this._tickOffset.get(t),i=this._state.get(t),r=Math.max(n.time,i.time),o=this.frequency.getTicksAtTime(r)+e-n.ticks;return this.frequency.getTimeOfTick(o)}forEachTickBetween(e,t,n){let i=this._state.get(e);this._state.forEachBetween(e,t,o=>{i&&i.state==="started"&&o.state!=="started"&&this.forEachTickBetween(Math.max(i.time,e),o.time-this.sampleTime,n),i=o});let r=null;if(i&&i.state==="started"){const o=Math.max(i.time,e),a=this.frequency.getTicksAtTime(o),c=this.frequency.getTicksAtTime(i.time),l=a-c;let u=Math.ceil(l)-l;u=zt(u,1)?0:u;let h=this.frequency.getTimeOfTick(a+u);for(;h<t;){try{n(h,Math.round(this.getTicksAtTime(h)))}catch(p){r=p;break}h+=this.frequency.getDurationOfTicks(1,h)}}if(r)throw r;return this}dispose(){return super.dispose(),this._state.dispose(),this._tickOffset.dispose(),this._ticksAtTime.dispose(),this._secondsAtTime.dispose(),this.frequency.dispose(),this}}class xn extends nt{constructor(){const e=F(xn.getDefaults(),arguments,["callback","frequency"]);super(e),this.name="Clock",this.callback=_e,this._lastUpdate=0,this._state=new wn("stopped"),this._boundLoop=this._loop.bind(this),this.callback=e.callback,this._tickSource=new aa({context:this.context,frequency:e.frequency,units:e.units}),this._lastUpdate=0,this.frequency=this._tickSource.frequency,ne(this,"frequency"),this._state.setStateAtTime("stopped",0),this.context.on("tick",this._boundLoop)}static getDefaults(){return Object.assign(nt.getDefaults(),{callback:_e,frequency:1,units:"hertz"})}get state(){return this._state.getValueAtTime(this.now())}start(e,t){Ko(this.context);const n=this.toSeconds(e);return this.log("start",n),this._state.getValueAtTime(n)!=="started"&&(this._state.setStateAtTime("started",n),this._tickSource.start(n,t),n<this._lastUpdate&&this.emit("start",n,t)),this}stop(e){const t=this.toSeconds(e);return this.log("stop",t),this._state.cancel(t),this._state.setStateAtTime("stopped",t),this._tickSource.stop(t),t<this._lastUpdate&&this.emit("stop",t),this}pause(e){const t=this.toSeconds(e);return this._state.getValueAtTime(t)==="started"&&(this._state.setStateAtTime("paused",t),this._tickSource.pause(t),t<this._lastUpdate&&this.emit("pause",t)),this}get ticks(){return Math.ceil(this.getTicksAtTime(this.now()))}set ticks(e){this._tickSource.ticks=e}get seconds(){return this._tickSource.seconds}set seconds(e){this._tickSource.seconds=e}getSecondsAtTime(e){return this._tickSource.getSecondsAtTime(e)}setTicksAtTime(e,t){return this._tickSource.setTicksAtTime(e,t),this}getTimeOfTick(e,t=this.now()){return this._tickSource.getTimeOfTick(e,t)}getTicksAtTime(e){return this._tickSource.getTicksAtTime(e)}nextTickTime(e,t){const n=this.toSeconds(t),i=this.getTicksAtTime(n);return this._tickSource.getTimeOfTick(i+e,n)}_loop(){const e=this._lastUpdate,t=this.now();this._lastUpdate=t,this.log("loop",e,t),e!==t&&(this._state.forEachBetween(e,t,n=>{switch(n.state){case"started":const i=this._tickSource.getTicksAtTime(n.time);this.emit("start",n.time,i);break;case"stopped":n.time!==0&&this.emit("stop",n.time);break;case"paused":this.emit("pause",n.time);break}}),this._tickSource.forEachTickBetween(e,t,(n,i)=>{this.callback(n,i)}))}getStateAtTime(e){const t=this.toSeconds(e);return this._state.getValueAtTime(t)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}yn.mixin(xn);class Mt extends ${constructor(){const e=F(Mt.getDefaults(),arguments,["delayTime","maxDelay"]);super(e),this.name="Delay";const t=this.toSeconds(e.maxDelay);this._maxDelay=Math.max(t,this.toSeconds(e.delayTime)),this._delayNode=this.input=this.output=this.context.createDelay(t),this.delayTime=new ae({context:this.context,param:this._delayNode.delayTime,units:"time",value:e.delayTime,minValue:0,maxValue:this.maxDelay}),ne(this,"delayTime")}static getDefaults(){return Object.assign($.getDefaults(),{delayTime:0,maxDelay:1})}get maxDelay(){return this._maxDelay}dispose(){return super.dispose(),this._delayNode.disconnect(),this.delayTime.dispose(),this}}class Ut extends ${constructor(){const e=F(Ut.getDefaults(),arguments,["volume"]);super(e),this.name="Volume",this.input=this.output=new Y({context:this.context,gain:e.volume,units:"decibels"}),this.volume=this.output.gain,ne(this,"volume"),this._unmutedVolume=e.volume,this.mute=e.mute}static getDefaults(){return Object.assign($.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}class ca extends ${constructor(){const e=F(ca.getDefaults(),arguments);super(e),this.name="Destination",this.input=new Ut({context:this.context}),this.output=new Y({context:this.context}),this.volume=this.input.volume,Nt(this.input,this.output,this.context.rawContext.destination),this.mute=e.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign($.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),Nt(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}}ur(s=>{s.destination=new ca({context:s})});hr(s=>{s.destination.dispose()});class qg extends ${constructor(){super(...arguments),this.name="Listener",this.positionX=new ae({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new ae({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new ae({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new ae({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new ae({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new ae({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new ae({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new ae({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new ae({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign($.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}ur(s=>{s.listener=new qg({context:s})});hr(s=>{s.listener.dispose()});function jg(s,e){return ke(this,arguments,void 0,function*(t,n,i=2,r=me().sampleRate){const o=me(),a=new bn(i,n,r);Hn(a),yield t(a);const c=a.render();Hn(o);const l=yield c;return new xe(l)})}class Cn extends gs{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const e=F(Cn.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=e.baseUrl,Object.keys(e.urls).forEach(t=>{this._loadingCount++;const n=e.urls[t];this.add(t,n,this._bufferLoaded.bind(this,e.onload),e.onerror)})}static getDefaults(){return{baseUrl:"",onerror:_e,onload:_e,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return K(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,t])=>t.loaded)}add(e,t,n=_e,i=_e){return Xt(t)?(this.baseUrl&&t.trim().substring(0,11).toLowerCase()==="data:audio/"&&(this.baseUrl=""),this._buffers.set(e.toString(),new xe(this.baseUrl+t,n,i))):this._buffers.set(e.toString(),new xe(t,n,i)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}}class dn extends vt{constructor(){super(...arguments),this.name="MidiClass",this.defaultUnits="midi"}_frequencyToUnits(e){return xs(super._frequencyToUnits(e))}_ticksToUnits(e){return xs(super._ticksToUnits(e))}_beatsToUnits(e){return xs(super._beatsToUnits(e))}_secondsToUnits(e){return xs(super._secondsToUnits(e))}toMidi(){return this.valueOf()}toFrequency(){return sa(this.toMidi())}transpose(e){return new dn(this.context,this.toMidi()+e)}}function Lg(s,e){return new dn(me(),s,e)}class Oe extends Xe{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}function zg(s,e){return new Oe(me(),s,e)}class Zg extends nt{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Et,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,t){return this._events.add({callback:e,time:this.toSeconds(t)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){const e=this.context.currentTime;this._events.forEachBefore(e+this.anticipation,t=>{e-t.time<=this.expiration&&t.callback(),this._events.remove(t)}),this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}ur(s=>{s.draw=new Zg({context:s})});hr(s=>{s.draw.dispose()});class iu extends gs{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(e){K(de(e.time),"Events must have a time property"),K(de(e.duration),"Events must have a duration parameter"),e.time=e.time.valueOf();let t=new Gg(e.time,e.time+e.duration,e);for(this._root===null?this._root=t:this._root.insert(t),this._length++;t!==null;)t.updateHeight(),t.updateMax(),this._rebalance(t),t=t.parent;return this}remove(e){if(this._root!==null){const t=[];this._root.search(e.time,t);for(const n of t)if(n.event===e){this._removeNode(n),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,t=>this.remove(t)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,t){e.parent!==null?(e.isLeftChild()?e.parent.left=t:e.parent.right=t,this._rebalance(e.parent)):this._setRoot(t)}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{const t=e.getBalance();let n,i=null;if(t>0)if(e.left.right===null)n=e.left,n.right=e.right,i=n;else{for(n=e.left.right;n.right!==null;)n=n.right;n.parent&&(n.parent.right=n.left,i=n.parent,n.left=e.left,n.right=e.right)}else if(e.right.left===null)n=e.right,n.left=e.left,i=n;else{for(n=e.right.left;n.left!==null;)n=n.left;n.parent&&(n.parent.left=n.right,i=n.parent,n.left=e.left,n.right=e.right)}e.parent!==null?e.isLeftChild()?e.parent.left=n:e.parent.right=n:this._setRoot(n),i&&this._rebalance(i)}e.dispose()}_rotateLeft(e){const t=e.parent,n=e.isLeftChild(),i=e.right;i&&(e.right=i.left,i.left=e),t!==null?n?t.left=i:t.right=i:this._setRoot(i)}_rotateRight(e){const t=e.parent,n=e.isLeftChild(),i=e.left;i&&(e.left=i.right,i.right=e),t!==null?n?t.left=i:t.right=i:this._setRoot(i)}_rebalance(e){const t=e.getBalance();t>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):t<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){const t=[];if(this._root.search(e,t),t.length>0){let n=t[0];for(let i=1;i<t.length;i++)t[i].low>n.low&&(n=t[i]);return n.event}}return null}forEach(e){if(this._root!==null){const t=[];this._root.traverse(n=>t.push(n)),t.forEach(n=>{n.event&&e(n.event)})}return this}forEachAtTime(e,t){if(this._root!==null){const n=[];this._root.search(e,n),n.forEach(i=>{i.event&&t(i.event)})}return this}forEachFrom(e,t){if(this._root!==null){const n=[];this._root.searchAfter(e,n),n.forEach(i=>{i.event&&t(i.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}}class Gg{constructor(e,t,n){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=n,this.low=e,this.high=t,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,t){e>this.max||(this.left!==null&&this.left.search(e,t),this.low<=e&&this.high>e&&t.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,t))}searchAfter(e,t){this.low>=e&&(t.push(this),this.left!==null&&this.left.searchAfter(e,t)),this.right!==null&&this.right.searchAfter(e,t)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left!==null?e=this.left.height+1:this.right!==null&&(e=-(this.right.height+1)),e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}const Xg=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));class Hg extends gs{constructor(e){super(),this.name="TimelineValue",this._timeline=new Et({memory:10}),this._initialValue=e}set(e,t){return this._timeline.add({value:e,time:t}),this}get(e){const t=this._timeline.get(e);return t?t.value:this._initialValue}}class Ft extends ${constructor(){super(F(Ft.getDefaults(),arguments,["context"]))}connect(e,t=0,n=0){return ui(this,e,t,n),this}}class Kt extends Ft{constructor(){const e=F(Kt.getDefaults(),arguments,["mapping","length"]);super(e),this.name="WaveShaper",this._shaper=this.context.createWaveShaper(),this.input=this._shaper,this.output=this._shaper,ot(e.mapping)||e.mapping instanceof Float32Array?this.curve=Float32Array.from(e.mapping):Ul(e.mapping)&&this.setMap(e.mapping,e.length)}static getDefaults(){return Object.assign(re.getDefaults(),{length:1024})}setMap(e,t=1024){const n=new Float32Array(t);for(let i=0,r=t;i<r;i++){const o=i/(r-1)*2-1;n[i]=e(o,i)}return this.curve=n,this}get curve(){return this._shaper.curve}set curve(e){this._shaper.curve=e}get oversample(){return this._shaper.oversample}set oversample(e){const t=["none","2x","4x"].some(n=>n.includes(e));K(t,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class Sn extends Ft{constructor(){const e=F(Sn.getDefaults(),arguments,["value"]);super(e),this.name="Pow",this._exponentScaler=this.input=this.output=new Kt({context:this.context,mapping:this._expFunc(e.value),length:8192}),this._exponent=e.value}static getDefaults(){return Object.assign(Ft.getDefaults(),{value:1})}_expFunc(e){return t=>Math.pow(Math.abs(t),e)}get value(){return this._exponent}set value(e){this._exponent=e,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}}class Ts{constructor(e,t){this.id=Ts._eventId++,this._remainderTime=0;const n=Object.assign(Ts.getDefaults(),t);this.transport=e,this.callback=n.callback,this._once=n.once,this.time=Math.floor(n.time),this._remainderTime=n.time-this.time}static getDefaults(){return{callback:_e,once:!1,time:0}}get floatTime(){return this.time+this._remainderTime}invoke(e){if(this.callback){const t=this.transport.bpm.getDurationOfTicks(1,e);this.callback(e+this._remainderTime*t),this._once&&this.transport.clear(this.id)}}dispose(){return this.callback=void 0,this}}Ts._eventId=0;class la extends Ts{constructor(e,t){super(e,t),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const n=Object.assign(la.getDefaults(),t);this.duration=n.duration,this._interval=n.interval,this._nextTick=n.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.transport.on("ticks",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},Ts.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvent(){return Ui(this._nextTick,this.floatTime+this.duration)?this.transport.scheduleOnce(this.invoke.bind(this),new Oe(this.context,this._nextTick).toSeconds()):-1}_createEvents(e){Ui(this._nextTick+this._interval,this.floatTime+this.duration)&&(this._nextTick+=this._interval,this._currentId=this._nextId,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new Oe(this.context,this._nextTick).toSeconds()))}_restart(e){this.transport.clear(this._currentId),this.transport.clear(this._nextId),this._nextTick=this.floatTime;const t=this.transport.getTicksAtTime(e);cn(t,this.time)&&(this._nextTick=this.floatTime+Math.ceil((t-this.floatTime)/this._interval)*this._interval),this._currentId=this._createEvent(),this._nextTick+=this._interval,this._nextId=this._createEvent()}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this.transport.off("ticks",this._boundRestart),this}}class fr extends nt{constructor(){const e=F(fr.getDefaults(),arguments);super(e),this.name="Transport",this._loop=new Hg(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Et,this._repeatedEvents=new iu,this._syncedSignals=[],this._swingAmount=0,this._ppq=e.ppq,this._clock=new xn({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=e.ppq,this.bpm.setValueAtTime(e.bpm,0),ne(this,"bpm"),this._timeSignature=e.timeSignature,this._swingTicks=e.ppq/2}static getDefaults(){return Object.assign(nt.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(e,t){if(this._loop.get(e)&&t>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),t=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._swingAmount>0&&t%this._ppq!==0&&t%(this._swingTicks*2)!==0){const n=t%(this._swingTicks*2)/(this._swingTicks*2),i=Math.sin(n*Math.PI)*this._swingAmount;e+=new Oe(this.context,this._swingTicks*2/3).toSeconds()*i}yo(!0),this._timeline.forEachAtTime(t,n=>n.invoke(e)),yo(!1)}schedule(e,t){const n=new Ts(this,{callback:e,time:new Xe(this.context,t).toTicks()});return this._addEvent(n,this._timeline)}scheduleRepeat(e,t,n,i=1/0){const r=new la(this,{callback:e,duration:new Dt(this.context,i).toTicks(),interval:new Dt(this.context,t).toTicks(),time:new Xe(this.context,n).toTicks()});return this._addEvent(r,this._repeatedEvents)}scheduleOnce(e,t){const n=new Ts(this,{callback:e,once:!0,time:new Xe(this.context,t).toTicks()});return this._addEvent(n,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){const t=this._scheduledEvents[e.toString()];t.timeline.remove(t.event),t.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,t){return this._scheduledEvents[e.id.toString()]={event:e,timeline:t},t.add(e),e.id}cancel(e=0){const t=this.toTicks(e);return this._timeline.forEachFrom(t,n=>this.clear(n.id)),this._repeatedEvents.forEachFrom(t,n=>this.clear(n.id)),this}_bindClockEvents(){this._clock.on("start",(e,t)=>{t=new Oe(this.context,t).toSeconds(),this.emit("start",e,t)}),this._clock.on("stop",e=>{this.emit("stop",e)}),this._clock.on("pause",e=>{this.emit("pause",e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,t){this.context.resume();let n;return de(t)&&(n=this.toTicks(t)),this._clock.start(e,n),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!=="started"?this.start(e):this.stop(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){ot(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new Dt(this.context,this._loopStart,"i").toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new Dt(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,t){return this.loopStart=e,this.loopEnd=t,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new Oe(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){const e=this.now(),t=this._clock.getTicksAtTime(e);return new Oe(this.context,t).toBarsBeatsSixteenths()}set position(e){const t=this.toTicks(e);this.ticks=t}get seconds(){return this._clock.seconds}set seconds(e){const t=this.now(),n=this._clock.frequency.timeToTicks(e,t);this.ticks=n}get progress(){if(this.loop){const e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){const t=this.now();if(this.state==="started"){const n=this._clock.getTicksAtTime(t),i=this._clock.frequency.getDurationOfTicks(Math.ceil(n)-n,t),r=t+i;this.emit("stop",r),this._clock.setTicksAtTime(e,r),this.emit("start",r,this._clock.getSecondsAtTime(r))}else this.emit("ticks",t),this._clock.setTicksAtTime(e,t)}}getTicksAtTime(e){return this._clock.getTicksAtTime(e)}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!=="started")return 0;{const t=this.now(),n=this.getTicksAtTime(t),i=e-n%e;return this._clock.nextTickTime(i,t)}}syncSignal(e,t){const n=this.now();let i=this.bpm,r=1/(60/i.getValueAtTime(n)/this.PPQ),o=[];if(e.units==="time"){const c=.015625/r,l=new Y(c),u=new Sn(-1),h=new Y(c);i.chain(l,u,h),i=h,r=1/r,o=[l,u,h]}t||(e.getValueAtTime(n)!==0?t=e.getValueAtTime(n)/r:t=0);const a=new Y(t);return i.connect(a),a.connect(e._param),o.push(a),this._syncedSignals.push({initial:e.value,nodes:o,signal:e}),e.value=0,this}unsyncSignal(e){for(let t=this._syncedSignals.length-1;t>=0;t--){const n=this._syncedSignals[t];n.signal===e&&(n.nodes.forEach(i=>i.dispose()),n.signal.value=n.initial,this._syncedSignals.splice(t,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),ci(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}}yn.mixin(fr);ur(s=>{s.transport=new fr({context:s})});hr(s=>{s.transport.dispose()});class Be extends ${constructor(e){super(e),this.input=void 0,this._state=new wn("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=_e,this._syncedStop=_e,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Ut({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,ne(this,"volume"),this.onstop=e.onstop}static getDefaults(){return Object.assign($.getDefaults(),{mute:!1,onstop:_e,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,t,n){let i=Tt(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(i=this._clampToCurrentTime(i),!this._synced&&this._state.getValueAtTime(i)==="started")K(cn(i,this._state.get(i).time),"Start time must be strictly greater than previous start time"),this._state.cancel(i),this._state.setStateAtTime("started",i),this.log("restart",i),this.restart(i,t,n);else if(this.log("start",i),this._state.setStateAtTime("started",i),this._synced){const r=this._state.get(i);r&&(r.offset=this.toSeconds($t(t,0)),r.duration=n?this.toSeconds(n):void 0);const o=this.context.transport.schedule(a=>{this._start(a,t,n)},i);this._scheduled.push(o),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>i&&this._syncedStart(this.now(),this.context.transport.seconds)}else Ko(this.context),this._start(i,t,n);return this}stop(e){let t=Tt(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(t=this._clampToCurrentTime(t),this._state.getValueAtTime(t)==="started"||de(this._state.getNextState("started",t))){if(this.log("stop",t),!this._synced)this._stop(t);else{const n=this.context.transport.schedule(this._stop.bind(this),t);this._scheduled.push(n)}this._state.cancel(t),this._state.setStateAtTime("stopped",t)}return this}restart(e,t,n){return e=this.toSeconds(e),this._state.getValueAtTime(e)==="started"&&(this._state.cancel(e),this._restart(e,t,n)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,t)=>{if(cn(t,0)){const n=this._state.get(t);if(n&&n.state==="started"&&n.time!==t){const i=t-this.toSeconds(n.time);let r;n.duration&&(r=this.toSeconds(n.duration)-i),this._start(e,this.toSeconds(n.offset)+i,r)}}},this._syncedStop=e=>{const t=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(t)==="started"&&this._stop(e)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=_e,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class Es extends hn{constructor(){const e=F(Es.getDefaults(),arguments,["url","onload"]);super(e),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1,pt(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new ae({context:this.context,param:this._source.playbackRate,units:"positive",value:e.playbackRate}),this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this._buffer=new xe(e.url,e.onload,e.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(hn.getDefaults(),{url:new xe,loop:!1,loopEnd:0,loopStart:0,onload:_e,onerror:_e,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,t,n,i=1){K(this.buffer.loaded,"buffer is either not set or not loaded");const r=this.toSeconds(e);this._startGain(r,i),this.loop?t=$t(t,this.loopStart):t=$t(t,0);let o=Math.max(this.toSeconds(t),0);if(this.loop){const a=this.toSeconds(this.loopEnd)||this.buffer.duration,c=this.toSeconds(this.loopStart),l=a-c;bo(o,a)&&(o=(o-c)%l+c),zt(o,this.buffer.duration)&&(o=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,Ui(o,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(r,o)),de(n)){let a=this.toSeconds(n);a=Math.max(a,0),this.stop(r+a)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}class ks extends Be{constructor(){const e=F(ks.getDefaults(),arguments,["type"]);super(e),this.name="Noise",this._source=null,this._playbackRate=e.playbackRate,this.type=e.type,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Be.getDefaults(),{fadeIn:0,fadeOut:0,playbackRate:1,type:"white"})}get type(){return this._type}set type(e){if(K(e in cc,"Noise: invalid type: "+e),this._type!==e&&(this._type=e,this.state==="started")){const t=this.now();this._stop(t),this._start(t)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._source&&(this._source.playbackRate.value=e)}_start(e){const t=cc[this._type];this._source=new Es({url:t,context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,loop:!0,onended:()=>this.onstop(this),playbackRate:this._playbackRate}).connect(this.output),this._source.start(this.toSeconds(e),Math.random()*(t.duration-.001))}_stop(e){this._source&&(this._source.stop(this.toSeconds(e)),this._source=null)}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._source&&(this._source.fadeIn=this._fadeIn)}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._source&&(this._source.fadeOut=this._fadeOut)}_restart(e){this._stop(e),this._start(e)}dispose(){return super.dispose(),this._source&&this._source.disconnect(),this}}const Us=44100*5,to=2,cs={brown:null,pink:null,white:null},cc={get brown(){if(!cs.brown){const s=[];for(let e=0;e<to;e++){const t=new Float32Array(Us);s[e]=t;let n=0;for(let i=0;i<Us;i++){const r=Math.random()*2-1;t[i]=(n+.02*r)/1.02,n=t[i],t[i]*=3.5}}cs.brown=new xe().fromArray(s)}return cs.brown},get pink(){if(!cs.pink){const s=[];for(let e=0;e<to;e++){const t=new Float32Array(Us);s[e]=t;let n,i,r,o,a,c,l;n=i=r=o=a=c=l=0;for(let u=0;u<Us;u++){const h=Math.random()*2-1;n=.99886*n+h*.0555179,i=.99332*i+h*.0750759,r=.969*r+h*.153852,o=.8665*o+h*.3104856,a=.55*a+h*.5329522,c=-.7616*c-h*.016898,t[u]=n+i+r+o+a+c+l+h*.5362,t[u]*=.11,l=h*.115926}}cs.pink=new xe().fromArray(s)}return cs.pink},get white(){if(!cs.white){const s=[];for(let e=0;e<to;e++){const t=new Float32Array(Us);s[e]=t;for(let n=0;n<Us;n++)t[n]=Math.random()*2-1}cs.white=new xe().fromArray(s)}return cs.white}};class Zn extends ${constructor(){const e=F(Zn.getDefaults(),arguments,["volume"]);super(e),this.name="UserMedia",this._volume=this.output=new Ut({context:this.context,volume:e.volume}),this.volume=this._volume.volume,ne(this,"volume"),this.mute=e.mute}static getDefaults(){return Object.assign($.getDefaults(),{mute:!1,volume:0})}open(e){return ke(this,void 0,void 0,function*(){K(Zn.supported,"UserMedia is not supported"),this.state==="started"&&this.close();const t=yield Zn.enumerateDevices();Ot(e)?this._device=t[e]:(this._device=t.find(r=>r.label===e||r.deviceId===e),!this._device&&t.length>0&&(this._device=t[0]),K(de(this._device),`No matching device ${e}`));const n={audio:{echoCancellation:!1,sampleRate:this.context.sampleRate,noiseSuppression:!1,mozNoiseSuppression:!1}};this._device&&(n.audio.deviceId=this._device.deviceId);const i=yield navigator.mediaDevices.getUserMedia(n);if(!this._stream){this._stream=i;const r=this.context.createMediaStreamSource(i);pt(r,this.output),this._mediaStream=r}return this})}close(){return this._stream&&this._mediaStream&&(this._stream.getAudioTracks().forEach(e=>{e.stop()}),this._stream=void 0,this._mediaStream.disconnect(),this._mediaStream=void 0),this._device=void 0,this}static enumerateDevices(){return ke(this,void 0,void 0,function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter(t=>t.kind==="audioinput")})}get state(){return this._stream&&this._stream.active?"started":"stopped"}get deviceId(){if(this._device)return this._device.deviceId}get groupId(){if(this._device)return this._device.groupId}get label(){if(this._device)return this._device.label}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this.close(),this._volume.dispose(),this.volume.dispose(),this}static get supported(){return de(navigator.mediaDevices)&&de(navigator.mediaDevices.getUserMedia)}}function Ls(s,e){return ke(this,void 0,void 0,function*(){const t=e/s.context.sampleRate,n=new bn(1,t,s.context.sampleRate);return new s.constructor(Object.assign(s.get(),{frequency:2/t,detune:0,context:n})).toDestination().start(0),(yield n.render()).getChannelData(0)})}class hi extends hn{constructor(){const e=F(hi.getDefaults(),arguments,["frequency","type"]);super(e),this.name="ToneOscillatorNode",this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator],pt(this._oscillator,this._gainNode),this.type=e.type,this.frequency=new ae({context:this.context,param:this._oscillator.frequency,units:"frequency",value:e.frequency}),this.detune=new ae({context:this.context,param:this._oscillator.detune,units:"cents",value:e.detune}),ne(this,["frequency","detune"])}static getDefaults(){return Object.assign(hn.getDefaults(),{detune:0,frequency:440,type:"sine"})}start(e){const t=this.toSeconds(e);return this.log("start",t),this._startGain(t),this._oscillator.start(t),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}}class Ne extends Be{constructor(){const e=F(Ne.getDefaults(),arguments,["frequency","type"]);super(e),this.name="Oscillator",this._oscillator=null,this.frequency=new re({context:this.context,units:"frequency",value:e.frequency}),ne(this,"frequency"),this.detune=new re({context:this.context,units:"cents",value:e.detune}),ne(this,"detune"),this._partials=e.partials,this._partialCount=e.partialCount,this._type=e.type,e.partialCount&&e.type!=="custom"&&(this._type=this.baseType+e.partialCount.toString()),this.phase=e.phase}static getDefaults(){return Object.assign(Be.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:"sine"})}_start(e){const t=this.toSeconds(e),n=new hi({context:this.context,onended:()=>this.onstop(this)});this._oscillator=n,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(t)}_stop(e){const t=this.toSeconds(e);this._oscillator&&this._oscillator.stop(t)}_restart(e){const t=this.toSeconds(e);return this.log("restart",t),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(t),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Ne._periodicWaveCache.find(t=>t.phase===this._phase&&Ig(t.partials,this._partials));{const e=Ne._periodicWaveCache.find(t=>t.type===this._type&&t.phase===this._phase);return this._partialCount=e?e.partialCount:this._partialCount,e}}get type(){return this._type}set type(e){this._type=e;const t=["sine","square","sawtooth","triangle"].indexOf(e)!==-1;if(this._phase===0&&t)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=e);else{const n=this._getCachedPeriodicWave();if(de(n)){const{partials:i,wave:r}=n;this._wave=r,this._partials=i,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[i,r]=this._getRealImaginary(e,this._phase),o=this.context.createPeriodicWave(i,r);this._wave=o,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Ne._periodicWaveCache.push({imag:r,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:i,type:this._type,wave:this._wave}),Ne._periodicWaveCache.length>100&&Ne._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(e){this.partialCount&&this._type!=="custom"&&e!=="custom"?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){Ye(e,0);let t=this._type;const n=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(n&&(t=n[1]),this._type!=="custom")e===0?this.type=t:this.type=t+e.toString();else{const i=new Float32Array(e);this._partials.forEach((r,o)=>i[o]=r),this._partials=Array.from(i),this.type=this._type}}_getRealImaginary(e,t){let i=2048;const r=new Float32Array(i),o=new Float32Array(i);let a=1;if(e==="custom"){if(a=this._partials.length+1,this._partialCount=this._partials.length,i=a,this._partials.length===0)return[r,o]}else{const c=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);c?(a=parseInt(c[2],10)+1,this._partialCount=parseInt(c[2],10),e=c[1],a=Math.max(a,2),i=a):this._partialCount=0,this._partials=[]}for(let c=1;c<i;++c){const l=2/(c*Math.PI);let u;switch(e){case"sine":u=c<=a?1:0,this._partials[c-1]=u;break;case"square":u=c&1?2*l:0,this._partials[c-1]=u;break;case"sawtooth":u=l*(c&1?1:-1),this._partials[c-1]=u;break;case"triangle":c&1?u=2*(l*l)*(c-1>>1&1?-1:1):u=0,this._partials[c-1]=u;break;case"custom":u=this._partials[c-1];break;default:throw new TypeError("Oscillator: invalid type: "+e)}u!==0?(r[c]=-u*Math.sin(t*c),o[c]=u*Math.cos(t*c)):(r[c]=0,o[c]=0)}return[r,o]}_inverseFFT(e,t,n){let i=0;const r=e.length;for(let o=0;o<r;o++)i+=e[o]*Math.cos(o*n)+t[o]*Math.sin(o*n);return i}getInitialValue(){const[e,t]=this._getRealImaginary(this._type,0);let n=0;const i=Math.PI*2,r=32;for(let o=0;o<r;o++)n=Math.max(this._inverseFFT(e,t,o/r*i),n);return qs(-this._inverseFFT(e,t,this._phase)/n,-1,1)}get partials(){return this._partials.slice(0,this.partialCount)}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this.type="custom")}get phase(){return this._phase*(180/Math.PI)}set phase(e){this._phase=e*Math.PI/180,this.type=this._type}asArray(){return ke(this,arguments,void 0,function*(e=1024){return Ls(this,e)})}dispose(){return super.dispose(),this._oscillator!==null&&this._oscillator.dispose(),this._wave=void 0,this.frequency.dispose(),this.detune.dispose(),this}}Ne._periodicWaveCache=[];class mr extends Ft{constructor(){super(...arguments),this.name="AudioToGain",this._norm=new Kt({context:this.context,mapping:e=>(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Fe extends re{constructor(){const e=F(Fe.getDefaults(),arguments,["value"]);super(e),this.name="Multiply",this.override=!1,this._mult=this.input=this.output=new Y({context:this.context,minValue:e.minValue,maxValue:e.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(re.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class di extends Be{constructor(){const e=F(di.getDefaults(),arguments,["frequency","type","modulationType"]);super(e),this.name="AMOscillator",this._modulationScale=new mr({context:this.context}),this._modulationNode=new Y({context:this.context}),this._carrier=new Ne({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Ne({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Fe({context:this.context,units:"positive",value:e.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),ne(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Ne.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(){return ke(this,arguments,void 0,function*(e=1024){return Ls(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class Tn extends Be{constructor(){const e=F(Tn.getDefaults(),arguments,["frequency","type","modulationType"]);super(e),this.name="FMOscillator",this._modulationNode=new Y({context:this.context,gain:0}),this._carrier=new Ne({context:this.context,detune:e.detune,frequency:0,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.detune=this._carrier.detune,this.frequency=new re({context:this.context,units:"frequency",value:e.frequency}),this._modulator=new Ne({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Fe({context:this.context,units:"positive",value:e.harmonicity}),this.modulationIndex=new Fe({context:this.context,units:"positive",value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),ne(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Ne.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(){return ke(this,arguments,void 0,function*(e=1024){return Ls(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class kn extends Be{constructor(){const e=F(kn.getDefaults(),arguments,["frequency","width"]);super(e),this.name="PulseOscillator",this._widthGate=new Y({context:this.context,gain:0}),this._thresh=new Kt({context:this.context,mapping:t=>t<=0?-1:1}),this.width=new re({context:this.context,units:"audioRange",value:e.width}),this._triangle=new Ne({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),ne(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Be.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(){return ke(this,arguments,void 0,function*(e=1024){return Ls(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class pi extends Be{constructor(){const e=F(pi.getDefaults(),arguments,["frequency","type","spread"]);super(e),this.name="FatOscillator",this._oscillators=[],this.frequency=new re({context:this.context,units:"frequency",value:e.frequency}),this.detune=new re({context:this.context,units:"cents",value:e.detune}),this._spread=e.spread,this._type=e.type,this._phase=e.phase,this._partials=e.partials,this._partialCount=e.partialCount,this.count=e.count,ne(this,["frequency","detune"])}static getDefaults(){return Object.assign(Ne.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(e){e=this.toSeconds(e),this._forEach(t=>t.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(t=>t.stop(e))}_restart(e){this._forEach(t=>t.restart(e))}_forEach(e){for(let t=0;t<this._oscillators.length;t++)e(this._oscillators[t],t)}get type(){return this._type}set type(e){this._type=e,this._forEach(t=>t.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){const t=-e/2,n=e/(this._oscillators.length-1);this._forEach((i,r)=>i.detune.value=t+n*r)}}get count(){return this._oscillators.length}set count(e){if(Ye(e,1),this._oscillators.length!==e){this._forEach(t=>t.dispose()),this._oscillators=[];for(let t=0;t<e;t++){const n=new Ne({context:this.context,volume:-6-e*1.1,type:this._type,phase:this._phase+t/e*360,partialCount:this._partialCount,onstop:t===0?()=>this.onstop(this):_e});this.type==="custom"&&(n.partials=this._partials),this.frequency.connect(n.frequency),this.detune.connect(n.detune),n.detune.overridden=!1,n.connect(this.output),this._oscillators[t]=n}this.spread=this._spread,this.state==="started"&&this._forEach(t=>t.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((t,n)=>t.phase=this._phase+n/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(t=>t.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type="custom",this._forEach(t=>t.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(t=>t.partialCount=e),this._type=this._oscillators[0].type}asArray(){return ke(this,arguments,void 0,function*(e=1024){return Ls(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}}class fi extends Be{constructor(){const e=F(fi.getDefaults(),arguments,["frequency","modulationFrequency"]);super(e),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Fe({context:this.context,value:2}),this._pulse=new kn({context:this.context,frequency:e.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Ne({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),ne(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Be.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(){return ke(this,arguments,void 0,function*(e=1024){return Ls(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const lc={am:di,fat:pi,fm:Tn,oscillator:Ne,pulse:kn,pwm:fi};class fs extends Be{constructor(){const e=F(fs.getDefaults(),arguments,["frequency","type"]);super(e),this.name="OmniOscillator",this.frequency=new re({context:this.context,units:"frequency",value:e.frequency}),this.detune=new re({context:this.context,units:"cents",value:e.detune}),ne(this,["frequency","detune"]),this.set(e)}static getDefaults(){return Object.assign(Ne.getDefaults(),Tn.getDefaults(),di.getDefaults(),pi.getDefaults(),kn.getDefaults(),fi.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e="";return["am","fm","fat"].some(t=>this._sourceType===t)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):e==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,"type")&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;const t=lc[e],n=this.now();if(this._oscillator){const i=this._oscillator;i.stop(n),this.context.setTimeout(()=>i.dispose(),this.blockTime)}this._oscillator=new t({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(n)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let t="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(t=this._oscillator.type),e==="fm"?this.type="fm"+t:e==="am"?this.type="am"+t:e==="fat"?this.type="fat"+t:e==="oscillator"?this.type=t:e==="pulse"?this.type="pulse":e==="pwm"&&(this.type="pwm")}_getOscType(e,t){return e instanceof lc[t]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&e!=="pulse"&&e!=="pwm"&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,"fat")&&Ot(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,"fat")&&Ot(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&Xt(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(){return ke(this,arguments,void 0,function*(e=1024){return Ls(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}class zs extends re{constructor(){super(F(zs.getDefaults(),arguments,["value"])),this.override=!1,this.name="Add",this._sum=new Y({context:this.context}),this.input=this._sum,this.output=this._sum,this.addend=this._param,Nt(this._constantSource,this._sum)}static getDefaults(){return Object.assign(re.getDefaults(),{value:0})}dispose(){return super.dispose(),this._sum.dispose(),this}}class ms extends Ft{constructor(){const e=F(ms.getDefaults(),arguments,["min","max"]);super(e),this.name="Scale",this._mult=this.input=new Fe({context:this.context,value:e.max-e.min}),this._add=this.output=new zs({context:this.context,value:e.min}),this._min=e.min,this._max=e.max,this.input.connect(this.output)}static getDefaults(){return Object.assign(Ft.getDefaults(),{max:1,min:0})}get min(){return this._min}set min(e){this._min=e,this._setRange()}get max(){return this._max}set max(e){this._max=e,this._setRange()}_setRange(){this._add.value=this._min,this._mult.value=this._max-this._min}dispose(){return super.dispose(),this._add.dispose(),this._mult.dispose(),this}}class gr extends Ft{constructor(){super(F(gr.getDefaults(),arguments)),this.name="Zero",this._gain=new Y({context:this.context}),this.output=this._gain,this.input=void 0,pt(this.context.getConstant(0),this._gain)}dispose(){return super.dispose(),ia(this.context.getConstant(0),this._gain),this}}class yt extends ${constructor(){const e=F(yt.getDefaults(),arguments,["frequency","min","max"]);super(e),this.name="LFO",this._stoppedValue=0,this._units="number",this.convert=!0,this._fromType=ae.prototype._fromType,this._toType=ae.prototype._toType,this._is=ae.prototype._is,this._clampValue=ae.prototype._clampValue,this._oscillator=new Ne(e),this.frequency=this._oscillator.frequency,this._amplitudeGain=new Y({context:this.context,gain:e.amplitude,units:"normalRange"}),this.amplitude=this._amplitudeGain.gain,this._stoppedSignal=new re({context:this.context,units:"audioRange",value:0}),this._zeros=new gr({context:this.context}),this._a2g=new mr({context:this.context}),this._scaler=this.output=new ms({context:this.context,max:e.max,min:e.min}),this.units=e.units,this.min=e.min,this.max=e.max,this._oscillator.chain(this._amplitudeGain,this._a2g,this._scaler),this._zeros.connect(this._a2g),this._stoppedSignal.connect(this._a2g),ne(this,["amplitude","frequency"]),this.phase=e.phase}static getDefaults(){return Object.assign(Ne.getDefaults(),{amplitude:1,frequency:"4n",max:1,min:0,type:"sine",units:"number"})}start(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(0,e),this._oscillator.start(e),this}stop(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(this._stoppedValue,e),this._oscillator.stop(e),this}sync(){return this._oscillator.sync(),this._oscillator.syncFrequency(),this}unsync(){return this._oscillator.unsync(),this._oscillator.unsyncFrequency(),this}_setStoppedValue(){this._stoppedValue=this._oscillator.getInitialValue(),this._stoppedSignal.value=this._stoppedValue}get min(){return this._toType(this._scaler.min)}set min(e){e=this._fromType(e),this._scaler.min=e}get max(){return this._toType(this._scaler.max)}set max(e){e=this._fromType(e),this._scaler.max=e}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e,this._setStoppedValue()}get partials(){return this._oscillator.partials}set partials(e){this._oscillator.partials=e,this._setStoppedValue()}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e,this._setStoppedValue()}get units(){return this._units}set units(e){const t=this.min,n=this.max;this._units=e,this.min=t,this.max=n}get state(){return this._oscillator.state}connect(e,t,n){return(e instanceof ae||e instanceof re)&&(this.convert=e.convert,this.units=e.units),ui(this,e,t,n),this}dispose(){return super.dispose(),this._oscillator.dispose(),this._stoppedSignal.dispose(),this._zeros.dispose(),this._scaler.dispose(),this._a2g.dispose(),this._amplitudeGain.dispose(),this.amplitude.dispose(),this}}function ru(s,e=1/0){const t=new WeakMap;return function(n,i){Reflect.defineProperty(n,i,{configurable:!0,enumerable:!0,get:function(){return t.get(this)},set:function(r){Ye(r,s,e),t.set(this,r)}})}}function _s(s,e=1/0){const t=new WeakMap;return function(n,i){Reflect.defineProperty(n,i,{configurable:!0,enumerable:!0,get:function(){return t.get(this)},set:function(r){Ye(this.toSeconds(r),s,e),t.set(this,r)}})}}class Zs extends Be{constructor(){const e=F(Zs.getDefaults(),arguments,["url","onload"]);super(e),this.name="Player",this._activeSources=new Set,this._buffer=new xe({onload:this._onload.bind(this,e.onload),onerror:e.onerror,reverse:e.reverse,url:e.url}),this.autostart=e.autostart,this._loop=e.loop,this._loopStart=e.loopStart,this._loopEnd=e.loopEnd,this._playbackRate=e.playbackRate,this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Be.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:_e,onerror:_e,playbackRate:1,reverse:!1})}load(e){return ke(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=_e){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(e,t,n){return super.start(e,t,n),this}_start(e,t,n){this._loop?t=$t(t,this._loopStart):t=$t(t,0);const i=this.toSeconds(t),r=n;n=$t(n,Math.max(this._buffer.duration-i,0));let o=this.toSeconds(n);o=o/this._playbackRate,e=this.toSeconds(e);const a=new Es({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+o),this._state.setStateAtTime("stopped",e+o,{implicitEnd:!0})),this._activeSources.add(a),this._loop&&Tt(r)?a.start(e,i):a.start(e,i,o-this.toSeconds(this.fadeOut))}_stop(e){const t=this.toSeconds(e);this._activeSources.forEach(n=>n.stop(t))}restart(e,t,n){return super.restart(e,t,n),this}_restart(e,t,n){var i;(i=[...this._activeSources].pop())===null||i===void 0||i.stop(e),this._start(e,t,n)}seek(e,t){const n=this.toSeconds(t);if(this._state.getValueAtTime(n)==="started"){const i=this.toSeconds(e);this._stop(n),this._start(n,i)}return this}setLoopPoints(e,t){return this.loopStart=e,this.loopEnd=t,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&Ye(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(t=>{t.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&Ye(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(t=>{t.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(t=>{t.loop=e}),e)){const t=this._state.getNextState("stopped",this.now());t&&this._state.cancel(t.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;const t=this.now(),n=this._state.getNextState("stopped",t);n&&n.implicitEnd&&(this._state.cancel(n.time),this._activeSources.forEach(i=>i.cancelStop())),this._activeSources.forEach(i=>{i.playbackRate.setValueAtTime(e,t)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}}Yt([_s(0)],Zs.prototype,"fadeIn",void 0);Yt([_s(0)],Zs.prototype,"fadeOut",void 0);class ua extends ${constructor(){const e=F(ua.getDefaults(),arguments,["urls","onload"],"urls");super(e),this.name="Players",this.input=void 0,this._players=new Map,this._volume=this.output=new Ut({context:this.context,volume:e.volume}),this.volume=this._volume.volume,ne(this,"volume"),this._buffers=new Cn({urls:e.urls,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.mute=e.mute,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Be.getDefaults(),{baseUrl:"",fadeIn:0,fadeOut:0,mute:!1,onload:_e,onerror:_e,urls:{},volume:0})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._players.forEach(t=>{t.fadeIn=e})}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._players.forEach(t=>{t.fadeOut=e})}get state(){return Array.from(this._players).some(([t,n])=>n.state==="started")?"started":"stopped"}has(e){return this._buffers.has(e)}player(e){if(K(this.has(e),`No Player with the name ${e} exists on this object`),!this._players.has(e)){const t=new Zs({context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,url:this._buffers.get(e)}).connect(this.output);this._players.set(e,t)}return this._players.get(e)}get loaded(){return this._buffers.loaded}add(e,t,n){return K(!this._buffers.has(e),"A buffer with that name already exists on this object"),this._buffers.add(e,t,n),this}stopAll(e){return this._players.forEach(t=>t.stop(e)),this}dispose(){return super.dispose(),this._volume.dispose(),this.volume.dispose(),this._players.forEach(e=>e.dispose()),this._buffers.dispose(),this}}class ha extends Be{constructor(){const e=F(ha.getDefaults(),arguments,["url","onload"]);super(e),this.name="GrainPlayer",this._loopStart=0,this._loopEnd=0,this._activeSources=[],this.buffer=new xe({onload:e.onload,onerror:e.onerror,reverse:e.reverse,url:e.url}),this._clock=new xn({context:this.context,callback:this._tick.bind(this),frequency:1/e.grainSize}),this._playbackRate=e.playbackRate,this._grainSize=e.grainSize,this._overlap=e.overlap,this.detune=e.detune,this.overlap=e.overlap,this.loop=e.loop,this.playbackRate=e.playbackRate,this.grainSize=e.grainSize,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.reverse=e.reverse,this._clock.on("stop",this._onstop.bind(this))}static getDefaults(){return Object.assign(Be.getDefaults(),{onload:_e,onerror:_e,overlap:.1,grainSize:.2,playbackRate:1,detune:0,loop:!1,loopStart:0,loopEnd:0,reverse:!1})}_start(e,t,n){t=$t(t,0),t=this.toSeconds(t),e=this.toSeconds(e);const i=1/this._clock.frequency.getValueAtTime(e);this._clock.start(e,t/i),n&&this.stop(e+this.toSeconds(n))}restart(e,t,n){return super.restart(e,t,n),this}_restart(e,t,n){this._stop(e),this._start(e,t,n)}_stop(e){this._clock.stop(e)}_onstop(e){this._activeSources.forEach(t=>{t.fadeOut=0,t.stop(e)}),this.onstop(this)}_tick(e){const t=this._clock.getTicksAtTime(e),n=t*this._grainSize;if(this.log("offset",n),!this.loop&&n>this.buffer.duration){this.stop(e);return}const i=n<this._overlap?0:this._overlap,r=new Es({context:this.context,url:this.buffer,fadeIn:i,fadeOut:this._overlap,loop:this.loop,loopStart:this._loopStart,loopEnd:this._loopEnd,playbackRate:un(this.detune/100)}).connect(this.output);r.start(e,this._grainSize*t),r.stop(e+this._grainSize/this.playbackRate),this._activeSources.push(r),r.onended=()=>{const o=this._activeSources.indexOf(r);o!==-1&&this._activeSources.splice(o,1)}}get playbackRate(){return this._playbackRate}set playbackRate(e){Ye(e,.001),this._playbackRate=e,this.grainSize=this._grainSize}get loopStart(){return this._loopStart}set loopStart(e){this.buffer.loaded&&Ye(this.toSeconds(e),0,this.buffer.duration),this._loopStart=this.toSeconds(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this.buffer.loaded&&Ye(this.toSeconds(e),0,this.buffer.duration),this._loopEnd=this.toSeconds(e)}get reverse(){return this.buffer.reverse}set reverse(e){this.buffer.reverse=e}get grainSize(){return this._grainSize}set grainSize(e){this._grainSize=this.toSeconds(e),this._clock.frequency.setValueAtTime(this._playbackRate/this._grainSize,this.now())}get overlap(){return this._overlap}set overlap(e){const t=this.toSeconds(e);Ye(t,0),this._overlap=t}get loaded(){return this.buffer.loaded}dispose(){return super.dispose(),this.buffer.dispose(),this._clock.dispose(),this._activeSources.forEach(e=>e.dispose()),this}}class ou extends Ft{constructor(){super(...arguments),this.name="Abs",this._abs=new Kt({context:this.context,mapping:e=>Math.abs(e)<.001?0:Math.abs(e)}),this.input=this._abs,this.output=this._abs}dispose(){return super.dispose(),this._abs.dispose(),this}}class au extends Ft{constructor(){super(...arguments),this.name="GainToAudio",this._norm=new Kt({context:this.context,mapping:e=>Math.abs(e)*2-1}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class da extends Ft{constructor(){super(...arguments),this.name="Negate",this._multiply=new Fe({context:this.context,value:-1}),this.input=this._multiply,this.output=this._multiply}dispose(){return super.dispose(),this._multiply.dispose(),this}}class Gs extends re{constructor(){super(F(Gs.getDefaults(),arguments,["value"])),this.override=!1,this.name="Subtract",this._sum=new Y({context:this.context}),this.input=this._sum,this.output=this._sum,this._neg=new da({context:this.context}),this.subtrahend=this._param,Nt(this._constantSource,this._neg,this._sum)}static getDefaults(){return Object.assign(re.getDefaults(),{value:0})}dispose(){return super.dispose(),this._neg.dispose(),this._sum.dispose(),this}}class _r extends Ft{constructor(){super(F(_r.getDefaults(),arguments)),this.name="GreaterThanZero",this._thresh=this.output=new Kt({context:this.context,length:127,mapping:e=>e<=0?0:1}),this._scale=this.input=new Fe({context:this.context,value:1e4}),this._scale.connect(this._thresh)}dispose(){return super.dispose(),this._scale.dispose(),this._thresh.dispose(),this}}class vr extends re{constructor(){const e=F(vr.getDefaults(),arguments,["value"]);super(e),this.name="GreaterThan",this.override=!1,this._subtract=this.input=new Gs({context:this.context,value:e.value}),this._gtz=this.output=new _r({context:this.context}),this.comparator=this._param=this._subtract.subtrahend,ne(this,"comparator"),this._subtract.connect(this._gtz)}static getDefaults(){return Object.assign(re.getDefaults(),{value:0})}dispose(){return super.dispose(),this._gtz.dispose(),this._subtract.dispose(),this.comparator.dispose(),this}}class yr extends ms{constructor(){const e=F(yr.getDefaults(),arguments,["min","max","exponent"]);super(e),this.name="ScaleExp",this.input=this._exp=new Sn({context:this.context,value:e.exponent}),this._exp.connect(this._mult)}static getDefaults(){return Object.assign(ms.getDefaults(),{exponent:1})}get exponent(){return this._exp.value}set exponent(e){this._exp.value=e}dispose(){return super.dispose(),this._exp.dispose(),this}}class Yg extends re{constructor(){const e=F(re.getDefaults(),arguments,["value","units"]);super(e),this.name="SyncedSignal",this.override=!1,this._lastVal=e.value,this._synced=this.context.transport.scheduleRepeat(this._onTick.bind(this),"1i"),this._syncedCallback=this._anchorValue.bind(this),this.context.transport.on("start",this._syncedCallback),this.context.transport.on("pause",this._syncedCallback),this.context.transport.on("stop",this._syncedCallback),this._constantSource.disconnect(),this._constantSource.stop(0),this._constantSource=this.output=new pr({context:this.context,offset:e.value,units:e.units}).start(0),this.setValueAtTime(e.value,0)}_onTick(e){const t=super.getValueAtTime(this.context.transport.seconds);this._lastVal!==t&&(this._lastVal=t,this._constantSource.offset.setValueAtTime(t,e))}_anchorValue(e){const t=super.getValueAtTime(this.context.transport.seconds);this._lastVal=t,this._constantSource.offset.cancelAndHoldAtTime(e),this._constantSource.offset.setValueAtTime(t,e)}getValueAtTime(e){const t=new Xe(this.context,e).toSeconds();return super.getValueAtTime(t)}setValueAtTime(e,t){const n=new Xe(this.context,t).toSeconds();return super.setValueAtTime(e,n),this}linearRampToValueAtTime(e,t){const n=new Xe(this.context,t).toSeconds();return super.linearRampToValueAtTime(e,n),this}exponentialRampToValueAtTime(e,t){const n=new Xe(this.context,t).toSeconds();return super.exponentialRampToValueAtTime(e,n),this}setTargetAtTime(e,t,n){const i=new Xe(this.context,t).toSeconds();return super.setTargetAtTime(e,i,n),this}cancelScheduledValues(e){const t=new Xe(this.context,e).toSeconds();return super.cancelScheduledValues(t),this}setValueCurveAtTime(e,t,n,i){const r=new Xe(this.context,t).toSeconds();return n=this.toSeconds(n),super.setValueCurveAtTime(e,r,n,i),this}cancelAndHoldAtTime(e){const t=new Xe(this.context,e).toSeconds();return super.cancelAndHoldAtTime(t),this}setRampPoint(e){const t=new Xe(this.context,e).toSeconds();return super.setRampPoint(t),this}exponentialRampTo(e,t,n){const i=new Xe(this.context,n).toSeconds();return super.exponentialRampTo(e,t,i),this}linearRampTo(e,t,n){const i=new Xe(this.context,n).toSeconds();return super.linearRampTo(e,t,i),this}targetRampTo(e,t,n){const i=new Xe(this.context,n).toSeconds();return super.targetRampTo(e,t,i),this}dispose(){return super.dispose(),this.context.transport.clear(this._synced),this.context.transport.off("start",this._syncedCallback),this.context.transport.off("pause",this._syncedCallback),this.context.transport.off("stop",this._syncedCallback),this._constantSource.dispose(),this}}class at extends ${constructor(){const e=F(at.getDefaults(),arguments,["attack","decay","sustain","release"]);super(e),this.name="Envelope",this._sig=new re({context:this.context,value:0}),this.output=this._sig,this.input=void 0,this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve,this.decayCurve=e.decayCurve}static getDefaults(){return Object.assign($.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,t){if(Xt(e))return e;{let n;for(n in Oi)if(Oi[n][t]===e)return n;return e}}_setCurve(e,t,n){if(Xt(n)&&Reflect.has(Oi,n)){const i=Oi[n];ps(i)?e!=="_decayCurve"&&(this[e]=i[t]):this[e]=i}else if(ot(n)&&e!=="_decayCurve")this[e]=n;else throw new Error("Envelope: invalid curve: "+n)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(e){this._setCurve("_attackCurve","In",e)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(e){this._setCurve("_releaseCurve","Out",e)}get decayCurve(){return this._getCurve(this._decayCurve,"Out")}set decayCurve(e){this._setCurve("_decayCurve","Out",e)}triggerAttack(e,t=1){this.log("triggerAttack",e,t),e=this.toSeconds(e);let i=this.toSeconds(this.attack);const r=this.toSeconds(this.decay),o=this.getValueAtTime(e);if(o>0){const a=1/i;i=(1-o)/a}if(i<this.sampleTime)this._sig.cancelScheduledValues(e),this._sig.setValueAtTime(t,e);else if(this._attackCurve==="linear")this._sig.linearRampTo(t,i,e);else if(this._attackCurve==="exponential")this._sig.targetRampTo(t,i,e);else{this._sig.cancelAndHoldAtTime(e);let a=this._attackCurve;for(let c=1;c<a.length;c++)if(a[c-1]<=o&&o<=a[c]){a=this._attackCurve.slice(c),a[0]=o;break}this._sig.setValueCurveAtTime(a,e,i,t)}if(r&&this.sustain<1){const a=t*this.sustain,c=e+i;this.log("decay",c),this._decayCurve==="linear"?this._sig.linearRampToValueAtTime(a,r+c):this._sig.exponentialApproachValueAtTime(a,c,r)}return this}triggerRelease(e){this.log("triggerRelease",e),e=this.toSeconds(e);const t=this.getValueAtTime(e);if(t>0){const n=this.toSeconds(this.release);n<this.sampleTime?this._sig.setValueAtTime(0,e):this._releaseCurve==="linear"?this._sig.linearRampTo(0,n,e):this._releaseCurve==="exponential"?this._sig.targetRampTo(0,n,e):(K(ot(this._releaseCurve),"releaseCurve must be either 'linear', 'exponential' or an array"),this._sig.cancelAndHoldAtTime(e),this._sig.setValueCurveAtTime(this._releaseCurve,e,n,t))}return this}getValueAtTime(e){return this._sig.getValueAtTime(e)}triggerAttackRelease(e,t,n=1){return t=this.toSeconds(t),this.triggerAttack(t,n),this.triggerRelease(t+this.toSeconds(e)),this}cancel(e){return this._sig.cancelScheduledValues(this.toSeconds(e)),this}connect(e,t=0,n=0){return ui(this,e,t,n),this}asArray(){return ke(this,arguments,void 0,function*(e=1024){const t=e/this.context.sampleRate,n=new bn(1,t,this.context.sampleRate),i=this.toSeconds(this.attack)+this.toSeconds(this.decay),r=i+this.toSeconds(this.release),o=r*.1,a=r+o,c=new this.constructor(Object.assign(this.get(),{attack:t*this.toSeconds(this.attack)/a,decay:t*this.toSeconds(this.decay)/a,release:t*this.toSeconds(this.release)/a,context:n}));return c._sig.toDestination(),c.triggerAttackRelease(t*(i+o)/a,0),(yield n.render()).getChannelData(0)})}dispose(){return super.dispose(),this._sig.dispose(),this}}Yt([_s(0)],at.prototype,"attack",void 0);Yt([_s(0)],at.prototype,"decay",void 0);Yt([ru(0,1)],at.prototype,"sustain",void 0);Yt([_s(0)],at.prototype,"release",void 0);const Oi=(()=>{let e,t;const n=[];for(e=0;e<128;e++)n[e]=Math.sin(e/127*(Math.PI/2));const i=[],r=6.4;for(e=0;e<127;e++){t=e/127;const p=Math.sin(t*(Math.PI*2)*r-Math.PI/2)+1;i[e]=p/10+t*.83}i[127]=1;const o=[],a=5;for(e=0;e<128;e++)o[e]=Math.ceil(e/127*a)/a;const c=[];for(e=0;e<128;e++)t=e/127,c[e]=.5*(1-Math.cos(Math.PI*t));const l=[];for(e=0;e<128;e++){t=e/127;const p=Math.pow(t,3)*4+.2,d=Math.cos(p*Math.PI*2*t);l[e]=Math.abs(d*(1-t))}function u(p){const d=new Array(p.length);for(let f=0;f<p.length;f++)d[f]=1-p[f];return d}function h(p){return p.slice(0).reverse()}return{bounce:{In:u(l),Out:l},cosine:{In:n,Out:h(n)},exponential:"exponential",linear:"linear",ripple:{In:i,Out:u(i)},sine:{In:c,Out:u(c)},step:{In:o,Out:u(o)}}})();class qt extends ${constructor(){const e=F(qt.getDefaults(),arguments);super(e),this._scheduledEvents=[],this._synced=!1,this._original_triggerAttack=this.triggerAttack,this._original_triggerRelease=this.triggerRelease,this._syncedRelease=t=>this._original_triggerRelease(t),this._volume=this.output=new Ut({context:this.context,volume:e.volume}),this.volume=this._volume.volume,ne(this,"volume")}static getDefaults(){return Object.assign($.getDefaults(),{volume:0})}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",0),this.context.transport.on("stop",this._syncedRelease),this.context.transport.on("pause",this._syncedRelease),this.context.transport.on("loopEnd",this._syncedRelease)),this}_syncState(){let e=!1;return this._synced||(this._synced=!0,e=!0),e}_syncMethod(e,t){const n=this["_original_"+e]=this[e];this[e]=(...i)=>{const r=i[t],o=this.context.transport.schedule(a=>{i[t]=a,n.apply(this,i)},r);this._scheduledEvents.push(o)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease,this.context.transport.off("stop",this._syncedRelease),this.context.transport.off("pause",this._syncedRelease),this.context.transport.off("loopEnd",this._syncedRelease)),this}triggerAttackRelease(e,t,n,i){const r=this.toSeconds(n),o=this.toSeconds(t);return this.triggerAttack(e,r,i),this.triggerRelease(r+o),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class rt extends qt{constructor(){const e=F(rt.getDefaults(),arguments);super(e),this.portamento=e.portamento,this.onsilence=e.onsilence}static getDefaults(){return Object.assign(qt.getDefaults(),{detune:0,onsilence:_e,portamento:0})}triggerAttack(e,t,n=1){this.log("triggerAttack",e,t,n);const i=this.toSeconds(t);return this._triggerEnvelopeAttack(i,n),this.setNote(e,i),this}triggerRelease(e){this.log("triggerRelease",e);const t=this.toSeconds(e);return this._triggerEnvelopeRelease(t),this}setNote(e,t){const n=this.toSeconds(t),i=e instanceof vt?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(n)>.05){const r=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(i,r,n)}else this.frequency.setValueAtTime(i,n);return this}}Yt([_s(0)],rt.prototype,"portamento",void 0);class An extends at{constructor(){super(F(An.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Y({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class As extends rt{constructor(){const e=F(As.getDefaults(),arguments);super(e),this.name="Synth",this.oscillator=new fs(Object.assign({context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)},e.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new An(Object.assign({context:this.context},e.envelope)),this.oscillator.chain(this.envelope,this.output),ne(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(rt.getDefaults(),{envelope:Object.assign(it(at.getDefaults(),Object.keys($.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(it(fs.getDefaults(),[...Object.keys(Be.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(e,t){if(this.envelope.triggerAttack(e,t),this.oscillator.start(e),this.envelope.sustain===0){const n=this.toSeconds(this.envelope.attack),i=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+n+i)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class Yn extends rt{constructor(){const e=F(Yn.getDefaults(),arguments);super(e),this.name="ModulationSynth",this._carrier=new As({context:this.context,oscillator:e.oscillator,envelope:e.envelope,onsilence:()=>this.onsilence(this),volume:-10}),this._modulator=new As({context:this.context,oscillator:e.modulation,envelope:e.modulationEnvelope,volume:-10}),this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope,this.modulation=this._modulator.oscillator,this.modulationEnvelope=this._modulator.envelope,this.frequency=new re({context:this.context,units:"frequency"}),this.detune=new re({context:this.context,value:e.detune,units:"cents"}),this.harmonicity=new Fe({context:this.context,value:e.harmonicity,minValue:0}),this._modulationNode=new Y({context:this.context,gain:0}),ne(this,["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"])}static getDefaults(){return Object.assign(rt.getDefaults(),{harmonicity:3,oscillator:Object.assign(it(fs.getDefaults(),[...Object.keys(Be.getDefaults()),"frequency","detune"]),{type:"sine"}),envelope:Object.assign(it(at.getDefaults(),Object.keys($.getDefaults())),{attack:.01,decay:.01,sustain:1,release:.5}),modulation:Object.assign(it(fs.getDefaults(),[...Object.keys(Be.getDefaults()),"frequency","detune"]),{type:"square"}),modulationEnvelope:Object.assign(it(at.getDefaults(),Object.keys($.getDefaults())),{attack:.5,decay:0,sustain:1,release:.5})})}_triggerEnvelopeAttack(e,t){this._carrier._triggerEnvelopeAttack(e,t),this._modulator._triggerEnvelopeAttack(e,t)}_triggerEnvelopeRelease(e){return this._carrier._triggerEnvelopeRelease(e),this._modulator._triggerEnvelopeRelease(e),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this._carrier.dispose(),this._modulator.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._modulationNode.dispose(),this}}class pa extends Yn{constructor(){super(F(pa.getDefaults(),arguments)),this.name="AMSynth",this._modulationScale=new mr({context:this.context}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output)}dispose(){return super.dispose(),this._modulationScale.dispose(),this}}class Un extends ${constructor(){const e=F(Un.getDefaults(),arguments,["frequency","type"]);super(e),this.name="BiquadFilter",this._filter=this.context.createBiquadFilter(),this.input=this.output=this._filter,this.Q=new ae({context:this.context,units:"number",value:e.Q,param:this._filter.Q}),this.frequency=new ae({context:this.context,units:"frequency",value:e.frequency,param:this._filter.frequency}),this.detune=new ae({context:this.context,units:"cents",value:e.detune,param:this._filter.detune}),this.gain=new ae({context:this.context,units:"decibels",convert:!1,value:e.gain,param:this._filter.gain}),this.type=e.type}static getDefaults(){return Object.assign($.getDefaults(),{Q:1,type:"lowpass",frequency:350,detune:0,gain:0})}get type(){return this._filter.type}set type(e){K(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(e)!==-1,`Invalid filter type: ${e}`),this._filter.type=e}getFrequencyResponse(e=128){const t=new Float32Array(e);for(let o=0;o<e;o++){const c=Math.pow(o/e,2)*19980+20;t[o]=c}const n=new Float32Array(e),i=new Float32Array(e),r=this.context.createBiquadFilter();return r.type=this.type,r.Q.value=this.Q.value,r.frequency.value=this.frequency.value,r.gain.value=this.gain.value,r.getFrequencyResponse(t,n,i),n}dispose(){return super.dispose(),this._filter.disconnect(),this.Q.dispose(),this.frequency.dispose(),this.gain.dispose(),this.detune.dispose(),this}}class Rt extends ${constructor(){const e=F(Rt.getDefaults(),arguments,["frequency","type","rolloff"]);super(e),this.name="Filter",this.input=new Y({context:this.context}),this.output=new Y({context:this.context}),this._filters=[],this._filters=[],this.Q=new re({context:this.context,units:"positive",value:e.Q}),this.frequency=new re({context:this.context,units:"frequency",value:e.frequency}),this.detune=new re({context:this.context,units:"cents",value:e.detune}),this.gain=new re({context:this.context,units:"decibels",convert:!1,value:e.gain}),this._type=e.type,this.rolloff=e.rolloff,ne(this,["detune","frequency","gain","Q"])}static getDefaults(){return Object.assign($.getDefaults(),{Q:1,detune:0,frequency:350,gain:0,rolloff:-12,type:"lowpass"})}get type(){return this._type}set type(e){K(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(e)!==-1,`Invalid filter type: ${e}`),this._type=e,this._filters.forEach(n=>n.type=e)}get rolloff(){return this._rolloff}set rolloff(e){const t=Ot(e)?e:parseInt(e,10),n=[-12,-24,-48,-96];let i=n.indexOf(t);K(i!==-1,`rolloff can only be ${n.join(", ")}`),i+=1,this._rolloff=t,this.input.disconnect(),this._filters.forEach(r=>r.disconnect()),this._filters=new Array(i);for(let r=0;r<i;r++){const o=new Un({context:this.context});o.type=this._type,this.frequency.connect(o.frequency),this.detune.connect(o.detune),this.Q.connect(o.Q),this.gain.connect(o.gain),this._filters[r]=o}this._internalChannels=this._filters,Nt(this.input,...this._internalChannels,this.output)}getFrequencyResponse(e=128){const t=new Un({context:this.context,frequency:this.frequency.value,gain:this.gain.value,Q:this.Q.value,type:this._type,detune:this.detune.value}),n=new Float32Array(e).map(()=>1);return this._filters.forEach(()=>{t.getFrequencyResponse(e).forEach((r,o)=>n[o]*=r)}),t.dispose(),n}dispose(){return super.dispose(),this._filters.forEach(e=>{e.dispose()}),ci(this,["detune","frequency","gain","Q"]),this.frequency.dispose(),this.Q.dispose(),this.detune.dispose(),this.gain.dispose(),this}}class Kn extends at{constructor(){const e=F(Kn.getDefaults(),arguments,["attack","decay","sustain","release"]);super(e),this.name="FrequencyEnvelope",this._octaves=e.octaves,this._baseFrequency=this.toFrequency(e.baseFrequency),this._exponent=this.input=new Sn({context:this.context,value:e.exponent}),this._scale=this.output=new ms({context:this.context,min:this._baseFrequency,max:this._baseFrequency*Math.pow(2,this._octaves)}),this._sig.chain(this._exponent,this._scale)}static getDefaults(){return Object.assign(at.getDefaults(),{baseFrequency:200,exponent:1,octaves:4})}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){const t=this.toFrequency(e);Ye(t,0),this._baseFrequency=t,this._scale.min=this._baseFrequency,this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._scale.max=this._baseFrequency*Math.pow(2,e)}get exponent(){return this._exponent.value}set exponent(e){this._exponent.value=e}dispose(){return super.dispose(),this._exponent.dispose(),this._scale.dispose(),this}}class Vs extends rt{constructor(){const e=F(Vs.getDefaults(),arguments);super(e),this.name="MonoSynth",this.oscillator=new fs(Object.assign(e.oscillator,{context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)})),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new Rt(Object.assign(e.filter,{context:this.context})),this.filterEnvelope=new Kn(Object.assign(e.filterEnvelope,{context:this.context})),this.envelope=new An(Object.assign(e.envelope,{context:this.context})),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),ne(this,["oscillator","frequency","detune","filter","filterEnvelope","envelope"])}static getDefaults(){return Object.assign(rt.getDefaults(),{envelope:Object.assign(it(at.getDefaults(),Object.keys($.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.9}),filter:Object.assign(it(Rt.getDefaults(),Object.keys($.getDefaults())),{Q:1,rolloff:-12,type:"lowpass"}),filterEnvelope:Object.assign(it(Kn.getDefaults(),Object.keys($.getDefaults())),{attack:.6,baseFrequency:200,decay:.2,exponent:2,octaves:3,release:2,sustain:.5}),oscillator:Object.assign(it(fs.getDefaults(),Object.keys(Be.getDefaults())),{type:"sawtooth"})})}_triggerEnvelopeAttack(e,t=1){if(this.envelope.triggerAttack(e,t),this.filterEnvelope.triggerAttack(e),this.oscillator.start(e),this.envelope.sustain===0){const n=this.toSeconds(this.envelope.attack),i=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+n+i)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.filterEnvelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this.filterEnvelope.dispose(),this.filter.dispose(),this}}class fa extends rt{constructor(){const e=F(fa.getDefaults(),arguments);super(e),this.name="DuoSynth",this.voice0=new Vs(Object.assign(e.voice0,{context:this.context,onsilence:()=>this.onsilence(this)})),this.voice1=new Vs(Object.assign(e.voice1,{context:this.context})),this.harmonicity=new Fe({context:this.context,units:"positive",value:e.harmonicity}),this._vibrato=new yt({frequency:e.vibratoRate,context:this.context,min:-50,max:50}),this._vibrato.start(),this.vibratoRate=this._vibrato.frequency,this._vibratoGain=new Y({context:this.context,units:"normalRange",gain:e.vibratoAmount}),this.vibratoAmount=this._vibratoGain.gain,this.frequency=new re({context:this.context,units:"frequency",value:440}),this.detune=new re({context:this.context,units:"cents",value:e.detune}),this.frequency.connect(this.voice0.frequency),this.frequency.chain(this.harmonicity,this.voice1.frequency),this._vibrato.connect(this._vibratoGain),this._vibratoGain.fan(this.voice0.detune,this.voice1.detune),this.detune.fan(this.voice0.detune,this.voice1.detune),this.voice0.connect(this.output),this.voice1.connect(this.output),ne(this,["voice0","voice1","frequency","vibratoAmount","vibratoRate"])}getLevelAtTime(e){return e=this.toSeconds(e),this.voice0.envelope.getValueAtTime(e)+this.voice1.envelope.getValueAtTime(e)}static getDefaults(){return Bt(rt.getDefaults(),{vibratoAmount:.5,vibratoRate:5,harmonicity:1.5,voice0:Bt(it(Vs.getDefaults(),Object.keys(rt.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}}),voice1:Bt(it(Vs.getDefaults(),Object.keys(rt.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}})})}_triggerEnvelopeAttack(e,t){this.voice0._triggerEnvelopeAttack(e,t),this.voice1._triggerEnvelopeAttack(e,t)}_triggerEnvelopeRelease(e){return this.voice0._triggerEnvelopeRelease(e),this.voice1._triggerEnvelopeRelease(e),this}dispose(){return super.dispose(),this.voice0.dispose(),this.voice1.dispose(),this.frequency.dispose(),this.detune.dispose(),this._vibrato.dispose(),this.vibratoRate.dispose(),this._vibratoGain.dispose(),this.harmonicity.dispose(),this}}class ma extends Yn{constructor(){const e=F(ma.getDefaults(),arguments);super(e),this.name="FMSynth",this.modulationIndex=new Fe({context:this.context,value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output)}static getDefaults(){return Object.assign(Yn.getDefaults(),{modulationIndex:10})}dispose(){return super.dispose(),this.modulationIndex.dispose(),this}}const uc=[1,1.483,1.932,2.546,2.63,3.897];class ga extends rt{constructor(){const e=F(ga.getDefaults(),arguments);super(e),this.name="MetalSynth",this._oscillators=[],this._freqMultipliers=[],this.detune=new re({context:this.context,units:"cents",value:e.detune}),this.frequency=new re({context:this.context,units:"frequency"}),this._amplitude=new Y({context:this.context,gain:0}).connect(this.output),this._highpass=new Rt({Q:0,context:this.context,type:"highpass"}).connect(this._amplitude);for(let t=0;t<uc.length;t++){const n=new Tn({context:this.context,harmonicity:e.harmonicity,modulationIndex:e.modulationIndex,modulationType:"square",onstop:t===0?()=>this.onsilence(this):_e,type:"square"});n.connect(this._highpass),this._oscillators[t]=n;const i=new Fe({context:this.context,value:uc[t]});this._freqMultipliers[t]=i,this.frequency.chain(i,n.frequency),this.detune.connect(n.detune)}this._filterFreqScaler=new ms({context:this.context,max:7e3,min:this.toFrequency(e.resonance)}),this.envelope=new at({attack:e.envelope.attack,attackCurve:"linear",context:this.context,decay:e.envelope.decay,release:e.envelope.release,sustain:0}),this.envelope.chain(this._filterFreqScaler,this._highpass.frequency),this.envelope.connect(this._amplitude.gain),this._octaves=e.octaves,this.octaves=e.octaves}static getDefaults(){return Bt(rt.getDefaults(),{envelope:Object.assign(it(at.getDefaults(),Object.keys($.getDefaults())),{attack:.001,decay:1.4,release:.2}),harmonicity:5.1,modulationIndex:32,octaves:1.5,resonance:4e3})}_triggerEnvelopeAttack(e,t=1){return this.envelope.triggerAttack(e,t),this._oscillators.forEach(n=>n.start(e)),this.envelope.sustain===0&&this._oscillators.forEach(n=>{n.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay))}),this}_triggerEnvelopeRelease(e){return this.envelope.triggerRelease(e),this._oscillators.forEach(t=>t.stop(e+this.toSeconds(this.envelope.release))),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}get modulationIndex(){return this._oscillators[0].modulationIndex.value}set modulationIndex(e){this._oscillators.forEach(t=>t.modulationIndex.value=e)}get harmonicity(){return this._oscillators[0].harmonicity.value}set harmonicity(e){this._oscillators.forEach(t=>t.harmonicity.value=e)}get resonance(){return this._filterFreqScaler.min}set resonance(e){this._filterFreqScaler.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._filterFreqScaler.max=this._filterFreqScaler.min*Math.pow(2,e)}dispose(){return super.dispose(),this._oscillators.forEach(e=>e.dispose()),this._freqMultipliers.forEach(e=>e.dispose()),this.frequency.dispose(),this.detune.dispose(),this._filterFreqScaler.dispose(),this._amplitude.dispose(),this.envelope.dispose(),this._highpass.dispose(),this}}class mi extends As{constructor(){const e=F(mi.getDefaults(),arguments);super(e),this.name="MembraneSynth",this.portamento=0,this.pitchDecay=e.pitchDecay,this.octaves=e.octaves,ne(this,["oscillator","envelope"])}static getDefaults(){return Bt(rt.getDefaults(),As.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(e,t){const n=this.toSeconds(t),i=this.toFrequency(e instanceof vt?e.toFrequency():e),r=i*this.octaves;return this.oscillator.frequency.setValueAtTime(r,n),this.oscillator.frequency.exponentialRampToValueAtTime(i,n+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}Yt([ru(0)],mi.prototype,"octaves",void 0);Yt([_s(0)],mi.prototype,"pitchDecay",void 0);class _a extends qt{constructor(){const e=F(_a.getDefaults(),arguments);super(e),this.name="NoiseSynth",this.noise=new ks(Object.assign({context:this.context},e.noise)),this.envelope=new An(Object.assign({context:this.context},e.envelope)),this.noise.chain(this.envelope,this.output)}static getDefaults(){return Object.assign(qt.getDefaults(),{envelope:Object.assign(it(at.getDefaults(),Object.keys($.getDefaults())),{decay:.1,sustain:0}),noise:Object.assign(it(ks.getDefaults(),Object.keys(Be.getDefaults())),{type:"white"})})}triggerAttack(e,t=1){return e=this.toSeconds(e),this.envelope.triggerAttack(e,t),this.noise.start(e),this.envelope.sustain===0&&this.noise.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay)),this}triggerRelease(e){return e=this.toSeconds(e),this.envelope.triggerRelease(e),this.noise.stop(e+this.toSeconds(this.envelope.release)),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",0),this._syncMethod("triggerRelease",0)),this}triggerAttackRelease(e,t,n=1){return t=this.toSeconds(t),e=this.toSeconds(e),this.triggerAttack(t,n),this.triggerRelease(t+e),this}dispose(){return super.dispose(),this.noise.dispose(),this.envelope.dispose(),this}}const va=new Set;function ya(s){va.add(s)}function cu(s,e){const t=`registerProcessor("${s}", ${e})`;va.add(t)}function Ug(){return Array.from(va).join(`
19
- `)}class wo extends ${constructor(e){super(e),this.name="ToneAudioWorklet",this.workletOptions={},this.onprocessorerror=_e;const t=URL.createObjectURL(new Blob([Ug()],{type:"text/javascript"})),n=this._audioWorkletName();this._dummyGain=this.context.createGain(),this._dummyParam=this._dummyGain.gain,this.context.addAudioWorkletModule(t).then(()=>{this.disposed||(this._worklet=this.context.createAudioWorkletNode(n,this.workletOptions),this._worklet.onprocessorerror=this.onprocessorerror.bind(this),this.onReady(this._worklet))})}dispose(){return super.dispose(),this._dummyGain.disconnect(),this._worklet&&(this._worklet.port.postMessage("dispose"),this._worklet.disconnect()),this}}const Kg=`
20
- /**
21
- * The base AudioWorkletProcessor for use in Tone.js. Works with the {@link ToneAudioWorklet}.
22
- */
23
- class ToneAudioWorkletProcessor extends AudioWorkletProcessor {
24
-
25
- constructor(options) {
26
-
27
- super(options);
28
- /**
29
- * If the processor was disposed or not. Keep alive until it's disposed.
30
- */
31
- this.disposed = false;
32
- /**
33
- * The number of samples in the processing block
34
- */
35
- this.blockSize = 128;
36
- /**
37
- * the sample rate
38
- */
39
- this.sampleRate = sampleRate;
40
-
41
- this.port.onmessage = (event) => {
42
- // when it receives a dispose
43
- if (event.data === "dispose") {
44
- this.disposed = true;
45
- }
46
- };
47
- }
48
- }
49
- `;ya(Kg);const Qg=`
50
- /**
51
- * Abstract class for a single input/output processor.
52
- * has a 'generate' function which processes one sample at a time
53
- */
54
- class SingleIOProcessor extends ToneAudioWorkletProcessor {
55
-
56
- constructor(options) {
57
- super(Object.assign(options, {
58
- numberOfInputs: 1,
59
- numberOfOutputs: 1
60
- }));
61
- /**
62
- * Holds the name of the parameter and a single value of that
63
- * parameter at the current sample
64
- * @type { [name: string]: number }
65
- */
66
- this.params = {}
67
- }
68
-
69
- /**
70
- * Generate an output sample from the input sample and parameters
71
- * @abstract
72
- * @param input number
73
- * @param channel number
74
- * @param parameters { [name: string]: number }
75
- * @returns number
76
- */
77
- generate(){}
78
-
79
- /**
80
- * Update the private params object with the
81
- * values of the parameters at the given index
82
- * @param parameters { [name: string]: Float32Array },
83
- * @param index number
84
- */
85
- updateParams(parameters, index) {
86
- for (const paramName in parameters) {
87
- const param = parameters[paramName];
88
- if (param.length > 1) {
89
- this.params[paramName] = parameters[paramName][index];
90
- } else {
91
- this.params[paramName] = parameters[paramName][0];
92
- }
93
- }
94
- }
95
-
96
- /**
97
- * Process a single frame of the audio
98
- * @param inputs Float32Array[][]
99
- * @param outputs Float32Array[][]
100
- */
101
- process(inputs, outputs, parameters) {
102
- const input = inputs[0];
103
- const output = outputs[0];
104
- // get the parameter values
105
- const channelCount = Math.max(input && input.length || 0, output.length);
106
- for (let sample = 0; sample < this.blockSize; sample++) {
107
- this.updateParams(parameters, sample);
108
- for (let channel = 0; channel < channelCount; channel++) {
109
- const inputSample = input && input.length ? input[channel][sample] : 0;
110
- output[channel][sample] = this.generate(inputSample, channel, this.params);
111
- }
112
- }
113
- return !this.disposed;
114
- }
115
- };
116
- `;ya(Qg);const Jg=`
117
- /**
118
- * A multichannel buffer for use within an AudioWorkletProcessor as a delay line
119
- */
120
- class DelayLine {
121
-
122
- constructor(size, channels) {
123
- this.buffer = [];
124
- this.writeHead = []
125
- this.size = size;
126
-
127
- // create the empty channels
128
- for (let i = 0; i < channels; i++) {
129
- this.buffer[i] = new Float32Array(this.size);
130
- this.writeHead[i] = 0;
131
- }
132
- }
133
-
134
- /**
135
- * Push a value onto the end
136
- * @param channel number
137
- * @param value number
138
- */
139
- push(channel, value) {
140
- this.writeHead[channel] += 1;
141
- if (this.writeHead[channel] > this.size) {
142
- this.writeHead[channel] = 0;
143
- }
144
- this.buffer[channel][this.writeHead[channel]] = value;
145
- }
146
-
147
- /**
148
- * Get the recorded value of the channel given the delay
149
- * @param channel number
150
- * @param delay number delay samples
151
- */
152
- get(channel, delay) {
153
- let readHead = this.writeHead[channel] - Math.floor(delay);
154
- if (readHead < 0) {
155
- readHead += this.size;
156
- }
157
- return this.buffer[channel][readHead];
158
- }
159
- }
160
- `;ya(Jg);const lu="feedback-comb-filter",e_=`
161
- class FeedbackCombFilterWorklet extends SingleIOProcessor {
162
-
163
- constructor(options) {
164
- super(options);
165
- this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2);
166
- }
167
-
168
- static get parameterDescriptors() {
169
- return [{
170
- name: "delayTime",
171
- defaultValue: 0.1,
172
- minValue: 0,
173
- maxValue: 1,
174
- automationRate: "k-rate"
175
- }, {
176
- name: "feedback",
177
- defaultValue: 0.5,
178
- minValue: 0,
179
- maxValue: 0.9999,
180
- automationRate: "k-rate"
181
- }];
182
- }
183
-
184
- generate(input, channel, parameters) {
185
- const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate);
186
- this.delayLine.push(channel, input + delayedSample * parameters.feedback);
187
- return delayedSample;
188
- }
189
- }
190
- `;cu(lu,e_);class gi extends wo{constructor(){const e=F(gi.getDefaults(),arguments,["delayTime","resonance"]);super(e),this.name="FeedbackCombFilter",this.input=new Y({context:this.context}),this.output=new Y({context:this.context}),this.delayTime=new ae({context:this.context,value:e.delayTime,units:"time",minValue:0,maxValue:1,param:this._dummyParam,swappable:!0}),this.resonance=new ae({context:this.context,value:e.resonance,units:"normalRange",param:this._dummyParam,swappable:!0}),ne(this,["resonance","delayTime"])}_audioWorkletName(){return lu}static getDefaults(){return Object.assign($.getDefaults(),{delayTime:.1,resonance:.5})}onReady(e){Nt(this.input,e,this.output);const t=e.parameters.get("delayTime");this.delayTime.setParam(t);const n=e.parameters.get("feedback");this.resonance.setParam(n)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.delayTime.dispose(),this.resonance.dispose(),this}}class _i extends ${constructor(){const e=F(_i.getDefaults(),arguments,["frequency","type"]);super(e),this.name="OnePoleFilter",this._frequency=e.frequency,this._type=e.type,this.input=new Y({context:this.context}),this.output=new Y({context:this.context}),this._createFilter()}static getDefaults(){return Object.assign($.getDefaults(),{frequency:880,type:"lowpass"})}_createFilter(){const e=this._filter,t=this.toFrequency(this._frequency),n=1/(2*Math.PI*t);if(this._type==="lowpass"){const i=1/(n*this.context.sampleRate),r=i-1;this._filter=this.context.createIIRFilter([i,0],[1,r])}else{const i=1/(n*this.context.sampleRate)-1;this._filter=this.context.createIIRFilter([1,-1],[1,i])}this.input.chain(this._filter,this.output),e&&this.context.setTimeout(()=>{this.disposed||(this.input.disconnect(e),e.disconnect())},this.blockTime)}get frequency(){return this._frequency}set frequency(e){this._frequency=e,this._createFilter()}get type(){return this._type}set type(e){this._type=e,this._createFilter()}getFrequencyResponse(e=128){const t=new Float32Array(e);for(let r=0;r<e;r++){const a=Math.pow(r/e,2)*19980+20;t[r]=a}const n=new Float32Array(e),i=new Float32Array(e);return this._filter.getFrequencyResponse(t,n,i),n}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this._filter.disconnect(),this}}class vi extends ${constructor(){const e=F(vi.getDefaults(),arguments,["delayTime","resonance","dampening"]);super(e),this.name="LowpassCombFilter",this._combFilter=this.output=new gi({context:this.context,delayTime:e.delayTime,resonance:e.resonance}),this.delayTime=this._combFilter.delayTime,this.resonance=this._combFilter.resonance,this._lowpass=this.input=new _i({context:this.context,frequency:e.dampening,type:"lowpass"}),this._lowpass.connect(this._combFilter)}static getDefaults(){return Object.assign($.getDefaults(),{dampening:3e3,delayTime:.1,resonance:.5})}get dampening(){return this._lowpass.frequency}set dampening(e){this._lowpass.frequency=e}dispose(){return super.dispose(),this._combFilter.dispose(),this._lowpass.dispose(),this}}class ba extends qt{constructor(){const e=F(ba.getDefaults(),arguments);super(e),this.name="PluckSynth",this._noise=new ks({context:this.context,type:"pink"}),this.attackNoise=e.attackNoise,this._lfcf=new vi({context:this.context,dampening:e.dampening,resonance:e.resonance}),this.resonance=e.resonance,this.release=e.release,this._noise.connect(this._lfcf),this._lfcf.connect(this.output)}static getDefaults(){return Bt(qt.getDefaults(),{attackNoise:1,dampening:4e3,resonance:.7,release:1})}get dampening(){return this._lfcf.dampening}set dampening(e){this._lfcf.dampening=e}triggerAttack(e,t){const n=this.toFrequency(e);t=this.toSeconds(t);const i=1/n;return this._lfcf.delayTime.setValueAtTime(i,t),this._noise.start(t),this._noise.stop(t+i*this.attackNoise),this._lfcf.resonance.cancelScheduledValues(t),this._lfcf.resonance.setValueAtTime(this.resonance,t),this}triggerRelease(e){return this._lfcf.resonance.linearRampTo(0,this.release,e),this}dispose(){return super.dispose(),this._noise.dispose(),this._lfcf.dispose(),this}}class wa extends qt{constructor(){const e=F(wa.getDefaults(),arguments,["voice","options"]);super(e),this.name="PolySynth",this._availableVoices=[],this._activeVoices=[],this._voices=[],this._gcTimeout=-1,this._averageActiveVoices=0,this._syncedRelease=i=>this.releaseAll(i),K(!Ot(e.voice),"DEPRECATED: The polyphony count is no longer the first argument.");const t=e.voice.getDefaults();this.options=Object.assign(t,e.options),this.voice=e.voice,this.maxPolyphony=e.maxPolyphony,this._dummyVoice=this._getNextAvailableVoice();const n=this._voices.indexOf(this._dummyVoice);this._voices.splice(n,1),this._gcTimeout=this.context.setInterval(this._collectGarbage.bind(this),1)}static getDefaults(){return Object.assign(qt.getDefaults(),{maxPolyphony:32,options:{},voice:As})}get activeVoices(){return this._activeVoices.length}_makeVoiceAvailable(e){this._availableVoices.push(e);const t=this._activeVoices.findIndex(n=>n.voice===e);this._activeVoices.splice(t,1)}_getNextAvailableVoice(){if(this._availableVoices.length)return this._availableVoices.shift();if(this._voices.length<this.maxPolyphony){const e=new this.voice(Object.assign(this.options,{context:this.context,onsilence:this._makeVoiceAvailable.bind(this)}));return K(e instanceof rt,"Voice must extend Monophonic class"),e.connect(this.output),this._voices.push(e),e}else vn("Max polyphony exceeded. Note dropped.")}_collectGarbage(){if(this._averageActiveVoices=Math.max(this._averageActiveVoices*.95,this.activeVoices),this._availableVoices.length&&this._voices.length>Math.ceil(this._averageActiveVoices+1)){const e=this._availableVoices.shift(),t=this._voices.indexOf(e);this._voices.splice(t,1),this.context.isOffline||e.dispose()}}_triggerAttack(e,t,n){e.forEach(i=>{const r=new dn(this.context,i).toMidi(),o=this._getNextAvailableVoice();o&&(o.triggerAttack(i,t,n),this._activeVoices.push({midi:r,voice:o,released:!1}),this.log("triggerAttack",i,t))})}_triggerRelease(e,t){e.forEach(n=>{const i=new dn(this.context,n).toMidi(),r=this._activeVoices.find(({midi:o,released:a})=>o===i&&!a);r&&(r.voice.triggerRelease(t),r.released=!0,this.log("triggerRelease",n,t))})}_scheduleEvent(e,t,n,i){K(!this.disposed,"Synth was already disposed"),n<=this.now()?e==="attack"?this._triggerAttack(t,n,i):this._triggerRelease(t,n):this.context.setTimeout(()=>{this.disposed||this._scheduleEvent(e,t,n,i)},n-this.now())}triggerAttack(e,t,n){Array.isArray(e)||(e=[e]);const i=this.toSeconds(t);return this._scheduleEvent("attack",e,i,n),this}triggerRelease(e,t){Array.isArray(e)||(e=[e]);const n=this.toSeconds(t);return this._scheduleEvent("release",e,n),this}triggerAttackRelease(e,t,n,i){const r=this.toSeconds(n);if(this.triggerAttack(e,r,i),ot(t)){K(ot(e),"If the duration is an array, the notes must also be an array"),e=e;for(let o=0;o<e.length;o++){const a=t[Math.min(o,t.length-1)],c=this.toSeconds(a);K(c>0,"The duration must be greater than 0"),this.triggerRelease(e[o],r+c)}}else{const o=this.toSeconds(t);K(o>0,"The duration must be greater than 0"),this.triggerRelease(e,r+o)}return this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1),this.context.transport.on("stop",this._syncedRelease),this.context.transport.on("pause",this._syncedRelease),this.context.transport.on("loopEnd",this._syncedRelease)),this}set(e){const t=it(e,["onsilence","context"]);return this.options=Bt(this.options,t),this._voices.forEach(n=>n.set(t)),this._dummyVoice.set(t),this}get(){return this._dummyVoice.get()}releaseAll(e){const t=this.toSeconds(e);return this._activeVoices.forEach(({voice:n})=>{n.triggerRelease(t)}),this}dispose(){return super.dispose(),this._dummyVoice.dispose(),this._voices.forEach(e=>e.dispose()),this._activeVoices=[],this._availableVoices=[],this.context.clearInterval(this._gcTimeout),this}}class yi extends qt{constructor(){const e=F(yi.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");super(e),this.name="Sampler",this._activeSources=new Map;const t={};Object.keys(e.urls).forEach(n=>{const i=parseInt(n,10);if(K(Ln(n)||Ot(i)&&isFinite(i),`url key is neither a note or midi pitch: ${n}`),Ln(n)){const r=new vt(this.context,n).toMidi();t[r]=e.urls[n]}else Ot(i)&&isFinite(i)&&(t[i]=e.urls[i])}),this._buffers=new Cn({urls:t,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.attack=e.attack,this.release=e.release,this.curve=e.curve,this._buffers.loaded&&Promise.resolve().then(e.onload)}static getDefaults(){return Object.assign(qt.getDefaults(),{attack:0,baseUrl:"",curve:"exponential",onload:_e,onerror:_e,release:.1,urls:{}})}_findClosest(e){let n=0;for(;n<96;){if(this._buffers.has(e+n))return-n;if(this._buffers.has(e-n))return n;n++}throw new Error(`No available buffers for note: ${e}`)}triggerAttack(e,t,n=1){return this.log("triggerAttack",e,t,n),Array.isArray(e)||(e=[e]),e.forEach(i=>{const r=nu(new vt(this.context,i).toFrequency()),o=Math.round(r),a=r-o,c=this._findClosest(o),l=o-c,u=this._buffers.get(l),h=un(c+a),p=new Es({url:u,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:h}).connect(this.output);p.start(t,0,u.duration/h,n),ot(this._activeSources.get(o))||this._activeSources.set(o,[]),this._activeSources.get(o).push(p),p.onended=()=>{if(this._activeSources&&this._activeSources.has(o)){const d=this._activeSources.get(o),f=d.indexOf(p);f!==-1&&d.splice(f,1)}}}),this}triggerRelease(e,t){return this.log("triggerRelease",e,t),Array.isArray(e)||(e=[e]),e.forEach(n=>{const i=new vt(this.context,n).toMidi();if(this._activeSources.has(i)&&this._activeSources.get(i).length){const r=this._activeSources.get(i);t=this.toSeconds(t),r.forEach(o=>{o.stop(t)}),this._activeSources.set(i,[])}}),this}releaseAll(e){const t=this.toSeconds(e);return this._activeSources.forEach(n=>{for(;n.length;)n.shift().stop(t)}),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}triggerAttackRelease(e,t,n,i=1){const r=this.toSeconds(n);return this.triggerAttack(e,r,i),ot(t)?(K(ot(e),"notes must be an array when duration is array"),e.forEach((o,a)=>{const c=t[Math.min(a,t.length-1)];this.triggerRelease(o,r+this.toSeconds(c))})):this.triggerRelease(e,r+this.toSeconds(t)),this}add(e,t,n){if(K(Ln(e)||isFinite(e),`note must be a pitch or midi: ${e}`),Ln(e)){const i=new vt(this.context,e).toMidi();this._buffers.add(i,t,n)}else this._buffers.add(e,t,n);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(t=>t.dispose())}),this._activeSources.clear(),this}}Yt([_s(0)],yi.prototype,"attack",void 0);Yt([_s(0)],yi.prototype,"release",void 0);class Jt extends nt{constructor(){const e=F(Jt.getDefaults(),arguments,["callback","value"]);super(e),this.name="ToneEvent",this._state=new wn("stopped"),this._startOffset=0,this._loop=e.loop,this.callback=e.callback,this.value=e.value,this._loopStart=this.toTicks(e.loopStart),this._loopEnd=this.toTicks(e.loopEnd),this._playbackRate=e.playbackRate,this._probability=e.probability,this._humanize=e.humanize,this.mute=e.mute,this._playbackRate=e.playbackRate,this._state.increasing=!0,this._rescheduleEvents()}static getDefaults(){return Object.assign(nt.getDefaults(),{callback:_e,humanize:!1,loop:!1,loopEnd:"1m",loopStart:0,mute:!1,playbackRate:1,probability:1,value:null})}_rescheduleEvents(e=-1){this._state.forEachFrom(e,t=>{let n;if(t.state==="started"){t.id!==-1&&this.context.transport.clear(t.id);const i=t.time+Math.round(this.startOffset/this._playbackRate);if(this._loop===!0||Ot(this._loop)&&this._loop>1){n=1/0,Ot(this._loop)&&(n=this._loop*this._getLoopDuration());const r=this._state.getAfter(i);r!==null&&(n=Math.min(n,r.time-i)),n!==1/0&&(n=new Oe(this.context,n));const o=new Oe(this.context,this._getLoopDuration());t.id=this.context.transport.scheduleRepeat(this._tick.bind(this),o,new Oe(this.context,i),n)}else t.id=this.context.transport.schedule(this._tick.bind(this),new Oe(this.context,i))}})}get state(){return this._state.getValueAtTime(this.context.transport.ticks)}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e}get probability(){return this._probability}set probability(e){this._probability=e}get humanize(){return this._humanize}set humanize(e){this._humanize=e}start(e){const t=this.toTicks(e);return this._state.getValueAtTime(t)==="stopped"&&(this._state.add({id:-1,state:"started",time:t}),this._rescheduleEvents(t)),this}stop(e){this.cancel(e);const t=this.toTicks(e);if(this._state.getValueAtTime(t)==="started"){this._state.setStateAtTime("stopped",t,{id:-1});const n=this._state.getBefore(t);let i=t;n!==null&&(i=n.time),this._rescheduleEvents(i)}return this}cancel(e){e=$t(e,-1/0);const t=this.toTicks(e);return this._state.forEachFrom(t,n=>{this.context.transport.clear(n.id)}),this._state.cancel(t),this}_tick(e){const t=this.context.transport.getTicksAtTime(e);if(!this.mute&&this._state.getValueAtTime(t)==="started"){if(this.probability<1&&Math.random()>this.probability)return;if(this.humanize){let n=.02;Uo(this.humanize)||(n=this.toSeconds(this.humanize)),e+=(Math.random()*2-1)*n}this.callback(e,this.value)}}_getLoopDuration(){return(this._loopEnd-this._loopStart)/this._playbackRate}get loop(){return this._loop}set loop(e){this._loop=e,this._rescheduleEvents()}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._rescheduleEvents()}get loopEnd(){return new Oe(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._rescheduleEvents()}get loopStart(){return new Oe(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._rescheduleEvents()}get progress(){if(this._loop){const e=this.context.transport.ticks,t=this._state.get(e);if(t!==null&&t.state==="started"){const n=this._getLoopDuration();return(e-t.time)%n/n}else return 0}else return 0}dispose(){return super.dispose(),this.cancel(),this._state.dispose(),this}}class Qn extends nt{constructor(){const e=F(Qn.getDefaults(),arguments,["callback","interval"]);super(e),this.name="Loop",this._event=new Jt({context:this.context,callback:this._tick.bind(this),loop:!0,loopEnd:e.interval,playbackRate:e.playbackRate,probability:e.probability,humanize:e.humanize}),this.callback=e.callback,this.iterations=e.iterations}static getDefaults(){return Object.assign(nt.getDefaults(),{interval:"4n",callback:_e,playbackRate:1,iterations:1/0,probability:1,mute:!1,humanize:!1})}start(e){return this._event.start(e),this}stop(e){return this._event.stop(e),this}cancel(e){return this._event.cancel(e),this}_tick(e){this.callback(e)}get state(){return this._event.state}get progress(){return this._event.progress}get interval(){return this._event.loopEnd}set interval(e){this._event.loopEnd=e}get playbackRate(){return this._event.playbackRate}set playbackRate(e){this._event.playbackRate=e}get humanize(){return this._event.humanize}set humanize(e){this._event.humanize=e}get probability(){return this._event.probability}set probability(e){this._event.probability=e}get mute(){return this._event.mute}set mute(e){this._event.mute=e}get iterations(){return this._event.loop===!0?1/0:this._event.loop}set iterations(e){e===1/0?this._event.loop=!0:this._event.loop=e}dispose(){return super.dispose(),this._event.dispose(),this}}class Jn extends Jt{constructor(){const e=F(Jn.getDefaults(),arguments,["callback","events"]);super(e),this.name="Part",this._state=new wn("stopped"),this._events=new Set,this._state.increasing=!0,e.events.forEach(t=>{ot(t)?this.add(t[0],t[1]):this.add(t)})}static getDefaults(){return Object.assign(Jt.getDefaults(),{events:[]})}start(e,t){const n=this.toTicks(e);if(this._state.getValueAtTime(n)!=="started"){t=$t(t,this._loop?this._loopStart:0),this._loop?t=$t(t,this._loopStart):t=$t(t,0);const i=this.toTicks(t);this._state.add({id:-1,offset:i,state:"started",time:n}),this._forEach(r=>{this._startNote(r,n,i)})}return this}_startNote(e,t,n){t-=n,this._loop?e.startOffset>=this._loopStart&&e.startOffset<this._loopEnd?(e.startOffset<n&&(t+=this._getLoopDuration()),e.start(new Oe(this.context,t))):e.startOffset<this._loopStart&&e.startOffset>=n&&(e.loop=!1,e.start(new Oe(this.context,t))):e.startOffset>=n&&e.start(new Oe(this.context,t))}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e,this._forEach(t=>{t.startOffset+=this._startOffset})}stop(e){const t=this.toTicks(e);return this._state.cancel(t),this._state.setStateAtTime("stopped",t),this._forEach(n=>{n.stop(e)}),this}at(e,t){const n=new Xe(this.context,e).toTicks(),i=new Oe(this.context,1).toSeconds(),r=this._events.values();let o=r.next();for(;!o.done;){const a=o.value;if(Math.abs(n-a.startOffset)<i)return de(t)&&(a.value=t),a;o=r.next()}return de(t)?(this.add(e,t),this.at(e)):null}add(e,t){e instanceof Object&&Reflect.has(e,"time")&&(t=e,e=t.time);const n=this.toTicks(e);let i;return t instanceof Jt?(i=t,i.callback=this._tick.bind(this)):i=new Jt({callback:this._tick.bind(this),context:this.context,value:t}),i.startOffset=n,i.set({humanize:this.humanize,loop:this.loop,loopEnd:this.loopEnd,loopStart:this.loopStart,playbackRate:this.playbackRate,probability:this.probability}),this._events.add(i),this._restartEvent(i),this}_restartEvent(e){this._state.forEach(t=>{t.state==="started"?this._startNote(e,t.time,t.offset):e.stop(new Oe(this.context,t.time))})}remove(e,t){return ps(e)&&e.hasOwnProperty("time")&&(t=e,e=t.time),e=this.toTicks(e),this._events.forEach(n=>{n.startOffset===e&&(Tt(t)||de(t)&&n.value===t)&&(this._events.delete(n),n.dispose())}),this}clear(){return this._forEach(e=>e.dispose()),this._events.clear(),this}cancel(e){return this._forEach(t=>t.cancel(e)),this._state.cancel(this.toTicks(e)),this}_forEach(e){return this._events&&this._events.forEach(t=>{t instanceof Jn?t._forEach(e):e(t)}),this}_setAll(e,t){this._forEach(n=>{n[e]=t})}_tick(e,t){this.mute||this.callback(e,t)}_testLoopBoundries(e){this._loop&&(e.startOffset<this._loopStart||e.startOffset>=this._loopEnd)?e.cancel(0):e.state==="stopped"&&this._restartEvent(e)}get probability(){return this._probability}set probability(e){this._probability=e,this._setAll("probability",e)}get humanize(){return this._humanize}set humanize(e){this._humanize=e,this._setAll("humanize",e)}get loop(){return this._loop}set loop(e){this._loop=e,this._forEach(t=>{t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.loop=e,this._testLoopBoundries(t)})}get loopEnd(){return new Oe(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._forEach(t=>{t.loopEnd=e,this._testLoopBoundries(t)})}get loopStart(){return new Oe(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._forEach(t=>{t.loopStart=this.loopStart,this._testLoopBoundries(t)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._setAll("playbackRate",e)}get length(){return this._events.size}dispose(){return super.dispose(),this.clear(),this}}function*t_(s){let e=0;for(;e<s;)e=qs(e,0,s-1),yield e,e++}function*s_(s){let e=s-1;for(;e>=0;)e=qs(e,0,s-1),yield e,e--}function*Wn(s,e){for(;;)yield*e(s)}function*hc(s,e){let t=e?0:s-1;for(;;)t=qs(t,0,s-1),yield t,e?(t++,t>=s-1&&(e=!1)):(t--,t<=0&&(e=!0))}function*n_(s){let e=0,t=0;for(;e<s;)e=qs(e,0,s-1),yield e,t++,e+=t%2?2:-1}function*i_(s){let e=s-1,t=0;for(;e>=0;)e=qs(e,0,s-1),yield e,t++,e+=t%2?-2:1}function*r_(s){for(;;)yield Math.floor(Math.random()*s)}function*o_(s){const e=[];for(let t=0;t<s;t++)e.push(t);for(;e.length>0;){const t=e.splice(Math.floor(e.length*Math.random()),1);yield qs(t[0],0,s-1)}}function*a_(s){let e=Math.floor(Math.random()*s);for(;;)e===0?e++:e===s-1||Math.random()<.5?e--:e++,yield e}function*dc(s,e="up",t=0){switch(K(s>=1,"The number of values must be at least one"),e){case"up":yield*Wn(s,t_);case"down":yield*Wn(s,s_);case"upDown":yield*hc(s,!0);case"downUp":yield*hc(s,!1);case"alternateUp":yield*Wn(s,n_);case"alternateDown":yield*Wn(s,i_);case"random":yield*r_(s);case"randomOnce":yield*Wn(s,o_);case"randomWalk":yield*a_(s)}}class xa extends Qn{constructor(){const e=F(xa.getDefaults(),arguments,["callback","values","pattern"]);super(e),this.name="Pattern",this.callback=e.callback,this._values=e.values,this._pattern=dc(e.values.length,e.pattern),this._type=e.pattern}static getDefaults(){return Object.assign(Qn.getDefaults(),{pattern:"up",values:[],callback:_e})}_tick(e){const t=this._pattern.next();this._index=t.value,this._value=this._values[t.value],this.callback(e,this._value)}get values(){return this._values}set values(e){this._values=e,this.pattern=this._type}get value(){return this._value}get index(){return this._index}get pattern(){return this._type}set pattern(e){this._type=e,this._pattern=dc(this._values.length,this._type)}}class Ca extends Jt{constructor(){const e=F(Ca.getDefaults(),arguments,["callback","events","subdivision"]);super(e),this.name="Sequence",this._part=new Jn({callback:this._seqCallback.bind(this),context:this.context}),this._events=[],this._eventsArray=[],this._subdivision=this.toTicks(e.subdivision),this.events=e.events,this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.playbackRate=e.playbackRate,this.probability=e.probability,this.humanize=e.humanize,this.mute=e.mute,this.playbackRate=e.playbackRate}static getDefaults(){return Object.assign(it(Jt.getDefaults(),["value"]),{events:[],loop:!0,loopEnd:0,loopStart:0,subdivision:"8n"})}_seqCallback(e,t){t!==null&&!this.mute&&this.callback(e,t)}get events(){return this._events}set events(e){this.clear(),this._eventsArray=e,this._events=this._createSequence(this._eventsArray),this._eventsUpdated()}start(e,t){return this._part.start(e,t&&this._indexTime(t)),this}stop(e){return this._part.stop(e),this}get subdivision(){return new Oe(this.context,this._subdivision).toSeconds()}_createSequence(e){return new Proxy(e,{get:(t,n)=>t[n],set:(t,n,i)=>(Xt(n)&&isFinite(parseInt(n,10))&&ot(i)?t[n]=this._createSequence(i):t[n]=i,this._eventsUpdated(),!0)})}_eventsUpdated(){this._part.clear(),this._rescheduleSequence(this._eventsArray,this._subdivision,this.startOffset),this.loopEnd=this.loopEnd}_rescheduleSequence(e,t,n){e.forEach((i,r)=>{const o=r*t+n;if(ot(i))this._rescheduleSequence(i,t/i.length,o);else{const a=new Oe(this.context,o,"i").toSeconds();this._part.add(a,i)}})}_indexTime(e){return new Oe(this.context,e*this._subdivision+this.startOffset).toSeconds()}clear(){return this._part.clear(),this}dispose(){return super.dispose(),this._part.dispose(),this}get loop(){return this._part.loop}set loop(e){this._part.loop=e}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this._part.loopStart=this._indexTime(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,e===0?this._part.loopEnd=this._indexTime(this._eventsArray.length):this._part.loopEnd=this._indexTime(e)}get startOffset(){return this._part.startOffset}set startOffset(e){this._part.startOffset=e}get playbackRate(){return this._part.playbackRate}set playbackRate(e){this._part.playbackRate=e}get probability(){return this._part.probability}set probability(e){this._part.probability=e}get progress(){return this._part.progress}get humanize(){return this._part.humanize}set humanize(e){this._part.humanize=e}get length(){return this._part.length}}class In extends ${constructor(){const e=F(In.getDefaults(),arguments,["fade"]);super(e),this.name="CrossFade",this._panner=this.context.createStereoPanner(),this._split=this.context.createChannelSplitter(2),this._g2a=new au({context:this.context}),this.a=new Y({context:this.context,gain:0}),this.b=new Y({context:this.context,gain:0}),this.output=new Y({context:this.context}),this._internalChannels=[this.a,this.b],this.fade=new re({context:this.context,units:"normalRange",value:e.fade}),ne(this,"fade"),this.context.getConstant(1).connect(this._panner),this._panner.connect(this._split),this._panner.channelCount=1,this._panner.channelCountMode="explicit",pt(this._split,this.a.gain,0),pt(this._split,this.b.gain,1),this.fade.chain(this._g2a,this._panner.pan),this.a.connect(this.output),this.b.connect(this.output)}static getDefaults(){return Object.assign($.getDefaults(),{fade:.5})}dispose(){return super.dispose(),this.a.dispose(),this.b.dispose(),this.output.dispose(),this.fade.dispose(),this._g2a.dispose(),this._panner.disconnect(),this._split.disconnect(),this}}class Ke extends ${constructor(e){super(e),this.name="Effect",this._dryWet=new In({context:this.context}),this.wet=this._dryWet.fade,this.effectSend=new Y({context:this.context}),this.effectReturn=new Y({context:this.context}),this.input=new Y({context:this.context}),this.output=this._dryWet,this.input.fan(this._dryWet.a,this.effectSend),this.effectReturn.connect(this._dryWet.b),this.wet.setValueAtTime(e.wet,0),this._internalChannels=[this.effectReturn,this.effectSend],ne(this,"wet")}static getDefaults(){return Object.assign($.getDefaults(),{wet:1})}connectEffect(e){return this._internalChannels.push(e),this.effectSend.chain(e,this.effectReturn),this}dispose(){return super.dispose(),this._dryWet.dispose(),this.effectSend.dispose(),this.effectReturn.dispose(),this.wet.dispose(),this}}class Ki extends Ke{constructor(e){super(e),this.name="LFOEffect",this._lfo=new yt({context:this.context,frequency:e.frequency,amplitude:e.depth}),this.depth=this._lfo.amplitude,this.frequency=this._lfo.frequency,this.type=e.type,ne(this,["frequency","depth"])}static getDefaults(){return Object.assign(Ke.getDefaults(),{frequency:1,type:"sine",depth:1})}start(e){return this._lfo.start(e),this}stop(e){return this._lfo.stop(e),this}sync(){return this._lfo.sync(),this}unsync(){return this._lfo.unsync(),this}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class br extends Ki{constructor(){const e=F(br.getDefaults(),arguments,["frequency","baseFrequency","octaves"]);super(e),this.name="AutoFilter",this.filter=new Rt(Object.assign(e.filter,{context:this.context})),this.connectEffect(this.filter),this._lfo.connect(this.filter.frequency),this.octaves=e.octaves,this.baseFrequency=e.baseFrequency}static getDefaults(){return Object.assign(Ki.getDefaults(),{baseFrequency:200,octaves:2.6,filter:{type:"lowpass",rolloff:-12,Q:1}})}get baseFrequency(){return this._lfo.min}set baseFrequency(e){this._lfo.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._lfo.max=this._lfo.min*Math.pow(2,e)}dispose(){return super.dispose(),this.filter.dispose(),this}}class Dn extends ${constructor(){const e=F(Dn.getDefaults(),arguments,["pan"]);super(e),this.name="Panner",this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner,this.pan=new ae({context:this.context,param:this._panner.pan,value:e.pan,minValue:-1,maxValue:1}),this._panner.channelCount=e.channelCount,this._panner.channelCountMode="explicit",ne(this,"pan")}static getDefaults(){return Object.assign($.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}}class wr extends Ki{constructor(){const e=F(wr.getDefaults(),arguments,["frequency"]);super(e),this.name="AutoPanner",this._panner=new Dn({context:this.context,channelCount:e.channelCount}),this.connectEffect(this._panner),this._lfo.connect(this._panner.pan),this._lfo.min=-1,this._lfo.max=1}static getDefaults(){return Object.assign(Ki.getDefaults(),{channelCount:1})}dispose(){return super.dispose(),this._panner.dispose(),this}}class bi extends ${constructor(){const e=F(bi.getDefaults(),arguments,["smoothing"]);super(e),this.name="Follower",this._abs=this.input=new ou({context:this.context}),this._lowpass=this.output=new _i({context:this.context,frequency:1/this.toSeconds(e.smoothing),type:"lowpass"}),this._abs.connect(this._lowpass),this._smoothing=e.smoothing}static getDefaults(){return Object.assign($.getDefaults(),{smoothing:.05})}get smoothing(){return this._smoothing}set smoothing(e){this._smoothing=e,this._lowpass.frequency=1/this.toSeconds(this.smoothing)}dispose(){return super.dispose(),this._abs.dispose(),this._lowpass.dispose(),this}}class xr extends Ke{constructor(){const e=F(xr.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"]);super(e),this.name="AutoWah",this._follower=new bi({context:this.context,smoothing:e.follower}),this._sweepRange=new yr({context:this.context,min:0,max:1,exponent:.5}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this._inputBoost=new Y({context:this.context}),this._bandpass=new Rt({context:this.context,rolloff:-48,frequency:0,Q:e.Q}),this._peaking=new Rt({context:this.context,type:"peaking"}),this._peaking.gain.value=e.gain,this.gain=this._peaking.gain,this.Q=this._bandpass.Q,this.effectSend.chain(this._inputBoost,this._follower,this._sweepRange),this._sweepRange.connect(this._bandpass.frequency),this._sweepRange.connect(this._peaking.frequency),this.effectSend.chain(this._bandpass,this._peaking,this.effectReturn),this._setSweepRange(),this.sensitivity=e.sensitivity,ne(this,["gain","Q"])}static getDefaults(){return Object.assign(Ke.getDefaults(),{baseFrequency:100,octaves:6,sensitivity:0,Q:2,gain:2,follower:.2})}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._setSweepRange()}get follower(){return this._follower.smoothing}set follower(e){this._follower.smoothing=e}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){this._baseFrequency=this.toFrequency(e),this._setSweepRange()}get sensitivity(){return li(1/this._inputBoost.gain.value)}set sensitivity(e){this._inputBoost.gain.value=1/ln(e)}_setSweepRange(){this._sweepRange.min=this._baseFrequency,this._sweepRange.max=Math.min(this._baseFrequency*Math.pow(2,this._octaves),this.context.sampleRate/2)}dispose(){return super.dispose(),this._follower.dispose(),this._sweepRange.dispose(),this._bandpass.dispose(),this._peaking.dispose(),this._inputBoost.dispose(),this}}const uu="bit-crusher",c_=`
191
- class BitCrusherWorklet extends SingleIOProcessor {
192
-
193
- static get parameterDescriptors() {
194
- return [{
195
- name: "bits",
196
- defaultValue: 12,
197
- minValue: 1,
198
- maxValue: 16,
199
- automationRate: 'k-rate'
200
- }];
201
- }
202
-
203
- generate(input, _channel, parameters) {
204
- const step = Math.pow(0.5, parameters.bits - 1);
205
- const val = step * Math.floor(input / step + 0.5);
206
- return val;
207
- }
208
- }
209
- `;cu(uu,c_);class Cr extends Ke{constructor(){const e=F(Cr.getDefaults(),arguments,["bits"]);super(e),this.name="BitCrusher",this._bitCrusherWorklet=new Sa({context:this.context,bits:e.bits}),this.connectEffect(this._bitCrusherWorklet),this.bits=this._bitCrusherWorklet.bits}static getDefaults(){return Object.assign(Ke.getDefaults(),{bits:4})}dispose(){return super.dispose(),this._bitCrusherWorklet.dispose(),this}}class Sa extends wo{constructor(){const e=F(Sa.getDefaults(),arguments);super(e),this.name="BitCrusherWorklet",this.input=new Y({context:this.context}),this.output=new Y({context:this.context}),this.bits=new ae({context:this.context,value:e.bits,units:"positive",minValue:1,maxValue:16,param:this._dummyParam,swappable:!0})}static getDefaults(){return Object.assign(wo.getDefaults(),{bits:12})}_audioWorkletName(){return uu}onReady(e){Nt(this.input,e,this.output);const t=e.parameters.get("bits");this.bits.setParam(t)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.bits.dispose(),this}}class Sr extends Ke{constructor(){const e=F(Sr.getDefaults(),arguments,["order"]);super(e),this.name="Chebyshev",this._shaper=new Kt({context:this.context,length:4096}),this._order=e.order,this.connectEffect(this._shaper),this.order=e.order,this.oversample=e.oversample}static getDefaults(){return Object.assign(Ke.getDefaults(),{order:1,oversample:"none"})}_getCoefficient(e,t,n){return n.has(t)||(t===0?n.set(t,0):t===1?n.set(t,e):n.set(t,2*e*this._getCoefficient(e,t-1,n)-this._getCoefficient(e,t-2,n))),n.get(t)}get order(){return this._order}set order(e){K(Number.isInteger(e),"'order' must be an integer"),this._order=e,this._shaper.setMap(t=>this._getCoefficient(t,e,new Map))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class Xs extends ${constructor(){const e=F(Xs.getDefaults(),arguments,["channels"]);super(e),this.name="Split",this._splitter=this.input=this.output=this.context.createChannelSplitter(e.channels),this._internalChannels=[this._splitter]}static getDefaults(){return Object.assign($.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._splitter.disconnect(),this}}class Ms extends ${constructor(){const e=F(Ms.getDefaults(),arguments,["channels"]);super(e),this.name="Merge",this._merger=this.output=this.input=this.context.createChannelMerger(e.channels)}static getDefaults(){return Object.assign($.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._merger.disconnect(),this}}class ts extends ${constructor(e){super(e),this.name="StereoEffect",this.input=new Y({context:this.context}),this.input.channelCount=2,this.input.channelCountMode="explicit",this._dryWet=this.output=new In({context:this.context,fade:e.wet}),this.wet=this._dryWet.fade,this._split=new Xs({context:this.context,channels:2}),this._merge=new Ms({context:this.context,channels:2}),this.input.connect(this._split),this.input.connect(this._dryWet.a),this._merge.connect(this._dryWet.b),ne(this,["wet"])}connectEffectLeft(...e){this._split.connect(e[0],0,0),Nt(...e),pt(e[e.length-1],this._merge,0,0)}connectEffectRight(...e){this._split.connect(e[0],1,0),Nt(...e),pt(e[e.length-1],this._merge,0,1)}static getDefaults(){return Object.assign($.getDefaults(),{wet:1})}dispose(){return super.dispose(),this._dryWet.dispose(),this._split.dispose(),this._merge.dispose(),this}}class xo extends ts{constructor(e){super(e),this.feedback=new re({context:this.context,value:e.feedback,units:"normalRange"}),this._feedbackL=new Y({context:this.context}),this._feedbackR=new Y({context:this.context}),this._feedbackSplit=new Xs({context:this.context,channels:2}),this._feedbackMerge=new Ms({context:this.context,channels:2}),this._merge.connect(this._feedbackSplit),this._feedbackMerge.connect(this._split),this._feedbackSplit.connect(this._feedbackL,0,0),this._feedbackL.connect(this._feedbackMerge,0,0),this._feedbackSplit.connect(this._feedbackR,1,0),this._feedbackR.connect(this._feedbackMerge,0,1),this.feedback.fan(this._feedbackL.gain,this._feedbackR.gain),ne(this,["feedback"])}static getDefaults(){return Object.assign(ts.getDefaults(),{feedback:.5})}dispose(){return super.dispose(),this.feedback.dispose(),this._feedbackL.dispose(),this._feedbackR.dispose(),this._feedbackSplit.dispose(),this._feedbackMerge.dispose(),this}}class Tr extends xo{constructor(){const e=F(Tr.getDefaults(),arguments,["frequency","delayTime","depth"]);super(e),this.name="Chorus",this._depth=e.depth,this._delayTime=e.delayTime/1e3,this._lfoL=new yt({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new yt({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._delayNodeL=new Mt({context:this.context}),this._delayNodeR=new Mt({context:this.context}),this.frequency=this._lfoL.frequency,ne(this,["frequency"]),this._lfoL.frequency.connect(this._lfoR.frequency),this.connectEffectLeft(this._delayNodeL),this.connectEffectRight(this._delayNodeR),this._lfoL.connect(this._delayNodeL.delayTime),this._lfoR.connect(this._delayNodeR.delayTime),this.depth=this._depth,this.type=e.type,this.spread=e.spread}static getDefaults(){return Object.assign(xo.getDefaults(),{frequency:1.5,delayTime:3.5,depth:.7,type:"sine",spread:180,feedback:0,wet:.5})}get depth(){return this._depth}set depth(e){this._depth=e;const t=this._delayTime*e;this._lfoL.min=Math.max(this._delayTime-t,0),this._lfoL.max=this._delayTime+t,this._lfoR.min=Math.max(this._delayTime-t,0),this._lfoR.max=this._delayTime+t}get delayTime(){return this._delayTime*1e3}set delayTime(e){this._delayTime=e/1e3,this.depth=this._depth}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._delayNodeL.dispose(),this._delayNodeR.dispose(),this.frequency.dispose(),this}}class kr extends Ke{constructor(){const e=F(kr.getDefaults(),arguments,["distortion"]);super(e),this.name="Distortion",this._shaper=new Kt({context:this.context,length:4096}),this._distortion=e.distortion,this.connectEffect(this._shaper),this.distortion=e.distortion,this.oversample=e.oversample}static getDefaults(){return Object.assign(Ke.getDefaults(),{distortion:.4,oversample:"none"})}get distortion(){return this._distortion}set distortion(e){this._distortion=e;const t=e*100,n=Math.PI/180;this._shaper.setMap(i=>Math.abs(i)<.001?0:(3+t)*i*20*n/(Math.PI+t*Math.abs(i)))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class Qi extends Ke{constructor(e){super(e),this.name="FeedbackEffect",this._feedbackGain=new Y({context:this.context,gain:e.feedback,units:"normalRange"}),this.feedback=this._feedbackGain.gain,ne(this,"feedback"),this.effectReturn.chain(this._feedbackGain,this.effectSend)}static getDefaults(){return Object.assign(Ke.getDefaults(),{feedback:.125})}dispose(){return super.dispose(),this._feedbackGain.dispose(),this.feedback.dispose(),this}}class Ar extends Qi{constructor(){const e=F(Ar.getDefaults(),arguments,["delayTime","feedback"]);super(e),this.name="FeedbackDelay",this._delayNode=new Mt({context:this.context,delayTime:e.delayTime,maxDelay:e.maxDelay}),this.delayTime=this._delayNode.delayTime,this.connectEffect(this._delayNode),ne(this,"delayTime")}static getDefaults(){return Object.assign(Qi.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._delayNode.dispose(),this.delayTime.dispose(),this}}class l_ extends ${constructor(e){super(e),this.name="PhaseShiftAllpass",this.input=new Y({context:this.context}),this.output=new Y({context:this.context}),this.offset90=new Y({context:this.context});const t=[.6923878,.9360654322959,.988229522686,.9987488452737],n=[.4021921162426,.856171088242,.9722909545651,.9952884791278];this._bank0=this._createAllPassFilterBank(t),this._bank1=this._createAllPassFilterBank(n),this._oneSampleDelay=this.context.createIIRFilter([0,1],[1,0]),Nt(this.input,...this._bank0,this._oneSampleDelay,this.output),Nt(this.input,...this._bank1,this.offset90)}_createAllPassFilterBank(e){return e.map(n=>{const i=[[n*n,0,-1],[1,0,-(n*n)]];return this.context.createIIRFilter(i[0],i[1])})}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.offset90.dispose(),this._bank0.forEach(e=>e.disconnect()),this._bank1.forEach(e=>e.disconnect()),this._oneSampleDelay.disconnect(),this}}class Ta extends Ke{constructor(){const e=F(Ta.getDefaults(),arguments,["frequency"]);super(e),this.name="FrequencyShifter",this.frequency=new re({context:this.context,units:"frequency",value:e.frequency,minValue:-this.context.sampleRate/2,maxValue:this.context.sampleRate/2}),this._sine=new hi({context:this.context,type:"sine"}),this._cosine=new Ne({context:this.context,phase:-90,type:"sine"}),this._sineMultiply=new Fe({context:this.context}),this._cosineMultiply=new Fe({context:this.context}),this._negate=new da({context:this.context}),this._add=new zs({context:this.context}),this._phaseShifter=new l_({context:this.context}),this.effectSend.connect(this._phaseShifter),this.frequency.fan(this._sine.frequency,this._cosine.frequency),this._phaseShifter.offset90.connect(this._cosineMultiply),this._cosine.connect(this._cosineMultiply.factor),this._phaseShifter.connect(this._sineMultiply),this._sine.connect(this._sineMultiply.factor),this._sineMultiply.connect(this._negate),this._cosineMultiply.connect(this._add),this._negate.connect(this._add.addend),this._add.connect(this.effectReturn);const t=this.immediate();this._sine.start(t),this._cosine.start(t)}static getDefaults(){return Object.assign(Ke.getDefaults(),{frequency:0})}dispose(){return super.dispose(),this.frequency.dispose(),this._add.dispose(),this._cosine.dispose(),this._cosineMultiply.dispose(),this._negate.dispose(),this._phaseShifter.dispose(),this._sine.dispose(),this._sineMultiply.dispose(),this}}const pc=[1557/44100,1617/44100,1491/44100,1422/44100,1277/44100,1356/44100,1188/44100,1116/44100],fc=[225,556,441,341];class Ir extends ts{constructor(){const e=F(Ir.getDefaults(),arguments,["roomSize","dampening"]);super(e),this.name="Freeverb",this._combFilters=[],this._allpassFiltersL=[],this._allpassFiltersR=[],this.roomSize=new re({context:this.context,value:e.roomSize,units:"normalRange"}),this._allpassFiltersL=fc.map(t=>{const n=this.context.createBiquadFilter();return n.type="allpass",n.frequency.value=t,n}),this._allpassFiltersR=fc.map(t=>{const n=this.context.createBiquadFilter();return n.type="allpass",n.frequency.value=t,n}),this._combFilters=pc.map((t,n)=>{const i=new vi({context:this.context,dampening:e.dampening,delayTime:t});return n<pc.length/2?this.connectEffectLeft(i,...this._allpassFiltersL):this.connectEffectRight(i,...this._allpassFiltersR),this.roomSize.connect(i.resonance),i}),ne(this,["roomSize"])}static getDefaults(){return Object.assign(ts.getDefaults(),{roomSize:.7,dampening:3e3})}get dampening(){return this._combFilters[0].dampening}set dampening(e){this._combFilters.forEach(t=>t.dampening=e)}dispose(){return super.dispose(),this._allpassFiltersL.forEach(e=>e.disconnect()),this._allpassFiltersR.forEach(e=>e.disconnect()),this._combFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this}}const mc=[1687/25e3,1601/25e3,2053/25e3,2251/25e3],u_=[.773,.802,.753,.733],h_=[347,113,37];class Dr extends ts{constructor(){const e=F(Dr.getDefaults(),arguments,["roomSize"]);super(e),this.name="JCReverb",this._allpassFilters=[],this._feedbackCombFilters=[],this.roomSize=new re({context:this.context,value:e.roomSize,units:"normalRange"}),this._scaleRoomSize=new ms({context:this.context,min:-.733,max:.197}),this._allpassFilters=h_.map(t=>{const n=this.context.createBiquadFilter();return n.type="allpass",n.frequency.value=t,n}),this._feedbackCombFilters=mc.map((t,n)=>{const i=new gi({context:this.context,delayTime:t});return this._scaleRoomSize.connect(i.resonance),i.resonance.value=u_[n],n<mc.length/2?this.connectEffectLeft(...this._allpassFilters,i):this.connectEffectRight(...this._allpassFilters,i),i}),this.roomSize.connect(this._scaleRoomSize),ne(this,["roomSize"])}static getDefaults(){return Object.assign(ts.getDefaults(),{roomSize:.5})}dispose(){return super.dispose(),this._allpassFilters.forEach(e=>e.disconnect()),this._feedbackCombFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this._scaleRoomSize.dispose(),this}}class gc extends xo{constructor(e){super(e),this._feedbackL.disconnect(),this._feedbackL.connect(this._feedbackMerge,0,1),this._feedbackR.disconnect(),this._feedbackR.connect(this._feedbackMerge,0,0),ne(this,["feedback"])}}class Rr extends gc{constructor(){const e=F(Rr.getDefaults(),arguments,["delayTime","feedback"]);super(e),this.name="PingPongDelay",this._leftDelay=new Mt({context:this.context,maxDelay:e.maxDelay}),this._rightDelay=new Mt({context:this.context,maxDelay:e.maxDelay}),this._rightPreDelay=new Mt({context:this.context,maxDelay:e.maxDelay}),this.delayTime=new re({context:this.context,units:"time",value:e.delayTime}),this.connectEffectLeft(this._leftDelay),this.connectEffectRight(this._rightPreDelay,this._rightDelay),this.delayTime.fan(this._leftDelay.delayTime,this._rightDelay.delayTime,this._rightPreDelay.delayTime),this._feedbackL.disconnect(),this._feedbackL.connect(this._rightDelay),ne(this,["delayTime"])}static getDefaults(){return Object.assign(gc.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._leftDelay.dispose(),this._rightDelay.dispose(),this._rightPreDelay.dispose(),this.delayTime.dispose(),this}}class ka extends Qi{constructor(){const e=F(ka.getDefaults(),arguments,["pitch"]);super(e),this.name="PitchShift",this._frequency=new re({context:this.context}),this._delayA=new Mt({maxDelay:1,context:this.context}),this._lfoA=new yt({context:this.context,min:0,max:.1,type:"sawtooth"}).connect(this._delayA.delayTime),this._delayB=new Mt({maxDelay:1,context:this.context}),this._lfoB=new yt({context:this.context,min:0,max:.1,type:"sawtooth",phase:180}).connect(this._delayB.delayTime),this._crossFade=new In({context:this.context}),this._crossFadeLFO=new yt({context:this.context,min:0,max:1,type:"triangle",phase:90}).connect(this._crossFade.fade),this._feedbackDelay=new Mt({delayTime:e.delayTime,context:this.context}),this.delayTime=this._feedbackDelay.delayTime,ne(this,"delayTime"),this._pitch=e.pitch,this._windowSize=e.windowSize,this._delayA.connect(this._crossFade.a),this._delayB.connect(this._crossFade.b),this._frequency.fan(this._lfoA.frequency,this._lfoB.frequency,this._crossFadeLFO.frequency),this.effectSend.fan(this._delayA,this._delayB),this._crossFade.chain(this._feedbackDelay,this.effectReturn);const t=this.now();this._lfoA.start(t),this._lfoB.start(t),this._crossFadeLFO.start(t),this.windowSize=this._windowSize}static getDefaults(){return Object.assign(Qi.getDefaults(),{pitch:0,windowSize:.1,delayTime:0,feedback:0})}get pitch(){return this._pitch}set pitch(e){this._pitch=e;let t=0;e<0?(this._lfoA.min=0,this._lfoA.max=this._windowSize,this._lfoB.min=0,this._lfoB.max=this._windowSize,t=un(e-1)+1):(this._lfoA.min=this._windowSize,this._lfoA.max=0,this._lfoB.min=this._windowSize,this._lfoB.max=0,t=un(e)-1),this._frequency.value=t*(1.2/this._windowSize)}get windowSize(){return this._windowSize}set windowSize(e){this._windowSize=this.toSeconds(e),this.pitch=this._pitch}dispose(){return super.dispose(),this._frequency.dispose(),this._delayA.dispose(),this._delayB.dispose(),this._lfoA.dispose(),this._lfoB.dispose(),this._crossFade.dispose(),this._crossFadeLFO.dispose(),this._feedbackDelay.dispose(),this}}class Er extends ts{constructor(){const e=F(Er.getDefaults(),arguments,["frequency","octaves","baseFrequency"]);super(e),this.name="Phaser",this._lfoL=new yt({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new yt({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this.Q=new re({context:this.context,value:e.Q,units:"positive"}),this._filtersL=this._makeFilters(e.stages,this._lfoL),this._filtersR=this._makeFilters(e.stages,this._lfoR),this.frequency=this._lfoL.frequency,this.frequency.value=e.frequency,this.connectEffectLeft(...this._filtersL),this.connectEffectRight(...this._filtersR),this._lfoL.frequency.connect(this._lfoR.frequency),this.baseFrequency=e.baseFrequency,this.octaves=e.octaves,this._lfoL.start(),this._lfoR.start(),ne(this,["frequency","Q"])}static getDefaults(){return Object.assign(ts.getDefaults(),{frequency:.5,octaves:3,stages:10,Q:10,baseFrequency:350})}_makeFilters(e,t){const n=[];for(let i=0;i<e;i++){const r=this.context.createBiquadFilter();r.type="allpass",this.Q.connect(r.Q),t.connect(r.frequency),n.push(r)}return n}get octaves(){return this._octaves}set octaves(e){this._octaves=e;const t=this._baseFrequency*Math.pow(2,e);this._lfoL.max=t,this._lfoR.max=t}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){this._baseFrequency=this.toFrequency(e),this._lfoL.min=this._baseFrequency,this._lfoR.min=this._baseFrequency,this.octaves=this._octaves}dispose(){return super.dispose(),this.Q.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._filtersL.forEach(e=>e.disconnect()),this._filtersR.forEach(e=>e.disconnect()),this.frequency.dispose(),this}}class Mr extends Ke{constructor(){const e=F(Mr.getDefaults(),arguments,["decay"]);super(e),this.name="Reverb",this._convolver=this.context.createConvolver(),this.ready=Promise.resolve();const t=this.toSeconds(e.decay);Ye(t,.001),this._decay=t;const n=this.toSeconds(e.preDelay);Ye(n,0),this._preDelay=n,this.generate(),this.connectEffect(this._convolver)}static getDefaults(){return Object.assign(Ke.getDefaults(),{decay:1.5,preDelay:.01})}get decay(){return this._decay}set decay(e){e=this.toSeconds(e),Ye(e,.001),this._decay=e,this.generate()}get preDelay(){return this._preDelay}set preDelay(e){e=this.toSeconds(e),Ye(e,0),this._preDelay=e,this.generate()}generate(){return ke(this,void 0,void 0,function*(){const e=this.ready,t=new bn(2,this._decay+this._preDelay,this.context.sampleRate),n=new ks({context:t}),i=new ks({context:t}),r=new Ms({context:t});n.connect(r,0,0),i.connect(r,0,1);const o=new Y({context:t}).toDestination();r.connect(o),n.start(0),i.start(0),o.gain.setValueAtTime(0,0),o.gain.setValueAtTime(1,this._preDelay),o.gain.exponentialApproachValueAtTime(0,this._preDelay,this.decay);const a=t.render();return this.ready=a.then(_e),yield e,this._convolver.buffer=(yield a).get(),this})}dispose(){return super.dispose(),this._convolver.disconnect(),this}}class wi extends ${constructor(){super(F(wi.getDefaults(),arguments)),this.name="MidSideSplit",this._split=this.input=new Xs({channels:2,context:this.context}),this._midAdd=new zs({context:this.context}),this.mid=new Fe({context:this.context,value:Math.SQRT1_2}),this._sideSubtract=new Gs({context:this.context}),this.side=new Fe({context:this.context,value:Math.SQRT1_2}),this._split.connect(this._midAdd,0),this._split.connect(this._midAdd.addend,1),this._split.connect(this._sideSubtract,0),this._split.connect(this._sideSubtract.subtrahend,1),this._midAdd.connect(this.mid),this._sideSubtract.connect(this.side)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midAdd.dispose(),this._sideSubtract.dispose(),this._split.dispose(),this}}class xi extends ${constructor(){super(F(xi.getDefaults(),arguments)),this.name="MidSideMerge",this.mid=new Y({context:this.context}),this.side=new Y({context:this.context}),this._left=new zs({context:this.context}),this._leftMult=new Fe({context:this.context,value:Math.SQRT1_2}),this._right=new Gs({context:this.context}),this._rightMult=new Fe({context:this.context,value:Math.SQRT1_2}),this._merge=this.output=new Ms({context:this.context}),this.mid.fan(this._left),this.side.connect(this._left.addend),this.mid.connect(this._right),this.side.connect(this._right.subtrahend),this._left.connect(this._leftMult),this._right.connect(this._rightMult),this._leftMult.connect(this._merge,0,0),this._rightMult.connect(this._merge,0,1)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._leftMult.dispose(),this._rightMult.dispose(),this._left.dispose(),this._right.dispose(),this}}class _c extends Ke{constructor(e){super(e),this.name="MidSideEffect",this._midSideMerge=new xi({context:this.context}),this._midSideSplit=new wi({context:this.context}),this._midSend=this._midSideSplit.mid,this._sideSend=this._midSideSplit.side,this._midReturn=this._midSideMerge.mid,this._sideReturn=this._midSideMerge.side,this.effectSend.connect(this._midSideSplit),this._midSideMerge.connect(this.effectReturn)}connectEffectMid(...e){this._midSend.chain(...e,this._midReturn)}connectEffectSide(...e){this._sideSend.chain(...e,this._sideReturn)}dispose(){return super.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this._midSend.dispose(),this._sideSend.dispose(),this._midReturn.dispose(),this._sideReturn.dispose(),this}}class Or extends _c{constructor(){const e=F(Or.getDefaults(),arguments,["width"]);super(e),this.name="StereoWidener",this.width=new re({context:this.context,value:e.width,units:"normalRange"}),ne(this,["width"]),this._twoTimesWidthMid=new Fe({context:this.context,value:2}),this._twoTimesWidthSide=new Fe({context:this.context,value:2}),this._midMult=new Fe({context:this.context}),this._twoTimesWidthMid.connect(this._midMult.factor),this.connectEffectMid(this._midMult),this._oneMinusWidth=new Gs({context:this.context}),this._oneMinusWidth.connect(this._twoTimesWidthMid),pt(this.context.getConstant(1),this._oneMinusWidth),this.width.connect(this._oneMinusWidth.subtrahend),this._sideMult=new Fe({context:this.context}),this.width.connect(this._twoTimesWidthSide),this._twoTimesWidthSide.connect(this._sideMult.factor),this.connectEffectSide(this._sideMult)}static getDefaults(){return Object.assign(_c.getDefaults(),{width:.5})}dispose(){return super.dispose(),this.width.dispose(),this._midMult.dispose(),this._sideMult.dispose(),this._twoTimesWidthMid.dispose(),this._twoTimesWidthSide.dispose(),this._oneMinusWidth.dispose(),this}}class Nr extends ts{constructor(){const e=F(Nr.getDefaults(),arguments,["frequency","depth"]);super(e),this.name="Tremolo",this._lfoL=new yt({context:this.context,type:e.type,min:1,max:0}),this._lfoR=new yt({context:this.context,type:e.type,min:1,max:0}),this._amplitudeL=new Y({context:this.context}),this._amplitudeR=new Y({context:this.context}),this.frequency=new re({context:this.context,value:e.frequency,units:"frequency"}),this.depth=new re({context:this.context,value:e.depth,units:"normalRange"}),ne(this,["frequency","depth"]),this.connectEffectLeft(this._amplitudeL),this.connectEffectRight(this._amplitudeR),this._lfoL.connect(this._amplitudeL.gain),this._lfoR.connect(this._amplitudeR.gain),this.frequency.fan(this._lfoL.frequency,this._lfoR.frequency),this.depth.fan(this._lfoR.amplitude,this._lfoL.amplitude),this.spread=e.spread}static getDefaults(){return Object.assign(ts.getDefaults(),{frequency:10,type:"sine",depth:.5,spread:180})}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this.context.transport.syncSignal(this.frequency),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this.context.transport.unsyncSignal(this.frequency),this}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._amplitudeL.dispose(),this._amplitudeR.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Fr extends Ke{constructor(){const e=F(Fr.getDefaults(),arguments,["frequency","depth"]);super(e),this.name="Vibrato",this._delayNode=new Mt({context:this.context,delayTime:0,maxDelay:e.maxDelay}),this._lfo=new yt({context:this.context,type:e.type,min:0,max:e.maxDelay,frequency:e.frequency,phase:-90}).start().connect(this._delayNode.delayTime),this.frequency=this._lfo.frequency,this.depth=this._lfo.amplitude,this.depth.value=e.depth,ne(this,["frequency","depth"]),this.effectSend.chain(this._delayNode,this.effectReturn)}static getDefaults(){return Object.assign(Ke.getDefaults(),{maxDelay:.005,frequency:5,depth:.1,type:"sine"})}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._delayNode.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Hs extends ${constructor(){const e=F(Hs.getDefaults(),arguments,["type","size"]);super(e),this.name="Analyser",this._analysers=[],this._buffers=[],this.input=this.output=this._gain=new Y({context:this.context}),this._split=new Xs({context:this.context,channels:e.channels}),this.input.connect(this._split),Ye(e.channels,1);for(let t=0;t<e.channels;t++)this._analysers[t]=this.context.createAnalyser(),this._split.connect(this._analysers[t],t,0);this.size=e.size,this.type=e.type,this.smoothing=e.smoothing}static getDefaults(){return Object.assign($.getDefaults(),{size:1024,smoothing:.8,type:"fft",channels:1})}getValue(){return this._analysers.forEach((e,t)=>{const n=this._buffers[t];this._type==="fft"?e.getFloatFrequencyData(n):this._type==="waveform"&&e.getFloatTimeDomainData(n)}),this.channels===1?this._buffers[0]:this._buffers}get size(){return this._analysers[0].frequencyBinCount}set size(e){this._analysers.forEach((t,n)=>{t.fftSize=e*2,this._buffers[n]=new Float32Array(e)})}get channels(){return this._analysers.length}get type(){return this._type}set type(e){K(e==="waveform"||e==="fft",`Analyser: invalid type: ${e}`),this._type=e}get smoothing(){return this._analysers[0].smoothingTimeConstant}set smoothing(e){this._analysers.forEach(t=>t.smoothingTimeConstant=e)}dispose(){return super.dispose(),this._analysers.forEach(e=>e.disconnect()),this._split.dispose(),this._gain.dispose(),this}}class Is extends ${constructor(){super(F(Is.getDefaults(),arguments)),this.name="MeterBase",this.input=this.output=this._analyser=new Hs({context:this.context,size:256,type:"waveform"})}dispose(){return super.dispose(),this._analyser.dispose(),this}}class Vr extends Is{constructor(){const e=F(Vr.getDefaults(),arguments,["smoothing"]);super(e),this.name="Meter",this.input=this.output=this._analyser=new Hs({context:this.context,size:256,type:"waveform",channels:e.channelCount}),this.smoothing=e.smoothing,this.normalRange=e.normalRange,this._rms=new Array(e.channelCount),this._rms.fill(0)}static getDefaults(){return Object.assign(Is.getDefaults(),{smoothing:.8,normalRange:!1,channelCount:1})}getLevel(){return vn("'getLevel' has been changed to 'getValue'"),this.getValue()}getValue(){const e=this._analyser.getValue(),n=(this.channels===1?[e]:e).map((i,r)=>{const o=i.reduce((c,l)=>c+l*l,0),a=Math.sqrt(o/i.length);return this._rms[r]=Math.max(a,this._rms[r]*this.smoothing),this.normalRange?this._rms[r]:li(this._rms[r])});return this.channels===1?n[0]:n}get channels(){return this._analyser.channels}dispose(){return super.dispose(),this._analyser.dispose(),this}}class Aa extends Is{constructor(){const e=F(Aa.getDefaults(),arguments,["size"]);super(e),this.name="FFT",this.normalRange=e.normalRange,this._analyser.type="fft",this.size=e.size}static getDefaults(){return Object.assign($.getDefaults(),{normalRange:!1,size:1024,smoothing:.8})}getValue(){return this._analyser.getValue().map(t=>this.normalRange?ln(t):t)}get size(){return this._analyser.size}set size(e){this._analyser.size=e}get smoothing(){return this._analyser.smoothing}set smoothing(e){this._analyser.smoothing=e}getFrequencyOfIndex(e){return K(0<=e&&e<this.size,`index must be greater than or equal to 0 and less than ${this.size}`),e*this.context.sampleRate/(this.size*2)}}class Ia extends Is{constructor(){super(F(Ia.getDefaults(),arguments)),this.name="DCMeter",this._analyser.type="waveform",this._analyser.size=256}getValue(){return this._analyser.getValue()[0]}}let d_=class hu extends Is{constructor(){const e=F(hu.getDefaults(),arguments,["size"]);super(e),this.name="Waveform",this._analyser.type="waveform",this.size=e.size}static getDefaults(){return Object.assign(Is.getDefaults(),{size:1024})}getValue(){return this._analyser.getValue()}get size(){return this._analyser.size}set size(e){this._analyser.size=e}};class Le extends ${constructor(){const e=F(Le.getDefaults(),arguments,["solo"]);super(e),this.name="Solo",this.input=this.output=new Y({context:this.context}),Le._allSolos.has(this.context)||Le._allSolos.set(this.context,new Set),Le._allSolos.get(this.context).add(this),this.solo=e.solo}static getDefaults(){return Object.assign($.getDefaults(),{solo:!1})}get solo(){return this._isSoloed()}set solo(e){e?this._addSolo():this._removeSolo(),Le._allSolos.get(this.context).forEach(t=>t._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Le._soloed.has(this.context)||Le._soloed.set(this.context,new Set),Le._soloed.get(this.context).add(this)}_removeSolo(){Le._soloed.has(this.context)&&Le._soloed.get(this.context).delete(this)}_isSoloed(){return Le._soloed.has(this.context)&&Le._soloed.get(this.context).has(this)}_noSolos(){return!Le._soloed.has(this.context)||Le._soloed.has(this.context)&&Le._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Le._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Le._allSolos=new Map;Le._soloed=new Map;class Pr extends ${constructor(){const e=F(Pr.getDefaults(),arguments,["pan","volume"]);super(e),this.name="PanVol",this._panner=this.input=new Dn({context:this.context,pan:e.pan,channelCount:e.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Ut({context:this.context,volume:e.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=e.mute,ne(this,["pan","volume"])}static getDefaults(){return Object.assign($.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}let du=class zn extends ${constructor(){const e=F(zn.getDefaults(),arguments,["volume","pan"]);super(e),this.name="Channel",this._solo=this.input=new Le({solo:e.solo,context:this.context}),this._panVol=this.output=new Pr({context:this.context,pan:e.pan,volume:e.volume,mute:e.mute,channelCount:e.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),ne(this,["pan","volume"])}static getDefaults(){return Object.assign($.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(e){return zn.buses.has(e)||zn.buses.set(e,new Y({context:this.context})),zn.buses.get(e)}send(e,t=0){const n=this._getBus(e),i=new Y({context:this.context,units:"decibels",gain:t});return this.connect(i),i.connect(n),i}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}};du.buses=new Map;class Da extends ${constructor(){super(F(Da.getDefaults(),arguments)),this.name="Mono",this.input=new Y({context:this.context}),this._merge=this.output=new Ms({channels:2,context:this.context}),this.input.connect(this._merge,0,0),this.input.connect(this._merge,0,1)}dispose(){return super.dispose(),this._merge.dispose(),this.input.dispose(),this}}class Ci extends ${constructor(){const e=F(Ci.getDefaults(),arguments,["lowFrequency","highFrequency"]);super(e),this.name="MultibandSplit",this.input=new Y({context:this.context}),this.output=void 0,this.low=new Rt({context:this.context,frequency:0,type:"lowpass"}),this._lowMidFilter=new Rt({context:this.context,frequency:0,type:"highpass"}),this.mid=new Rt({context:this.context,frequency:0,type:"lowpass"}),this.high=new Rt({context:this.context,frequency:0,type:"highpass"}),this._internalChannels=[this.low,this.mid,this.high],this.lowFrequency=new re({context:this.context,units:"frequency",value:e.lowFrequency}),this.highFrequency=new re({context:this.context,units:"frequency",value:e.highFrequency}),this.Q=new re({context:this.context,units:"positive",value:e.Q}),this.input.fan(this.low,this.high),this.input.chain(this._lowMidFilter,this.mid),this.lowFrequency.fan(this.low.frequency,this._lowMidFilter.frequency),this.highFrequency.fan(this.mid.frequency,this.high.frequency),this.Q.connect(this.low.Q),this.Q.connect(this._lowMidFilter.Q),this.Q.connect(this.mid.Q),this.Q.connect(this.high.Q),ne(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign($.getDefaults(),{Q:1,highFrequency:2500,lowFrequency:400})}dispose(){return super.dispose(),ci(this,["high","mid","low","highFrequency","lowFrequency"]),this.low.dispose(),this._lowMidFilter.dispose(),this.mid.dispose(),this.high.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this.Q.dispose(),this}}class Ra extends ${constructor(){const e=F(Ra.getDefaults(),arguments,["positionX","positionY","positionZ"]);super(e),this.name="Panner3D",this._panner=this.input=this.output=this.context.createPanner(),this.panningModel=e.panningModel,this.maxDistance=e.maxDistance,this.distanceModel=e.distanceModel,this.coneOuterGain=e.coneOuterGain,this.coneOuterAngle=e.coneOuterAngle,this.coneInnerAngle=e.coneInnerAngle,this.refDistance=e.refDistance,this.rolloffFactor=e.rolloffFactor,this.positionX=new ae({context:this.context,param:this._panner.positionX,value:e.positionX}),this.positionY=new ae({context:this.context,param:this._panner.positionY,value:e.positionY}),this.positionZ=new ae({context:this.context,param:this._panner.positionZ,value:e.positionZ}),this.orientationX=new ae({context:this.context,param:this._panner.orientationX,value:e.orientationX}),this.orientationY=new ae({context:this.context,param:this._panner.orientationY,value:e.orientationY}),this.orientationZ=new ae({context:this.context,param:this._panner.orientationZ,value:e.orientationZ})}static getDefaults(){return Object.assign($.getDefaults(),{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:0,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1})}setPosition(e,t,n){return this.positionX.value=e,this.positionY.value=t,this.positionZ.value=n,this}setOrientation(e,t,n){return this.orientationX.value=e,this.orientationY.value=t,this.orientationZ.value=n,this}get panningModel(){return this._panner.panningModel}set panningModel(e){this._panner.panningModel=e}get refDistance(){return this._panner.refDistance}set refDistance(e){this._panner.refDistance=e}get rolloffFactor(){return this._panner.rolloffFactor}set rolloffFactor(e){this._panner.rolloffFactor=e}get distanceModel(){return this._panner.distanceModel}set distanceModel(e){this._panner.distanceModel=e}get coneInnerAngle(){return this._panner.coneInnerAngle}set coneInnerAngle(e){this._panner.coneInnerAngle=e}get coneOuterAngle(){return this._panner.coneOuterAngle}set coneOuterAngle(e){this._panner.coneOuterAngle=e}get coneOuterGain(){return this._panner.coneOuterGain}set coneOuterGain(e){this._panner.coneOuterGain=e}get maxDistance(){return this._panner.maxDistance}set maxDistance(e){this._panner.maxDistance=e}dispose(){return super.dispose(),this._panner.disconnect(),this.orientationX.dispose(),this.orientationY.dispose(),this.orientationZ.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this}}class Ji extends ${constructor(){const e=F(Ji.getDefaults(),arguments);super(e),this.name="Recorder",this.input=new Y({context:this.context}),K(Ji.supported,"Media Recorder API is not available"),this._stream=this.context.createMediaStreamDestination(),this.input.connect(this._stream),this._recorder=new MediaRecorder(this._stream.stream,{mimeType:e.mimeType})}static getDefaults(){return $.getDefaults()}get mimeType(){return this._recorder.mimeType}static get supported(){return gt!==null&&Reflect.has(gt,"MediaRecorder")}get state(){return this._recorder.state==="inactive"?"stopped":this._recorder.state==="paused"?"paused":"started"}start(){return ke(this,void 0,void 0,function*(){K(this.state!=="started","Recorder is already started");const e=new Promise(t=>{const n=()=>{this._recorder.removeEventListener("start",n,!1),t()};this._recorder.addEventListener("start",n,!1)});return this.state==="stopped"?this._recorder.start():this._recorder.resume(),yield e})}stop(){return ke(this,void 0,void 0,function*(){K(this.state!=="stopped","Recorder is not started");const e=new Promise(t=>{const n=i=>{this._recorder.removeEventListener("dataavailable",n,!1),t(i.data)};this._recorder.addEventListener("dataavailable",n,!1)});return this._recorder.stop(),yield e})}pause(){return K(this.state==="started","Recorder must be started"),this._recorder.pause(),this}dispose(){return super.dispose(),this.input.dispose(),this._stream.disconnect(),this}}class es extends ${constructor(){const e=F(es.getDefaults(),arguments,["threshold","ratio"]);super(e),this.name="Compressor",this._compressor=this.context.createDynamicsCompressor(),this.input=this._compressor,this.output=this._compressor,this.threshold=new ae({minValue:this._compressor.threshold.minValue,maxValue:this._compressor.threshold.maxValue,context:this.context,convert:!1,param:this._compressor.threshold,units:"decibels",value:e.threshold}),this.attack=new ae({minValue:this._compressor.attack.minValue,maxValue:this._compressor.attack.maxValue,context:this.context,param:this._compressor.attack,units:"time",value:e.attack}),this.release=new ae({minValue:this._compressor.release.minValue,maxValue:this._compressor.release.maxValue,context:this.context,param:this._compressor.release,units:"time",value:e.release}),this.knee=new ae({minValue:this._compressor.knee.minValue,maxValue:this._compressor.knee.maxValue,context:this.context,convert:!1,param:this._compressor.knee,units:"decibels",value:e.knee}),this.ratio=new ae({minValue:this._compressor.ratio.minValue,maxValue:this._compressor.ratio.maxValue,context:this.context,convert:!1,param:this._compressor.ratio,units:"positive",value:e.ratio}),ne(this,["knee","release","attack","ratio","threshold"])}static getDefaults(){return Object.assign($.getDefaults(),{attack:.003,knee:30,ratio:12,release:.25,threshold:-24})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.disconnect(),this.attack.dispose(),this.release.dispose(),this.threshold.dispose(),this.ratio.dispose(),this.knee.dispose(),this}}class Wr extends ${constructor(){const e=F(Wr.getDefaults(),arguments,["threshold","smoothing"]);super(e),this.name="Gate",this._follower=new bi({context:this.context,smoothing:e.smoothing}),this._gt=new vr({context:this.context,value:ln(e.threshold)}),this.input=new Y({context:this.context}),this._gate=this.output=new Y({context:this.context}),this.input.connect(this._gate),this.input.chain(this._follower,this._gt,this._gate.gain)}static getDefaults(){return Object.assign($.getDefaults(),{smoothing:.1,threshold:-40})}get threshold(){return li(this._gt.value)}set threshold(e){this._gt.value=ln(e)}get smoothing(){return this._follower.smoothing}set smoothing(e){this._follower.smoothing=e}dispose(){return super.dispose(),this.input.dispose(),this._follower.dispose(),this._gt.dispose(),this._gate.dispose(),this}}class Br extends ${constructor(){const e=F(Br.getDefaults(),arguments,["threshold"]);super(e),this.name="Limiter",this._compressor=this.input=this.output=new es({context:this.context,ratio:20,attack:.003,release:.01,threshold:e.threshold}),this.threshold=this._compressor.threshold,ne(this,"threshold")}static getDefaults(){return Object.assign($.getDefaults(),{threshold:-12})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.dispose(),this.threshold.dispose(),this}}class Ea extends ${constructor(){const e=F(Ea.getDefaults(),arguments);super(e),this.name="MidSideCompressor",this._midSideSplit=this.input=new wi({context:this.context}),this._midSideMerge=this.output=new xi({context:this.context}),this.mid=new es(Object.assign(e.mid,{context:this.context})),this.side=new es(Object.assign(e.side,{context:this.context})),this._midSideSplit.mid.chain(this.mid,this._midSideMerge.mid),this._midSideSplit.side.chain(this.side,this._midSideMerge.side),ne(this,["mid","side"])}static getDefaults(){return Object.assign($.getDefaults(),{mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},side:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10}})}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this}}class Ma extends ${constructor(){const e=F(Ma.getDefaults(),arguments);super(e),this.name="MultibandCompressor",this._splitter=this.input=new Ci({context:this.context,lowFrequency:e.lowFrequency,highFrequency:e.highFrequency}),this.lowFrequency=this._splitter.lowFrequency,this.highFrequency=this._splitter.highFrequency,this.output=new Y({context:this.context}),this.low=new es(Object.assign(e.low,{context:this.context})),this.mid=new es(Object.assign(e.mid,{context:this.context})),this.high=new es(Object.assign(e.high,{context:this.context})),this._splitter.low.chain(this.low,this.output),this._splitter.mid.chain(this.mid,this.output),this._splitter.high.chain(this.high,this.output),ne(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign($.getDefaults(),{lowFrequency:250,highFrequency:2e3,low:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10},mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},high:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16}})}dispose(){return super.dispose(),this._splitter.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.output.dispose(),this}}class $r extends ${constructor(){const e=F($r.getDefaults(),arguments,["low","mid","high"]);super(e),this.name="EQ3",this.output=new Y({context:this.context}),this._internalChannels=[],this.input=this._multibandSplit=new Ci({context:this.context,highFrequency:e.highFrequency,lowFrequency:e.lowFrequency}),this._lowGain=new Y({context:this.context,gain:e.low,units:"decibels"}),this._midGain=new Y({context:this.context,gain:e.mid,units:"decibels"}),this._highGain=new Y({context:this.context,gain:e.high,units:"decibels"}),this.low=this._lowGain.gain,this.mid=this._midGain.gain,this.high=this._highGain.gain,this.Q=this._multibandSplit.Q,this.lowFrequency=this._multibandSplit.lowFrequency,this.highFrequency=this._multibandSplit.highFrequency,this._multibandSplit.low.chain(this._lowGain,this.output),this._multibandSplit.mid.chain(this._midGain,this.output),this._multibandSplit.high.chain(this._highGain,this.output),ne(this,["low","mid","high","lowFrequency","highFrequency"]),this._internalChannels=[this._multibandSplit]}static getDefaults(){return Object.assign($.getDefaults(),{high:0,highFrequency:2500,low:0,lowFrequency:400,mid:0})}dispose(){return super.dispose(),ci(this,["low","mid","high","lowFrequency","highFrequency"]),this._multibandSplit.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this._lowGain.dispose(),this._midGain.dispose(),this._highGain.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.Q.dispose(),this}}class Oa extends ${constructor(){const e=F(Oa.getDefaults(),arguments,["url","onload"]);super(e),this.name="Convolver",this._convolver=this.context.createConvolver(),this._buffer=new xe(e.url,t=>{this.buffer=t,e.onload()}),this.input=new Y({context:this.context}),this.output=new Y({context:this.context}),this._buffer.loaded&&(this.buffer=this._buffer),this.normalize=e.normalize,this.input.chain(this._convolver,this.output)}static getDefaults(){return Object.assign($.getDefaults(),{normalize:!0,onload:_e})}load(e){return ke(this,void 0,void 0,function*(){this.buffer=yield this._buffer.load(e)})}get buffer(){return this._buffer.length?this._buffer:null}set buffer(e){e&&this._buffer.set(e),this._convolver.buffer&&(this.input.disconnect(),this._convolver.disconnect(),this._convolver=this.context.createConvolver(),this.input.chain(this._convolver,this.output));const t=this._buffer.get();this._convolver.buffer=t||null}get normalize(){return this._convolver.normalize}set normalize(e){this._convolver.normalize=e}dispose(){return super.dispose(),this._buffer.dispose(),this._convolver.disconnect(),this}}function en(){return me().now()}function p_(){return me().immediate()}const f_=me().transport;function Ns(){return me().transport}const m_=me().destination,g_=me().destination;function Na(){return me().destination}const __=me().listener;function v_(){return me().listener}const y_=me().draw;function b_(){return me().draw}const w_=me();function x_(){return xe.loaded()}const C_=xe,S_=Cn,T_=Es,pu=Object.freeze(Object.defineProperty({__proto__:null,AMOscillator:di,AMSynth:pa,Abs:ou,Add:zs,AmplitudeEnvelope:An,Analyser:Hs,AudioToGain:mr,AutoFilter:br,AutoPanner:wr,AutoWah:xr,BaseContext:ea,BiquadFilter:Un,BitCrusher:Cr,Buffer:C_,BufferSource:T_,Buffers:S_,Channel:du,Chebyshev:Sr,Chorus:Tr,Clock:xn,Compressor:es,Context:js,Convolver:Oa,CrossFade:In,DCMeter:Ia,Delay:Mt,Destination:m_,Distortion:kr,Draw:y_,DuoSynth:fa,EQ3:$r,Emitter:yn,Envelope:at,FFT:Aa,FMOscillator:Tn,FMSynth:ma,FatOscillator:pi,FeedbackCombFilter:gi,FeedbackDelay:Ar,Filter:Rt,Follower:bi,Freeverb:Ir,Frequency:Wg,FrequencyClass:vt,FrequencyEnvelope:Kn,FrequencyShifter:Ta,Gain:Y,GainToAudio:au,Gate:Wr,GrainPlayer:ha,GreaterThan:vr,GreaterThanZero:_r,IntervalTimeline:iu,JCReverb:Dr,LFO:yt,Limiter:Br,Listener:__,Loop:Qn,LowpassCombFilter:vi,Master:g_,MembraneSynth:mi,Merge:Ms,MetalSynth:ga,Meter:Vr,MidSideCompressor:Ea,MidSideMerge:xi,MidSideSplit:wi,Midi:Lg,MidiClass:dn,Mono:Da,MonoSynth:Vs,MultibandCompressor:Ma,MultibandSplit:Ci,Multiply:Fe,Negate:da,Noise:ks,NoiseSynth:_a,Offline:jg,OfflineContext:bn,OmniOscillator:fs,OnePoleFilter:_i,Oscillator:Ne,PWMOscillator:fi,PanVol:Pr,Panner:Dn,Panner3D:Ra,Param:ae,Part:Jn,Pattern:xa,Phaser:Er,PingPongDelay:Rr,PitchShift:ka,Player:Zs,Players:ua,PluckSynth:ba,PolySynth:wa,Pow:Sn,PulseOscillator:kn,Recorder:Ji,Reverb:Mr,Sampler:yi,Scale:ms,ScaleExp:yr,Sequence:Ca,Signal:re,Solo:Le,Split:Xs,StateTimeline:wn,StereoWidener:Or,Subtract:Gs,SyncedSignal:Yg,Synth:As,Ticks:zg,TicksClass:Oe,Time:Fg,TimeClass:Dt,Timeline:Et,ToneAudioBuffer:xe,ToneAudioBuffers:Cn,ToneAudioNode:$,ToneBufferSource:Es,ToneEvent:Jt,ToneOscillatorNode:hi,Transport:f_,TransportTime:Bg,TransportTimeClass:Xe,Tremolo:Nr,Unit:Xg,UserMedia:Zn,Vibrato:Fr,Volume:Ut,WaveShaper:Kt,Waveform:d_,Zero:gr,connect:pt,connectSeries:Nt,connectSignal:ui,context:w_,dbToGain:ln,debug:bg,defaultArg:$t,disconnect:ia,fanIn:$g,ftom:xs,gainToDb:li,getContext:me,getDestination:Na,getDraw:b_,getListener:v_,getTransport:Ns,immediate:p_,intervalToFrequencyRatio:un,isArray:ot,isBoolean:Uo,isDefined:de,isFunction:Ul,isNote:Ln,isNumber:Ot,isObject:ps,isString:Xt,isUndef:Tt,loaded:x_,mtof:sa,now:en,optionsFromArguments:F,setContext:Hn,start:ta,supported:vg,version:Eo},Symbol.toStringTag,{value:"Module"}));var Ni={exports:{}},Bn={};var vc;function k_(){if(vc)return Bn;vc=1;var s=S,e=Symbol.for("react.element"),t=Symbol.for("react.fragment"),n=Object.prototype.hasOwnProperty,i=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,r={key:!0,ref:!0,__self:!0,__source:!0};function o(a,c,l){var u,h={},p=null,d=null;l!==void 0&&(p=""+l),c.key!==void 0&&(p=""+c.key),c.ref!==void 0&&(d=c.ref);for(u in c)n.call(c,u)&&!r.hasOwnProperty(u)&&(h[u]=c[u]);if(a&&a.defaultProps)for(u in c=a.defaultProps,c)h[u]===void 0&&(h[u]=c[u]);return{$$typeof:e,type:a,key:p,ref:d,props:h,_owner:i.current}}return Bn.Fragment=t,Bn.jsx=o,Bn.jsxs=o,Bn}var $n={};var yc;function A_(){return yc||(yc=1,process.env.NODE_ENV!=="production"&&(function(){var s=S,e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),o=Symbol.for("react.provider"),a=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),u=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),d=Symbol.for("react.offscreen"),f=Symbol.iterator,_="@@iterator";function m(C){if(C===null||typeof C!="object")return null;var O=f&&C[f]||C[_];return typeof O=="function"?O:null}var g=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function y(C){{for(var O=arguments.length,P=new Array(O>1?O-1:0),te=1;te<O;te++)P[te-1]=arguments[te];x("error",C,P)}}function x(C,O,P){{var te=g.ReactDebugCurrentFrame,J=te.getStackAddendum();J!==""&&(O+="%s",P=P.concat([J]));var ve=P.map(function(fe){return String(fe)});ve.unshift("Warning: "+O),Function.prototype.apply.call(console[C],console,ve)}}var w=!1,v=!1,b=!1,k=!1,T=!1,R;R=Symbol.for("react.module.reference");function I(C){return!!(typeof C=="string"||typeof C=="function"||C===n||C===r||T||C===i||C===l||C===u||k||C===d||w||v||b||typeof C=="object"&&C!==null&&(C.$$typeof===p||C.$$typeof===h||C.$$typeof===o||C.$$typeof===a||C.$$typeof===c||C.$$typeof===R||C.getModuleId!==void 0))}function A(C,O,P){var te=C.displayName;if(te)return te;var J=O.displayName||O.name||"";return J!==""?P+"("+J+")":P}function D(C){return C.displayName||"Context"}function M(C){if(C==null)return null;if(typeof C.tag=="number"&&y("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof C=="function")return C.displayName||C.name||null;if(typeof C=="string")return C;switch(C){case n:return"Fragment";case t:return"Portal";case r:return"Profiler";case i:return"StrictMode";case l:return"Suspense";case u:return"SuspenseList"}if(typeof C=="object")switch(C.$$typeof){case a:var O=C;return D(O)+".Consumer";case o:var P=C;return D(P._context)+".Provider";case c:return A(C,C.render,"ForwardRef");case h:var te=C.displayName||null;return te!==null?te:M(C.type)||"Memo";case p:{var J=C,ve=J._payload,fe=J._init;try{return M(fe(ve))}catch{return null}}}return null}var N=Object.assign,q=0,V,j,G,B,Z,X,ee;function pe(){}pe.__reactDisabledLog=!0;function ie(){{if(q===0){V=console.log,j=console.info,G=console.warn,B=console.error,Z=console.group,X=console.groupCollapsed,ee=console.groupEnd;var C={configurable:!0,enumerable:!0,value:pe,writable:!0};Object.defineProperties(console,{info:C,log:C,warn:C,error:C,group:C,groupCollapsed:C,groupEnd:C})}q++}}function Q(){{if(q--,q===0){var C={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:N({},C,{value:V}),info:N({},C,{value:j}),warn:N({},C,{value:G}),error:N({},C,{value:B}),group:N({},C,{value:Z}),groupCollapsed:N({},C,{value:X}),groupEnd:N({},C,{value:ee})})}q<0&&y("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ye=g.ReactCurrentDispatcher,Ee;function z(C,O,P){{if(Ee===void 0)try{throw Error()}catch(J){var te=J.stack.trim().match(/\n( *(at )?)/);Ee=te&&te[1]||""}return`
210
- `+Ee+C}}var Je=!1,lt;{var Vt=typeof WeakMap=="function"?WeakMap:Map;lt=new Vt}function U(C,O){if(!C||Je)return"";{var P=lt.get(C);if(P!==void 0)return P}var te;Je=!0;var J=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var ve;ve=ye.current,ye.current=null,ie();try{if(O){var fe=function(){throw Error()};if(Object.defineProperty(fe.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(fe,[])}catch(Ct){te=Ct}Reflect.construct(C,[],fe)}else{try{fe.call()}catch(Ct){te=Ct}C.call(fe.prototype)}}else{try{throw Error()}catch(Ct){te=Ct}C()}}catch(Ct){if(Ct&&te&&typeof Ct.stack=="string"){for(var he=Ct.stack.split(`
211
- `),je=te.stack.split(`
212
- `),Ve=he.length-1,Pe=je.length-1;Ve>=1&&Pe>=0&&he[Ve]!==je[Pe];)Pe--;for(;Ve>=1&&Pe>=0;Ve--,Pe--)if(he[Ve]!==je[Pe]){if(Ve!==1||Pe!==1)do if(Ve--,Pe--,Pe<0||he[Ve]!==je[Pe]){var Ie=`
213
- `+he[Ve].replace(" at new "," at ");return C.displayName&&Ie.includes("<anonymous>")&&(Ie=Ie.replace("<anonymous>",C.displayName)),typeof C=="function"&&lt.set(C,Ie),Ie}while(Ve>=1&&Pe>=0);break}}}finally{Je=!1,ye.current=ve,Q(),Error.prepareStackTrace=J}var Qt=C?C.displayName||C.name:"",Os=Qt?z(Qt):"";return typeof C=="function"&&lt.set(C,Os),Os}function ut(C,O,P){return U(C,!1)}function $e(C){var O=C.prototype;return!!(O&&O.isReactComponent)}function L(C,O,P){if(C==null)return"";if(typeof C=="function")return U(C,$e(C));if(typeof C=="string")return z(C);switch(C){case l:return z("Suspense");case u:return z("SuspenseList")}if(typeof C=="object")switch(C.$$typeof){case c:return ut(C.render);case h:return L(C.type,O,P);case p:{var te=C,J=te._payload,ve=te._init;try{return L(ve(J),O,P)}catch{}}}return""}var H=Object.prototype.hasOwnProperty,be={},we=g.ReactDebugCurrentFrame;function ce(C){if(C){var O=C._owner,P=L(C.type,C._source,O?O.type:null);we.setExtraStackFrame(P)}else we.setExtraStackFrame(null)}function Ce(C,O,P,te,J){{var ve=Function.call.bind(H);for(var fe in C)if(ve(C,fe)){var he=void 0;try{if(typeof C[fe]!="function"){var je=Error((te||"React class")+": "+P+" type `"+fe+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof C[fe]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw je.name="Invariant Violation",je}he=C[fe](O,fe,te,P,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(Ve){he=Ve}he&&!(he instanceof Error)&&(ce(J),y("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",te||"React class",P,fe,typeof he),ce(null)),he instanceof Error&&!(he.message in be)&&(be[he.message]=!0,ce(J),y("Failed %s type: %s",P,he.message),ce(null))}}}var He=Array.isArray;function Ze(C){return He(C)}function Pt(C){{var O=typeof Symbol=="function"&&Symbol.toStringTag,P=O&&C[Symbol.toStringTag]||C.constructor.name||"Object";return P}}function oe(C){try{return ge(C),!1}catch{return!0}}function ge(C){return""+C}function Ae(C){if(oe(C))return y("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Pt(C)),ge(C)}var qe=g.ReactCurrentOwner,Ge={key:!0,ref:!0,__self:!0,__source:!0},xt,Se;function Lt(C){if(H.call(C,"ref")){var O=Object.getOwnPropertyDescriptor(C,"ref").get;if(O&&O.isReactWarning)return!1}return C.ref!==void 0}function ht(C){if(H.call(C,"key")){var O=Object.getOwnPropertyDescriptor(C,"key").get;if(O&&O.isReactWarning)return!1}return C.key!==void 0}function It(C,O){typeof C.ref=="string"&&qe.current}function dt(C,O){{var P=function(){xt||(xt=!0,y("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",O))};P.isReactWarning=!0,Object.defineProperty(C,"key",{get:P,configurable:!0})}}function et(C,O){{var P=function(){Se||(Se=!0,y("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",O))};P.isReactWarning=!0,Object.defineProperty(C,"ref",{get:P,configurable:!0})}}var as=function(C,O,P,te,J,ve,fe){var he={$$typeof:e,type:C,key:O,ref:P,props:fe,_owner:ve};return he._store={},Object.defineProperty(he._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(he,"_self",{configurable:!1,enumerable:!1,writable:!1,value:te}),Object.defineProperty(he,"_source",{configurable:!1,enumerable:!1,writable:!1,value:J}),Object.freeze&&(Object.freeze(he.props),Object.freeze(he)),he};function En(C,O,P,te,J){{var ve,fe={},he=null,je=null;P!==void 0&&(Ae(P),he=""+P),ht(O)&&(Ae(O.key),he=""+O.key),Lt(O)&&(je=O.ref,It(O,J));for(ve in O)H.call(O,ve)&&!Ge.hasOwnProperty(ve)&&(fe[ve]=O[ve]);if(C&&C.defaultProps){var Ve=C.defaultProps;for(ve in Ve)fe[ve]===void 0&&(fe[ve]=Ve[ve])}if(he||je){var Pe=typeof C=="function"?C.displayName||C.name||"Unknown":C;he&&dt(fe,Pe),je&&et(fe,Pe)}return as(C,he,je,J,te,qe.current,fe)}}var Mn=g.ReactCurrentOwner,Ti=g.ReactDebugCurrentFrame;function vs(C){if(C){var O=C._owner,P=L(C.type,C._source,O?O.type:null);Ti.setExtraStackFrame(P)}else Ti.setExtraStackFrame(null)}var On;On=!1;function Nn(C){return typeof C=="object"&&C!==null&&C.$$typeof===e}function ki(){{if(Mn.current){var C=M(Mn.current.type);if(C)return`
214
-
215
- Check the render method of \``+C+"`."}return""}}function Hr(C){return""}var Ai={};function Yr(C){{var O=ki();if(!O){var P=typeof C=="string"?C:C.displayName||C.name;P&&(O=`
216
-
217
- Check the top-level render call using <`+P+">.")}return O}}function Fn(C,O){{if(!C._store||C._store.validated||C.key!=null)return;C._store.validated=!0;var P=Yr(O);if(Ai[P])return;Ai[P]=!0;var te="";C&&C._owner&&C._owner!==Mn.current&&(te=" It was passed a child from "+M(C._owner.type)+"."),vs(C),y('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',P,te),vs(null)}}function Ii(C,O){{if(typeof C!="object")return;if(Ze(C))for(var P=0;P<C.length;P++){var te=C[P];Nn(te)&&Fn(te,O)}else if(Nn(C))C._store&&(C._store.validated=!0);else if(C){var J=m(C);if(typeof J=="function"&&J!==C.entries)for(var ve=J.call(C),fe;!(fe=ve.next()).done;)Nn(fe.value)&&Fn(fe.value,O)}}}function Di(C){{var O=C.type;if(O==null||typeof O=="string")return;var P;if(typeof O=="function")P=O.propTypes;else if(typeof O=="object"&&(O.$$typeof===c||O.$$typeof===h))P=O.propTypes;else return;if(P){var te=M(O);Ce(P,C.props,"prop",te,C)}else if(O.PropTypes!==void 0&&!On){On=!0;var J=M(O);y("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",J||"Unknown")}typeof O.getDefaultProps=="function"&&!O.getDefaultProps.isReactClassApproved&&y("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Ri(C){{for(var O=Object.keys(C.props),P=0;P<O.length;P++){var te=O[P];if(te!=="children"&&te!=="key"){vs(C),y("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",te),vs(null);break}}C.ref!==null&&(vs(C),y("Invalid attribute `ref` supplied to `React.Fragment`."),vs(null))}}var Vn={};function Pn(C,O,P,te,J,ve){{var fe=I(C);if(!fe){var he="";(C===void 0||typeof C=="object"&&C!==null&&Object.keys(C).length===0)&&(he+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var je=Hr();je?he+=je:he+=ki();var Ve;C===null?Ve="null":Ze(C)?Ve="array":C!==void 0&&C.$$typeof===e?(Ve="<"+(M(C.type)||"Unknown")+" />",he=" Did you accidentally export a JSX literal instead of a component?"):Ve=typeof C,y("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Ve,he)}var Pe=En(C,O,P,J,ve);if(Pe==null)return Pe;if(fe){var Ie=O.children;if(Ie!==void 0)if(te)if(Ze(Ie)){for(var Qt=0;Qt<Ie.length;Qt++)Ii(Ie[Qt],C);Object.freeze&&Object.freeze(Ie)}else y("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Ii(Ie,C)}if(H.call(O,"key")){var Os=M(C),Ct=Object.keys(O).filter(function(Xu){return Xu!=="key"}),Qr=Ct.length>0?"{key: someKey, "+Ct.join(": ..., ")+": ...}":"{key: someKey}";if(!Vn[Os+Qr]){var Gu=Ct.length>0?"{"+Ct.join(": ..., ")+": ...}":"{}";y(`A props object containing a "key" prop is being spread into JSX:
1
+ "use strict";var wa=Object.create;var Pn=Object.defineProperty;var xa=Object.getOwnPropertyDescriptor;var ya=Object.getOwnPropertyNames;var Ia=Object.getPrototypeOf,Sa=Object.prototype.hasOwnProperty;var Aa=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of ya(t))!Sa.call(e,a)&&a!==n&&Pn(e,a,{get:()=>t[a],enumerable:!(r=xa(t,a))||r.enumerable});return e};var ka=(e,t,n)=>(n=e!=null?wa(Ia(e)):{},Aa(t||!e||!e.__esModule?Pn(n,"default",{value:e,enumerable:!0}):n,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("tone"),c=require("react"),k=require("styled-components");require("react-dom");var cn=typeof document<"u"?document.currentScript:null;function Fr(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const Wr=Fr(P),Q=Fr(c);var jt={exports:{}},kt={};var Vn;function $a(){if(Vn)return kt;Vn=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,a,s){var o=null;if(s!==void 0&&(o=""+s),a.key!==void 0&&(o=""+a.key),"key"in a){s={};for(var l in a)l!=="key"&&(s[l]=a[l])}else s=a;return a=s.ref,{$$typeof:e,type:r,key:o,ref:a!==void 0?a:null,props:s}}return kt.Fragment=t,kt.jsx=n,kt.jsxs=n,kt}var $t={};var jn;function Ra(){return jn||(jn=1,process.env.NODE_ENV!=="production"&&(function(){function e(A){if(A==null)return null;if(typeof A=="function")return A.$$typeof===D?null:A.displayName||A.name||null;if(typeof A=="string")return A;switch(A){case g:return"Fragment";case w:return"Profiler";case m:return"StrictMode";case I:return"Suspense";case $:return"SuspenseList";case _:return"Activity"}if(typeof A=="object")switch(typeof A.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),A.$$typeof){case y:return"Portal";case v:return A.displayName||"Context";case x:return(A._context.displayName||"Context")+".Consumer";case S:var j=A.render;return A=A.displayName,A||(A=j.displayName||j.name||"",A=A!==""?"ForwardRef("+A+")":"ForwardRef"),A;case M:return j=A.displayName||null,j!==null?j:e(A.type)||"Memo";case T:j=A._payload,A=A._init;try{return e(A(j))}catch{}}return null}function t(A){return""+A}function n(A){try{t(A);var j=!1}catch{j=!0}if(j){j=console;var H=j.error,U=typeof Symbol=="function"&&Symbol.toStringTag&&A[Symbol.toStringTag]||A.constructor.name||"Object";return H.call(j,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U),t(A)}}function r(A){if(A===g)return"<>";if(typeof A=="object"&&A!==null&&A.$$typeof===T)return"<...>";try{var j=e(A);return j?"<"+j+">":"<...>"}catch{return"<...>"}}function a(){var A=V.A;return A===null?null:A.getOwner()}function s(){return Error("react-stack-top-frame")}function o(A){if(W.call(A,"key")){var j=Object.getOwnPropertyDescriptor(A,"key").get;if(j&&j.isReactWarning)return!1}return A.key!==void 0}function l(A,j){function H(){Y||(Y=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",j))}H.isReactWarning=!0,Object.defineProperty(A,"key",{get:H,configurable:!0})}function i(){var A=e(this.type);return ee[A]||(ee[A]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),A=this.props.ref,A!==void 0?A:null}function u(A,j,H,U,ge,Be){var ie=H.ref;return A={$$typeof:C,type:A,key:j,props:H,_owner:U},(ie!==void 0?ie:null)!==null?Object.defineProperty(A,"ref",{enumerable:!1,get:i}):Object.defineProperty(A,"ref",{enumerable:!1,value:null}),A._store={},Object.defineProperty(A._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(A,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(A,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ge}),Object.defineProperty(A,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Be}),Object.freeze&&(Object.freeze(A.props),Object.freeze(A)),A}function d(A,j,H,U,ge,Be){var ie=j.children;if(ie!==void 0)if(U)if(O(ie)){for(U=0;U<ie.length;U++)b(ie[U]);Object.freeze&&Object.freeze(ie)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else b(ie);if(W.call(j,"key")){ie=e(A);var Te=Object.keys(j).filter(function(me){return me!=="key"});U=0<Te.length?"{key: someKey, "+Te.join(": ..., ")+": ...}":"{key: someKey}",oe[ie+U]||(Te=0<Te.length?"{"+Te.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
218
2
  let props = %s;
219
3
  <%s {...props} />
220
4
  React keys must be passed directly to JSX without using spread:
221
5
  let props = %s;
222
- <%s key={someKey} {...props} />`,Qr,Os,Gu,Os),Vn[Os+Qr]=!0}}return C===n?Ri(Pe):Di(Pe),Pe}}function Ur(C,O,P){return Pn(C,O,P,!0)}function Kr(C,O,P){return Pn(C,O,P,!1)}var se=Kr,ue=Ur;$n.Fragment=n,$n.jsx=se,$n.jsxs=ue})()),$n}var bc;function I_(){return bc||(bc=1,process.env.NODE_ENV==="production"?Ni.exports=k_():Ni.exports=A_()),Ni.exports}var E=I_();function wc(s,e){const t=new Float32Array(s),n=s-1;for(let i=0;i<s;i++){const r=i/n;t[i]=e?r:1-r}return t}function D_(s,e){const t=new Float32Array(s),n=s-1;for(let i=0;i<s;i++){const r=i/n,o=e?i:s-1-i;t[o]=Math.exp(2*r-1)/Math.E}return t}function R_(s,e){const t=new Float32Array(s),n=e?Math.PI/2:-Math.PI/2;for(let i=0;i<s;i++)t[i]=Math.sin(Math.PI*i/s-n)/2+.5;return t}function E_(s,e,t=10){const n=new Float32Array(s);for(let i=0;i<s;i++){const r=e?i:s-1-i,o=i/s;n[r]=Math.log(1+t*o)/Math.log(1+t)}return n}function fu(s,e,t){switch(s){case"linear":return wc(e,t);case"exponential":return D_(e,t);case"sCurve":return R_(e,t);case"logarithmic":return E_(e,t);default:return wc(e,t)}}function xc(s,e,t,n="linear",i=0,r=1){if(!(t<=0))if(n==="linear")s.setValueAtTime(i,e),s.linearRampToValueAtTime(r,e+t);else if(n==="exponential")s.setValueAtTime(Math.max(i,.001),e),s.exponentialRampToValueAtTime(Math.max(r,.001),e+t);else{const o=fu(n,1e4,!0),a=new Float32Array(o.length),c=r-i;for(let l=0;l<o.length;l++)a[l]=i+o[l]*c;s.setValueCurveAtTime(a,e,t)}}function Cc(s,e,t,n="linear",i=1,r=0){if(!(t<=0))if(n==="linear")s.setValueAtTime(i,e),s.linearRampToValueAtTime(r,e+t);else if(n==="exponential")s.setValueAtTime(Math.max(i,.001),e),s.exponentialRampToValueAtTime(Math.max(r,.001),e+t);else{const o=fu(n,1e4,!1),a=new Float32Array(o.length),c=i-r;for(let l=0;l<o.length;l++)a[l]=r+o[l]*c;s.setValueCurveAtTime(a,e,t)}}var M_=class{constructor(s){this.activePlayers=0,this.track=s.track,this.volumeNode=new Ut(this.gainToDb(s.track.gain)),this.panNode=new Dn(s.track.stereoPan),this.muteGain=new Y(s.track.muted?0:1);const e=s.destination||Na();if(s.effects){const n=s.effects(this.muteGain,e,!1);n&&(this.effectsCleanup=n)}else this.muteGain.connect(e);const t=s.clips||(s.buffer?[{buffer:s.buffer,startTime:0,duration:s.buffer.duration,offset:0,fadeIn:s.track.fadeIn,fadeOut:s.track.fadeOut,gain:1}]:[]);this.clips=t.map(n=>{const i=new Zs({url:n.buffer,loop:!1,onstop:()=>{this.activePlayers--,this.activePlayers===0&&this.onStopCallback&&this.onStopCallback()}}),r=new Y(n.gain);return i.connect(r),r.chain(this.volumeNode,this.panNode,this.muteGain),{player:i,clipInfo:n,fadeGain:r,pausedPosition:0,playStartTime:0}})}scheduleFades(s,e,t=0){const{clipInfo:n,fadeGain:i}=s,r=i.gain._param;r.cancelScheduledValues(0);const o=t-n.offset;if(n.fadeIn&&o<n.fadeIn.duration){const a=n.fadeIn.duration;if(o<=0)xc(r,e,a,n.fadeIn.type||"linear",0,n.gain);else{const c=a-o,l=o/a,u=n.gain*l;xc(r,e,c,n.fadeIn.type||"linear",u,n.gain)}}else r.setValueAtTime(n.gain,e);if(n.fadeOut){const c=n.duration-n.fadeOut.duration-o;if(c>0){const l=e+c;Cc(r,l,n.fadeOut.duration,n.fadeOut.type||"linear",n.gain,0)}else if(c>-n.fadeOut.duration){const l=-c,u=n.fadeOut.duration-l,h=l/n.fadeOut.duration,p=n.gain*(1-h);Cc(r,e,u,n.fadeOut.type||"linear",p,0)}}}gainToDb(s){return 20*Math.log10(s)}setVolume(s){this.track.gain=s,this.volumeNode.volume.value=this.gainToDb(s)}setPan(s){this.track.stereoPan=s,this.panNode.pan.value=s}setMute(s){this.track.muted=s,this.muteGain.gain.value=s?0:1}setSolo(s){this.track.soloed=s}play(s,e=0,t){const n=s??en();this.isPlaying&&this.stop(),this.activePlayers=0,this.clips.forEach(i=>{const{player:r,clipInfo:o}=i,a=e,c=o.startTime,l=o.startTime+o.duration;if(a<l)if(this.activePlayers++,i.playStartTime=en(),a>=c){const u=a-c+o.offset,h=o.duration-(a-c),p=t?Math.min(t,h):h;i.pausedPosition=u,this.scheduleFades(i,n,u),r.start(n,u,p)}else{const u=c-a,h=t?Math.min(t-u,o.duration):o.duration;u<(t??1/0)?(i.pausedPosition=o.offset,this.scheduleFades(i,n+u,o.offset),r.start(n+u,o.offset,h)):this.activePlayers--}})}pause(){this.clips.forEach(s=>{if(s.player.state==="started"){const e=(en()-s.playStartTime)*s.player.playbackRate;s.pausedPosition=s.pausedPosition+e}s.player.stop()}),this.activePlayers=0}stop(s){const e=s??en();this.clips.forEach(t=>{t.player.stop(e),t.pausedPosition=0}),this.activePlayers=0}dispose(){this.effectsCleanup&&this.effectsCleanup(),this.clips.forEach(s=>{s.player.dispose(),s.fadeGain.dispose()}),this.volumeNode.dispose(),this.panNode.dispose(),this.muteGain.dispose()}get id(){return this.track.id}get duration(){if(this.clips.length===0)return 0;const s=this.clips[this.clips.length-1];return s.clipInfo.startTime+s.clipInfo.duration}get buffer(){return this.clips[0]?.clipInfo.buffer}get isPlaying(){return this.clips.some(s=>s.player.state==="started")}get muted(){return this.track.muted}get startTime(){return this.track.startTime}setOnStopCallback(s){this.onStopCallback=s}},O_=class{constructor(s={}){if(this.tracks=new Map,this.isInitialized=!1,this.soloedTracks=new Set,this.manualMuteState=new Map,this.activeTracks=new Map,this.playbackSessionId=0,this.masterVolume=new Ut(this.gainToDb(s.masterGain??1)),s.effects){const e=s.effects(this.masterVolume,Na(),!1);e&&(this.effectsCleanup=e)}else this.masterVolume.toDestination();s.tracks&&s.tracks.forEach(e=>{this.tracks.set(e.id,e),this.manualMuteState.set(e.id,e.muted)})}gainToDb(s){return 20*Math.log10(s)}async init(){this.isInitialized||(await ta(),this.isInitialized=!0)}addTrack(s){const e={...s,destination:this.masterVolume},t=new M_(e);return this.tracks.set(t.id,t),this.manualMuteState.set(t.id,s.track.muted??!1),t}removeTrack(s){const e=this.tracks.get(s);e&&(e.dispose(),this.tracks.delete(s),this.manualMuteState.delete(s),this.soloedTracks.delete(s))}getTrack(s){return this.tracks.get(s)}play(s,e,t){if(!this.isInitialized){console.warn("TonePlayout not initialized. Call init() first.");return}const n=s??en(),i=e??0;this.playbackSessionId++;const r=this.playbackSessionId;this.activeTracks.clear(),this.tracks.forEach(o=>{const a=o.startTime;if(i>=a){const c=i-a;t!==void 0&&(this.activeTracks.set(o.id,r),o.setOnStopCallback(()=>{this.activeTracks.get(o.id)===r&&(this.activeTracks.delete(o.id),this.activeTracks.size===0&&this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback())})),o.play(n,c,t)}else{const c=a-i;t!==void 0&&(this.activeTracks.set(o.id,r),o.setOnStopCallback(()=>{this.activeTracks.get(o.id)===r&&(this.activeTracks.delete(o.id),this.activeTracks.size===0&&this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback())})),o.play(n+c,0,t)}}),e!==void 0?Ns().start(n,e):Ns().start(n)}pause(){Ns().pause(),this.tracks.forEach(s=>{s.pause()})}stop(){Ns().stop(),this.tracks.forEach(s=>{s.stop()})}setMasterGain(s){this.masterVolume.volume.value=this.gainToDb(s)}setSolo(s,e){const t=this.tracks.get(s);t&&(t.setSolo(e),e?this.soloedTracks.add(s):this.soloedTracks.delete(s),this.updateSoloMuting())}updateSoloMuting(){const s=this.soloedTracks.size>0;this.tracks.forEach((e,t)=>{if(s)if(!this.soloedTracks.has(t))e.setMute(!0);else{const n=this.manualMuteState.get(t)??!1;e.setMute(n)}else{const n=this.manualMuteState.get(t)??!1;e.setMute(n)}})}setMute(s,e){const t=this.tracks.get(s);t&&(this.manualMuteState.set(s,e),t.setMute(e))}getCurrentTime(){return Ns().seconds}seekTo(s){Ns().seconds=s}dispose(){this.tracks.forEach(s=>{s.dispose()}),this.tracks.clear(),this.effectsCleanup&&this.effectsCleanup(),this.masterVolume.dispose()}get context(){return me()}get sampleRate(){return me().sampleRate}setOnPlaybackComplete(s){this.onPlaybackCompleteCallback=s}},Fi=null;function N_(){return Fi||(Fi=new js,Hn(Fi)),Fi}async function so(){const s=N_();s.state!=="running"&&await s.resume()}const F_=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Fa(s){const e=Object.prototype.toString.call(s);return e==="[object Window]"||e==="[object global]"}function mu(s){return"nodeType"in s}function Rn(s){var e,t;return s?Fa(s)?s:mu(s)&&(e=(t=s.ownerDocument)==null?void 0:t.defaultView)!=null?e:window:window}function V_(s){const{Document:e}=Rn(s);return s instanceof e}function P_(s){return Fa(s)?!1:s instanceof Rn(s).HTMLElement}function W_(s){return s instanceof Rn(s).SVGElement}function qr(s){return s?Fa(s)?s.document:mu(s)?V_(s)?s:P_(s)||W_(s)?s.ownerDocument:document:document:document}const jr=F_?S.useLayoutEffect:S.useEffect;function B_(s){const e=S.useRef(s);return jr(()=>{e.current=s}),S.useCallback(function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.current==null?void 0:e.current(...n)},[])}function gu(s,e){e===void 0&&(e=[s]);const t=S.useRef(s);return jr(()=>{t.current!==s&&(t.current=s)},e),t}function er(s){const e=B_(s),t=S.useRef(null),n=S.useCallback(i=>{i!==t.current&&e?.(i,t.current),t.current=i},[]);return[t,n]}let no={};function _u(s,e){return S.useMemo(()=>{const t=no[s]==null?0:no[s]+1;return no[s]=t,s+"-"+t},[s,e])}function $_(s){return function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return n.reduce((r,o)=>{const a=Object.entries(o);for(const[c,l]of a){const u=r[c];u!=null&&(r[c]=u+s*l)}return r},{...e})}}const q_=$_(-1);function j_(s){return"clientX"in s&&"clientY"in s}function L_(s){if(!s)return!1;const{TouchEvent:e}=Rn(s.target);return e&&s instanceof e}function Sc(s){if(L_(s)){if(s.touches&&s.touches.length){const{clientX:e,clientY:t}=s.touches[0];return{x:e,y:t}}else if(s.changedTouches&&s.changedTouches.length){const{clientX:e,clientY:t}=s.changedTouches[0];return{x:e,y:t}}}return j_(s)?{x:s.clientX,y:s.clientY}:null}const Co=Object.freeze({Translate:{toString(s){if(!s)return;const{x:e,y:t}=s;return"translate3d("+(e?Math.round(e):0)+"px, "+(t?Math.round(t):0)+"px, 0)"}},Scale:{toString(s){if(!s)return;const{scaleX:e,scaleY:t}=s;return"scaleX("+e+") scaleY("+t+")"}},Transform:{toString(s){if(s)return[Co.Translate.toString(s),Co.Scale.toString(s)].join(" ")}},Transition:{toString(s){let{property:e,duration:t,easing:n}=s;return e+" "+t+"ms "+n}}});var Tc;(function(s){s.DragStart="dragStart",s.DragMove="dragMove",s.DragEnd="dragEnd",s.DragCancel="dragCancel",s.DragOver="dragOver",s.RegisterDroppable="registerDroppable",s.SetDroppableDisabled="setDroppableDisabled",s.UnregisterDroppable="unregisterDroppable"})(Tc||(Tc={}));function kc(){}function z_(s,e){return S.useMemo(()=>({sensor:s,options:e??{}}),[s,e])}function Z_(){for(var s=arguments.length,e=new Array(s),t=0;t<s;t++)e[t]=arguments[t];return S.useMemo(()=>[...e].filter(n=>n!=null),[...e])}const So=Object.freeze({x:0,y:0});var tn;(function(s){s[s.Forward=1]="Forward",s[s.Backward=-1]="Backward"})(tn||(tn={}));class io{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(t=>{var n;return(n=this.target)==null?void 0:n.removeEventListener(...t)})},this.target=e}add(e,t,n){var i;(i=this.target)==null||i.addEventListener(e,t,n),this.listeners.push([e,t,n])}}function G_(s){const{EventTarget:e}=Rn(s);return s instanceof e?s:qr(s)}function ro(s,e){const t=Math.abs(s.x),n=Math.abs(s.y);return typeof e=="number"?Math.sqrt(t**2+n**2)>e:"x"in e&&"y"in e?t>e.x&&n>e.y:"x"in e?t>e.x:"y"in e?n>e.y:!1}var us;(function(s){s.Click="click",s.DragStart="dragstart",s.Keydown="keydown",s.ContextMenu="contextmenu",s.Resize="resize",s.SelectionChange="selectionchange",s.VisibilityChange="visibilitychange"})(us||(us={}));function Ac(s){s.preventDefault()}function X_(s){s.stopPropagation()}var hs;(function(s){s.Space="Space",s.Down="ArrowDown",s.Right="ArrowRight",s.Left="ArrowLeft",s.Up="ArrowUp",s.Esc="Escape",s.Enter="Enter",s.Tab="Tab"})(hs||(hs={}));hs.Space,hs.Enter,hs.Esc,hs.Space,hs.Enter,hs.Tab;function Ic(s){return!!(s&&"distance"in s)}function Dc(s){return!!(s&&"delay"in s)}class Va{constructor(e,t,n){var i;n===void 0&&(n=G_(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;const{event:r}=e,{target:o}=r;this.props=e,this.events=t,this.document=qr(o),this.documentListeners=new io(this.document),this.listeners=new io(n),this.windowListeners=new io(Rn(o)),this.initialCoordinates=(i=Sc(r))!=null?i:So,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(us.Resize,this.handleCancel),this.windowListeners.add(us.DragStart,Ac),this.windowListeners.add(us.VisibilityChange,this.handleCancel),this.windowListeners.add(us.ContextMenu,Ac),this.documentListeners.add(us.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Dc(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(Ic(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){const{active:n,onPending:i}=this.props;i(n,e,this.initialCoordinates,t)}handleStart(){const{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(us.Click,X_,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(us.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){var t;const{activated:n,initialCoordinates:i,props:r}=this,{onMove:o,options:{activationConstraint:a}}=r;if(!i)return;const c=(t=Sc(e))!=null?t:So,l=q_(i,c);if(!n&&a){if(Ic(a)){if(a.tolerance!=null&&ro(l,a.tolerance))return this.handleCancel();if(ro(l,a.distance))return this.handleStart()}if(Dc(a)&&ro(l,a.tolerance))return this.handleCancel();this.handlePending(a,l);return}e.cancelable&&e.preventDefault(),o(c)}handleEnd(){const{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){const{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===hs.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const H_={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class vu extends Va{constructor(e){const{event:t}=e,n=qr(t.target);super(e,H_,n)}}vu.activators=[{eventName:"onPointerDown",handler:(s,e)=>{let{nativeEvent:t}=s,{onActivation:n}=e;return!t.isPrimary||t.button!==0?!1:(n?.({event:t}),!0)}}];const Y_={move:{name:"mousemove"},end:{name:"mouseup"}};var To;(function(s){s[s.RightClick=2]="RightClick"})(To||(To={}));class U_ extends Va{constructor(e){super(e,Y_,qr(e.event.target))}}U_.activators=[{eventName:"onMouseDown",handler:(s,e)=>{let{nativeEvent:t}=s,{onActivation:n}=e;return t.button===To.RightClick?!1:(n?.({event:t}),!0)}}];const oo={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class K_ extends Va{constructor(e){super(e,oo)}static setup(){return window.addEventListener(oo.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(oo.move.name,e)};function e(){}}}K_.activators=[{eventName:"onTouchStart",handler:(s,e)=>{let{nativeEvent:t}=s,{onActivation:n}=e;const{touches:i}=t;return i.length>1?!1:(n?.({event:t}),!0)}}];var Rc;(function(s){s[s.Pointer=0]="Pointer",s[s.DraggableRect=1]="DraggableRect"})(Rc||(Rc={}));var Ec;(function(s){s[s.TreeOrder=0]="TreeOrder",s[s.ReversedTreeOrder=1]="ReversedTreeOrder"})(Ec||(Ec={}));tn.Backward+"",tn.Forward+"",tn.Backward+"",tn.Forward+"";var ko;(function(s){s[s.Always=0]="Always",s[s.BeforeDragging=1]="BeforeDragging",s[s.WhileDragging=2]="WhileDragging"})(ko||(ko={}));var Ao;(function(s){s.Optimized="optimized"})(Ao||(Ao={}));function Q_(s,e){return S.useMemo(()=>s.reduce((t,n)=>{let{eventName:i,handler:r}=n;return t[i]=o=>{r(o,e)},t},{}),[s,e])}ko.WhileDragging,Ao.Optimized;const J_={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:kc,draggableNodes:new Map,over:null,measureDroppableContainers:kc},e0=S.createContext(J_),t0=S.createContext({...So,scaleX:1,scaleY:1});var Mc;(function(s){s[s.Uninitialized=0]="Uninitialized",s[s.Initializing=1]="Initializing",s[s.Initialized=2]="Initialized"})(Mc||(Mc={}));const s0=S.createContext(null),Oc="button",n0="Draggable";function ao(s){let{id:e,data:t,disabled:n=!1,attributes:i}=s;const r=_u(n0),{activators:o,activatorEvent:a,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:h,over:p}=S.useContext(e0),{role:d=Oc,roleDescription:f="draggable",tabIndex:_=0}=i??{},m=c?.id===e,g=S.useContext(m?t0:s0),[y,x]=er(),[w,v]=er(),b=Q_(o,e),k=gu(t);jr(()=>(h.set(e,{id:e,key:r,node:y,activatorNode:w,data:k}),()=>{const R=h.get(e);R&&R.key===r&&h.delete(e)}),[h,e]);const T=S.useMemo(()=>({role:d,tabIndex:_,"aria-disabled":n,"aria-pressed":m&&d===Oc?!0:void 0,"aria-roledescription":f,"aria-describedby":u.draggable}),[n,d,_,m,f,u.draggable]);return{active:c,activatorEvent:a,activeNodeRect:l,attributes:T,isDragging:m,listeners:n?void 0:b,node:y,over:p,setNodeRef:x,setActivatorNodeRef:v,transform:g}}const i0=new Map([["bold",le.createElement(le.Fragment,null,le.createElement("path",{d:"M157.27,21.22a12,12,0,0,0-12.64,1.31L75.88,76H32A20,20,0,0,0,12,96v64a20,20,0,0,0,20,20H75.88l68.75,53.47A12,12,0,0,0,164,224V32A12,12,0,0,0,157.27,21.22ZM36,100H68v56H36Zm104,99.46L92,162.13V93.87l48-37.33ZM212,128a44,44,0,0,1-11,29.11,12,12,0,1,1-18-15.88,20,20,0,0,0,0-26.43,12,12,0,0,1,18-15.86A43.94,43.94,0,0,1,212,128Zm40,0a83.87,83.87,0,0,1-21.39,56,12,12,0,0,1-17.89-16,60,60,0,0,0,0-80,12,12,0,1,1,17.88-16A83.87,83.87,0,0,1,252,128Z"}))],["duotone",le.createElement(le.Fragment,null,le.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),le.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55Zm54-106.08a40,40,0,0,1,0,52.88,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,0,1,12-10.58ZM248,128a79.9,79.9,0,0,1-20.37,53.34,8,8,0,0,1-11.92-10.67,64,64,0,0,0,0-85.33,8,8,0,1,1,11.92-10.67A79.83,79.83,0,0,1,248,128Z"}))],["fill",le.createElement(le.Fragment,null,le.createElement("path",{d:"M160,32.25V223.69a8.29,8.29,0,0,1-3.91,7.18,8,8,0,0,1-9-.56l-65.57-51A4,4,0,0,1,80,176.16V79.84a4,4,0,0,1,1.55-3.15l65.57-51a8,8,0,0,1,10,.16A8.27,8.27,0,0,1,160,32.25ZM60,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H60a4,4,0,0,0,4-4V84A4,4,0,0,0,60,80Zm126.77,20.84a8,8,0,0,0-.72,11.3,24,24,0,0,1,0,31.72,8,8,0,1,0,12,10.58,40,40,0,0,0,0-52.88A8,8,0,0,0,186.74,100.84Zm40.89-26.17a8,8,0,1,0-11.92,10.66,64,64,0,0,1,0,85.34,8,8,0,1,0,11.92,10.66,80,80,0,0,0,0-106.66Z"}))],["light",le.createElement(le.Fragment,null,le.createElement("path",{d:"M154.64,26.61a6,6,0,0,0-6.32.65L77.94,82H32A14,14,0,0,0,18,96v64a14,14,0,0,0,14,14H77.94l70.38,54.74A6,6,0,0,0,158,224V32A6,6,0,0,0,154.64,26.61ZM30,160V96a2,2,0,0,1,2-2H74v68H32A2,2,0,0,1,30,160Zm116,51.73L86,165.07V90.93l60-46.66Zm50.53-108.85a38,38,0,0,1,0,50.24,6,6,0,1,1-9-7.94,26,26,0,0,0,0-34.37,6,6,0,0,1,9-7.93ZM246,128a77.86,77.86,0,0,1-19.86,52,6,6,0,1,1-8.94-8,66,66,0,0,0,0-88,6,6,0,1,1,8.94-8A77.86,77.86,0,0,1,246,128Z"}))],["regular",le.createElement(le.Fragment,null,le.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55Zm54-106.08a40,40,0,0,1,0,52.88,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,0,1,12-10.58ZM248,128a79.9,79.9,0,0,1-20.37,53.34,8,8,0,0,1-11.92-10.67,64,64,0,0,0,0-85.33,8,8,0,1,1,11.92-10.67A79.83,79.83,0,0,1,248,128Z"}))],["thin",le.createElement(le.Fragment,null,le.createElement("path",{d:"M153.76,28.41a4,4,0,0,0-4.22.43L78.63,84H32A12,12,0,0,0,20,96v64a12,12,0,0,0,12,12H78.63l70.91,55.16A4.07,4.07,0,0,0,152,228a3.92,3.92,0,0,0,1.76-.41A4,4,0,0,0,156,224V32A4,4,0,0,0,153.76,28.41ZM28,160V96a4,4,0,0,1,4-4H76v72H32A4,4,0,0,1,28,160Zm120,55.82L84,166V90l64-49.78Zm47-111.61a36,36,0,0,1,0,47.59,4,4,0,1,1-6-5.3,28,28,0,0,0,0-37,4,4,0,0,1,6-5.28ZM244,128a75.88,75.88,0,0,1-19.35,50.67,4,4,0,0,1-6-5.34,68,68,0,0,0,0-90.66,4,4,0,0,1,6-5.34A75.88,75.88,0,0,1,244,128Z"}))]]),r0=new Map([["bold",le.createElement(le.Fragment,null,le.createElement("path",{d:"M157.27,21.22a12,12,0,0,0-12.64,1.31L75.88,76H32A20,20,0,0,0,12,96v64a20,20,0,0,0,20,20H75.88l68.75,53.47A12,12,0,0,0,164,224V32A12,12,0,0,0,157.27,21.22ZM36,100H68v56H36Zm104,99.46L92,162.13V93.87l48-37.33ZM212,128a44,44,0,0,1-11,29.11,12,12,0,0,1-18-15.88,20,20,0,0,0,0-26.44,12,12,0,0,1,18-15.85A43.94,43.94,0,0,1,212,128Z"}))],["duotone",le.createElement(le.Fragment,null,le.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),le.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55ZM208,128a39.93,39.93,0,0,1-10,26.46,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,1,1,12-10.58A40,40,0,0,1,208,128Z"}))],["fill",le.createElement(le.Fragment,null,le.createElement("path",{d:"M160,32.25V223.69a8.29,8.29,0,0,1-3.91,7.18,8,8,0,0,1-9-.56l-65.57-51A4,4,0,0,1,80,176.16V79.84a4,4,0,0,1,1.55-3.15l65.57-51a8,8,0,0,1,10,.16A8.27,8.27,0,0,1,160,32.25ZM60,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H60a4,4,0,0,0,4-4V84A4,4,0,0,0,60,80ZM198,101.56a8,8,0,1,0-12,10.58,24,24,0,0,1,0,31.72,8,8,0,1,0,12,10.58,40,40,0,0,0,0-52.88Z"}))],["light",le.createElement(le.Fragment,null,le.createElement("path",{d:"M154.64,26.61a6,6,0,0,0-6.32.65L77.94,82H32A14,14,0,0,0,18,96v64a14,14,0,0,0,14,14H77.94l70.38,54.74A6,6,0,0,0,158,224V32A6,6,0,0,0,154.64,26.61ZM30,160V96a2,2,0,0,1,2-2H74v68H32A2,2,0,0,1,30,160Zm116,51.73L86,165.07V90.93l60-46.66ZM206,128a37.94,37.94,0,0,1-9.5,25.14,6,6,0,1,1-9-7.94,26,26,0,0,0,0-34.37,6,6,0,0,1,9-7.93A38,38,0,0,1,206,128Z"}))],["regular",le.createElement(le.Fragment,null,le.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55ZM208,128a39.93,39.93,0,0,1-10,26.46,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,1,1,12-10.58A40,40,0,0,1,208,128Z"}))],["thin",le.createElement(le.Fragment,null,le.createElement("path",{d:"M153.76,28.41a4,4,0,0,0-4.22.43L78.63,84H32A12,12,0,0,0,20,96v64a12,12,0,0,0,12,12H78.63l70.91,55.16A4.07,4.07,0,0,0,152,228a3.92,3.92,0,0,0,1.76-.41A4,4,0,0,0,156,224V32A4,4,0,0,0,153.76,28.41ZM28,160V96a4,4,0,0,1,4-4H76v72H32A4,4,0,0,1,28,160Zm120,55.82L84,166V90l64-49.78ZM204,128a36,36,0,0,1-9,23.82,4,4,0,1,1-6-5.3,28,28,0,0,0,0-37,4,4,0,0,1,6-5.28A36,36,0,0,1,204,128Z"}))]]),o0=S.createContext({color:"currentColor",size:"1em",weight:"regular",mirrored:!1}),Pa=le.forwardRef((s,e)=>{const{alt:t,color:n,size:i,weight:r,mirrored:o,children:a,weights:c,...l}=s,{color:u="currentColor",size:h,weight:p="regular",mirrored:d=!1,...f}=le.useContext(o0);return le.createElement("svg",{ref:e,xmlns:"http://www.w3.org/2000/svg",width:i??h,height:i??h,fill:n??u,viewBox:"0 0 256 256",transform:o||d?"scale(-1, 1)":void 0,...f,...l},!!t&&le.createElement("title",null,t),a,c.get(r??p))});Pa.displayName="IconBase";const yu=le.forwardRef((s,e)=>le.createElement(Pa,{ref:e,...s,weights:i0}));yu.displayName="SpeakerHighIcon";const bu=le.forwardRef((s,e)=>le.createElement(Pa,{ref:e,...s,weights:r0}));bu.displayName="SpeakerLowIcon";W.span`
6
+ <%s key={someKey} {...props} />`,U,ie,Te,ie),oe[ie+U]=!0)}if(ie=null,H!==void 0&&(n(H),ie=""+H),o(j)&&(n(j.key),ie=""+j.key),"key"in j){H={};for(var ue in j)ue!=="key"&&(H[ue]=j[ue])}else H=j;return ie&&l(H,typeof A=="function"?A.displayName||A.name||"Unknown":A),u(A,ie,H,a(),ge,Be)}function b(A){p(A)?A._store&&(A._store.validated=1):typeof A=="object"&&A!==null&&A.$$typeof===T&&(A._payload.status==="fulfilled"?p(A._payload.value)&&A._payload.value._store&&(A._payload.value._store.validated=1):A._store&&(A._store.validated=1))}function p(A){return typeof A=="object"&&A!==null&&A.$$typeof===C}var f=c,C=Symbol.for("react.transitional.element"),y=Symbol.for("react.portal"),g=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),x=Symbol.for("react.consumer"),v=Symbol.for("react.context"),S=Symbol.for("react.forward_ref"),I=Symbol.for("react.suspense"),$=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),T=Symbol.for("react.lazy"),_=Symbol.for("react.activity"),D=Symbol.for("react.client.reference"),V=f.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,W=Object.prototype.hasOwnProperty,O=Array.isArray,N=console.createTask?console.createTask:function(){return null};f={react_stack_bottom_frame:function(A){return A()}};var Y,ee={},re=f.react_stack_bottom_frame.bind(f,s)(),X=N(r(s)),oe={};$t.Fragment=g,$t.jsx=function(A,j,H){var U=1e4>V.recentlyCreatedOwnerStacks++;return d(A,j,H,!1,U?Error("react-stack-top-frame"):re,U?N(r(A)):X)},$t.jsxs=function(A,j,H){var U=1e4>V.recentlyCreatedOwnerStacks++;return d(A,j,H,!0,U?Error("react-stack-top-frame"):re,U?N(r(A)):X)}})()),$t}var zn;function Ea(){return zn||(zn=1,process.env.NODE_ENV==="production"?jt.exports=$a():jt.exports=Ra()),jt.exports}var Z=Ea();function On(e,t){const n=new Float32Array(e),r=e-1;for(let a=0;a<e;a++){const s=a/r;n[a]=t?s:1-s}return n}function Da(e,t){const n=new Float32Array(e),r=e-1;for(let a=0;a<e;a++){const s=a/r,o=t?a:e-1-a;n[o]=Math.exp(2*s-1)/Math.E}return n}function Ta(e,t){const n=new Float32Array(e),r=t?Math.PI/2:-Math.PI/2;for(let a=0;a<e;a++)n[a]=Math.sin(Math.PI*a/e-r)/2+.5;return n}function _a(e,t,n=10){const r=new Float32Array(e);for(let a=0;a<e;a++){const s=t?a:e-1-a,o=a/e;r[s]=Math.log(1+n*o)/Math.log(1+n)}return r}function Zr(e,t,n){switch(e){case"linear":return On(t,n);case"exponential":return Da(t,n);case"sCurve":return Ta(t,n);case"logarithmic":return _a(t,n);default:return On(t,n)}}function Nn(e,t,n,r="linear",a=0,s=1){if(!(n<=0))if(r==="linear")e.setValueAtTime(a,t),e.linearRampToValueAtTime(s,t+n);else if(r==="exponential")e.setValueAtTime(Math.max(a,.001),t),e.exponentialRampToValueAtTime(Math.max(s,.001),t+n);else{const o=Zr(r,1e4,!0),l=new Float32Array(o.length),i=s-a;for(let u=0;u<o.length;u++)l[u]=a+o[u]*i;e.setValueCurveAtTime(l,t,n)}}function Ln(e,t,n,r="linear",a=1,s=0){if(!(n<=0))if(r==="linear")e.setValueAtTime(a,t),e.linearRampToValueAtTime(s,t+n);else if(r==="exponential")e.setValueAtTime(Math.max(a,.001),t),e.exponentialRampToValueAtTime(Math.max(s,.001),t+n);else{const o=Zr(r,1e4,!1),l=new Float32Array(o.length),i=a-s;for(let u=0;u<o.length;u++)l[u]=s+o[u]*i;e.setValueCurveAtTime(l,t,n)}}var Ma=class{constructor(e){this.activePlayers=0,this.track=e.track,this.volumeNode=new P.Volume(this.gainToDb(e.track.gain)),this.panNode=new P.Panner(e.track.stereoPan),this.muteGain=new P.Gain(e.track.muted?0:1);const t=e.destination||P.getDestination();if(e.effects){const r=e.effects(this.muteGain,t,!1);r&&(this.effectsCleanup=r)}else this.muteGain.connect(t);const n=e.clips||(e.buffer?[{buffer:e.buffer,startTime:0,duration:e.buffer.duration,offset:0,fadeIn:e.track.fadeIn,fadeOut:e.track.fadeOut,gain:1}]:[]);this.clips=n.map(r=>{const a=new P.Player({url:r.buffer,loop:!1,onstop:()=>{this.activePlayers--,this.activePlayers===0&&this.onStopCallback&&this.onStopCallback()}}),s=new P.Gain(r.gain);return a.connect(s),s.chain(this.volumeNode,this.panNode,this.muteGain),{player:a,clipInfo:r,fadeGain:s,pausedPosition:0,playStartTime:0}})}scheduleFades(e,t,n=0){const{clipInfo:r,fadeGain:a}=e,s=a.gain._param;s.cancelScheduledValues(0);const o=n-r.offset;if(r.fadeIn&&o<r.fadeIn.duration){const l=r.fadeIn.duration;if(o<=0)Nn(s,t,l,r.fadeIn.type||"linear",0,r.gain);else{const i=l-o,u=o/l,d=r.gain*u;Nn(s,t,i,r.fadeIn.type||"linear",d,r.gain)}}else s.setValueAtTime(r.gain,t);if(r.fadeOut){const i=r.duration-r.fadeOut.duration-o;if(i>0){const u=t+i;Ln(s,u,r.fadeOut.duration,r.fadeOut.type||"linear",r.gain,0)}else if(i>-r.fadeOut.duration){const u=-i,d=r.fadeOut.duration-u,b=u/r.fadeOut.duration,p=r.gain*(1-b);Ln(s,t,d,r.fadeOut.type||"linear",p,0)}}}gainToDb(e){return 20*Math.log10(e)}setVolume(e){this.track.gain=e,this.volumeNode.volume.value=this.gainToDb(e)}setPan(e){this.track.stereoPan=e,this.panNode.pan.value=e}setMute(e){this.track.muted=e,this.muteGain.gain.value=e?0:1}setSolo(e){this.track.soloed=e}play(e,t=0,n){this.clips.forEach(r=>{r.player.stop(),r.player.disconnect(),r.player.dispose();const a=new P.Player({url:r.clipInfo.buffer,loop:!1,onstop:()=>{this.activePlayers--,this.activePlayers===0&&this.onStopCallback&&this.onStopCallback()}});a.connect(r.fadeGain),r.player=a,r.pausedPosition=0}),this.activePlayers=0,this.clips.forEach(r=>{const{player:a,clipInfo:s}=r,o=t,l=s.startTime,i=s.startTime+s.duration;if(o<i){this.activePlayers++;const u=e??P.now();if(r.playStartTime=u,o>=l){const d=o-l+s.offset,b=s.duration-(o-l),p=n?Math.min(n,b):b;r.pausedPosition=d,this.scheduleFades(r,u,d),a.start(u,d,p)}else{const d=l-o,b=n?Math.min(n-d,s.duration):s.duration;d<(n??1/0)?(r.pausedPosition=s.offset,this.scheduleFades(r,u+d,s.offset),a.start(u+d,s.offset,b)):this.activePlayers--}}})}pause(){this.clips.forEach(e=>{if(e.player.state==="started"){const t=(P.now()-e.playStartTime)*e.player.playbackRate;e.pausedPosition=e.pausedPosition+t}e.player.stop()}),this.activePlayers=0}stop(e){const t=e??P.now();this.clips.forEach(n=>{n.player.stop(t),n.pausedPosition=0}),this.activePlayers=0}dispose(){this.effectsCleanup&&this.effectsCleanup(),this.clips.forEach(e=>{e.player.dispose(),e.fadeGain.dispose()}),this.volumeNode.dispose(),this.panNode.dispose(),this.muteGain.dispose()}get id(){return this.track.id}get duration(){if(this.clips.length===0)return 0;const e=this.clips[this.clips.length-1];return e.clipInfo.startTime+e.clipInfo.duration}get buffer(){return this.clips[0]?.clipInfo.buffer}get isPlaying(){return this.clips.some(e=>e.player.state==="started")}get muted(){return this.track.muted}get startTime(){return this.track.startTime}setOnStopCallback(e){this.onStopCallback=e}},Ba=class{constructor(e={}){if(this.tracks=new Map,this.isInitialized=!1,this.soloedTracks=new Set,this.manualMuteState=new Map,this.activeTracks=new Map,this.playbackSessionId=0,this.masterVolume=new P.Volume(this.gainToDb(e.masterGain??1)),e.effects){const t=e.effects(this.masterVolume,P.getDestination(),!1);t&&(this.effectsCleanup=t)}else this.masterVolume.toDestination();e.tracks&&e.tracks.forEach(t=>{this.tracks.set(t.id,t),this.manualMuteState.set(t.id,t.muted)})}gainToDb(e){return 20*Math.log10(e)}async init(){this.isInitialized||(await P.start(),this.isInitialized=!0)}addTrack(e){const t={...e,destination:this.masterVolume},n=new Ma(t);return this.tracks.set(n.id,n),this.manualMuteState.set(n.id,e.track.muted??!1),e.track.soloed&&this.soloedTracks.add(n.id),n}applyInitialSoloState(){this.updateSoloMuting()}removeTrack(e){const t=this.tracks.get(e);t&&(t.dispose(),this.tracks.delete(e),this.manualMuteState.delete(e),this.soloedTracks.delete(e))}getTrack(e){return this.tracks.get(e)}play(e,t,n){if(!this.isInitialized){console.warn("TonePlayout not initialized. Call init() first.");return}const r=e??P.now(),a=t??0;this.playbackSessionId++;const s=this.playbackSessionId;this.activeTracks.clear(),this.tracks.forEach(o=>{const l=o.startTime;if(a>=l){const i=a-l;n!==void 0&&(this.activeTracks.set(o.id,s),o.setOnStopCallback(()=>{this.activeTracks.get(o.id)===s&&(this.activeTracks.delete(o.id),this.activeTracks.size===0&&this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback())})),o.play(r,i,n)}else{const i=l-a;n!==void 0&&(this.activeTracks.set(o.id,s),o.setOnStopCallback(()=>{this.activeTracks.get(o.id)===s&&(this.activeTracks.delete(o.id),this.activeTracks.size===0&&this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback())})),o.play(r+i,0,n)}}),t!==void 0?P.getTransport().start(r,t):P.getTransport().start(r)}pause(){P.getTransport().pause(),this.tracks.forEach(e=>{e.pause()})}stop(){P.getTransport().stop(),this.tracks.forEach(e=>{e.stop()})}setMasterGain(e){this.masterVolume.volume.value=this.gainToDb(e)}setSolo(e,t){const n=this.tracks.get(e);n&&(n.setSolo(t),t?this.soloedTracks.add(e):this.soloedTracks.delete(e),this.updateSoloMuting())}updateSoloMuting(){const e=this.soloedTracks.size>0;this.tracks.forEach((t,n)=>{if(e)if(!this.soloedTracks.has(n))t.setMute(!0);else{const r=this.manualMuteState.get(n)??!1;t.setMute(r)}else{const r=this.manualMuteState.get(n)??!1;t.setMute(r)}})}setMute(e,t){const n=this.tracks.get(e);n&&(this.manualMuteState.set(e,t),n.setMute(t))}getCurrentTime(){return P.getTransport().seconds}seekTo(e){P.getTransport().seconds=e}dispose(){this.tracks.forEach(e=>{e.dispose()}),this.tracks.clear(),this.effectsCleanup&&this.effectsCleanup(),this.masterVolume.dispose()}get context(){return P.getContext()}get sampleRate(){return P.getContext().sampleRate}setOnPlaybackComplete(e){this.onPlaybackCompleteCallback=e}},zt=null;function Fa(){return zt||(zt=new P.Context,P.setContext(zt)),zt}async function un(){const e=Fa();e.state!=="running"&&await e.resume()}var Ot={exports:{}},Rt={};var Xn;function Wa(){if(Xn)return Rt;Xn=1;var e=c,t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,a=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function o(l,i,u){var d,b={},p=null,f=null;u!==void 0&&(p=""+u),i.key!==void 0&&(p=""+i.key),i.ref!==void 0&&(f=i.ref);for(d in i)r.call(i,d)&&!s.hasOwnProperty(d)&&(b[d]=i[d]);if(l&&l.defaultProps)for(d in i=l.defaultProps,i)b[d]===void 0&&(b[d]=i[d]);return{$$typeof:t,type:l,key:p,ref:f,props:b,_owner:a.current}}return Rt.Fragment=n,Rt.jsx=o,Rt.jsxs=o,Rt}var Et={};var Hn;function Za(){return Hn||(Hn=1,process.env.NODE_ENV!=="production"&&(function(){var e=c,t=Symbol.for("react.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),o=Symbol.for("react.provider"),l=Symbol.for("react.context"),i=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),b=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.for("react.offscreen"),C=Symbol.iterator,y="@@iterator";function g(h){if(h===null||typeof h!="object")return null;var R=C&&h[C]||h[y];return typeof R=="function"?R:null}var m=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function w(h){{for(var R=arguments.length,F=new Array(R>1?R-1:0),J=1;J<R;J++)F[J-1]=arguments[J];x("error",h,F)}}function x(h,R,F){{var J=m.ReactDebugCurrentFrame,se=J.getStackAddendum();se!==""&&(R+="%s",F=F.concat([se]));var ce=F.map(function(ae){return String(ae)});ce.unshift("Warning: "+R),Function.prototype.apply.call(console[h],console,ce)}}var v=!1,S=!1,I=!1,$=!1,M=!1,T;T=Symbol.for("react.module.reference");function _(h){return!!(typeof h=="string"||typeof h=="function"||h===r||h===s||M||h===a||h===u||h===d||$||h===f||v||S||I||typeof h=="object"&&h!==null&&(h.$$typeof===p||h.$$typeof===b||h.$$typeof===o||h.$$typeof===l||h.$$typeof===i||h.$$typeof===T||h.getModuleId!==void 0))}function D(h,R,F){var J=h.displayName;if(J)return J;var se=R.displayName||R.name||"";return se!==""?F+"("+se+")":F}function V(h){return h.displayName||"Context"}function W(h){if(h==null)return null;if(typeof h.tag=="number"&&w("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof h=="function")return h.displayName||h.name||null;if(typeof h=="string")return h;switch(h){case r:return"Fragment";case n:return"Portal";case s:return"Profiler";case a:return"StrictMode";case u:return"Suspense";case d:return"SuspenseList"}if(typeof h=="object")switch(h.$$typeof){case l:var R=h;return V(R)+".Consumer";case o:var F=h;return V(F._context)+".Provider";case i:return D(h,h.render,"ForwardRef");case b:var J=h.displayName||null;return J!==null?J:W(h.type)||"Memo";case p:{var se=h,ce=se._payload,ae=se._init;try{return W(ae(ce))}catch{return null}}}return null}var O=Object.assign,N=0,Y,ee,re,X,oe,A,j;function H(){}H.__reactDisabledLog=!0;function U(){{if(N===0){Y=console.log,ee=console.info,re=console.warn,X=console.error,oe=console.group,A=console.groupCollapsed,j=console.groupEnd;var h={configurable:!0,enumerable:!0,value:H,writable:!0};Object.defineProperties(console,{info:h,log:h,warn:h,error:h,group:h,groupCollapsed:h,groupEnd:h})}N++}}function ge(){{if(N--,N===0){var h={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:O({},h,{value:Y}),info:O({},h,{value:ee}),warn:O({},h,{value:re}),error:O({},h,{value:X}),group:O({},h,{value:oe}),groupCollapsed:O({},h,{value:A}),groupEnd:O({},h,{value:j})})}N<0&&w("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Be=m.ReactCurrentDispatcher,ie;function Te(h,R,F){{if(ie===void 0)try{throw Error()}catch(se){var J=se.stack.trim().match(/\n( *(at )?)/);ie=J&&J[1]||""}return`
7
+ `+ie+h}}var ue=!1,me;{var gt=typeof WeakMap=="function"?WeakMap:Map;me=new gt}function dt(h,R){if(!h||ue)return"";{var F=me.get(h);if(F!==void 0)return F}var J;ue=!0;var se=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var ce;ce=Be.current,Be.current=null,U();try{if(R){var ae=function(){throw Error()};if(Object.defineProperty(ae.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ae,[])}catch(B){J=B}Reflect.construct(h,[],ae)}else{try{ae.call()}catch(B){J=B}h.call(ae.prototype)}}else{try{throw Error()}catch(B){J=B}h()}}catch(B){if(B&&J&&typeof B.stack=="string"){for(var ne=B.stack.split(`
8
+ `),ke=J.stack.split(`
9
+ `),pe=ne.length-1,ve=ke.length-1;pe>=1&&ve>=0&&ne[pe]!==ke[ve];)ve--;for(;pe>=1&&ve>=0;pe--,ve--)if(ne[pe]!==ke[ve]){if(pe!==1||ve!==1)do if(pe--,ve--,ve<0||ne[pe]!==ke[ve]){var Me=`
10
+ `+ne[pe].replace(" at new "," at ");return h.displayName&&Me.includes("<anonymous>")&&(Me=Me.replace("<anonymous>",h.displayName)),typeof h=="function"&&me.set(h,Me),Me}while(pe>=1&&ve>=0);break}}}finally{ue=!1,Be.current=ce,ge(),Error.prepareStackTrace=se}var lt=h?h.displayName||h.name:"",et=lt?Te(lt):"";return typeof h=="function"&&me.set(h,et),et}function de(h,R,F){return dt(h,!1)}function at(h){var R=h.prototype;return!!(R&&R.isReactComponent)}function ot(h,R,F){if(h==null)return"";if(typeof h=="function")return dt(h,at(h));if(typeof h=="string")return Te(h);switch(h){case u:return Te("Suspense");case d:return Te("SuspenseList")}if(typeof h=="object")switch(h.$$typeof){case i:return de(h.render);case b:return ot(h.type,R,F);case p:{var J=h,se=J._payload,ce=J._init;try{return ot(ce(se),R,F)}catch{}}}return""}var Je=Object.prototype.hasOwnProperty,st={},z=m.ReactDebugCurrentFrame;function Re(h){if(h){var R=h._owner,F=ot(h.type,h._source,R?R.type:null);z.setExtraStackFrame(F)}else z.setExtraStackFrame(null)}function xe(h,R,F,J,se){{var ce=Function.call.bind(Je);for(var ae in h)if(ce(h,ae)){var ne=void 0;try{if(typeof h[ae]!="function"){var ke=Error((J||"React class")+": "+F+" type `"+ae+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof h[ae]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw ke.name="Invariant Violation",ke}ne=h[ae](R,ae,J,F,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(pe){ne=pe}ne&&!(ne instanceof Error)&&(Re(se),w("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",J||"React class",F,ae,typeof ne),Re(null)),ne instanceof Error&&!(ne.message in st)&&(st[ne.message]=!0,Re(se),w("Failed %s type: %s",F,ne.message),Re(null))}}}var be=Array.isArray;function Ze(h){return be(h)}function Xe(h){{var R=typeof Symbol=="function"&&Symbol.toStringTag,F=R&&h[Symbol.toStringTag]||h.constructor.name||"Object";return F}}function Pe(h){try{return He(h),!1}catch{return!0}}function He(h){return""+h}function Ge(h){if(Pe(h))return w("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Xe(h)),He(h)}var ft=m.ReactCurrentOwner,At={key:!0,ref:!0,__self:!0,__source:!0},K,te;function he(h){if(Je.call(h,"ref")){var R=Object.getOwnPropertyDescriptor(h,"ref").get;if(R&&R.isReactWarning)return!1}return h.ref!==void 0}function ye(h){if(Je.call(h,"key")){var R=Object.getOwnPropertyDescriptor(h,"key").get;if(R&&R.isReactWarning)return!1}return h.key!==void 0}function Ee(h,R){typeof h.ref=="string"&&ft.current}function Ae(h,R){{var F=function(){K||(K=!0,w("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",R))};F.isReactWarning=!0,Object.defineProperty(h,"key",{get:F,configurable:!0})}}function le(h,R){{var F=function(){te||(te=!0,w("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",R))};F.isReactWarning=!0,Object.defineProperty(h,"ref",{get:F,configurable:!0})}}var Ye=function(h,R,F,J,se,ce,ae){var ne={$$typeof:t,type:h,key:R,ref:F,props:ae,_owner:ce};return ne._store={},Object.defineProperty(ne._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(ne,"_self",{configurable:!1,enumerable:!1,writable:!1,value:J}),Object.defineProperty(ne,"_source",{configurable:!1,enumerable:!1,writable:!1,value:se}),Object.freeze&&(Object.freeze(ne.props),Object.freeze(ne)),ne};function Ke(h,R,F,J,se){{var ce,ae={},ne=null,ke=null;F!==void 0&&(Ge(F),ne=""+F),ye(R)&&(Ge(R.key),ne=""+R.key),he(R)&&(ke=R.ref,Ee(R,se));for(ce in R)Je.call(R,ce)&&!At.hasOwnProperty(ce)&&(ae[ce]=R[ce]);if(h&&h.defaultProps){var pe=h.defaultProps;for(ce in pe)ae[ce]===void 0&&(ae[ce]=pe[ce])}if(ne||ke){var ve=typeof h=="function"?h.displayName||h.name||"Unknown":h;ne&&Ae(ae,ve),ke&&le(ae,ve)}return Ye(h,ne,ke,se,J,ft.current,ae)}}var ze=m.ReactCurrentOwner,_e=m.ReactDebugCurrentFrame;function Ie(h){if(h){var R=h._owner,F=ot(h.type,h._source,R?R.type:null);_e.setExtraStackFrame(F)}else _e.setExtraStackFrame(null)}var qe;qe=!1;function mt(h){return typeof h=="object"&&h!==null&&h.$$typeof===t}function Bt(){{if(ze.current){var h=W(ze.current.type);if(h)return`
11
+
12
+ Check the render method of \``+h+"`."}return""}}function it(h){return""}var Ft={};function ht(h){{var R=Bt();if(!R){var F=typeof h=="string"?h:h.displayName||h.name;F&&(R=`
13
+
14
+ Check the top-level render call using <`+F+">.")}return R}}function Wt(h,R){{if(!h._store||h._store.validated||h.key!=null)return;h._store.validated=!0;var F=ht(R);if(Ft[F])return;Ft[F]=!0;var J="";h&&h._owner&&h._owner!==ze.current&&(J=" It was passed a child from "+W(h._owner.type)+"."),Ie(h),w('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',F,J),Ie(null)}}function Zt(h,R){{if(typeof h!="object")return;if(Ze(h))for(var F=0;F<h.length;F++){var J=h[F];mt(J)&&Wt(J,R)}else if(mt(h))h._store&&(h._store.validated=!0);else if(h){var se=g(h);if(typeof se=="function"&&se!==h.entries)for(var ce=se.call(h),ae;!(ae=ce.next()).done;)mt(ae.value)&&Wt(ae.value,R)}}}function bt(h){{var R=h.type;if(R==null||typeof R=="string")return;var F;if(typeof R=="function")F=R.propTypes;else if(typeof R=="object"&&(R.$$typeof===i||R.$$typeof===b))F=R.propTypes;else return;if(F){var J=W(R);xe(F,h.props,"prop",J,h)}else if(R.PropTypes!==void 0&&!qe){qe=!0;var se=W(R);w("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",se||"Unknown")}typeof R.getDefaultProps=="function"&&!R.getDefaultProps.isReactClassApproved&&w("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Qe(h){{for(var R=Object.keys(h.props),F=0;F<R.length;F++){var J=R[F];if(J!=="children"&&J!=="key"){Ie(h),w("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",J),Ie(null);break}}h.ref!==null&&(Ie(h),w("Invalid attribute `ref` supplied to `React.Fragment`."),Ie(null))}}var Fe={};function vt(h,R,F,J,se,ce){{var ae=_(h);if(!ae){var ne="";(h===void 0||typeof h=="object"&&h!==null&&Object.keys(h).length===0)&&(ne+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var ke=it();ke?ne+=ke:ne+=Bt();var pe;h===null?pe="null":Ze(h)?pe="array":h!==void 0&&h.$$typeof===t?(pe="<"+(W(h.type)||"Unknown")+" />",ne=" Did you accidentally export a JSX literal instead of a component?"):pe=typeof h,w("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",pe,ne)}var ve=Ke(h,R,F,se,ce);if(ve==null)return ve;if(ae){var Me=R.children;if(Me!==void 0)if(J)if(Ze(Me)){for(var lt=0;lt<Me.length;lt++)Zt(Me[lt],h);Object.freeze&&Object.freeze(Me)}else w("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Zt(Me,h)}if(Je.call(R,"key")){var et=W(h),B=Object.keys(R).filter(function(fe){return fe!=="key"}),L=B.length>0?"{key: someKey, "+B.join(": ..., ")+": ...}":"{key: someKey}";if(!Fe[et+L]){var q=B.length>0?"{"+B.join(": ..., ")+": ...}":"{}";w(`A props object containing a "key" prop is being spread into JSX:
15
+ let props = %s;
16
+ <%s {...props} />
17
+ React keys must be passed directly to JSX without using spread:
18
+ let props = %s;
19
+ <%s key={someKey} {...props} />`,L,et,q,et),Fe[et+L]=!0}}return h===r?Qe(ve):bt(ve),ve}}function rn(h,R,F){return vt(h,R,F,!0)}function an(h,R,F){return vt(h,R,F,!1)}var on=an,sn=rn;Et.Fragment=r,Et.jsx=on,Et.jsxs=sn})()),Et}var Gn;function Pa(){return Gn||(Gn=1,process.env.NODE_ENV==="production"?Ot.exports=Wa():Ot.exports=Za()),Ot.exports}var E=Pa();const Va=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Ut=Va?c.useLayoutEffect:c.useEffect;function ja(e){const t=c.useRef(e);return Ut(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return t.current==null?void 0:t.current(...r)},[])}function Pr(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return Ut(()=>{n.current!==e&&(n.current=e)},t),n}function Ht(e){const t=ja(e),n=c.useRef(null),r=c.useCallback(a=>{a!==n.current&&t?.(a,n.current),n.current=a},[]);return[n,r]}let dn={};function Vr(e,t){return c.useMemo(()=>{const n=dn[e]==null?0:dn[e]+1;return dn[e]=n,e+"-"+n},[e,t])}const Cn=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[Cn.Translate.toString(e),Cn.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}});var Yn;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(Yn||(Yn={}));function Kn(){}const za=Object.freeze({x:0,y:0});var wt;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(wt||(wt={}));var Un;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(Un||(Un={}));var ct;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(ct||(ct={}));ct.Space,ct.Enter,ct.Esc,ct.Space,ct.Enter,ct.Tab;var Jn;(function(e){e[e.RightClick=2]="RightClick"})(Jn||(Jn={}));var qn;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(qn||(qn={}));var Qn;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Qn||(Qn={}));wt.Backward+"",wt.Forward+"",wt.Backward+"",wt.Forward+"";var wn;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(wn||(wn={}));var xn;(function(e){e.Optimized="optimized"})(xn||(xn={}));function Oa(e,t){return c.useMemo(()=>e.reduce((n,r)=>{let{eventName:a,handler:s}=r;return n[a]=o=>{s(o,t)},n},{}),[e,t])}wn.WhileDragging,xn.Optimized;const Na={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Kn,draggableNodes:new Map,over:null,measureDroppableContainers:Kn},La=c.createContext(Na),Xa=c.createContext({...za,scaleX:1,scaleY:1});var er;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(er||(er={}));const Ha=c.createContext(null),tr="button",Ga="Draggable";function fn(e){let{id:t,data:n,disabled:r=!1,attributes:a}=e;const s=Vr(Ga),{activators:o,activatorEvent:l,active:i,activeNodeRect:u,ariaDescribedById:d,draggableNodes:b,over:p}=c.useContext(La),{role:f=tr,roleDescription:C="draggable",tabIndex:y=0}=a??{},g=i?.id===t,m=c.useContext(g?Xa:Ha),[w,x]=Ht(),[v,S]=Ht(),I=Oa(o,t),$=Pr(n);Ut(()=>(b.set(t,{id:t,key:s,node:w,activatorNode:v,data:$}),()=>{const T=b.get(t);T&&T.key===s&&b.delete(t)}),[b,t]);const M=c.useMemo(()=>({role:f,tabIndex:y,"aria-disabled":r,"aria-pressed":g&&f===tr?!0:void 0,"aria-roledescription":C,"aria-describedby":d.draggable}),[r,f,y,g,C,d.draggable]);return{active:i,activatorEvent:l,activeNodeRect:u,attributes:M,isDragging:g,listeners:r?void 0:I,node:w,over:p,setNodeRef:x,setActivatorNodeRef:S,transform:m}}const Ya=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M157.27,21.22a12,12,0,0,0-12.64,1.31L75.88,76H32A20,20,0,0,0,12,96v64a20,20,0,0,0,20,20H75.88l68.75,53.47A12,12,0,0,0,164,224V32A12,12,0,0,0,157.27,21.22ZM36,100H68v56H36Zm104,99.46L92,162.13V93.87l48-37.33ZM212,128a44,44,0,0,1-11,29.11,12,12,0,1,1-18-15.88,20,20,0,0,0,0-26.43,12,12,0,0,1,18-15.86A43.94,43.94,0,0,1,212,128Zm40,0a83.87,83.87,0,0,1-21.39,56,12,12,0,0,1-17.89-16,60,60,0,0,0,0-80,12,12,0,1,1,17.88-16A83.87,83.87,0,0,1,252,128Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),Q.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55Zm54-106.08a40,40,0,0,1,0,52.88,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,0,1,12-10.58ZM248,128a79.9,79.9,0,0,1-20.37,53.34,8,8,0,0,1-11.92-10.67,64,64,0,0,0,0-85.33,8,8,0,1,1,11.92-10.67A79.83,79.83,0,0,1,248,128Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M160,32.25V223.69a8.29,8.29,0,0,1-3.91,7.18,8,8,0,0,1-9-.56l-65.57-51A4,4,0,0,1,80,176.16V79.84a4,4,0,0,1,1.55-3.15l65.57-51a8,8,0,0,1,10,.16A8.27,8.27,0,0,1,160,32.25ZM60,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H60a4,4,0,0,0,4-4V84A4,4,0,0,0,60,80Zm126.77,20.84a8,8,0,0,0-.72,11.3,24,24,0,0,1,0,31.72,8,8,0,1,0,12,10.58,40,40,0,0,0,0-52.88A8,8,0,0,0,186.74,100.84Zm40.89-26.17a8,8,0,1,0-11.92,10.66,64,64,0,0,1,0,85.34,8,8,0,1,0,11.92,10.66,80,80,0,0,0,0-106.66Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M154.64,26.61a6,6,0,0,0-6.32.65L77.94,82H32A14,14,0,0,0,18,96v64a14,14,0,0,0,14,14H77.94l70.38,54.74A6,6,0,0,0,158,224V32A6,6,0,0,0,154.64,26.61ZM30,160V96a2,2,0,0,1,2-2H74v68H32A2,2,0,0,1,30,160Zm116,51.73L86,165.07V90.93l60-46.66Zm50.53-108.85a38,38,0,0,1,0,50.24,6,6,0,1,1-9-7.94,26,26,0,0,0,0-34.37,6,6,0,0,1,9-7.93ZM246,128a77.86,77.86,0,0,1-19.86,52,6,6,0,1,1-8.94-8,66,66,0,0,0,0-88,6,6,0,1,1,8.94-8A77.86,77.86,0,0,1,246,128Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55Zm54-106.08a40,40,0,0,1,0,52.88,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,0,1,12-10.58ZM248,128a79.9,79.9,0,0,1-20.37,53.34,8,8,0,0,1-11.92-10.67,64,64,0,0,0,0-85.33,8,8,0,1,1,11.92-10.67A79.83,79.83,0,0,1,248,128Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M153.76,28.41a4,4,0,0,0-4.22.43L78.63,84H32A12,12,0,0,0,20,96v64a12,12,0,0,0,12,12H78.63l70.91,55.16A4.07,4.07,0,0,0,152,228a3.92,3.92,0,0,0,1.76-.41A4,4,0,0,0,156,224V32A4,4,0,0,0,153.76,28.41ZM28,160V96a4,4,0,0,1,4-4H76v72H32A4,4,0,0,1,28,160Zm120,55.82L84,166V90l64-49.78Zm47-111.61a36,36,0,0,1,0,47.59,4,4,0,1,1-6-5.3,28,28,0,0,0,0-37,4,4,0,0,1,6-5.28ZM244,128a75.88,75.88,0,0,1-19.35,50.67,4,4,0,0,1-6-5.34,68,68,0,0,0,0-90.66,4,4,0,0,1,6-5.34A75.88,75.88,0,0,1,244,128Z"}))]]),Ka=new Map([["bold",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M157.27,21.22a12,12,0,0,0-12.64,1.31L75.88,76H32A20,20,0,0,0,12,96v64a20,20,0,0,0,20,20H75.88l68.75,53.47A12,12,0,0,0,164,224V32A12,12,0,0,0,157.27,21.22ZM36,100H68v56H36Zm104,99.46L92,162.13V93.87l48-37.33ZM212,128a44,44,0,0,1-11,29.11,12,12,0,0,1-18-15.88,20,20,0,0,0,0-26.44,12,12,0,0,1,18-15.85A43.94,43.94,0,0,1,212,128Z"}))],["duotone",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),Q.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55ZM208,128a39.93,39.93,0,0,1-10,26.46,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,1,1,12-10.58A40,40,0,0,1,208,128Z"}))],["fill",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M160,32.25V223.69a8.29,8.29,0,0,1-3.91,7.18,8,8,0,0,1-9-.56l-65.57-51A4,4,0,0,1,80,176.16V79.84a4,4,0,0,1,1.55-3.15l65.57-51a8,8,0,0,1,10,.16A8.27,8.27,0,0,1,160,32.25ZM60,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H60a4,4,0,0,0,4-4V84A4,4,0,0,0,60,80ZM198,101.56a8,8,0,1,0-12,10.58,24,24,0,0,1,0,31.72,8,8,0,1,0,12,10.58,40,40,0,0,0,0-52.88Z"}))],["light",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M154.64,26.61a6,6,0,0,0-6.32.65L77.94,82H32A14,14,0,0,0,18,96v64a14,14,0,0,0,14,14H77.94l70.38,54.74A6,6,0,0,0,158,224V32A6,6,0,0,0,154.64,26.61ZM30,160V96a2,2,0,0,1,2-2H74v68H32A2,2,0,0,1,30,160Zm116,51.73L86,165.07V90.93l60-46.66ZM206,128a37.94,37.94,0,0,1-9.5,25.14,6,6,0,1,1-9-7.94,26,26,0,0,0,0-34.37,6,6,0,0,1,9-7.93A38,38,0,0,1,206,128Z"}))],["regular",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88,164.09V91.91l56-43.55ZM208,128a39.93,39.93,0,0,1-10,26.46,8,8,0,0,1-12-10.58,24,24,0,0,0,0-31.72,8,8,0,1,1,12-10.58A40,40,0,0,1,208,128Z"}))],["thin",Q.createElement(Q.Fragment,null,Q.createElement("path",{d:"M153.76,28.41a4,4,0,0,0-4.22.43L78.63,84H32A12,12,0,0,0,20,96v64a12,12,0,0,0,12,12H78.63l70.91,55.16A4.07,4.07,0,0,0,152,228a3.92,3.92,0,0,0,1.76-.41A4,4,0,0,0,156,224V32A4,4,0,0,0,153.76,28.41ZM28,160V96a4,4,0,0,1,4-4H76v72H32A4,4,0,0,1,28,160Zm120,55.82L84,166V90l64-49.78ZM204,128a36,36,0,0,1-9,23.82,4,4,0,1,1-6-5.3,28,28,0,0,0,0-37,4,4,0,0,1,6-5.28A36,36,0,0,1,204,128Z"}))]]),Ua=c.createContext({color:"currentColor",size:"1em",weight:"regular",mirrored:!1}),En=Q.forwardRef((e,t)=>{const{alt:n,color:r,size:a,weight:s,mirrored:o,children:l,weights:i,...u}=e,{color:d="currentColor",size:b,weight:p="regular",mirrored:f=!1,...C}=Q.useContext(Ua);return Q.createElement("svg",{ref:t,xmlns:"http://www.w3.org/2000/svg",width:a??b,height:a??b,fill:r??d,viewBox:"0 0 256 256",transform:o||f?"scale(-1, 1)":void 0,...C,...u},!!n&&Q.createElement("title",null,n),l,i.get(s??p))});En.displayName="IconBase";const jr=Q.forwardRef((e,t)=>Q.createElement(En,{ref:t,...e,weights:Ya}));jr.displayName="SpeakerHighIcon";const zr=Q.forwardRef((e,t)=>Q.createElement(En,{ref:t,...e,weights:Ka}));zr.displayName="SpeakerLowIcon";k.span`
223
20
  font-family: 'Courier New', Monaco, monospace;
224
21
  font-size: 1rem;
225
22
  font-weight: 600;
226
- color: ${s=>s.theme?.textColor||"#333"};
23
+ color: ${e=>e.theme?.textColor||"#333"};
227
24
  user-select: none;
228
- `;var Wa=W.button`
25
+ `;var Dn=k.button`
229
26
  display: inline-flex;
230
27
  align-items: center;
231
28
  justify-content: center;
232
29
  padding: 0.5rem 1rem;
233
- font-family: ${s=>s.theme.fontFamily};
234
- font-size: ${s=>s.theme.fontSize};
30
+ font-family: ${e=>e.theme.fontFamily};
31
+ font-size: ${e=>e.theme.fontSize};
235
32
  font-weight: 500;
236
- color: ${s=>s.theme.buttonText};
237
- background-color: ${s=>s.theme.buttonBackground};
238
- border: 1px solid ${s=>s.theme.buttonBorder};
239
- border-radius: ${s=>s.theme.borderRadius};
33
+ color: ${e=>e.theme.buttonText};
34
+ background-color: ${e=>e.theme.buttonBackground};
35
+ border: 1px solid ${e=>e.theme.buttonBorder};
36
+ border-radius: ${e=>e.theme.borderRadius};
240
37
  cursor: pointer;
241
38
  outline: none;
242
39
  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
243
40
  box-shadow 0.15s ease-in-out;
244
41
 
245
42
  &:hover:not(:disabled) {
246
- background-color: ${s=>s.theme.buttonHoverBackground};
43
+ background-color: ${e=>e.theme.buttonHoverBackground};
247
44
  }
248
45
 
249
46
  &:focus {
250
- box-shadow: 0 0 0 2px ${s=>s.theme.inputFocusBorder}33;
47
+ box-shadow: 0 0 0 2px ${e=>e.theme.inputFocusBorder}33;
251
48
  }
252
49
 
253
50
  &:disabled {
254
51
  opacity: 0.6;
255
52
  cursor: not-allowed;
256
53
  }
257
- `;W(Wa)`
54
+ `;k(Dn)`
258
55
  padding: 0.25rem 0.5rem;
259
- font-size: ${s=>s.theme.fontSizeSmall};
260
- `;W(Wa)`
56
+ font-size: ${e=>e.theme.fontSizeSmall};
57
+ `;k(Dn)`
261
58
  padding: 0.5rem;
262
59
  min-width: 2.25rem;
263
60
  min-height: 2.25rem;
264
- `;W(Wa)`
61
+ `;k(Dn)`
265
62
  padding: 0.25rem;
266
63
  min-width: 1.75rem;
267
64
  min-height: 1.75rem;
268
- font-size: ${s=>s.theme.fontSizeSmall};
269
- `;var Lr=W.div`
65
+ font-size: ${e=>e.theme.fontSizeSmall};
66
+ `;var Jt=k.div`
270
67
  display: inline-flex;
271
68
  align-items: center;
272
69
  gap: 0.5rem;
273
- `,zr=W.input`
70
+ `,qt=k.input`
274
71
  cursor: pointer;
275
- accent-color: ${s=>s.theme.inputFocusBorder};
72
+ accent-color: ${e=>e.theme.inputFocusBorder};
276
73
 
277
74
  &:disabled {
278
75
  cursor: not-allowed;
279
76
  }
280
- `,Zr=W.label`
77
+ `,Qt=k.label`
281
78
  margin: 0;
282
79
  cursor: pointer;
283
80
  user-select: none;
284
- font-family: ${s=>s.theme.fontFamily};
285
- font-size: ${s=>s.theme.fontSize};
286
- color: ${s=>s.theme.textColor};
287
- `,rs=W.button`
81
+ font-family: ${e=>e.theme.fontFamily};
82
+ font-size: ${e=>e.theme.fontSize};
83
+ color: ${e=>e.theme.textColor};
84
+ `,Ne=k.button`
288
85
  padding: 0.5rem 1rem;
289
- background: ${s=>s.theme.buttonBackground||"#007bff"};
290
- color: ${s=>s.theme.buttonText||"white"};
86
+ background: ${e=>e.theme.buttonBackground||"#007bff"};
87
+ color: ${e=>e.theme.buttonText||"white"};
291
88
  border: none;
292
- border-radius: ${s=>s.theme.borderRadius};
89
+ border-radius: ${e=>e.theme.borderRadius};
293
90
  cursor: pointer;
294
- font-family: ${s=>s.theme.fontFamily};
295
- font-size: ${s=>s.theme.fontSize};
91
+ font-family: ${e=>e.theme.fontFamily};
92
+ font-size: ${e=>e.theme.fontSize};
296
93
  font-weight: 500;
297
94
  transition: background-color 0.15s ease-in-out;
298
95
 
299
96
  &:hover:not(:disabled) {
300
- background: ${s=>s.theme.buttonHoverBackground||"#0056b3"};
97
+ background: ${e=>e.theme.buttonHoverBackground||"#0056b3"};
301
98
  }
302
99
 
303
100
  &:focus {
304
101
  outline: none;
305
- box-shadow: 0 0 0 2px ${s=>s.theme.buttonBackground||"#007bff"}66;
102
+ box-shadow: 0 0 0 2px ${e=>e.theme.buttonBackground||"#007bff"}66;
306
103
  }
307
104
 
308
105
  &:disabled {
@@ -310,49 +107,49 @@ React keys must be passed directly to JSX without using spread:
310
107
  cursor: not-allowed;
311
108
  opacity: 0.6;
312
109
  }
313
- `,wu=W.input`
110
+ `,Or=k.input`
314
111
  padding: 0.5rem 0.75rem;
315
- font-family: ${s=>s.theme.fontFamily};
316
- font-size: ${s=>s.theme.fontSize};
317
- color: ${s=>s.theme.inputText};
318
- background-color: ${s=>s.theme.inputBackground};
319
- border: 1px solid ${s=>s.theme.inputBorder};
320
- border-radius: ${s=>s.theme.borderRadius};
112
+ font-family: ${e=>e.theme.fontFamily};
113
+ font-size: ${e=>e.theme.fontSize};
114
+ color: ${e=>e.theme.inputText};
115
+ background-color: ${e=>e.theme.inputBackground};
116
+ border: 1px solid ${e=>e.theme.inputBorder};
117
+ border-radius: ${e=>e.theme.borderRadius};
321
118
  outline: none;
322
119
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
323
120
 
324
121
  &::placeholder {
325
- color: ${s=>s.theme.inputPlaceholder};
122
+ color: ${e=>e.theme.inputPlaceholder};
326
123
  }
327
124
 
328
125
  &:focus {
329
- border-color: ${s=>s.theme.inputFocusBorder};
330
- box-shadow: 0 0 0 2px ${s=>s.theme.inputFocusBorder}33;
126
+ border-color: ${e=>e.theme.inputFocusBorder};
127
+ box-shadow: 0 0 0 2px ${e=>e.theme.inputFocusBorder}33;
331
128
  }
332
129
 
333
130
  &:disabled {
334
131
  opacity: 0.6;
335
132
  cursor: not-allowed;
336
133
  }
337
- `;W(wu)`
134
+ `;k(Or)`
338
135
  padding: 0.25rem 0.5rem;
339
- font-size: ${s=>s.theme.fontSizeSmall};
340
- `;var xu=W.label`
341
- font-family: ${s=>s.theme.fontFamily};
342
- font-size: ${s=>s.theme.fontSizeSmall};
136
+ font-size: ${e=>e.theme.fontSizeSmall};
137
+ `;var Nr=k.label`
138
+ font-family: ${e=>e.theme.fontFamily};
139
+ font-size: ${e=>e.theme.fontSizeSmall};
343
140
  font-weight: 500;
344
- color: ${s=>s.theme.textColorMuted};
141
+ color: ${e=>e.theme.textColorMuted};
345
142
  margin-bottom: 0.25rem;
346
143
  display: block;
347
- `;W.label`
348
- font-family: ${s=>s.theme.fontFamily};
349
- font-size: ${s=>s.theme.fontSize};
350
- color: ${s=>s.theme.textColor};
144
+ `;k.label`
145
+ font-family: ${e=>e.theme.fontFamily};
146
+ font-size: ${e=>e.theme.fontSize};
147
+ color: ${e=>e.theme.textColor};
351
148
  display: inline-flex;
352
149
  align-items: center;
353
150
  gap: 0.5rem;
354
151
  cursor: pointer;
355
- `;var a0=W.span`
152
+ `;var Ja=k.span`
356
153
  position: absolute;
357
154
  width: 1px;
358
155
  height: 1px;
@@ -362,14 +159,14 @@ React keys must be passed directly to JSX without using spread:
362
159
  clip: rect(0, 0, 0, 0);
363
160
  white-space: nowrap;
364
161
  border: 0;
365
- `,Ba=W.select`
162
+ `,Tn=k.select`
366
163
  padding: 0.5rem 2rem 0.5rem 0.75rem;
367
- font-family: ${s=>s.theme.fontFamily};
368
- font-size: ${s=>s.theme.fontSize};
369
- color: ${s=>s.theme.inputText};
370
- background-color: ${s=>s.theme.inputBackground};
371
- border: 1px solid ${s=>s.theme.inputBorder};
372
- border-radius: ${s=>s.theme.borderRadius};
164
+ font-family: ${e=>e.theme.fontFamily};
165
+ font-size: ${e=>e.theme.fontSize};
166
+ color: ${e=>e.theme.inputText};
167
+ background-color: ${e=>e.theme.inputBackground};
168
+ border: 1px solid ${e=>e.theme.inputBorder};
169
+ border-radius: ${e=>e.theme.borderRadius};
373
170
  outline: none;
374
171
  cursor: pointer;
375
172
  appearance: none;
@@ -379,8 +176,8 @@ React keys must be passed directly to JSX without using spread:
379
176
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
380
177
 
381
178
  &:focus {
382
- border-color: ${s=>s.theme.inputFocusBorder};
383
- box-shadow: 0 0 0 2px ${s=>s.theme.inputFocusBorder}33;
179
+ border-color: ${e=>e.theme.inputFocusBorder};
180
+ box-shadow: 0 0 0 2px ${e=>e.theme.inputFocusBorder}33;
384
181
  }
385
182
 
386
183
  &:disabled {
@@ -390,18 +187,18 @@ React keys must be passed directly to JSX without using spread:
390
187
 
391
188
  /* Style native option elements for dark mode support */
392
189
  option {
393
- color: ${s=>s.theme.inputText};
394
- background-color: ${s=>s.theme.inputBackground};
190
+ color: ${e=>e.theme.inputText};
191
+ background-color: ${e=>e.theme.inputBackground};
395
192
  }
396
- `;W(Ba)`
193
+ `;k(Tn)`
397
194
  padding: 0.25rem 1.75rem 0.25rem 0.5rem;
398
- font-size: ${s=>s.theme.fontSizeSmall};
399
- `;var Cu=W.input.attrs({type:"range"})`
195
+ font-size: ${e=>e.theme.fontSizeSmall};
196
+ `;var Lr=k.input.attrs({type:"range"})`
400
197
  -webkit-appearance: none;
401
198
  appearance: none;
402
199
  width: 100%;
403
200
  height: 6px;
404
- background: ${s=>s.theme.sliderTrackColor};
201
+ background: ${e=>e.theme.sliderTrackColor};
405
202
  border-radius: 3px;
406
203
  cursor: pointer;
407
204
  outline: none;
@@ -412,8 +209,8 @@ React keys must be passed directly to JSX without using spread:
412
209
  appearance: none;
413
210
  width: 16px;
414
211
  height: 16px;
415
- background: ${s=>s.theme.sliderThumbColor};
416
- border: 2px solid ${s=>s.theme.inputBackground};
212
+ background: ${e=>e.theme.sliderThumbColor};
213
+ border: 2px solid ${e=>e.theme.inputBackground};
417
214
  border-radius: 50%;
418
215
  cursor: pointer;
419
216
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
@@ -429,8 +226,8 @@ React keys must be passed directly to JSX without using spread:
429
226
  &::-moz-range-thumb {
430
227
  width: 16px;
431
228
  height: 16px;
432
- background: ${s=>s.theme.sliderThumbColor};
433
- border: 2px solid ${s=>s.theme.inputBackground};
229
+ background: ${e=>e.theme.sliderThumbColor};
230
+ border: 2px solid ${e=>e.theme.inputBackground};
434
231
  border-radius: 50%;
435
232
  cursor: pointer;
436
233
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
@@ -443,7 +240,7 @@ React keys must be passed directly to JSX without using spread:
443
240
  }
444
241
 
445
242
  &::-moz-range-track {
446
- background: ${s=>s.theme.sliderTrackColor};
243
+ background: ${e=>e.theme.sliderTrackColor};
447
244
  border-radius: 3px;
448
245
  height: 6px;
449
246
  }
@@ -453,11 +250,11 @@ React keys must be passed directly to JSX without using spread:
453
250
  }
454
251
 
455
252
  &:focus::-webkit-slider-thumb {
456
- box-shadow: 0 0 0 3px ${s=>s.theme.inputFocusBorder}33;
253
+ box-shadow: 0 0 0 3px ${e=>e.theme.inputFocusBorder}33;
457
254
  }
458
255
 
459
256
  &:focus::-moz-range-thumb {
460
- box-shadow: 0 0 0 3px ${s=>s.theme.inputFocusBorder}33;
257
+ box-shadow: 0 0 0 3px ${e=>e.theme.inputFocusBorder}33;
461
258
  }
462
259
 
463
260
  &:disabled {
@@ -472,7 +269,7 @@ React keys must be passed directly to JSX without using spread:
472
269
  &:disabled::-moz-range-thumb {
473
270
  cursor: not-allowed;
474
271
  }
475
- `,c0=({checked:s,onChange:e,disabled:t=!1,className:n})=>{const i=r=>{e(r.target.checked)};return E.jsxs(Lr,{className:n,children:[E.jsx(zr,{type:"checkbox",id:"automatic-scroll",className:"automatic-scroll",checked:s,onChange:i,disabled:t}),E.jsx(Zr,{htmlFor:"automatic-scroll",children:"Automatic Scroll"})]})};function Su(s){return typeof s=="object"&&s!==null&&"type"in s}function tr(s){if(!Su(s))return s;const e=s.direction==="vertical"?"to bottom":"to right",t=s.stops.map(n=>`${n.color} ${n.offset*100}%`).join(", ");return`linear-gradient(${e}, ${t})`}var l0={waveformDrawMode:"inverted",waveOutlineColor:"#ffffff",waveFillColor:"#1a7f8e",waveProgressColor:"rgba(0, 0, 0, 0.10)",selectedWaveOutlineColor:"#ffffff",selectedWaveFillColor:"#00b4d8",selectedTrackControlsBackground:"#d9e9ff",timeColor:"#000",timescaleBackgroundColor:"#fff",playheadColor:"#f00",selectionColor:"rgba(255, 105, 180, 0.7)",clipHeaderBackgroundColor:"rgba(0, 0, 0, 0.1)",clipHeaderBorderColor:"rgba(0, 0, 0, 0.2)",clipHeaderTextColor:"#333",clipHeaderFontFamily:"inherit",selectedClipHeaderBackgroundColor:"#b3d9ff",fadeOverlayColor:"rgba(0, 0, 0, 0.4)",backgroundColor:"#ffffff",surfaceColor:"#f5f5f5",borderColor:"#ddd",textColor:"#333",textColorMuted:"#666",inputBackground:"#ffffff",inputBorder:"#ccc",inputText:"#333",inputPlaceholder:"#999",inputFocusBorder:"#0066cc",buttonBackground:"#0091ff",buttonText:"#ffffff",buttonBorder:"#0081e6",buttonHoverBackground:"#0081e6",sliderTrackColor:"#ddd",sliderThumbColor:"#daa520",annotationBoxBackground:"rgba(255, 255, 255, 0.85)",annotationBoxActiveBackground:"rgba(255, 255, 255, 0.95)",annotationBoxHoverBackground:"rgba(255, 255, 255, 0.98)",annotationBoxBorder:"#ff9800",annotationBoxActiveBorder:"#d67600",annotationLabelColor:"#2a2a2a",annotationResizeHandleColor:"rgba(0, 0, 0, 0.4)",annotationResizeHandleActiveColor:"rgba(0, 0, 0, 0.8)",annotationTextItemHoverBackground:"rgba(0, 0, 0, 0.03)",borderRadius:"4px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif',fontSize:"14px",fontSizeSmall:"12px"},u0=1e3;function h0(s,e,t,n){if(!Su(e))return e;let i;e.direction==="vertical"?i=s.createLinearGradient(0,0,0,n):i=s.createLinearGradient(0,0,t,0);for(const r of e.stops)i.addColorStop(r.offset,r.color);return i}var d0=W.canvas.attrs(s=>({style:{width:`${s.$cssWidth}px`,height:`${s.$waveHeight}px`}}))`
272
+ `,qa=({checked:e,onChange:t,disabled:n=!1,className:r})=>{const a=s=>{t(s.target.checked)};return E.jsxs(Jt,{className:r,children:[E.jsx(qt,{type:"checkbox",id:"automatic-scroll",className:"automatic-scroll",checked:e,onChange:a,disabled:n}),E.jsx(Qt,{htmlFor:"automatic-scroll",children:"Automatic Scroll"})]})};function Xr(e){return typeof e=="object"&&e!==null&&"type"in e}function Gt(e){if(!Xr(e))return e;const t=e.direction==="vertical"?"to bottom":"to right",n=e.stops.map(r=>`${r.color} ${r.offset*100}%`).join(", ");return`linear-gradient(${t}, ${n})`}var Qa={waveformDrawMode:"inverted",waveOutlineColor:"#ffffff",waveFillColor:"#1a7f8e",waveProgressColor:"rgba(0, 0, 0, 0.10)",selectedWaveOutlineColor:"#ffffff",selectedWaveFillColor:"#00b4d8",selectedTrackControlsBackground:"#d9e9ff",timeColor:"#000",timescaleBackgroundColor:"#fff",playheadColor:"#f00",selectionColor:"rgba(255, 105, 180, 0.7)",loopRegionColor:"rgba(59, 130, 246, 0.3)",loopMarkerColor:"#3b82f6",clipHeaderBackgroundColor:"rgba(0, 0, 0, 0.1)",clipHeaderBorderColor:"rgba(0, 0, 0, 0.2)",clipHeaderTextColor:"#333",clipHeaderFontFamily:"inherit",selectedClipHeaderBackgroundColor:"#b3d9ff",fadeOverlayColor:"rgba(0, 0, 0, 0.4)",backgroundColor:"#ffffff",surfaceColor:"#f5f5f5",borderColor:"#ddd",textColor:"#333",textColorMuted:"#666",inputBackground:"#ffffff",inputBorder:"#ccc",inputText:"#333",inputPlaceholder:"#999",inputFocusBorder:"#0066cc",buttonBackground:"#0091ff",buttonText:"#ffffff",buttonBorder:"#0081e6",buttonHoverBackground:"#0081e6",sliderTrackColor:"#ddd",sliderThumbColor:"#daa520",annotationBoxBackground:"rgba(255, 255, 255, 0.85)",annotationBoxActiveBackground:"rgba(255, 255, 255, 0.95)",annotationBoxHoverBackground:"rgba(255, 255, 255, 0.98)",annotationBoxBorder:"#ff9800",annotationBoxActiveBorder:"#d67600",annotationLabelColor:"#2a2a2a",annotationResizeHandleColor:"rgba(0, 0, 0, 0.4)",annotationResizeHandleActiveColor:"rgba(0, 0, 0, 0.8)",annotationTextItemHoverBackground:"rgba(0, 0, 0, 0.03)",borderRadius:"4px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif',fontSize:"14px",fontSizeSmall:"12px"},eo=1e3;function to(e,t,n,r){if(!Xr(t))return t;let a;t.direction==="vertical"?a=e.createLinearGradient(0,0,0,r):a=e.createLinearGradient(0,0,n,0);for(const s of t.stops)a.addColorStop(s.offset,s.color);return a}var no=k.canvas.attrs(e=>({style:{width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`}}))`
476
273
  float: left;
477
274
  position: relative;
478
275
  /* Promote to own compositing layer for smoother scrolling */
@@ -480,87 +277,89 @@ React keys must be passed directly to JSX without using spread:
480
277
  /* Disable image rendering interpolation */
481
278
  image-rendering: pixelated;
482
279
  image-rendering: crisp-edges;
483
- `,p0=W.div.attrs(s=>({style:{top:`${s.$waveHeight*s.$index}px`,width:`${s.$cssWidth}px`,height:`${s.$waveHeight}px`}}))`
280
+ `,ro=k.div.attrs(e=>({style:{top:`${e.$waveHeight*e.$index}px`,width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`}}))`
484
281
  position: absolute;
485
- background: ${s=>s.$waveFillColor};
282
+ background: ${e=>e.$waveFillColor};
486
283
  /* Force GPU compositing layer to reduce scroll flickering */
487
284
  transform: translateZ(0);
488
285
  backface-visibility: hidden;
489
- `,f0=s=>{const{data:e,bits:t,length:n,index:i,className:r,devicePixelRatio:o=1,waveHeight:a=80,waveOutlineColor:c="#E0EFF1",waveFillColor:l="grey",barWidth:u=1,barGap:h=0,transparentBackground:p=!1,drawMode:d="inverted"}=s,f=S.useRef([]),_=S.useCallback(v=>{if(v!==null){const b=parseInt(v.dataset.index,10);f.current[b]=v}},[]);S.useLayoutEffect(()=>{const v=f.current,b=u+h;let k=0;for(let T=0;T<v.length;T++){const R=v[T],I=R.getContext("2d"),A=Math.floor(a/2),D=2**(t-1);if(I){I.resetTransform(),I.clearRect(0,0,R.width,R.height),I.imageSmoothingEnabled=!1,I.scale(o,o);const M=R.width/o;let N;d==="normal"?N=l:N=c,I.fillStyle=h0(I,N,M,a);const q=k,V=k+M,j=Math.floor((q-u+b)/b)*b;for(let G=Math.max(0,j);G<V;G+=b){const B=G-q;if(B+u<=0)continue;const Z=G;if(Z*2+1<e.length){const X=e[Z*2]/D,ee=e[Z*2+1]/D,pe=Math.abs(X*A),ie=Math.abs(ee*A);d==="normal"?I.fillRect(B,A-ie,u,ie+pe):(I.fillRect(B,0,u,A-ie),I.fillRect(B,A+pe,u,A-pe))}}}k+=R.width/o}},[e,t,a,c,l,o,n,u,h,d]);let m=n,g=0;const y=[];for(;m>0;){const v=Math.min(m,u0),b=E.jsx(d0,{$cssWidth:v,width:v*o,height:a*o,$waveHeight:a,"data-index":g,ref:_},`${n}-${g}`);y.push(b),m-=v,g+=1}const w=p?"transparent":tr(l);return E.jsx(p0,{$index:i,$cssWidth:n,className:r,$waveHeight:a,$waveFillColor:w,children:y})},Tu=22,ku=W.div`
286
+ `,ao=e=>{const{data:t,bits:n,length:r,index:a,className:s,devicePixelRatio:o=1,waveHeight:l=80,waveOutlineColor:i="#E0EFF1",waveFillColor:u="grey",barWidth:d=1,barGap:b=0,transparentBackground:p=!1,drawMode:f="inverted"}=e,C=c.useRef([]),y=c.useCallback(S=>{if(S!==null){const I=parseInt(S.dataset.index,10);C.current[I]=S}},[]);c.useLayoutEffect(()=>{const S=C.current,I=d+b;let $=0;for(let M=0;M<S.length;M++){const T=S[M],_=T.getContext("2d"),D=Math.floor(l/2),V=2**(n-1);if(_){_.resetTransform(),_.clearRect(0,0,T.width,T.height),_.imageSmoothingEnabled=!1,_.scale(o,o);const W=T.width/o;let O;f==="normal"?O=u:O=i,_.fillStyle=to(_,O,W,l);const N=$,Y=$+W,ee=Math.floor((N-d+I)/I)*I;for(let re=Math.max(0,ee);re<Y;re+=I){const X=re-N;if(X+d<=0)continue;const oe=re;if(oe*2+1<t.length){const A=t[oe*2]/V,j=t[oe*2+1]/V,H=Math.abs(A*D),U=Math.abs(j*D);f==="normal"?_.fillRect(X,D-U,d,U+H):(_.fillRect(X,0,d,D-U),_.fillRect(X,D+H,d,D-H))}}}$+=T.width/o}},[t,n,l,i,u,o,r,d,b,f]);let g=r,m=0;const w=[];for(;g>0;){const S=Math.min(g,eo),I=E.jsx(no,{$cssWidth:S,width:S*o,height:l*o,$waveHeight:l,"data-index":m,ref:y},`${r}-${m}`);w.push(I),g-=S,m+=1}const v=p?"transparent":Gt(u);return E.jsx(ro,{$index:a,$cssWidth:r,className:s,$waveHeight:l,$waveFillColor:v,children:w})},Hr=22,Gr=k.div`
490
287
  position: relative;
491
- height: ${Tu}px;
492
- background: ${s=>s.$isSelected?s.theme.selectedClipHeaderBackgroundColor:s.theme.clipHeaderBackgroundColor};
493
- border-bottom: 1px solid ${s=>s.theme.clipHeaderBorderColor};
288
+ height: ${Hr}px;
289
+ background: ${e=>e.$isSelected?e.theme.selectedClipHeaderBackgroundColor:e.theme.clipHeaderBackgroundColor};
290
+ border-bottom: 1px solid ${e=>e.theme.clipHeaderBorderColor};
494
291
  display: flex;
495
292
  align-items: center;
496
293
  padding: 0 8px;
497
- cursor: ${s=>s.$interactive?s.$isDragging?"grabbing":"grab":"default"};
294
+ cursor: ${e=>e.$interactive?e.$isDragging?"grabbing":"grab":"default"};
498
295
  user-select: none;
499
296
  z-index: 110;
500
297
  flex-shrink: 0;
501
298
  pointer-events: auto; /* Re-enable pointer events (parent ClipContainer has pointer-events: none) */
299
+ touch-action: ${e=>e.$interactive?"none":"auto"}; /* Prevent browser scroll during drag on touch devices */
502
300
 
503
- ${s=>s.$interactive&&`
301
+ ${e=>e.$interactive&&`
504
302
  &:hover {
505
- background: ${s.theme.clipHeaderBackgroundColor}dd;
303
+ background: ${e.theme.clipHeaderBackgroundColor}dd;
506
304
  }
507
305
 
508
306
  &:active {
509
307
  cursor: grabbing;
510
308
  }
511
309
  `}
512
- `,Au=W.span`
310
+ `,Yr=k.span`
513
311
  font-size: 11px;
514
312
  font-weight: 600;
515
- font-family: ${s=>s.theme.clipHeaderFontFamily};
516
- color: ${s=>s.theme.clipHeaderTextColor};
313
+ font-family: ${e=>e.theme.clipHeaderFontFamily};
314
+ color: ${e=>e.theme.clipHeaderTextColor};
517
315
  white-space: nowrap;
518
316
  overflow: hidden;
519
317
  text-overflow: ellipsis;
520
- `,m0=({trackName:s,isSelected:e=!1})=>E.jsx(ku,{$isDragging:!1,$interactive:!1,$isSelected:e,children:E.jsx(Au,{children:s})}),g0=({clipId:s,trackIndex:e,clipIndex:t,trackName:n,isSelected:i=!1,disableDrag:r=!1,dragHandleProps:o})=>{if(r||!o)return E.jsx(m0,{trackName:n,isSelected:i});const{attributes:a,listeners:c,setActivatorNodeRef:l}=o;return E.jsx(ku,{ref:l,"data-clip-id":s,$interactive:!0,$isSelected:i,...c,...a,children:E.jsx(Au,{children:n})})},_0=8,v0=W.div`
318
+ `,oo=({trackName:e,isSelected:t=!1})=>E.jsx(Gr,{$isDragging:!1,$interactive:!1,$isSelected:t,children:E.jsx(Yr,{children:e})}),so=({clipId:e,trackIndex:t,clipIndex:n,trackName:r,isSelected:a=!1,disableDrag:s=!1,dragHandleProps:o})=>{if(s||!o)return E.jsx(oo,{trackName:r,isSelected:a});const{attributes:l,listeners:i,setActivatorNodeRef:u}=o;return E.jsx(Gr,{ref:u,"data-clip-id":e,$interactive:!0,$isSelected:a,...i,...l,children:E.jsx(Yr,{children:r})})},io=8,lo=24,co=k.div`
521
319
  position: absolute;
522
- ${s=>s.$edge==="left"?"left: 0;":"right: 0;"}
320
+ ${e=>e.$edge==="left"?"left: 0;":"right: 0;"}
523
321
  top: 0;
524
322
  bottom: 0;
525
- width: ${_0}px;
323
+ width: ${e=>e.$touchOptimized?lo:io}px;
526
324
  cursor: col-resize;
527
325
  user-select: none;
528
326
  z-index: 105; /* Above waveform, below header */
529
327
  pointer-events: auto; /* Re-enable pointer events (parent ClipContainer has pointer-events: none) */
328
+ touch-action: none; /* Prevent browser scroll during drag on touch devices */
530
329
 
531
330
  /* Invisible by default, visible on hover */
532
- background: ${s=>s.$isDragging?"rgba(255, 255, 255, 0.4)":s.$isHovered?"rgba(255, 255, 255, 0.2)":"transparent"};
331
+ background: ${e=>e.$isDragging?"rgba(255, 255, 255, 0.4)":e.$isHovered?"rgba(255, 255, 255, 0.2)":"transparent"};
533
332
 
534
- ${s=>s.$edge==="left"?`border-left: 2px solid ${s.$isDragging?"rgba(255, 255, 255, 0.8)":s.$isHovered?"rgba(255, 255, 255, 0.5)":"transparent"};`:`border-right: 2px solid ${s.$isDragging?"rgba(255, 255, 255, 0.8)":s.$isHovered?"rgba(255, 255, 255, 0.5)":"transparent"};`}
333
+ ${e=>e.$edge==="left"?`border-left: 2px solid ${e.$isDragging?"rgba(255, 255, 255, 0.8)":e.$isHovered?"rgba(255, 255, 255, 0.5)":"transparent"};`:`border-right: 2px solid ${e.$isDragging?"rgba(255, 255, 255, 0.8)":e.$isHovered?"rgba(255, 255, 255, 0.5)":"transparent"};`}
535
334
 
536
335
  transition: background 0.15s ease, border-color 0.15s ease;
537
336
 
538
337
  &:hover {
539
338
  background: rgba(255, 255, 255, 0.2);
540
- ${s=>s.$edge==="left"?"border-left: 2px solid rgba(255, 255, 255, 0.5);":"border-right: 2px solid rgba(255, 255, 255, 0.5);"}
339
+ ${e=>e.$edge==="left"?"border-left: 2px solid rgba(255, 255, 255, 0.5);":"border-right: 2px solid rgba(255, 255, 255, 0.5);"}
541
340
  }
542
341
 
543
342
  &:active {
544
343
  background: rgba(255, 255, 255, 0.4);
545
- ${s=>s.$edge==="left"?"border-left: 2px solid rgba(255, 255, 255, 0.8);":"border-right: 2px solid rgba(255, 255, 255, 0.8);"}
344
+ ${e=>e.$edge==="left"?"border-left: 2px solid rgba(255, 255, 255, 0.8);":"border-right: 2px solid rgba(255, 255, 255, 0.8);"}
546
345
  }
547
- `,Nc=({clipId:s,trackIndex:e,clipIndex:t,edge:n,dragHandleProps:i})=>{const[r,o]=S.useState(!1);if(!i)return null;const{attributes:a,listeners:c,setActivatorNodeRef:l,isDragging:u}=i;return E.jsx(v0,{ref:l,"data-clip-id":s,"data-boundary-edge":n,$edge:n,$isDragging:u,$isHovered:r,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),...c,...a})},y0=W.div.attrs(s=>({style:{left:`${s.$left}px`,width:`${s.$width}px`}}))`
346
+ `,nr=({clipId:e,trackIndex:t,clipIndex:n,edge:r,dragHandleProps:a,touchOptimized:s=!1})=>{const[o,l]=c.useState(!1);if(!a)return null;const{attributes:i,listeners:u,setActivatorNodeRef:d,isDragging:b}=a;return E.jsx(co,{ref:d,"data-clip-id":e,"data-boundary-edge":r,$edge:r,$isDragging:b,$isHovered:o,$touchOptimized:s,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),...u,...i})},uo=k.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
548
347
  position: absolute;
549
348
  top: 0;
550
349
  bottom: 0;
551
350
  pointer-events: none;
552
351
  z-index: 50;
553
- `,b0=W.svg`
352
+ `,fo=k.svg`
554
353
  width: 100%;
555
354
  height: 100%;
556
355
  display: block;
557
356
  /* Flip horizontally for fadeOut - makes it mirror of fadeIn */
558
- transform: ${s=>s.$type==="fadeOut"?"scaleX(-1)":"none"};
559
- `;function w0(s,e,t="logarithmic"){const n=[],i=Math.max(20,Math.min(s,100));for(let r=0;r<=i;r++){const o=r/i*s,a=r/i;let c;switch(t){case"linear":c=a;break;case"exponential":c=a*a;break;case"sCurve":c=(1-Math.cos(a*Math.PI))/2;break;case"logarithmic":default:c=Math.log10(1+a*9)/Math.log10(10);break}const l=(1-c)*e;n.push(`${o},${l}`)}return`M 0,${e} L ${n.join(" L ")} L ${s},0 L 0,0 Z`}var Fc=({left:s,width:e,type:t,curveType:n="logarithmic",color:i})=>{const r=W.useTheme();if(e<1)return null;const o=i||r?.fadeOverlayColor||"rgba(0, 0, 0, 0.4)";return E.jsx(y0,{$left:s,$width:e,$type:t,children:E.jsx(b0,{$type:t,viewBox:`0 0 ${e} 100`,preserveAspectRatio:"none",children:E.jsx("path",{d:w0(e,100,n),fill:o})})})},x0=W.div.attrs(s=>({style:s.$isOverlay?{}:{left:`${s.$left}px`,width:`${s.$width}px`}}))`
560
- position: ${s=>s.$isOverlay?"relative":"absolute"};
357
+ transform: ${e=>e.$type==="fadeOut"?"scaleX(-1)":"none"};
358
+ `;function mo(e,t,n="logarithmic"){const r=[],a=Math.max(20,Math.min(e,100));for(let s=0;s<=a;s++){const o=s/a*e,l=s/a;let i;switch(n){case"linear":i=l;break;case"exponential":i=l*l;break;case"sCurve":i=(1-Math.cos(l*Math.PI))/2;break;case"logarithmic":default:i=Math.log10(1+l*9)/Math.log10(10);break}const u=(1-i)*t;r.push(`${o},${u}`)}return`M 0,${t} L ${r.join(" L ")} L ${e},0 L 0,0 Z`}var rr=({left:e,width:t,type:n,curveType:r="logarithmic",color:a})=>{const s=k.useTheme();if(t<1)return null;const o=a||s?.fadeOverlayColor||"rgba(0, 0, 0, 0.4)";return E.jsx(uo,{$left:e,$width:t,$type:n,children:E.jsx(fo,{$type:n,viewBox:`0 0 ${t} 100`,preserveAspectRatio:"none",children:E.jsx("path",{d:mo(t,100,r),fill:o})})})},ho=k.div.attrs(e=>({style:e.$isOverlay?{}:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
359
+ position: ${e=>e.$isOverlay?"relative":"absolute"};
561
360
  top: 0;
562
- height: ${s=>s.$isOverlay?"auto":"100%"};
563
- width: ${s=>s.$isOverlay?`${s.$width}px`:"auto"};
361
+ height: ${e=>e.$isOverlay?"auto":"100%"};
362
+ width: ${e=>e.$isOverlay?`${e.$width}px`:"auto"};
564
363
  display: flex;
565
364
  flex-direction: column;
566
365
  background: rgba(255, 255, 255, 0.05);
@@ -570,30 +369,30 @@ React keys must be passed directly to JSX without using spread:
570
369
  &:hover {
571
370
  background: rgba(255, 255, 255, 0.08);
572
371
  }
573
- `,C0=W.div`
372
+ `,po=k.div`
574
373
  flex: 1;
575
374
  position: relative;
576
- overflow: ${s=>s.$isOverlay?"visible":"hidden"};
577
- `,Vc=({children:s,className:e,clipId:t,trackIndex:n,clipIndex:i,trackName:r,startSample:o,durationSamples:a,samplesPerPixel:c,showHeader:l=!1,disableHeaderDrag:u=!1,isOverlay:h=!1,isSelected:p=!1,onMouseDown:d,trackId:f,fadeIn:_,fadeOut:m,sampleRate:g=44100,showFades:y=!1})=>{const x=Math.floor(o/c),v=Math.floor((o+a)/c)-x,b=l&&!u&&!h,k=`clip-${n}-${i}`,{attributes:T,listeners:R,setNodeRef:I,setActivatorNodeRef:A,transform:D,isDragging:M}=ao({id:k,data:{clipId:t,trackIndex:n,clipIndex:i},disabled:!b}),N=`clip-boundary-left-${n}-${i}`,{attributes:q,listeners:V,setActivatorNodeRef:j,isDragging:G}=ao({id:N,data:{clipId:t,trackIndex:n,clipIndex:i,boundary:"left"},disabled:!b}),B=`clip-boundary-right-${n}-${i}`,{attributes:Z,listeners:X,setActivatorNodeRef:ee,isDragging:pe}=ao({id:B,data:{clipId:t,trackIndex:n,clipIndex:i,boundary:"right"},disabled:!b}),ie=D?{transform:Co.Translate.toString(D),zIndex:M?100:void 0}:void 0;return E.jsxs(x0,{ref:I,style:ie,className:e,$left:x,$width:v,$isOverlay:h,"data-clip-container":"true","data-track-id":f,onMouseDown:d,children:[l&&E.jsx(g0,{clipId:t,trackIndex:n,clipIndex:i,trackName:r,isSelected:p,disableDrag:u,dragHandleProps:b?{attributes:T,listeners:R,setActivatorNodeRef:A}:void 0}),E.jsxs(C0,{$isOverlay:h,children:[s,y&&_&&_.duration>0&&E.jsx(Fc,{left:0,width:Math.floor(_.duration*g/c),type:"fadeIn",curveType:_.type}),y&&m&&m.duration>0&&E.jsx(Fc,{left:v-Math.floor(m.duration*g/c),width:Math.floor(m.duration*g/c),type:"fadeOut",curveType:m.type})]}),l&&!u&&!h&&E.jsxs(E.Fragment,{children:[E.jsx(Nc,{clipId:t,trackIndex:n,clipIndex:i,edge:"left",dragHandleProps:{attributes:q,listeners:V,setActivatorNodeRef:j,isDragging:G}}),E.jsx(Nc,{clipId:t,trackIndex:n,clipIndex:i,edge:"right",dragHandleProps:{attributes:Z,listeners:X,setActivatorNodeRef:ee,isDragging:pe}})]})]})},S0=W.div`
375
+ overflow: ${e=>e.$isOverlay?"visible":"hidden"};
376
+ `,ar=({children:e,className:t,clipId:n,trackIndex:r,clipIndex:a,trackName:s,startSample:o,durationSamples:l,samplesPerPixel:i,showHeader:u=!1,disableHeaderDrag:d=!1,isOverlay:b=!1,isSelected:p=!1,onMouseDown:f,trackId:C,fadeIn:y,fadeOut:g,sampleRate:m=44100,showFades:w=!1,touchOptimized:x=!1})=>{const v=Math.floor(o/i),I=Math.floor((o+l)/i)-v,$=u&&!d&&!b,M=`clip-${r}-${a}`,{attributes:T,listeners:_,setNodeRef:D,setActivatorNodeRef:V,transform:W,isDragging:O}=fn({id:M,data:{clipId:n,trackIndex:r,clipIndex:a},disabled:!$}),N=`clip-boundary-left-${r}-${a}`,{attributes:Y,listeners:ee,setActivatorNodeRef:re,isDragging:X}=fn({id:N,data:{clipId:n,trackIndex:r,clipIndex:a,boundary:"left"},disabled:!$}),oe=`clip-boundary-right-${r}-${a}`,{attributes:A,listeners:j,setActivatorNodeRef:H,isDragging:U}=fn({id:oe,data:{clipId:n,trackIndex:r,clipIndex:a,boundary:"right"},disabled:!$}),ge=W?{transform:Cn.Translate.toString(W),zIndex:O?100:void 0}:void 0;return E.jsxs(ho,{ref:D,style:ge,className:t,$left:v,$width:I,$isOverlay:b,"data-clip-container":"true","data-track-id":C,onMouseDown:f,children:[u&&E.jsx(so,{clipId:n,trackIndex:r,clipIndex:a,trackName:s,isSelected:p,disableDrag:d,dragHandleProps:$?{attributes:T,listeners:_,setActivatorNodeRef:V}:void 0}),E.jsxs(po,{$isOverlay:b,children:[e,w&&y&&y.duration>0&&E.jsx(rr,{left:0,width:Math.floor(y.duration*m/i),type:"fadeIn",curveType:y.type}),w&&g&&g.duration>0&&E.jsx(rr,{left:I-Math.floor(g.duration*m/i),width:Math.floor(g.duration*m/i),type:"fadeOut",curveType:g.type})]}),u&&!d&&!b&&E.jsxs(E.Fragment,{children:[E.jsx(nr,{clipId:n,trackIndex:r,clipIndex:a,edge:"left",touchOptimized:x,dragHandleProps:{attributes:Y,listeners:ee,setActivatorNodeRef:re,isDragging:X}}),E.jsx(nr,{clipId:n,trackIndex:r,clipIndex:a,edge:"right",touchOptimized:x,dragHandleProps:{attributes:A,listeners:j,setActivatorNodeRef:H,isDragging:U}})]})]})},go=k.div`
578
377
  display: inline-flex;
579
378
  align-items: center;
580
379
  gap: 0.5rem;
581
- `,T0=W(xu)`
380
+ `,bo=k(Nr)`
582
381
  margin: 0;
583
382
  white-space: nowrap;
584
- `,k0=W(Cu)`
383
+ `,vo=k(Lr)`
585
384
  width: 120px;
586
- `,A0=({volume:s,onChange:e,disabled:t=!1,className:n})=>{const i=r=>{e(parseFloat(r.target.value)/100)};return E.jsxs(S0,{className:n,children:[E.jsx(T0,{htmlFor:"master-gain",children:"Master Volume"}),E.jsx(k0,{min:"0",max:"100",value:s*100,onChange:i,disabled:t,id:"master-gain"})]})};W.div.attrs(s=>({style:{transform:`translate3d(${s.$position}px, 0, 0)`}}))`
385
+ `,Co=({volume:e,onChange:t,disabled:n=!1,className:r})=>{const a=s=>{t(parseFloat(s.target.value)/100)};return E.jsxs(go,{className:r,children:[E.jsx(bo,{htmlFor:"master-gain",children:"Master Volume"}),E.jsx(vo,{min:"0",max:"100",value:e*100,onChange:a,disabled:n,id:"master-gain"})]})};k.div.attrs(e=>({style:{transform:`translate3d(${e.$position}px, 0, 0)`}}))`
587
386
  position: absolute;
588
387
  top: 0;
589
388
  left: 0;
590
389
  width: 2px;
591
- background: ${s=>s.$color};
390
+ background: ${e=>e.$color};
592
391
  height: 100%;
593
392
  z-index: 100; /* Below sticky controls (z-index: 101) so playhead is hidden when scrolled behind controls */
594
393
  pointer-events: none;
595
394
  will-change: transform;
596
- `;W.div`
395
+ `;k.div`
597
396
  position: absolute;
598
397
  top: 0;
599
398
  left: 0;
@@ -601,7 +400,7 @@ React keys must be passed directly to JSX without using spread:
601
400
  z-index: 100; /* Below sticky controls (z-index: 101) so playhead is hidden when scrolled behind controls */
602
401
  pointer-events: none;
603
402
  will-change: transform;
604
- `;W.div`
403
+ `;k.div`
605
404
  position: absolute;
606
405
  top: -10px;
607
406
  left: -6px;
@@ -609,102 +408,186 @@ React keys must be passed directly to JSX without using spread:
609
408
  height: 0;
610
409
  border-left: 7px solid transparent;
611
410
  border-right: 7px solid transparent;
612
- border-top: 10px solid ${s=>s.$color};
613
- `;W.div`
411
+ border-top: 10px solid ${e=>e.$color};
412
+ `;k.div`
614
413
  position: absolute;
615
414
  top: 0;
616
415
  left: 0;
617
416
  width: 2px;
618
417
  height: 100%;
619
- background: ${s=>s.$color};
620
- `;var I0=W.div`
418
+ background: ${e=>e.$color};
419
+ `;var wo=k.div`
621
420
  overflow-y: hidden;
622
421
  overflow-x: auto;
623
422
  position: relative;
624
- `,D0=W.div.attrs(s=>({style:s.$width!==void 0?{width:`${s.$width}px`}:{}}))`
423
+ `,xo=k.div.attrs(e=>({style:e.$width!==void 0?{width:`${e.$width}px`}:{}}))`
625
424
  position: relative;
626
- background: ${s=>s.$backgroundColor||"transparent"};
627
- `,R0=W.div.attrs(s=>({style:s.$width?{minWidth:`${s.$width}px`}:{}}))`
628
- background: ${s=>s.$backgroundColor||"white"};
425
+ background: ${e=>e.$backgroundColor||"transparent"};
426
+ `,yo=k.div.attrs(e=>({style:e.$width?{minWidth:`${e.$width}px`}:{}}))`
427
+ background: ${e=>e.$backgroundColor||"white"};
629
428
  width: 100%;
630
- overflow: visible;
631
- `,E0=W.div.attrs(s=>({style:s.$width!==void 0?{minWidth:`${s.$width}px`}:{}}))`
632
429
  position: relative;
633
- background: ${s=>s.$backgroundColor||"transparent"};
430
+ overflow: hidden; /* Constrain loop region to timescale area */
431
+ `,Io=k.div.attrs(e=>({style:e.$width!==void 0?{minWidth:`${e.$width}px`}:{}}))`
432
+ position: relative;
433
+ background: ${e=>e.$backgroundColor||"transparent"};
634
434
  width: 100%;
635
- `,M0=W.div`
435
+ `,So=k.div`
636
436
  position: absolute;
637
437
  top: 0;
638
438
  left: 0;
639
439
  right: 0;
640
440
  bottom: 0;
641
441
  cursor: crosshair;
642
- z-index: 1; /* Low z-index - clip headers and boundaries have higher z-index */
643
- `,Iu=({children:s,backgroundColor:e,timescaleBackgroundColor:t,timescale:n,timescaleWidth:i,tracksWidth:r,scrollContainerWidth:o,controlsWidth:a,onTracksClick:c,onTracksMouseDown:l,onTracksMouseMove:u,onTracksMouseUp:h,scrollContainerRef:p})=>E.jsx(I0,{"data-scroll-container":"true",ref:p,children:E.jsxs(D0,{$backgroundColor:e,$width:o,children:[n&&E.jsx(R0,{$width:i,$backgroundColor:t,children:n}),E.jsxs(E0,{$width:r,$backgroundColor:e,children:[s,(c||l)&&E.jsx(M0,{$controlsWidth:a,onClick:c,onMouseDown:l,onMouseMove:u,onMouseUp:h})]})]})});W.withTheme(Iu);var O0=W.div.attrs(s=>({style:{left:`${s.$left}px`,width:`${s.$width}px`}}))`
442
+ /* When selecting, raise z-index above clip boundaries (z-index: 105) to prevent interference */
443
+ z-index: ${e=>e.$isSelecting?110:1};
444
+ `,Kr=({children:e,backgroundColor:t,timescaleBackgroundColor:n,timescale:r,timescaleWidth:a,tracksWidth:s,scrollContainerWidth:o,controlsWidth:l,onTracksClick:i,onTracksMouseDown:u,onTracksMouseMove:d,onTracksMouseUp:b,scrollContainerRef:p,isSelecting:f})=>E.jsx(wo,{"data-scroll-container":"true",ref:p,children:E.jsxs(xo,{$backgroundColor:t,$width:o,children:[r&&E.jsx(yo,{$width:a,$backgroundColor:n,children:r}),E.jsxs(Io,{$width:s,$backgroundColor:t,children:[e,(i||u)&&E.jsx(So,{$controlsWidth:l,$isSelecting:f,onClick:i,onMouseDown:u,onMouseMove:d,onMouseUp:b})]})]})});k.withTheme(Kr);var Ao=k.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
644
445
  position: absolute;
645
446
  top: 0;
646
- background: ${s=>s.$color};
447
+ background: ${e=>e.$color};
647
448
  height: 100%;
648
449
  z-index: 60; /* Above clips (z-index: 10) and fades (z-index: 50), below playhead (z-index: 100) */
649
450
  pointer-events: none;
650
451
  opacity: 0.3;
651
- `,N0=({startPosition:s,endPosition:e,color:t="#00ff00"})=>{const n=Math.max(0,e-s);return n<=0?null:E.jsx(O0,{$left:s,$width:n,$color:t,"data-selection":!0})};function qn(s,e){const t=Math.floor(s/3600)%24,n=Math.floor(s/60)%60,i=(s%60).toFixed(e);return String(t).padStart(2,"0")+":"+String(n).padStart(2,"0")+":"+i.padStart(e+3,"0")}function nn(s,e){switch(e){case"seconds":return s.toFixed(0);case"thousandths":return s.toFixed(3);case"hh:mm:ss":return qn(s,0);case"hh:mm:ss.u":return qn(s,1);case"hh:mm:ss.uu":return qn(s,2);case"hh:mm:ss.uuu":return qn(s,3);default:return qn(s,3)}}function Du(s,e){if(!s)return 0;switch(e){case"seconds":case"thousandths":return parseFloat(s)||0;case"hh:mm:ss":case"hh:mm:ss.u":case"hh:mm:ss.uu":case"hh:mm:ss.uuu":{const t=s.split(":");if(t.length!==3)return 0;const n=parseInt(t[0],10)||0,i=parseInt(t[1],10)||0,r=parseFloat(t[2])||0;return n*3600+i*60+r}default:return 0}}var Pc=({id:s,label:e,value:t,format:n,className:i,onChange:r,readOnly:o=!1})=>{const[a,c]=S.useState("");S.useEffect(()=>{const p=nn(t,n);c(p)},[t,n,s]);const l=p=>{const d=p.target.value;c(d)},u=()=>{if(r){const p=Du(a,n);r(p)}c(nn(t,n))},h=p=>{p.key==="Enter"&&p.currentTarget.blur()};return E.jsxs(E.Fragment,{children:[E.jsx(a0,{as:"label",htmlFor:s,children:e}),E.jsx(wu,{type:"text",className:i,id:s,value:a,onChange:l,onBlur:u,onKeyDown:h,readOnly:o})]})},F0=({selectionStart:s,selectionEnd:e,onSelectionChange:t,className:n})=>{const[i,r]=S.useState("hh:mm:ss.uuu");S.useEffect(()=>{const c=document.querySelector(".time-format"),l=()=>{c&&r(c.value)};return c&&(r(c.value),c.addEventListener("change",l)),()=>{c?.removeEventListener("change",l)}},[]);const o=c=>{t&&t(c,e)},a=c=>{t&&t(s,c)};return E.jsxs(E.Fragment,{children:[E.jsx(Pc,{id:"audio_start",label:"Start of audio selection",value:s,format:i,className:"audio-start form-control mr-sm-2",onChange:o}),E.jsx(Pc,{id:"audio_end",label:"End of audio selection",value:e,format:i,className:"audio-end form-control mr-sm-2",onChange:a})]})};function $i(){return window.devicePixelRatio}var Ru=S.createContext($i()),V0=({children:s})=>{const[e,t]=S.useState($i());return matchMedia(`(resolution: ${$i()}dppx)`).addEventListener("change",()=>{t($i())},{once:!0}),E.jsx(Ru.Provider,{value:Math.ceil(e),children:s})},Eu=()=>S.useContext(Ru),$a=S.createContext({sampleRate:48e3,samplesPerPixel:1e3,zoomLevels:[1e3,1500,2e3,2500],waveHeight:80,timeScaleHeight:15,controls:{show:!1,width:150},duration:3e4,barWidth:1,barGap:0}),Gr=()=>S.useContext($a),qa=()=>S.useContext(W.ThemeContext),Mu=S.createContext(E.jsx(S.Fragment,{})),P0=()=>S.useContext(Mu),W0=0,B0=!1,$0=0,q0=0,j0={progress:W0,isPlaying:B0,selectionStart:$0,selectionEnd:q0};S.createContext(j0);S.createContext({setIsPlaying:()=>{},setProgress:()=>{},setSelection:()=>{}});var L0=({isSelected:s,transparentBackground:e,...t})=>{const n=qa(),{waveHeight:i,barWidth:r,barGap:o}=Gr(),a=Eu(),c=s&&n?n.selectedWaveOutlineColor:n?.waveOutlineColor,l=s&&n?n.selectedWaveFillColor:n?.waveFillColor,u=n?.waveformDrawMode||"inverted";return E.jsx(f0,{...t,...n,waveOutlineColor:c,waveFillColor:l,waveHeight:i,devicePixelRatio:a,barWidth:r,barGap:o,transparentBackground:e,drawMode:u})};function z0(s,e,t){return Math.ceil(s*t/e)}function Z0(s){const e=Math.floor(s/1e3),t=e%60;return`${(e-t)/60}:${String(t).padStart(2,"0")}`}var G0=W.div.attrs(s=>({style:{width:`${s.$cssWidth}px`,marginLeft:`${s.$controlWidth}px`,height:`${s.$timeScaleHeight}px`}}))`
452
+ `,ko=({startPosition:e,endPosition:t,color:n="#00ff00"})=>{const r=Math.max(0,t-e);return r<=0?null:E.jsx(Ao,{$left:e,$width:r,$color:n,"data-selection":!0})};k.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
453
+ position: absolute;
454
+ top: 0;
455
+ background: ${e=>e.$color};
456
+ height: 100%;
457
+ z-index: 55; /* Between clips (z-index: 50) and selection (z-index: 60) */
458
+ pointer-events: none;
459
+ `;k.div.attrs(e=>({style:{left:`${e.$left}px`}}))`
460
+ position: absolute;
461
+ top: 0;
462
+ width: 2px;
463
+ height: 100%;
464
+ background: ${e=>e.$color};
465
+ z-index: 90; /* Below playhead (z-index: 100) */
466
+ pointer-events: none;
467
+
468
+ /* Triangle marker at top */
469
+ &::before {
470
+ content: '';
471
+ position: absolute;
472
+ top: 0;
473
+ ${e=>e.$isStart?"left: 0":"right: 0"};
474
+ width: 0;
475
+ height: 0;
476
+ border-top: 8px solid ${e=>e.$color};
477
+ ${e=>e.$isStart?"border-right: 8px solid transparent;":"border-left: 8px solid transparent;"}
478
+ }
479
+ `;var or=k.div.attrs(e=>({style:{left:`${e.$left}px`}}))`
480
+ position: absolute;
481
+ top: 0;
482
+ width: 12px;
483
+ height: 100%;
484
+ cursor: ew-resize;
485
+ z-index: 100;
486
+ /* Center the handle on the marker position */
487
+ transform: translateX(-5px);
488
+
489
+ /* Visual marker line */
490
+ &::before {
491
+ content: '';
492
+ position: absolute;
493
+ top: 0;
494
+ left: 5px;
495
+ width: 2px;
496
+ height: 100%;
497
+ background: ${e=>e.$color};
498
+ opacity: ${e=>e.$isDragging?1:.8};
499
+ }
500
+
501
+ /* Triangle marker at top */
502
+ &::after {
503
+ content: '';
504
+ position: absolute;
505
+ top: 0;
506
+ ${e=>e.$isStart?"left: 5px":"left: -1px"};
507
+ width: 0;
508
+ height: 0;
509
+ border-top: 10px solid ${e=>e.$color};
510
+ ${e=>e.$isStart?"border-right: 10px solid transparent;":"border-left: 10px solid transparent;"}
511
+ }
512
+
513
+ &:hover::before {
514
+ opacity: 1;
515
+ }
516
+ `,$o=k.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
517
+ position: absolute;
518
+ top: 0;
519
+ height: 100%;
520
+ background: ${e=>e.$color};
521
+ z-index: 50;
522
+ cursor: grab;
523
+
524
+ &:active {
525
+ cursor: grabbing;
526
+ }
527
+ `,Ro=({startPosition:e,endPosition:t,markerColor:n="#3b82f6",regionColor:r="rgba(59, 130, 246, 0.3)",onLoopStartChange:a,onLoopEndChange:s,onLoopRegionMove:o,minPosition:l=0,maxPosition:i=1/0})=>{const[u,d]=c.useState(null),b=c.useRef(0),p=c.useRef(0),f=c.useRef(0),C=Math.max(0,t-e),y=c.useCallback((m,w)=>{m.preventDefault(),m.stopPropagation(),d(w),b.current=m.clientX,p.current=w==="start"?e:t;const x=S=>{const I=S.clientX-b.current,$=p.current+I;if(w==="start"){const M=Math.max(l,Math.min(t-10,$));a?.(M)}else{const M=Math.max(e+10,Math.min(i,$));s?.(M)}},v=()=>{d(null),document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",v)};document.addEventListener("mousemove",x),document.addEventListener("mouseup",v)},[e,t,l,i,a,s]),g=c.useCallback(m=>{m.preventDefault(),m.stopPropagation(),d("region"),b.current=m.clientX,p.current=e,f.current=t;const w=t-e,x=S=>{const I=S.clientX-b.current;let $=p.current+I,M=f.current+I;$<l&&($=l,M=l+w),M>i&&(M=i,$=i-w),o?.($,M)},v=()=>{d(null),document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",v)};document.addEventListener("mousemove",x),document.addEventListener("mouseup",v)},[e,t,l,i,o]);return C<=0?null:E.jsxs(E.Fragment,{children:[E.jsx($o,{$left:e,$width:C,$color:r,$isDragging:u==="region",onMouseDown:g,"data-loop-region-timescale":!0}),E.jsx(or,{$left:e,$color:n,$isStart:!0,$isDragging:u==="start",onMouseDown:m=>y(m,"start"),"data-loop-marker-handle":"start"}),E.jsx(or,{$left:t,$color:n,$isStart:!1,$isDragging:u==="end",onMouseDown:m=>y(m,"end"),"data-loop-marker-handle":"end"})]})},Eo=k.div.attrs(e=>({style:{left:`${e.$leftOffset||0}px`}}))`
528
+ position: absolute;
529
+ top: 0;
530
+ right: 0;
531
+ height: 100%; /* Stay within timescale bounds, don't extend into tracks */
532
+ cursor: crosshair;
533
+ z-index: 40; /* Below markers and shading */
534
+ `,Do=({startPosition:e,endPosition:t,markerColor:n="#3b82f6",regionColor:r="rgba(59, 130, 246, 0.3)",onLoopRegionChange:a,minPosition:s=0,maxPosition:o=1/0,controlsOffset:l=0})=>{const[i,u]=c.useState(!1),d=c.useRef(0),b=c.useRef(null),p=t>e,f=c.useCallback(C=>{const y=C.target;if(y.closest("[data-loop-marker-handle]")||y.closest("[data-loop-region-timescale]"))return;C.preventDefault(),u(!0);const g=b.current?.getBoundingClientRect();if(!g)return;const m=C.clientX-g.left,w=Math.max(s,Math.min(o,m));d.current=w,a?.(w,w);const x=S=>{const I=S.clientX-g.left,$=Math.max(s,Math.min(o,I)),M=Math.min(d.current,$),T=Math.max(d.current,$);a?.(M,T)},v=()=>{u(!1),document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",v)};document.addEventListener("mousemove",x),document.addEventListener("mouseup",v)},[s,o,a]);return E.jsx(Eo,{ref:b,$leftOffset:l,onMouseDown:f,"data-timescale-loop-creator":!0,children:p&&E.jsx(Ro,{startPosition:e,endPosition:t,markerColor:n,regionColor:r,minPosition:s,maxPosition:o,onLoopStartChange:C=>a?.(C,t),onLoopEndChange:C=>a?.(e,C),onLoopRegionMove:(C,y)=>a?.(C,y)})})};function Dt(e,t){const n=Math.floor(e/3600)%24,r=Math.floor(e/60)%60,a=(e%60).toFixed(t);return String(n).padStart(2,"0")+":"+String(r).padStart(2,"0")+":"+a.padStart(t+3,"0")}function It(e,t){switch(t){case"seconds":return e.toFixed(0);case"thousandths":return e.toFixed(3);case"hh:mm:ss":return Dt(e,0);case"hh:mm:ss.u":return Dt(e,1);case"hh:mm:ss.uu":return Dt(e,2);case"hh:mm:ss.uuu":return Dt(e,3);default:return Dt(e,3)}}function Ur(e,t){if(!e)return 0;switch(t){case"seconds":case"thousandths":return parseFloat(e)||0;case"hh:mm:ss":case"hh:mm:ss.u":case"hh:mm:ss.uu":case"hh:mm:ss.uuu":{const n=e.split(":");if(n.length!==3)return 0;const r=parseInt(n[0],10)||0,a=parseInt(n[1],10)||0,s=parseFloat(n[2])||0;return r*3600+a*60+s}default:return 0}}var sr=({id:e,label:t,value:n,format:r,className:a,onChange:s,readOnly:o=!1})=>{const[l,i]=c.useState("");c.useEffect(()=>{const p=It(n,r);i(p)},[n,r,e]);const u=p=>{const f=p.target.value;i(f)},d=()=>{if(s){const p=Ur(l,r);s(p)}i(It(n,r))},b=p=>{p.key==="Enter"&&p.currentTarget.blur()};return E.jsxs(E.Fragment,{children:[E.jsx(Ja,{as:"label",htmlFor:e,children:t}),E.jsx(Or,{type:"text",className:a,id:e,value:l,onChange:u,onBlur:d,onKeyDown:b,readOnly:o})]})},To=({selectionStart:e,selectionEnd:t,onSelectionChange:n,className:r})=>{const[a,s]=c.useState("hh:mm:ss.uuu");c.useEffect(()=>{const i=document.querySelector(".time-format"),u=()=>{i&&s(i.value)};return i&&(s(i.value),i.addEventListener("change",u)),()=>{i?.removeEventListener("change",u)}},[]);const o=i=>{n&&n(i,t)},l=i=>{n&&n(e,i)};return E.jsxs(E.Fragment,{children:[E.jsx(sr,{id:"audio_start",label:"Start of audio selection",value:e,format:a,className:"audio-start form-control mr-sm-2",onChange:o}),E.jsx(sr,{id:"audio_end",label:"End of audio selection",value:t,format:a,className:"audio-end form-control mr-sm-2",onChange:l})]})};function Xt(){return window.devicePixelRatio}var Jr=c.createContext(Xt()),_o=({children:e})=>{const[t,n]=c.useState(Xt());return matchMedia(`(resolution: ${Xt()}dppx)`).addEventListener("change",()=>{n(Xt())},{once:!0}),E.jsx(Jr.Provider,{value:Math.ceil(t),children:e})},qr=()=>c.useContext(Jr),_n=c.createContext({sampleRate:48e3,samplesPerPixel:1e3,zoomLevels:[1e3,1500,2e3,2500],waveHeight:80,timeScaleHeight:15,controls:{show:!1,width:150},duration:3e4,barWidth:1,barGap:0}),en=()=>c.useContext(_n),Mn=()=>c.useContext(k.ThemeContext),Qr=c.createContext(E.jsx(c.Fragment,{})),Mo=()=>c.useContext(Qr),Bo=0,Fo=!1,Wo=0,Zo=0,Po={progress:Bo,isPlaying:Fo,selectionStart:Wo,selectionEnd:Zo};c.createContext(Po);c.createContext({setIsPlaying:()=>{},setProgress:()=>{},setSelection:()=>{}});var Vo=({isSelected:e,transparentBackground:t,...n})=>{const r=Mn(),{waveHeight:a,barWidth:s,barGap:o}=en(),l=qr(),i=e&&r?r.selectedWaveOutlineColor:r?.waveOutlineColor,u=e&&r?r.selectedWaveFillColor:r?.waveFillColor,d=r?.waveformDrawMode||"inverted";return E.jsx(ao,{...n,...r,waveOutlineColor:i,waveFillColor:u,waveHeight:a,devicePixelRatio:l,barWidth:s,barGap:o,transparentBackground:t,drawMode:d})};function jo(e,t,n){return Math.ceil(e*n/t)}function zo(e){const t=Math.floor(e/1e3),n=t%60;return`${(t-n)/60}:${String(n).padStart(2,"0")}`}var Oo=k.div.attrs(e=>({style:{width:`${e.$cssWidth}px`,marginLeft:`${e.$controlWidth}px`,height:`${e.$timeScaleHeight}px`}}))`
652
535
  position: relative;
653
536
  overflow: visible; /* Allow time labels to render above the container */
654
- border-bottom: 1px solid ${s=>s.theme.timeColor};
537
+ border-bottom: 1px solid ${e=>e.theme.timeColor};
655
538
  box-sizing: border-box;
656
- `,X0=W.canvas.attrs(s=>({style:{width:`${s.$cssWidth}px`,height:`${s.$timeScaleHeight}px`}}))`
539
+ `,No=k.canvas.attrs(e=>({style:{width:`${e.$cssWidth}px`,height:`${e.$timeScaleHeight}px`}}))`
657
540
  position: absolute;
658
541
  left: 0;
659
542
  right: 0;
660
543
  bottom: 0;
661
- `,H0=W.div.attrs(s=>({style:{left:`${s.$left+4}px`}}))`
544
+ `,Lo=k.div.attrs(e=>({style:{left:`${e.$left+4}px`}}))`
662
545
  position: absolute;
663
546
  font-size: 0.75rem; /* Smaller font to prevent overflow */
664
547
  white-space: nowrap; /* Prevent text wrapping */
665
- color: ${s=>s.theme.timeColor}; /* Use theme color instead of inheriting */
666
- `,Y0=s=>{const{theme:{timeColor:e},duration:t,marker:n,bigStep:i,secondStep:r,renderTimestamp:o}=s,a=new Map,c=[],l=S.useRef(null),{sampleRate:u,samplesPerPixel:h,timeScaleHeight:p,controls:{show:d,width:f}}=S.useContext($a),_=Eu();S.useEffect(()=>{if(l.current!==null){const x=l.current,w=x.getContext("2d");if(w){w.resetTransform(),w.clearRect(0,0,x.width,x.height),w.imageSmoothingEnabled=!1,w.fillStyle=e,w.scale(_,_);for(const[v,b]of a.entries()){const k=p-b;w.fillRect(v,k,1,b)}}}},[t,_,e,p,i,r,n,a]);const m=z0(t/1e3,h,u),g=u/h;let y=0;for(let x=0;x<m;x+=g*r/1e3){const w=Math.floor(x);if(y%n===0){const v=y,b=Z0(v),k=o?E.jsx(S.Fragment,{children:o(v,w)},`timestamp-${y}`):E.jsx(H0,{$left:w,children:b},b);c.push(k),a.set(w,p)}else y%i===0?a.set(w,Math.floor(p/2)):y%r===0&&a.set(w,Math.floor(p/5));y+=r}return E.jsxs(G0,{$cssWidth:m,$controlWidth:d?f:0,$timeScaleHeight:p,children:[c,E.jsx(X0,{$cssWidth:m,$timeScaleHeight:p,width:m*_,height:p*_,ref:l})]})},U0=W.withTheme(Y0),K0=W.div`
548
+ color: ${e=>e.theme.timeColor}; /* Use theme color instead of inheriting */
549
+ `,Xo=e=>{const{theme:{timeColor:t},duration:n,marker:r,bigStep:a,secondStep:s,renderTimestamp:o}=e,l=new Map,i=[],u=c.useRef(null),{sampleRate:d,samplesPerPixel:b,timeScaleHeight:p,controls:{show:f,width:C}}=c.useContext(_n),y=qr();c.useEffect(()=>{if(u.current!==null){const x=u.current,v=x.getContext("2d");if(v){v.resetTransform(),v.clearRect(0,0,x.width,x.height),v.imageSmoothingEnabled=!1,v.fillStyle=t,v.scale(y,y);for(const[S,I]of l.entries()){const $=p-I;v.fillRect(S,$,1,I)}}}},[n,y,t,p,a,s,r,l]);const g=jo(n/1e3,b,d),m=d/b;let w=0;for(let x=0;x<g;x+=m*s/1e3){const v=Math.floor(x);if(w%r===0){const S=w,I=zo(S),$=o?E.jsx(c.Fragment,{children:o(S,v)},`timestamp-${w}`):E.jsx(Lo,{$left:v,children:I},I);i.push($),l.set(v,p)}else w%a===0?l.set(v,Math.floor(p/2)):w%s===0&&l.set(v,Math.floor(p/5));w+=s}return E.jsxs(Oo,{$cssWidth:g,$controlWidth:f?C:0,$timeScaleHeight:p,children:[i,E.jsx(No,{$cssWidth:g,$timeScaleHeight:p,width:g*y,height:p*y,ref:u})]})},Ho=k.withTheme(Xo),Go=k.div`
667
550
  display: inline-flex;
668
551
  align-items: center;
669
552
  gap: 0.5rem;
670
- `,Q0=[{value:"seconds",label:"seconds"},{value:"thousandths",label:"thousandths"},{value:"hh:mm:ss",label:"hh:mm:ss"},{value:"hh:mm:ss.u",label:"hh:mm:ss + tenths"},{value:"hh:mm:ss.uu",label:"hh:mm:ss + hundredths"},{value:"hh:mm:ss.uuu",label:"hh:mm:ss + milliseconds"}],J0=({value:s,onChange:e,disabled:t=!1,className:n})=>{const i=r=>{e(r.target.value)};return E.jsx(K0,{className:n,children:E.jsx(Ba,{className:"time-format",value:s,onChange:i,disabled:t,"aria-label":"Time format selection",children:Q0.map(r=>E.jsx("option",{value:r.value,children:r.label},r.value))})})},ev=W.div.attrs(s=>({style:{height:`${s.$waveHeight*s.$numChannels+(s.$hasClipHeaders?Tu:0)}px`}}))`
553
+ `,Yo=[{value:"seconds",label:"seconds"},{value:"thousandths",label:"thousandths"},{value:"hh:mm:ss",label:"hh:mm:ss"},{value:"hh:mm:ss.u",label:"hh:mm:ss + tenths"},{value:"hh:mm:ss.uu",label:"hh:mm:ss + hundredths"},{value:"hh:mm:ss.uuu",label:"hh:mm:ss + milliseconds"}],Ko=({value:e,onChange:t,disabled:n=!1,className:r})=>{const a=s=>{t(s.target.value)};return E.jsx(Go,{className:r,children:E.jsx(Tn,{className:"time-format",value:e,onChange:a,disabled:n,"aria-label":"Time format selection",children:Yo.map(s=>E.jsx("option",{value:s.value,children:s.label},s.value))})})},Uo=k.div.attrs(e=>({style:{height:`${e.$waveHeight*e.$numChannels+(e.$hasClipHeaders?Hr:0)}px`}}))`
671
554
  position: relative;
672
555
  display: flex;
673
- ${s=>s.$width!==void 0&&`width: ${s.$width}px;`}
674
- `,tv=W.div.attrs(s=>({style:{paddingLeft:`${s.$offset||0}px`}}))`
556
+ ${e=>e.$width!==void 0&&`width: ${e.$width}px;`}
557
+ `,Jo=k.div.attrs(e=>({style:{paddingLeft:`${e.$offset||0}px`}}))`
675
558
  position: relative;
676
- background: ${s=>s.$backgroundColor||"transparent"};
559
+ background: ${e=>e.$backgroundColor||"transparent"};
677
560
  flex: 1;
678
- `,sv=W.div.attrs(s=>({style:{width:`${s.$controlWidth}px`}}))`
561
+ `,qo=k.div.attrs(e=>({style:{width:`${e.$controlWidth}px`}}))`
679
562
  position: sticky;
680
563
  z-index: 101; /* Above waveform content, below Docusaurus navbar (z-index: 200) */
681
564
  left: 0;
682
565
  height: 100%;
683
566
  flex-shrink: 0;
684
567
  pointer-events: auto;
685
- background: ${s=>s.theme.surfaceColor};
568
+ background: ${e=>e.theme.surfaceColor};
686
569
  transition: background 0.15s ease-in-out;
687
570
 
688
571
  /* Selected track: highlighted background */
689
- ${s=>s.$isSelected&&`
690
- background: ${s.theme.selectedTrackControlsBackground};
572
+ ${e=>e.$isSelected&&`
573
+ background: ${e.theme.selectedTrackControlsBackground};
691
574
  `}
692
- `,nv=({numChannels:s,children:e,className:t,backgroundColor:n,offset:i=0,width:r,hasClipHeaders:o=!1,onClick:a,trackId:c,isSelected:l=!1})=>{const{waveHeight:u,controls:{show:h,width:p}}=Gr(),d=P0();return E.jsxs(ev,{$numChannels:s,className:t,$waveHeight:u,$controlWidth:h?p:0,$width:r,$hasClipHeaders:o,$isSelected:l,children:[E.jsx(sv,{$controlWidth:h?p:0,$isSelected:l,children:d}),E.jsx(tv,{$controlWidth:h?p:0,$backgroundColor:n,$offset:i,onClick:a,"data-track-id":c,children:e})]})},Wc=W.button.attrs({type:"button"})`
575
+ `,Qo=({numChannels:e,children:t,className:n,backgroundColor:r,offset:a=0,width:s,hasClipHeaders:o=!1,onClick:l,trackId:i,isSelected:u=!1})=>{const{waveHeight:d,controls:{show:b,width:p}}=en(),f=Mo();return E.jsxs(Uo,{$numChannels:e,className:n,$waveHeight:d,$controlWidth:b?p:0,$width:s,$hasClipHeaders:o,$isSelected:u,children:[E.jsx(qo,{$controlWidth:b?p:0,$isSelected:u,children:f}),E.jsx(Jo,{$controlWidth:b?p:0,$backgroundColor:r,$offset:a,onClick:l,"data-track-id":i,children:t})]})},ir=k.button.attrs({type:"button"})`
693
576
  display: inline-block;
694
- font-family: ${s=>s.theme.fontFamily};
577
+ font-family: ${e=>e.theme.fontFamily};
695
578
  font-weight: 500;
696
579
  text-align: center;
697
580
  vertical-align: middle;
698
581
  user-select: none;
699
582
  padding: 0.25rem 0.4rem;
700
- font-size: ${s=>s.theme.fontSizeSmall};
583
+ font-size: ${e=>e.theme.fontSizeSmall};
701
584
  line-height: 1;
702
- border-radius: ${s=>s.theme.borderRadius};
585
+ border-radius: ${e=>e.theme.borderRadius};
703
586
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
704
587
  border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
705
588
  cursor: pointer;
706
589
 
707
- ${s=>s.$variant==="danger"?`
590
+ ${e=>e.$variant==="danger"?`
708
591
  color: #fff;
709
592
  background-color: #dc3545;
710
593
  border: 1px solid #dc3545;
@@ -718,7 +601,7 @@ React keys must be passed directly to JSX without using spread:
718
601
  outline: none;
719
602
  box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
720
603
  }
721
- `:s.$variant==="info"?`
604
+ `:e.$variant==="info"?`
722
605
  color: #fff;
723
606
  background-color: #17a2b8;
724
607
  border: 1px solid #17a2b8;
@@ -733,22 +616,22 @@ React keys must be passed directly to JSX without using spread:
733
616
  box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
734
617
  }
735
618
  `:`
736
- color: ${s.theme.textColor};
619
+ color: ${e.theme.textColor};
737
620
  background-color: transparent;
738
- border: 1px solid ${s.theme.borderColor};
621
+ border: 1px solid ${e.theme.borderColor};
739
622
 
740
623
  &:hover {
741
624
  color: #fff;
742
- background-color: ${s.theme.textColor};
743
- border-color: ${s.theme.textColor};
625
+ background-color: ${e.theme.textColor};
626
+ border-color: ${e.theme.textColor};
744
627
  }
745
628
 
746
629
  &:focus {
747
630
  outline: none;
748
- box-shadow: 0 0 0 0.2rem ${s.theme.inputFocusBorder}33;
631
+ box-shadow: 0 0 0 0.2rem ${e.theme.inputFocusBorder}33;
749
632
  }
750
633
  `}
751
- `,iv=W.div`
634
+ `,es=k.div`
752
635
  margin-bottom: 0.3rem;
753
636
 
754
637
  button:not(:first-child) {
@@ -760,7 +643,7 @@ React keys must be passed directly to JSX without using spread:
760
643
  border-top-right-radius: 0;
761
644
  border-bottom-right-radius: 0;
762
645
  }
763
- `,rv=W.div`
646
+ `,ts=k.div`
764
647
  background: transparent;
765
648
  width: 100%;
766
649
  height: 100%;
@@ -771,9 +654,9 @@ React keys must be passed directly to JSX without using spread:
771
654
  overflow: hidden;
772
655
  box-sizing: border-box;
773
656
  text-align: center;
774
- border: 1px solid ${s=>s.theme.borderColor};
775
- border-radius: ${s=>s.theme.borderRadius};
776
- `,ov=W.header`
657
+ border: 1px solid ${e=>e.theme.borderColor};
658
+ border-radius: ${e=>e.theme.borderRadius};
659
+ `,ns=k.header`
777
660
  overflow: hidden;
778
661
  height: 26px;
779
662
  width: 100%;
@@ -781,18 +664,18 @@ React keys must be passed directly to JSX without using spread:
781
664
  align-items: center;
782
665
  justify-content: space-between;
783
666
  padding: 0 0.2rem;
784
- font-size: ${s=>s.theme.fontSizeSmall};
785
- color: ${s=>s.theme.textColor};
667
+ font-size: ${e=>e.theme.fontSizeSmall};
668
+ color: ${e=>e.theme.textColor};
786
669
  background-color: transparent;
787
- `,av=s=>E.jsx(bu,{weight:"light",...s}),cv=s=>E.jsx(yu,{weight:"light",...s}),Bc=W(Cu)`
670
+ `,rs=e=>E.jsx(zr,{weight:"light",...e}),as=e=>E.jsx(jr,{weight:"light",...e}),lr=k(Lr)`
788
671
  width: 75%;
789
672
  height: 5px;
790
- background: ${s=>s.theme.sliderTrackColor};
673
+ background: ${e=>e.theme.sliderTrackColor};
791
674
 
792
675
  &::-webkit-slider-thumb {
793
676
  width: 12px;
794
677
  height: 12px;
795
- background: ${s=>s.theme.sliderThumbColor};
678
+ background: ${e=>e.theme.sliderThumbColor};
796
679
  border: none;
797
680
  margin-top: -4px;
798
681
  cursor: ew-resize;
@@ -801,39 +684,39 @@ React keys must be passed directly to JSX without using spread:
801
684
  &::-moz-range-thumb {
802
685
  width: 12px;
803
686
  height: 12px;
804
- background: ${s=>s.theme.sliderThumbColor};
687
+ background: ${e=>e.theme.sliderThumbColor};
805
688
  border: none;
806
689
  cursor: ew-resize;
807
690
  }
808
691
 
809
692
  &::-webkit-slider-runnable-track {
810
693
  height: 5px;
811
- background: ${s=>s.theme.sliderTrackColor};
694
+ background: ${e=>e.theme.sliderTrackColor};
812
695
  border-radius: 3px;
813
696
  }
814
697
 
815
698
  &::-moz-range-track {
816
699
  height: 5px;
817
- background: ${s=>s.theme.sliderTrackColor};
700
+ background: ${e=>e.theme.sliderTrackColor};
818
701
  border-radius: 3px;
819
702
  }
820
703
 
821
704
  &:focus::-webkit-slider-runnable-track {
822
- background: ${s=>s.theme.inputBorder};
705
+ background: ${e=>e.theme.inputBorder};
823
706
  }
824
707
 
825
708
  &:focus::-moz-range-track {
826
- background: ${s=>s.theme.inputBorder};
709
+ background: ${e=>e.theme.inputBorder};
827
710
  }
828
711
 
829
712
  &:focus::-webkit-slider-thumb {
830
- border: 2px solid ${s=>s.theme.textColor};
713
+ border: 2px solid ${e=>e.theme.textColor};
831
714
  }
832
715
 
833
716
  &:focus::-moz-range-thumb {
834
- border: 2px solid ${s=>s.theme.textColor};
717
+ border: 2px solid ${e=>e.theme.textColor};
835
718
  }
836
- `,$c=W.label`
719
+ `,cr=k.label`
837
720
  width: 100%;
838
721
  display: flex;
839
722
  justify-content: space-between;
@@ -841,12 +724,12 @@ React keys must be passed directly to JSX without using spread:
841
724
  padding: 0 1rem;
842
725
  margin-bottom: 0.2rem;
843
726
  font-size: 14px;
844
- `;W.div`
727
+ `;k.div`
845
728
  display: flex;
846
729
  align-items: center;
847
730
  gap: 0.25rem;
848
731
  padding: 0.5rem 0.5rem 0.25rem 0.5rem;
849
- `;W.span`
732
+ `;k.span`
850
733
  flex: 1;
851
734
  font-weight: 600;
852
735
  font-size: 0.875rem;
@@ -854,7 +737,7 @@ React keys must be passed directly to JSX without using spread:
854
737
  text-overflow: ellipsis;
855
738
  white-space: nowrap;
856
739
  margin: 0 0.25rem;
857
- `;W.button`
740
+ `;k.button`
858
741
  display: flex;
859
742
  align-items: center;
860
743
  justify-content: center;
@@ -879,23 +762,24 @@ React keys must be passed directly to JSX without using spread:
879
762
  &:active {
880
763
  transform: scale(0.9);
881
764
  }
882
- `;function lv(s){let e=1/0,t=-1/0;for(let n=0;n<s.length;n++){const i=s[n];e>i&&(e=i),t<i&&(t=i)}return{min:e,max:t}}function qc(s,e){const t=Math.pow(2,e-1),n=s<0?s*t:s*(t-1);return Math.max(-t,Math.min(t-1,n))}function Ou(s,e){switch(s){case 8:return new Int8Array(e);case 16:return new Int16Array(e)}}function jc(s,e,t){const n=s.length,i=Math.ceil(n/e),r=Ou(t,i*2);for(let o=0;o<i;o++){const a=o*e,c=Math.min((o+1)*e,n),l=s.subarray(a,c),u=lv(l),h=qc(u.min,t),p=qc(u.max,t);r[o*2]=h,r[o*2+1]=p}return r}function uv(s,e){const t=s.length,n=1/t,i=s[0].length/2,r=Ou(e,i*2);for(let o=0;o<i;o++){let a=0,c=0;for(let l=0;l<t;l++)a+=n*s[l][o*2],c+=n*s[l][o*2+1];r[o*2]=a,r[o*2+1]=c}return[r]}function hv(s,e=1e3,t=!0,n=0,i,r=16){if(r!==8&&r!==16)throw new Error("Invalid number of bits specified for peaks. Must be 8 or 16.");let o=[];if("getChannelData"in s){const c=s.numberOfChannels,l=i??s.length;for(let u=0;u<c;u++){const p=s.getChannelData(u).subarray(n,l);o.push(jc(p,e,r))}}else{const c=i??s.length,l=s.subarray(n,c);o.push(jc(l,e,r))}return t&&o.length>1&&(o=uv(o,r)),{length:o[0].length/2,data:o,bits:r}}function dv(s,e=1e3,t=!0,n=8,i=0,r){const o=s.sampleRate,a=Math.floor(i*o),c=r!==void 0?Math.floor((i+r)*o):void 0;return hv(s,e,t,a,c,n)}var Lc;(function(s){s.DragStart="dragStart",s.DragMove="dragMove",s.DragEnd="dragEnd",s.DragCancel="dragCancel",s.DragOver="dragOver",s.RegisterDroppable="registerDroppable",s.SetDroppableDisabled="setDroppableDisabled",s.UnregisterDroppable="unregisterDroppable"})(Lc||(Lc={}));function zc(){}const pv=Object.freeze({x:0,y:0});var sn;(function(s){s[s.Forward=1]="Forward",s[s.Backward=-1]="Backward"})(sn||(sn={}));var Zc;(function(s){s.Click="click",s.DragStart="dragstart",s.Keydown="keydown",s.ContextMenu="contextmenu",s.Resize="resize",s.SelectionChange="selectionchange",s.VisibilityChange="visibilitychange"})(Zc||(Zc={}));var ws;(function(s){s.Space="Space",s.Down="ArrowDown",s.Right="ArrowRight",s.Left="ArrowLeft",s.Up="ArrowUp",s.Esc="Escape",s.Enter="Enter",s.Tab="Tab"})(ws||(ws={}));ws.Space,ws.Enter,ws.Esc,ws.Space,ws.Enter,ws.Tab;var Gc;(function(s){s[s.RightClick=2]="RightClick"})(Gc||(Gc={}));var Xc;(function(s){s[s.Pointer=0]="Pointer",s[s.DraggableRect=1]="DraggableRect"})(Xc||(Xc={}));var Hc;(function(s){s[s.TreeOrder=0]="TreeOrder",s[s.ReversedTreeOrder=1]="ReversedTreeOrder"})(Hc||(Hc={}));sn.Backward+"",sn.Forward+"",sn.Backward+"",sn.Forward+"";var Io;(function(s){s[s.Always=0]="Always",s[s.BeforeDragging=1]="BeforeDragging",s[s.WhileDragging=2]="WhileDragging"})(Io||(Io={}));var Do;(function(s){s.Optimized="optimized"})(Do||(Do={}));function fv(s,e){return S.useMemo(()=>s.reduce((t,n)=>{let{eventName:i,handler:r}=n;return t[i]=o=>{r(o,e)},t},{}),[s,e])}Io.WhileDragging,Do.Optimized;const mv={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:zc,draggableNodes:new Map,over:null,measureDroppableContainers:zc},gv=S.createContext(mv),_v=S.createContext({...pv,scaleX:1,scaleY:1});var Yc;(function(s){s[s.Uninitialized=0]="Uninitialized",s[s.Initializing=1]="Initializing",s[s.Initialized=2]="Initialized"})(Yc||(Yc={}));const vv=S.createContext(null),Uc="button",yv="Draggable";function Kc(s){let{id:e,data:t,disabled:n=!1,attributes:i}=s;const r=_u(yv),{activators:o,activatorEvent:a,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:h,over:p}=S.useContext(gv),{role:d=Uc,roleDescription:f="draggable",tabIndex:_=0}=i??{},m=c?.id===e,g=S.useContext(m?_v:vv),[y,x]=er(),[w,v]=er(),b=fv(o,e),k=gu(t);jr(()=>(h.set(e,{id:e,key:r,node:y,activatorNode:w,data:k}),()=>{const R=h.get(e);R&&R.key===r&&h.delete(e)}),[h,e]);const T=S.useMemo(()=>({role:d,tabIndex:_,"aria-disabled":n,"aria-pressed":m&&d===Uc?!0:void 0,"aria-roledescription":f,"aria-describedby":u.draggable}),[n,d,_,m,f,u.draggable]);return{active:c,activatorEvent:a,activeNodeRect:l,attributes:T,isDragging:m,listeners:n?void 0:b,node:y,over:p,setNodeRef:x,setActivatorNodeRef:v,transform:g}}function bv(s){return{id:s.id,start:parseFloat(s.begin),end:parseFloat(s.end),lines:s.lines,lang:s.language}}function wv(s){return{id:s.id,begin:s.start.toFixed(3),end:s.end.toFixed(3),lines:s.lines,language:s.lang||"en"}}W.div.attrs(s=>({style:{left:`${s.$left}px`,width:`${s.$width}px`}}))`
765
+ `;function os(e){let t=1/0,n=-1/0;for(let r=0;r<e.length;r++){const a=e[r];t>a&&(t=a),n<a&&(n=a)}return{min:t,max:n}}function ur(e,t){const n=Math.pow(2,t-1),r=e<0?e*n:e*(n-1);return Math.max(-n,Math.min(n-1,r))}function ea(e,t){switch(e){case 8:return new Int8Array(t);case 16:return new Int16Array(t)}}function dr(e,t,n){const r=e.length,a=Math.ceil(r/t),s=ea(n,a*2);for(let o=0;o<a;o++){const l=o*t,i=Math.min((o+1)*t,r),u=e.subarray(l,i),d=os(u),b=ur(d.min,n),p=ur(d.max,n);s[o*2]=b,s[o*2+1]=p}return s}function ss(e,t){const n=e.length,r=1/n,a=e[0].length/2,s=ea(t,a*2);for(let o=0;o<a;o++){let l=0,i=0;for(let u=0;u<n;u++)l+=r*e[u][o*2],i+=r*e[u][o*2+1];s[o*2]=l,s[o*2+1]=i}return[s]}function is(e,t=1e3,n=!0,r=0,a,s=16){if(s!==8&&s!==16)throw new Error("Invalid number of bits specified for peaks. Must be 8 or 16.");let o=[];if("getChannelData"in e){const i=e.numberOfChannels,u=a??e.length;for(let d=0;d<i;d++){const p=e.getChannelData(d).subarray(r,u);o.push(dr(p,t,s))}}else{const i=a??e.length,u=e.subarray(r,i);o.push(dr(u,t,s))}return n&&o.length>1&&(o=ss(o,s)),{length:o[0].length/2,data:o,bits:s}}function ls(e,t=1e3,n=!0,r=8,a=0,s){const o=s!==void 0?a+s:void 0;return is(e,t,n,a,o,r)}function pt(e,t){this._waveformData=e,this._channelIndex=t}pt.prototype.min_sample=function(e){var t=(e*this._waveformData.channels+this._channelIndex)*2;return this._waveformData._at(t)};pt.prototype.max_sample=function(e){var t=(e*this._waveformData.channels+this._channelIndex)*2+1;return this._waveformData._at(t)};pt.prototype.set_min_sample=function(e,t){var n=(e*this._waveformData.channels+this._channelIndex)*2;return this._waveformData._set_at(n,t)};pt.prototype.set_max_sample=function(e,t){var n=(e*this._waveformData.channels+this._channelIndex)*2+1;return this._waveformData._set_at(n,t)};pt.prototype.min_array=function(){for(var e=this._waveformData.length,t=[],n=0;n<e;n++)t.push(this.min_sample(n));return t};pt.prototype.max_array=function(){for(var e=this._waveformData.length,t=[],n=0;n<e;n++)t.push(this.max_sample(n));return t};var cs=127,us=-128,ds=32767,fs=-32768;function ms(e,t){var n=Math.floor(e/t),r=e-n*t;return r>0&&n++,n}function hs(e){for(var t=e.scale,n=e.amplitude_scale,r=e.split_channels,a=e.length,s=e.sample_rate,o=e.channels.map(function(D){return new Float32Array(D)}),l=r?o.length:1,i=24,u=ms(a,t),d=e.bits===8?1:2,b=i+u*2*d*l,p=new ArrayBuffer(b),f=new DataView(p),C=0,y=i,g=new Array(l),m=new Array(l),w=0;w<l;w++)g[w]=1/0,m[w]=-1/0;var x=e.bits===8?us:fs,v=e.bits===8?cs:ds;f.setInt32(0,2,!0),f.setUint32(4,e.bits===8,!0),f.setInt32(8,s,!0),f.setInt32(12,t,!0),f.setInt32(16,u,!0),f.setInt32(20,l,!0);for(var S=0;S<a;S++){var I=0;if(l===1){for(var $=0;$<o.length;++$)I+=o[$][S];I=Math.floor(v*I*n/o.length),I<g[0]&&(g[0]=I,g[0]<x&&(g[0]=x)),I>m[0]&&(m[0]=I,m[0]>v&&(m[0]=v))}else for(var M=0;M<l;++M)I=Math.floor(v*o[M][S]*n),I<g[M]&&(g[M]=I,g[M]<x&&(g[M]=x)),I>m[M]&&(m[M]=I,m[M]>v&&(m[M]=v));if(++C===t){for(var T=0;T<l;T++)e.bits===8?(f.setInt8(y++,g[T]),f.setInt8(y++,m[T])):(f.setInt16(y,g[T],!0),f.setInt16(y+2,m[T],!0),y+=4),g[T]=1/0,m[T]=-1/0;C=0}}if(C>0)for(var _=0;_<l;_++)e.bits===8?(f.setInt8(y++,g[_]),f.setInt8(y++,m[_])):(f.setInt16(y,g[_],!0),f.setInt16(y+2,m[_],!0));return p}function Yt(e){"@babel/helpers - typeof";return Yt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Yt(e)}function ps(e){return e&&Yt(e)==="object"&&"sample_rate"in e&&"samples_per_pixel"in e&&"bits"in e&&"length"in e&&"data"in e}function gs(e){var t=e&&Yt(e)==="object"&&"byteLength"in e;if(t){var n=new DataView(e),r=n.getInt32(0,!0);if(r!==1&&r!==2)throw new TypeError("WaveformData.create(): This waveform data version not supported")}return t}function bs(e){var t=e.data,n=e.channels||1,r=24,a=e.bits===8?1:2,s=e.length*2*n;if(t.length!==s)throw new Error("WaveformData.create(): Length mismatch in JSON waveform data");var o=r+t.length*a,l=new ArrayBuffer(o),i=new DataView(l);i.setInt32(0,2,!0),i.setUint32(4,e.bits===8,!0),i.setInt32(8,e.sample_rate,!0),i.setInt32(12,e.samples_per_pixel,!0),i.setInt32(16,e.length,!0),i.setInt32(20,n,!0);var u=r;if(e.bits===8)for(var d=0;d<t.length;d++)i.setInt8(u++,t[d],!0);else for(var b=0;b<t.length;b++)i.setInt16(u,t[b],!0),u+=2;return l}function Ct(e){return e==null}function vs(e,t){var n=atob(e);return n}function Cs(e,t,n){var r=vs(e),a=r.indexOf(`
766
+ `,10)+1,s=r.substring(a)+"",o=new Blob([s],{type:"application/javascript"});return URL.createObjectURL(o)}function ws(e,t,n){var r;return function(s){return r=r||Cs(e),new Worker(r,s)}}var xs=ws("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogQXVkaW9CdWZmZXItYmFzZWQgV2F2ZWZvcm1EYXRhIGdlbmVyYXRvcgogICAqCiAgICogQWRhcHRlZCBmcm9tIEJsb2NrRmlsZTo6Q2FsY1N1bW1hcnkgaW4gQXVkYWNpdHksIHdpdGggcGVybWlzc2lvbi4KICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F1ZGFjaXR5L2F1ZGFjaXR5L2Jsb2IvCiAgICogICAxMTA4YzEzNzZjMDkxNjYxNjIzMzVmYWI0NzQzMDA4Y2JhNTdjNGVlL3NyYy9CbG9ja0ZpbGUuY3BwI0wxOTgKICAgKi8KCiAgdmFyIElOVDhfTUFYID0gMTI3OwogIHZhciBJTlQ4X01JTiA9IC0xMjg7CiAgdmFyIElOVDE2X01BWCA9IDMyNzY3OwogIHZhciBJTlQxNl9NSU4gPSAtMzI3Njg7CiAgZnVuY3Rpb24gY2FsY3VsYXRlV2F2ZWZvcm1EYXRhTGVuZ3RoKGF1ZGlvX3NhbXBsZV9jb3VudCwgc2NhbGUpIHsKICAgIHZhciBkYXRhX2xlbmd0aCA9IE1hdGguZmxvb3IoYXVkaW9fc2FtcGxlX2NvdW50IC8gc2NhbGUpOwogICAgdmFyIHNhbXBsZXNfcmVtYWluaW5nID0gYXVkaW9fc2FtcGxlX2NvdW50IC0gZGF0YV9sZW5ndGggKiBzY2FsZTsKICAgIGlmIChzYW1wbGVzX3JlbWFpbmluZyA+IDApIHsKICAgICAgZGF0YV9sZW5ndGgrKzsKICAgIH0KICAgIHJldHVybiBkYXRhX2xlbmd0aDsKICB9CiAgZnVuY3Rpb24gZ2VuZXJhdGVXYXZlZm9ybURhdGEob3B0aW9ucykgewogICAgdmFyIHNjYWxlID0gb3B0aW9ucy5zY2FsZTsKICAgIHZhciBhbXBsaXR1ZGVfc2NhbGUgPSBvcHRpb25zLmFtcGxpdHVkZV9zY2FsZTsKICAgIHZhciBzcGxpdF9jaGFubmVscyA9IG9wdGlvbnMuc3BsaXRfY2hhbm5lbHM7CiAgICB2YXIgbGVuZ3RoID0gb3B0aW9ucy5sZW5ndGg7CiAgICB2YXIgc2FtcGxlX3JhdGUgPSBvcHRpb25zLnNhbXBsZV9yYXRlOwogICAgdmFyIGNoYW5uZWxzID0gb3B0aW9ucy5jaGFubmVscy5tYXAoZnVuY3Rpb24gKGNoYW5uZWwpIHsKICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoY2hhbm5lbCk7CiAgICB9KTsKICAgIHZhciBvdXRwdXRfY2hhbm5lbHMgPSBzcGxpdF9jaGFubmVscyA/IGNoYW5uZWxzLmxlbmd0aCA6IDE7CiAgICB2YXIgaGVhZGVyX3NpemUgPSAyNDsKICAgIHZhciBkYXRhX2xlbmd0aCA9IGNhbGN1bGF0ZVdhdmVmb3JtRGF0YUxlbmd0aChsZW5ndGgsIHNjYWxlKTsKICAgIHZhciBieXRlc19wZXJfc2FtcGxlID0gb3B0aW9ucy5iaXRzID09PSA4ID8gMSA6IDI7CiAgICB2YXIgdG90YWxfc2l6ZSA9IGhlYWRlcl9zaXplICsgZGF0YV9sZW5ndGggKiAyICogYnl0ZXNfcGVyX3NhbXBsZSAqIG91dHB1dF9jaGFubmVsczsKICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodG90YWxfc2l6ZSk7CiAgICB2YXIgZGF0YV92aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICB2YXIgc2NhbGVfY291bnRlciA9IDA7CiAgICB2YXIgb2Zmc2V0ID0gaGVhZGVyX3NpemU7CiAgICB2YXIgbWluX3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICB2YXIgbWF4X3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICBmb3IgKHZhciBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dF9jaGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgIG1pbl92YWx1ZVtjaGFubmVsXSA9IEluZmluaXR5OwogICAgICBtYXhfdmFsdWVbY2hhbm5lbF0gPSAtSW5maW5pdHk7CiAgICB9CiAgICB2YXIgcmFuZ2VfbWluID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NSU4gOiBJTlQxNl9NSU47CiAgICB2YXIgcmFuZ2VfbWF4ID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NQVggOiBJTlQxNl9NQVg7CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMCwgMiwgdHJ1ZSk7IC8vIFZlcnNpb24KICAgIGRhdGFfdmlldy5zZXRVaW50MzIoNCwgb3B0aW9ucy5iaXRzID09PSA4LCB0cnVlKTsgLy8gSXMgOCBiaXQ/CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoOCwgc2FtcGxlX3JhdGUsIHRydWUpOyAvLyBTYW1wbGUgcmF0ZQogICAgZGF0YV92aWV3LnNldEludDMyKDEyLCBzY2FsZSwgdHJ1ZSk7IC8vIFNjYWxlCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMTYsIGRhdGFfbGVuZ3RoLCB0cnVlKTsgLy8gTGVuZ3RoCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMjAsIG91dHB1dF9jaGFubmVscywgdHJ1ZSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzYW1wbGUgPSAwOwogICAgICBpZiAob3V0cHV0X2NoYW5uZWxzID09PSAxKSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwgPSAwOyBfY2hhbm5lbCA8IGNoYW5uZWxzLmxlbmd0aDsgKytfY2hhbm5lbCkgewogICAgICAgICAgc2FtcGxlICs9IGNoYW5uZWxzW19jaGFubmVsXVtpXTsKICAgICAgICB9CiAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBzYW1wbGUgKiBhbXBsaXR1ZGVfc2NhbGUgLyBjaGFubmVscy5sZW5ndGgpOwogICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbMF0pIHsKICAgICAgICAgIG1pbl92YWx1ZVswXSA9IHNhbXBsZTsKICAgICAgICAgIGlmIChtaW5fdmFsdWVbMF0gPCByYW5nZV9taW4pIHsKICAgICAgICAgICAgbWluX3ZhbHVlWzBdID0gcmFuZ2VfbWluOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc2FtcGxlID4gbWF4X3ZhbHVlWzBdKSB7CiAgICAgICAgICBtYXhfdmFsdWVbMF0gPSBzYW1wbGU7CiAgICAgICAgICBpZiAobWF4X3ZhbHVlWzBdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgIG1heF92YWx1ZVswXSA9IHJhbmdlX21heDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwyID0gMDsgX2NoYW5uZWwyIDwgb3V0cHV0X2NoYW5uZWxzOyArK19jaGFubmVsMikgewogICAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBjaGFubmVsc1tfY2hhbm5lbDJdW2ldICogYW1wbGl0dWRlX3NjYWxlKTsKICAgICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtaW5fdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1pbl92YWx1ZVtfY2hhbm5lbDJdIDwgcmFuZ2VfbWluKSB7CiAgICAgICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9taW47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChzYW1wbGUgPiBtYXhfdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtYXhfdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1heF92YWx1ZVtfY2hhbm5lbDJdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgICAgbWF4X3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9tYXg7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCsrc2NhbGVfY291bnRlciA9PT0gc2NhbGUpIHsKICAgICAgICBmb3IgKHZhciBfY2hhbm5lbDMgPSAwOyBfY2hhbm5lbDMgPCBvdXRwdXRfY2hhbm5lbHM7IF9jaGFubmVsMysrKSB7CiAgICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtaW5fdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50MTYob2Zmc2V0LCBtaW5fdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQxNihvZmZzZXQgKyAyLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIG9mZnNldCArPSA0OwogICAgICAgICAgfQogICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsM10gPSBJbmZpbml0eTsKICAgICAgICAgIG1heF92YWx1ZVtfY2hhbm5lbDNdID0gLUluZmluaXR5OwogICAgICAgIH0KICAgICAgICBzY2FsZV9jb3VudGVyID0gMDsKICAgICAgfQogICAgfQogICAgaWYgKHNjYWxlX2NvdW50ZXIgPiAwKSB7CiAgICAgIGZvciAodmFyIF9jaGFubmVsNCA9IDA7IF9jaGFubmVsNCA8IG91dHB1dF9jaGFubmVsczsgX2NoYW5uZWw0KyspIHsKICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50OChvZmZzZXQrKywgbWluX3ZhbHVlW19jaGFubmVsNF0pOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDgob2Zmc2V0KyssIG1heF92YWx1ZVtfY2hhbm5lbDRdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCwgbWluX3ZhbHVlW19jaGFubmVsNF0sIHRydWUpOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCArIDIsIG1heF92YWx1ZVtfY2hhbm5lbDRdLCB0cnVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBidWZmZXI7CiAgfQoKICBvbm1lc3NhZ2UgPSBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZ0KSB7CiAgICB2YXIgYnVmZmVyID0gZ2VuZXJhdGVXYXZlZm9ybURhdGEoZXZ0LmRhdGEpOwoKICAgIC8vIFRyYW5zZmVyIGJ1ZmZlciB0byB0aGUgY2FsbGluZyB0aHJlYWQKICAgIHRoaXMucG9zdE1lc3NhZ2UoYnVmZmVyLCBbYnVmZmVyXSk7CiAgICB0aGlzLmNsb3NlKCk7CiAgfTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdhdmVmb3JtLWRhdGEtd29ya2VyLmpzLm1hcAoK");function Oe(e){if(ps(e)&&(e=bs(e)),gs(e)){this._data=new DataView(e),this._offset=this._version()===2?24:20,this._channels=[];for(var t=0;t<this.channels;t++)this._channels[t]=new pt(this,t)}else throw new TypeError("WaveformData.create(): Unknown data format")}var Tt={scale:512,bits:8,amplitude_scale:1,split_channels:!1,disable_worker:!1};function ys(e){var t={scale:e.scale||Tt.scale,bits:e.bits||Tt.bits,amplitude_scale:e.amplitude_scale||Tt.amplitude_scale,split_channels:e.split_channels||Tt.split_channels,disable_worker:e.disable_worker||Tt.disable_worker};return t}function Is(e){for(var t=[],n=0;n<e.numberOfChannels;++n)t.push(e.getChannelData(n).buffer);return t}function ta(e,t,n){var r=Is(e);if(t.disable_worker){var a=hs({scale:t.scale,bits:t.bits,amplitude_scale:t.amplitude_scale,split_channels:t.split_channels,length:e.length,sample_rate:e.sampleRate,channels:r});n(void 0,new Oe(a),e)}else{var s=new xs;s.onmessage=function(o){n(void 0,new Oe(o.data),e)},s.postMessage({scale:t.scale,bits:t.bits,amplitude_scale:t.amplitude_scale,split_channels:t.split_channels,length:e.length,sample_rate:e.sampleRate,channels:r},r)}}function Ss(e,t,n,r){function a(o){o||(o=new DOMException("EncodingError")),r(o),r=function(){}}var s=e.decodeAudioData(t,function(o){ta(o,n,r)},a);s&&s.catch(a)}Oe.create=function(t){return new Oe(t)};Oe.createFromAudio=function(e,t){var n=ys(e);if(e.audio_context&&e.array_buffer)return Ss(e.audio_context,e.array_buffer,n,t);if(e.audio_buffer)return ta(e.audio_buffer,n,t);throw new TypeError("WaveformData.createFromAudio(): Pass either an AudioContext and ArrayBuffer, or an AudioBuffer object")};function tn(e){this._inputData=e.waveformData,this._output_samples_per_pixel=e.scale,this._scale=this._inputData.scale,this._input_buffer_size=this._inputData.length;var t=this._input_buffer_size*this._inputData.scale,n=Math.ceil(t/this._output_samples_per_pixel),r=24,a=this._inputData.bits===8?1:2,s=r+n*2*this._inputData.channels*a;this._output_data=new ArrayBuffer(s),this.output_dataview=new DataView(this._output_data),this.output_dataview.setInt32(0,2,!0),this.output_dataview.setUint32(4,this._inputData.bits===8,!0),this.output_dataview.setInt32(8,this._inputData.sample_rate,!0),this.output_dataview.setInt32(12,this._output_samples_per_pixel,!0),this.output_dataview.setInt32(16,n,!0),this.output_dataview.setInt32(20,this._inputData.channels,!0),this._outputWaveformData=new Oe(this._output_data),this._input_index=0,this._output_index=0;var o=this._inputData.channels;this._min=new Array(o),this._max=new Array(o);for(var l=0;l<o;++l)this._input_buffer_size>0?(this._min[l]=this._inputData.channel(l).min_sample(this._input_index),this._max[l]=this._inputData.channel(l).max_sample(this._input_index)):(this._min[l]=0,this._max[l]=0);this._min_value=this._inputData.bits===8?-128:-32768,this._max_value=this._inputData.bits===8?127:32767,this._where=0,this._prev_where=0,this._stop=0,this._last_input_index=0}tn.prototype.sample_at_pixel=function(e){return Math.floor(e*this._output_samples_per_pixel)};tn.prototype.next=function(){for(var e=0,t=1e3,n=this._inputData.channels,r;this._input_index<this._input_buffer_size&&e<t;){for(;Math.floor(this.sample_at_pixel(this._output_index)/this._scale)===this._input_index;){if(this._output_index>0)for(var a=0;a<n;++a)r=this._outputWaveformData.channel(a),r.set_min_sample(this._output_index-1,this._min[a]),r.set_max_sample(this._output_index-1,this._max[a]);if(this._last_input_index=this._input_index,this._output_index++,this._where=this.sample_at_pixel(this._output_index),this._prev_where=this.sample_at_pixel(this._output_index-1),this._where!==this._prev_where)for(var s=0;s<n;++s)this._min[s]=this._max_value,this._max[s]=this._min_value}for(this._where=this.sample_at_pixel(this._output_index),this._stop=Math.floor(this._where/this._scale),this._stop>this._input_buffer_size&&(this._stop=this._input_buffer_size);this._input_index<this._stop;){for(var o=0;o<n;++o){r=this._inputData.channel(o);var l=r.min_sample(this._input_index);l<this._min[o]&&(this._min[o]=l),l=r.max_sample(this._input_index),l>this._max[o]&&(this._max[o]=l)}this._input_index++}e++}if(this._input_index<this._input_buffer_size)return!1;if(this._input_index!==this._last_input_index)for(var i=0;i<n;++i)r=this._outputWaveformData.channel(i),r.set_min_sample(this._output_index-1,this._min[i]),r.set_max_sample(this._output_index-1,this._max[i]);return!0};tn.prototype.getOutputData=function(){return this._output_data};Oe.prototype={_getResampleOptions:function(t){var n={};if(n.scale=t.scale,n.width=t.width,!Ct(n.width)&&(typeof n.width!="number"||n.width<=0))throw new RangeError("WaveformData.resample(): width should be a positive integer value");if(!Ct(n.scale)&&(typeof n.scale!="number"||n.scale<=0))throw new RangeError("WaveformData.resample(): scale should be a positive integer value");if(!n.scale&&!n.width)throw new Error("WaveformData.resample(): Missing scale or width option");if(n.width&&(n.scale=Math.floor(this.duration*this.sample_rate/n.width)),n.scale<this.scale)throw new Error("WaveformData.resample(): Zoom level "+n.scale+" too low, minimum: "+this.scale);return n.abortSignal=t.abortSignal,n},resample:function(t){t=this._getResampleOptions(t),t.waveformData=this;for(var n=new tn(t);!n.next(););return new Oe(n.getOutputData())},concat:function(){var t=this,n=Array.prototype.slice.call(arguments);n.forEach(function(a){if(t.channels!==a.channels||t.sample_rate!==a.sample_rate||t.bits!==a.bits||t.scale!==a.scale)throw new Error("WaveformData.concat(): Waveforms are incompatible")});var r=this._concatBuffers.apply(this,n);return Oe.create(r)},_concatBuffers:function(){for(var t=Array.prototype.slice.call(arguments),n=this._offset,r=n,a=0,s=[this].concat(t).map(function(m){return m._data.buffer}),o=0;o<s.length;o++){var l=s[o],i=new DataView(l).getInt32(16,!0);r+=l.byteLength-n,a+=i}for(var u=new ArrayBuffer(r),d=new DataView(s[0]),b=new DataView(u),p=0;p<n;p++)b.setUint8(p,d.getUint8(p));b.setInt32(16,a,!0);for(var f=0,C=new Uint8Array(u,n),y=0;y<s.length;y++){var g=s[y];C.set(new Uint8Array(g,n),f),f+=g.byteLength-n}return u},slice:function(t){var n=0,r=0;if(!Ct(t.startIndex)&&!Ct(t.endIndex)?(n=t.startIndex,r=t.endIndex):!Ct(t.startTime)&&!Ct(t.endTime)&&(n=this.at_time(t.startTime),r=this.at_time(t.endTime)),n<0)throw new RangeError("startIndex or startTime must not be negative");if(r<0)throw new RangeError("endIndex or endTime must not be negative");n>this.length&&(n=this.length),r>this.length&&(r=this.length),n>r&&(n=r);var a=r-n,s=24,o=this.bits===8?1:2,l=s+a*2*this.channels*o,i=new ArrayBuffer(l),u=new DataView(i);u.setInt32(0,2,!0),u.setUint32(4,this.bits===8,!0),u.setInt32(8,this.sample_rate,!0),u.setInt32(12,this.scale,!0),u.setInt32(16,a,!0),u.setInt32(20,this.channels,!0);for(var d=0;d<a*this.channels*2;d++){var b=this._at(n*this.channels*2+d);this.bits===8?u.setInt8(s+d,b):u.setInt16(s+d*2,b,!0)}return new Oe(i)},_version:function(){return this._data.getInt32(0,!0)},get length(){return this._data.getUint32(16,!0)},get bits(){var e=!!this._data.getUint32(4,!0);return e?8:16},get duration(){return this.length*this.scale/this.sample_rate},get pixels_per_second(){return this.sample_rate/this.scale},get seconds_per_pixel(){return this.scale/this.sample_rate},get channels(){return this._version()===2?this._data.getInt32(20,!0):1},channel:function(t){if(t>=0&&t<this._channels.length)return this._channels[t];throw new RangeError("Invalid channel: "+t)},get sample_rate(){return this._data.getInt32(8,!0)},get scale(){return this._data.getInt32(12,!0)},_at:function(t){return this.bits===8?this._data.getInt8(this._offset+t):this._data.getInt16(this._offset+t*2,!0)},_set_at:function(t,n){return this.bits===8?this._data.setInt8(this._offset+t,n):this._data.setInt16(this._offset+t*2,n,!0)},at_time:function(t){return Math.floor(t*this.sample_rate/this.scale)},time:function(t){return t*this.scale/this.sample_rate},toJSON:function(){for(var t={version:2,channels:this.channels,sample_rate:this.sample_rate,samples_per_pixel:this.scale,bits:this.bits,length:this.length,data:[]},n=0;n<this.length;n++)for(var r=0;r<this.channels;r++)t.data.push(this.channel(r).min_sample(n)),t.data.push(this.channel(r).max_sample(n));return t},toArrayBuffer:function(){return this._data.buffer}};async function Bn(e){const t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch waveform data: ${t.statusText}`);if(e.endsWith(".dat")){const r=await t.arrayBuffer();return Oe.create(r)}else{const r=await t.json();return Oe.create(r)}}function na(e,t=0){const n=e.channel(t),r=e.bits,a=n.min_array(),s=n.max_array(),o=a.length,l=r===8?new Int8Array(o*2):new Int16Array(o*2);for(let i=0;i<o;i++)l[i*2]=a[i],l[i*2+1]=s[i];return{data:l,bits:r,length:o,sampleRate:e.sample_rate}}async function As(e,t=0){const n=await Bn(e);return na(n,t)}async function ks(e){const t=await Bn(e);return{sampleRate:t.sample_rate,channels:t.channels,duration:t.duration,samplesPerPixel:t.scale,length:t.length,bits:t.bits}}function $s(e,t,n=0,r,a){let s=e;if(r!==void 0&&a!==void 0){const p=e.scale,f=Math.floor(r/p),C=Math.ceil((r+a)/p);s=s.slice({startIndex:f,endIndex:C})}s.scale!==t&&(s=s.resample({scale:t}));const o=s.channel(n),l=s.bits,i=o.min_array(),u=o.max_array(),d=i.length,b=l===8?new Int8Array(d*2):new Int16Array(d*2);for(let p=0;p<d;p++)b[p*2]=i[p],b[p*2+1]=u[p];return{data:b,bits:l,length:d}}var fr;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(fr||(fr={}));function mr(){}const Rs=Object.freeze({x:0,y:0});var xt;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(xt||(xt={}));var hr;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(hr||(hr={}));var ut;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(ut||(ut={}));ut.Space,ut.Enter,ut.Esc,ut.Space,ut.Enter,ut.Tab;var pr;(function(e){e[e.RightClick=2]="RightClick"})(pr||(pr={}));var gr;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(gr||(gr={}));var br;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(br||(br={}));xt.Backward+"",xt.Forward+"",xt.Backward+"",xt.Forward+"";var yn;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(yn||(yn={}));var In;(function(e){e.Optimized="optimized"})(In||(In={}));function Es(e,t){return c.useMemo(()=>e.reduce((n,r)=>{let{eventName:a,handler:s}=r;return n[a]=o=>{s(o,t)},n},{}),[e,t])}yn.WhileDragging,In.Optimized;const Ds={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:mr,draggableNodes:new Map,over:null,measureDroppableContainers:mr},Ts=c.createContext(Ds),_s=c.createContext({...Rs,scaleX:1,scaleY:1});var vr;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(vr||(vr={}));const Ms=c.createContext(null),Cr="button",Bs="Draggable";function wr(e){let{id:t,data:n,disabled:r=!1,attributes:a}=e;const s=Vr(Bs),{activators:o,activatorEvent:l,active:i,activeNodeRect:u,ariaDescribedById:d,draggableNodes:b,over:p}=c.useContext(Ts),{role:f=Cr,roleDescription:C="draggable",tabIndex:y=0}=a??{},g=i?.id===t,m=c.useContext(g?_s:Ms),[w,x]=Ht(),[v,S]=Ht(),I=Es(o,t),$=Pr(n);Ut(()=>(b.set(t,{id:t,key:s,node:w,activatorNode:v,data:$}),()=>{const T=b.get(t);T&&T.key===s&&b.delete(t)}),[b,t]);const M=c.useMemo(()=>({role:f,tabIndex:y,"aria-disabled":r,"aria-pressed":g&&f===Cr?!0:void 0,"aria-roledescription":C,"aria-describedby":d.draggable}),[r,f,y,g,C,d.draggable]);return{active:i,activatorEvent:l,activeNodeRect:u,attributes:M,isDragging:g,listeners:r?void 0:I,node:w,over:p,setNodeRef:x,setActivatorNodeRef:S,transform:m}}function Fs(e){return{id:e.id,start:parseFloat(e.begin),end:parseFloat(e.end),lines:e.lines,lang:e.language}}function Ws(e){return{id:e.id,begin:e.start.toFixed(3),end:e.end.toFixed(3),lines:e.lines,language:e.lang||"en"}}k.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
883
767
  position: absolute;
884
768
  top: 0;
885
- background: ${s=>s.$color};
769
+ background: ${e=>e.$color};
886
770
  height: 100%;
887
771
  z-index: 10;
888
772
  pointer-events: auto;
889
773
  opacity: 0.3;
890
- border: 2px solid ${s=>s.$color};
774
+ border: 2px solid ${e=>e.$color};
891
775
  border-radius: 4px;
892
776
  cursor: pointer;
893
777
 
894
778
  &:hover {
895
779
  opacity: 0.5;
896
- border-color: ${s=>s.$color};
780
+ border-color: ${e=>e.$color};
897
781
  }
898
- `;W.div`
782
+ `;k.div`
899
783
  position: absolute;
900
784
  bottom: 0;
901
785
  left: 0;
@@ -911,7 +795,7 @@ React keys must be passed directly to JSX without using spread:
911
795
  pointer-events: none;
912
796
  white-space: pre-wrap;
913
797
  word-break: break-word;
914
- `;W.textarea`
798
+ `;k.textarea`
915
799
  position: absolute;
916
800
  bottom: 0;
917
801
  left: 0;
@@ -931,7 +815,7 @@ React keys must be passed directly to JSX without using spread:
931
815
  outline: none;
932
816
  border-color: #4CAF50;
933
817
  }
934
- `;W.div`
818
+ `;k.div`
935
819
  position: absolute;
936
820
  top: 0;
937
821
  left: 0;
@@ -942,7 +826,7 @@ React keys must be passed directly to JSX without using spread:
942
826
  padding: 4px;
943
827
  justify-content: flex-start;
944
828
  align-items: center;
945
- `;W.button`
829
+ `;k.button`
946
830
  background: transparent;
947
831
  border: 1px solid rgba(255, 255, 255, 0.5);
948
832
  color: white;
@@ -964,19 +848,19 @@ React keys must be passed directly to JSX without using spread:
964
848
  &:active {
965
849
  background: rgba(255, 255, 255, 0.3);
966
850
  }
967
- `;var xv=W.div.attrs(s=>({style:{left:`${s.$left}px`,width:`${s.$width}px`}}))`
851
+ `;var Zs=k.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
968
852
  position: absolute;
969
853
  top: 0;
970
854
  height: 100%;
971
855
  pointer-events: none; /* Let events pass through to children */
972
- `,Cv=W.div`
856
+ `,Ps=k.div`
973
857
  position: absolute;
974
858
  top: 0;
975
859
  left: 0;
976
860
  right: 0;
977
861
  height: 100%;
978
- background: ${s=>s.$isActive?s.theme?.annotationBoxActiveBackground||"rgba(255, 200, 100, 0.95)":s.theme?.annotationBoxBackground||"rgba(255, 255, 255, 0.85)"};
979
- border: ${s=>s.$isActive?"3px":"2px"} solid ${s=>s.$isActive?s.theme?.annotationBoxActiveBorder||"#ff9800":s.$color};
862
+ background: ${e=>e.$isActive?e.theme?.annotationBoxActiveBackground||"rgba(255, 200, 100, 0.95)":e.theme?.annotationBoxBackground||"rgba(255, 255, 255, 0.85)"};
863
+ border: ${e=>e.$isActive?"3px":"2px"} solid ${e=>e.$isActive?e.theme?.annotationBoxActiveBorder||"#ff9800":e.$color};
980
864
  border-radius: 4px;
981
865
  cursor: pointer;
982
866
  pointer-events: auto;
@@ -985,33 +869,33 @@ React keys must be passed directly to JSX without using spread:
985
869
  justify-content: center;
986
870
  overflow: hidden;
987
871
  transition: all 0.2s ease;
988
- box-shadow: ${s=>s.$isActive?"0 2px 8px rgba(255, 152, 0, 0.4), inset 0 0 0 1px rgba(255, 152, 0, 0.2)":"0 1px 3px rgba(0, 0, 0, 0.1)"};
872
+ box-shadow: ${e=>e.$isActive?"0 2px 8px rgba(255, 152, 0, 0.4), inset 0 0 0 1px rgba(255, 152, 0, 0.2)":"0 1px 3px rgba(0, 0, 0, 0.1)"};
989
873
 
990
874
  &:hover {
991
- background: ${s=>s.theme?.annotationBoxHoverBackground||"rgba(255, 255, 255, 0.98)"};
992
- border-color: ${s=>s.theme?.annotationBoxActiveBorder||"#ff9800"};
875
+ background: ${e=>e.theme?.annotationBoxHoverBackground||"rgba(255, 255, 255, 0.98)"};
876
+ border-color: ${e=>e.theme?.annotationBoxActiveBorder||"#ff9800"};
993
877
  border-width: 3px;
994
878
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
995
879
  }
996
- `,Sv=W.span`
880
+ `,Vs=k.span`
997
881
  font-size: 12px;
998
882
  font-weight: 600;
999
- color: ${s=>s.theme?.annotationLabelColor||"#2a2a2a"};
883
+ color: ${e=>e.theme?.annotationLabelColor||"#2a2a2a"};
1000
884
  white-space: nowrap;
1001
885
  overflow: hidden;
1002
886
  text-overflow: ellipsis;
1003
887
  padding: 0 6px;
1004
888
  letter-spacing: 0.3px;
1005
889
  user-select: none;
1006
- `,Qc=W.div`
890
+ `,xr=k.div`
1007
891
  position: absolute;
1008
892
  top: 0;
1009
- ${s=>s.$position==="left"?"left: -8px":"right: -8px"};
893
+ ${e=>e.$position==="left"?"left: -8px":"right: -8px"};
1010
894
  width: 16px;
1011
895
  height: 100%;
1012
896
  cursor: ew-resize;
1013
897
  z-index: 120; /* Above ClickOverlay (z-index: 100) and AnnotationBoxesWrapper (z-index: 110) */
1014
- background: ${s=>s.$isDragging?s.theme?.annotationResizeHandleColor||"rgba(0, 0, 0, 0.2)":"transparent"};
898
+ background: ${e=>e.$isDragging?e.theme?.annotationResizeHandleColor||"rgba(0, 0, 0, 0.2)":"transparent"};
1015
899
  border-radius: 4px;
1016
900
  touch-action: none; /* Important for @dnd-kit on touch devices */
1017
901
  pointer-events: auto;
@@ -1024,121 +908,121 @@ React keys must be passed directly to JSX without using spread:
1024
908
  transform: translate(-50%, -50%);
1025
909
  width: 4px;
1026
910
  height: 60%;
1027
- background: ${s=>s.$isDragging?s.theme?.annotationResizeHandleActiveColor||"rgba(0, 0, 0, 0.8)":s.theme?.annotationResizeHandleColor||"rgba(0, 0, 0, 0.4)"};
911
+ background: ${e=>e.$isDragging?e.theme?.annotationResizeHandleActiveColor||"rgba(0, 0, 0, 0.8)":e.theme?.annotationResizeHandleColor||"rgba(0, 0, 0, 0.4)"};
1028
912
  border-radius: 2px;
1029
- opacity: ${s=>s.$isDragging?1:.6};
913
+ opacity: ${e=>e.$isDragging?1:.6};
1030
914
  transition: opacity 0.2s, background 0.2s;
1031
915
  }
1032
916
 
1033
917
  &:hover {
1034
- background: ${s=>s.theme?.annotationResizeHandleColor||"rgba(0, 0, 0, 0.1)"};
918
+ background: ${e=>e.theme?.annotationResizeHandleColor||"rgba(0, 0, 0, 0.1)"};
1035
919
  }
1036
920
 
1037
921
  &:hover::before {
1038
922
  opacity: 1;
1039
- background: ${s=>s.theme?.annotationResizeHandleActiveColor||"rgba(0, 0, 0, 0.7)"};
923
+ background: ${e=>e.theme?.annotationResizeHandleActiveColor||"rgba(0, 0, 0, 0.7)"};
1040
924
  }
1041
- `,Tv=({annotationId:s,annotationIndex:e,startPosition:t,endPosition:n,label:i,color:r="#ff9800",isActive:o=!1,onClick:a,editable:c=!0})=>{const l=Math.max(0,n-t),u=`annotation-boundary-start-${e}`,{attributes:h,listeners:p,setActivatorNodeRef:d,isDragging:f}=Kc({id:u,data:{annotationId:s,annotationIndex:e,edge:"start"},disabled:!c}),_=`annotation-boundary-end-${e}`,{attributes:m,listeners:g,setActivatorNodeRef:y,isDragging:x}=Kc({id:_,data:{annotationId:s,annotationIndex:e,edge:"end"},disabled:!c});if(l<=0)return null;const w=b=>k=>{k.stopPropagation(),b?.(k)},v=b=>{b.stopPropagation()};return E.jsxs(xv,{$left:t,$width:l,children:[E.jsx(Cv,{$color:r,$isActive:o,onClick:a,children:i&&E.jsx(Sv,{children:i})}),c&&E.jsx(Qc,{ref:d,$position:"left",$isDragging:f,onClick:v,...p,onPointerDown:w(p?.onPointerDown),...h}),c&&E.jsx(Qc,{ref:y,$position:"right",$isDragging:x,onClick:v,...g,onPointerDown:w(g?.onPointerDown),...m})]})},kv=W.div.attrs(s=>({style:{height:`${s.$height}px`}}))`
925
+ `,js=({annotationId:e,annotationIndex:t,startPosition:n,endPosition:r,label:a,color:s="#ff9800",isActive:o=!1,onClick:l,editable:i=!0})=>{const u=Math.max(0,r-n),d=`annotation-boundary-start-${t}`,{attributes:b,listeners:p,setActivatorNodeRef:f,isDragging:C}=wr({id:d,data:{annotationId:e,annotationIndex:t,edge:"start"},disabled:!i}),y=`annotation-boundary-end-${t}`,{attributes:g,listeners:m,setActivatorNodeRef:w,isDragging:x}=wr({id:y,data:{annotationId:e,annotationIndex:t,edge:"end"},disabled:!i});if(u<=0)return null;const v=I=>$=>{$.stopPropagation(),I?.($)},S=I=>{I.stopPropagation()};return E.jsxs(Zs,{$left:n,$width:u,children:[E.jsx(Ps,{$color:s,$isActive:o,onClick:l,children:a&&E.jsx(Vs,{children:a})}),i&&E.jsx(xr,{ref:f,$position:"left",$isDragging:C,onClick:S,...p,onPointerDown:v(p?.onPointerDown),...b}),i&&E.jsx(xr,{ref:w,$position:"right",$isDragging:x,onClick:S,...m,onPointerDown:v(m?.onPointerDown),...g})]})},zs=k.div.attrs(e=>({style:{height:`${e.$height}px`}}))`
1042
926
  position: relative;
1043
927
  display: flex;
1044
- ${s=>s.$width!==void 0&&`width: ${s.$width}px;`}
928
+ ${e=>e.$width!==void 0&&`width: ${e.$width}px;`}
1045
929
  background: transparent;
1046
930
  z-index: 110;
1047
- `,Av=W.div`
931
+ `,Os=k.div`
1048
932
  position: sticky;
1049
933
  z-index: 200;
1050
934
  left: 0;
1051
935
  height: 100%;
1052
- width: ${s=>s.$controlWidth}px;
936
+ width: ${e=>e.$controlWidth}px;
1053
937
  flex-shrink: 0;
1054
938
  background: transparent;
1055
- `,Iv=W.div`
939
+ `,Ns=k.div`
1056
940
  position: relative;
1057
941
  flex: 1;
1058
- padding-left: ${s=>s.$offset||0}px;
1059
- `,Dv=({children:s,className:e,height:t=30,offset:n=0,width:i})=>{const{controls:{show:r,width:o}}=Gr();return E.jsxs(kv,{className:e,$height:t,$controlWidth:r?o:0,$width:i,children:[E.jsx(Av,{$controlWidth:r?o:0}),E.jsx(Iv,{$offset:n,children:s})]})};W.div.attrs(s=>({style:{height:`${s.$height}px`}}))`
942
+ padding-left: ${e=>e.$offset||0}px;
943
+ `,Ls=({children:e,className:t,height:n=30,offset:r=0,width:a})=>{const{controls:{show:s,width:o}}=en();return E.jsxs(zs,{className:t,$height:n,$controlWidth:s?o:0,$width:a,children:[E.jsx(Os,{$controlWidth:s?o:0}),E.jsx(Ns,{$offset:r,children:e})]})};k.div.attrs(e=>({style:{height:`${e.$height}px`}}))`
1060
944
  position: relative;
1061
945
  display: flex;
1062
- ${s=>s.$width!==void 0&&`width: ${s.$width}px;`}
946
+ ${e=>e.$width!==void 0&&`width: ${e.$width}px;`}
1063
947
  background: transparent;
1064
- `;W.div`
948
+ `;k.div`
1065
949
  position: sticky;
1066
950
  z-index: 200;
1067
951
  left: 0;
1068
952
  height: 100%;
1069
- width: ${s=>s.$controlWidth}px;
953
+ width: ${e=>e.$controlWidth}px;
1070
954
  flex-shrink: 0;
1071
955
  background: transparent;
1072
956
  display: flex;
1073
957
  align-items: center;
1074
958
  justify-content: center;
1075
959
  font-size: 12px;
1076
- color: ${s=>s.theme?.textColorMuted||"#666"};
960
+ color: ${e=>e.theme?.textColorMuted||"#666"};
1077
961
  font-weight: bold;
1078
- `;W.div`
962
+ `;k.div`
1079
963
  position: relative;
1080
964
  flex: 1;
1081
- padding-left: ${s=>s.$offset||0}px;
1082
- `;var Rv=W.div`
1083
- background: ${s=>s.theme?.backgroundColor||"#fff"};
1084
- ${s=>s.$height?`height: ${s.$height}px;`:"max-height: 200px;"}
965
+ padding-left: ${e=>e.$offset||0}px;
966
+ `;var Xs=k.div`
967
+ background: ${e=>e.theme?.backgroundColor||"#fff"};
968
+ ${e=>e.$height?`height: ${e.$height}px;`:"max-height: 200px;"}
1085
969
  overflow-y: auto;
1086
970
  padding: 8px;
1087
- `,Ev=W.div`
971
+ `,Hs=k.div`
1088
972
  padding: 12px;
1089
973
  margin-bottom: 6px;
1090
- border-left: 4px solid ${s=>s.$isActive?"#ff9800":"transparent"};
1091
- background: ${s=>s.$isActive?"rgba(255, 152, 0, 0.15)":"transparent"};
974
+ border-left: 4px solid ${e=>e.$isActive?"#ff9800":"transparent"};
975
+ background: ${e=>e.$isActive?"rgba(255, 152, 0, 0.15)":"transparent"};
1092
976
  border-radius: 4px;
1093
977
  transition: all 0.2s;
1094
978
  cursor: pointer;
1095
- box-shadow: ${s=>s.$isActive?"0 2px 8px rgba(255, 152, 0, 0.25), inset 0 0 0 1px rgba(255, 152, 0, 0.3)":"none"};
979
+ box-shadow: ${e=>e.$isActive?"0 2px 8px rgba(255, 152, 0, 0.25), inset 0 0 0 1px rgba(255, 152, 0, 0.3)":"none"};
1096
980
 
1097
981
  &:hover {
1098
- background: ${s=>s.$isActive?"rgba(255, 152, 0, 0.2)":s.theme?.annotationTextItemHoverBackground||"rgba(0, 0, 0, 0.05)"};
1099
- border-left-color: ${s=>s.$isActive?"#ff9800":s.theme?.borderColor||"#ddd"};
982
+ background: ${e=>e.$isActive?"rgba(255, 152, 0, 0.2)":e.theme?.annotationTextItemHoverBackground||"rgba(0, 0, 0, 0.05)"};
983
+ border-left-color: ${e=>e.$isActive?"#ff9800":e.theme?.borderColor||"#ddd"};
1100
984
  }
1101
985
 
1102
986
  &:focus-visible {
1103
987
  outline: 2px solid #ff9800;
1104
988
  outline-offset: 2px;
1105
989
  }
1106
- `,Mv=W.div`
990
+ `,Gs=k.div`
1107
991
  display: flex;
1108
992
  justify-content: space-between;
1109
993
  align-items: center;
1110
994
  margin-bottom: 6px;
1111
- `,Ov=W.div`
995
+ `,Ys=k.div`
1112
996
  display: flex;
1113
997
  align-items: center;
1114
998
  gap: 8px;
1115
- `,Nv=W.span`
999
+ `,Ks=k.span`
1116
1000
  font-size: 11px;
1117
1001
  font-weight: 600;
1118
- color: ${s=>s.theme?.textColorMuted||"#666"};
1002
+ color: ${e=>e.theme?.textColorMuted||"#666"};
1119
1003
  background: transparent;
1120
1004
  padding: 2px 6px;
1121
1005
  border-radius: 3px;
1122
1006
  min-width: 20px;
1123
- outline: ${s=>s.$isEditable?`1px dashed ${s.theme?.borderColor||"#ddd"}`:"none"};
1007
+ outline: ${e=>e.$isEditable?`1px dashed ${e.theme?.borderColor||"#ddd"}`:"none"};
1124
1008
 
1125
1009
  &[contenteditable='true']:focus {
1126
1010
  outline: 2px solid #ff9800;
1127
1011
  background: rgba(255, 152, 0, 0.1);
1128
1012
  }
1129
- `,Fv=W.span`
1013
+ `,Us=k.span`
1130
1014
  font-size: 12px;
1131
1015
  font-weight: 500;
1132
- color: ${s=>s.theme?.textColorMuted||"#555"};
1016
+ color: ${e=>e.theme?.textColorMuted||"#555"};
1133
1017
  font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1134
1018
  letter-spacing: 0.5px;
1135
- `,Vv=W.div`
1019
+ `,Js=k.div`
1136
1020
  display: flex;
1137
1021
  gap: 6px;
1138
- `,Pv=W.button`
1139
- background: ${s=>s.theme?.surfaceColor||"#f5f5f5"};
1140
- border: 1px solid ${s=>s.theme?.borderColor||"#ccc"};
1141
- color: ${s=>s.theme?.textColor||"#333"};
1022
+ `,qs=k.button`
1023
+ background: ${e=>e.theme?.surfaceColor||"#f5f5f5"};
1024
+ border: 1px solid ${e=>e.theme?.borderColor||"#ccc"};
1025
+ color: ${e=>e.theme?.textColor||"#333"};
1142
1026
  padding: 4px 8px;
1143
1027
  font-size: 14px;
1144
1028
  cursor: pointer;
@@ -1146,22 +1030,22 @@ React keys must be passed directly to JSX without using spread:
1146
1030
  transition: all 0.15s ease;
1147
1031
 
1148
1032
  &:hover {
1149
- background: ${s=>s.theme?.inputBackground||"#3d3d3d"};
1150
- border-color: ${s=>s.theme?.textColorMuted||"#999"};
1033
+ background: ${e=>e.theme?.inputBackground||"#3d3d3d"};
1034
+ border-color: ${e=>e.theme?.textColorMuted||"#999"};
1151
1035
  transform: scale(1.05);
1152
1036
  }
1153
1037
 
1154
1038
  &:active {
1155
1039
  transform: scale(0.95);
1156
1040
  }
1157
- `,Wv=W.div`
1041
+ `,Qs=k.div`
1158
1042
  font-size: 14px;
1159
1043
  line-height: 1.6;
1160
- color: ${s=>s.theme?.textColor||"#2a2a2a"};
1044
+ color: ${e=>e.theme?.textColor||"#2a2a2a"};
1161
1045
  white-space: pre-wrap;
1162
1046
  word-break: break-word;
1163
- outline: ${s=>s.$isEditable?`1px dashed ${s.theme?.borderColor||"#ddd"}`:"none"};
1164
- padding: ${s=>s.$isEditable?"6px":"0"};
1047
+ outline: ${e=>e.$isEditable?`1px dashed ${e.theme?.borderColor||"#ddd"}`:"none"};
1048
+ padding: ${e=>e.$isEditable?"6px":"0"};
1165
1049
  border-radius: 3px;
1166
1050
  min-height: 20px;
1167
1051
 
@@ -1169,35 +1053,35 @@ React keys must be passed directly to JSX without using spread:
1169
1053
  outline: 2px solid #ff9800;
1170
1054
  background: rgba(255, 152, 0, 0.1);
1171
1055
  }
1172
- `,Bv=({annotations:s,activeAnnotationId:e,shouldScrollToActive:t=!1,editable:n=!1,controls:i=[],annotationListConfig:r,height:o,onAnnotationClick:a,onAnnotationUpdate:c})=>{const l=S.useRef(null),u=S.useRef(null),h=S.useRef(void 0);S.useEffect(()=>{}),S.useEffect(()=>{const g=u.current;if(!g)return;const y=()=>{};return g.addEventListener("scroll",y),()=>g.removeEventListener("scroll",y)},[]),S.useEffect(()=>{e&&l.current&&t&&l.current.scrollIntoView({behavior:"smooth",block:"nearest"}),h.current=e},[e,t]);const p=g=>{if(isNaN(g)||!isFinite(g))return"0:00.000";const y=Math.floor(g/60),x=(g%60).toFixed(3);return`${y}:${x.padStart(6,"0")}`},d=(g,y)=>{if(!n||!c)return;const x=[...s];x[g]={...x[g],lines:y.split(`
1173
- `)},c(x)},f=(g,y)=>{if(!n||!c)return;const x=y.trim();if(!x)return;const w=[...s];w[g]={...w[g],id:x},c(w)},_=(g,y,x)=>{if(!c)return;const w=[...s];g.action(w[x],x,w,r||{}),c(w)},m=g=>g.replace(/\./g," ");return E.jsx(Rv,{ref:u,$height:o,children:s.map((g,y)=>{const x=g.id===e;return E.jsxs(Ev,{ref:x?l:null,$isActive:x,onClick:()=>a?.(g),children:[E.jsxs(Mv,{children:[E.jsxs(Ov,{children:[E.jsx(Nv,{$isEditable:n,contentEditable:n,suppressContentEditableWarning:!0,onBlur:w=>f(y,w.currentTarget.textContent||""),children:g.id}),E.jsxs(Fv,{children:[p(g.start)," - ",p(g.end)]})]}),i.length>0&&E.jsx(Vv,{onClick:w=>w.stopPropagation(),children:i.map((w,v)=>E.jsx(Pv,{title:w.title,onClick:()=>_(w,g,y),children:w.text?w.text:E.jsx("i",{className:m(w.class||"")})},v))})]}),E.jsx(Wv,{$isEditable:n,contentEditable:n,suppressContentEditableWarning:!0,onBlur:w=>d(y,w.currentTarget.textContent||""),children:g.lines.join(`
1174
- `)})]},g.id)})})},$v=S.memo(Bv),qv=({checked:s,onChange:e,disabled:t=!1,className:n})=>{const i=r=>{e(r.target.checked)};return E.jsxs(Lr,{className:n,children:[E.jsx(zr,{type:"checkbox",id:"continuous-play",className:"continuous-play",checked:s,onChange:i,disabled:t}),E.jsx(Zr,{htmlFor:"continuous-play",children:"Continuous Play"})]})},jv=({checked:s,onChange:e,disabled:t=!1,className:n})=>{const i=r=>{e(r.target.checked)};return E.jsxs(Lr,{className:n,children:[E.jsx(zr,{type:"checkbox",id:"link-endpoints",className:"link-endpoints",checked:s,onChange:i,disabled:t}),E.jsx(Zr,{htmlFor:"link-endpoints",children:"Link Endpoints"})]})},Lv=({checked:s,onChange:e,className:t})=>E.jsxs(Lr,{className:t,children:[E.jsx(zr,{type:"checkbox",id:"editable-annotations",checked:s,onChange:n=>e(n.target.checked)}),E.jsx(Zr,{htmlFor:"editable-annotations",children:"Editable Annotations"})]}),zv=W.button`
1056
+ `,ei=({annotations:e,activeAnnotationId:t,shouldScrollToActive:n=!1,editable:r=!1,controls:a=[],annotationListConfig:s,height:o,onAnnotationClick:l,onAnnotationUpdate:i})=>{const u=c.useRef(null),d=c.useRef(null),b=c.useRef(void 0);c.useEffect(()=>{}),c.useEffect(()=>{const m=d.current;if(!m)return;const w=()=>{};return m.addEventListener("scroll",w),()=>m.removeEventListener("scroll",w)},[]),c.useEffect(()=>{t&&u.current&&n&&u.current.scrollIntoView({behavior:"smooth",block:"nearest"}),b.current=t},[t,n]);const p=m=>{if(isNaN(m)||!isFinite(m))return"0:00.000";const w=Math.floor(m/60),x=(m%60).toFixed(3);return`${w}:${x.padStart(6,"0")}`},f=(m,w)=>{if(!r||!i)return;const x=[...e];x[m]={...x[m],lines:w.split(`
1057
+ `)},i(x)},C=(m,w)=>{if(!r||!i)return;const x=w.trim();if(!x)return;const v=[...e];v[m]={...v[m],id:x},i(v)},y=(m,w,x)=>{if(!i)return;const v=[...e];m.action(v[x],x,v,s||{}),i(v)},g=m=>m.replace(/\./g," ");return E.jsx(Xs,{ref:d,$height:o,children:e.map((m,w)=>{const x=m.id===t;return E.jsxs(Hs,{ref:x?u:null,$isActive:x,onClick:()=>l?.(m),children:[E.jsxs(Gs,{children:[E.jsxs(Ys,{children:[E.jsx(Ks,{$isEditable:r,contentEditable:r,suppressContentEditableWarning:!0,onBlur:v=>C(w,v.currentTarget.textContent||""),children:m.id}),E.jsxs(Us,{children:[p(m.start)," - ",p(m.end)]})]}),a.length>0&&E.jsx(Js,{onClick:v=>v.stopPropagation(),children:a.map((v,S)=>E.jsx(qs,{title:v.title,onClick:()=>y(v,m,w),children:v.text?v.text:E.jsx("i",{className:g(v.class||"")})},S))})]}),E.jsx(Qs,{$isEditable:r,contentEditable:r,suppressContentEditableWarning:!0,onBlur:v=>f(w,v.currentTarget.textContent||""),children:m.lines.join(`
1058
+ `)})]},m.id)})})},ti=c.memo(ei),ni=({checked:e,onChange:t,disabled:n=!1,className:r})=>{const a=s=>{t(s.target.checked)};return E.jsxs(Jt,{className:r,children:[E.jsx(qt,{type:"checkbox",id:"continuous-play",className:"continuous-play",checked:e,onChange:a,disabled:n}),E.jsx(Qt,{htmlFor:"continuous-play",children:"Continuous Play"})]})},ri=({checked:e,onChange:t,disabled:n=!1,className:r})=>{const a=s=>{t(s.target.checked)};return E.jsxs(Jt,{className:r,children:[E.jsx(qt,{type:"checkbox",id:"link-endpoints",className:"link-endpoints",checked:e,onChange:a,disabled:n}),E.jsx(Qt,{htmlFor:"link-endpoints",children:"Link Endpoints"})]})},ai=({checked:e,onChange:t,className:n})=>E.jsxs(Jt,{className:n,children:[E.jsx(qt,{type:"checkbox",id:"editable-annotations",checked:e,onChange:r=>t(r.target.checked)}),E.jsx(Qt,{htmlFor:"editable-annotations",children:"Editable Annotations"})]}),oi=k.button`
1175
1059
  padding: 0.5rem 1rem;
1176
- background: ${s=>s.theme?.surfaceColor||"#f5f5f5"};
1177
- color: ${s=>s.theme?.textColor||"#333"};
1178
- border: 1px solid ${s=>s.theme?.borderColor||"#ccc"};
1179
- border-radius: ${s=>s.theme?.borderRadius||"4px"};
1060
+ background: ${e=>e.theme?.surfaceColor||"#f5f5f5"};
1061
+ color: ${e=>e.theme?.textColor||"#333"};
1062
+ border: 1px solid ${e=>e.theme?.borderColor||"#ccc"};
1063
+ border-radius: ${e=>e.theme?.borderRadius||"4px"};
1180
1064
  cursor: pointer;
1181
- font-family: ${s=>s.theme?.fontFamily||"inherit"};
1182
- font-size: ${s=>s.theme?.fontSize||"14px"};
1065
+ font-family: ${e=>e.theme?.fontFamily||"inherit"};
1066
+ font-size: ${e=>e.theme?.fontSize||"14px"};
1183
1067
  font-weight: 500;
1184
1068
  transition: all 0.15s ease;
1185
1069
 
1186
1070
  &:hover:not(:disabled) {
1187
- background: ${s=>s.theme?.inputBackground||"#3d3d3d"};
1188
- border-color: ${s=>s.theme?.textColorMuted||"#999"};
1071
+ background: ${e=>e.theme?.inputBackground||"#3d3d3d"};
1072
+ border-color: ${e=>e.theme?.textColorMuted||"#999"};
1189
1073
  }
1190
1074
 
1191
1075
  &:focus {
1192
1076
  outline: none;
1193
- box-shadow: 0 0 0 2px ${s=>s.theme?.inputFocusBorder||"#007bff"}44;
1077
+ box-shadow: 0 0 0 2px ${e=>e.theme?.inputFocusBorder||"#007bff"}44;
1194
1078
  }
1195
1079
 
1196
1080
  &:disabled {
1197
1081
  opacity: 0.6;
1198
1082
  cursor: not-allowed;
1199
1083
  }
1200
- `,Zv=({annotations:s,filename:e="annotations.json",disabled:t=!1,className:n,children:i="Download JSON"})=>{const r=()=>{if(s.length===0)return;const o=s.map(h=>wv(h)),a=JSON.stringify(o,null,2),c=new Blob([a],{type:"application/json"}),l=URL.createObjectURL(c),u=document.createElement("a");u.href=l,u.download=e,document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(l)};return E.jsx(zv,{onClick:r,disabled:t||s.length===0,className:n,title:s.length===0?"No annotations to download":"Download the annotations as JSON",children:i})};function Nu(){const[s,e]=S.useState("hh:mm:ss.uuu");return{timeFormat:s,setTimeFormat:e,formatTime:i=>nn(i,s),parseTime:i=>Du(i,s)}}const Gv=[256,512,1024,2048,4096,8192];function Fu({initialSamplesPerPixel:s,zoomLevels:e=Gv}){const[t,n]=S.useState(()=>{const l=e.indexOf(s);return l!==-1?l:Math.floor(e.length/2)}),i=e[t],r=t>0,o=t<e.length-1,a=S.useCallback(()=>{n(l=>Math.max(0,l-1))},[]),c=S.useCallback(()=>{n(l=>Math.min(e.length-1,l+1))},[e.length]);return{samplesPerPixel:i,zoomIn:a,zoomOut:c,canZoomIn:r,canZoomOut:o}}function Vu({playoutRef:s,initialVolume:e=1,onVolumeChange:t}){const[n,i]=S.useState(e),r=S.useCallback(o=>{i(o),s.current&&s.current.setMasterGain(o),t?.(o)},[s,t]);return{masterVolume:n,setMasterVolume:r}}const Xv=(s=256)=>{const e=S.useRef(null),t=S.useCallback((n,i,r)=>{const o=new Hs("fft",s);return n.connect(o),n.connect(i),e.current=o,function(){o.dispose(),e.current=null}},[s]);return{analyserRef:e,masterEffects:t}};function Ro(s){const{audioBuffer:e,startSample:t,durationSamples:n=e.length,offsetSamples:i=0,gain:r=1,name:o,color:a,fadeIn:c,fadeOut:l}=s;return{id:Pu(),audioBuffer:e,startSample:t,durationSamples:n,offsetSamples:i,gain:r,name:o,color:a,fadeIn:c,fadeOut:l}}function Hv(s){const{audioBuffer:e,startTime:t,duration:n=e.duration,offset:i=0,gain:r=1,name:o,color:a,fadeIn:c,fadeOut:l}=s,u=e.sampleRate;return Ro({audioBuffer:e,startSample:Math.round(t*u),durationSamples:Math.round(n*u),offsetSamples:Math.round(i*u),gain:r,name:o,color:a,fadeIn:c,fadeOut:l})}function Yv(s){const{name:e,clips:t=[],muted:n=!1,soloed:i=!1,volume:r=1,pan:o=0,color:a,height:c}=s;return{id:Pu(),name:e,clips:t,muted:n,soloed:i,volume:r,pan:o,color:a,height:c}}function Pu(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function Uv(s){const[e,t]=S.useState([]),[n,i]=S.useState(!0),[r,o]=S.useState(null);return S.useEffect(()=>{if(s.length===0){t([]),i(!1);return}let a=!1;return(async()=>{try{i(!0),o(null);const l=me().rawContext,u=s.map(async(p,d)=>{const f=await fetch(p.src);if(!f.ok)throw new Error(`Failed to fetch ${p.src}: ${f.statusText}`);const _=await f.arrayBuffer(),m=await l.decodeAudioData(_);if(!m||!m.sampleRate||!m.duration)throw new Error(`Invalid audio buffer for ${p.src}`);const g=p.duration??m.duration,y=Hv({audioBuffer:m,startTime:p.startTime??0,duration:g,offset:p.offset??0,name:p.name||`Track ${d+1}`,fadeIn:p.fadeIn,fadeOut:p.fadeOut});if(isNaN(y.startSample)||isNaN(y.durationSamples)||isNaN(y.offsetSamples))throw console.error("Invalid clip values:",y),new Error(`Invalid clip values for ${p.src}`);return{...Yv({name:p.name||`Track ${d+1}`,clips:[y],muted:p.muted??!1,soloed:p.soloed??!1,volume:p.volume??1,pan:p.pan??0,color:p.color}),effects:p.effects}}),h=await Promise.all(u);a||(t(h),i(!1))}catch(l){if(!a){const u=l instanceof Error?l.message:"Unknown error loading audio";o(u),i(!1),console.error("Error loading audio tracks:",l)}}})(),()=>{a=!0}},[s]),{tracks:e,loading:n,error:r}}function Kv({tracks:s,onTracksChange:e,samplesPerPixel:t,sampleRate:n}){const i=S.useRef(null),r=S.useCallback(l=>{const{transform:u,active:h}=l;if(!h?.data?.current)return{...u,scaleX:1,scaleY:1};const{trackIndex:p,clipIndex:d,boundary:f}=h.data.current;if(f)return{...u,scaleX:1,scaleY:1};const _=s[p];if(!_)return{...u,scaleX:1,scaleY:1};const m=_.clips[d];if(!m)return{...u,scaleX:1,scaleY:1};const g=m.startSample/n,y=m.durationSamples/n,x=u.x*t/n;let w=g+x;const v=[..._.clips].sort((A,D)=>A.startSample-D.startSample),b=v.findIndex(A=>A===m);w=Math.max(0,w);const k=b>0?v[b-1]:null;if(k){const A=(k.startSample+k.durationSamples)/n;w=Math.max(w,A)}const T=b<v.length-1?v[b+1]:null;if(T){const A=w+y,D=T.startSample/n;A>D&&(w=D-y)}const I=(w-g)*n/t;return{...u,x:I,scaleX:1,scaleY:1}},[s,t,n]),o=S.useCallback(l=>{const{active:u}=l,{boundary:h}=u.data.current;if(!h){i.current=null;return}const{trackIndex:p,clipIndex:d}=u.data.current,_=s[p]?.clips[d];_&&(i.current={offsetSamples:_.offsetSamples,durationSamples:_.durationSamples,startSample:_.startSample})},[s]),a=S.useCallback(l=>{const{active:u,delta:h}=l,{boundary:p}=u.data.current;if(!p||!i.current)return;const{trackIndex:d,clipIndex:f}=u.data.current,_=h.x*t,m=Math.floor(.1*n),g=i.current,y=s.map((x,w)=>{if(w!==d)return x;const v=[...x.clips].sort((T,R)=>T.startSample-R.startSample),b=v.findIndex(T=>T===x.clips[f]),k=x.clips.map((T,R)=>{if(R!==f)return T;const I=Math.floor(T.audioBuffer.duration*n);if(p==="left"){let A=Math.floor(_);const D=-g.startSample;A<D&&(A=D);const M=-g.offsetSamples;A<M&&(A=M);const N=b>0?v[b-1]:null;if(N){const Z=N.startSample+N.durationSamples-g.startSample;A<Z&&(A=Z)}const q=g.durationSamples-m;A>q&&(A=q);const V=g.offsetSamples+A,j=g.durationSamples-A,G=g.startSample+A;return{...T,offsetSamples:V,durationSamples:j,startSample:G}}else{let A=Math.floor(g.durationSamples+_);A=Math.max(m,A),g.offsetSamples+A>I&&(A=I-g.offsetSamples);const D=b<v.length-1?v[b+1]:null;return D&&g.startSample+A>D.startSample&&(A=D.startSample-g.startSample,A=Math.max(m,A)),{...T,durationSamples:A}}});return{...x,clips:k}});e(y)},[s,e,t,n]),c=S.useCallback(l=>{const{active:u,delta:h}=l,{trackIndex:p,clipIndex:d,boundary:f}=u.data.current,_=h.x*t;if(f){i.current=null;return}const m=s.map((g,y)=>{if(y!==p)return g;const x=[...g.clips].sort((b,k)=>b.startSample-k.startSample),w=x.findIndex(b=>b===g.clips[d]),v=g.clips.map((b,k)=>{if(k!==d)return b;let T=Math.floor(b.startSample+_);T=Math.max(0,T);const R=w>0?x[w-1]:null;if(R){const A=R.startSample+R.durationSamples;T=Math.max(T,A)}const I=w<x.length-1?x[w+1]:null;return I&&T+b.durationSamples>I.startSample&&(T=I.startSample-b.durationSamples),{...b,startSample:T}});return{...g,clips:v}});e(m)},[s,e,t,n]);return{onDragStart:o,onDragMove:a,onDragEnd:c,collisionModifier:r}}const co=.01;function Qv({annotations:s,onAnnotationsChange:e,samplesPerPixel:t,sampleRate:n,duration:i,linkEndpoints:r}){const o=S.useRef(null),a=S.useCallback(u=>{const{active:h}=u,p=h.data.current;if(!p||p.annotationIndex===void 0){o.current=null;return}const d=s[p.annotationIndex];d&&(o.current={start:d.start,end:d.end,annotationIndex:p.annotationIndex})},[s]),c=S.useCallback(u=>{const{active:h,delta:p}=u;if(!o.current)return;const d=h.data.current;if(!d)return;const{edge:f,annotationIndex:_}=d,m=o.current,g=p.x*t/n,y=f==="start"?m.start+g:m.end+g,x=Jv({annotationIndex:_,newTime:y,isDraggingStart:f==="start",annotations:s,duration:i,linkEndpoints:r});e(x)},[s,e,t,n,i,r]),l=S.useCallback(()=>{o.current=null},[]);return{onDragStart:a,onDragMove:c,onDragEnd:l}}function Jv({annotationIndex:s,newTime:e,isDraggingStart:t,annotations:n,duration:i,linkEndpoints:r}){const o=[...n],a=n[s];if(t){const c=Math.min(a.end-.1,Math.max(0,e)),l=c-a.start;if(o[s]={...a,start:c},r&&s>0){const u=o[s-1];Math.abs(u.end-a.start)<co?o[s-1]={...u,end:Math.max(u.start+.1,u.end+l)}:c<=u.end&&(o[s]={...o[s],start:u.end})}else!r&&s>0&&c<o[s-1].end&&(o[s-1]={...o[s-1],end:c})}else{const c=Math.max(a.start+.1,Math.min(e,i)),l=c-a.end;if(o[s]={...a,end:c},r&&s<o.length-1){const u=o[s+1];if(Math.abs(u.start-a.end)<co){const h=u.start+l;o[s+1]={...u,start:Math.min(u.end-.1,h)};let p=s+1;for(;p<o.length-1;){const d=o[p],f=o[p+1];if(Math.abs(f.start-d.end)<co){const _=d.end-n[p].end;o[p+1]={...f,start:Math.min(f.end-.1,f.start+_)},p++}else break}}else c>=u.start&&(o[s]={...o[s],end:u.start})}else if(!r&&s<o.length-1&&c>o[s+1].start){const u=o[s+1];o[s+1]={...u,start:c};let h=s+1;for(;h<o.length-1;){const p=o[h],d=o[h+1];if(p.end>d.start)o[h+1]={...d,start:p.end},h++;else break}}}return o}function ey(){return Z_(z_(vu,{activationConstraint:{distance:1}}))}const ty=s=>{const{tracks:e,onTracksChange:t,sampleRate:n}=s,{currentTimeRef:i}=At(),{selectedTrackId:r}=os(),o=S.useCallback((c,l,u)=>{const{sampleRate:h,samplesPerPixel:p}=s,d=e[c];if(!d)return!1;const f=d.clips[l];if(!f)return!1;const _=f.startSample/h,m=(f.startSample+f.durationSamples)/h;if(u<=_||u>=m)return console.warn("Split time is outside clip bounds"),!1;const g=Math.round(u*h),y=Math.floor(g/p),x=f.startSample+f.durationSamples,w=y*p,v=f.startSample,b=w-v,k=w,T=x-k,R=w-f.startSample,I=Ro({audioBuffer:f.audioBuffer,startSample:v,durationSamples:b,offsetSamples:f.offsetSamples,gain:f.gain,name:f.name?`${f.name} (1)`:void 0,color:f.color,fadeIn:f.fadeIn}),A=Ro({audioBuffer:f.audioBuffer,startSample:k,durationSamples:T,offsetSamples:f.offsetSamples+R,gain:f.gain,name:f.name?`${f.name} (2)`:void 0,color:f.color,fadeOut:f.fadeOut}),D=[...d.clips];D.splice(l,1,I,A);const M=[...e];return M[c]={...d,clips:D},t(M),!0},[e,t,s]);return{splitClipAtPlayhead:S.useCallback(()=>{if(!r)return console.log("No track selected - click a clip to select a track first"),!1;const c=e.findIndex(h=>h.id===r);if(c===-1)return console.warn("Selected track not found"),!1;const l=e[c],u=i.current??0;for(let h=0;h<l.clips.length;h++){const p=l.clips[h],d=p.startSample/n,f=(p.startSample+p.durationSamples)/n;if(u>d&&u<f)return console.log(`Splitting clip on track "${l.name}" at ${u}s`),o(c,h,u)}return console.log(`No clip found at playhead position on track "${l.name}"`),!1},[e,i,r,o,n]),splitClipAt:o}},sr=s=>{const{shortcuts:e,enabled:t=!0}=s,n=S.useCallback(i=>{if(!t)return;const r=i.target;if(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable)return;const o=e.find(a=>{const c=i.key.toLowerCase()===a.key.toLowerCase()||i.key===a.key,l=a.ctrlKey===void 0||i.ctrlKey===a.ctrlKey,u=a.shiftKey===void 0||i.shiftKey===a.shiftKey,h=a.metaKey===void 0||i.metaKey===a.metaKey,p=a.altKey===void 0||i.altKey===a.altKey;return c&&l&&u&&h&&p});o&&(o.preventDefault!==!1&&i.preventDefault(),o.action())},[e,t]);S.useEffect(()=>{if(t)return window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}},[n,t])},sy=s=>{const e=[],t=typeof navigator<"u"&&navigator.platform.includes("Mac");return s.metaKey&&e.push(t?"Cmd":"Ctrl"),s.ctrlKey&&!s.metaKey&&e.push("Ctrl"),s.altKey&&e.push(t?"Option":"Alt"),s.shiftKey&&e.push("Shift"),e.push(s.key.toUpperCase()),e.join("+")},ny=(s={})=>{const{enabled:e=!0,additionalShortcuts:t=[],shortcuts:n}=s,{isPlaying:i}=At(),{setCurrentTime:r,play:o,pause:a,stop:c}=Qe(),{playoutRef:l}=wt(),u=S.useCallback(()=>{i?a():o()},[i,o,a]),h=S.useCallback(()=>{c()},[c]),p=S.useCallback(()=>{i&&l.current?(l.current.stop(),r(0),o(0)):r(0)},[i,l,r,o]),f=n??[...[{key:" ",action:u,description:"Play/Pause",preventDefault:!0},{key:"Escape",action:h,description:"Stop",preventDefault:!0},{key:"0",action:p,description:"Rewind to start",preventDefault:!0}],...t];return sr({shortcuts:f,enabled:e}),{rewindToStart:p,togglePlayPause:u,stopPlayback:h,shortcuts:f}},lo=.01,Vi=.01;function iy({annotations:s,activeAnnotationId:e,onAnnotationsChange:t,onActiveAnnotationChange:n,duration:i,linkEndpoints:r,continuousPlay:o=!1,enabled:a=!0,scrollContainerRef:c,samplesPerPixel:l,sampleRate:u,controlsWidth:h=0,onPlay:p}){const d=S.useMemo(()=>e?s.findIndex(R=>R.id===e):-1,[s,e]),f=S.useCallback(R=>{if(!c?.current||!l||!u)return;const I=s.find(B=>B.id===R);if(!I)return;const A=c.current,D=A.clientWidth,M=I.start*u/l+h,N=I.end*u/l+h,q=(M+N)/2,V=A.scrollLeft,j=V,G=V+D;if(M<j||N>G){const B=Math.max(0,q-D/2);A.scrollTo({left:B,behavior:"smooth"})}},[s,c,l,u,h]);S.useEffect(()=>{e&&c?.current&&l&&u&&f(e)},[e,f,c,l,u]);const _=S.useCallback(R=>{if(d<0)return;const I=s[d],A=Math.max(0,Math.min(I.end-.1,I.start+R)),D=A-I.start,M=[...s];if(M[d]={...I,start:A},r&&d>0){const N=M[d-1];Math.abs(N.end-I.start)<lo&&(M[d-1]={...N,end:Math.max(N.start+.1,N.end+D)})}else if(!r&&d>0){const N=M[d-1];A<N.end&&(M[d-1]={...N,end:A})}t(M)},[s,d,r,t]),m=S.useCallback(R=>{if(d<0)return;const I=s[d],A=Math.max(I.start+.1,Math.min(i,I.end+R)),D=A-I.end,M=[...s];if(M[d]={...I,end:A},r&&d<s.length-1){const N=M[d+1];if(Math.abs(N.start-I.end)<lo){const q=Math.min(N.end-.1,N.start+D);M[d+1]={...N,start:q};let V=d+1;for(;V<M.length-1;){const j=M[V],G=M[V+1];if(Math.abs(G.start-s[V].end)<lo){const B=j.end-s[V].end;M[V+1]={...G,start:Math.min(G.end-.1,G.start+B)},V++}else break}}}else if(!r&&d<s.length-1){const N=M[d+1];if(A>N.start){M[d+1]={...N,start:A};let q=d+1;for(;q<M.length-1;){const V=M[q],j=M[q+1];if(V.end>j.start)M[q+1]={...j,start:V.end},q++;else break}}}t(M)},[s,d,i,r,t]),g=S.useCallback(()=>{!n||s.length===0||(d<=0?n(s[s.length-1].id):n(s[d-1].id))},[s,d,n]),y=S.useCallback(()=>{!n||s.length===0||(d<0||d>=s.length-1?n(s[0].id):n(s[d+1].id))},[s,d,n]),x=S.useCallback(()=>{!n||s.length===0||n(s[0].id)},[s,n]),w=S.useCallback(()=>{!n||s.length===0||n(s[s.length-1].id)},[s,n]),v=S.useCallback(()=>{n&&n(null)},[n]),b=S.useCallback(()=>{if(d<0||!p)return;const R=s[d],I=o?void 0:R.end-R.start;p(R.start,I)},[s,d,o,p]),k=S.useMemo(()=>[{key:"[",action:()=>_(-Vi),description:"Move annotation start earlier",preventDefault:!0},{key:"]",action:()=>_(Vi),description:"Move annotation start later",preventDefault:!0},{key:"{",shiftKey:!0,action:()=>m(-Vi),description:"Move annotation end earlier",preventDefault:!0},{key:"}",shiftKey:!0,action:()=>m(Vi),description:"Move annotation end later",preventDefault:!0},{key:"Enter",action:b,description:"Play selected annotation",preventDefault:!0}],[_,m,b]),T=S.useMemo(()=>[{key:"ArrowUp",action:g,description:"Select previous annotation",preventDefault:!0},{key:"ArrowLeft",action:g,description:"Select previous annotation",preventDefault:!0},{key:"ArrowDown",action:y,description:"Select next annotation",preventDefault:!0},{key:"ArrowRight",action:y,description:"Select next annotation",preventDefault:!0},{key:"Home",action:x,description:"Select first annotation",preventDefault:!0},{key:"End",action:w,description:"Select last annotation",preventDefault:!0},{key:"Escape",action:v,description:"Deselect annotation",preventDefault:!0}],[g,y,x,w,v]);return sr({shortcuts:k,enabled:a&&d>=0}),sr({shortcuts:T,enabled:a&&s.length>0&&!!n}),{moveStartBoundary:_,moveEndBoundary:m,selectPrevious:g,selectNext:y,selectFirst:x,selectLast:w,clearSelection:v,scrollToAnnotation:f,playActiveAnnotation:b}}function ry(s){const e=s.reduce((i,r)=>i+r.length,0),t=new Float32Array(e);let n=0;for(const i of s)t.set(i,n),n+=i.length;return t}function oy(s,e,t,n=1){const i=s.createBuffer(n,e.length,t),r=new Float32Array(e);return i.copyToChannel(r,0),i}function Jc(s,e,t=16){const n=Math.ceil(s.length/e),i=t===8?new Int8Array(n*2):new Int16Array(n*2),r=2**(t-1);for(let o=0;o<n;o++){const a=o*e,c=Math.min(a+e,s.length);let l=0,u=0;for(let h=a;h<c;h++){const p=s[h];p<l&&(l=p),p>u&&(u=p)}i[o*2]=Math.floor(l*r),i[o*2+1]=Math.floor(u*r)}return i}function ay(s,e,t,n,i=16){const r=2**(i-1),o=n%t;let a=0;if(o>0&&s.length>0){const u=t-o,h=Math.min(u,e.length);let p=s[s.length-2]/r,d=s[s.length-1]/r;for(let g=0;g<h;g++){const y=e[g];y<p&&(p=y),y>d&&(d=y)}const f=new(i===8?Int8Array:Int16Array)(s.length);f.set(s),f[s.length-2]=Math.floor(p*r),f[s.length-1]=Math.floor(d*r),a=h;const _=Jc(e.slice(a),t,i),m=new(i===8?Int8Array:Int16Array)(f.length+_.length);return m.set(f),m.set(_,f.length),m}const c=Jc(e.slice(a),t,i),l=new(i===8?Int8Array:Int16Array)(s.length+c.length);return l.set(s),l.set(c,s.length),l}function cy(s,e={}){const{channelCount:t=1,samplesPerPixel:n=1024}=e,[i,r]=S.useState(!1),[o,a]=S.useState(!1),[c,l]=S.useState(0),[u,h]=S.useState(new Int16Array(0)),[p,d]=S.useState(null),[f,_]=S.useState(null),[m,g]=S.useState(0),[y,x]=S.useState(0),w=16,v=S.useRef(!1),b=S.useRef(null),k=S.useRef(null),T=S.useRef([]),R=S.useRef(0),I=S.useRef(null),A=S.useRef(0),D=S.useRef(!1),M=S.useRef(!1),N=S.useCallback(async()=>{if(!v.current)try{const B=me(),Z=new URL("data:text/javascript;base64,InVzZSBzdHJpY3QiOwoKLy8gc3JjL3dvcmtsZXQvcmVjb3JkaW5nLXByb2Nlc3Nvci53b3JrbGV0LnRzCnZhciBSZWNvcmRpbmdQcm9jZXNzb3IgPSBjbGFzcyBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5idWZmZXJTaXplID0gMDsKICAgIHRoaXMuYnVmZmVycyA9IFtdOwogICAgdGhpcy5zYW1wbGVzQ29sbGVjdGVkID0gMDsKICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTsKICAgIHRoaXMuY2hhbm5lbENvdW50ID0gMTsKICAgIHRoaXMucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgeyBjb21tYW5kLCBzYW1wbGVSYXRlOiBzYW1wbGVSYXRlMiwgY2hhbm5lbENvdW50IH0gPSBldmVudC5kYXRhOwogICAgICBpZiAoY29tbWFuZCA9PT0gInN0YXJ0IikgewogICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSB0cnVlOwogICAgICAgIHRoaXMuY2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50IHx8IDE7CiAgICAgICAgdGhpcy5idWZmZXJTaXplID0gTWF0aC5mbG9vcigoc2FtcGxlUmF0ZTIgfHwgNDhlMykgKiAwLjAxNik7CiAgICAgICAgdGhpcy5idWZmZXJzID0gW107CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoYW5uZWxDb3VudDsgaSsrKSB7CiAgICAgICAgICB0aGlzLmJ1ZmZlcnNbaV0gPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuYnVmZmVyU2l6ZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2FtcGxlc0NvbGxlY3RlZCA9IDA7CiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PT0gInN0b3AiKSB7CiAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlOwogICAgICAgIGlmICh0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgPiAwKSB7CiAgICAgICAgICB0aGlzLmZsdXNoQnVmZmVycygpOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICB9CiAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgIGlmICghdGhpcy5pc1JlY29yZGluZykgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdOwogICAgaWYgKCFpbnB1dCB8fCBpbnB1dC5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBjb25zdCBmcmFtZUNvdW50ID0gaW5wdXRbMF0ubGVuZ3RoOwogICAgZm9yIChsZXQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIHRoaXMuY2hhbm5lbENvdW50KTsgY2hhbm5lbCsrKSB7CiAgICAgIGNvbnN0IGlucHV0Q2hhbm5lbCA9IGlucHV0W2NoYW5uZWxdOwogICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlcnNbY2hhbm5lbF07CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgaSsrKSB7CiAgICAgICAgYnVmZmVyW3RoaXMuc2FtcGxlc0NvbGxlY3RlZCArIGldID0gaW5wdXRDaGFubmVsW2ldOwogICAgICB9CiAgICB9CiAgICB0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgKz0gZnJhbWVDb3VudDsKICAgIGlmICh0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgPj0gdGhpcy5idWZmZXJTaXplKSB7CiAgICAgIHRoaXMuZmx1c2hCdWZmZXJzKCk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgZmx1c2hCdWZmZXJzKCkgewogICAgY29uc3Qgc2FtcGxlcyA9IHRoaXMuYnVmZmVyc1swXS5zbGljZSgwLCB0aGlzLnNhbXBsZXNDb2xsZWN0ZWQpOwogICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsKICAgICAgc2FtcGxlcywKICAgICAgc2FtcGxlUmF0ZSwKICAgICAgY2hhbm5lbENvdW50OiB0aGlzLmNoYW5uZWxDb3VudAogICAgfSk7CiAgICB0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgPSAwOwogIH0KfTsKcmVnaXN0ZXJQcm9jZXNzb3IoInJlY29yZGluZy1wcm9jZXNzb3IiLCBSZWNvcmRpbmdQcm9jZXNzb3IpOwovLyMgc291cmNlTWFwcGluZ1VSTD1yZWNvcmRpbmctcHJvY2Vzc29yLndvcmtsZXQuanMubWFw",typeof document>"u"?require("url").pathToFileURL(__filename).href:Jr&&Jr.tagName.toUpperCase()==="SCRIPT"&&Jr.src||new URL("index.js",document.baseURI).href).href;await B.addAudioWorkletModule(Z),v.current=!0}catch(B){throw console.error("Failed to load AudioWorklet module:",B),new Error("Failed to load recording processor")}},[]),q=S.useCallback(async()=>{if(!s){_(new Error("No microphone stream available"));return}try{_(null);const B=me();B.state==="suspended"&&await B.resume(),await N();const Z=B.createMediaStreamSource(s);k.current=Z;const X=B.createAudioWorkletNode("recording-processor");b.current=X,Z.connect(X),X.port.onmessage=pe=>{const{samples:ie}=pe.data;T.current.push(ie),R.current+=ie.length,h(Q=>ay(Q,ie,n,R.current-ie.length,w))},X.port.postMessage({command:"start",sampleRate:B.sampleRate,channelCount:t}),T.current=[],R.current=0,h(new Int16Array(0)),d(null),g(0),x(0),D.current=!0,M.current=!1,r(!0),a(!1),A.current=performance.now();const ee=()=>{if(D.current&&!M.current){const pe=(performance.now()-A.current)/1e3;l(pe),I.current=requestAnimationFrame(ee)}};ee()}catch(B){console.error("Failed to start recording:",B),_(B instanceof Error?B:new Error("Failed to start recording"))}},[s,t,n,N,i,o]),V=S.useCallback(async()=>{if(!i)return null;try{if(b.current){if(b.current.port.postMessage({command:"stop"}),k.current)try{k.current.disconnect(b.current)}catch{}b.current.disconnect()}I.current!==null&&(cancelAnimationFrame(I.current),I.current=null);const B=ry(T.current),X=me().rawContext,ee=oy(X,B,X.sampleRate,t);return d(ee),l(ee.duration),D.current=!1,M.current=!1,r(!1),a(!1),g(0),ee}catch(B){return console.error("Failed to stop recording:",B),_(B instanceof Error?B:new Error("Failed to stop recording")),null}},[i,t]),j=S.useCallback(()=>{i&&!o&&(I.current!==null&&(cancelAnimationFrame(I.current),I.current=null),M.current=!0,a(!0))},[i,o]),G=S.useCallback(()=>{if(i&&o){M.current=!1,a(!1),A.current=performance.now()-c*1e3;const B=()=>{if(D.current&&!M.current){const Z=(performance.now()-A.current)/1e3;l(Z),I.current=requestAnimationFrame(B)}};B()}},[i,o,c]);return S.useEffect(()=>()=>{if(b.current){if(b.current.port.postMessage({command:"stop"}),k.current)try{k.current.disconnect(b.current)}catch{}b.current.disconnect()}I.current!==null&&cancelAnimationFrame(I.current)},[]),{isRecording:i,isPaused:o,duration:c,peaks:u,audioBuffer:p,level:m,peakLevel:y,startRecording:q,stopRecording:V,pauseRecording:j,resumeRecording:G,error:f}}function ly(){const[s,e]=S.useState(null),[t,n]=S.useState([]),[i,r]=S.useState(!1),[o,a]=S.useState(!1),[c,l]=S.useState(null),u=S.useCallback(async()=>{try{const f=(await navigator.mediaDevices.enumerateDevices()).filter(_=>_.kind==="audioinput").map(_=>({deviceId:_.deviceId,label:_.label||`Microphone ${_.deviceId.slice(0,8)}`,groupId:_.groupId}));n(f)}catch(d){console.error("Failed to enumerate devices:",d),l(d instanceof Error?d:new Error("Failed to enumerate devices"))}},[]),h=S.useCallback(async(d,f)=>{a(!0),l(null);try{s&&s.getTracks().forEach(y=>y.stop());const m={audio:{echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,latency:0,...f,...d&&{deviceId:{exact:d}}},video:!1},g=await navigator.mediaDevices.getUserMedia(m);e(g),r(!0),await u()}catch(_){console.error("Failed to access microphone:",_),l(_ instanceof Error?_:new Error("Failed to access microphone")),r(!1)}finally{a(!1)}},[s,u]),p=S.useCallback(()=>{s&&(s.getTracks().forEach(d=>d.stop()),e(null),r(!1))},[s]);return S.useEffect(()=>(u(),()=>{s&&s.getTracks().forEach(d=>d.stop())}),[]),{stream:s,devices:t,hasPermission:i,isLoading:o,requestAccess:h,stopStream:p,error:c}}function uy(s,e={}){const{updateRate:t=60,smoothingTimeConstant:n=.8}=e,[i,r]=S.useState(0),[o,a]=S.useState(0),c=S.useRef(null),l=S.useRef(null),u=S.useRef(null),h=()=>a(0);return S.useEffect(()=>{if(!s){r(0),a(0);return}let p=!0;return(async()=>{if(!p)return;const f=me();if(f.state==="suspended"&&await f.resume(),!p)return;const _=new Vr({smoothing:n,context:f});c.current=_;const m=f.createMediaStreamSource(s);l.current=m,pt(m,_);const g=1e3/t;let y=0;const x=w=>{if(!(!p||!c.current)){if(w-y>=g){y=w;const v=c.current.getValue(),b=typeof v=="number"?v:v[0],k=Math.max(0,Math.min(1,(b+100)/100));r(k),a(T=>Math.max(T,k))}u.current=requestAnimationFrame(x)}};u.current=requestAnimationFrame(x)})(),()=>{if(p=!1,u.current&&(cancelAnimationFrame(u.current),u.current=null),l.current){try{l.current.disconnect()}catch{}l.current=null}c.current&&(c.current.dispose(),c.current=null)}},[s,n,t]),{level:i,peakLevel:o,resetPeak:h}}W.button`
1084
+ `,si=({annotations:e,filename:t="annotations.json",disabled:n=!1,className:r,children:a="Download JSON"})=>{const s=()=>{if(e.length===0)return;const o=e.map(b=>Ws(b)),l=JSON.stringify(o,null,2),i=new Blob([l],{type:"application/json"}),u=URL.createObjectURL(i),d=document.createElement("a");d.href=u,d.download=t,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(u)};return E.jsx(oi,{onClick:s,disabled:n||e.length===0,className:r,title:e.length===0?"No annotations to download":"Download the annotations as JSON",children:a})};function ra(){const[e,t]=c.useState("hh:mm:ss.uuu");return{timeFormat:e,setTimeFormat:t,formatTime:a=>It(a,e),parseTime:a=>Ur(a,e)}}const ii=[256,512,1024,2048,4096,8192];function aa({initialSamplesPerPixel:e,zoomLevels:t=ii}){const[n,r]=c.useState(()=>{const u=t.indexOf(e);return u!==-1?u:Math.floor(t.length/2)}),a=t[n],s=n>0,o=n<t.length-1,l=c.useCallback(()=>{r(u=>Math.max(0,u-1))},[]),i=c.useCallback(()=>{r(u=>Math.min(t.length-1,u+1))},[t.length]);return{samplesPerPixel:a,zoomIn:l,zoomOut:i,canZoomIn:s,canZoomOut:o}}function oa({playoutRef:e,initialVolume:t=1,onVolumeChange:n}){const[r,a]=c.useState(t),s=c.useCallback(o=>{a(o),e.current&&e.current.setMasterGain(o),n?.(o)},[e,n]);return{masterVolume:r,setMasterVolume:s}}const li=(e=256)=>{const t=c.useRef(null),n=c.useCallback((r,a,s)=>{const o=new P.Analyser("fft",e);return r.connect(o),r.connect(a),t.current=o,function(){o.dispose(),t.current=null}},[e]);return{analyserRef:t,masterEffects:n}};function Sn(e){const{audioBuffer:t,startSample:n,offsetSamples:r=0,gain:a=1,name:s,color:o,fadeIn:l,fadeOut:i,waveformData:u}=e,d=t?.sampleRate??e.sampleRate??u?.sample_rate,b=t?.length??e.sourceDurationSamples??(u&&d?Math.ceil(u.duration*d):void 0);if(d===void 0)throw new Error("createClip: sampleRate is required when audioBuffer is not provided (can use waveformData.sample_rate)");if(b===void 0)throw new Error("createClip: sourceDurationSamples is required when audioBuffer is not provided (can use waveformData.duration)");t&&u&&t.sampleRate!==u.sample_rate&&console.warn(`Sample rate mismatch: audioBuffer (${t.sampleRate}) vs waveformData (${u.sample_rate}). Using audioBuffer sample rate. Waveform visualization may be slightly off.`);const p=e.durationSamples??b;return{id:sa(),audioBuffer:t,startSample:n,durationSamples:p,offsetSamples:r,sampleRate:d,sourceDurationSamples:b,gain:a,name:s,color:o,fadeIn:l,fadeOut:i,waveformData:u}}function ci(e){const{audioBuffer:t,startTime:n,offset:r=0,gain:a=1,name:s,color:o,fadeIn:l,fadeOut:i,waveformData:u}=e,d=t?.sampleRate??e.sampleRate??u?.sample_rate;if(d===void 0)throw new Error("createClipFromSeconds: sampleRate is required when audioBuffer is not provided (can use waveformData.sample_rate)");const b=t?.duration??e.sourceDuration??u?.duration;if(b===void 0)throw new Error("createClipFromSeconds: sourceDuration is required when audioBuffer is not provided (can use waveformData.duration)");t&&u&&t.sampleRate!==u.sample_rate&&console.warn(`Sample rate mismatch: audioBuffer (${t.sampleRate}) vs waveformData (${u.sample_rate}). Using audioBuffer sample rate. Waveform visualization may be slightly off.`);const p=e.duration??b;return Sn({audioBuffer:t,startSample:Math.round(n*d),durationSamples:Math.round(p*d),offsetSamples:Math.round(r*d),sampleRate:d,sourceDurationSamples:Math.ceil(b*d),gain:a,name:s,color:o,fadeIn:l,fadeOut:i,waveformData:u})}function ui(e){const{name:t,clips:n=[],muted:r=!1,soloed:a=!1,volume:s=1,pan:o=0,color:l,height:i}=e;return{id:sa(),name:t,clips:n,muted:r,soloed:a,volume:s,pan:o,color:l,height:i}}function sa(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function di(e,t={}){const{progressive:n=!1}=t,[r,a]=c.useState([]),[s,o]=c.useState(!0),[l,i]=c.useState(null),[u,d]=c.useState(0),b=e.length;return c.useEffect(()=>{if(e.length===0){a([]),o(!1),d(0);return}let p=!1;const f=new Map,C=(g,m,w)=>{const x=w??g.audioBuffer;if(!x&&!g.waveformData)throw new Error(`Track ${m+1}: Must provide src, audioBuffer, or waveformData`);const v=x?.duration??g.waveformData?.duration,S=ci({audioBuffer:x,startTime:g.startTime??0,duration:g.duration??v,offset:g.offset??0,name:g.name||`Track ${m+1}`,fadeIn:g.fadeIn,fadeOut:g.fadeOut,waveformData:g.waveformData});if(isNaN(S.startSample)||isNaN(S.durationSamples)||isNaN(S.offsetSamples))throw console.error("Invalid clip values:",S),new Error(`Invalid clip values for track ${m+1}`);return{...ui({name:g.name||`Track ${m+1}`,clips:[S],muted:g.muted??!1,soloed:g.soloed??!1,volume:g.volume??1,pan:g.pan??0,color:g.color}),effects:g.effects}};return(async()=>{try{o(!0),i(null),d(0);const g=Wr.getContext().rawContext,m=e.map(async(x,v)=>{if(x.audioBuffer){const T=C(x,v,x.audioBuffer);return n&&!p&&(f.set(v,T),d(_=>_+1),a(Array.from({length:e.length},(_,D)=>f.get(D)).filter(_=>_!==void 0))),T}if(!x.src&&x.waveformData){const T=C(x,v);return n&&!p&&(f.set(v,T),d(_=>_+1),a(Array.from({length:e.length},(_,D)=>f.get(D)).filter(_=>_!==void 0))),T}if(!x.src)throw new Error(`Track ${v+1}: Must provide src, audioBuffer, or waveformData`);const S=await fetch(x.src);if(!S.ok)throw new Error(`Failed to fetch ${x.src}: ${S.statusText}`);const I=await S.arrayBuffer(),$=await g.decodeAudioData(I);if(!$||!$.sampleRate||!$.duration)throw new Error(`Invalid audio buffer for ${x.src}`);const M=C(x,v,$);return n&&!p&&(f.set(v,M),d(T=>T+1),a(Array.from({length:e.length},(T,_)=>f.get(_)).filter(T=>T!==void 0))),M}),w=await Promise.all(m);p||(n||(a(w),d(w.length)),o(!1))}catch(g){if(!p){const m=g instanceof Error?g.message:"Unknown error loading audio";i(m),o(!1),console.error("Error loading audio tracks:",g)}}})(),()=>{p=!0}},[e,n]),{tracks:r,loading:s,error:l,loadedCount:u,totalCount:b}}function fi({tracks:e,onTracksChange:t,samplesPerPixel:n,sampleRate:r}){const a=c.useRef(null),s=c.useCallback(u=>{const{transform:d,active:b}=u;if(!b?.data?.current)return{...d,scaleX:1,scaleY:1};const{trackIndex:p,clipIndex:f,boundary:C}=b.data.current;if(C)return{...d,scaleX:1,scaleY:1};const y=e[p];if(!y)return{...d,scaleX:1,scaleY:1};const g=y.clips[f];if(!g)return{...d,scaleX:1,scaleY:1};const m=g.startSample/r,w=g.durationSamples/r,x=d.x*n/r;let v=m+x;const S=[...y.clips].sort((D,V)=>D.startSample-V.startSample),I=S.findIndex(D=>D===g);v=Math.max(0,v);const $=I>0?S[I-1]:null;if($){const D=($.startSample+$.durationSamples)/r;v=Math.max(v,D)}const M=I<S.length-1?S[I+1]:null;if(M){const D=v+w,V=M.startSample/r;D>V&&(v=V-w)}const _=(v-m)*r/n;return{...d,x:_,scaleX:1,scaleY:1}},[e,n,r]),o=c.useCallback(u=>{const{active:d}=u,{boundary:b}=d.data.current;if(!b){a.current=null;return}const{trackIndex:p,clipIndex:f}=d.data.current,y=e[p]?.clips[f];y&&(a.current={offsetSamples:y.offsetSamples,durationSamples:y.durationSamples,startSample:y.startSample})},[e]),l=c.useCallback(u=>{const{active:d,delta:b}=u,{boundary:p}=d.data.current;if(!p||!a.current)return;const{trackIndex:f,clipIndex:C}=d.data.current,y=b.x*n,g=Math.floor(.1*r),m=a.current,w=e.map((x,v)=>{if(v!==f)return x;const S=[...x.clips].sort((M,T)=>M.startSample-T.startSample),I=S.findIndex(M=>M===x.clips[C]),$=x.clips.map((M,T)=>{if(T!==C)return M;const _=M.sourceDurationSamples;if(p==="left"){let D=Math.floor(y);const V=-m.startSample;D<V&&(D=V);const W=-m.offsetSamples;D<W&&(D=W);const O=I>0?S[I-1]:null;if(O){const oe=O.startSample+O.durationSamples-m.startSample;D<oe&&(D=oe)}const N=m.durationSamples-g;D>N&&(D=N);const Y=m.offsetSamples+D,ee=m.durationSamples-D,re=m.startSample+D;return{...M,offsetSamples:Y,durationSamples:ee,startSample:re}}else{let D=Math.floor(m.durationSamples+y);D=Math.max(g,D),m.offsetSamples+D>_&&(D=_-m.offsetSamples);const V=I<S.length-1?S[I+1]:null;return V&&m.startSample+D>V.startSample&&(D=V.startSample-m.startSample,D=Math.max(g,D)),{...M,durationSamples:D}}});return{...x,clips:$}});t(w)},[e,t,n,r]),i=c.useCallback(u=>{const{active:d,delta:b}=u,{trackIndex:p,clipIndex:f,boundary:C}=d.data.current,y=b.x*n;if(C){a.current=null;return}const g=e.map((m,w)=>{if(w!==p)return m;const x=[...m.clips].sort((I,$)=>I.startSample-$.startSample),v=x.findIndex(I=>I===m.clips[f]),S=m.clips.map((I,$)=>{if($!==f)return I;let M=Math.floor(I.startSample+y);M=Math.max(0,M);const T=v>0?x[v-1]:null;if(T){const D=T.startSample+T.durationSamples;M=Math.max(M,D)}const _=v<x.length-1?x[v+1]:null;return _&&M+I.durationSamples>_.startSample&&(M=_.startSample-I.durationSamples),{...I,startSample:M}});return{...m,clips:S}});t(g)},[e,t,n,r]);return{onDragStart:o,onDragMove:l,onDragEnd:i,collisionModifier:s}}const mn=.01;function mi({annotations:e,onAnnotationsChange:t,samplesPerPixel:n,sampleRate:r,duration:a,linkEndpoints:s}){const o=c.useRef(null),l=c.useCallback(d=>{const{active:b}=d,p=b.data.current;if(!p||p.annotationIndex===void 0){o.current=null;return}const f=e[p.annotationIndex];f&&(o.current={start:f.start,end:f.end,annotationIndex:p.annotationIndex})},[e]),i=c.useCallback(d=>{const{active:b,delta:p}=d;if(!o.current)return;const f=b.data.current;if(!f)return;const{edge:C,annotationIndex:y}=f,g=o.current,m=p.x*n/r,w=C==="start"?g.start+m:g.end+m,x=hi({annotationIndex:y,newTime:w,isDraggingStart:C==="start",annotations:e,duration:a,linkEndpoints:s});t(x)},[e,t,n,r,a,s]),u=c.useCallback(()=>{o.current=null},[]);return{onDragStart:l,onDragMove:i,onDragEnd:u}}function hi({annotationIndex:e,newTime:t,isDraggingStart:n,annotations:r,duration:a,linkEndpoints:s}){const o=[...r],l=r[e];if(n){const i=Math.min(l.end-.1,Math.max(0,t)),u=i-l.start;if(o[e]={...l,start:i},s&&e>0){const d=o[e-1];Math.abs(d.end-l.start)<mn?o[e-1]={...d,end:Math.max(d.start+.1,d.end+u)}:i<=d.end&&(o[e]={...o[e],start:d.end})}else!s&&e>0&&i<o[e-1].end&&(o[e-1]={...o[e-1],end:i})}else{const i=Math.max(l.start+.1,Math.min(t,a)),u=i-l.end;if(o[e]={...l,end:i},s&&e<o.length-1){const d=o[e+1];if(Math.abs(d.start-l.end)<mn){const b=d.start+u;o[e+1]={...d,start:Math.min(d.end-.1,b)};let p=e+1;for(;p<o.length-1;){const f=o[p],C=o[p+1];if(Math.abs(C.start-f.end)<mn){const y=f.end-r[p].end;o[p+1]={...C,start:Math.min(C.end-.1,C.start+y)},p++}else break}}else i>=d.start&&(o[e]={...o[e],end:d.start})}else if(!s&&e<o.length-1&&i>o[e+1].start){const d=o[e+1];o[e+1]={...d,start:i};let b=e+1;for(;b<o.length-1;){const p=o[b],f=o[b+1];if(p.end>f.start)o[b+1]={...f,start:p.end},b++;else break}}}return o}function Fn(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function ia(e){return"nodeType"in e}function St(e){var t,n;return e?Fn(e)?e:ia(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function pi(e){const{Document:t}=St(e);return e instanceof t}function gi(e){return Fn(e)?!1:e instanceof St(e).HTMLElement}function bi(e){return e instanceof St(e).SVGElement}function nn(e){return e?Fn(e)?e.document:ia(e)?pi(e)?e:gi(e)||bi(e)?e.ownerDocument:document:document:document}function vi(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return r.reduce((s,o)=>{const l=Object.entries(o);for(const[i,u]of l){const d=s[i];d!=null&&(s[i]=d+e*u)}return s},{...t})}}const Ci=vi(-1);function wi(e){return"clientX"in e&&"clientY"in e}function xi(e){if(!e)return!1;const{TouchEvent:t}=St(e.target);return t&&e instanceof t}function yr(e){if(xi(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return wi(e)?{x:e.clientX,y:e.clientY}:null}var Ir;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(Ir||(Ir={}));function hn(e,t){return c.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function yi(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const An=Object.freeze({x:0,y:0});var yt;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(yt||(yt={}));class pn{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var a;(a=this.target)==null||a.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function Ii(e){const{EventTarget:t}=St(e);return e instanceof t?e:nn(e)}function gn(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var nt;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(nt||(nt={}));function Sr(e){e.preventDefault()}function Si(e){e.stopPropagation()}var rt;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(rt||(rt={}));rt.Space,rt.Enter,rt.Esc,rt.Space,rt.Enter,rt.Tab;function Ar(e){return!!(e&&"distance"in e)}function kr(e){return!!(e&&"delay"in e)}class Wn{constructor(t,n,r){var a;r===void 0&&(r=Ii(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:s}=t,{target:o}=s;this.props=t,this.events=n,this.document=nn(o),this.documentListeners=new pn(this.document),this.listeners=new pn(r),this.windowListeners=new pn(St(o)),this.initialCoordinates=(a=yr(s))!=null?a:An,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(nt.Resize,this.handleCancel),this.windowListeners.add(nt.DragStart,Sr),this.windowListeners.add(nt.VisibilityChange,this.handleCancel),this.windowListeners.add(nt.ContextMenu,Sr),this.documentListeners.add(nt.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(kr(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(Ar(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:a}=this.props;a(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(nt.Click,Si,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(nt.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:a,props:s}=this,{onMove:o,options:{activationConstraint:l}}=s;if(!a)return;const i=(n=yr(t))!=null?n:An,u=Ci(a,i);if(!r&&l){if(Ar(l)){if(l.tolerance!=null&&gn(u,l.tolerance))return this.handleCancel();if(gn(u,l.distance))return this.handleStart()}if(kr(l)&&gn(u,l.tolerance))return this.handleCancel();this.handlePending(l,u);return}t.cancelable&&t.preventDefault(),o(i)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===rt.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const Ai={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class la extends Wn{constructor(t){const{event:n}=t,r=nn(n.target);super(t,Ai,r)}}la.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const ki={move:{name:"mousemove"},end:{name:"mouseup"}};var kn;(function(e){e[e.RightClick=2]="RightClick"})(kn||(kn={}));class ca extends Wn{constructor(t){super(t,ki,nn(t.event.target))}}ca.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===kn.RightClick?!1:(r?.({event:n}),!0)}}];const bn={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class ua extends Wn{constructor(t){super(t,bn)}static setup(){return window.addEventListener(bn.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(bn.move.name,t)};function t(){}}}ua.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:a}=n;return a.length>1?!1:(r?.({event:n}),!0)}}];var $r;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})($r||($r={}));var Rr;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Rr||(Rr={}));yt.Backward+"",yt.Forward+"",yt.Backward+"",yt.Forward+"";var $n;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})($n||($n={}));var Rn;(function(e){e.Optimized="optimized"})(Rn||(Rn={}));$n.WhileDragging,Rn.Optimized;({...An});var Er;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Er||(Er={}));function $i(e={}){const{touchOptimized:t=!1,touchDelay:n=250,touchTolerance:r=5,mouseDistance:a=1}=e,s=hn(ca,{activationConstraint:{distance:a}}),o=hn(ua,{activationConstraint:t?{delay:n,tolerance:r}:{distance:a}}),l=hn(la,{activationConstraint:{distance:a}});return yi(...t?[s,o]:[l])}const Ri=e=>{const{tracks:t,onTracksChange:n,sampleRate:r}=e,{currentTimeRef:a}=We(),{selectedTrackId:s}=Le(),o=c.useCallback((i,u,d)=>{const{sampleRate:b,samplesPerPixel:p}=e,f=t[i];if(!f)return!1;const C=f.clips[u];if(!C)return!1;const y=C.startSample/b,g=(C.startSample+C.durationSamples)/b;if(d<=y||d>=g)return console.warn("Split time is outside clip bounds"),!1;const m=Math.round(d*b),w=Math.floor(m/p),x=C.startSample+C.durationSamples,v=w*p,S=C.startSample,I=v-S,$=v,M=x-$,T=v-C.startSample,_=Sn({audioBuffer:C.audioBuffer,startSample:S,durationSamples:I,offsetSamples:C.offsetSamples,sampleRate:C.sampleRate,sourceDurationSamples:C.sourceDurationSamples,gain:C.gain,name:C.name?`${C.name} (1)`:void 0,color:C.color,fadeIn:C.fadeIn,waveformData:C.waveformData}),D=Sn({audioBuffer:C.audioBuffer,startSample:$,durationSamples:M,offsetSamples:C.offsetSamples+T,sampleRate:C.sampleRate,sourceDurationSamples:C.sourceDurationSamples,gain:C.gain,name:C.name?`${C.name} (2)`:void 0,color:C.color,waveformData:C.waveformData,fadeOut:C.fadeOut}),V=[...f.clips];V.splice(u,1,_,D);const W=[...t];return W[i]={...f,clips:V},n(W),!0},[t,n,e]);return{splitClipAtPlayhead:c.useCallback(()=>{if(!s)return console.log("No track selected - click a clip to select a track first"),!1;const i=t.findIndex(b=>b.id===s);if(i===-1)return console.warn("Selected track not found"),!1;const u=t[i],d=a.current??0;for(let b=0;b<u.clips.length;b++){const p=u.clips[b],f=p.startSample/r,C=(p.startSample+p.durationSamples)/r;if(d>f&&d<C)return console.log(`Splitting clip on track "${u.name}" at ${d}s`),o(i,b,d)}return console.log(`No clip found at playhead position on track "${u.name}"`),!1},[t,a,s,o,r]),splitClipAt:o}},Kt=e=>{const{shortcuts:t,enabled:n=!0}=e,r=c.useCallback(a=>{if(!n)return;const s=a.target;if(s.tagName==="INPUT"||s.tagName==="TEXTAREA"||s.isContentEditable)return;const o=t.find(l=>{const i=a.key.toLowerCase()===l.key.toLowerCase()||a.key===l.key,u=l.ctrlKey===void 0||a.ctrlKey===l.ctrlKey,d=l.shiftKey===void 0||a.shiftKey===l.shiftKey,b=l.metaKey===void 0||a.metaKey===l.metaKey,p=l.altKey===void 0||a.altKey===l.altKey;return i&&u&&d&&b&&p});o&&(o.preventDefault!==!1&&a.preventDefault(),o.action())},[t,n]);c.useEffect(()=>{if(n)return window.addEventListener("keydown",r),()=>{window.removeEventListener("keydown",r)}},[r,n])},Ei=e=>{const t=[],n=typeof navigator<"u"&&navigator.platform.includes("Mac");return e.metaKey&&t.push(n?"Cmd":"Ctrl"),e.ctrlKey&&!e.metaKey&&t.push("Ctrl"),e.altKey&&t.push(n?"Option":"Alt"),e.shiftKey&&t.push("Shift"),t.push(e.key.toUpperCase()),t.join("+")},Di=(e={})=>{const{enabled:t=!0,additionalShortcuts:n=[],shortcuts:r}=e,{isPlaying:a}=We(),{setCurrentTime:s,play:o,pause:l,stop:i}=we(),{playoutRef:u}=De(),d=c.useCallback(()=>{a?l():o()},[a,o,l]),b=c.useCallback(()=>{i()},[i]),p=c.useCallback(()=>{a&&u.current?(u.current.stop(),s(0),o(0)):s(0)},[a,u,s,o]),C=r??[...[{key:" ",action:d,description:"Play/Pause",preventDefault:!0},{key:"Escape",action:b,description:"Stop",preventDefault:!0},{key:"0",action:p,description:"Rewind to start",preventDefault:!0}],...n];return Kt({shortcuts:C,enabled:t}),{rewindToStart:p,togglePlayPause:d,stopPlayback:b,shortcuts:C}},vn=.01,Nt=.01;function Ti({annotations:e,activeAnnotationId:t,onAnnotationsChange:n,onActiveAnnotationChange:r,duration:a,linkEndpoints:s,continuousPlay:o=!1,enabled:l=!0,scrollContainerRef:i,samplesPerPixel:u,sampleRate:d,controlsWidth:b=0,onPlay:p}){const f=c.useMemo(()=>t?e.findIndex(T=>T.id===t):-1,[e,t]),C=c.useCallback(T=>{if(!i?.current||!u||!d)return;const _=e.find(X=>X.id===T);if(!_)return;const D=i.current,V=D.clientWidth,W=_.start*d/u+b,O=_.end*d/u+b,N=(W+O)/2,Y=D.scrollLeft,ee=Y,re=Y+V;if(W<ee||O>re){const X=Math.max(0,N-V/2);D.scrollTo({left:X,behavior:"smooth"})}},[e,i,u,d,b]);c.useEffect(()=>{t&&i?.current&&u&&d&&C(t)},[t,C,i,u,d]);const y=c.useCallback(T=>{if(f<0)return;const _=e[f],D=Math.max(0,Math.min(_.end-.1,_.start+T)),V=D-_.start,W=[...e];if(W[f]={..._,start:D},s&&f>0){const O=W[f-1];Math.abs(O.end-_.start)<vn&&(W[f-1]={...O,end:Math.max(O.start+.1,O.end+V)})}else if(!s&&f>0){const O=W[f-1];D<O.end&&(W[f-1]={...O,end:D})}n(W)},[e,f,s,n]),g=c.useCallback(T=>{if(f<0)return;const _=e[f],D=Math.max(_.start+.1,Math.min(a,_.end+T)),V=D-_.end,W=[...e];if(W[f]={..._,end:D},s&&f<e.length-1){const O=W[f+1];if(Math.abs(O.start-_.end)<vn){const N=Math.min(O.end-.1,O.start+V);W[f+1]={...O,start:N};let Y=f+1;for(;Y<W.length-1;){const ee=W[Y],re=W[Y+1];if(Math.abs(re.start-e[Y].end)<vn){const X=ee.end-e[Y].end;W[Y+1]={...re,start:Math.min(re.end-.1,re.start+X)},Y++}else break}}}else if(!s&&f<e.length-1){const O=W[f+1];if(D>O.start){W[f+1]={...O,start:D};let N=f+1;for(;N<W.length-1;){const Y=W[N],ee=W[N+1];if(Y.end>ee.start)W[N+1]={...ee,start:Y.end},N++;else break}}}n(W)},[e,f,a,s,n]),m=c.useCallback(()=>{!r||e.length===0||(f<=0?r(e[e.length-1].id):r(e[f-1].id))},[e,f,r]),w=c.useCallback(()=>{!r||e.length===0||(f<0||f>=e.length-1?r(e[0].id):r(e[f+1].id))},[e,f,r]),x=c.useCallback(()=>{!r||e.length===0||r(e[0].id)},[e,r]),v=c.useCallback(()=>{!r||e.length===0||r(e[e.length-1].id)},[e,r]),S=c.useCallback(()=>{r&&r(null)},[r]),I=c.useCallback(()=>{if(f<0||!p)return;const T=e[f],_=o?void 0:T.end-T.start;p(T.start,_)},[e,f,o,p]),$=c.useMemo(()=>[{key:"[",action:()=>y(-Nt),description:"Move annotation start earlier",preventDefault:!0},{key:"]",action:()=>y(Nt),description:"Move annotation start later",preventDefault:!0},{key:"{",shiftKey:!0,action:()=>g(-Nt),description:"Move annotation end earlier",preventDefault:!0},{key:"}",shiftKey:!0,action:()=>g(Nt),description:"Move annotation end later",preventDefault:!0},{key:"Enter",action:I,description:"Play selected annotation",preventDefault:!0}],[y,g,I]),M=c.useMemo(()=>[{key:"ArrowUp",action:m,description:"Select previous annotation",preventDefault:!0},{key:"ArrowLeft",action:m,description:"Select previous annotation",preventDefault:!0},{key:"ArrowDown",action:w,description:"Select next annotation",preventDefault:!0},{key:"ArrowRight",action:w,description:"Select next annotation",preventDefault:!0},{key:"Home",action:x,description:"Select first annotation",preventDefault:!0},{key:"End",action:v,description:"Select last annotation",preventDefault:!0},{key:"Escape",action:S,description:"Deselect annotation",preventDefault:!0}],[m,w,x,v,S]);return Kt({shortcuts:$,enabled:l&&f>=0}),Kt({shortcuts:M,enabled:l&&e.length>0&&!!r}),{moveStartBoundary:y,moveEndBoundary:g,selectPrevious:m,selectNext:w,selectFirst:x,selectLast:v,clearSelection:S,scrollToAnnotation:C,playActiveAnnotation:I}}function _i(e){const t=e.reduce((a,s)=>a+s.length,0),n=new Float32Array(t);let r=0;for(const a of e)n.set(a,r),r+=a.length;return n}function Mi(e,t,n,r=1){const a=e.createBuffer(r,t.length,n),s=new Float32Array(t);return a.copyToChannel(s,0),a}function Dr(e,t,n=16){const r=Math.ceil(e.length/t),a=n===8?new Int8Array(r*2):new Int16Array(r*2),s=2**(n-1);for(let o=0;o<r;o++){const l=o*t,i=Math.min(l+t,e.length);let u=0,d=0;for(let b=l;b<i;b++){const p=e[b];p<u&&(u=p),p>d&&(d=p)}a[o*2]=Math.floor(u*s),a[o*2+1]=Math.floor(d*s)}return a}function Bi(e,t,n,r,a=16){const s=2**(a-1),o=r%n;let l=0;if(o>0&&e.length>0){const d=n-o,b=Math.min(d,t.length);let p=e[e.length-2]/s,f=e[e.length-1]/s;for(let m=0;m<b;m++){const w=t[m];w<p&&(p=w),w>f&&(f=w)}const C=new(a===8?Int8Array:Int16Array)(e.length);C.set(e),C[e.length-2]=Math.floor(p*s),C[e.length-1]=Math.floor(f*s),l=b;const y=Dr(t.slice(l),n,a),g=new(a===8?Int8Array:Int16Array)(C.length+y.length);return g.set(C),g.set(y,C.length),g}const i=Dr(t.slice(l),n,a),u=new(a===8?Int8Array:Int16Array)(e.length+i.length);return u.set(e),u.set(i,e.length),u}function Fi(e,t={}){const{channelCount:n=1,samplesPerPixel:r=1024}=t,[a,s]=c.useState(!1),[o,l]=c.useState(!1),[i,u]=c.useState(0),[d,b]=c.useState(new Int16Array(0)),[p,f]=c.useState(null),[C,y]=c.useState(null),[g,m]=c.useState(0),[w,x]=c.useState(0),v=16,S=c.useRef(!1),I=c.useRef(null),$=c.useRef(null),M=c.useRef([]),T=c.useRef(0),_=c.useRef(null),D=c.useRef(0),V=c.useRef(!1),W=c.useRef(!1),O=c.useCallback(async()=>{if(!S.current)try{const X=P.getContext(),oe=new URL("data:text/javascript;base64,InVzZSBzdHJpY3QiOwoKLy8gc3JjL3dvcmtsZXQvcmVjb3JkaW5nLXByb2Nlc3Nvci53b3JrbGV0LnRzCnZhciBSZWNvcmRpbmdQcm9jZXNzb3IgPSBjbGFzcyBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5idWZmZXJTaXplID0gMDsKICAgIHRoaXMuYnVmZmVycyA9IFtdOwogICAgdGhpcy5zYW1wbGVzQ29sbGVjdGVkID0gMDsKICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTsKICAgIHRoaXMuY2hhbm5lbENvdW50ID0gMTsKICAgIHRoaXMucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgeyBjb21tYW5kLCBzYW1wbGVSYXRlOiBzYW1wbGVSYXRlMiwgY2hhbm5lbENvdW50IH0gPSBldmVudC5kYXRhOwogICAgICBpZiAoY29tbWFuZCA9PT0gInN0YXJ0IikgewogICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSB0cnVlOwogICAgICAgIHRoaXMuY2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50IHx8IDE7CiAgICAgICAgdGhpcy5idWZmZXJTaXplID0gTWF0aC5mbG9vcigoc2FtcGxlUmF0ZTIgfHwgNDhlMykgKiAwLjAxNik7CiAgICAgICAgdGhpcy5idWZmZXJzID0gW107CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoYW5uZWxDb3VudDsgaSsrKSB7CiAgICAgICAgICB0aGlzLmJ1ZmZlcnNbaV0gPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuYnVmZmVyU2l6ZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2FtcGxlc0NvbGxlY3RlZCA9IDA7CiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PT0gInN0b3AiKSB7CiAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlOwogICAgICAgIGlmICh0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgPiAwKSB7CiAgICAgICAgICB0aGlzLmZsdXNoQnVmZmVycygpOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICB9CiAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgIGlmICghdGhpcy5pc1JlY29yZGluZykgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdOwogICAgaWYgKCFpbnB1dCB8fCBpbnB1dC5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBjb25zdCBmcmFtZUNvdW50ID0gaW5wdXRbMF0ubGVuZ3RoOwogICAgZm9yIChsZXQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIHRoaXMuY2hhbm5lbENvdW50KTsgY2hhbm5lbCsrKSB7CiAgICAgIGNvbnN0IGlucHV0Q2hhbm5lbCA9IGlucHV0W2NoYW5uZWxdOwogICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlcnNbY2hhbm5lbF07CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgaSsrKSB7CiAgICAgICAgYnVmZmVyW3RoaXMuc2FtcGxlc0NvbGxlY3RlZCArIGldID0gaW5wdXRDaGFubmVsW2ldOwogICAgICB9CiAgICB9CiAgICB0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgKz0gZnJhbWVDb3VudDsKICAgIGlmICh0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgPj0gdGhpcy5idWZmZXJTaXplKSB7CiAgICAgIHRoaXMuZmx1c2hCdWZmZXJzKCk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgZmx1c2hCdWZmZXJzKCkgewogICAgY29uc3Qgc2FtcGxlcyA9IHRoaXMuYnVmZmVyc1swXS5zbGljZSgwLCB0aGlzLnNhbXBsZXNDb2xsZWN0ZWQpOwogICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsKICAgICAgc2FtcGxlcywKICAgICAgc2FtcGxlUmF0ZSwKICAgICAgY2hhbm5lbENvdW50OiB0aGlzLmNoYW5uZWxDb3VudAogICAgfSk7CiAgICB0aGlzLnNhbXBsZXNDb2xsZWN0ZWQgPSAwOwogIH0KfTsKcmVnaXN0ZXJQcm9jZXNzb3IoInJlY29yZGluZy1wcm9jZXNzb3IiLCBSZWNvcmRpbmdQcm9jZXNzb3IpOwovLyMgc291cmNlTWFwcGluZ1VSTD1yZWNvcmRpbmctcHJvY2Vzc29yLndvcmtsZXQuanMubWFw",typeof document>"u"?require("url").pathToFileURL(__filename).href:cn&&cn.tagName.toUpperCase()==="SCRIPT"&&cn.src||new URL("index.js",document.baseURI).href).href;await X.addAudioWorkletModule(oe),S.current=!0}catch(X){throw console.error("Failed to load AudioWorklet module:",X),new Error("Failed to load recording processor")}},[]),N=c.useCallback(async()=>{if(!e){y(new Error("No microphone stream available"));return}try{y(null);const X=P.getContext();X.state==="suspended"&&await X.resume(),await O();const oe=X.createMediaStreamSource(e);$.current=oe;const A=X.createAudioWorkletNode("recording-processor");I.current=A,oe.connect(A),A.port.onmessage=H=>{const{samples:U}=H.data;M.current.push(U),T.current+=U.length,b(ge=>Bi(ge,U,r,T.current-U.length,v))},A.port.postMessage({command:"start",sampleRate:X.sampleRate,channelCount:n}),M.current=[],T.current=0,b(new Int16Array(0)),f(null),m(0),x(0),V.current=!0,W.current=!1,s(!0),l(!1),D.current=performance.now();const j=()=>{if(V.current&&!W.current){const H=(performance.now()-D.current)/1e3;u(H),_.current=requestAnimationFrame(j)}};j()}catch(X){console.error("Failed to start recording:",X),y(X instanceof Error?X:new Error("Failed to start recording"))}},[e,n,r,O,a,o]),Y=c.useCallback(async()=>{if(!a)return null;try{if(I.current){if(I.current.port.postMessage({command:"stop"}),$.current)try{$.current.disconnect(I.current)}catch{}I.current.disconnect()}_.current!==null&&(cancelAnimationFrame(_.current),_.current=null);const X=_i(M.current),A=P.getContext().rawContext,j=Mi(A,X,A.sampleRate,n);return f(j),u(j.duration),V.current=!1,W.current=!1,s(!1),l(!1),m(0),j}catch(X){return console.error("Failed to stop recording:",X),y(X instanceof Error?X:new Error("Failed to stop recording")),null}},[a,n]),ee=c.useCallback(()=>{a&&!o&&(_.current!==null&&(cancelAnimationFrame(_.current),_.current=null),W.current=!0,l(!0))},[a,o]),re=c.useCallback(()=>{if(a&&o){W.current=!1,l(!1),D.current=performance.now()-i*1e3;const X=()=>{if(V.current&&!W.current){const oe=(performance.now()-D.current)/1e3;u(oe),_.current=requestAnimationFrame(X)}};X()}},[a,o,i]);return c.useEffect(()=>()=>{if(I.current){if(I.current.port.postMessage({command:"stop"}),$.current)try{$.current.disconnect(I.current)}catch{}I.current.disconnect()}_.current!==null&&cancelAnimationFrame(_.current)},[]),{isRecording:a,isPaused:o,duration:i,peaks:d,audioBuffer:p,level:g,peakLevel:w,startRecording:N,stopRecording:Y,pauseRecording:ee,resumeRecording:re,error:C}}function Wi(){const[e,t]=c.useState(null),[n,r]=c.useState([]),[a,s]=c.useState(!1),[o,l]=c.useState(!1),[i,u]=c.useState(null),d=c.useCallback(async()=>{try{const C=(await navigator.mediaDevices.enumerateDevices()).filter(y=>y.kind==="audioinput").map(y=>({deviceId:y.deviceId,label:y.label||`Microphone ${y.deviceId.slice(0,8)}`,groupId:y.groupId}));r(C)}catch(f){console.error("Failed to enumerate devices:",f),u(f instanceof Error?f:new Error("Failed to enumerate devices"))}},[]),b=c.useCallback(async(f,C)=>{l(!0),u(null);try{e&&e.getTracks().forEach(w=>w.stop());const g={audio:{echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,latency:0,...C,...f&&{deviceId:{exact:f}}},video:!1},m=await navigator.mediaDevices.getUserMedia(g);t(m),s(!0),await d()}catch(y){console.error("Failed to access microphone:",y),u(y instanceof Error?y:new Error("Failed to access microphone")),s(!1)}finally{l(!1)}},[e,d]),p=c.useCallback(()=>{e&&(e.getTracks().forEach(f=>f.stop()),t(null),s(!1))},[e]);return c.useEffect(()=>(d(),()=>{e&&e.getTracks().forEach(f=>f.stop())}),[]),{stream:e,devices:n,hasPermission:a,isLoading:o,requestAccess:b,stopStream:p,error:i}}function Zi(e,t={}){const{updateRate:n=60,smoothingTimeConstant:r=.8}=t,[a,s]=c.useState(0),[o,l]=c.useState(0),i=c.useRef(null),u=c.useRef(null),d=c.useRef(null),b=()=>l(0);return c.useEffect(()=>{if(!e){s(0),l(0);return}let p=!0;return(async()=>{if(!p)return;const C=P.getContext();if(C.state==="suspended"&&await C.resume(),!p)return;const y=new P.Meter({smoothing:r,context:C});i.current=y;const g=C.createMediaStreamSource(e);u.current=g,P.connect(g,y);const m=1e3/n;let w=0;const x=v=>{if(!(!p||!i.current)){if(v-w>=m){w=v;const S=i.current.getValue(),I=typeof S=="number"?S:S[0],$=Math.max(0,Math.min(1,(I+100)/100));s($),l(M=>Math.max(M,$))}d.current=requestAnimationFrame(x)}};d.current=requestAnimationFrame(x)})(),()=>{if(p=!1,d.current&&(cancelAnimationFrame(d.current),d.current=null),u.current){try{u.current.disconnect()}catch{}u.current=null}i.current&&(i.current.dispose(),i.current=null)}},[e,r,n]),{level:a,peakLevel:o,resetPeak:b}}k.button`
1201
1085
  padding: 0.5rem 1rem;
1202
1086
  font-size: 0.875rem;
1203
1087
  font-weight: 500;
@@ -1205,11 +1089,11 @@ React keys must be passed directly to JSX without using spread:
1205
1089
  border-radius: 0.25rem;
1206
1090
  cursor: pointer;
1207
1091
  transition: all 0.2s ease-in-out;
1208
- background: ${s=>s.$isRecording?"#dc3545":"#e74c3c"};
1092
+ background: ${e=>e.$isRecording?"#dc3545":"#e74c3c"};
1209
1093
  color: white;
1210
1094
 
1211
1095
  &:hover:not(:disabled) {
1212
- background: ${s=>s.$isRecording?"#c82333":"#c0392b"};
1096
+ background: ${e=>e.$isRecording?"#c82333":"#c0392b"};
1213
1097
  transform: translateY(-1px);
1214
1098
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1215
1099
  }
@@ -1227,7 +1111,7 @@ React keys must be passed directly to JSX without using spread:
1227
1111
  outline: none;
1228
1112
  box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.3);
1229
1113
  }
1230
- `;W.span`
1114
+ `;k.span`
1231
1115
  display: inline-block;
1232
1116
  width: 8px;
1233
1117
  height: 8px;
@@ -1245,29 +1129,29 @@ React keys must be passed directly to JSX without using spread:
1245
1129
  opacity: 0.3;
1246
1130
  }
1247
1131
  }
1248
- `;W(Ba)`
1132
+ `;k(Tn)`
1249
1133
  min-width: 200px;
1250
- `;W(xu)`
1134
+ `;k(Nr)`
1251
1135
  display: flex;
1252
1136
  flex-direction: column;
1253
1137
  gap: 0.25rem;
1254
- `;W.div`
1138
+ `;k.div`
1255
1139
  display: flex;
1256
1140
  align-items: center;
1257
1141
  gap: 0.75rem;
1258
1142
  padding: 0.5rem 0.75rem;
1259
- background: ${s=>s.$isRecording?"#fff3cd":"transparent"};
1143
+ background: ${e=>e.$isRecording?"#fff3cd":"transparent"};
1260
1144
  border-radius: 0.25rem;
1261
1145
  transition: background 0.2s ease-in-out;
1262
- `;W.div`
1146
+ `;k.div`
1263
1147
  width: 12px;
1264
1148
  height: 12px;
1265
1149
  border-radius: 50%;
1266
- background: ${s=>s.$isPaused?"#ffc107":"#dc3545"};
1267
- opacity: ${s=>s.$isRecording?1:0};
1150
+ background: ${e=>e.$isPaused?"#ffc107":"#dc3545"};
1151
+ opacity: ${e=>e.$isRecording?1:0};
1268
1152
  transition: opacity 0.2s ease-in-out;
1269
1153
 
1270
- ${s=>s.$isRecording&&!s.$isPaused&&`
1154
+ ${e=>e.$isRecording&&!e.$isPaused&&`
1271
1155
  animation: blink 1.5s ease-in-out infinite;
1272
1156
 
1273
1157
  @keyframes blink {
@@ -1279,93 +1163,92 @@ React keys must be passed directly to JSX without using spread:
1279
1163
  }
1280
1164
  }
1281
1165
  `}
1282
- `;W.span`
1166
+ `;k.span`
1283
1167
  font-family: 'Courier New', Monaco, monospace;
1284
1168
  font-size: 1rem;
1285
1169
  font-weight: 600;
1286
1170
  color: #495057;
1287
1171
  min-width: 70px;
1288
- `;W.span`
1172
+ `;k.span`
1289
1173
  font-size: 0.75rem;
1290
1174
  font-weight: 500;
1291
- color: ${s=>s.$isPaused?"#ffc107":"#dc3545"};
1175
+ color: ${e=>e.$isPaused?"#ffc107":"#dc3545"};
1292
1176
  text-transform: uppercase;
1293
- `;var hy=W.div`
1177
+ `;var Pi=k.div`
1294
1178
  position: relative;
1295
- width: ${s=>s.$width}px;
1296
- height: ${s=>s.$height}px;
1179
+ width: ${e=>e.$width}px;
1180
+ height: ${e=>e.$height}px;
1297
1181
  background: #2c3e50;
1298
1182
  border-radius: 4px;
1299
1183
  overflow: hidden;
1300
1184
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3);
1301
- `,dy=s=>s<.6?"linear-gradient(90deg, #27ae60, #2ecc71)":s<.85?"linear-gradient(90deg, #f39c12, #f1c40f)":"linear-gradient(90deg, #c0392b, #e74c3c)",py=W.div.attrs(s=>({style:{width:`${s.$level*100}%`,height:`${s.$height}px`,background:dy(s.$level),boxShadow:s.$level>.01?"0 0 8px rgba(255, 255, 255, 0.3)":"none"}}))`
1185
+ `,Vi=e=>e<.6?"linear-gradient(90deg, #27ae60, #2ecc71)":e<.85?"linear-gradient(90deg, #f39c12, #f1c40f)":"linear-gradient(90deg, #c0392b, #e74c3c)",ji=k.div.attrs(e=>({style:{width:`${e.$level*100}%`,height:`${e.$height}px`,background:Vi(e.$level),boxShadow:e.$level>.01?"0 0 8px rgba(255, 255, 255, 0.3)":"none"}}))`
1302
1186
  position: absolute;
1303
1187
  left: 0;
1304
1188
  top: 0;
1305
1189
  transition: width 0.05s ease-out, background 0.1s ease-out;
1306
- `,fy=W.div.attrs(s=>({style:{left:`${s.$peakLevel*100}%`,height:`${s.$height}px`}}))`
1190
+ `,zi=k.div.attrs(e=>({style:{left:`${e.$peakLevel*100}%`,height:`${e.$height}px`}}))`
1307
1191
  position: absolute;
1308
1192
  top: 0;
1309
1193
  width: 2px;
1310
1194
  background: #ecf0f1;
1311
1195
  box-shadow: 0 0 4px rgba(236, 240, 241, 0.8);
1312
1196
  transition: left 0.1s ease-out;
1313
- `,my=W.div`
1197
+ `,Oi=k.div`
1314
1198
  position: absolute;
1315
1199
  top: 0;
1316
1200
  left: 0;
1317
1201
  width: 100%;
1318
- height: ${s=>s.$height}px;
1202
+ height: ${e=>e.$height}px;
1319
1203
  pointer-events: none;
1320
- `,el=W.div`
1204
+ `,Tr=k.div`
1321
1205
  position: absolute;
1322
- left: ${s=>s.$position}%;
1206
+ left: ${e=>e.$position}%;
1323
1207
  top: 0;
1324
1208
  width: 1px;
1325
- height: ${s=>s.$height}px;
1209
+ height: ${e=>e.$height}px;
1326
1210
  background: rgba(255, 255, 255, 0.2);
1327
- `,gy=({level:s,peakLevel:e,width:t=200,height:n=20,className:i})=>{const r=Math.max(0,Math.min(1,s)),o=e!==void 0?Math.max(0,Math.min(1,e)):0;return E.jsxs(hy,{$width:t,$height:n,className:i,children:[E.jsx(py,{$level:r,$height:n}),e!==void 0&&o>0&&E.jsx(fy,{$peakLevel:o,$height:n}),E.jsxs(my,{$height:n,children:[E.jsx(el,{$position:60,$height:n}),E.jsx(el,{$position:85,$height:n})]})]})};S.memo(gy);function _y(s,e,t,n={}){const{currentTime:i=0,audioConstraints:r,...o}=n,[a,c]=S.useState(!1),[l,u]=S.useState(null),{stream:h,devices:p,hasPermission:d,requestAccess:f,error:_}=ly(),{level:m,peakLevel:g}=uy(h),{isRecording:y,isPaused:x,duration:w,peaks:v,startRecording:b,stopRecording:k,pauseRecording:T,resumeRecording:R,error:I}=cy(h,o),A=S.useCallback(async()=>{t&&(a||(await so(),c(!0)),await b())},[t,a,b]),D=S.useCallback(async()=>{const q=await k();if(q&&t){const V=s.findIndex(pe=>pe.id===t);if(V===-1)return;const j=s[V],G=Math.floor(i*q.sampleRate);let B=0;if(j.clips.length>0){const pe=j.clips.map(ie=>ie.startSample+ie.durationSamples);B=Math.max(...pe)}const Z=Math.max(G,B),X={id:`clip-${Date.now()}`,audioBuffer:q,startSample:Z,durationSamples:q.length,offsetSamples:0,gain:1,name:`Recording ${new Date().toLocaleTimeString()}`},ee=s.map((pe,ie)=>ie===V?{...pe,clips:[...pe.clips,X]}:pe);e(ee)}},[t,s,e,i,k]);S.useEffect(()=>{d&&p.length>0&&l===null&&u(p[0].deviceId)},[d,p.length]);const M=S.useCallback(async()=>{await f(void 0,r),await so(),c(!0)},[f,r]),N=S.useCallback(async q=>{u(q),await f(q,r),await so(),c(!0)},[f,r]);return{isRecording:y,isPaused:x,duration:w,level:m,peakLevel:g,error:_||I,stream:h,devices:p,hasPermission:d,selectedDevice:l,startRecording:A,stopRecording:D,pauseRecording:T,resumeRecording:R,requestMicAccess:M,changeDevice:N,recordingPeaks:v}}const Si=[{id:"reverb",name:"Reverb",category:"reverb",description:"Simple convolution reverb with adjustable decay time",parameters:[{name:"decay",label:"Decay",type:"number",min:.1,max:10,step:.1,default:1.5,unit:"s"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"freeverb",name:"Freeverb",category:"reverb",description:"Classic Schroeder/Moorer reverb with room size and dampening",parameters:[{name:"roomSize",label:"Room Size",type:"number",min:0,max:1,step:.01,default:.7},{name:"dampening",label:"Dampening",type:"number",min:0,max:1e4,step:100,default:3e3,unit:"Hz"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"jcReverb",name:"JC Reverb",category:"reverb",description:"Attempt at Roland JC-120 chorus reverb emulation",parameters:[{name:"roomSize",label:"Room Size",type:"number",min:0,max:1,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"feedbackDelay",name:"Feedback Delay",category:"delay",description:"Delay line with feedback for echo effects",parameters:[{name:"delayTime",label:"Delay Time",type:"number",min:0,max:1,step:.01,default:.25,unit:"s"},{name:"feedback",label:"Feedback",type:"number",min:0,max:.95,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"pingPongDelay",name:"Ping Pong Delay",category:"delay",description:"Stereo delay bouncing between left and right channels",parameters:[{name:"delayTime",label:"Delay Time",type:"number",min:0,max:1,step:.01,default:.25,unit:"s"},{name:"feedback",label:"Feedback",type:"number",min:0,max:.95,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"chorus",name:"Chorus",category:"modulation",description:"Creates thickness by layering detuned copies of the signal",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:1.5,unit:"Hz"},{name:"delayTime",label:"Delay",type:"number",min:0,max:20,step:.5,default:3.5,unit:"ms"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:.7},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"phaser",name:"Phaser",category:"modulation",description:"Classic phaser effect using allpass filters",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:.5,unit:"Hz"},{name:"octaves",label:"Octaves",type:"number",min:1,max:6,step:1,default:3},{name:"baseFrequency",label:"Base Freq",type:"number",min:100,max:2e3,step:10,default:350,unit:"Hz"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"tremolo",name:"Tremolo",category:"modulation",description:"Rhythmic volume modulation",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:20,step:.1,default:4,unit:"Hz"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"vibrato",name:"Vibrato",category:"modulation",description:"Pitch modulation effect",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:20,step:.1,default:5,unit:"Hz"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:.1},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"autoPanner",name:"Auto Panner",category:"modulation",description:"Automatic left-right panning",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:1,unit:"Hz"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:1},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"autoFilter",name:"Auto Filter",category:"filter",description:"Automated filter sweep with LFO",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:1,unit:"Hz"},{name:"baseFrequency",label:"Base Freq",type:"number",min:20,max:2e3,step:10,default:200,unit:"Hz"},{name:"octaves",label:"Octaves",type:"number",min:.5,max:8,step:.5,default:2.6},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:1},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"autoWah",name:"Auto Wah",category:"filter",description:"Envelope follower filter effect",parameters:[{name:"baseFrequency",label:"Base Freq",type:"number",min:20,max:500,step:10,default:100,unit:"Hz"},{name:"octaves",label:"Octaves",type:"number",min:1,max:8,step:1,default:6},{name:"sensitivity",label:"Sensitivity",type:"number",min:-40,max:0,step:1,default:0,unit:"dB"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"eq3",name:"3-Band EQ",category:"filter",description:"Three band equalizer with low, mid, and high controls",parameters:[{name:"low",label:"Low",type:"number",min:-24,max:24,step:.5,default:0,unit:"dB"},{name:"mid",label:"Mid",type:"number",min:-24,max:24,step:.5,default:0,unit:"dB"},{name:"high",label:"High",type:"number",min:-24,max:24,step:.5,default:0,unit:"dB"},{name:"lowFrequency",label:"Low Freq",type:"number",min:20,max:500,step:10,default:400,unit:"Hz"},{name:"highFrequency",label:"High Freq",type:"number",min:1e3,max:1e4,step:100,default:2500,unit:"Hz"}]},{id:"distortion",name:"Distortion",category:"distortion",description:"Wave shaping distortion effect",parameters:[{name:"distortion",label:"Drive",type:"number",min:0,max:1,step:.01,default:.4},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"bitCrusher",name:"Bit Crusher",category:"distortion",description:"Reduces bit depth for lo-fi digital texture",parameters:[{name:"bits",label:"Bits",type:"number",min:1,max:16,step:1,default:4},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"chebyshev",name:"Chebyshev",category:"distortion",description:"Waveshaping distortion using Chebyshev polynomials",parameters:[{name:"order",label:"Order",type:"number",min:1,max:100,step:1,default:50},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"compressor",name:"Compressor",category:"dynamics",description:"Dynamic range compressor",parameters:[{name:"threshold",label:"Threshold",type:"number",min:-60,max:0,step:1,default:-24,unit:"dB"},{name:"ratio",label:"Ratio",type:"number",min:1,max:20,step:.5,default:4},{name:"attack",label:"Attack",type:"number",min:0,max:1,step:.001,default:.003,unit:"s"},{name:"release",label:"Release",type:"number",min:0,max:1,step:.01,default:.25,unit:"s"},{name:"knee",label:"Knee",type:"number",min:0,max:40,step:1,default:30,unit:"dB"}]},{id:"limiter",name:"Limiter",category:"dynamics",description:"Hard limiter to prevent clipping",parameters:[{name:"threshold",label:"Threshold",type:"number",min:-12,max:0,step:.5,default:-6,unit:"dB"}]},{id:"gate",name:"Gate",category:"dynamics",description:"Noise gate to silence signal below threshold",parameters:[{name:"threshold",label:"Threshold",type:"number",min:-100,max:0,step:1,default:-40,unit:"dB"},{name:"attack",label:"Attack",type:"number",min:0,max:.3,step:.001,default:.001,unit:"s"},{name:"release",label:"Release",type:"number",min:0,max:.5,step:.01,default:.1,unit:"s"}]},{id:"stereoWidener",name:"Stereo Widener",category:"spatial",description:"Expands or narrows the stereo image",parameters:[{name:"width",label:"Width",type:"number",min:0,max:1,step:.01,default:.5}]}],ja=s=>Si.find(e=>e.id===s),vy=s=>Si.filter(e=>e.category===s),yy=[{id:"reverb",name:"Reverb"},{id:"delay",name:"Delay"},{id:"modulation",name:"Modulation"},{id:"filter",name:"Filter"},{id:"distortion",name:"Distortion"},{id:"dynamics",name:"Dynamics"},{id:"spatial",name:"Spatial"}],by={reverb:Mr,freeverb:Ir,jcReverb:Dr,feedbackDelay:Ar,pingPongDelay:Rr,chorus:Tr,phaser:Er,tremolo:Nr,vibrato:Fr,autoPanner:wr,autoFilter:br,autoWah:xr,eq3:$r,distortion:kr,bitCrusher:Cr,chebyshev:Sr,compressor:es,limiter:Br,gate:Wr,stereoWidener:Or};let wy=0;const xy=()=>`effect_${Date.now()}_${++wy}`;function ei(s,e){const t=by[s.id];if(!t)throw new Error(`Unknown effect type: ${s.id}`);const n={};s.parameters.forEach(o=>{const a=e?.[o.name]??o.default;n[o.name]=a});const i=new t(n),r=xy();return{effect:i,id:s.id,instanceId:r,dispose(){try{i.disconnect(),i.dispose()}catch{}},setParameter(o,a){o==="wet"&&i.wet?i.wet.value=a:i[o]!==void 0&&(i[o]?.value!==void 0?i[o].value=a:i[o]=a)},getParameter(o){if(o==="wet"&&i.wet)return i.wet.value;if(i[o]!==void 0)return i[o]?.value!==void 0?i[o].value:i[o]},connect(o){i.connect(o)},disconnect(){try{i.disconnect()}catch{}}}}function Cy(s){if(s.length===0)throw new Error("Cannot create effect chain with no effects");for(let e=0;e<s.length-1;e++)s[e].effect.connect(s[e+1].effect);return{input:s[0].effect,output:s[s.length-1].effect,dispose(){s.forEach(e=>e.dispose())}}}function Sy(s=256){const[e,t]=S.useState([]),n=S.useRef(e);n.current=e;const i=S.useRef(new Map),r=S.useRef(null),o=S.useRef(null),a=S.useCallback(m=>{const g=o.current;if(!g)return;const{masterGainNode:y,destination:x,analyserNode:w}=g;try{y.disconnect()}catch{}const v=m.map(b=>i.current.get(b.instanceId)).filter(b=>b!==void 0);if(v.length===0)y.connect(w),w.connect(x);else{let b=y;v.forEach(k=>{try{k.disconnect()}catch{}b.connect(k.effect),b=k.effect}),b.connect(w),w.connect(x)}},[]),c=S.useCallback(m=>{const g=ja(m);if(!g){console.error(`Unknown effect: ${m}`);return}const y={};g.parameters.forEach(v=>{y[v.name]=v.default});const x=ei(g,y);i.current.set(x.instanceId,x);const w={instanceId:x.instanceId,effectId:g.id,definition:g,params:y,bypassed:!1};t(v=>[...v,w])},[]),l=S.useCallback(m=>{const g=i.current.get(m);g&&(g.dispose(),i.current.delete(m)),t(y=>y.filter(x=>x.instanceId!==m))},[]),u=S.useCallback((m,g,y)=>{const x=i.current.get(m);x&&x.setParameter(g,y),t(w=>w.map(v=>v.instanceId===m?{...v,params:{...v.params,[g]:y}}:v))},[]),h=S.useCallback(m=>{const g=n.current.find(w=>w.instanceId===m);if(!g)return;const y=!g.bypassed,x=i.current.get(m);if(x){const w=g.params.wet??1;x.setParameter("wet",y?0:w)}t(w=>w.map(v=>v.instanceId===m?{...v,bypassed:y}:v))},[]),p=S.useCallback((m,g)=>{t(y=>{const x=[...y],[w]=x.splice(m,1);return x.splice(g,0,w),x})},[]),d=S.useCallback(()=>{i.current.forEach(m=>m.dispose()),i.current.clear(),t([])},[]);S.useEffect(()=>{a(e)},[e,a]);const f=S.useCallback((m,g,y)=>{const x=new Hs("fft",s);r.current=x,o.current={masterGainNode:m,destination:g,analyserNode:x};const v=n.current.map(b=>i.current.get(b.instanceId)).filter(b=>b!==void 0);if(v.length===0)m.connect(x),x.connect(g);else{let b=m;v.forEach(k=>{b.connect(k.effect),b=k.effect}),b.connect(x),x.connect(g)}return function(){x.dispose(),r.current=null,o.current=null}},[s]);S.useEffect(()=>()=>{i.current.forEach(m=>m.dispose()),i.current.clear()},[]);const _=S.useCallback(()=>{const m=e.filter(g=>!g.bypassed);if(m.length!==0)return(g,y,x)=>{const w=[];for(const v of m){const b=ei(v.definition,v.params);w.push(b)}if(w.length===0)g.connect(y);else{let v=g;w.forEach(b=>{v.connect(b.effect),v=b.effect}),v.connect(y)}return function(){w.forEach(b=>b.dispose())}}},[e]);return{activeEffects:e,availableEffects:Si,addEffect:c,removeEffect:l,updateParameter:u,toggleBypass:h,reorderEffects:p,clearAllEffects:d,masterEffects:f,createOfflineEffectsFunction:_,analyserRef:r}}function Ty(){const[s,e]=S.useState(new Map),t=S.useRef(new Map),n=S.useRef(new Map),i=S.useCallback((d,f)=>{const _=n.current.get(d);if(!_)return;const{graphEnd:m,masterGainNode:g}=_,y=t.current.get(d);try{m.disconnect()}catch{}const x=f.map(w=>y?.get(w.instanceId)).filter(w=>w!==void 0);if(x.length===0)m.connect(g);else{let w=m;x.forEach(v=>{try{v.disconnect()}catch{}w.connect(v.effect),w=v.effect}),w.connect(g)}},[]),r=S.useCallback((d,f)=>{const _=ja(f);if(!_){console.error(`Unknown effect: ${f}`);return}const m={};_.parameters.forEach(x=>{m[x.name]=x.default});const g=ei(_,m);t.current.has(d)||t.current.set(d,new Map),t.current.get(d).set(g.instanceId,g);const y={instanceId:g.instanceId,effectId:_.id,definition:_,params:m,bypassed:!1};e(x=>{const w=new Map(x),v=w.get(d)||[];return w.set(d,[...v,y]),w})},[]),o=S.useCallback((d,f)=>{const _=t.current.get(d),m=_?.get(f);m&&(m.dispose(),_?.delete(f)),e(g=>{const y=new Map(g),x=y.get(d)||[];return y.set(d,x.filter(w=>w.instanceId!==f)),y})},[]),a=S.useCallback((d,f,_,m)=>{const y=t.current.get(d)?.get(f);y&&y.setParameter(_,m),e(x=>{const w=new Map(x),v=w.get(d)||[];return w.set(d,v.map(b=>b.instanceId===f?{...b,params:{...b.params,[_]:m}}:b)),w})},[]),c=S.useCallback((d,f)=>{const m=(u.current.get(d)||[]).find(w=>w.instanceId===f);if(!m)return;const g=!m.bypassed,x=t.current.get(d)?.get(f);if(x){const w=m.params.wet??1;x.setParameter("wet",g?0:w)}e(w=>{const v=new Map(w),b=v.get(d)||[];return v.set(d,b.map(k=>k.instanceId===f?{...k,bypassed:g}:k)),v})},[]),l=S.useCallback(d=>{const f=t.current.get(d);f&&(f.forEach(_=>_.dispose()),f.clear()),e(_=>{const m=new Map(_);return m.set(d,[]),m})},[]),u=S.useRef(s);u.current=s;const h=S.useCallback(d=>(f,_,m)=>{n.current.set(d,{graphEnd:f,masterGainNode:_});const g=u.current.get(d)||[],y=t.current.get(d),x=g.map(w=>y?.get(w.instanceId)).filter(w=>w!==void 0);if(x.length===0)f.connect(_);else{let w=f;x.forEach(v=>{w.connect(v.effect),w=v.effect}),w.connect(_)}return function(){n.current.delete(d)}},[]);S.useEffect(()=>{s.forEach((d,f)=>{i(f,d)})},[s,i]),S.useEffect(()=>()=>{t.current.forEach(d=>{d.forEach(f=>f.dispose()),d.clear()}),t.current.clear()},[]);const p=S.useCallback(d=>{const _=(s.get(d)||[]).filter(m=>!m.bypassed);if(_.length!==0)return(m,g,y)=>{const x=[];for(const w of _){const v=ei(w.definition,w.params);x.push(v)}if(x.length===0)m.connect(g);else{let w=m;x.forEach(v=>{w.connect(v.effect),w=v.effect}),w.connect(g)}return function(){x.forEach(v=>v.dispose())}}},[s]);return{trackEffectsState:s,addEffectToTrack:r,removeEffectFromTrack:o,updateTrackEffectParameter:a,toggleBypass:c,clearTrackEffects:l,getTrackEffectsFunction:h,createOfflineTrackEffectsFunction:p,availableEffects:Si}}function ky(s,e={}){const{bitDepth:t=16}=e,n=s.numberOfChannels,i=s.sampleRate,r=s.length,o=t/8,a=n*o,c=i*a,l=r*a,u=44,h=u+l,p=new ArrayBuffer(h),d=new DataView(p);Pi(d,0,"RIFF"),d.setUint32(4,h-8,!0),Pi(d,8,"WAVE"),Pi(d,12,"fmt "),d.setUint32(16,16,!0),d.setUint16(20,t===32?3:1,!0),d.setUint16(22,n,!0),d.setUint32(24,i,!0),d.setUint32(28,c,!0),d.setUint16(32,a,!0),d.setUint16(34,t,!0),Pi(d,36,"data"),d.setUint32(40,l,!0);const f=[];for(let m=0;m<n;m++)f.push(s.getChannelData(m));let _=u;if(t===16)for(let m=0;m<r;m++)for(let g=0;g<n;g++){const y=f[g][m],x=Math.max(-1,Math.min(1,y)),w=x<0?x*32768:x*32767;d.setInt16(_,w,!0),_+=2}else for(let m=0;m<r;m++)for(let g=0;g<n;g++)d.setFloat32(_,f[g][m],!0),_+=4;return new Blob([p],{type:"audio/wav"})}function Pi(s,e,t){for(let n=0;n<t.length;n++)s.setUint8(e+n,t.charCodeAt(n))}function Ay(s,e){const t=URL.createObjectURL(s),n=document.createElement("a");n.href=t,n.download=e,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}function Wu(){const[s,e]=S.useState(!1),[t,n]=S.useState(0),[i,r]=S.useState(null);return{exportWav:S.useCallback(async(a,c,l={})=>{const{filename:u="export",mode:h="master",trackIndex:p,autoDownload:d=!0,applyEffects:f=!0,effectsFunction:_,createOfflineTrackEffects:m,bitDepth:g=16,onProgress:y}=l;e(!0),n(0),r(null);try{if(a.length===0)throw new Error("No tracks to export");if(h==="individual"&&(p===void 0||p<0||p>=a.length))throw new Error("Invalid track index for individual export");const x=a[0].clips[0]?.audioBuffer.sampleRate||44100;let w=0;for(const A of a)for(const D of A.clips){const M=D.startSample+D.durationSamples;w=Math.max(w,M)}w+=Math.round(x*.1);const v=w/x,b=h==="individual"?[{track:a[p],state:c[p],index:p}]:a.map((A,D)=>({track:A,state:c[D],index:D})),k=c.some(A=>A.soloed),T=!!m;let R;if((_||T)&&f)R=await Iy(b,c,k,v,x,_,m,A=>{n(A),y?.(A)});else{const A=new OfflineAudioContext(2,w,x);let D=0;const M=b.reduce((N,{track:q})=>N+q.clips.length,0);for(const{track:N,state:q}of b)if(!(q.muted&&!q.soloed)&&!(k&&!q.soloed))for(const V of N.clips){await Ry(A,V,q,x,f),D++;const j=D/M*.5;n(j),y?.(j)}n(.5),y?.(.5),R=await A.startRendering()}n(.9),y?.(.9);const I=ky(R,{bitDepth:g});if(n(1),y?.(1),d){const A=h==="individual"?`${u}_${a[p].name}`:u;Ay(I,`${A}.wav`)}return{audioBuffer:R,blob:I,duration:v}}catch(x){const w=x instanceof Error?x.message:"Export failed";throw r(w),x}finally{e(!1)}},[]),isExporting:s,progress:t,error:i}}async function Iy(s,e,t,n,i,r,o,a){const{Offline:c,Volume:l,Gain:u,Panner:h,Player:p,ToneAudioBuffer:d}=await Promise.resolve().then(()=>pu);a(.1);let f;try{f=await c(async({transport:_,destination:m})=>{const g=new l(0);let y;r?y=r(g,m,!0):g.connect(m);for(const{track:x,state:w}of s){if(w.muted&&!w.soloed||t&&!w.soloed)continue;const v=new l(Dy(w.volume)),b=new h(w.pan),k=new u(w.muted?0:1),T=o?.(x.id);T?T(k,g,!0):k.connect(g),b.connect(k),v.connect(b);for(const R of x.clips){const{audioBuffer:I,startSample:A,durationSamples:D,offsetSamples:M,gain:N,fadeIn:q,fadeOut:V}=R,j=A/i,G=D/i,B=M/i,Z=new d(I),X=new p(Z),ee=new u(N);if(X.connect(ee),ee.connect(v),q){const pe=j,ie=j+q.duration,Q=ee.gain._param;Q.setValueAtTime(0,pe),Q.linearRampToValueAtTime(N,ie)}if(V){const pe=j+G-V.duration,ie=j+G,Q=ee.gain._param;Q.setValueAtTime(N,pe),Q.linearRampToValueAtTime(0,ie)}X.start(j,B,G)}}_.start(0)},n,2,i)}catch(_){throw _ instanceof Error?_:new Error(`Tone.Offline rendering failed: ${String(_)}`)}return a(.9),f.get()}function Dy(s){return 20*Math.log10(Math.max(s,1e-4))}async function Ry(s,e,t,n,i){const{audioBuffer:r,startSample:o,durationSamples:a,offsetSamples:c,gain:l,fadeIn:u,fadeOut:h}=e,p=o/n,d=a/n,f=c/n,_=s.createBufferSource();_.buffer=r;const m=s.createGain(),g=l*t.volume,y=s.createStereoPanner();if(y.pan.value=t.pan,_.connect(m),m.connect(y),y.connect(s.destination),i){if(u?m.gain.setValueAtTime(0,p):m.gain.setValueAtTime(g,p),u){const x=p,w=p+u.duration;tl(m.gain,x,w,0,g,u.type||"linear")}if(h){const x=p+d-h.duration,w=p+d;(!u||u.duration<d-h.duration)&&m.gain.setValueAtTime(g,x),tl(m.gain,x,w,g,0,h.type||"linear")}}else m.gain.setValueAtTime(g,p);_.start(p,f,d)}function tl(s,e,t,n,i,r){const o=t-e;if(!(o<=0))switch(r){case"linear":s.setValueAtTime(n,e),s.linearRampToValueAtTime(i,t);break;case"exponential":const a=Math.max(n,1e-4),c=Math.max(i,1e-4);s.setValueAtTime(a,e),s.exponentialRampToValueAtTime(c,t),i===0&&s.setValueAtTime(0,t);break;case"logarithmic":const l=sl(n,i,256,"logarithmic");s.setValueCurveAtTime(l,e,o);break;case"sCurve":const u=sl(n,i,256,"sCurve");s.setValueCurveAtTime(u,e,o);break;default:s.setValueAtTime(n,e),s.linearRampToValueAtTime(i,t)}}function sl(s,e,t,n){const i=new Float32Array(t),r=e-s;for(let o=0;o<t;o++){const a=o/(t-1);let c;n==="logarithmic"?r>0?c=Math.log10(1+a*9)/Math.log10(10):c=1-Math.log10(1+(1-a)*9)/Math.log10(10):c=a*a*(3-2*a),i[o]=s+r*c}return i}const Bu=S.createContext(null),$u=S.createContext(null),qu=S.createContext(null),ju=S.createContext(null),Lu=S.createContext(null),Ey=({tracks:s,timescale:e=!1,mono:t=!1,waveHeight:n=80,samplesPerPixel:i=1024,zoomLevels:r,automaticScroll:o=!1,theme:a,controls:c={show:!1,width:0},annotationList:l,effects:u,onReady:h,onAnnotationUpdate:p,barWidth:d=1,barGap:f=0,progressBarWidth:_,children:m})=>{const g=_??d+f,[y,x]=S.useState([]),[w,v]=S.useState(null),[b,k]=S.useState(!1),[T,R]=S.useState(0),[I,A]=S.useState(0),[D,M]=S.useState([]),[N,q]=S.useState([]),[V,j]=S.useState([]),[G,B]=S.useState(0),[Z,X]=S.useState(0),[ee,pe]=S.useState(null),[ie,Q]=S.useState(o),[ye,Ee]=S.useState(l?.isContinuousPlay??!1),[z,Je]=S.useState(l?.linkEndpoints??!0),[lt,Vt]=S.useState(l?.editable??!1),U=S.useRef(null),ut=S.useRef(0),$e=S.useRef(0),L=S.useRef(null),H=S.useRef(0),be=S.useRef(0),we=S.useRef(null),ce=S.useRef(null),Ce=S.useRef(!1),He=S.useRef(l?.isContinuousPlay??!1),Ze=S.useRef(null),Pt=S.useRef(i),{timeFormat:oe,setTimeFormat:ge,formatTime:Ae}=Nu(),qe=Fu({initialSamplesPerPixel:i,zoomLevels:r}),Ge=qe.samplesPerPixel,{masterVolume:xt,setMasterVolume:Se}=Vu({playoutRef:U,initialVolume:1}),Lt=S.useCallback(se=>{He.current=se,Ee(se)},[]),ht=S.useCallback(se=>{Ze.current=se,v(se)},[]);S.useEffect(()=>{Ce.current=ie},[ie]),S.useEffect(()=>{if(!ce.current||!D.length)return;const se=ce.current,ue=Pt.current,C=Ge;if(ue===C)return;const O=c.show?c.width:0,P=se.clientWidth,J=se.scrollLeft+P/2-O,ve=D[0].sampleRate,he=J*ue/ve*ve/C,je=Math.max(0,he+O-P/2);se.scrollLeft=je,Pt.current=C},[Ge,D,c]);const It=S.useRef(null);S.useEffect(()=>{if(s.length===0){M([]),A(0),j([]),q([]),U.current&&(U.current.dispose(),U.current=null);return}const se=b,ue=$e.current;return U.current&&se&&(U.current.stop(),L.current&&(cancelAnimationFrame(L.current),L.current=null),It.current={position:ue}),(async()=>{try{const O=[];s.forEach(J=>{J.clips.length>0&&O.push(J.clips[0].audioBuffer)});let P=0;s.forEach(J=>{J.clips.forEach(ve=>{const fe=ve.audioBuffer.sampleRate,je=(ve.startSample+ve.durationSamples)/fe;P=Math.max(P,je)})}),M(O),A(P),j(s.map(J=>({name:J.name,muted:J.muted,soloed:J.soloed,volume:J.volume,pan:J.pan}))),U.current&&U.current.dispose();const te=new O_({effects:u});s.forEach((J,ve)=>{if(J.clips.length>0){const fe=J.clips[0].audioBuffer.sampleRate,he=Math.min(...J.clips.map(Ie=>Ie.startSample/fe)),je=Math.max(...J.clips.map(Ie=>(Ie.startSample+Ie.durationSamples)/fe)),Ve={id:`track-${ve}`,name:J.name,gain:J.volume,muted:J.muted,soloed:J.soloed,stereoPan:J.pan,startTime:he,endTime:je},Pe=J.clips.map(Ie=>{const Qt=Ie.audioBuffer.sampleRate;return{buffer:Ie.audioBuffer,startTime:Ie.startSample/Qt-he,duration:Ie.durationSamples/Qt,offset:Ie.offsetSamples/Qt,fadeIn:Ie.fadeIn,fadeOut:Ie.fadeOut,gain:Ie.gain}});te.addTrack({clips:Pe,track:Ve,effects:J.effects})}}),U.current=te,h?.()}catch(O){console.error("Error loading audio:",O)}})(),()=>{L.current&&cancelAnimationFrame(L.current),U.current&&U.current.dispose()}},[s,h,b]),S.useEffect(()=>{if(s.length===0)return;const se=16,ue=s.map(C=>C.clips.map(P=>{const te=P.audioBuffer.sampleRate,J=dv(P.audioBuffer,Ge,t,se,P.offsetSamples/te,P.durationSamples/te);return{clipId:P.id,trackName:C.name,peaks:J,startSample:P.startSample,durationSamples:P.durationSamples,fadeIn:P.fadeIn,fadeOut:P.fadeOut}}));q(ue)},[s,Ge,t]),S.useEffect(()=>{if(l?.annotations){const se=l.annotations.map(ue=>typeof ue.start=="number"?ue:bv(ue));x(se)}},[l]);const dt=S.useCallback(()=>{L.current&&(cancelAnimationFrame(L.current),L.current=null);const se=()=>{const ue=me().currentTime-H.current,C=be.current+ue;if($e.current=C,R(C),y.length>0){const O=y.find(P=>C>=P.start&&C<P.end);if(He.current){if(O&&O.id!==Ze.current)ht(O.id);else if(!O&&Ze.current!==null){const P=y[y.length-1];if(C>=P.end){U.current&&U.current.stop(),k(!1),$e.current=ut.current,R(ut.current),ht(null);return}}}else if(Ze.current){const P=y.find(te=>te.id===Ze.current);if(P&&C>=P.end){U.current&&U.current.stop(),k(!1),$e.current=ut.current,R(ut.current);return}}else O&&ht(O.id)}if(Ce.current&&ce.current&&D.length>0){const O=ce.current,P=D[0].sampleRate,te=C*P/Pt.current,J=O.clientWidth,ve=c.show?c.width:0,fe=te+ve,he=Math.max(0,fe-J/2);O.scrollLeft=he}if(we.current!==null&&C>=we.current){U.current&&U.current.stop(),k(!1),$e.current=we.current,R(we.current),we.current=null;return}if(C>=I){U.current&&U.current.stop(),k(!1),$e.current=ut.current,R(ut.current),ht(null);return}L.current=requestAnimationFrame(se)};L.current=requestAnimationFrame(se)},[I,D,Ge,y,ye]),et=S.useCallback(()=>{L.current&&(cancelAnimationFrame(L.current),L.current=null)},[]);S.useEffect(()=>{(async()=>{if(b&&L.current&&U.current)if(ye){const ue=$e.current;U.current.stop(),et(),await U.current.init(),U.current.setOnPlaybackComplete(()=>{});const O=me().currentTime;H.current=O,be.current=ue,U.current.play(O,ue),dt()}else et(),dt()})()},[ye,b,dt,et]),S.useEffect(()=>{(async()=>{if(It.current&&U.current){const{position:ue}=It.current;It.current=null,await U.current.init(),U.current.setOnPlaybackComplete(()=>{});const O=me().currentTime;H.current=O,be.current=ue,U.current.play(O,ue),k(!0),dt()}})()},[s,dt]);const as=S.useCallback(async(se,ue)=>{if(!U.current||D.length===0)return;await U.current.init(),await ta();const C=se??$e.current;ut.current=C,$e.current=C,U.current.setOnPlaybackComplete(()=>{}),U.current.stop(),et();const P=me().currentTime;H.current=P,be.current=C,we.current=ue!==void 0?C+ue:null,U.current.play(P,C,ue),k(!0),dt()},[D.length,dt,et]),En=S.useCallback(()=>{if(!U.current)return;const se=me().currentTime-H.current,ue=be.current+se;U.current.pause(),k(!1),et(),$e.current=ue,R(ue)},[et]),Mn=S.useCallback(()=>{U.current&&(U.current.stop(),k(!1),et(),$e.current=ut.current,R(ut.current),ht(null))},[et]),Ti=S.useCallback(se=>{const ue=Math.max(0,Math.min(se,I));$e.current=ue,R(ue),b&&U.current&&(U.current.stop(),et(),as(ue))},[I,b,as,et]),vs=S.useCallback((se,ue)=>{const C=[...V];if(C[se]={...C[se],muted:ue},j(C),U.current){const O=`track-${se}`;U.current.setMute(O,ue)}},[V]),On=S.useCallback((se,ue)=>{const C=[...V];if(C[se]={...C[se],soloed:ue},j(C),U.current){const O=`track-${se}`;U.current.setSolo(O,ue)}},[V]),Nn=S.useCallback((se,ue)=>{const C=[...V];if(C[se]={...C[se],volume:ue},j(C),U.current){const O=`track-${se}`,P=U.current.getTrack(O);P&&P.setVolume(ue)}},[V]),ki=S.useCallback((se,ue)=>{const C=[...V];if(C[se]={...C[se],pan:ue},j(C),U.current){const O=`track-${se}`,P=U.current.getTrack(O);P&&P.setPan(ue)}},[V]),Hr=S.useCallback((se,ue)=>{B(se),X(ue),$e.current=se,R(se),b&&U.current&&(U.current.stop(),U.current.play(me().currentTime,se))},[b]),Ai=S.useCallback(se=>{ce.current=se},[]),Yr=D[0]?.sampleRate||44100,Fn=e?30:0,Ii=s.length*n+Fn,Di={isPlaying:b,currentTime:T,currentTimeRef:$e,playbackStartTimeRef:H,audioStartPositionRef:be},Ri={continuousPlay:ye,linkEndpoints:z,annotationsEditable:lt,isAutomaticScroll:ie,annotations:y,activeAnnotationId:w,selectionStart:G,selectionEnd:Z,selectedTrackId:ee},Vn={play:as,pause:En,stop:Mn,seekTo:Ti,setCurrentTime:se=>{$e.current=se,R(se)},setTrackMute:vs,setTrackSolo:On,setTrackVolume:Nn,setTrackPan:ki,setSelection:Hr,setSelectedTrackId:pe,setTimeFormat:ge,formatTime:Ae,zoomIn:qe.zoomIn,zoomOut:qe.zoomOut,setMasterVolume:Se,setAutomaticScroll:se=>{Q(se)},setScrollContainer:Ai,scrollContainerRef:ce,setContinuousPlay:Lt,setLinkEndpoints:Je,setAnnotationsEditable:Vt,setAnnotations:x,setActiveAnnotationId:ht},Pn={duration:I,audioBuffers:D,peaksDataArray:N,trackStates:V,tracks:s,sampleRate:Yr,waveHeight:n,timeScaleHeight:Fn,minimumPlaylistHeight:Ii,controls:c,playoutRef:U,samplesPerPixel:Ge,timeFormat:oe,masterVolume:xt,canZoomIn:qe.canZoomIn,canZoomOut:qe.canZoomOut,barWidth:d,barGap:f,progressBarWidth:g},Ur={...Di,...Ri,...Vn,...Pn},Kr={...l0,...a};return E.jsx(W.ThemeProvider,{theme:Kr,children:E.jsx(Bu.Provider,{value:Di,children:E.jsx($u.Provider,{value:Ri,children:E.jsx(qu.Provider,{value:Vn,children:E.jsx(ju.Provider,{value:Pn,children:E.jsx(Lu.Provider,{value:Ur,children:m})})})})})})},At=()=>{const s=S.useContext(Bu);if(!s)throw new Error("usePlaybackAnimation must be used within WaveformPlaylistProvider");return s},os=()=>{const s=S.useContext($u);if(!s)throw new Error("usePlaylistState must be used within WaveformPlaylistProvider");return s},Qe=()=>{const s=S.useContext(qu);if(!s)throw new Error("usePlaylistControls must be used within WaveformPlaylistProvider");return s},wt=()=>{const s=S.useContext(ju);if(!s)throw new Error("usePlaylistData must be used within WaveformPlaylistProvider");return s},My=()=>{const s=S.useContext(Lu);if(!s)throw new Error("useWaveformPlaylist must be used within WaveformPlaylistProvider");return s},Oy=({className:s})=>{const{isPlaying:e,currentTimeRef:t}=At(),{selectionStart:n,selectionEnd:i}=os(),{play:r}=Qe(),o=async()=>{if(n!==i&&i>n){const a=i-n;await r(n,a)}else await r(t.current??0)};return E.jsx(rs,{onClick:o,disabled:e,className:s,children:"Play"})},Ny=({className:s})=>{const{isPlaying:e}=At(),{pause:t}=Qe();return E.jsx(rs,{onClick:t,disabled:!e,className:s,children:"Pause"})},Fy=({className:s})=>{const{isPlaying:e}=At(),{stop:t}=Qe();return E.jsx(rs,{onClick:t,disabled:!e,className:s,children:"Stop"})},Vy=({className:s})=>{const{isPlaying:e}=At(),{play:t,setCurrentTime:n}=Qe(),{playoutRef:i}=wt(),r=()=>{n(0),e&&i.current&&(i.current.stop(),t(0))};return E.jsx(rs,{onClick:r,className:s,children:"Rewind"})},Py=({className:s})=>{const{isPlaying:e}=At(),{play:t,setCurrentTime:n}=Qe(),{duration:i,playoutRef:r}=wt(),o=()=>{n(i),e&&r.current&&(r.current.stop(),t(i))};return E.jsx(rs,{onClick:o,className:s,children:"Fast Forward"})},Wy=({skipAmount:s=5,className:e})=>{const{currentTimeRef:t,isPlaying:n}=At(),{play:i,setCurrentTime:r}=Qe(),{playoutRef:o}=wt(),a=()=>{const c=Math.max(0,(t.current??0)-s);r(c),n&&o.current&&(o.current.stop(),i(c))};return E.jsx(rs,{onClick:a,className:e,children:"Skip Backward"})},By=({skipAmount:s=5,className:e})=>{const{currentTimeRef:t,isPlaying:n}=At(),{play:i,setCurrentTime:r}=Qe(),{duration:o,playoutRef:a}=wt(),c=()=>{const l=Math.min(o,(t.current??0)+s);r(l),n&&a.current&&(a.current.stop(),i(l))};return E.jsx(rs,{onClick:c,className:e,children:"Skip Forward"})},$y=({className:s,disabled:e})=>{const{zoomIn:t}=Qe(),{canZoomIn:n}=wt();return E.jsx(rs,{variant:"success",onClick:t,disabled:e||!n,className:s,children:"Zoom In"})},qy=({className:s,disabled:e})=>{const{zoomOut:t}=Qe(),{canZoomOut:n}=wt();return E.jsx(rs,{variant:"success",onClick:t,disabled:e||!n,className:s,children:"Zoom Out"})},jy=({className:s})=>{const{masterVolume:e}=wt(),{setMasterVolume:t}=Qe();return E.jsx(A0,{volume:e,onChange:t,className:s})},Ly=({className:s})=>{const{timeFormat:e}=wt(),{setTimeFormat:t}=Qe();return E.jsx(J0,{value:e,onChange:t,className:s})},zy=W.span`
1211
+ `,Ni=({level:e,peakLevel:t,width:n=200,height:r=20,className:a})=>{const s=Math.max(0,Math.min(1,e)),o=t!==void 0?Math.max(0,Math.min(1,t)):0;return E.jsxs(Pi,{$width:n,$height:r,className:a,children:[E.jsx(ji,{$level:s,$height:r}),t!==void 0&&o>0&&E.jsx(zi,{$peakLevel:o,$height:r}),E.jsxs(Oi,{$height:r,children:[E.jsx(Tr,{$position:60,$height:r}),E.jsx(Tr,{$position:85,$height:r})]})]})};c.memo(Ni);function Li(e,t,n,r={}){const{currentTime:a=0,audioConstraints:s,...o}=r,[l,i]=c.useState(!1),[u,d]=c.useState(null),{stream:b,devices:p,hasPermission:f,requestAccess:C,error:y}=Wi(),{level:g,peakLevel:m}=Zi(b),{isRecording:w,isPaused:x,duration:v,peaks:S,startRecording:I,stopRecording:$,pauseRecording:M,resumeRecording:T,error:_}=Fi(b,o),D=c.useCallback(async()=>{n&&(l||(await un(),i(!0)),await I())},[n,l,I]),V=c.useCallback(async()=>{const N=await $();if(N&&n){const Y=e.findIndex(H=>H.id===n);if(Y===-1)return;const ee=e[Y],re=Math.floor(a*N.sampleRate);let X=0;if(ee.clips.length>0){const H=ee.clips.map(U=>U.startSample+U.durationSamples);X=Math.max(...H)}const oe=Math.max(re,X),A={id:`clip-${Date.now()}`,audioBuffer:N,startSample:oe,durationSamples:N.length,offsetSamples:0,sampleRate:N.sampleRate,sourceDurationSamples:N.length,gain:1,name:`Recording ${new Date().toLocaleTimeString()}`},j=e.map((H,U)=>U===Y?{...H,clips:[...H.clips,A]}:H);t(j)}},[n,e,t,a,$]);c.useEffect(()=>{f&&p.length>0&&u===null&&d(p[0].deviceId)},[f,p.length]);const W=c.useCallback(async()=>{await C(void 0,s),await un(),i(!0)},[C,s]),O=c.useCallback(async N=>{d(N),await C(N,s),await un(),i(!0)},[C,s]);return{isRecording:w,isPaused:x,duration:v,level:g,peakLevel:m,error:y||_,stream:b,devices:p,hasPermission:f,selectedDevice:u,startRecording:D,stopRecording:V,pauseRecording:M,resumeRecording:T,requestMicAccess:W,changeDevice:O,recordingPeaks:S}}const Mt=[{id:"reverb",name:"Reverb",category:"reverb",description:"Simple convolution reverb with adjustable decay time",parameters:[{name:"decay",label:"Decay",type:"number",min:.1,max:10,step:.1,default:1.5,unit:"s"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"freeverb",name:"Freeverb",category:"reverb",description:"Classic Schroeder/Moorer reverb with room size and dampening",parameters:[{name:"roomSize",label:"Room Size",type:"number",min:0,max:1,step:.01,default:.7},{name:"dampening",label:"Dampening",type:"number",min:0,max:1e4,step:100,default:3e3,unit:"Hz"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"jcReverb",name:"JC Reverb",category:"reverb",description:"Attempt at Roland JC-120 chorus reverb emulation",parameters:[{name:"roomSize",label:"Room Size",type:"number",min:0,max:1,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"feedbackDelay",name:"Feedback Delay",category:"delay",description:"Delay line with feedback for echo effects",parameters:[{name:"delayTime",label:"Delay Time",type:"number",min:0,max:1,step:.01,default:.25,unit:"s"},{name:"feedback",label:"Feedback",type:"number",min:0,max:.95,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"pingPongDelay",name:"Ping Pong Delay",category:"delay",description:"Stereo delay bouncing between left and right channels",parameters:[{name:"delayTime",label:"Delay Time",type:"number",min:0,max:1,step:.01,default:.25,unit:"s"},{name:"feedback",label:"Feedback",type:"number",min:0,max:.95,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"chorus",name:"Chorus",category:"modulation",description:"Creates thickness by layering detuned copies of the signal",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:1.5,unit:"Hz"},{name:"delayTime",label:"Delay",type:"number",min:0,max:20,step:.5,default:3.5,unit:"ms"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:.7},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"phaser",name:"Phaser",category:"modulation",description:"Classic phaser effect using allpass filters",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:.5,unit:"Hz"},{name:"octaves",label:"Octaves",type:"number",min:1,max:6,step:1,default:3},{name:"baseFrequency",label:"Base Freq",type:"number",min:100,max:2e3,step:10,default:350,unit:"Hz"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:.5}]},{id:"tremolo",name:"Tremolo",category:"modulation",description:"Rhythmic volume modulation",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:20,step:.1,default:4,unit:"Hz"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:.5},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"vibrato",name:"Vibrato",category:"modulation",description:"Pitch modulation effect",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:20,step:.1,default:5,unit:"Hz"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:.1},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"autoPanner",name:"Auto Panner",category:"modulation",description:"Automatic left-right panning",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:1,unit:"Hz"},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:1},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"autoFilter",name:"Auto Filter",category:"filter",description:"Automated filter sweep with LFO",parameters:[{name:"frequency",label:"Rate",type:"number",min:.1,max:10,step:.1,default:1,unit:"Hz"},{name:"baseFrequency",label:"Base Freq",type:"number",min:20,max:2e3,step:10,default:200,unit:"Hz"},{name:"octaves",label:"Octaves",type:"number",min:.5,max:8,step:.5,default:2.6},{name:"depth",label:"Depth",type:"number",min:0,max:1,step:.01,default:1},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"autoWah",name:"Auto Wah",category:"filter",description:"Envelope follower filter effect",parameters:[{name:"baseFrequency",label:"Base Freq",type:"number",min:20,max:500,step:10,default:100,unit:"Hz"},{name:"octaves",label:"Octaves",type:"number",min:1,max:8,step:1,default:6},{name:"sensitivity",label:"Sensitivity",type:"number",min:-40,max:0,step:1,default:0,unit:"dB"},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"eq3",name:"3-Band EQ",category:"filter",description:"Three band equalizer with low, mid, and high controls",parameters:[{name:"low",label:"Low",type:"number",min:-24,max:24,step:.5,default:0,unit:"dB"},{name:"mid",label:"Mid",type:"number",min:-24,max:24,step:.5,default:0,unit:"dB"},{name:"high",label:"High",type:"number",min:-24,max:24,step:.5,default:0,unit:"dB"},{name:"lowFrequency",label:"Low Freq",type:"number",min:20,max:500,step:10,default:400,unit:"Hz"},{name:"highFrequency",label:"High Freq",type:"number",min:1e3,max:1e4,step:100,default:2500,unit:"Hz"}]},{id:"distortion",name:"Distortion",category:"distortion",description:"Wave shaping distortion effect",parameters:[{name:"distortion",label:"Drive",type:"number",min:0,max:1,step:.01,default:.4},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"bitCrusher",name:"Bit Crusher",category:"distortion",description:"Reduces bit depth for lo-fi digital texture",parameters:[{name:"bits",label:"Bits",type:"number",min:1,max:16,step:1,default:4},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"chebyshev",name:"Chebyshev",category:"distortion",description:"Waveshaping distortion using Chebyshev polynomials",parameters:[{name:"order",label:"Order",type:"number",min:1,max:100,step:1,default:50},{name:"wet",label:"Mix",type:"number",min:0,max:1,step:.01,default:1}]},{id:"compressor",name:"Compressor",category:"dynamics",description:"Dynamic range compressor",parameters:[{name:"threshold",label:"Threshold",type:"number",min:-60,max:0,step:1,default:-24,unit:"dB"},{name:"ratio",label:"Ratio",type:"number",min:1,max:20,step:.5,default:4},{name:"attack",label:"Attack",type:"number",min:0,max:1,step:.001,default:.003,unit:"s"},{name:"release",label:"Release",type:"number",min:0,max:1,step:.01,default:.25,unit:"s"},{name:"knee",label:"Knee",type:"number",min:0,max:40,step:1,default:30,unit:"dB"}]},{id:"limiter",name:"Limiter",category:"dynamics",description:"Hard limiter to prevent clipping",parameters:[{name:"threshold",label:"Threshold",type:"number",min:-12,max:0,step:.5,default:-6,unit:"dB"}]},{id:"gate",name:"Gate",category:"dynamics",description:"Noise gate to silence signal below threshold",parameters:[{name:"threshold",label:"Threshold",type:"number",min:-100,max:0,step:1,default:-40,unit:"dB"},{name:"attack",label:"Attack",type:"number",min:0,max:.3,step:.001,default:.001,unit:"s"},{name:"release",label:"Release",type:"number",min:0,max:.5,step:.01,default:.1,unit:"s"}]},{id:"stereoWidener",name:"Stereo Widener",category:"spatial",description:"Expands or narrows the stereo image",parameters:[{name:"width",label:"Width",type:"number",min:0,max:1,step:.01,default:.5}]}],Zn=e=>Mt.find(t=>t.id===e),Xi=e=>Mt.filter(t=>t.category===e),Hi=[{id:"reverb",name:"Reverb"},{id:"delay",name:"Delay"},{id:"modulation",name:"Modulation"},{id:"filter",name:"Filter"},{id:"distortion",name:"Distortion"},{id:"dynamics",name:"Dynamics"},{id:"spatial",name:"Spatial"}],Gi={reverb:P.Reverb,freeverb:P.Freeverb,jcReverb:P.JCReverb,feedbackDelay:P.FeedbackDelay,pingPongDelay:P.PingPongDelay,chorus:P.Chorus,phaser:P.Phaser,tremolo:P.Tremolo,vibrato:P.Vibrato,autoPanner:P.AutoPanner,autoFilter:P.AutoFilter,autoWah:P.AutoWah,eq3:P.EQ3,distortion:P.Distortion,bitCrusher:P.BitCrusher,chebyshev:P.Chebyshev,compressor:P.Compressor,limiter:P.Limiter,gate:P.Gate,stereoWidener:P.StereoWidener};let Yi=0;const Ki=()=>`effect_${Date.now()}_${++Yi}`;function _t(e,t){const n=Gi[e.id];if(!n)throw new Error(`Unknown effect type: ${e.id}`);const r={};e.parameters.forEach(o=>{const l=t?.[o.name]??o.default;r[o.name]=l});const a=new n(r),s=Ki();return{effect:a,id:e.id,instanceId:s,dispose(){try{a.disconnect(),a.dispose()}catch{}},setParameter(o,l){o==="wet"&&a.wet?a.wet.value=l:a[o]!==void 0&&(a[o]?.value!==void 0?a[o].value=l:a[o]=l)},getParameter(o){if(o==="wet"&&a.wet)return a.wet.value;if(a[o]!==void 0)return a[o]?.value!==void 0?a[o].value:a[o]},connect(o){a.connect(o)},disconnect(){try{a.disconnect()}catch{}}}}function Ui(e){if(e.length===0)throw new Error("Cannot create effect chain with no effects");for(let t=0;t<e.length-1;t++)e[t].effect.connect(e[t+1].effect);return{input:e[0].effect,output:e[e.length-1].effect,dispose(){e.forEach(t=>t.dispose())}}}function Ji(e=256){const[t,n]=c.useState([]),r=c.useRef(t);r.current=t;const a=c.useRef(new Map),s=c.useRef(null),o=c.useRef(null),l=c.useCallback(g=>{const m=o.current;if(!m)return;const{masterGainNode:w,destination:x,analyserNode:v}=m;try{w.disconnect()}catch{}const S=g.map(I=>a.current.get(I.instanceId)).filter(I=>I!==void 0);if(S.length===0)w.connect(v),v.connect(x);else{let I=w;S.forEach($=>{try{$.disconnect()}catch{}I.connect($.effect),I=$.effect}),I.connect(v),v.connect(x)}},[]),i=c.useCallback(g=>{const m=Zn(g);if(!m){console.error(`Unknown effect: ${g}`);return}const w={};m.parameters.forEach(S=>{w[S.name]=S.default});const x=_t(m,w);a.current.set(x.instanceId,x);const v={instanceId:x.instanceId,effectId:m.id,definition:m,params:w,bypassed:!1};n(S=>[...S,v])},[]),u=c.useCallback(g=>{const m=a.current.get(g);m&&(m.dispose(),a.current.delete(g)),n(w=>w.filter(x=>x.instanceId!==g))},[]),d=c.useCallback((g,m,w)=>{const x=a.current.get(g);x&&x.setParameter(m,w),n(v=>v.map(S=>S.instanceId===g?{...S,params:{...S.params,[m]:w}}:S))},[]),b=c.useCallback(g=>{const m=r.current.find(v=>v.instanceId===g);if(!m)return;const w=!m.bypassed,x=a.current.get(g);if(x){const v=m.params.wet??1;x.setParameter("wet",w?0:v)}n(v=>v.map(S=>S.instanceId===g?{...S,bypassed:w}:S))},[]),p=c.useCallback((g,m)=>{n(w=>{const x=[...w],[v]=x.splice(g,1);return x.splice(m,0,v),x})},[]),f=c.useCallback(()=>{a.current.forEach(g=>g.dispose()),a.current.clear(),n([])},[]);c.useEffect(()=>{l(t)},[t,l]);const C=c.useCallback((g,m,w)=>{const x=new P.Analyser("fft",e);s.current=x,o.current={masterGainNode:g,destination:m,analyserNode:x};const S=r.current.map(I=>a.current.get(I.instanceId)).filter(I=>I!==void 0);if(S.length===0)g.connect(x),x.connect(m);else{let I=g;S.forEach($=>{I.connect($.effect),I=$.effect}),I.connect(x),x.connect(m)}return function(){x.dispose(),s.current=null,o.current=null}},[e]);c.useEffect(()=>()=>{a.current.forEach(g=>g.dispose()),a.current.clear()},[]);const y=c.useCallback(()=>{const g=t.filter(m=>!m.bypassed);if(g.length!==0)return(m,w,x)=>{const v=[];for(const S of g){const I=_t(S.definition,S.params);v.push(I)}if(v.length===0)m.connect(w);else{let S=m;v.forEach(I=>{S.connect(I.effect),S=I.effect}),S.connect(w)}return function(){v.forEach(I=>I.dispose())}}},[t]);return{activeEffects:t,availableEffects:Mt,addEffect:i,removeEffect:u,updateParameter:d,toggleBypass:b,reorderEffects:p,clearAllEffects:f,masterEffects:C,createOfflineEffectsFunction:y,analyserRef:s}}function qi(){const[e,t]=c.useState(new Map),n=c.useRef(new Map),r=c.useRef(new Map),a=c.useCallback((f,C)=>{const y=r.current.get(f);if(!y)return;const{graphEnd:g,masterGainNode:m}=y,w=n.current.get(f);try{g.disconnect()}catch{}const x=C.map(v=>w?.get(v.instanceId)).filter(v=>v!==void 0);if(x.length===0)g.connect(m);else{let v=g;x.forEach(S=>{try{S.disconnect()}catch{}v.connect(S.effect),v=S.effect}),v.connect(m)}},[]),s=c.useCallback((f,C)=>{const y=Zn(C);if(!y){console.error(`Unknown effect: ${C}`);return}const g={};y.parameters.forEach(x=>{g[x.name]=x.default});const m=_t(y,g);n.current.has(f)||n.current.set(f,new Map),n.current.get(f).set(m.instanceId,m);const w={instanceId:m.instanceId,effectId:y.id,definition:y,params:g,bypassed:!1};t(x=>{const v=new Map(x),S=v.get(f)||[];return v.set(f,[...S,w]),v})},[]),o=c.useCallback((f,C)=>{const y=n.current.get(f),g=y?.get(C);g&&(g.dispose(),y?.delete(C)),t(m=>{const w=new Map(m),x=w.get(f)||[];return w.set(f,x.filter(v=>v.instanceId!==C)),w})},[]),l=c.useCallback((f,C,y,g)=>{const w=n.current.get(f)?.get(C);w&&w.setParameter(y,g),t(x=>{const v=new Map(x),S=v.get(f)||[];return v.set(f,S.map(I=>I.instanceId===C?{...I,params:{...I.params,[y]:g}}:I)),v})},[]),i=c.useCallback((f,C)=>{const g=(d.current.get(f)||[]).find(v=>v.instanceId===C);if(!g)return;const m=!g.bypassed,x=n.current.get(f)?.get(C);if(x){const v=g.params.wet??1;x.setParameter("wet",m?0:v)}t(v=>{const S=new Map(v),I=S.get(f)||[];return S.set(f,I.map($=>$.instanceId===C?{...$,bypassed:m}:$)),S})},[]),u=c.useCallback(f=>{const C=n.current.get(f);C&&(C.forEach(y=>y.dispose()),C.clear()),t(y=>{const g=new Map(y);return g.set(f,[]),g})},[]),d=c.useRef(e);d.current=e;const b=c.useCallback(f=>(C,y,g)=>{r.current.set(f,{graphEnd:C,masterGainNode:y});const m=d.current.get(f)||[],w=n.current.get(f),x=m.map(v=>w?.get(v.instanceId)).filter(v=>v!==void 0);if(x.length===0)C.connect(y);else{let v=C;x.forEach(S=>{v.connect(S.effect),v=S.effect}),v.connect(y)}return function(){r.current.delete(f)}},[]);c.useEffect(()=>{e.forEach((f,C)=>{a(C,f)})},[e,a]),c.useEffect(()=>()=>{n.current.forEach(f=>{f.forEach(C=>C.dispose()),f.clear()}),n.current.clear()},[]);const p=c.useCallback(f=>{const y=(e.get(f)||[]).filter(g=>!g.bypassed);if(y.length!==0)return(g,m,w)=>{const x=[];for(const v of y){const S=_t(v.definition,v.params);x.push(S)}if(x.length===0)g.connect(m);else{let v=g;x.forEach(S=>{v.connect(S.effect),v=S.effect}),v.connect(m)}return function(){x.forEach(S=>S.dispose())}}},[e]);return{trackEffectsState:e,addEffectToTrack:s,removeEffectFromTrack:o,updateTrackEffectParameter:l,toggleBypass:i,clearTrackEffects:u,getTrackEffectsFunction:b,createOfflineTrackEffectsFunction:p,availableEffects:Mt}}function Qi(e,t={}){const{bitDepth:n=16}=t,r=e.numberOfChannels,a=e.sampleRate,s=e.length,o=n/8,l=r*o,i=a*l,u=s*l,d=44,b=d+u,p=new ArrayBuffer(b),f=new DataView(p);Lt(f,0,"RIFF"),f.setUint32(4,b-8,!0),Lt(f,8,"WAVE"),Lt(f,12,"fmt "),f.setUint32(16,16,!0),f.setUint16(20,n===32?3:1,!0),f.setUint16(22,r,!0),f.setUint32(24,a,!0),f.setUint32(28,i,!0),f.setUint16(32,l,!0),f.setUint16(34,n,!0),Lt(f,36,"data"),f.setUint32(40,u,!0);const C=[];for(let g=0;g<r;g++)C.push(e.getChannelData(g));let y=d;if(n===16)for(let g=0;g<s;g++)for(let m=0;m<r;m++){const w=C[m][g],x=Math.max(-1,Math.min(1,w)),v=x<0?x*32768:x*32767;f.setInt16(y,v,!0),y+=2}else for(let g=0;g<s;g++)for(let m=0;m<r;m++)f.setFloat32(y,C[m][g],!0),y+=4;return new Blob([p],{type:"audio/wav"})}function Lt(e,t,n){for(let r=0;r<n.length;r++)e.setUint8(t+r,n.charCodeAt(r))}function el(e,t){const n=URL.createObjectURL(e),r=document.createElement("a");r.href=n,r.download=t,r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function da(){const[e,t]=c.useState(!1),[n,r]=c.useState(0),[a,s]=c.useState(null);return{exportWav:c.useCallback(async(l,i,u={})=>{const{filename:d="export",mode:b="master",trackIndex:p,autoDownload:f=!0,applyEffects:C=!0,effectsFunction:y,createOfflineTrackEffects:g,bitDepth:m=16,onProgress:w}=u;t(!0),r(0),s(null);try{if(l.length===0)throw new Error("No tracks to export");if(b==="individual"&&(p===void 0||p<0||p>=l.length))throw new Error("Invalid track index for individual export");const x=l[0].clips[0]?.sampleRate||44100;let v=0;for(const D of l)for(const V of D.clips){const W=V.startSample+V.durationSamples;v=Math.max(v,W)}v+=Math.round(x*.1);const S=v/x,I=b==="individual"?[{track:l[p],state:i[p],index:p}]:l.map((D,V)=>({track:D,state:i[V],index:V})),$=i.some(D=>D.soloed),M=!!g;let T;if((y||M)&&C)T=await tl(I,i,$,S,x,y,g,D=>{r(D),w?.(D)});else{const D=new OfflineAudioContext(2,v,x);let V=0;const W=I.reduce((O,{track:N})=>O+N.clips.length,0);for(const{track:O,state:N}of I)if(!(N.muted&&!N.soloed)&&!($&&!N.soloed))for(const Y of O.clips){await rl(D,Y,N,x,C),V++;const ee=V/W*.5;r(ee),w?.(ee)}r(.5),w?.(.5),T=await D.startRendering()}r(.9),w?.(.9);const _=Qi(T,{bitDepth:m});if(r(1),w?.(1),f){const D=b==="individual"?`${d}_${l[p].name}`:d;el(_,`${D}.wav`)}return{audioBuffer:T,blob:_,duration:S}}catch(x){const v=x instanceof Error?x.message:"Export failed";throw s(v),x}finally{t(!1)}},[]),isExporting:e,progress:n,error:a}}async function tl(e,t,n,r,a,s,o,l){const{Offline:i,Volume:u,Gain:d,Panner:b,Player:p,ToneAudioBuffer:f}=await import("tone");l(.1);let C;try{C=await i(async({transport:y,destination:g})=>{const m=new u(0);let w;s?w=s(m,g,!0):m.connect(g);for(const{track:x,state:v}of e){if(v.muted&&!v.soloed||n&&!v.soloed)continue;const S=new u(nl(v.volume)),I=new b(v.pan),$=new d(v.muted?0:1),M=o?.(x.id);M?M($,m,!0):$.connect(m),I.connect($),S.connect(I);for(const T of x.clips){const{audioBuffer:_,startSample:D,durationSamples:V,offsetSamples:W,gain:O,fadeIn:N,fadeOut:Y}=T,ee=D/a,re=V/a,X=W/a,oe=new f(_),A=new p(oe),j=new d(O);if(A.connect(j),j.connect(S),N){const H=ee,U=ee+N.duration,ge=j.gain._param;ge.setValueAtTime(0,H),ge.linearRampToValueAtTime(O,U)}if(Y){const H=ee+re-Y.duration,U=ee+re,ge=j.gain._param;ge.setValueAtTime(O,H),ge.linearRampToValueAtTime(0,U)}A.start(ee,X,re)}}y.start(0)},r,2,a)}catch(y){throw y instanceof Error?y:new Error(`Tone.Offline rendering failed: ${String(y)}`)}return l(.9),C.get()}function nl(e){return 20*Math.log10(Math.max(e,1e-4))}async function rl(e,t,n,r,a){const{audioBuffer:s,startSample:o,durationSamples:l,offsetSamples:i,gain:u,fadeIn:d,fadeOut:b}=t;if(!s){console.warn(`Skipping clip "${t.name||t.id}" - no audioBuffer for export`);return}const p=o/r,f=l/r,C=i/r,y=e.createBufferSource();y.buffer=s;const g=e.createGain(),m=u*n.volume,w=e.createStereoPanner();if(w.pan.value=n.pan,y.connect(g),g.connect(w),w.connect(e.destination),a){if(d?g.gain.setValueAtTime(0,p):g.gain.setValueAtTime(m,p),d){const x=p,v=p+d.duration;_r(g.gain,x,v,0,m,d.type||"linear")}if(b){const x=p+f-b.duration,v=p+f;(!d||d.duration<f-b.duration)&&g.gain.setValueAtTime(m,x),_r(g.gain,x,v,m,0,b.type||"linear")}}else g.gain.setValueAtTime(m,p);y.start(p,C,f)}function _r(e,t,n,r,a,s){const o=n-t;if(!(o<=0))switch(s){case"linear":e.setValueAtTime(r,t),e.linearRampToValueAtTime(a,n);break;case"exponential":const l=Math.max(r,1e-4),i=Math.max(a,1e-4);e.setValueAtTime(l,t),e.exponentialRampToValueAtTime(i,n),a===0&&e.setValueAtTime(0,n);break;case"logarithmic":const u=Mr(r,a,256,"logarithmic");e.setValueCurveAtTime(u,t,o);break;case"sCurve":const d=Mr(r,a,256,"sCurve");e.setValueCurveAtTime(d,t,o);break;default:e.setValueAtTime(r,t),e.linearRampToValueAtTime(a,n)}}function Mr(e,t,n,r){const a=new Float32Array(n),s=t-e;for(let o=0;o<n;o++){const l=o/(n-1);let i;r==="logarithmic"?s>0?i=Math.log10(1+l*9)/Math.log10(10):i=1-Math.log10(1+(1-l)*9)/Math.log10(10):i=l*l*(3-2*l),a[o]=e+s*i}return a}const fa=c.createContext(null),ma=c.createContext(null),ha=c.createContext(null),pa=c.createContext(null),ga=c.createContext(null),al=({tracks:e,timescale:t=!1,mono:n=!1,waveHeight:r=80,samplesPerPixel:a=1024,zoomLevels:s,automaticScroll:o=!1,theme:l,controls:i={show:!1,width:0},annotationList:u,effects:d,onReady:b,onAnnotationUpdate:p,barWidth:f=1,barGap:C=0,progressBarWidth:y,children:g})=>{const m=y??f+C,[w,x]=c.useState([]),[v,S]=c.useState(null),[I,$]=c.useState(!1),[M,T]=c.useState(0),[_,D]=c.useState(0),[V,W]=c.useState([]),[O,N]=c.useState([]),[Y,ee]=c.useState([]),[re,X]=c.useState(0),[oe,A]=c.useState(0),[j,H]=c.useState(null),[U,ge]=c.useState(o),[Be,ie]=c.useState(u?.isContinuousPlay??!1),[Te,ue]=c.useState(u?.linkEndpoints??!0),[me,gt]=c.useState(u?.editable??!1),[dt,de]=c.useState(!1),[at,ot]=c.useState(0),[Je,st]=c.useState(0),z=c.useRef(null),Re=c.useRef(0),xe=c.useRef(0),be=c.useRef(null),Ze=c.useRef(Y),Xe=c.useRef(0),Pe=c.useRef(0),He=c.useRef(null),Ge=c.useRef(null),ft=c.useRef(!1),At=c.useRef(u?.isContinuousPlay??!1),K=c.useRef(null),te=c.useRef(a),he=c.useRef(!1),ye=c.useRef(0),Ee=c.useRef(0),Ae=c.useRef(0),le=c.useRef(0),{timeFormat:Ye,setTimeFormat:Ke,formatTime:ze}=ra(),_e=aa({initialSamplesPerPixel:a,zoomLevels:s}),Ie=_e.samplesPerPixel,{masterVolume:qe,setMasterVolume:mt}=oa({playoutRef:z,initialVolume:1}),Bt=c.useCallback(B=>{At.current=B,ie(B)},[]),it=c.useCallback(B=>{K.current=B,S(B)},[]),Ft=c.useCallback(B=>{he.current=B,de(B)},[]),ht=c.useCallback((B,L)=>{Ae.current=B,le.current=L,ot(B),st(L)},[]),Wt=c.useCallback(()=>{const B=ye.current,L=Ee.current;B!==L&&L>B&&ht(B,L)},[ht]),Zt=c.useCallback(()=>{ht(0,0)},[ht]);c.useEffect(()=>{ft.current=U},[U]),c.useEffect(()=>{Ze.current=Y},[Y]),c.useEffect(()=>{ye.current=re,Ee.current=oe},[re,oe]),c.useEffect(()=>{if(!Ge.current||!V.length)return;const B=Ge.current,L=te.current,q=Ie;if(L===q)return;const fe=i.show?i.width:0,G=B.clientWidth,Ue=B.scrollLeft+G/2-fe,Ce=V[0].sampleRate,Ve=Ue*L/Ce*Ce/q,tt=Math.max(0,Ve+fe-G/2);B.scrollLeft=tt,te.current=q},[Ie,V,i]);const bt=c.useRef(null);c.useEffect(()=>{if(e.length===0){W([]),D(0),ee([]),N([]),z.current&&(z.current.dispose(),z.current=null);return}const B=I,L=xe.current;return z.current&&B&&(z.current.stop(),be.current&&(cancelAnimationFrame(be.current),be.current=null),bt.current={position:L}),(async()=>{try{const fe=[];e.forEach(Ce=>{Ce.clips.length>0&&Ce.clips[0].audioBuffer&&fe.push(Ce.clips[0].audioBuffer)});let G=0;e.forEach(Ce=>{Ce.clips.forEach($e=>{const Ve=$e.sampleRate,Pt=($e.startSample+$e.durationSamples)/Ve;G=Math.max(G,Pt)})}),W(fe),D(G),ee(Ce=>Ce.length===e.length?Ce.map(($e,Ve)=>({...$e,name:e[Ve].name})):e.map($e=>({name:$e.name,muted:$e.muted,soloed:$e.soloed,volume:$e.volume,pan:$e.pan}))),z.current&&z.current.dispose();const Se=new Ba({effects:d}),Ue=Ze.current;e.forEach((Ce,$e)=>{const Ve=Ce.clips.filter(tt=>tt.audioBuffer);if(Ve.length>0){const tt=Ve[0].sampleRate,Pt=Math.min(...Ve.map(je=>je.startSample/tt)),ba=Math.max(...Ve.map(je=>(je.startSample+je.durationSamples)/tt)),Vt=Ue[$e],va={id:`track-${$e}`,name:Ce.name,gain:Vt?.volume??Ce.volume,muted:Vt?.muted??Ce.muted,soloed:Vt?.soloed??Ce.soloed,stereoPan:Vt?.pan??Ce.pan,startTime:Pt,endTime:ba},Ca=Ve.map(je=>{const ln=je.sampleRate;return{buffer:je.audioBuffer,startTime:je.startSample/ln-Pt,duration:je.durationSamples/ln,offset:je.offsetSamples/ln,fadeIn:je.fadeIn,fadeOut:je.fadeOut,gain:je.gain}});Se.addTrack({clips:Ca,track:va,effects:Ce.effects})}}),Se.applyInitialSoloState(),z.current=Se,b?.()}catch(fe){console.error("Error loading audio:",fe)}})(),()=>{be.current&&cancelAnimationFrame(be.current),z.current&&z.current.dispose()}},[e,b,I]),c.useEffect(()=>{if(e.length===0)return;const B=16,L=e.map(q=>q.clips.map(G=>{if(G.waveformData){const Ue=$s(G.waveformData,Ie,0,G.offsetSamples,G.durationSamples);return{clipId:G.id,trackName:q.name,peaks:{length:Ue.length,data:[Ue.data],bits:Ue.bits},startSample:G.startSample,durationSamples:G.durationSamples,fadeIn:G.fadeIn,fadeOut:G.fadeOut}}if(!G.audioBuffer)return console.warn(`Clip "${G.name||G.id}" has neither waveformData nor audioBuffer - rendering empty`),{clipId:G.id,trackName:q.name,peaks:{length:0,data:[],bits:B},startSample:G.startSample,durationSamples:G.durationSamples,fadeIn:G.fadeIn,fadeOut:G.fadeOut};const Se=ls(G.audioBuffer,Ie,n,B,G.offsetSamples,G.durationSamples);return{clipId:G.id,trackName:q.name,peaks:Se,startSample:G.startSample,durationSamples:G.durationSamples,fadeIn:G.fadeIn,fadeOut:G.fadeOut}}));N(L)},[e,Ie,n]),c.useEffect(()=>{if(u?.annotations){const B=u.annotations.map(L=>typeof L.start=="number"?L:Fs(L));x(B)}},[u]);const Qe=c.useCallback(()=>{be.current&&(cancelAnimationFrame(be.current),be.current=null);const B=()=>{const L=P.getContext().currentTime-Xe.current,q=Pe.current+L;if(xe.current=q,T(q),w.length>0){const G=w.find(Se=>q>=Se.start&&q<Se.end);if(At.current){if(G&&G.id!==K.current)it(G.id);else if(!G&&K.current!==null){const Se=w[w.length-1];if(q>=Se.end){z.current&&z.current.stop(),$(!1),xe.current=Re.current,T(Re.current),it(null);return}}}else if(K.current){const Se=w.find(Ue=>Ue.id===K.current);if(Se&&q>=Se.end){z.current&&z.current.stop(),$(!1),xe.current=Re.current,T(Re.current);return}}else G&&it(G.id)}if(ft.current&&Ge.current&&V.length>0){const G=Ge.current,Se=V[0].sampleRate,Ue=q*Se/te.current,Ce=G.clientWidth,$e=i.show?i.width:0,Ve=Ue+$e,tt=Math.max(0,Ve-Ce/2);G.scrollLeft=tt}if(He.current!==null&&q>=He.current){z.current&&z.current.stop(),$(!1),xe.current=He.current,T(He.current),He.current=null;return}const fe=Ae.current!==le.current&&le.current>Ae.current;if(he.current&&fe&&q>=le.current){z.current?.stop();const Se=P.getContext().currentTime;Xe.current=Se,Pe.current=Ae.current,xe.current=Ae.current,z.current?.play(Se,Ae.current),be.current=requestAnimationFrame(B);return}if(q>=_){z.current&&z.current.stop(),$(!1),xe.current=Re.current,T(Re.current),it(null);return}be.current=requestAnimationFrame(B)};be.current=requestAnimationFrame(B)},[_,V,Ie,w,Be]),Fe=c.useCallback(()=>{be.current&&(cancelAnimationFrame(be.current),be.current=null)},[]);c.useEffect(()=>{(async()=>{if(I&&be.current&&z.current)if(Be){const L=xe.current;z.current.stop(),Fe(),await z.current.init(),z.current.setOnPlaybackComplete(()=>{});const fe=P.getContext().currentTime;Xe.current=fe,Pe.current=L,z.current.play(fe,L),Qe()}else Fe(),Qe()})()},[Be,I,Qe,Fe]),c.useEffect(()=>{(async()=>{if(bt.current&&z.current){const{position:L}=bt.current;bt.current=null,await z.current.init(),z.current.setOnPlaybackComplete(()=>{});const fe=P.getContext().currentTime;Xe.current=fe,Pe.current=L,z.current.play(fe,L),$(!0),Qe()}})()},[e,Qe]);const vt=c.useCallback(async(B,L)=>{if(!z.current||V.length===0)return;await z.current.init(),await P.start();const q=B??xe.current;Re.current=q,xe.current=q,z.current.setOnPlaybackComplete(()=>{}),z.current.stop(),Fe();const G=P.getContext().currentTime;Xe.current=G,Pe.current=q,He.current=L!==void 0?q+L:null,z.current.play(G,q,L),$(!0),Qe()},[V.length,Qe,Fe]),rn=c.useCallback(()=>{if(!z.current)return;const B=P.getContext().currentTime-Xe.current,L=Pe.current+B;z.current.pause(),$(!1),Fe(),xe.current=L,T(L)},[Fe]),an=c.useCallback(()=>{z.current&&(z.current.stop(),$(!1),Fe(),xe.current=Re.current,T(Re.current),it(null))},[Fe]),on=c.useCallback(B=>{const L=Math.max(0,Math.min(B,_));xe.current=L,T(L),I&&z.current&&(z.current.stop(),Fe(),vt(L))},[_,I,vt,Fe]),sn=c.useCallback((B,L)=>{const q=[...Y];if(q[B]={...q[B],muted:L},ee(q),z.current){const fe=`track-${B}`;z.current.setMute(fe,L)}},[Y]),h=c.useCallback((B,L)=>{const q=[...Y];if(q[B]={...q[B],soloed:L},ee(q),z.current){const fe=`track-${B}`;z.current.setSolo(fe,L)}},[Y]),R=c.useCallback((B,L)=>{const q=[...Y];if(q[B]={...q[B],volume:L},ee(q),z.current){const fe=`track-${B}`,G=z.current.getTrack(fe);G&&G.setVolume(L)}},[Y]),F=c.useCallback((B,L)=>{const q=[...Y];if(q[B]={...q[B],pan:L},ee(q),z.current){const fe=`track-${B}`,G=z.current.getTrack(fe);G&&G.setPan(L)}},[Y]),J=c.useCallback((B,L)=>{X(B),A(L),xe.current=B,T(B),I&&z.current&&(z.current.stop(),z.current.play(P.getContext().currentTime,B))},[I]),se=c.useCallback(B=>{Ge.current=B},[]),ce=V[0]?.sampleRate||44100,ae=t?30:0,ne=e.length*r+ae,ke={isPlaying:I,currentTime:M,currentTimeRef:xe,playbackStartTimeRef:Xe,audioStartPositionRef:Pe},pe={continuousPlay:Be,linkEndpoints:Te,annotationsEditable:me,isAutomaticScroll:U,isLoopEnabled:dt,annotations:w,activeAnnotationId:v,selectionStart:re,selectionEnd:oe,selectedTrackId:j,loopStart:at,loopEnd:Je},ve={play:vt,pause:rn,stop:an,seekTo:on,setCurrentTime:B=>{xe.current=B,T(B)},setTrackMute:sn,setTrackSolo:h,setTrackVolume:R,setTrackPan:F,setSelection:J,setSelectedTrackId:H,setTimeFormat:Ke,formatTime:ze,zoomIn:_e.zoomIn,zoomOut:_e.zoomOut,setMasterVolume:mt,setAutomaticScroll:B=>{ge(B)},setScrollContainer:se,scrollContainerRef:Ge,setContinuousPlay:Bt,setLinkEndpoints:ue,setAnnotationsEditable:gt,setAnnotations:x,setActiveAnnotationId:it,setLoopEnabled:Ft,setLoopRegion:ht,setLoopRegionFromSelection:Wt,clearLoopRegion:Zt},Me={duration:_,audioBuffers:V,peaksDataArray:O,trackStates:Y,tracks:e,sampleRate:ce,waveHeight:r,timeScaleHeight:ae,minimumPlaylistHeight:ne,controls:i,playoutRef:z,samplesPerPixel:Ie,timeFormat:Ye,masterVolume:qe,canZoomIn:_e.canZoomIn,canZoomOut:_e.canZoomOut,barWidth:f,barGap:C,progressBarWidth:m},lt={...ke,...pe,...ve,...Me},et={...Qa,...l};return Z.jsx(k.ThemeProvider,{theme:et,children:Z.jsx(fa.Provider,{value:ke,children:Z.jsx(ma.Provider,{value:pe,children:Z.jsx(ha.Provider,{value:ve,children:Z.jsx(pa.Provider,{value:Me,children:Z.jsx(ga.Provider,{value:lt,children:g})})})})})})},We=()=>{const e=c.useContext(fa);if(!e)throw new Error("usePlaybackAnimation must be used within WaveformPlaylistProvider");return e},Le=()=>{const e=c.useContext(ma);if(!e)throw new Error("usePlaylistState must be used within WaveformPlaylistProvider");return e},we=()=>{const e=c.useContext(ha);if(!e)throw new Error("usePlaylistControls must be used within WaveformPlaylistProvider");return e},De=()=>{const e=c.useContext(pa);if(!e)throw new Error("usePlaylistData must be used within WaveformPlaylistProvider");return e},ol=()=>{const e=c.useContext(ga);if(!e)throw new Error("useWaveformPlaylist must be used within WaveformPlaylistProvider");return e},sl=({className:e})=>{const{isPlaying:t,currentTimeRef:n}=We(),{selectionStart:r,selectionEnd:a,isLoopEnabled:s}=Le(),{play:o}=we(),l=async()=>{if(r!==a&&a>r)if(s)await o(r);else{const u=a-r;await o(r,u)}else await o(n.current??0)};return Z.jsx(Ne,{onClick:l,disabled:t,className:e,children:"Play"})},il=({className:e})=>{const{isPlaying:t}=We(),{pause:n}=we();return Z.jsx(Ne,{onClick:n,disabled:!t,className:e,children:"Pause"})},ll=({className:e})=>{const{isPlaying:t}=We(),{stop:n}=we();return Z.jsx(Ne,{onClick:n,disabled:!t,className:e,children:"Stop"})},cl=({className:e})=>{const{isPlaying:t}=We(),{play:n,setCurrentTime:r}=we(),{playoutRef:a}=De(),s=()=>{r(0),t&&a.current&&(a.current.stop(),n(0))};return Z.jsx(Ne,{onClick:s,className:e,children:"Rewind"})},ul=({className:e})=>{const{isPlaying:t}=We(),{play:n,setCurrentTime:r}=we(),{duration:a,playoutRef:s}=De(),o=()=>{r(a),t&&s.current&&(s.current.stop(),n(a))};return Z.jsx(Ne,{onClick:o,className:e,children:"Fast Forward"})},dl=({skipAmount:e=5,className:t})=>{const{currentTimeRef:n,isPlaying:r}=We(),{play:a,setCurrentTime:s}=we(),{playoutRef:o}=De(),l=()=>{const i=Math.max(0,(n.current??0)-e);s(i),r&&o.current&&(o.current.stop(),a(i))};return Z.jsx(Ne,{onClick:l,className:t,children:"Skip Backward"})},fl=({skipAmount:e=5,className:t})=>{const{currentTimeRef:n,isPlaying:r}=We(),{play:a,setCurrentTime:s}=we(),{duration:o,playoutRef:l}=De(),i=()=>{const u=Math.min(o,(n.current??0)+e);s(u),r&&l.current&&(l.current.stop(),a(u))};return Z.jsx(Ne,{onClick:i,className:t,children:"Skip Forward"})},ml=({className:e})=>{const{isLoopEnabled:t,loopStart:n,loopEnd:r}=Le(),{setLoopEnabled:a,setLoopRegion:s}=we(),{duration:o}=De(),l=n!==r&&r>n,i=()=>{if(!t&&!l){const u=Math.min(10,o*.25);s(0,Math.max(1,u))}a(!t)};return Z.jsx(Ne,{onClick:i,className:e,title:t?"Disable loop":"Enable loop",children:t?"Loop On":"Loop Off"})},hl=({className:e})=>{const{selectionStart:t,selectionEnd:n,loopStart:r,loopEnd:a}=Le(),{setLoopRegionFromSelection:s,clearLoopRegion:o}=we(),l=t!==n&&n>t,i=r!==a&&a>r,u=()=>{i?o():s()};return Z.jsx(Ne,{onClick:u,disabled:!l&&!i,className:e,title:i?"Clear loop region":l?"Set loop region from selection":"Create a selection first",children:i?"Clear Loop":"Set Loop"})},pl=({className:e,disabled:t})=>{const{zoomIn:n}=we(),{canZoomIn:r}=De();return Z.jsx(Ne,{variant:"success",onClick:n,disabled:t||!r,className:e,children:"Zoom In"})},gl=({className:e,disabled:t})=>{const{zoomOut:n}=we(),{canZoomOut:r}=De();return Z.jsx(Ne,{variant:"success",onClick:n,disabled:t||!r,className:e,children:"Zoom Out"})},bl=({className:e})=>{const{masterVolume:t}=De(),{setMasterVolume:n}=we();return Z.jsx(Co,{volume:t,onChange:n,className:e})},vl=({className:e})=>{const{timeFormat:t}=De(),{setTimeFormat:n}=we();return Z.jsx(Ko,{value:t,onChange:n,className:e})},Cl=k.span`
1328
1212
  font-family: 'Courier New', Monaco, monospace;
1329
1213
  font-size: 1rem;
1330
1214
  font-weight: 600;
1331
- color: ${s=>s.theme?.textColor||"#333"};
1215
+ color: ${e=>e.theme?.textColor||"#333"};
1332
1216
  user-select: none;
1333
- `,Zy=({className:s})=>{const e=S.useRef(null),t=S.useRef(null),{isPlaying:n,currentTimeRef:i,playbackStartTimeRef:r,audioStartPositionRef:o}=At(),{timeFormat:a}=wt(),c=a;return S.useEffect(()=>{const l=()=>{if(e.current){let u;if(n){const h=me().currentTime-(r.current??0);u=(o.current??0)+h}else u=i.current??0;e.current.textContent=nn(u,c)}n&&(t.current=requestAnimationFrame(l))};return n?t.current=requestAnimationFrame(l):l(),()=>{t.current&&(cancelAnimationFrame(t.current),t.current=null)}},[n,c,i,r,o]),S.useEffect(()=>{!n&&e.current&&(e.current.textContent=nn(i.current??0,c))}),E.jsx(zy,{ref:e,className:s,"aria-label":"Audio position",children:nn(i.current??0,c)})},Gy=({className:s})=>{const{selectionStart:e,selectionEnd:t}=os(),{setSelection:n}=Qe();return E.jsx(F0,{selectionStart:e,selectionEnd:t,onSelectionChange:n,className:s})},Xy=({className:s})=>{const{isAutomaticScroll:e}=os(),{setAutomaticScroll:t}=Qe();return E.jsx(c0,{checked:e,onChange:t,className:s})},Hy=({className:s})=>{const{continuousPlay:e}=os(),{setContinuousPlay:t}=Qe();return E.jsx(qv,{checked:e,onChange:t,className:s})},Yy=({className:s})=>{const{linkEndpoints:e}=os(),{setLinkEndpoints:t}=Qe();return E.jsx(jv,{checked:e,onChange:t,className:s})},Uy=({className:s})=>{const{annotationsEditable:e}=os(),{setAnnotationsEditable:t}=Qe();return E.jsx(Lv,{checked:e,onChange:t,className:s})},Ky=({filename:s,className:e})=>{const{annotations:t}=os();return E.jsx(Zv,{annotations:t,filename:s,className:e})},Qy=({label:s="Export WAV",filename:e="export",mode:t="master",trackIndex:n,bitDepth:i=16,applyEffects:r=!0,effectsFunction:o,createOfflineTrackEffects:a,className:c,onExportComplete:l,onExportError:u})=>{const{tracks:h,trackStates:p}=wt(),{exportWav:d,isExporting:f,progress:_}=Wu(),m=async()=>{try{const y=await d(h,p,{filename:e,mode:t,trackIndex:n,bitDepth:i,applyEffects:r,effectsFunction:o,createOfflineTrackEffects:a,autoDownload:!0});l?.(y.blob)}catch(y){u?.(y instanceof Error?y:new Error("Export failed"))}},g=f?`Exporting ${Math.round(_*100)}%`:s;return E.jsx(rs,{onClick:m,disabled:f||h.length===0,className:c,children:g})},Jy=W.div`
1217
+ `,wl=({className:e})=>{const t=c.useRef(null),n=c.useRef(null),{isPlaying:r,currentTimeRef:a,playbackStartTimeRef:s,audioStartPositionRef:o}=We(),{timeFormat:l}=De(),i=l;return c.useEffect(()=>{const u=()=>{if(t.current){let d;if(r){const b=P.getContext().currentTime-(s.current??0);d=(o.current??0)+b}else d=a.current??0;t.current.textContent=It(d,i)}r&&(n.current=requestAnimationFrame(u))};return r?n.current=requestAnimationFrame(u):u(),()=>{n.current&&(cancelAnimationFrame(n.current),n.current=null)}},[r,i,a,s,o]),c.useEffect(()=>{!r&&t.current&&(t.current.textContent=It(a.current??0,i))}),Z.jsx(Cl,{ref:t,className:e,"aria-label":"Audio position",children:It(a.current??0,i)})},xl=({className:e})=>{const{selectionStart:t,selectionEnd:n}=Le(),{setSelection:r}=we();return Z.jsx(To,{selectionStart:t,selectionEnd:n,onSelectionChange:r,className:e})},yl=({className:e})=>{const{isAutomaticScroll:t}=Le(),{setAutomaticScroll:n}=we();return Z.jsx(qa,{checked:t,onChange:n,className:e})},Il=({className:e})=>{const{continuousPlay:t}=Le(),{setContinuousPlay:n}=we();return Z.jsx(ni,{checked:t,onChange:n,className:e})},Sl=({className:e})=>{const{linkEndpoints:t}=Le(),{setLinkEndpoints:n}=we();return Z.jsx(ri,{checked:t,onChange:n,className:e})},Al=({className:e})=>{const{annotationsEditable:t}=Le(),{setAnnotationsEditable:n}=we();return Z.jsx(ai,{checked:t,onChange:n,className:e})},kl=({filename:e,className:t})=>{const{annotations:n}=Le();return Z.jsx(si,{annotations:n,filename:e,className:t})},$l=({label:e="Export WAV",filename:t="export",mode:n="master",trackIndex:r,bitDepth:a=16,applyEffects:s=!0,effectsFunction:o,createOfflineTrackEffects:l,className:i,onExportComplete:u,onExportError:d})=>{const{tracks:b,trackStates:p}=De(),{exportWav:f,isExporting:C,progress:y}=da(),g=async()=>{try{const w=await f(b,p,{filename:t,mode:n,trackIndex:r,bitDepth:a,applyEffects:s,effectsFunction:o,createOfflineTrackEffects:l,autoDownload:!0});u?.(w.blob)}catch(w){d?.(w instanceof Error?w:new Error("Export failed"))}},m=C?`Exporting ${Math.round(y*100)}%`:e;return Z.jsx(Ne,{onClick:g,disabled:C||b.length===0,className:i,children:m})},Rl=k.div`
1334
1218
  position: absolute;
1335
1219
  top: 0;
1336
1220
  left: 0;
1337
- width: ${s=>s.$width}px;
1338
- background: ${s=>s.$color};
1221
+ width: ${e=>e.$width}px;
1222
+ background: ${e=>e.$color};
1339
1223
  height: 100%;
1340
1224
  z-index: 100; /* Below sticky controls (z-index: 101) so playhead is hidden when scrolled behind controls */
1341
1225
  pointer-events: none;
1342
1226
  will-change: transform;
1343
- `,eb=({color:s="#ff0000",controlsOffset:e=0})=>{const t=S.useRef(null),n=S.useRef(null),{isPlaying:i,currentTimeRef:r,playbackStartTimeRef:o,audioStartPositionRef:a}=At(),{samplesPerPixel:c,sampleRate:l,progressBarWidth:u}=wt();return S.useEffect(()=>{const h=()=>{if(t.current){let p;if(i){const f=me().currentTime-(o.current??0);p=(a.current??0)+f}else p=r.current??0;const d=p*l/c+e;t.current.style.transform=`translate3d(${d}px, 0, 0)`}i&&(n.current=requestAnimationFrame(h))};return i?n.current=requestAnimationFrame(h):h(),()=>{n.current&&(cancelAnimationFrame(n.current),n.current=null)}},[i,l,c,e,r,o,a]),S.useEffect(()=>{if(!i&&t.current){const p=(r.current??0)*l/c+e;t.current.style.transform=`translate3d(${p}px, 0, 0)`}}),E.jsx(Jy,{ref:t,$color:s,$width:u,"data-playhead":!0})},tb=W.div`
1227
+ `,El=({color:e="#ff0000",controlsOffset:t=0})=>{const n=c.useRef(null),r=c.useRef(null),{isPlaying:a,currentTimeRef:s,playbackStartTimeRef:o,audioStartPositionRef:l}=We(),{samplesPerPixel:i,sampleRate:u,progressBarWidth:d}=De();return c.useEffect(()=>{const b=()=>{if(n.current){let p;if(a){const C=P.getContext().currentTime-(o.current??0);p=(l.current??0)+C}else p=s.current??0;const f=p*u/i+t;n.current.style.transform=`translate3d(${f}px, 0, 0)`}a&&(r.current=requestAnimationFrame(b))};return a?r.current=requestAnimationFrame(b):b(),()=>{r.current&&(cancelAnimationFrame(r.current),r.current=null)}},[a,u,i,t,s,o,l]),c.useEffect(()=>{if(!a&&n.current){const p=(s.current??0)*u/i+t;n.current.style.transform=`translate3d(${p}px, 0, 0)`}}),Z.jsx(Rl,{ref:n,$color:e,$width:d,"data-playhead":!0})},Dl=k.div`
1344
1228
  position: relative;
1345
- `,sb=W.div`
1229
+ `,Tl=k.div`
1346
1230
  position: absolute;
1347
- top: ${s=>s.$top}px;
1231
+ top: ${e=>e.$top}px;
1348
1232
  left: 0;
1349
- width: ${s=>s.$width}px;
1350
- height: ${s=>s.$height}px;
1351
- background: ${s=>s.$color};
1233
+ width: ${e=>e.$width}px;
1234
+ height: ${e=>e.$height}px;
1235
+ background: ${e=>e.$color};
1352
1236
  z-index: 0;
1353
1237
  /* Force GPU compositing layer to prevent gradient flickering during scroll */
1354
1238
  transform: translateZ(0);
1355
1239
  backface-visibility: hidden;
1356
1240
  will-change: transform;
1357
- `,nb=W.div`
1241
+ `,_l=k.div`
1358
1242
  position: absolute;
1359
- top: ${s=>s.$top}px;
1243
+ top: ${e=>e.$top}px;
1360
1244
  left: 0;
1361
- height: ${s=>s.$height}px;
1362
- background: ${s=>s.$color};
1245
+ height: ${e=>e.$height}px;
1246
+ background: ${e=>e.$color};
1363
1247
  pointer-events: none;
1364
1248
  z-index: 1;
1365
1249
  will-change: width;
1366
- `,ib=W.div`
1250
+ `,Ml=k.div`
1367
1251
  position: relative;
1368
1252
  z-index: 2;
1369
- `,nl=({clipStartSample:s,clipDurationSamples:e,...t})=>{const n=S.useRef(null),i=S.useRef(null),r=qa(),{waveHeight:o}=Gr(),{isPlaying:a,currentTimeRef:c,playbackStartTimeRef:l,audioStartPositionRef:u}=At(),{samplesPerPixel:h,sampleRate:p}=wt(),d=r?.waveProgressColor||"rgba(0, 0, 0, 0.1)";S.useEffect(()=>{const g=()=>{if(n.current){let y;if(a){const b=me().currentTime-(l.current??0);y=(u.current??0)+b}else y=c.current??0;const x=y*p,w=s+e;let v=0;if(x<=s)v=0;else if(x>=w)v=t.length;else{const b=x-s;v=Math.floor(b/h)}n.current.style.width=`${v}px`}a&&(i.current=requestAnimationFrame(g))};return a?i.current=requestAnimationFrame(g):g(),()=>{i.current&&(cancelAnimationFrame(i.current),i.current=null)}},[a,p,h,s,e,t.length,c,l,u]),S.useEffect(()=>{if(!a&&n.current){const y=(c.current??0)*p,x=s+e;let w=0;if(y<=s)w=0;else if(y>=x)w=t.length;else{const v=y-s;w=Math.floor(v/h)}n.current.style.width=`${w}px`}});const f=r?.waveformDrawMode||"inverted";let _;f==="inverted"?_=t.isSelected&&r?r.selectedWaveFillColor:r?.waveFillColor||"white":_=t.isSelected&&r?r.selectedWaveOutlineColor:r?.waveOutlineColor||"grey";const m=tr(_);return E.jsxs(tb,{children:[E.jsx(sb,{$color:m,$height:o,$top:t.index*o,$width:t.length}),E.jsx(nb,{ref:n,$color:d,$height:o,$top:t.index*o}),E.jsx(ib,{children:E.jsx(L0,{...t,transparentBackground:!0})})]})},rb=60,ob=({renderTrackControls:s,renderTimestamp:e,renderPlayhead:t,annotationControls:n,annotationListConfig:i,annotationTextHeight:r,className:o,showClipHeaders:a=!1,interactiveClips:c=!1,showFades:l=!1,recordingState:u})=>{const h=qa(),{isPlaying:p,currentTimeRef:d,playbackStartTimeRef:f,audioStartPositionRef:_}=At(),{selectionStart:m,selectionEnd:g,annotations:y,activeAnnotationId:x,annotationsEditable:w,linkEndpoints:v,continuousPlay:b,selectedTrackId:k}=os(),{setAnnotations:T,setActiveAnnotationId:R,setTrackMute:I,setTrackSolo:A,setTrackVolume:D,setTrackPan:M,setSelection:N,play:q,setScrollContainer:V,setSelectedTrackId:j,setCurrentTime:G}=Qe(),{audioBuffers:B,peaksDataArray:Z,trackStates:X,tracks:ee,duration:pe,samplesPerPixel:ie,sampleRate:Q,waveHeight:ye,timeScaleHeight:Ee,controls:z,playoutRef:Je,barWidth:lt,barGap:Vt}=wt(),[U,ut]=S.useState(!1),$e=S.useRef(null),L=S.useCallback(oe=>{$e.current=oe,V(oe)},[V]);let H=B.length>0?pe:rb;if(u?.isRecording){const ge=(u.startSample+u.durationSamples)/Q;H=Math.max(H,ge+10)}const be=Math.floor(H*Q/ie),we=async oe=>{console.log("Annotation clicked:",oe.id),R(oe.id);const ge=b?void 0:oe.end-oe.start;await q(oe.start,ge)},ce=S.useCallback(oe=>{if(oe>=0&&oe<ee.length){const ge=ee[oe];j(ge.id)}},[ee,j]),Ce=oe=>{const ge=oe.currentTarget.getBoundingClientRect(),Ae=z.show?z.width:0,Ge=(oe.clientX-ge.left-Ae)*ie/Q,Se=oe.clientY-ge.top;let Lt=0,ht=-1;for(let It=0;It<Z.length;It++){const dt=Z[It],as=(dt.length>0?Math.max(...dt.map(En=>En.peaks.data.length)):1)*ye+(a?22:0);if(Se>=Lt&&Se<Lt+as){ht=It;break}Lt+=as}ht!==-1&&ce(ht),ut(!0),G(Ge),N(Ge,Ge)},He=oe=>{if(!U)return;const ge=oe.currentTarget.getBoundingClientRect(),Ae=z.show?z.width:0,Ge=(oe.clientX-ge.left-Ae)*ie/Q,xt=Math.min(m,Ge),Se=Math.max(m,Ge);N(xt,Se)},Ze=oe=>{if(!U)return;ut(!1);const ge=oe.currentTarget.getBoundingClientRect(),Ae=z.show?z.width:0,Ge=(oe.clientX-ge.left-Ae)*ie/Q,xt=Math.min(m,Ge),Se=Math.max(m,Ge);Math.abs(Se-xt)<.1?(G(xt),p&&Je.current?(Je.current.stop(),q(xt)):Je.current&&Je.current.stop()):N(xt,Se)};return ee.some(oe=>oe.clips.length>0)&&(B.length===0||Z.length===0)?E.jsx("div",{className:o,children:"Loading waveform..."}):E.jsx(V0,{children:E.jsxs($a.Provider,{value:{samplesPerPixel:ie,sampleRate:Q,zoomLevels:[ie],waveHeight:ye,timeScaleHeight:Ee,duration:H,controls:z,barWidth:lt,barGap:Vt},children:[E.jsx(Iu,{theme:h,backgroundColor:tr(h.waveOutlineColor),timescaleBackgroundColor:h.timescaleBackgroundColor,scrollContainerWidth:be+(z.show?z.width:0),timescaleWidth:be,tracksWidth:be,controlsWidth:z.show?z.width:0,onTracksMouseDown:Ce,onTracksMouseMove:He,onTracksMouseUp:Ze,scrollContainerRef:L,timescale:Ee>0?E.jsx(U0,{duration:H*1e3,marker:1e4,bigStep:5e3,secondStep:1e3,renderTimestamp:e}):void 0,children:E.jsxs(E.Fragment,{children:[Z.map((oe,ge)=>{const Ae=ee[ge];if(!Ae)return null;const qe=X[ge]||{name:`Track ${ge+1}`,muted:!1,soloed:!1,volume:1,pan:0},Ge=s?s(ge):E.jsxs(rv,{onClick:()=>ce(ge),children:[E.jsx(ov,{style:{justifyContent:"center"},children:qe.name||`Track ${ge+1}`}),E.jsxs(iv,{children:[E.jsx(Wc,{$variant:qe.muted?"danger":"outline",onClick:()=>I(ge,!qe.muted),children:"Mute"}),E.jsx(Wc,{$variant:qe.soloed?"info":"outline",onClick:()=>A(ge,!qe.soloed),children:"Solo"})]}),E.jsxs($c,{children:[E.jsx(av,{}),E.jsx(Bc,{min:"0",max:"1",step:"0.01",value:qe.volume,onChange:Se=>D(ge,parseFloat(Se.target.value))}),E.jsx(cv,{})]}),E.jsxs($c,{children:[E.jsx("span",{children:"L"}),E.jsx(Bc,{min:"-1",max:"1",step:"0.01",value:qe.pan,onChange:Se=>M(ge,parseFloat(Se.target.value))}),E.jsx("span",{children:"R"})]})]}),xt=oe.length>0?Math.max(...oe.map(Se=>Se.peaks.data.length)):1;return E.jsx(Mu.Provider,{value:Ge,children:E.jsxs(nv,{numChannels:xt,backgroundColor:tr(h.waveOutlineColor),offset:0,width:be,hasClipHeaders:a,trackId:Ae.id,isSelected:Ae.id===k,children:[oe.map((Se,Lt)=>{const ht=Se.peaks,It=ht.length;return E.jsx(Vc,{clipId:Se.clipId,trackIndex:ge,clipIndex:Lt,trackName:Se.trackName,startSample:Se.startSample,durationSamples:Se.durationSamples,samplesPerPixel:ie,showHeader:a,disableHeaderDrag:!c,isSelected:Ae.id===k,trackId:Ae.id,fadeIn:Se.fadeIn,fadeOut:Se.fadeOut,sampleRate:Q,showFades:l,onMouseDown:dt=>{dt.target.closest('[role="button"][aria-roledescription="draggable"]')||ce(ge)},children:ht.data.map((dt,et)=>E.jsx(nl,{index:et,data:dt,bits:ht.bits,length:It,isSelected:Ae.id===k,clipStartSample:Se.startSample,clipDurationSamples:Se.durationSamples},`${ge}-${Lt}-${et}`))},`${ge}-${Lt}`)}),u?.isRecording&&u.trackId===Ae.id&&u.peaks.length>0&&E.jsx(Vc,{clipId:"recording-preview",trackIndex:ge,clipIndex:oe.length,trackName:"Recording...",startSample:u.startSample,durationSamples:u.durationSamples,samplesPerPixel:ie,showHeader:a,disableHeaderDrag:!0,isSelected:Ae.id===k,trackId:Ae.id,children:E.jsx(nl,{index:0,data:u.peaks,bits:16,length:Math.floor(u.peaks.length/2),isSelected:Ae.id===k,clipStartSample:u.startSample,clipDurationSamples:u.durationSamples},`${ge}-recording-0`)},`${ge}-recording`)]})},Ae.id)}),y.length>0&&E.jsx(Dv,{height:30,width:be,children:y.map((oe,ge)=>{const Ae=oe.start*Q/ie,qe=oe.end*Q/ie;return E.jsx(Tv,{annotationId:oe.id,annotationIndex:ge,startPosition:Ae,endPosition:qe,label:oe.id,color:"#ff9800",isActive:oe.id===x,onClick:()=>we(oe),editable:w},oe.id)})}),m!==g&&E.jsx(N0,{startPosition:Math.min(m,g)*Q/ie+(z.show?z.width:0),endPosition:Math.max(m,g)*Q/ie+(z.show?z.width:0),color:h.selectionColor}),(p||m===g)&&(t?t({position:(d.current??0)*Q/ie+(z.show?z.width:0),color:h.playheadColor,isPlaying:p,currentTimeRef:d,playbackStartTimeRef:f,audioStartPositionRef:_,samplesPerPixel:ie,sampleRate:Q,controlsOffset:z.show?z.width:0,getAudioContextTime:()=>me().currentTime}):E.jsx(eb,{color:h.playheadColor,controlsOffset:z.show?z.width:0}))]})}),y.length>0&&E.jsx($v,{annotations:y,activeAnnotationId:x??void 0,shouldScrollToActive:!0,editable:w,controls:w?n:void 0,annotationListConfig:{linkEndpoints:v,continuousPlay:b},height:r,onAnnotationUpdate:oe=>{T(oe)}})]})})};function Ys(s,e){this._waveformData=s,this._channelIndex=e}Ys.prototype.min_sample=function(s){var e=(s*this._waveformData.channels+this._channelIndex)*2;return this._waveformData._at(e)};Ys.prototype.max_sample=function(s){var e=(s*this._waveformData.channels+this._channelIndex)*2+1;return this._waveformData._at(e)};Ys.prototype.set_min_sample=function(s,e){var t=(s*this._waveformData.channels+this._channelIndex)*2;return this._waveformData._set_at(t,e)};Ys.prototype.set_max_sample=function(s,e){var t=(s*this._waveformData.channels+this._channelIndex)*2+1;return this._waveformData._set_at(t,e)};Ys.prototype.min_array=function(){for(var s=this._waveformData.length,e=[],t=0;t<s;t++)e.push(this.min_sample(t));return e};Ys.prototype.max_array=function(){for(var s=this._waveformData.length,e=[],t=0;t<s;t++)e.push(this.max_sample(t));return e};var ab=127,cb=-128,lb=32767,ub=-32768;function hb(s,e){var t=Math.floor(s/e),n=s-t*e;return n>0&&t++,t}function db(s){for(var e=s.scale,t=s.amplitude_scale,n=s.split_channels,i=s.length,r=s.sample_rate,o=s.channels.map(function(A){return new Float32Array(A)}),a=n?o.length:1,c=24,l=hb(i,e),u=s.bits===8?1:2,h=c+l*2*u*a,p=new ArrayBuffer(h),d=new DataView(p),f=0,_=c,m=new Array(a),g=new Array(a),y=0;y<a;y++)m[y]=1/0,g[y]=-1/0;var x=s.bits===8?cb:ub,w=s.bits===8?ab:lb;d.setInt32(0,2,!0),d.setUint32(4,s.bits===8,!0),d.setInt32(8,r,!0),d.setInt32(12,e,!0),d.setInt32(16,l,!0),d.setInt32(20,a,!0);for(var v=0;v<i;v++){var b=0;if(a===1){for(var k=0;k<o.length;++k)b+=o[k][v];b=Math.floor(w*b*t/o.length),b<m[0]&&(m[0]=b,m[0]<x&&(m[0]=x)),b>g[0]&&(g[0]=b,g[0]>w&&(g[0]=w))}else for(var T=0;T<a;++T)b=Math.floor(w*o[T][v]*t),b<m[T]&&(m[T]=b,m[T]<x&&(m[T]=x)),b>g[T]&&(g[T]=b,g[T]>w&&(g[T]=w));if(++f===e){for(var R=0;R<a;R++)s.bits===8?(d.setInt8(_++,m[R]),d.setInt8(_++,g[R])):(d.setInt16(_,m[R],!0),d.setInt16(_+2,g[R],!0),_+=4),m[R]=1/0,g[R]=-1/0;f=0}}if(f>0)for(var I=0;I<a;I++)s.bits===8?(d.setInt8(_++,m[I]),d.setInt8(_++,g[I])):(d.setInt16(_,m[I],!0),d.setInt16(_+2,g[I],!0));return p}function nr(s){"@babel/helpers - typeof";return nr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nr(s)}function pb(s){return s&&nr(s)==="object"&&"sample_rate"in s&&"samples_per_pixel"in s&&"bits"in s&&"length"in s&&"data"in s}function fb(s){var e=s&&nr(s)==="object"&&"byteLength"in s;if(e){var t=new DataView(s),n=t.getInt32(0,!0);if(n!==1&&n!==2)throw new TypeError("WaveformData.create(): This waveform data version not supported")}return e}function mb(s){var e=s.data,t=s.channels||1,n=24,i=s.bits===8?1:2,r=s.length*2*t;if(e.length!==r)throw new Error("WaveformData.create(): Length mismatch in JSON waveform data");var o=n+e.length*i,a=new ArrayBuffer(o),c=new DataView(a);c.setInt32(0,2,!0),c.setUint32(4,s.bits===8,!0),c.setInt32(8,s.sample_rate,!0),c.setInt32(12,s.samples_per_pixel,!0),c.setInt32(16,s.length,!0),c.setInt32(20,t,!0);var l=n;if(s.bits===8)for(var u=0;u<e.length;u++)c.setInt8(l++,e[u],!0);else for(var h=0;h<e.length;h++)c.setInt16(l,e[h],!0),l+=2;return a}function Ks(s){return s==null}function gb(s,e){var t=atob(s);return t}function _b(s,e,t){var n=gb(s),i=n.indexOf(`
1370
- `,10)+1,r=n.substring(i)+"",o=new Blob([r],{type:"application/javascript"});return URL.createObjectURL(o)}function vb(s,e,t){var n;return function(r){return n=n||_b(s),new Worker(n,r)}}var yb=vb("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogQXVkaW9CdWZmZXItYmFzZWQgV2F2ZWZvcm1EYXRhIGdlbmVyYXRvcgogICAqCiAgICogQWRhcHRlZCBmcm9tIEJsb2NrRmlsZTo6Q2FsY1N1bW1hcnkgaW4gQXVkYWNpdHksIHdpdGggcGVybWlzc2lvbi4KICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F1ZGFjaXR5L2F1ZGFjaXR5L2Jsb2IvCiAgICogICAxMTA4YzEzNzZjMDkxNjYxNjIzMzVmYWI0NzQzMDA4Y2JhNTdjNGVlL3NyYy9CbG9ja0ZpbGUuY3BwI0wxOTgKICAgKi8KCiAgdmFyIElOVDhfTUFYID0gMTI3OwogIHZhciBJTlQ4X01JTiA9IC0xMjg7CiAgdmFyIElOVDE2X01BWCA9IDMyNzY3OwogIHZhciBJTlQxNl9NSU4gPSAtMzI3Njg7CiAgZnVuY3Rpb24gY2FsY3VsYXRlV2F2ZWZvcm1EYXRhTGVuZ3RoKGF1ZGlvX3NhbXBsZV9jb3VudCwgc2NhbGUpIHsKICAgIHZhciBkYXRhX2xlbmd0aCA9IE1hdGguZmxvb3IoYXVkaW9fc2FtcGxlX2NvdW50IC8gc2NhbGUpOwogICAgdmFyIHNhbXBsZXNfcmVtYWluaW5nID0gYXVkaW9fc2FtcGxlX2NvdW50IC0gZGF0YV9sZW5ndGggKiBzY2FsZTsKICAgIGlmIChzYW1wbGVzX3JlbWFpbmluZyA+IDApIHsKICAgICAgZGF0YV9sZW5ndGgrKzsKICAgIH0KICAgIHJldHVybiBkYXRhX2xlbmd0aDsKICB9CiAgZnVuY3Rpb24gZ2VuZXJhdGVXYXZlZm9ybURhdGEob3B0aW9ucykgewogICAgdmFyIHNjYWxlID0gb3B0aW9ucy5zY2FsZTsKICAgIHZhciBhbXBsaXR1ZGVfc2NhbGUgPSBvcHRpb25zLmFtcGxpdHVkZV9zY2FsZTsKICAgIHZhciBzcGxpdF9jaGFubmVscyA9IG9wdGlvbnMuc3BsaXRfY2hhbm5lbHM7CiAgICB2YXIgbGVuZ3RoID0gb3B0aW9ucy5sZW5ndGg7CiAgICB2YXIgc2FtcGxlX3JhdGUgPSBvcHRpb25zLnNhbXBsZV9yYXRlOwogICAgdmFyIGNoYW5uZWxzID0gb3B0aW9ucy5jaGFubmVscy5tYXAoZnVuY3Rpb24gKGNoYW5uZWwpIHsKICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoY2hhbm5lbCk7CiAgICB9KTsKICAgIHZhciBvdXRwdXRfY2hhbm5lbHMgPSBzcGxpdF9jaGFubmVscyA/IGNoYW5uZWxzLmxlbmd0aCA6IDE7CiAgICB2YXIgaGVhZGVyX3NpemUgPSAyNDsKICAgIHZhciBkYXRhX2xlbmd0aCA9IGNhbGN1bGF0ZVdhdmVmb3JtRGF0YUxlbmd0aChsZW5ndGgsIHNjYWxlKTsKICAgIHZhciBieXRlc19wZXJfc2FtcGxlID0gb3B0aW9ucy5iaXRzID09PSA4ID8gMSA6IDI7CiAgICB2YXIgdG90YWxfc2l6ZSA9IGhlYWRlcl9zaXplICsgZGF0YV9sZW5ndGggKiAyICogYnl0ZXNfcGVyX3NhbXBsZSAqIG91dHB1dF9jaGFubmVsczsKICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodG90YWxfc2l6ZSk7CiAgICB2YXIgZGF0YV92aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICB2YXIgc2NhbGVfY291bnRlciA9IDA7CiAgICB2YXIgb2Zmc2V0ID0gaGVhZGVyX3NpemU7CiAgICB2YXIgbWluX3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICB2YXIgbWF4X3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICBmb3IgKHZhciBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dF9jaGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgIG1pbl92YWx1ZVtjaGFubmVsXSA9IEluZmluaXR5OwogICAgICBtYXhfdmFsdWVbY2hhbm5lbF0gPSAtSW5maW5pdHk7CiAgICB9CiAgICB2YXIgcmFuZ2VfbWluID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NSU4gOiBJTlQxNl9NSU47CiAgICB2YXIgcmFuZ2VfbWF4ID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NQVggOiBJTlQxNl9NQVg7CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMCwgMiwgdHJ1ZSk7IC8vIFZlcnNpb24KICAgIGRhdGFfdmlldy5zZXRVaW50MzIoNCwgb3B0aW9ucy5iaXRzID09PSA4LCB0cnVlKTsgLy8gSXMgOCBiaXQ/CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoOCwgc2FtcGxlX3JhdGUsIHRydWUpOyAvLyBTYW1wbGUgcmF0ZQogICAgZGF0YV92aWV3LnNldEludDMyKDEyLCBzY2FsZSwgdHJ1ZSk7IC8vIFNjYWxlCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMTYsIGRhdGFfbGVuZ3RoLCB0cnVlKTsgLy8gTGVuZ3RoCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMjAsIG91dHB1dF9jaGFubmVscywgdHJ1ZSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzYW1wbGUgPSAwOwogICAgICBpZiAob3V0cHV0X2NoYW5uZWxzID09PSAxKSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwgPSAwOyBfY2hhbm5lbCA8IGNoYW5uZWxzLmxlbmd0aDsgKytfY2hhbm5lbCkgewogICAgICAgICAgc2FtcGxlICs9IGNoYW5uZWxzW19jaGFubmVsXVtpXTsKICAgICAgICB9CiAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBzYW1wbGUgKiBhbXBsaXR1ZGVfc2NhbGUgLyBjaGFubmVscy5sZW5ndGgpOwogICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbMF0pIHsKICAgICAgICAgIG1pbl92YWx1ZVswXSA9IHNhbXBsZTsKICAgICAgICAgIGlmIChtaW5fdmFsdWVbMF0gPCByYW5nZV9taW4pIHsKICAgICAgICAgICAgbWluX3ZhbHVlWzBdID0gcmFuZ2VfbWluOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc2FtcGxlID4gbWF4X3ZhbHVlWzBdKSB7CiAgICAgICAgICBtYXhfdmFsdWVbMF0gPSBzYW1wbGU7CiAgICAgICAgICBpZiAobWF4X3ZhbHVlWzBdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgIG1heF92YWx1ZVswXSA9IHJhbmdlX21heDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwyID0gMDsgX2NoYW5uZWwyIDwgb3V0cHV0X2NoYW5uZWxzOyArK19jaGFubmVsMikgewogICAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBjaGFubmVsc1tfY2hhbm5lbDJdW2ldICogYW1wbGl0dWRlX3NjYWxlKTsKICAgICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtaW5fdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1pbl92YWx1ZVtfY2hhbm5lbDJdIDwgcmFuZ2VfbWluKSB7CiAgICAgICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9taW47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChzYW1wbGUgPiBtYXhfdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtYXhfdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1heF92YWx1ZVtfY2hhbm5lbDJdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgICAgbWF4X3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9tYXg7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCsrc2NhbGVfY291bnRlciA9PT0gc2NhbGUpIHsKICAgICAgICBmb3IgKHZhciBfY2hhbm5lbDMgPSAwOyBfY2hhbm5lbDMgPCBvdXRwdXRfY2hhbm5lbHM7IF9jaGFubmVsMysrKSB7CiAgICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtaW5fdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50MTYob2Zmc2V0LCBtaW5fdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQxNihvZmZzZXQgKyAyLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIG9mZnNldCArPSA0OwogICAgICAgICAgfQogICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsM10gPSBJbmZpbml0eTsKICAgICAgICAgIG1heF92YWx1ZVtfY2hhbm5lbDNdID0gLUluZmluaXR5OwogICAgICAgIH0KICAgICAgICBzY2FsZV9jb3VudGVyID0gMDsKICAgICAgfQogICAgfQogICAgaWYgKHNjYWxlX2NvdW50ZXIgPiAwKSB7CiAgICAgIGZvciAodmFyIF9jaGFubmVsNCA9IDA7IF9jaGFubmVsNCA8IG91dHB1dF9jaGFubmVsczsgX2NoYW5uZWw0KyspIHsKICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50OChvZmZzZXQrKywgbWluX3ZhbHVlW19jaGFubmVsNF0pOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDgob2Zmc2V0KyssIG1heF92YWx1ZVtfY2hhbm5lbDRdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCwgbWluX3ZhbHVlW19jaGFubmVsNF0sIHRydWUpOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCArIDIsIG1heF92YWx1ZVtfY2hhbm5lbDRdLCB0cnVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBidWZmZXI7CiAgfQoKICBvbm1lc3NhZ2UgPSBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZ0KSB7CiAgICB2YXIgYnVmZmVyID0gZ2VuZXJhdGVXYXZlZm9ybURhdGEoZXZ0LmRhdGEpOwoKICAgIC8vIFRyYW5zZmVyIGJ1ZmZlciB0byB0aGUgY2FsbGluZyB0aHJlYWQKICAgIHRoaXMucG9zdE1lc3NhZ2UoYnVmZmVyLCBbYnVmZmVyXSk7CiAgICB0aGlzLmNsb3NlKCk7CiAgfTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdhdmVmb3JtLWRhdGEtd29ya2VyLmpzLm1hcAoK");function Wt(s){if(pb(s)&&(s=mb(s)),fb(s)){this._data=new DataView(s),this._offset=this._version()===2?24:20,this._channels=[];for(var e=0;e<this.channels;e++)this._channels[e]=new Ys(this,e)}else throw new TypeError("WaveformData.create(): Unknown data format")}var jn={scale:512,bits:8,amplitude_scale:1,split_channels:!1,disable_worker:!1};function bb(s){var e={scale:s.scale||jn.scale,bits:s.bits||jn.bits,amplitude_scale:s.amplitude_scale||jn.amplitude_scale,split_channels:s.split_channels||jn.split_channels,disable_worker:s.disable_worker||jn.disable_worker};return e}function wb(s){for(var e=[],t=0;t<s.numberOfChannels;++t)e.push(s.getChannelData(t).buffer);return e}function zu(s,e,t){var n=wb(s);if(e.disable_worker){var i=db({scale:e.scale,bits:e.bits,amplitude_scale:e.amplitude_scale,split_channels:e.split_channels,length:s.length,sample_rate:s.sampleRate,channels:n});t(void 0,new Wt(i),s)}else{var r=new yb;r.onmessage=function(o){t(void 0,new Wt(o.data),s)},r.postMessage({scale:e.scale,bits:e.bits,amplitude_scale:e.amplitude_scale,split_channels:e.split_channels,length:s.length,sample_rate:s.sampleRate,channels:n},n)}}function xb(s,e,t,n){function i(o){o||(o=new DOMException("EncodingError")),n(o),n=function(){}}var r=s.decodeAudioData(e,function(o){zu(o,t,n)},i);r&&r.catch(i)}Wt.create=function(e){return new Wt(e)};Wt.createFromAudio=function(s,e){var t=bb(s);if(s.audio_context&&s.array_buffer)return xb(s.audio_context,s.array_buffer,t,e);if(s.audio_buffer)return zu(s.audio_buffer,t,e);throw new TypeError("WaveformData.createFromAudio(): Pass either an AudioContext and ArrayBuffer, or an AudioBuffer object")};function Xr(s){this._inputData=s.waveformData,this._output_samples_per_pixel=s.scale,this._scale=this._inputData.scale,this._input_buffer_size=this._inputData.length;var e=this._input_buffer_size*this._inputData.scale,t=Math.ceil(e/this._output_samples_per_pixel),n=24,i=this._inputData.bits===8?1:2,r=n+t*2*this._inputData.channels*i;this._output_data=new ArrayBuffer(r),this.output_dataview=new DataView(this._output_data),this.output_dataview.setInt32(0,2,!0),this.output_dataview.setUint32(4,this._inputData.bits===8,!0),this.output_dataview.setInt32(8,this._inputData.sample_rate,!0),this.output_dataview.setInt32(12,this._output_samples_per_pixel,!0),this.output_dataview.setInt32(16,t,!0),this.output_dataview.setInt32(20,this._inputData.channels,!0),this._outputWaveformData=new Wt(this._output_data),this._input_index=0,this._output_index=0;var o=this._inputData.channels;this._min=new Array(o),this._max=new Array(o);for(var a=0;a<o;++a)this._input_buffer_size>0?(this._min[a]=this._inputData.channel(a).min_sample(this._input_index),this._max[a]=this._inputData.channel(a).max_sample(this._input_index)):(this._min[a]=0,this._max[a]=0);this._min_value=this._inputData.bits===8?-128:-32768,this._max_value=this._inputData.bits===8?127:32767,this._where=0,this._prev_where=0,this._stop=0,this._last_input_index=0}Xr.prototype.sample_at_pixel=function(s){return Math.floor(s*this._output_samples_per_pixel)};Xr.prototype.next=function(){for(var s=0,e=1e3,t=this._inputData.channels,n;this._input_index<this._input_buffer_size&&s<e;){for(;Math.floor(this.sample_at_pixel(this._output_index)/this._scale)===this._input_index;){if(this._output_index>0)for(var i=0;i<t;++i)n=this._outputWaveformData.channel(i),n.set_min_sample(this._output_index-1,this._min[i]),n.set_max_sample(this._output_index-1,this._max[i]);if(this._last_input_index=this._input_index,this._output_index++,this._where=this.sample_at_pixel(this._output_index),this._prev_where=this.sample_at_pixel(this._output_index-1),this._where!==this._prev_where)for(var r=0;r<t;++r)this._min[r]=this._max_value,this._max[r]=this._min_value}for(this._where=this.sample_at_pixel(this._output_index),this._stop=Math.floor(this._where/this._scale),this._stop>this._input_buffer_size&&(this._stop=this._input_buffer_size);this._input_index<this._stop;){for(var o=0;o<t;++o){n=this._inputData.channel(o);var a=n.min_sample(this._input_index);a<this._min[o]&&(this._min[o]=a),a=n.max_sample(this._input_index),a>this._max[o]&&(this._max[o]=a)}this._input_index++}s++}if(this._input_index<this._input_buffer_size)return!1;if(this._input_index!==this._last_input_index)for(var c=0;c<t;++c)n=this._outputWaveformData.channel(c),n.set_min_sample(this._output_index-1,this._min[c]),n.set_max_sample(this._output_index-1,this._max[c]);return!0};Xr.prototype.getOutputData=function(){return this._output_data};Wt.prototype={_getResampleOptions:function(e){var t={};if(t.scale=e.scale,t.width=e.width,!Ks(t.width)&&(typeof t.width!="number"||t.width<=0))throw new RangeError("WaveformData.resample(): width should be a positive integer value");if(!Ks(t.scale)&&(typeof t.scale!="number"||t.scale<=0))throw new RangeError("WaveformData.resample(): scale should be a positive integer value");if(!t.scale&&!t.width)throw new Error("WaveformData.resample(): Missing scale or width option");if(t.width&&(t.scale=Math.floor(this.duration*this.sample_rate/t.width)),t.scale<this.scale)throw new Error("WaveformData.resample(): Zoom level "+t.scale+" too low, minimum: "+this.scale);return t.abortSignal=e.abortSignal,t},resample:function(e){e=this._getResampleOptions(e),e.waveformData=this;for(var t=new Xr(e);!t.next(););return new Wt(t.getOutputData())},concat:function(){var e=this,t=Array.prototype.slice.call(arguments);t.forEach(function(i){if(e.channels!==i.channels||e.sample_rate!==i.sample_rate||e.bits!==i.bits||e.scale!==i.scale)throw new Error("WaveformData.concat(): Waveforms are incompatible")});var n=this._concatBuffers.apply(this,t);return Wt.create(n)},_concatBuffers:function(){for(var e=Array.prototype.slice.call(arguments),t=this._offset,n=t,i=0,r=[this].concat(e).map(function(g){return g._data.buffer}),o=0;o<r.length;o++){var a=r[o],c=new DataView(a).getInt32(16,!0);n+=a.byteLength-t,i+=c}for(var l=new ArrayBuffer(n),u=new DataView(r[0]),h=new DataView(l),p=0;p<t;p++)h.setUint8(p,u.getUint8(p));h.setInt32(16,i,!0);for(var d=0,f=new Uint8Array(l,t),_=0;_<r.length;_++){var m=r[_];f.set(new Uint8Array(m,t),d),d+=m.byteLength-t}return l},slice:function(e){var t=0,n=0;if(!Ks(e.startIndex)&&!Ks(e.endIndex)?(t=e.startIndex,n=e.endIndex):!Ks(e.startTime)&&!Ks(e.endTime)&&(t=this.at_time(e.startTime),n=this.at_time(e.endTime)),t<0)throw new RangeError("startIndex or startTime must not be negative");if(n<0)throw new RangeError("endIndex or endTime must not be negative");t>this.length&&(t=this.length),n>this.length&&(n=this.length),t>n&&(t=n);var i=n-t,r=24,o=this.bits===8?1:2,a=r+i*2*this.channels*o,c=new ArrayBuffer(a),l=new DataView(c);l.setInt32(0,2,!0),l.setUint32(4,this.bits===8,!0),l.setInt32(8,this.sample_rate,!0),l.setInt32(12,this.scale,!0),l.setInt32(16,i,!0),l.setInt32(20,this.channels,!0);for(var u=0;u<i*this.channels*2;u++){var h=this._at(t*this.channels*2+u);this.bits===8?l.setInt8(r+u,h):l.setInt16(r+u*2,h,!0)}return new Wt(c)},_version:function(){return this._data.getInt32(0,!0)},get length(){return this._data.getUint32(16,!0)},get bits(){var s=!!this._data.getUint32(4,!0);return s?8:16},get duration(){return this.length*this.scale/this.sample_rate},get pixels_per_second(){return this.sample_rate/this.scale},get seconds_per_pixel(){return this.scale/this.sample_rate},get channels(){return this._version()===2?this._data.getInt32(20,!0):1},channel:function(e){if(e>=0&&e<this._channels.length)return this._channels[e];throw new RangeError("Invalid channel: "+e)},get sample_rate(){return this._data.getInt32(8,!0)},get scale(){return this._data.getInt32(12,!0)},_at:function(e){return this.bits===8?this._data.getInt8(this._offset+e):this._data.getInt16(this._offset+e*2,!0)},_set_at:function(e,t){return this.bits===8?this._data.setInt8(this._offset+e,t):this._data.setInt16(this._offset+e*2,t,!0)},at_time:function(e){return Math.floor(e*this.sample_rate/this.scale)},time:function(e){return e*this.scale/this.sample_rate},toJSON:function(){for(var e={version:2,channels:this.channels,sample_rate:this.sample_rate,samples_per_pixel:this.scale,bits:this.bits,length:this.length,data:[]},t=0;t<this.length;t++)for(var n=0;n<this.channels;n++)e.data.push(this.channel(n).min_sample(t)),e.data.push(this.channel(n).max_sample(t));return e},toArrayBuffer:function(){return this._data.buffer}};async function La(s){const e=await fetch(s);if(!e.ok)throw new Error(`Failed to fetch waveform data: ${e.statusText}`);if(s.endsWith(".dat")){const n=await e.arrayBuffer();return Wt.create(n)}else{const n=await e.json();return Wt.create(n)}}function Zu(s,e=0){const t=s.channel(e),n=s.bits,i=t.min_array(),r=t.max_array(),o=i.length,a=n===8?new Int8Array(o*2):new Int16Array(o*2);for(let c=0;c<o;c++)a[c*2]=i[c],a[c*2+1]=r[c];return{data:a,bits:n,length:o,sampleRate:s.sample_rate}}async function Cb(s,e=0){const t=await La(s);return Zu(t,e)}async function Sb(s){const e=await La(s);return{sampleRate:e.sample_rate,channels:e.channels,duration:e.duration,samplesPerPixel:e.scale,length:e.length,bits:e.bits}}exports.AudioPosition=Zy;exports.AutomaticScrollCheckbox=Xy;exports.ContinuousPlayCheckbox=Hy;exports.DownloadAnnotationsButton=Ky;exports.EditableCheckbox=Uy;exports.ExportWavButton=Qy;exports.FastForwardButton=Py;exports.LinkEndpointsCheckbox=Yy;exports.MasterVolumeControl=jy;exports.PauseButton=Ny;exports.PlayButton=Oy;exports.RewindButton=Vy;exports.SelectionTimeInputs=Gy;exports.SkipBackwardButton=Wy;exports.SkipForwardButton=By;exports.StopButton=Fy;exports.TimeFormatSelect=Ly;exports.Tone=pu;exports.Waveform=ob;exports.WaveformPlaylistProvider=Ey;exports.ZoomInButton=$y;exports.ZoomOutButton=qy;exports.createEffectChain=Cy;exports.createEffectInstance=ei;exports.effectCategories=yy;exports.effectDefinitions=Si;exports.getEffectDefinition=ja;exports.getEffectsByCategory=vy;exports.getShortcutLabel=sy;exports.getWaveformDataMetadata=Sb;exports.loadPeaksFromWaveformData=Cb;exports.loadWaveformData=La;exports.useAnnotationDragHandlers=Qv;exports.useAnnotationKeyboardControls=iy;exports.useAudioTracks=Uv;exports.useClipDragHandlers=Kv;exports.useClipSplitting=ty;exports.useDragSensors=ey;exports.useDynamicEffects=Sy;exports.useExportWav=Wu;exports.useIntegratedRecording=_y;exports.useKeyboardShortcuts=sr;exports.useMasterAnalyser=Xv;exports.useMasterVolume=Vu;exports.usePlaybackAnimation=At;exports.usePlaybackShortcuts=ny;exports.usePlaylistControls=Qe;exports.usePlaylistData=wt;exports.usePlaylistState=os;exports.useTimeFormat=Nu;exports.useTrackDynamicEffects=Ty;exports.useWaveformPlaylist=My;exports.useZoomControls=Fu;exports.waveformDataToPeaks=Zu;
1253
+ `,Br=({clipStartSample:e,clipDurationSamples:t,...n})=>{const r=c.useRef(null),a=c.useRef(null),s=Mn(),{waveHeight:o}=en(),{isPlaying:l,currentTimeRef:i,playbackStartTimeRef:u,audioStartPositionRef:d}=We(),{samplesPerPixel:b,sampleRate:p}=De(),f=s?.waveProgressColor||"rgba(0, 0, 0, 0.1)";c.useEffect(()=>{const m=()=>{if(r.current){let w;if(l){const I=P.getContext().currentTime-(u.current??0);w=(d.current??0)+I}else w=i.current??0;const x=w*p,v=e+t;let S=0;if(x<=e)S=0;else if(x>=v)S=n.length;else{const I=x-e;S=Math.floor(I/b)}r.current.style.width=`${S}px`}l&&(a.current=requestAnimationFrame(m))};return l?a.current=requestAnimationFrame(m):m(),()=>{a.current&&(cancelAnimationFrame(a.current),a.current=null)}},[l,p,b,e,t,n.length,i,u,d]),c.useEffect(()=>{if(!l&&r.current){const w=(i.current??0)*p,x=e+t;let v=0;if(w<=e)v=0;else if(w>=x)v=n.length;else{const S=w-e;v=Math.floor(S/b)}r.current.style.width=`${v}px`}});const C=s?.waveformDrawMode||"inverted";let y;C==="inverted"?y=n.isSelected&&s?s.selectedWaveFillColor:s?.waveFillColor||"white":y=n.isSelected&&s?s.selectedWaveOutlineColor:s?.waveOutlineColor||"grey";const g=Gt(y);return Z.jsxs(Dl,{children:[Z.jsx(Tl,{$color:g,$height:o,$top:n.index*o,$width:n.length}),Z.jsx(_l,{ref:r,$color:f,$height:o,$top:n.index*o}),Z.jsx(Ml,{children:Z.jsx(Vo,{...n,transparentBackground:!0})})]})},Bl=60,Fl=({renderTrackControls:e,renderTimestamp:t,renderPlayhead:n,annotationControls:r,annotationListConfig:a,annotationTextHeight:s,className:o,showClipHeaders:l=!1,interactiveClips:i=!1,showFades:u=!1,touchOptimized:d=!1,recordingState:b})=>{const p=Mn(),{isPlaying:f,currentTimeRef:C,playbackStartTimeRef:y,audioStartPositionRef:g}=We(),{selectionStart:m,selectionEnd:w,annotations:x,activeAnnotationId:v,annotationsEditable:S,linkEndpoints:I,continuousPlay:$,selectedTrackId:M,loopStart:T,loopEnd:_,isLoopEnabled:D}=Le(),{setAnnotations:V,setActiveAnnotationId:W,setTrackMute:O,setTrackSolo:N,setTrackVolume:Y,setTrackPan:ee,setSelection:re,play:X,setScrollContainer:oe,setSelectedTrackId:A,setCurrentTime:j,setLoopRegion:H}=we(),{audioBuffers:U,peaksDataArray:ge,trackStates:Be,tracks:ie,duration:Te,samplesPerPixel:ue,sampleRate:me,waveHeight:gt,timeScaleHeight:dt,controls:de,playoutRef:at,barWidth:ot,barGap:Je}=De(),[st,z]=c.useState(!1),Re=c.useRef(null),xe=c.useCallback(K=>{Re.current=K,oe(K)},[oe]);let be=U.length>0?Te:Bl;if(b?.isRecording){const te=(b.startSample+b.durationSamples)/me;be=Math.max(be,te+10)}const Ze=Math.floor(be*me/ue),Xe=async K=>{console.log("Annotation clicked:",K.id),W(K.id);const te=$?void 0:K.end-K.start;await X(K.start,te)},Pe=c.useCallback(K=>{if(K>=0&&K<ie.length){const te=ie[K];A(te.id)}},[ie,A]),He=K=>{const te=K.currentTarget.getBoundingClientRect(),he=de.show?de.width:0,Ee=(K.clientX-te.left-he)*ue/me,le=K.clientY-te.top;let Ye=0,Ke=-1;for(let ze=0;ze<ge.length;ze++){const _e=ge[ze],qe=(_e.length>0?Math.max(..._e.map(mt=>mt.peaks.data.length)):1)*gt+(l?22:0);if(le>=Ye&&le<Ye+qe){Ke=ze;break}Ye+=qe}Ke!==-1&&Pe(Ke),z(!0),j(Ee),re(Ee,Ee)},Ge=K=>{if(!st)return;const te=K.currentTarget.getBoundingClientRect(),he=de.show?de.width:0,Ee=(K.clientX-te.left-he)*ue/me,Ae=Math.min(m,Ee),le=Math.max(m,Ee);re(Ae,le)},ft=K=>{if(!st)return;z(!1);const te=K.currentTarget.getBoundingClientRect(),he=de.show?de.width:0,Ee=(K.clientX-te.left-he)*ue/me,Ae=Math.min(m,Ee),le=Math.max(m,Ee);Math.abs(le-Ae)<.1?(j(Ae),f&&at.current?(at.current.stop(),X(Ae)):at.current&&at.current.stop()):re(Ae,le)};return ie.some(K=>K.clips.length>0)&&(U.length===0||ge.length===0)?Z.jsx("div",{className:o,children:"Loading waveform..."}):Z.jsx(_o,{children:Z.jsxs(_n.Provider,{value:{samplesPerPixel:ue,sampleRate:me,zoomLevels:[ue],waveHeight:gt,timeScaleHeight:dt,duration:be,controls:de,barWidth:ot,barGap:Je},children:[Z.jsx(Kr,{theme:p,backgroundColor:Gt(p.waveOutlineColor),timescaleBackgroundColor:p.timescaleBackgroundColor,scrollContainerWidth:Ze+(de.show?de.width:0),timescaleWidth:Ze,tracksWidth:Ze,controlsWidth:de.show?de.width:0,onTracksMouseDown:He,onTracksMouseMove:Ge,onTracksMouseUp:ft,scrollContainerRef:xe,isSelecting:st,timescale:dt>0?Z.jsxs(Z.Fragment,{children:[Z.jsx(Ho,{duration:be*1e3,marker:1e4,bigStep:5e3,secondStep:1e3,renderTimestamp:t}),D&&Z.jsx(Do,{startPosition:Math.min(T,_)*me/ue,endPosition:Math.max(T,_)*me/ue,markerColor:p.loopMarkerColor,regionColor:p.loopRegionColor,minPosition:0,maxPosition:Ze,controlsOffset:de.show?de.width:0,onLoopRegionChange:(K,te)=>{const he=K*ue/me,ye=te*ue/me;H(he,ye)}})]}):void 0,children:Z.jsxs(Z.Fragment,{children:[ge.map((K,te)=>{const he=ie[te];if(!he)return null;const ye=Be[te]||{name:`Track ${te+1}`,muted:!1,soloed:!1,volume:1,pan:0},Ee=e?e(te):Z.jsxs(ts,{onClick:()=>Pe(te),children:[Z.jsx(ns,{style:{justifyContent:"center"},children:ye.name||`Track ${te+1}`}),Z.jsxs(es,{children:[Z.jsx(ir,{$variant:ye.muted?"danger":"outline",onClick:()=>O(te,!ye.muted),children:"Mute"}),Z.jsx(ir,{$variant:ye.soloed?"info":"outline",onClick:()=>N(te,!ye.soloed),children:"Solo"})]}),Z.jsxs(cr,{children:[Z.jsx(rs,{}),Z.jsx(lr,{min:"0",max:"1",step:"0.01",value:ye.volume,onChange:le=>Y(te,parseFloat(le.target.value))}),Z.jsx(as,{})]}),Z.jsxs(cr,{children:[Z.jsx("span",{children:"L"}),Z.jsx(lr,{min:"-1",max:"1",step:"0.01",value:ye.pan,onChange:le=>ee(te,parseFloat(le.target.value))}),Z.jsx("span",{children:"R"})]})]}),Ae=K.length>0?Math.max(...K.map(le=>le.peaks.data.length)):1;return Z.jsx(Qr.Provider,{value:Ee,children:Z.jsxs(Qo,{numChannels:Ae,backgroundColor:Gt(p.waveOutlineColor),offset:0,width:Ze,hasClipHeaders:l,trackId:he.id,isSelected:he.id===M,children:[K.map((le,Ye)=>{const Ke=le.peaks,ze=Ke.length;return Z.jsx(ar,{clipId:le.clipId,trackIndex:te,clipIndex:Ye,trackName:le.trackName,startSample:le.startSample,durationSamples:le.durationSamples,samplesPerPixel:ue,showHeader:l,disableHeaderDrag:!i,isSelected:he.id===M,trackId:he.id,fadeIn:le.fadeIn,fadeOut:le.fadeOut,sampleRate:me,showFades:u,touchOptimized:d,onMouseDown:_e=>{_e.target.closest('[role="button"][aria-roledescription="draggable"]')||Pe(te)},children:Ke.data.map((_e,Ie)=>Z.jsx(Br,{index:Ie,data:_e,bits:Ke.bits,length:ze,isSelected:he.id===M,clipStartSample:le.startSample,clipDurationSamples:le.durationSamples},`${te}-${Ye}-${Ie}`))},`${te}-${Ye}`)}),b?.isRecording&&b.trackId===he.id&&b.peaks.length>0&&Z.jsx(ar,{clipId:"recording-preview",trackIndex:te,clipIndex:K.length,trackName:"Recording...",startSample:b.startSample,durationSamples:b.durationSamples,samplesPerPixel:ue,showHeader:l,disableHeaderDrag:!0,isSelected:he.id===M,trackId:he.id,children:Z.jsx(Br,{index:0,data:b.peaks,bits:16,length:Math.floor(b.peaks.length/2),isSelected:he.id===M,clipStartSample:b.startSample,clipDurationSamples:b.durationSamples},`${te}-recording-0`)},`${te}-recording`)]})},he.id)}),x.length>0&&Z.jsx(Ls,{height:30,width:Ze,children:x.map((K,te)=>{const he=K.start*me/ue,ye=K.end*me/ue;return Z.jsx(js,{annotationId:K.id,annotationIndex:te,startPosition:he,endPosition:ye,label:K.id,color:"#ff9800",isActive:K.id===v,onClick:()=>Xe(K),editable:S},K.id)})}),m!==w&&Z.jsx(ko,{startPosition:Math.min(m,w)*me/ue+(de.show?de.width:0),endPosition:Math.max(m,w)*me/ue+(de.show?de.width:0),color:p.selectionColor}),(f||m===w)&&(n?n({position:(C.current??0)*me/ue+(de.show?de.width:0),color:p.playheadColor,isPlaying:f,currentTimeRef:C,playbackStartTimeRef:y,audioStartPositionRef:g,samplesPerPixel:ue,sampleRate:me,controlsOffset:de.show?de.width:0,getAudioContextTime:()=>P.getContext().currentTime}):Z.jsx(El,{color:p.playheadColor,controlsOffset:de.show?de.width:0}))]})}),x.length>0&&Z.jsx(ti,{annotations:x,activeAnnotationId:v??void 0,shouldScrollToActive:!0,editable:S,controls:S?r:void 0,annotationListConfig:{linkEndpoints:I,continuousPlay:$},height:s,onAnnotationUpdate:K=>{V(K)}})]})})};exports.Tone=Wr;exports.AudioPosition=wl;exports.AutomaticScrollCheckbox=yl;exports.ContinuousPlayCheckbox=Il;exports.DownloadAnnotationsButton=kl;exports.EditableCheckbox=Al;exports.ExportWavButton=$l;exports.FastForwardButton=ul;exports.LinkEndpointsCheckbox=Sl;exports.LoopButton=ml;exports.MasterVolumeControl=bl;exports.PauseButton=il;exports.PlayButton=sl;exports.RewindButton=cl;exports.SelectionTimeInputs=xl;exports.SetLoopRegionButton=hl;exports.SkipBackwardButton=dl;exports.SkipForwardButton=fl;exports.StopButton=ll;exports.TimeFormatSelect=vl;exports.Waveform=Fl;exports.WaveformPlaylistProvider=al;exports.ZoomInButton=pl;exports.ZoomOutButton=gl;exports.createEffectChain=Ui;exports.createEffectInstance=_t;exports.effectCategories=Hi;exports.effectDefinitions=Mt;exports.getEffectDefinition=Zn;exports.getEffectsByCategory=Xi;exports.getShortcutLabel=Ei;exports.getWaveformDataMetadata=ks;exports.loadPeaksFromWaveformData=As;exports.loadWaveformData=Bn;exports.useAnnotationDragHandlers=mi;exports.useAnnotationKeyboardControls=Ti;exports.useAudioTracks=di;exports.useClipDragHandlers=fi;exports.useClipSplitting=Ri;exports.useDragSensors=$i;exports.useDynamicEffects=Ji;exports.useExportWav=da;exports.useIntegratedRecording=Li;exports.useKeyboardShortcuts=Kt;exports.useMasterAnalyser=li;exports.useMasterVolume=oa;exports.usePlaybackAnimation=We;exports.usePlaybackShortcuts=Di;exports.usePlaylistControls=we;exports.usePlaylistData=De;exports.usePlaylistState=Le;exports.useTimeFormat=ra;exports.useTrackDynamicEffects=qi;exports.useWaveformPlaylist=ol;exports.useZoomControls=aa;exports.waveformDataToPeaks=na;
1371
1254
  //# sourceMappingURL=index.js.map