@waveform-playlist/browser 9.3.0 → 9.3.2
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.d.ts +35 -0
- package/dist/index.js +69 -69
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1086 -1035
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use strict";var Hf=Object.create;var al=Object.defineProperty;var Gf=Object.getOwnPropertyDescriptor;var Uf=Object.getOwnPropertyNames;var Xf=Object.getPrototypeOf,Yf=Object.prototype.hasOwnProperty;var Kf=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Uf(t))!Yf.call(e,s)&&s!==n&&al(e,s,{get:()=>t[s],enumerable:!(r=Gf(t,s))||r.enumerable});return e};var qf=(e,t,n)=>(n=e!=null?Hf(Xf(e)):{},Kf(t||!e||!e.__esModule?al(n,"default",{value:e,enumerable:!0}):n,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("tone"),S=require("react/jsx-runtime"),p=require("react"),P=require("styled-components"),bo=require("react-dom");function oc(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 ic=oc(O),D=oc(p);var fa={exports:{}},ol;function Jf(){return ol||(ol=1,(function(e,t){(function(n,r){e.exports=r()})(window,(function(){return(function(n){var r={};function s(a){if(r[a])return r[a].exports;var o=r[a]={i:a,l:!1,exports:{}};return n[a].call(o.exports,o,o.exports,s),o.l=!0,o.exports}return s.m=n,s.c=r,s.d=function(a,o,i){s.o(a,o)||Object.defineProperty(a,o,{enumerable:!0,get:i})},s.r=function(a){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},s.t=function(a,o){if(1&o&&(a=s(a)),8&o||4&o&&typeof a=="object"&&a&&a.__esModule)return a;var i=Object.create(null);if(s.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:a}),2&o&&typeof a!="string")for(var l in a)s.d(i,l,(function(c){return a[c]}).bind(null,l));return i},s.n=function(a){var o=a&&a.__esModule?function(){return a.default}:function(){return a};return s.d(o,"a",o),o},s.o=function(a,o){return Object.prototype.hasOwnProperty.call(a,o)},s.p="",s(s.s="./src/index.ts")})({"./src/chunk.ts":function(n,r,s){s.r(r),s.d(r,"SF2Chunk",(function(){return d}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=s("./src/chunks/index.ts");function l(h){return(l=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(v){return typeof v}:function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v})(h)}function c(h,v){for(var y=0;y<v.length;y++){var g=v[y];g.enumerable=g.enumerable||!1,g.configurable=!0,"value"in g&&(g.writable=!0),Object.defineProperty(h,g.key,g)}}function u(h){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)})(h)}function f(h,v){return(f=Object.setPrototypeOf||function(y,g){return y.__proto__=g,y})(h,v)}function m(h){if(h===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return h}var d=(function(h){function v(b){var _,w,x,C,k,I;return(function(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")})(this,v),w=this,_=!(x=u(v).call(this,b.id,b.length,b.buffer,b.subChunks))||l(x)!=="object"&&typeof x!="function"?m(w):x,C=m(m(_)),I=void 0,(k="subChunks")in C?Object.defineProperty(C,k,{value:I,enumerable:!0,configurable:!0,writable:!0}):C[k]=I,_.subChunks=b.subChunks.map((function(E){return new v(E)})),_}var y,g;return(function(b,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");b.prototype=Object.create(_&&_.prototype,{constructor:{value:b,writable:!0,configurable:!0}}),_&&f(b,_)})(v,h),y=v,(g=[{key:"getMetaData",value:function(){if(this.id!=="LIST")throw new a.ParseError("Unexpected chunk ID","'LIST'","'".concat(this.id,"'"));var b=this.subChunks.reduce((function(_,w){if(w.id==="ifil"||w.id==="iver"){if(w.length!==o.SF_VERSION_LENGTH)throw new a.ParseError("Invalid size for the '".concat(w.id,"' sub-chunk"));_[w.id]="".concat(w.getInt16(),".").concat(w.getInt16(2))}else _[w.id]=w.getString();return _}),{});if(!b.ifil)throw new a.ParseError("Missing required 'ifil' sub-chunk");if(!b.INAM)throw new a.ParseError("Missing required 'INAM' sub-chunk");return{version:b.ifil,soundEngine:b.isng||"EMU8000",name:b.INAM,rom:b.irom,romVersion:b.iver,creationDate:b.ICRD,author:b.IENG,product:b.IPRD,copyright:b.ICOP,comments:b.ICMT,createdBy:b.ISFT}}},{key:"getSampleData",value:function(){if(this.id!=="LIST")throw new a.ParseError("Unexpected chunk ID","'LIST'","'".concat(this.id,"'"));var b=this.subChunks[0];if(b.id!=="smpl")throw new a.ParseError("Invalid chunk signature","'smpl'","'".concat(b.id,"'"));return b.buffer}},{key:"getPresetData",value:function(){if(this.id!=="LIST")throw new a.ParseError("Unexpected chunk ID","'LIST'","'".concat(this.id,"'"));return{presetHeaders:Object(i.getPresetHeaders)(this.subChunks[0]),presetZones:Object(i.getZones)(this.subChunks[1],"pbag"),presetModulators:Object(i.getModulators)(this.subChunks[2],"pmod"),presetGenerators:Object(i.getGenerators)(this.subChunks[3],"pgen"),instrumentHeaders:Object(i.getInstrumentHeaders)(this.subChunks[4]),instrumentZones:Object(i.getZones)(this.subChunks[5],"ibag"),instrumentModulators:Object(i.getModulators)(this.subChunks[6],"imod"),instrumentGenerators:Object(i.getGenerators)(this.subChunks[7],"igen"),sampleHeaders:Object(i.getSampleHeaders)(this.subChunks[8])}}}])&&c(y.prototype,g),v})(a.RIFFChunk)},"./src/chunks/generators.ts":function(n,r,s){s.r(r),s.d(r,"getGenerators",(function(){return f}));var a=s("./src/riff/index.ts"),o=s("./src/types/index.ts"),i=s("./src/constants.ts"),l=[o.GeneratorType.StartAddrsOffset,o.GeneratorType.EndAddrsOffset,o.GeneratorType.StartLoopAddrsOffset,o.GeneratorType.EndLoopAddrsOffset,o.GeneratorType.StartAddrsCoarseOffset,o.GeneratorType.EndAddrsCoarseOffset,o.GeneratorType.StartLoopAddrsCoarseOffset,o.GeneratorType.KeyNum,o.GeneratorType.Velocity,o.GeneratorType.EndLoopAddrsCoarseOffset,o.GeneratorType.SampleModes,o.GeneratorType.ExclusiveClass,o.GeneratorType.OverridingRootKey],c=[o.GeneratorType.Unused1,o.GeneratorType.Unused2,o.GeneratorType.Unused3,o.GeneratorType.Unused4,o.GeneratorType.Reserved1,o.GeneratorType.Reserved2,o.GeneratorType.Reserved3],u=[o.GeneratorType.KeyRange,o.GeneratorType.VelRange],f=function(m,d){if(m.id!==d)throw new a.ParseError("Unexpected chunk ID","'".concat(d,"'"),"'".concat(m.id,"'"));if(m.length%i.SF_GENERATOR_SIZE)throw new a.ParseError("Invalid size for the '".concat(d,"' sub-chunk"));return m.iterate((function(h){var v=h.getInt16();return o.GeneratorType[v]?d==="pgen"&&l.includes(v)||d==="igen"&&c.includes(v)?null:u.includes(v)?{id:v,range:{lo:h.getByte(),hi:h.getByte()}}:{id:v,value:h.getInt16BE()}:null}))}},"./src/chunks/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/instruments/index.ts");s.d(r,"getInstrumentHeaders",(function(){return a.getInstrumentHeaders}));var o=s("./src/chunks/presets/index.ts");s.d(r,"getPresetHeaders",(function(){return o.getPresetHeaders}));var i=s("./src/chunks/samples/index.ts");s.d(r,"getSampleHeaders",(function(){return i.getSampleHeaders}));var l=s("./src/chunks/generators.ts");s.d(r,"getGenerators",(function(){return l.getGenerators}));var c=s("./src/chunks/modulators.ts");s.d(r,"getModulators",(function(){return c.getModulators}));var u=s("./src/chunks/zones.ts");s.d(r,"getZones",(function(){return u.getZones})),s.d(r,"getItemsInZone",(function(){return u.getItemsInZone}))},"./src/chunks/instruments/headers.ts":function(n,r,s){s.r(r),s.d(r,"getInstrumentHeaders",(function(){return i}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(l){if(l.id!=="inst")throw new a.ParseError("Unexpected chunk ID","'inst'","'".concat(l.id,"'"));if(l.length%o.SF_INSTRUMENT_HEADER_SIZE)throw new a.ParseError("Invalid size for the 'inst' sub-chunk");return l.iterate((function(c){return{name:c.getString(),bagIndex:c.getInt16()}}))}},"./src/chunks/instruments/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/instruments/headers.ts");s.d(r,"getInstrumentHeaders",(function(){return a.getInstrumentHeaders}))},"./src/chunks/modulators.ts":function(n,r,s){s.r(r),s.d(r,"getModulators",(function(){return l}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(c){return{type:c>>10&63,polarity:c>>9&1,direction:c>>8&1,palette:c>>7&1,index:127&c}},l=function(c,u){if(c.id!==u)throw new a.ParseError("Unexpected chunk ID","'".concat(u,"'"),"'".concat(c.id,"'"));if(c.length%o.SF_MODULATOR_SIZE)throw new a.ParseError("Invalid size for the '".concat(u,"' sub-chunk"));return c.iterate((function(f){return{source:i(f.getInt16BE()),id:f.getInt16BE(),value:f.getInt16BE(),valueSource:i(f.getInt16BE()),transform:f.getInt16BE()}}))}},"./src/chunks/presets/headers.ts":function(n,r,s){s.r(r),s.d(r,"getPresetHeaders",(function(){return i}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(l){if(l.id!=="phdr")throw new a.ParseError("Invalid chunk ID","'phdr'","'".concat(l.id,"'"));if(l.length%o.SF_PRESET_HEADER_SIZE)throw new a.ParseError("Invalid size for the 'phdr' sub-chunk");return l.iterate((function(c){return{name:c.getString(),preset:c.getInt16(),bank:c.getInt16(),bagIndex:c.getInt16(),library:c.getUInt32(),genre:c.getUInt32(),morphology:c.getUInt32()}}))}},"./src/chunks/presets/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/presets/headers.ts");s.d(r,"getPresetHeaders",(function(){return a.getPresetHeaders}))},"./src/chunks/samples/headers.ts":function(n,r,s){s.r(r),s.d(r,"getSampleHeaders",(function(){return i}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(l){if(l.id!=="shdr")throw new a.ParseError("Unexpected chunk ID","'shdr'","'".concat(l.id,"'"));if(l.length%o.SF_SAMPLE_HEADER_SIZE)throw new a.ParseError("Invalid size for the 'shdr' sub-chunk");return l.iterate((function(c){return{name:c.getString(),start:c.getUInt32(),end:c.getUInt32(),startLoop:c.getUInt32(),endLoop:c.getUInt32(),sampleRate:c.getUInt32(),originalPitch:c.getByte(),pitchCorrection:c.getChar(),link:c.getInt16(),type:c.getInt16()}}))}},"./src/chunks/samples/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/samples/headers.ts");s.d(r,"getSampleHeaders",(function(){return a.getSampleHeaders}))},"./src/chunks/zones.ts":function(n,r,s){s.r(r),s.d(r,"getZones",(function(){return l})),s.d(r,"getItemsInZone",(function(){return c}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=s("./src/types/index.ts"),l=function(d,h){if(d.id!==h)throw new a.ParseError("Unexpected chunk ID","'".concat(h,"'"),"'".concat(d.id,"'"));if(d.length%o.SF_BAG_SIZE)throw new a.ParseError("Invalid size for the '".concat(h,"' sub-chunk"));return d.iterate((function(v){return{generatorIndex:v.getInt16(),modulatorIndex:v.getInt16()}}))},c=function(d,h,v,y,g,b){for(var _=[],w=0;w<d.length;w++){for(var x=d[w],C=d[w+1],k=x.bagIndex,I=C?C.bagIndex:h.length,E=[],T=void 0,R=k;R<I;R++){var A=u(R,h,v),M=f(R,h,y),$=M[i.GeneratorType.KeyRange]&&M[i.GeneratorType.KeyRange].range,F=M[b];if(F){var L=g[F.value];L&&E.push({keyRange:$,modulators:A,generators:M,reference:L})}else R-k==0&&(T={keyRange:$,modulators:A,generators:M})}_.push({header:x,globalZone:T,zones:E})}return _},u=function(d,h,v){var y=h[d],g=h[d+1],b=y.modulatorIndex,_=g?g.modulatorIndex:h.length;return m(b,_,v)},f=function(d,h,v){var y=h[d],g=h[d+1],b=y.generatorIndex,_=g?g.generatorIndex:h.length;return m(b,_,v)},m=function(d,h,v){for(var y={},g=d;g<h;g++){var b=v[g];b&&(y[b.id]=b)}return y}},"./src/constants.ts":function(n,r,s){s.r(r),s.d(r,"SF_VERSION_LENGTH",(function(){return a})),s.d(r,"SF_PRESET_HEADER_SIZE",(function(){return o})),s.d(r,"SF_BAG_SIZE",(function(){return i})),s.d(r,"SF_MODULATOR_SIZE",(function(){return l})),s.d(r,"SF_GENERATOR_SIZE",(function(){return c})),s.d(r,"SF_INSTRUMENT_HEADER_SIZE",(function(){return u})),s.d(r,"SF_SAMPLE_HEADER_SIZE",(function(){return f})),s.d(r,"DEFAULT_SAMPLE_RATE",(function(){return m}));var a=4,o=38,i=4,l=10,c=4,u=22,f=46,m=22050},"./src/index.ts":function(n,r,s){s.r(r);var a=s("./src/types/index.ts");for(var o in a)["default"].indexOf(o)<0&&(function(u){s.d(r,u,(function(){return a[u]}))})(o);var i=s("./src/chunk.ts");s.d(r,"SF2Chunk",(function(){return i.SF2Chunk}));var l=s("./src/constants.ts");s.d(r,"SF_VERSION_LENGTH",(function(){return l.SF_VERSION_LENGTH})),s.d(r,"SF_PRESET_HEADER_SIZE",(function(){return l.SF_PRESET_HEADER_SIZE})),s.d(r,"SF_BAG_SIZE",(function(){return l.SF_BAG_SIZE})),s.d(r,"SF_MODULATOR_SIZE",(function(){return l.SF_MODULATOR_SIZE})),s.d(r,"SF_GENERATOR_SIZE",(function(){return l.SF_GENERATOR_SIZE})),s.d(r,"SF_INSTRUMENT_HEADER_SIZE",(function(){return l.SF_INSTRUMENT_HEADER_SIZE})),s.d(r,"SF_SAMPLE_HEADER_SIZE",(function(){return l.SF_SAMPLE_HEADER_SIZE})),s.d(r,"DEFAULT_SAMPLE_RATE",(function(){return l.DEFAULT_SAMPLE_RATE}));var c=s("./src/soundFont2.ts");s.d(r,"SoundFont2",(function(){return c.SoundFont2}))},"./src/riff/chunkIterator.ts":function(n,r,s){s.r(r),s.d(r,"ChunkIterator",(function(){return c}));var a=s("./src/utils/index.ts");function o(u,f){if(!(u instanceof f))throw new TypeError("Cannot call a class as a function")}function i(u,f){for(var m=0;m<f.length;m++){var d=f[m];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(u,d.key,d)}}function l(u,f,m){return f in u?Object.defineProperty(u,f,{value:m,enumerable:!0,configurable:!0,writable:!0}):u[f]=m,u}var c=(function(){function u(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;o(this,u),l(this,"target",[]),l(this,"chunk",void 0),l(this,"position",0),this.chunk=d,this.position=h}var f,m;return f=u,(m=[{key:"iterate",value:function(d){for(;this.position<this.chunk.length;){var h=d(this);h&&this.target.push(h)}}},{key:"getString",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:20,h=Object(a.getStringFromBuffer)(this.getBuffer(this.position,d));return this.position+=d,h}},{key:"getInt16",value:function(){return this.chunk.buffer[this.position++]|this.chunk.buffer[this.position++]<<8}},{key:"getInt16BE",value:function(){return this.getInt16()<<16>>16}},{key:"getUInt32",value:function(){return(this.chunk.buffer[this.position++]|this.chunk.buffer[this.position++]<<8|this.chunk.buffer[this.position++]<<16|this.chunk.buffer[this.position++]<<24)>>>0}},{key:"getByte",value:function(){return this.chunk.buffer[this.position++]}},{key:"getChar",value:function(){return this.chunk.buffer[this.position++]<<24>>24}},{key:"skip",value:function(d){this.position+=d}},{key:"getBuffer",value:function(d,h){return this.chunk.buffer.subarray(d,d+h)}},{key:"currentPosition",get:function(){return this.position}}])&&i(f.prototype,m),u})()},"./src/riff/index.ts":function(n,r,s){s.r(r);var a=s("./src/riff/chunkIterator.ts");s.d(r,"ChunkIterator",(function(){return a.ChunkIterator}));var o=s("./src/riff/parseError.ts");s.d(r,"ParseError",(function(){return o.ParseError}));var i=s("./src/riff/parser.ts");s.d(r,"parseBuffer",(function(){return i.parseBuffer})),s.d(r,"getChunk",(function(){return i.getChunk})),s.d(r,"getChunkLength",(function(){return i.getChunkLength})),s.d(r,"getSubChunks",(function(){return i.getSubChunks})),s.d(r,"getChunkId",(function(){return i.getChunkId}));var l=s("./src/riff/riffChunk.ts");s.d(r,"RIFFChunk",(function(){return l.RIFFChunk}))},"./src/riff/parseError.ts":function(n,r,s){function a(d){return(a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(h){return typeof h}:function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h})(d)}function o(d,h){return!h||a(h)!=="object"&&typeof h!="function"?(function(v){if(v===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return v})(d):h}function i(d){var h=typeof Map=="function"?new Map:void 0;return(i=function(v){if(v===null||(y=v,Function.toString.call(y).indexOf("[native code]")===-1))return v;var y;if(typeof v!="function")throw new TypeError("Super expression must either be null or a function");if(h!==void 0){if(h.has(v))return h.get(v);h.set(v,g)}function g(){return c(v,arguments,f(this).constructor)}return g.prototype=Object.create(v.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),u(g,v)})(d)}function l(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch{return!1}}function c(d,h,v){return(c=l()?Reflect.construct:function(y,g,b){var _=[null];_.push.apply(_,g);var w=new(Function.bind.apply(y,_));return b&&u(w,b.prototype),w}).apply(null,arguments)}function u(d,h){return(u=Object.setPrototypeOf||function(v,y){return v.__proto__=y,v})(d,h)}function f(d){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)})(d)}s.r(r),s.d(r,"ParseError",(function(){return m}));var m=(function(d){function h(v,y,g){return(function(b,_){if(!(b instanceof _))throw new TypeError("Cannot call a class as a function")})(this,h),o(this,f(h).call(this,"".concat(v).concat(y&&g?", expected ".concat(y,", received ").concat(g):"")))}return(function(v,y){if(typeof y!="function"&&y!==null)throw new TypeError("Super expression must either be null or a function");v.prototype=Object.create(y&&y.prototype,{constructor:{value:v,writable:!0,configurable:!0}}),y&&u(v,y)})(h,d),h})(i(Error))},"./src/riff/parser.ts":function(n,r,s){s.r(r),s.d(r,"parseBuffer",(function(){return l})),s.d(r,"getChunk",(function(){return c})),s.d(r,"getChunkLength",(function(){return u})),s.d(r,"getSubChunks",(function(){return f})),s.d(r,"getChunkId",(function(){return m}));var a=s("./src/riff/parseError.ts"),o=s("./src/utils/buffer.ts"),i=s("./src/riff/riffChunk.ts"),l=function(d){var h=m(d);if(h!=="RIFF")throw new a.ParseError("Invalid file format","RIFF",h);var v=m(d,8);if(v!=="sfbk")throw new a.ParseError("Invalid signature","sfbk",v);var y=d.subarray(8),g=f(y.subarray(4));return new i.RIFFChunk(h,y.length,y,g)},c=function(d,h){var v=m(d,h),y=u(d,h+4),g=[];return v!=="RIFF"&&v!=="LIST"||(g=f(d.subarray(h+12))),new i.RIFFChunk(v,y,d.subarray(h+8),g)},u=function(d,h){return((d=d.subarray(h,h+4))[0]|d[1]<<8|d[2]<<16|d[3]<<24)>>>0},f=function(d){for(var h=[],v=0;v<=d.length-8;){var y=c(d,v);h.push(y),v=(v+=8+y.length)%2?v+1:v}return h},m=function(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Object(o.getStringFromBuffer)(d.subarray(h,h+4))}},"./src/riff/riffChunk.ts":function(n,r,s){s.r(r),s.d(r,"RIFFChunk",(function(){return c}));var a=s("./src/riff/chunkIterator.ts"),o=s("./src/utils/index.ts");function i(u,f){for(var m=0;m<f.length;m++){var d=f[m];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(u,d.key,d)}}function l(u,f,m){return f in u?Object.defineProperty(u,f,{value:m,enumerable:!0,configurable:!0,writable:!0}):u[f]=m,u}var c=(function(){function u(d,h,v,y){(function(g,b){if(!(g instanceof b))throw new TypeError("Cannot call a class as a function")})(this,u),l(this,"id",void 0),l(this,"length",void 0),l(this,"buffer",void 0),l(this,"subChunks",void 0),this.id=d,this.length=h,this.buffer=v,this.subChunks=y}var f,m;return f=u,(m=[{key:"getString",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,h=arguments.length>1?arguments[1]:void 0;return Object(o.getStringFromBuffer)(this.getBuffer(d,h||this.length-d))}},{key:"getInt16",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[d++]|this.buffer[d]<<8}},{key:"getUInt32",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return(this.buffer[d++]|this.buffer[d++]<<8|this.buffer[d++]<<16|this.buffer[d]<<24)>>>0}},{key:"getByte",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[d]}},{key:"getChar",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[d]<<24>>24}},{key:"iterator",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new a.ChunkIterator(this,d)}},{key:"iterate",value:function(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,v=new a.ChunkIterator(this,h);return v.iterate(d),v.target}},{key:"getBuffer",value:function(d,h){return this.buffer.subarray(d,d+h)}}])&&i(f.prototype,m),u})()},"./src/soundFont2.ts":function(n,r,s){s.r(r),s.d(r,"SoundFont2",(function(){return h}));var a=s("./src/types/index.ts"),o=s("./src/chunk.ts"),i=s("./src/riff/index.ts"),l=s("./src/chunks/index.ts"),c=s("./src/utils/index.ts");function u(v){for(var y=1;y<arguments.length;y++){var g=arguments[y]!=null?arguments[y]:{},b=Object.keys(g);typeof Object.getOwnPropertySymbols=="function"&&(b=b.concat(Object.getOwnPropertySymbols(g).filter((function(_){return Object.getOwnPropertyDescriptor(g,_).enumerable})))),b.forEach((function(_){d(v,_,g[_])}))}return v}function f(v,y){for(var g=0;g<y.length;g++){var b=y[g];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(v,b.key,b)}}function m(v,y,g){return y&&f(v.prototype,y),g&&f(v,g),v}function d(v,y,g){return y in v?Object.defineProperty(v,y,{value:g,enumerable:!0,configurable:!0,writable:!0}):v[y]=g,v}var h=(function(){function v(y){if((function(b,_){if(!(b instanceof _))throw new TypeError("Cannot call a class as a function")})(this,v),d(this,"chunk",void 0),d(this,"metaData",void 0),d(this,"sampleData",void 0),d(this,"samples",void 0),d(this,"presetData",void 0),d(this,"instruments",void 0),d(this,"presets",void 0),d(this,"banks",void 0),!(y instanceof o.SF2Chunk)){var g=Object(i.parseBuffer)(y);y=new o.SF2Chunk(g)}if(y.subChunks.length!==3)throw new i.ParseError("Invalid sfbk structure","3 chunks","".concat(y.subChunks.length," chunks"));this.chunk=y,this.metaData=y.subChunks[0].getMetaData(),this.sampleData=y.subChunks[1].getSampleData(),this.presetData=y.subChunks[2].getPresetData(),this.samples=this.getSamples(),this.instruments=this.getInstruments(),this.presets=this.getPresets(),this.banks=this.getBanks()}return m(v,null,[{key:"from",value:function(y){return new v(y)}}]),m(v,[{key:"getKeyData",value:function(y){var g=this,b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Object(c.memoize)((function(w,x,C){var k=g.banks[x];if(k){var I=k.presets[C];if(I){var E=I.zones.filter((function(j){return g.isKeyInRange(j,w)}));if(E.length>0){var T=!0,R=!1,A=void 0;try{for(var M,$=E[Symbol.iterator]();!(T=(M=$.next()).done);T=!0){var F=M.value,L=F.instrument,z=L.zones.filter((function(j){return g.isKeyInRange(j,w)}));if(z.length>0){var q=!0,Y=!1,ne=void 0;try{for(var G,J=z[Symbol.iterator]();!(q=(G=J.next()).done);q=!0){var ae=G.value,ue=ae.sample,de=u({},F.generators,ae.generators),Me=u({},F.modulators,ae.modulators);return{keyNumber:w,preset:I,instrument:L,sample:ue,generators:de,modulators:Me}}}catch(j){Y=!0,ne=j}finally{try{q||J.return==null||J.return()}finally{if(Y)throw ne}}}}}catch(j){R=!0,A=j}finally{try{T||$.return==null||$.return()}finally{if(R)throw A}}}}}return null}))(y,b,_)}},{key:"isKeyInRange",value:function(y,g){return y.keyRange===void 0||y.keyRange.lo<=g&&y.keyRange.hi>=g}},{key:"getBanks",value:function(){return this.presets.reduce((function(y,g){var b=g.header.bank;return y[b]||(y[b]={presets:[]}),y[b].presets[g.header.preset]=g,y}),[])}},{key:"getPresets",value:function(){var y=this.presetData,g=y.presetHeaders,b=y.presetZones,_=y.presetGenerators,w=y.presetModulators;return Object(l.getItemsInZone)(g,b,w,_,this.instruments,a.GeneratorType.Instrument).filter((function(x){return x.header.name!=="EOP"})).map((function(x){return{header:x.header,globalZone:x.globalZone,zones:x.zones.map((function(C){return{keyRange:C.keyRange,generators:C.generators,modulators:C.modulators,instrument:C.reference}}))}}))}},{key:"getInstruments",value:function(){var y=this.presetData,g=y.instrumentHeaders,b=y.instrumentZones,_=y.instrumentModulators,w=y.instrumentGenerators;return Object(l.getItemsInZone)(g,b,_,w,this.samples,a.GeneratorType.SampleId).filter((function(x){return x.header.name!=="EOI"})).map((function(x){return{header:x.header,globalZone:x.globalZone,zones:x.zones.map((function(C){return{keyRange:C.keyRange,generators:C.generators,modulators:C.modulators,sample:C.reference}}))}}))}},{key:"getSamples",value:function(){var y=this;return this.presetData.sampleHeaders.filter((function(g){return g.name!=="EOS"})).map((function(g){if(g.name!=="EOS"&&g.sampleRate<=0)throw new Error("Illegal sample rate of ".concat(g.sampleRate," hz in sample '").concat(g.name,"'"));return g.originalPitch>=128&&g.originalPitch<=254&&(g.originalPitch=60),g.startLoop-=g.start,g.endLoop-=g.start,{header:g,data:new Int16Array(new Uint8Array(y.sampleData.subarray(2*g.start,2*g.end)).buffer)}}))}}]),v})()},"./src/types/bank.ts":function(n,r){},"./src/types/generator.ts":function(n,r,s){var a,o;function i(c,u,f){return u in c?Object.defineProperty(c,u,{value:f,enumerable:!0,configurable:!0,writable:!0}):c[u]=f,c}s.r(r),s.d(r,"GeneratorType",(function(){return o})),s.d(r,"DEFAULT_GENERATOR_VALUES",(function(){return l})),(function(c){c[c.StartAddrsOffset=0]="StartAddrsOffset",c[c.EndAddrsOffset=1]="EndAddrsOffset",c[c.StartLoopAddrsOffset=2]="StartLoopAddrsOffset",c[c.EndLoopAddrsOffset=3]="EndLoopAddrsOffset",c[c.StartAddrsCoarseOffset=4]="StartAddrsCoarseOffset",c[c.ModLFOToPitch=5]="ModLFOToPitch",c[c.VibLFOToPitch=6]="VibLFOToPitch",c[c.ModEnvToPitch=7]="ModEnvToPitch",c[c.InitialFilterFc=8]="InitialFilterFc",c[c.InitialFilterQ=9]="InitialFilterQ",c[c.ModLFOToFilterFc=10]="ModLFOToFilterFc",c[c.ModEnvToFilterFc=11]="ModEnvToFilterFc",c[c.EndAddrsCoarseOffset=12]="EndAddrsCoarseOffset",c[c.ModLFOToVolume=13]="ModLFOToVolume",c[c.Unused1=14]="Unused1",c[c.ChorusEffectsSend=15]="ChorusEffectsSend",c[c.ReverbEffectsSend=16]="ReverbEffectsSend",c[c.Pan=17]="Pan",c[c.Unused2=18]="Unused2",c[c.Unused3=19]="Unused3",c[c.Unused4=20]="Unused4",c[c.DelayModLFO=21]="DelayModLFO",c[c.FreqModLFO=22]="FreqModLFO",c[c.DelayVibLFO=23]="DelayVibLFO",c[c.FreqVibLFO=24]="FreqVibLFO",c[c.DelayModEnv=25]="DelayModEnv",c[c.AttackModEnv=26]="AttackModEnv",c[c.HoldModEnv=27]="HoldModEnv",c[c.DecayModEnv=28]="DecayModEnv",c[c.SustainModEnv=29]="SustainModEnv",c[c.ReleaseModEnv=30]="ReleaseModEnv",c[c.KeyNumToModEnvHold=31]="KeyNumToModEnvHold",c[c.KeyNumToModEnvDecay=32]="KeyNumToModEnvDecay",c[c.DelayVolEnv=33]="DelayVolEnv",c[c.AttackVolEnv=34]="AttackVolEnv",c[c.HoldVolEnv=35]="HoldVolEnv",c[c.DecayVolEnv=36]="DecayVolEnv",c[c.SustainVolEnv=37]="SustainVolEnv",c[c.ReleaseVolEnv=38]="ReleaseVolEnv",c[c.KeyNumToVolEnvHold=39]="KeyNumToVolEnvHold",c[c.KeyNumToVolEnvDecay=40]="KeyNumToVolEnvDecay",c[c.Instrument=41]="Instrument",c[c.Reserved1=42]="Reserved1",c[c.KeyRange=43]="KeyRange",c[c.VelRange=44]="VelRange",c[c.StartLoopAddrsCoarseOffset=45]="StartLoopAddrsCoarseOffset",c[c.KeyNum=46]="KeyNum",c[c.Velocity=47]="Velocity",c[c.InitialAttenuation=48]="InitialAttenuation",c[c.Reserved2=49]="Reserved2",c[c.EndLoopAddrsCoarseOffset=50]="EndLoopAddrsCoarseOffset",c[c.CoarseTune=51]="CoarseTune",c[c.FineTune=52]="FineTune",c[c.SampleId=53]="SampleId",c[c.SampleModes=54]="SampleModes",c[c.Reserved3=55]="Reserved3",c[c.ScaleTuning=56]="ScaleTuning",c[c.ExclusiveClass=57]="ExclusiveClass",c[c.OverridingRootKey=58]="OverridingRootKey",c[c.Unused5=59]="Unused5",c[c.EndOper=60]="EndOper"})(o||(o={}));var l=(i(a={},o.StartAddrsOffset,0),i(a,o.EndAddrsOffset,0),i(a,o.StartLoopAddrsOffset,0),i(a,o.EndLoopAddrsOffset,0),i(a,o.StartAddrsCoarseOffset,0),i(a,o.ModLFOToPitch,0),i(a,o.VibLFOToPitch,0),i(a,o.ModEnvToPitch,0),i(a,o.InitialFilterFc,13500),i(a,o.InitialFilterQ,0),i(a,o.ModLFOToFilterFc,0),i(a,o.ModEnvToFilterFc,0),i(a,o.EndAddrsCoarseOffset,0),i(a,o.ModLFOToVolume,0),i(a,o.ChorusEffectsSend,0),i(a,o.ReverbEffectsSend,0),i(a,o.Pan,0),i(a,o.DelayModLFO,-12e3),i(a,o.FreqModLFO,0),i(a,o.DelayVibLFO,-12e3),i(a,o.FreqVibLFO,0),i(a,o.DelayModEnv,-12e3),i(a,o.AttackModEnv,-12e3),i(a,o.HoldModEnv,-12e3),i(a,o.DecayModEnv,-12e3),i(a,o.SustainModEnv,0),i(a,o.ReleaseModEnv,-12e3),i(a,o.KeyNumToModEnvHold,0),i(a,o.KeyNumToModEnvDecay,0),i(a,o.DelayVolEnv,-12e3),i(a,o.AttackVolEnv,-12e3),i(a,o.HoldVolEnv,-12e3),i(a,o.DecayVolEnv,-12e3),i(a,o.SustainVolEnv,0),i(a,o.ReleaseVolEnv,-12e3),i(a,o.KeyNumToVolEnvHold,0),i(a,o.KeyNumToVolEnvDecay,0),i(a,o.StartLoopAddrsCoarseOffset,0),i(a,o.KeyNum,-1),i(a,o.Velocity,-1),i(a,o.InitialAttenuation,0),i(a,o.EndLoopAddrsCoarseOffset,0),i(a,o.CoarseTune,0),i(a,o.FineTune,0),i(a,o.SampleModes,0),i(a,o.ScaleTuning,100),i(a,o.ExclusiveClass,0),i(a,o.OverridingRootKey,-1),a)},"./src/types/index.ts":function(n,r,s){s.r(r);var a=s("./src/types/bank.ts");for(var o in a)["default"].indexOf(o)<0&&(function(y){s.d(r,y,(function(){return a[y]}))})(o);var i=s("./src/types/generator.ts");s.d(r,"GeneratorType",(function(){return i.GeneratorType})),s.d(r,"DEFAULT_GENERATOR_VALUES",(function(){return i.DEFAULT_GENERATOR_VALUES}));var l=s("./src/types/instrument.ts");for(var o in l)["default","GeneratorType","DEFAULT_GENERATOR_VALUES"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return l[g]}))})(o);var c=s("./src/types/key.ts");for(var o in c)["default","GeneratorType","DEFAULT_GENERATOR_VALUES"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return c[g]}))})(o);var u=s("./src/types/metaData.ts");for(var o in u)["default","GeneratorType","DEFAULT_GENERATOR_VALUES"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return u[g]}))})(o);var f=s("./src/types/modulator.ts");s.d(r,"ControllerType",(function(){return f.ControllerType})),s.d(r,"ControllerPolarity",(function(){return f.ControllerPolarity})),s.d(r,"ControllerDirection",(function(){return f.ControllerDirection})),s.d(r,"ControllerPalette",(function(){return f.ControllerPalette})),s.d(r,"Controller",(function(){return f.Controller})),s.d(r,"TransformType",(function(){return f.TransformType})),s.d(r,"DEFAULT_INSTRUMENT_MODULATORS",(function(){return f.DEFAULT_INSTRUMENT_MODULATORS}));var m=s("./src/types/preset.ts");for(var o in m)["default","GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return m[g]}))})(o);var d=s("./src/types/presetData.ts");for(var o in d)["default","GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return d[g]}))})(o);var h=s("./src/types/sample.ts");s.d(r,"SampleType",(function(){return h.SampleType}));var v=s("./src/types/zone.ts");for(var o in v)["default","GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS","SampleType"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return v[g]}))})(o)},"./src/types/instrument.ts":function(n,r){},"./src/types/key.ts":function(n,r){},"./src/types/metaData.ts":function(n,r){},"./src/types/modulator.ts":function(n,r,s){s.r(r),s.d(r,"ControllerType",(function(){return a})),s.d(r,"ControllerPolarity",(function(){return o})),s.d(r,"ControllerDirection",(function(){return i})),s.d(r,"ControllerPalette",(function(){return l})),s.d(r,"Controller",(function(){return c})),s.d(r,"TransformType",(function(){return u})),s.d(r,"DEFAULT_INSTRUMENT_MODULATORS",(function(){return m}));var a,o,i,l,c,u,f=s("./src/types/generator.ts");(function(d){d[d.Linear=0]="Linear",d[d.Concave=1]="Concave",d[d.Convex=2]="Convex",d[d.Switch=3]="Switch"})(a||(a={})),(function(d){d[d.Unipolar=0]="Unipolar",d[d.Bipolar=1]="Bipolar"})(o||(o={})),(function(d){d[d.Increasing=0]="Increasing",d[d.Decreasing=1]="Decreasing"})(i||(i={})),(function(d){d[d.GeneralController=0]="GeneralController",d[d.MidiController=1]="MidiController"})(l||(l={})),(function(d){d[d.NoController=0]="NoController",d[d.NoteOnVelocity=2]="NoteOnVelocity",d[d.NoteOnKeyNumber=3]="NoteOnKeyNumber",d[d.PolyPressure=10]="PolyPressure",d[d.ChannelPressure=13]="ChannelPressure",d[d.PitchWheel=14]="PitchWheel",d[d.PitchWheelSensitivity=16]="PitchWheelSensitivity",d[d.Link=127]="Link"})(c||(c={})),(function(d){d[d.Linear=0]="Linear",d[d.Absolute=2]="Absolute"})(u||(u={}));var m=[{id:f.GeneratorType.InitialAttenuation,source:{type:a.Concave,polarity:o.Unipolar,direction:i.Decreasing,palette:l.GeneralController,index:c.NoteOnVelocity},value:960,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialFilterFc,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Decreasing,palette:l.GeneralController,index:c.NoteOnVelocity},value:-2400,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.VibLFOToPitch,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.ChannelPressure},value:50,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.VibLFOToPitch,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.MidiController,index:1},value:50,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialAttenuation,source:{type:a.Concave,polarity:o.Unipolar,direction:i.Decreasing,palette:l.MidiController,index:7},value:960,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialAttenuation,source:{type:a.Linear,polarity:o.Bipolar,direction:i.Increasing,palette:l.MidiController,index:10},value:1e3,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialAttenuation,source:{type:a.Concave,polarity:o.Unipolar,direction:i.Decreasing,palette:l.MidiController,index:11},value:960,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.ReverbEffectsSend,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.MidiController,index:91},value:200,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.ChorusEffectsSend,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.MidiController,index:93},value:200,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.CoarseTune,source:{type:a.Linear,polarity:o.Bipolar,direction:i.Increasing,palette:l.GeneralController,index:c.PitchWheel},value:12700,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.PitchWheelSensitivity},transform:u.Linear}]},"./src/types/preset.ts":function(n,r){},"./src/types/presetData.ts":function(n,r){},"./src/types/sample.ts":function(n,r,s){var a;s.r(r),s.d(r,"SampleType",(function(){return a})),(function(o){o[o.EOS=0]="EOS",o[o.Mono=1]="Mono",o[o.Right=2]="Right",o[o.Left=4]="Left",o[o.Linked=8]="Linked",o[o.RomMono=32769]="RomMono",o[o.RomRight=32770]="RomRight",o[o.RomLeft=32772]="RomLeft",o[o.RomLinked=32776]="RomLinked"})(a||(a={}))},"./src/types/zone.ts":function(n,r){},"./src/utils/buffer.ts":function(n,r,s){s.r(r),s.d(r,"getStringFromBuffer",(function(){return a}));var a=function(o){var i=new TextDecoder("utf8").decode(o),l=i.indexOf("\0");return(l===-1?i:i.slice(0,l)).trim()}},"./src/utils/index.ts":function(n,r,s){s.r(r);var a=s("./src/utils/buffer.ts");s.d(r,"getStringFromBuffer",(function(){return a.getStringFromBuffer}));var o=s("./src/utils/memoize.ts");s.d(r,"memoize",(function(){return o.memoize}))},"./src/utils/memoize.ts":function(n,r,s){s.r(r),s.d(r,"memoize",(function(){return a}));var a=function(o){var i={};return function(){for(var l=arguments.length,c=new Array(l),u=0;u<l;u++)c[u]=arguments[u];var f=JSON.stringify(c);if(f in i)return i[f];var m=o.apply(void 0,c);return i[f]=m,m}}}})}))})(fa)),fa.exports}Jf();var Le=1e3;function Aa(e){const{audioBuffer:t,startSample:n,offsetSamples:r=0,gain:s=1,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m}=e,d=t?.sampleRate??e.sampleRate??c?.sample_rate,h=t?.length??e.sourceDurationSamples??(c&&d?Math.ceil(c.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(h===void 0)throw new Error("createClip: sourceDurationSamples is required when audioBuffer is not provided (can use waveformData.duration)");t&&c&&t.sampleRate!==c.sample_rate&&console.warn(`Sample rate mismatch: audioBuffer (${t.sampleRate}) vs waveformData (${c.sample_rate}). Using audioBuffer sample rate. Waveform visualization may be slightly off.`);const v=e.durationSamples??h;return{id:uc(),audioBuffer:t,startSample:n,durationSamples:v,offsetSamples:r,sampleRate:d,sourceDurationSamples:h,gain:s,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m}}function lc(e){const{audioBuffer:t,startTime:n,offset:r=0,gain:s=1,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m}=e,d=t?.sampleRate??e.sampleRate??c?.sample_rate;if(d===void 0)throw new Error("createClipFromSeconds: sampleRate is required when audioBuffer is not provided (can use waveformData.sample_rate)");const h=t?.duration??e.sourceDuration??c?.duration;if(h===void 0)throw new Error("createClipFromSeconds: sourceDuration is required when audioBuffer is not provided (can use waveformData.duration)");t&&c&&t.sampleRate!==c.sample_rate&&console.warn(`Sample rate mismatch: audioBuffer (${t.sampleRate}) vs waveformData (${c.sample_rate}). Using audioBuffer sample rate. Waveform visualization may be slightly off.`);const v=e.duration??h;return Aa({audioBuffer:t,startSample:Math.round(n*d),durationSamples:Math.round(v*d),offsetSamples:Math.round(r*d),sampleRate:d,sourceDurationSamples:Math.ceil(h*d),gain:s,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m})}function cc(e){const{name:t,clips:n=[],muted:r=!1,soloed:s=!1,volume:a=1,pan:o=0,color:i,height:l,spectrogramConfig:c,spectrogramColorMap:u}=e;return{id:uc(),name:t,clips:n,muted:r,soloed:s,volume:a,pan:o,color:i,height:l,spectrogramConfig:c,spectrogramColorMap:u}}function uc(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function il(e){return[...e].sort((t,n)=>t.startSample-n.startSample)}function Qf(e,t){return Math.floor(e/t)}function eh(e,t,n){return Math.ceil(e*n/t)}var Hn=192;function zs(e,t=Hn){const[,n]=e;return t*(4/n)}function wo(e,t=Hn){const[n]=e;return n*zs(e,t)}function On(e,t,n,r=Hn){return Math.round(e*60*n/(t*r))}function Ta(e,t,n,r=Hn){return Math.round(e*r*t/(60*n))}function $a(e,t){return Math.round(e/t)*t}function th(e,t,n=Hn){const r=wo(t,n),s=zs(t,n),a=Math.floor(e/r)+1,o=Math.floor(e%r/s)+1;return o===1?`${a}`:`${a}.${o}`}function Qr(e){return e.startSample/e.sampleRate}function ll(e){return(e.startSample+e.durationSamples)/e.sampleRate}function cl(e){return e.offsetSamples/e.sampleRate}function ul(e){return e.durationSamples/e.sampleRate}function dc(e,t,n){return Math.floor((e+t)/n)-Math.floor(e/n)}var dl=!1;function xr(e){const t=e._param;return!t&&!dl&&(dl=!0,console.warn("[waveform-playlist] Unable to access Tone.js internal _param. This likely means the Tone.js version is incompatible. Mute scheduling may not work correctly.")),t}function fl(e,t){const n=new Float32Array(e),r=e-1;for(let s=0;s<e;s++){const a=s/r;n[s]=t?a:1-a}return n}function nh(e,t){const n=new Float32Array(e),r=e-1;for(let s=0;s<e;s++){const a=s/r,o=t?s:e-1-s;n[o]=Math.exp(2*a-1)/Math.E}return n}function rh(e,t){const n=new Float32Array(e),r=t?Math.PI/2:-Math.PI/2;for(let s=0;s<e;s++)n[s]=Math.sin(Math.PI*s/e-r)/2+.5;return n}function sh(e,t,n=10){const r=new Float32Array(e);for(let s=0;s<e;s++){const a=t?s:e-1-s,o=s/e;r[a]=Math.log(1+n*o)/Math.log(1+n)}return r}function fc(e,t,n){switch(e){case"linear":return fl(t,n);case"exponential":return nh(t,n);case"sCurve":return rh(t,n);case"logarithmic":return sh(t,n);default:return fl(t,n)}}function hl(e,t,n,r="linear",s=0,a=1){if(!(n<=0))if(r==="linear")e.setValueAtTime(s,t),e.linearRampToValueAtTime(a,t+n);else if(r==="exponential")e.setValueAtTime(Math.max(s,.001),t),e.exponentialRampToValueAtTime(Math.max(a,.001),t+n);else{const o=fc(r,1e4,!0),i=new Float32Array(o.length),l=a-s;for(let c=0;c<o.length;c++)i[c]=s+o[c]*l;e.setValueCurveAtTime(i,t,n)}}function pl(e,t,n,r="linear",s=1,a=0){if(!(n<=0))if(r==="linear")e.setValueAtTime(s,t),e.linearRampToValueAtTime(a,t+n);else if(r==="exponential")e.setValueAtTime(Math.max(s,.001),t),e.exponentialRampToValueAtTime(Math.max(a,.001),t+n);else{const o=fc(r,1e4,!1),i=new Float32Array(o.length),l=s-a;for(let c=0;c<o.length;c++)i[c]=a+o[c]*l;e.setValueCurveAtTime(i,t,n)}}var ah=class{constructor(e){this.activeSources=new Set,this._scheduleGuardOffset=0,this.track=e.track,this.volumeNode=new O.Volume(this.gainToDb(e.track.gain)),this.panNode=new O.Panner(e.track.stereoPan),this.muteGain=new O.Gain(e.track.muted?0:1),this.volumeNode.chain(this.panNode,this.muteGain);const t=e.destination||O.getDestination();if(e.effects){const o=e.effects(this.muteGain,t,!1);o&&(this.effectsCleanup=o)}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}]:[]),r=O.getTransport(),s=O.getContext().rawContext,a=this.volumeNode.input.input;this.scheduledClips=n.map(o=>{const i=s.createGain();i.gain.value=o.gain,i.connect(a);const l=this.track.startTime+o.startTime,c=r.schedule(u=>{l<this._scheduleGuardOffset||this.startClipSource(o,i,u)},l);return{clipInfo:o,fadeGainNode:i,scheduleId:c}})}startClipSource(e,t,n,r,s){const o=O.getContext().rawContext.createBufferSource();o.buffer=e.buffer,o.connect(t);const i=r??e.offset,l=s??e.duration;try{o.start(n,i,l)}catch(c){console.warn(`[waveform-playlist] Failed to start source on track "${this.id}" (time=${n}, offset=${i}, duration=${l}):`,c),o.disconnect();return}this.activeSources.add(o),o.onended=()=>{this.activeSources.delete(o)}}setScheduleGuardOffset(e){this._scheduleGuardOffset=e}startMidClipSources(e,t){for(const{clipInfo:n,fadeGainNode:r}of this.scheduledClips){const s=this.track.startTime+n.startTime,a=s+n.duration;if(s<e&&a>e){const o=e-s,i=n.offset+o,l=n.duration-o;this.startClipSource(n,r,t,i,l)}}}stopAllSources(){this.activeSources.forEach(e=>{try{e.stop()}catch(t){console.warn(`[waveform-playlist] Error stopping source on track "${this.id}":`,t)}}),this.activeSources.clear()}scheduleFades(e,t,n=0){const{clipInfo:r,fadeGainNode:s}=e,a=s.gain;a.cancelScheduledValues(0);const o=n-r.offset;if(r.fadeIn&&o<r.fadeIn.duration){const i=r.fadeIn.duration;if(o<=0)hl(a,t,i,r.fadeIn.type||"linear",0,r.gain);else{const l=i-o,c=o/i,u=r.gain*c;hl(a,t,l,r.fadeIn.type||"linear",u,r.gain)}}else a.setValueAtTime(r.gain,t);if(r.fadeOut){const l=r.duration-r.fadeOut.duration-o;if(l>0){const c=t+l;pl(a,c,r.fadeOut.duration,r.fadeOut.type||"linear",r.gain,0)}else if(l>-r.fadeOut.duration){const c=-l,u=r.fadeOut.duration-c,f=c/r.fadeOut.duration,m=r.gain*(1-f);pl(a,t,u,r.fadeOut.type||"linear",m,0)}}}prepareFades(e,t){this.scheduledClips.forEach(n=>{const r=this.track.startTime+n.clipInfo.startTime,s=r+n.clipInfo.duration;if(!(t>=s))if(t>=r){const a=t-r+n.clipInfo.offset;this.scheduleFades(n,e,a)}else{const a=r-t;this.scheduleFades(n,e+a,n.clipInfo.offset)}})}cancelFades(){this.scheduledClips.forEach(({fadeGainNode:e,clipInfo:t})=>{const n=e.gain;n.cancelScheduledValues(0),n.setValueAtTime(t.gain,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;const t=e?0:1;xr(this.muteGain.gain)?.setValueAtTime(t,0),this.muteGain.gain.value=t}setSolo(e){this.track.soloed=e}dispose(){const e=O.getTransport();if(this.effectsCleanup)try{this.effectsCleanup()}catch(t){console.warn(`[waveform-playlist] Error during track "${this.id}" effects cleanup:`,t)}this.stopAllSources(),this.scheduledClips.forEach((t,n)=>{try{e.clear(t.scheduleId)}catch(r){console.warn(`[waveform-playlist] Error clearing schedule ${n} on track "${this.id}":`,r)}try{t.fadeGainNode.disconnect()}catch(r){console.warn(`[waveform-playlist] Error disconnecting fadeGain ${n} on track "${this.id}":`,r)}});try{this.volumeNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing volumeNode on track "${this.id}":`,t)}try{this.panNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing panNode on track "${this.id}":`,t)}try{this.muteGain.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing muteGain on track "${this.id}":`,t)}}get id(){return this.track.id}get duration(){if(this.scheduledClips.length===0)return 0;const e=this.scheduledClips[this.scheduledClips.length-1];return e.clipInfo.startTime+e.clipInfo.duration}get buffer(){return this.scheduledClips[0]?.clipInfo.buffer}get muted(){return this.track.muted}get startTime(){return this.track.startTime}};function oh(e){return e===35||e===36?"kick":e>=37&&e<=40?"snare":e===41||e===43||e===45||e===47||e===48||e===50?"tom":"cymbal"}var ih=class{constructor(e){this.track=e.track,this.volumeNode=new O.Volume(this.gainToDb(e.track.gain)),this.panNode=new O.Panner(e.track.stereoPan),this.muteGain=new O.Gain(e.track.muted?0:1),this.volumeNode.chain(this.panNode,this.muteGain),this.synth=new O.PolySynth(O.Synth,e.synthOptions),this.synth.connect(this.volumeNode),this.kickSynth=new O.PolySynth(O.MembraneSynth,{voice:O.MembraneSynth,options:{pitchDecay:.05,octaves:6,envelope:{attack:.001,decay:.4,sustain:0,release:.1}}}),this.snareSynth=new O.NoiseSynth({noise:{type:"white"},envelope:{attack:.001,decay:.15,sustain:0,release:.05}}),this.cymbalSynth=new O.PolySynth(O.MetalSynth,{voice:O.MetalSynth,options:{envelope:{attack:.001,decay:.3,release:.1},harmonicity:5.1,modulationIndex:32,resonance:4e3,octaves:1.5}}),this.tomSynth=new O.PolySynth(O.MembraneSynth,{voice:O.MembraneSynth,options:{pitchDecay:.08,octaves:4,envelope:{attack:.001,decay:.3,sustain:0,release:.1}}}),this.kickSynth.connect(this.volumeNode),this.snareSynth.connect(this.volumeNode),this.cymbalSynth.connect(this.volumeNode),this.tomSynth.connect(this.volumeNode);const t=e.destination||O.getDestination();if(e.effects){const n=e.effects(this.muteGain,t,!1);n&&(this.effectsCleanup=n)}else this.muteGain.connect(t);this.scheduledClips=e.clips.map(n=>{const r=n.notes.filter(i=>{const l=i.time+i.duration;return i.time<n.offset+n.duration&&l>n.offset}),s=this.track.startTime+n.startTime,a=r.map(i=>{const l=i.time-n.offset,c=Math.max(0,l),u=Math.min(i.duration-Math.max(0,n.offset-i.time),n.duration-c);return{time:s+c,note:i.name,midi:i.midi,duration:Math.max(0,u),velocity:i.velocity,channel:i.channel}}),o=new O.Part((i,l)=>{l.duration>0&&this.triggerNote(l.midi,l.note,l.duration,i,l.velocity,l.channel)},a);return o.start(0),{clipInfo:n,part:o}})}triggerNote(e,t,n,r,s,a){if(a===9)switch(oh(e)){case"kick":this.kickSynth.triggerAttackRelease("C1",n,r,s);break;case"snare":try{this.snareSynth.triggerAttackRelease(n,r,s)}catch(i){console.warn("[waveform-playlist] Snare overlap — previous hit still decaying, skipped:",i)}break;case"tom":{const i={41:"G1",43:"A1",45:"C2",47:"D2",48:"E2",50:"G2"};this.tomSynth.triggerAttackRelease(i[e]||"C2",n,r,s);break}case"cymbal":this.cymbalSynth.triggerAttackRelease("C4",n,r,s);break}else this.synth.triggerAttackRelease(t,n,r,s)}gainToDb(e){return 20*Math.log10(e)}setScheduleGuardOffset(e){}startMidClipSources(e,t){for(const{clipInfo:n}of this.scheduledClips){const r=this.track.startTime+n.startTime,s=r+n.duration;if(r<e&&s>e)for(const a of n.notes){const o=a.time-n.offset,i=r+Math.max(0,o),l=i+a.duration;if(i<e&&l>e){const c=l-e;try{this.triggerNote(a.midi,a.name,c,t,a.velocity,a.channel)}catch(u){console.warn(`[waveform-playlist] Failed to start mid-clip MIDI note "${a.name}" on track "${this.id}":`,u)}}}}}stopAllSources(){const e=O.getContext().rawContext.currentTime;try{this.synth.releaseAll(e),this.kickSynth.releaseAll(e),this.cymbalSynth.releaseAll(e),this.tomSynth.releaseAll(e)}catch(t){console.warn(`[waveform-playlist] Error releasing synth on track "${this.id}":`,t)}}prepareFades(e,t){}cancelFades(){}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;const t=e?0:1;xr(this.muteGain.gain)?.setValueAtTime(t,0),this.muteGain.gain.value=t}setSolo(e){this.track.soloed=e}dispose(){if(this.effectsCleanup)try{this.effectsCleanup()}catch(t){console.warn(`[waveform-playlist] Error during MIDI track "${this.id}" effects cleanup:`,t)}this.stopAllSources(),this.scheduledClips.forEach(({part:t},n)=>{try{t.dispose()}catch(r){console.warn(`[waveform-playlist] Error disposing Part ${n} on MIDI track "${this.id}":`,r)}});const e=[this.synth,this.kickSynth,this.snareSynth,this.cymbalSynth,this.tomSynth];for(const t of e)try{t?.dispose()}catch(n){console.warn(`[waveform-playlist] Error disposing synth on MIDI track "${this.id}":`,n)}try{this.volumeNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing volumeNode on MIDI track "${this.id}":`,t)}try{this.panNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing panNode on MIDI track "${this.id}":`,t)}try{this.muteGain.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing muteGain on MIDI track "${this.id}":`,t)}}get id(){return this.track.id}get duration(){if(this.scheduledClips.length===0)return 0;const e=this.scheduledClips[this.scheduledClips.length-1];return e.clipInfo.startTime+e.clipInfo.duration}get muted(){return this.track.muted}get startTime(){return this.track.startTime}},hc=class Ra{constructor(t){this.activeSources=new Set,this.track=t.track,this.soundFontCache=t.soundFontCache,this.programNumber=t.programNumber??0,this.bankNumber=t.isPercussion?128:0,this.volumeNode=new O.Volume(this.gainToDb(t.track.gain)),this.panNode=new O.Panner(t.track.stereoPan),this.muteGain=new O.Gain(t.track.muted?0:1),this.volumeNode.chain(this.panNode,this.muteGain);const n=t.destination||O.getDestination();if(t.effects){const r=t.effects(this.muteGain,n,!1);r&&(this.effectsCleanup=r)}else this.muteGain.connect(n);this.scheduledClips=t.clips.map(r=>{const s=r.notes.filter(l=>{const c=l.time+l.duration;return l.time<r.offset+r.duration&&c>r.offset}),a=this.track.startTime+r.startTime,o=s.map(l=>{const c=l.time-r.offset,u=Math.max(0,c),f=Math.min(l.duration-Math.max(0,r.offset-l.time),r.duration-u);return{time:a+u,note:l.name,midi:l.midi,duration:Math.max(0,f),velocity:l.velocity,channel:l.channel}}),i=new O.Part((l,c)=>{c.duration>0&&this.triggerNote(c.midi,c.duration,l,c.velocity,c.channel)},o);return i.start(0),{clipInfo:r,part:i}})}triggerNote(t,n,r,s,a){const o=a===9?128:this.bankNumber,i=a===9?0:this.programNumber,l=this.soundFontCache.getAudioBuffer(t,o,i);if(!l){Ra._missingSampleWarned||(console.warn(`[waveform-playlist] SoundFont sample not found for MIDI note ${t} (bank ${o}, preset ${i}). Subsequent missing samples will be silent.`),Ra._missingSampleWarned=!0);return}const c=O.getContext().rawContext,u=c.createBufferSource();u.buffer=l.buffer,u.playbackRate.value=l.playbackRate,(l.loopMode===1||l.loopMode===3)&&(u.loop=!0,u.loopStart=l.loopStart,u.loopEnd=l.loopEnd);const f=l.buffer.duration/l.playbackRate,m=l.loopMode===0?Math.max(n,f):n,d=s*s,h=c.createGain(),{attackVolEnv:v,holdVolEnv:y,decayVolEnv:g,sustainVolEnv:b,releaseVolEnv:_}=l,w=d*b;h.gain.setValueAtTime(0,r),h.gain.linearRampToValueAtTime(d,r+v),y>.001&&h.gain.setValueAtTime(d,r+v+y);const x=r+v+y;h.gain.linearRampToValueAtTime(w,x+g),h.gain.setValueAtTime(w,r+m),h.gain.linearRampToValueAtTime(0,r+m+_),u.connect(h),h.connect(this.volumeNode.input.input),this.activeSources.add(u),u.onended=()=>{this.activeSources.delete(u);try{h.disconnect()}catch(C){console.warn("[waveform-playlist] GainNode already disconnected:",C)}},u.start(r),u.stop(r+m+_)}gainToDb(t){return 20*Math.log10(t)}setScheduleGuardOffset(t){}startMidClipSources(t,n){for(const{clipInfo:r}of this.scheduledClips){const s=this.track.startTime+r.startTime,a=s+r.duration;if(s<t&&a>t)for(const o of r.notes){const i=o.time-r.offset,l=s+Math.max(0,i),c=l+o.duration;if(l<t&&c>t){const u=c-t;try{this.triggerNote(o.midi,u,n,o.velocity,o.channel)}catch(f){console.warn(`[waveform-playlist] Failed to start mid-clip SoundFont note on track "${this.id}":`,f)}}}}}stopAllSources(){for(const t of this.activeSources)try{t.stop()}catch(n){console.warn("[waveform-playlist] Error stopping AudioBufferSourceNode:",n)}this.activeSources.clear()}prepareFades(t,n){}cancelFades(){}setVolume(t){this.track.gain=t,this.volumeNode.volume.value=this.gainToDb(t)}setPan(t){this.track.stereoPan=t,this.panNode.pan.value=t}setMute(t){this.track.muted=t;const n=t?0:1;xr(this.muteGain.gain)?.setValueAtTime(n,0),this.muteGain.gain.value=n}setSolo(t){this.track.soloed=t}dispose(){if(this.effectsCleanup)try{this.effectsCleanup()}catch(t){console.warn(`[waveform-playlist] Error during SoundFont track "${this.id}" effects cleanup:`,t)}this.stopAllSources(),this.scheduledClips.forEach(({part:t},n)=>{try{t.dispose()}catch(r){console.warn(`[waveform-playlist] Error disposing Part ${n} on SoundFont track "${this.id}":`,r)}});try{this.volumeNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing volumeNode on SoundFont track "${this.id}":`,t)}try{this.panNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing panNode on SoundFont track "${this.id}":`,t)}try{this.muteGain.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing muteGain on SoundFont track "${this.id}":`,t)}}get id(){return this.track.id}get duration(){if(this.scheduledClips.length===0)return 0;const t=this.scheduledClips[this.scheduledClips.length-1];return t.clipInfo.startTime+t.clipInfo.duration}get muted(){return this.track.muted}get startTime(){return this.track.startTime}};hc._missingSampleWarned=!1;var lh=hc,ch=class{constructor(e={}){if(this.tracks=new Map,this.isInitialized=!1,this.soloedTracks=new Set,this.manualMuteState=new Map,this._completionEventId=null,this._loopHandler=null,this._loopEnabled=!1,this._loopStart=0,this._loopEnd=0,this.masterVolume=new O.Volume(this.gainToDb(e.masterGain??1)),e.effects){const t=e.effects(this.masterVolume,O.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)}clearCompletionEvent(){if(this._completionEventId!==null){try{O.getTransport().clear(this._completionEventId)}catch(e){console.warn("[waveform-playlist] Error clearing Transport completion event:",e)}this._completionEventId=null}}async init(){this.isInitialized||(await O.start(),this.isInitialized=!0)}addTrack(e){const t={...e,destination:this.masterVolume},n=new ah(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}addMidiTrack(e){const t={...e,destination:this.masterVolume},n=new ih(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}addSoundFontTrack(e){const t={...e,destination:this.masterVolume},n=new lh(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)throw new Error("[waveform-playlist] TonePlayout not initialized. Call init() first.");const r=e??O.now(),s=O.getTransport();this.clearCompletionEvent();const a=t??0;this.tracks.forEach(o=>{o.cancelFades(),o.prepareFades(r,a)}),n!==void 0&&(this._completionEventId=s.scheduleOnce(()=>{this._completionEventId=null;try{this.onPlaybackCompleteCallback?.()}catch(o){console.warn("[waveform-playlist] Error in playback completion callback:",o)}},a+n));try{s.state!=="stopped"&&s.stop(),this.tracks.forEach(o=>o.stopAllSources()),s.loopStart=this._loopStart,s.loopEnd=this._loopEnd,s.loop=this._loopEnabled,this.tracks.forEach(o=>o.setScheduleGuardOffset(a)),t!==void 0?s.start(r,t):s.start(r),s._clock._lastUpdate=r,this.tracks.forEach(o=>{o.startMidClipSources(a,r)})}catch(o){throw this.clearCompletionEvent(),this.tracks.forEach(i=>i.cancelFades()),console.warn("[waveform-playlist] Transport.start() failed. Audio playback could not begin.",o),o}}pause(){const e=O.getTransport();try{e.pause()}catch(t){console.warn("[waveform-playlist] Transport.pause() failed:",t)}this.tracks.forEach(t=>t.stopAllSources()),this.tracks.forEach(t=>t.cancelFades()),this.clearCompletionEvent()}stop(){const e=O.getTransport();try{e.stop()}catch(t){console.warn("[waveform-playlist] Transport.stop() failed:",t)}if(this._loopHandler){try{e.off("loop",this._loopHandler)}catch(t){console.warn("[waveform-playlist] Error removing loop handler:",t)}this._loopHandler=null}this.tracks.forEach(t=>t.stopAllSources()),this.tracks.forEach(t=>t.cancelFades()),this.clearCompletionEvent()}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))}setLoop(e,t,n){this._loopEnabled=e,this._loopStart=t,this._loopEnd=n;const r=O.getTransport();try{r.loopStart=t,r.loopEnd=n,r.loop=e}catch(s){console.warn("[waveform-playlist] Error configuring Transport loop:",s);return}e&&!this._loopHandler?(this._loopHandler=()=>{const s=O.now();this.tracks.forEach(a=>{try{a.stopAllSources(),a.cancelFades(),a.setScheduleGuardOffset(this._loopStart),a.startMidClipSources(this._loopStart,s),a.prepareFades(s,this._loopStart)}catch(o){console.warn(`[waveform-playlist] Error re-scheduling track "${a.id}" on loop:`,o)}})},r.on("loop",this._loopHandler)):!e&&this._loopHandler&&(r.off("loop",this._loopHandler),this._loopHandler=null)}getCurrentTime(){return O.getTransport().seconds}seekTo(e){O.getTransport().seconds=e}dispose(){if(this.clearCompletionEvent(),this._loopHandler){try{O.getTransport().off("loop",this._loopHandler)}catch(e){console.warn("[waveform-playlist] Error removing Transport loop handler:",e)}this._loopHandler=null}if(this.tracks.forEach(e=>{try{e.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing track "${e.id}":`,t)}}),this.tracks.clear(),this.effectsCleanup)try{this.effectsCleanup()}catch(e){console.warn("[waveform-playlist] Error during master effects cleanup:",e)}try{this.masterVolume.dispose()}catch(e){console.warn("[waveform-playlist] Error disposing master volume:",e)}}get context(){return O.getContext()}get sampleRate(){return O.getContext().sampleRate}setOnPlaybackComplete(e){this.onPlaybackCompleteCallback=e}},es=null;function uh(){return es||(es=new O.Context,O.setContext(es)),es}function dh(){return uh().rawContext}function fh(e){let t=null,n=!1,r=0,s=!1,a=0,o=0,i=!1;function l(c){if(t){try{t.dispose()}catch(f){console.warn("[waveform-playlist] Error disposing previous playout during rebuild:",f)}t=null}r++;const u=r;t=new ch({effects:e?.effects}),i&&t.init().catch(f=>{console.warn("[waveform-playlist] Failed to re-initialize playout after rebuild. Audio playback will require another user gesture.",f),i=!1});for(const f of c){const m=f.clips.filter(h=>h.audioBuffer&&!h.midiNotes),d=f.clips.filter(h=>h.midiNotes&&h.midiNotes.length>0);if(m.length>0){const h=Math.min(...m.map(Qr)),v=Math.max(...m.map(ll)),y={id:f.id,name:f.name,gain:f.volume,muted:f.muted,soloed:f.soloed,stereoPan:f.pan,startTime:h,endTime:v},g=m.map(b=>({buffer:b.audioBuffer,startTime:Qr(b)-h,duration:ul(b),offset:cl(b),fadeIn:b.fadeIn,fadeOut:b.fadeOut,gain:b.gain}));t.addTrack({clips:g,track:y,effects:f.effects})}if(d.length>0){const h=Math.min(...d.map(Qr)),v=Math.max(...d.map(ll)),g={id:m.length>0?`${f.id}:midi`:f.id,name:f.name,gain:f.volume,muted:f.muted,soloed:f.soloed,stereoPan:f.pan,startTime:h,endTime:v},b=d.map(_=>({notes:_.midiNotes,startTime:Qr(_)-h,duration:ul(_),offset:cl(_)}));if(e?.soundFontCache?.isLoaded){const _=d[0],x=_.midiChannel===9,C=_.midiProgram??0;t.addSoundFontTrack({clips:b,track:g,soundFontCache:e.soundFontCache,programNumber:C,isPercussion:x,effects:f.effects})}else e?.soundFontCache&&console.warn(`[waveform-playlist] SoundFont not loaded for track "${f.name}" — falling back to PolySynth.`),t.addMidiTrack({clips:b,track:g,effects:f.effects})}}t.applyInitialSoloState(),t.setLoop(s,a,o),t.setOnPlaybackComplete(()=>{u===r&&(n=!1)})}return{async init(){t&&(await t.init(),i=!0)},setTracks(c){l(c)},play(c,u){if(!t){console.warn("[waveform-playlist] adapter.play() called but no playout is available. Tracks may not have been set, or the adapter was disposed.");return}const f=u!==void 0?u-c:void 0;t.play(O.now(),c,f),n=!0},pause(){t?.pause(),n=!1},stop(){t?.stop(),n=!1},seek(c){t?.seekTo(c)},getCurrentTime(){return t?.getCurrentTime()??0},isPlaying(){return n},setMasterVolume(c){t?.setMasterGain(c)},setTrackVolume(c,u){t?.getTrack(c)?.setVolume(u)},setTrackMute(c,u){t?.setMute(c,u)},setTrackSolo(c,u){t?.setSolo(c,u)},setTrackPan(c,u){t?.getTrack(c)?.setPan(u)},setLoop(c,u,f){s=c,a=u,o=f,t?.setLoop(c,u,f)},dispose(){try{t?.dispose()}catch(c){console.warn("[waveform-playlist] Error disposing playout:",c)}t=null,n=!1}}}function pc(e,t,n,r){let s=t;const a=-e.startSample;if(s=Math.max(s,a),r>0){const o=n[r-1],l=o.startSample+o.durationSamples-e.startSample;s=Math.max(s,l)}if(r<n.length-1){const i=n[r+1].startSample-(e.startSample+e.durationSamples);s=Math.min(s,i)}return s}function mc(e,t,n,r,s,a){let o=t;if(n==="left"){if(o=Math.max(o,-e.startSample),o=Math.max(o,-e.offsetSamples),s>0){const i=r[s-1],l=i.startSample+i.durationSamples;o=Math.max(o,l-e.startSample)}o=Math.min(o,e.durationSamples-a)}else if(o=Math.max(o,a-e.durationSamples),o=Math.min(o,e.sourceDurationSamples-e.offsetSamples-e.durationSamples),s<r.length-1){const i=r[s+1];o=Math.min(o,i.startSample-e.startSample-e.durationSamples)}return o}function hh(e,t){return Math.floor(e/t)*t}function ph(e,t){const n=t-e.startSample,r=e.durationSamples-n,s=e.name?`${e.name} (1)`:void 0,a=e.name?`${e.name} (2)`:void 0,o=Aa({startSample:e.startSample,durationSamples:n,offsetSamples:e.offsetSamples,sampleRate:e.sampleRate,sourceDurationSamples:e.sourceDurationSamples,gain:e.gain,name:s,color:e.color,fadeIn:e.fadeIn,audioBuffer:e.audioBuffer,waveformData:e.waveformData}),i=Aa({startSample:t,durationSamples:r,offsetSamples:e.offsetSamples+n,sampleRate:e.sampleRate,sourceDurationSamples:e.sourceDurationSamples,gain:e.gain,name:a,color:e.color,fadeOut:e.fadeOut,audioBuffer:e.audioBuffer,waveformData:e.waveformData});return{left:o,right:i}}function gc(e,t,n){const r=e.startSample+e.durationSamples;if(t<=e.startSample||t>=r)return!1;const s=t-e.startSample,a=r-t;return s>=n&&a>=n}function ha(e){let t=0;for(const n of e)for(const r of n.clips){const a=(r.startSample+r.durationSamples)/r.sampleRate;t=Math.max(t,a)}return t}function mh(e,t){if(t.length===0)return 0;let n=0,r=Math.abs(t[0]-e);for(let s=1;s<t.length;s++){const a=Math.abs(t[s]-e);a<r&&(r=a,n=s)}return n}function ml(e,t){return Math.max(0,Math.min(e,t))}var gh=44100,vh=1024,yh=[256,512,1024,2048,4096,8192],gl=.1,bh=class{constructor(e={}){if(this._tracks=[],this._currentTime=0,this._playStartPosition=0,this._isPlaying=!1,this._selectedTrackId=null,this._selectionStart=0,this._selectionEnd=0,this._masterVolume=1,this._loopStart=0,this._loopEnd=0,this._isLoopEnabled=!1,this._tracksVersion=0,this._animFrameId=null,this._disposed=!1,this._listeners=new Map,this._sampleRate=e.sampleRate??gh,this._zoomLevels=[...e.zoomLevels??yh],this._adapter=e.adapter??null,this._zoomLevels.length===0)throw new Error("PlaylistEngine: zoomLevels must not be empty");const t=e.samplesPerPixel??vh,n=this._zoomLevels.indexOf(t);if(n===-1)throw new Error(`PlaylistEngine: samplesPerPixel ${t} is not in zoomLevels [${this._zoomLevels.join(", ")}]. Either pass a samplesPerPixel value that exists in zoomLevels, or include ${t} in your zoomLevels array.`);this._zoomIndex=n}getState(){return{tracks:this._tracks.map(e=>({...e,clips:[...e.clips]})),tracksVersion:this._tracksVersion,duration:ha(this._tracks),currentTime:this._currentTime,isPlaying:this._isPlaying,samplesPerPixel:this._zoomLevels[this._zoomIndex],sampleRate:this._sampleRate,selectedTrackId:this._selectedTrackId,zoomIndex:this._zoomIndex,canZoomIn:this._zoomIndex>0,canZoomOut:this._zoomIndex<this._zoomLevels.length-1,selectionStart:this._selectionStart,selectionEnd:this._selectionEnd,masterVolume:this._masterVolume,loopStart:this._loopStart,loopEnd:this._loopEnd,isLoopEnabled:this._isLoopEnabled}}setTracks(e){this._tracks=[...e],this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange()}addTrack(e){this._tracks=[...this._tracks,e],this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange()}removeTrack(e){this._tracks.some(t=>t.id===e)&&(this._tracks=this._tracks.filter(t=>t.id!==e),this._tracksVersion++,this._selectedTrackId===e&&(this._selectedTrackId=null),this._adapter?.setTracks(this._tracks),this._emitStateChange())}selectTrack(e){e!==this._selectedTrackId&&(this._selectedTrackId=e,this._emitStateChange())}moveClip(e,t,n){const r=this._tracks.find(c=>c.id===e);if(!r){console.warn(`[waveform-playlist/engine] moveClip: track "${e}" not found`);return}const s=r.clips.findIndex(c=>c.id===t);if(s===-1){console.warn(`[waveform-playlist/engine] moveClip: clip "${t}" not found in track "${e}"`);return}const a=r.clips[s],o=il(r.clips),i=o.findIndex(c=>c.id===t),l=pc(a,n,o,i);l!==0&&(this._tracks=this._tracks.map(c=>{if(c.id!==e)return c;const u=c.clips.map((f,m)=>m===s?{...f,startSample:Math.floor(f.startSample+l)}:f);return{...c,clips:u}}),this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange())}splitClip(e,t,n){const r=this._tracks.find(c=>c.id===e);if(!r){console.warn(`[waveform-playlist/engine] splitClip: track "${e}" not found`);return}const s=r.clips.findIndex(c=>c.id===t);if(s===-1){console.warn(`[waveform-playlist/engine] splitClip: clip "${t}" not found in track "${e}"`);return}const a=r.clips[s],o=Math.floor(gl*this._sampleRate);if(!gc(a,n,o)){console.warn(`[waveform-playlist/engine] splitClip: cannot split clip "${t}" at sample ${n} (clip range: ${a.startSample}–${a.startSample+a.durationSamples}, minDuration: ${o})`);return}const{left:i,right:l}=ph(a,n);this._tracks=this._tracks.map(c=>{if(c.id!==e)return c;const u=[...c.clips];return u.splice(s,1,i,l),{...c,clips:u}}),this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange()}trimClip(e,t,n,r){const s=this._tracks.find(f=>f.id===e);if(!s){console.warn(`[waveform-playlist/engine] trimClip: track "${e}" not found`);return}const a=s.clips.findIndex(f=>f.id===t);if(a===-1){console.warn(`[waveform-playlist/engine] trimClip: clip "${t}" not found in track "${e}"`);return}const o=s.clips[a],i=il(s.clips),l=i.findIndex(f=>f.id===t),c=Math.floor(gl*this._sampleRate),u=mc(o,r,n,i,l,c);u!==0&&(this._tracks=this._tracks.map(f=>{if(f.id!==e)return f;const m=f.clips.map((d,h)=>h!==a?d:n==="left"?{...d,startSample:d.startSample+u,offsetSamples:d.offsetSamples+u,durationSamples:d.durationSamples-u}:{...d,durationSamples:d.durationSamples+u});return{...f,clips:m}}),this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange())}async init(){this._adapter&&await this._adapter.init()}play(e,t){const n=this._currentTime,r=this._playStartPosition;if(e!==void 0){const s=ha(this._tracks);this._currentTime=ml(e,s)}if(this._playStartPosition=this._currentTime,this._adapter){if(t!==void 0)this._adapter.setLoop(!1,this._loopStart,this._loopEnd);else if(this._isLoopEnabled){const s=this._currentTime<this._loopEnd;this._adapter.setLoop(s,this._loopStart,this._loopEnd)}try{this._adapter.play(this._currentTime,t)}catch(s){throw this._currentTime=n,this._playStartPosition=r,s}}this._isPlaying=!0,this._startTimeUpdateLoop(),this._emit("play"),this._emitStateChange()}pause(){this._isPlaying=!1,this._stopTimeUpdateLoop(),this._adapter?.pause(),this._adapter&&(this._currentTime=this._adapter.getCurrentTime()),this._emit("pause"),this._emitStateChange()}stop(){this._isPlaying=!1,this._currentTime=this._playStartPosition,this._stopTimeUpdateLoop(),this._adapter?.setLoop(!1,this._loopStart,this._loopEnd),this._adapter?.stop(),this._emit("stop"),this._emitStateChange()}seek(e){const t=ha(this._tracks);this._currentTime=ml(e,t),this._adapter?.seek(this._currentTime),this._emitStateChange()}setMasterVolume(e){e!==this._masterVolume&&(this._masterVolume=e,this._adapter?.setMasterVolume(e),this._emitStateChange())}getCurrentTime(){return this._isPlaying&&this._adapter?this._adapter.getCurrentTime():this._currentTime}setSelection(e,t){const n=Math.min(e,t),r=Math.max(e,t);n===this._selectionStart&&r===this._selectionEnd||(this._selectionStart=n,this._selectionEnd=r,this._emitStateChange())}setLoopRegion(e,t){const n=Math.min(e,t),r=Math.max(e,t);n===this._loopStart&&r===this._loopEnd||(this._loopStart=n,this._loopEnd=r,this._adapter?.setLoop(this._isLoopEnabled&&this._isBeforeLoopEnd(),this._loopStart,this._loopEnd),this._emitStateChange())}setLoopEnabled(e){e!==this._isLoopEnabled&&(this._isLoopEnabled=e,this._adapter?.setLoop(e&&this._isBeforeLoopEnd(),this._loopStart,this._loopEnd),this._emitStateChange())}setTrackVolume(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.volume=t),this._adapter?.setTrackVolume(e,t)}setTrackMute(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.muted=t),this._adapter?.setTrackMute(e,t)}setTrackSolo(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.soloed=t),this._adapter?.setTrackSolo(e,t)}setTrackPan(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.pan=t),this._adapter?.setTrackPan(e,t)}zoomIn(){this._zoomIndex>0&&(this._zoomIndex--,this._emitStateChange())}zoomOut(){this._zoomIndex<this._zoomLevels.length-1&&(this._zoomIndex++,this._emitStateChange())}setZoomLevel(e){const t=mh(e,this._zoomLevels);t!==this._zoomIndex&&(this._zoomIndex=t,this._emitStateChange())}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){this._listeners.get(e)?.delete(t)}dispose(){if(!this._disposed){this._disposed=!0,this._stopTimeUpdateLoop();try{this._adapter?.dispose()}catch(e){console.warn("[waveform-playlist/engine] Error disposing adapter:",e)}this._listeners.clear()}}_emit(e,...t){const n=this._listeners.get(e);if(n)for(const r of n)try{r(...t)}catch(s){console.warn("[waveform-playlist/engine] Error in event listener:",s)}}_isBeforeLoopEnd(){return this._isPlaying?(this._adapter?.getCurrentTime()??this._currentTime)<this._loopEnd:!0}_emitStateChange(){this._emit("statechange",this.getState())}_startTimeUpdateLoop(){if(typeof requestAnimationFrame>"u")return;this._stopTimeUpdateLoop();const e=()=>{this._disposed||!this._isPlaying||(this._adapter&&(this._currentTime=this._adapter.getCurrentTime(),this._emit("timeupdate",this._currentTime)),this._animFrameId=requestAnimationFrame(e))};this._animFrameId=requestAnimationFrame(e)}_stopTimeUpdateLoop(){this._animFrameId!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(this._animFrameId),this._animFrameId=null)}},wh=Symbol.for("preact-signals");function js(){if(Kt>1)Kt--;else{for(var e,t=!1;gr!==void 0;){var n=gr;for(gr=void 0,Da++;n!==void 0;){var r=n.o;if(n.o=void 0,n.f&=-3,!(8&n.f)&&yc(n))try{n.c()}catch(s){t||(e=s,t=!0)}n=r}}if(Da=0,Kt--,t)throw e}}function qt(e){if(Kt>0)return e();Kt++;try{return e()}finally{js()}}var ve=void 0;function we(e){var t=ve;ve=void 0;try{return e()}finally{ve=t}}var gr=void 0,Kt=0,Da=0,xs=0;function vc(e){if(ve!==void 0){var t=e.n;if(t===void 0||t.t!==ve)return t={i:0,S:e,p:ve.s,n:void 0,t:ve,e:void 0,x:void 0,r:t},ve.s!==void 0&&(ve.s.n=t),ve.s=t,e.n=t,32&ve.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=ve.s,t.n=void 0,ve.s.n=t,ve.s=t),t}}function st(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}st.prototype.brand=wh;st.prototype.h=function(){return!0};st.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n!==void 0?n.e=e:we(function(){var r;(r=t.W)==null||r.call(t)}))};st.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&we(function(){var s;(s=t.Z)==null||s.call(t)}))}};st.prototype.subscribe=function(e){var t=this;return xt(function(){var n=t.value,r=ve;ve=void 0;try{e(n)}finally{ve=r}},{name:"sub"})};st.prototype.valueOf=function(){return this.value};st.prototype.toString=function(){return this.value+""};st.prototype.toJSON=function(){return this.value};st.prototype.peek=function(){var e=ve;ve=void 0;try{return this.value}finally{ve=e}};Object.defineProperty(st.prototype,"value",{get:function(){var e=vc(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(Da>100)throw new Error("Cycle detected");this.v=e,this.i++,xs++,Kt++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{js()}}}});function Dr(e,t){return new st(e,t)}function yc(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function bc(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function wc(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function gn(e,t){st.call(this,void 0),this.x=e,this.s=void 0,this.g=xs-1,this.f=4,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}gn.prototype=new st;gn.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===xs))return!0;if(this.g=xs,this.f|=1,this.i>0&&!yc(this))return this.f&=-2,!0;var e=ve;try{bc(this),ve=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(n){this.v=n,this.f|=16,this.i++}return ve=e,wc(this),this.f&=-2,!0};gn.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}st.prototype.S.call(this,e)};gn.prototype.U=function(e){if(this.t!==void 0&&(st.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}};gn.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}};Object.defineProperty(gn.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=vc(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function vl(e,t){return new gn(e,t)}function _c(e){var t=e.u;if(e.u=void 0,typeof t=="function"){Kt++;var n=ve;ve=void 0;try{t()}catch(r){throw e.f&=-2,e.f|=8,_o(e),r}finally{ve=n,js()}}}function _o(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,_c(e)}function _h(e){if(ve!==this)throw new Error("Out-of-order effect");wc(this),ve=e,this.f&=-2,8&this.f&&_o(this),js()}function Gn(e,t){this.x=e,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=t?.name}Gn.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t=="function"&&(this.u=t)}finally{e()}};Gn.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,_c(this),bc(this),Kt++;var e=ve;return ve=this,_h.bind(this,e)};Gn.prototype.N=function(){2&this.f||(this.f|=2,this.o=gr,gr=this)};Gn.prototype.d=function(){this.f|=8,1&this.f||_o(this)};Gn.prototype.dispose=function(){this.d()};function xt(e,t){var n=new Gn(e,t);try{n.c()}catch(s){throw n.d(),s}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var xh=Object.create,xo=Object.defineProperty,Sh=Object.defineProperties,Ch=Object.getOwnPropertyDescriptor,kh=Object.getOwnPropertyDescriptors,yl=Object.getOwnPropertySymbols,Eh=Object.prototype.hasOwnProperty,Ih=Object.prototype.propertyIsEnumerable,Mh=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Un=e=>{throw TypeError(e)},Pa=(e,t,n)=>t in e?xo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ah=(e,t)=>{for(var n in t||(t={}))Eh.call(t,n)&&Pa(e,n,t[n]);if(yl)for(var n of yl(t))Ih.call(t,n)&&Pa(e,n,t[n]);return e},Th=(e,t)=>Sh(e,kh(t)),bl=(e,t)=>xo(e,"name",{value:t,configurable:!0}),$h=e=>{var t;return[,,,xh((t=void 0)!=null?t:null)]},xc=["class","method","getter","setter","accessor","field","value","get","set"],ar=e=>e!==void 0&&typeof e!="function"?Un("Function expected"):e,Rh=(e,t,n,r,s)=>({kind:xc[e],name:t,metadata:r,addInitializer:a=>n._?Un("Already initialized"):s.push(ar(a||null))}),Sc=(e,t)=>Pa(t,Mh("metadata"),e[3]),sn=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)t&1?a[s].call(n):r=a[s].call(n,r);return r},Xn=(e,t,n,r,s,a)=>{var o,i,l,c,u,f=t&7,m=!!(t&8),d=!!(t&16),h=f>3?e.length+1:f?m?1:2:0,v=xc[f+5],y=f>3&&(e[h-1]=[]),g=e[h]||(e[h]=[]),b=f&&(!d&&!m&&(s=s.prototype),f<5&&(f>3||!d)&&Ch(f<4?s:{get[n](){return fn(this,a)},set[n](w){return Ut(this,a,w)}},n));f?d&&f<4&&bl(a,(f>2?"set ":f>1?"get ":"")+n):bl(s,n);for(var _=r.length-1;_>=0;_--)c=Rh(f,n,l={},e[3],g),f&&(c.static=m,c.private=d,u=c.access={has:d?w=>Dh(s,w):w=>n in w},f^3&&(u.get=d?w=>(f^1?fn:Ph)(w,s,f^4?a:b.get):w=>w[n]),f>2&&(u.set=d?(w,x)=>Ut(w,s,x,f^4?a:b.set):(w,x)=>w[n]=x)),i=(0,r[_])(f?f<4?d?a:b[v]:f>4?void 0:{get:b.get,set:b.set}:s,c),l._=1,f^4||i===void 0?ar(i)&&(f>4?y.unshift(i):f?d?a=i:b[v]=i:s=i):typeof i!="object"||i===null?Un("Object expected"):(ar(o=i.get)&&(b.get=o),ar(o=i.set)&&(b.set=o),ar(o=i.init)&&y.unshift(o));return f||Sc(e,s),b&&xo(s,n,b),d?f^4?a:b:s},So=(e,t,n)=>t.has(e)||Un("Cannot "+n),Dh=(e,t)=>Object(t)!==t?Un('Cannot use the "in" operator on this value'):e.has(t),fn=(e,t,n)=>(So(e,t,"read from private field"),n?n.call(e):t.get(e)),ts=(e,t,n)=>t.has(e)?Un("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Ut=(e,t,n,r)=>(So(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Ph=(e,t,n)=>(So(e,t,"access private method"),n);function Ss(e,t){if(t){let n;return vl(()=>{const r=e();return r&&n&&t(n,r)?n:(n=r,r)})}return vl(e)}function Sr(e,t){if(Object.is(e,t))return!0;if(e===null||t===null)return!1;if(typeof e=="function"&&typeof t=="function")return e===t;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}if(Array.isArray(e))return!Array.isArray(t)||e.length!==t.length?!1:!e.some((r,s)=>!Sr(r,t[s]));if(typeof e=="object"&&typeof t=="object"){const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:!n.some(a=>!Sr(e[a],t[a]))}return!1}function he({get:e},t){return{init(n){return Dr(n)},get(){return e.call(this).value},set(n){const r=e.call(this);r.peek()!==n&&(r.value=n)}}}function Ae(e,t){const n=new WeakMap;return function(){let r=n.get(this);return r||(r=Ss(e.bind(this)),n.set(this,r)),r.value}}function pa(e=!0){return function(t,n){n.addInitializer(function(){const r=n.kind==="field"?this:n.static?this:Object.getPrototypeOf(this),s=Object.getOwnPropertyDescriptor(r,n.name);s&&Object.defineProperty(r,n.name,Th(Ah({},s),{enumerable:e}))})}}function Pr(...e){const t=e.map(n=>xt(n));return()=>t.forEach(n=>n())}var Cc,kc,Ec,Ic,Mc,Ac,tt,Co,ma,Fa,Oa,qe,ko,ga,Tc,La,Eo,va,Ba,Wa;Ac=[he],Mc=[he],Ic=[he],Ec=[pa()],kc=[pa()],Cc=[pa()];var Qt=class{constructor(e,t=Object.is){this.defaultValue=e,this.equals=t,sn(tt,5,this),ts(this,qe),ts(this,Co,sn(tt,8,this)),sn(tt,11,this),ts(this,ko,sn(tt,12,this)),sn(tt,15,this),ts(this,Eo,sn(tt,16,this)),sn(tt,19,this),this.reset=this.reset.bind(this),this.reset()}get current(){return fn(this,qe,Ba)}get initial(){return fn(this,qe,Fa)}get previous(){return fn(this,qe,Tc)}set current(e){const t=we(()=>fn(this,qe,Ba));e&&t&&this.equals(t,e)||qt(()=>{fn(this,qe,Fa)||Ut(this,qe,e,Oa),Ut(this,qe,t,La),Ut(this,qe,e,Wa)})}reset(e=this.defaultValue){qt(()=>{Ut(this,qe,void 0,La),Ut(this,qe,e,Oa),Ut(this,qe,e,Wa)})}};tt=$h();Co=new WeakMap;qe=new WeakSet;ko=new WeakMap;Eo=new WeakMap;ma=Xn(tt,20,"#initial",Ac,qe,Co),Fa=ma.get,Oa=ma.set;ga=Xn(tt,20,"#previous",Mc,qe,ko),Tc=ga.get,La=ga.set;va=Xn(tt,20,"#current",Ic,qe,Eo),Ba=va.get,Wa=va.set;Xn(tt,2,"current",Ec,Qt);Xn(tt,2,"initial",kc,Qt);Xn(tt,2,"previous",Cc,Qt);Sc(tt,Qt);function ya(e){return we(()=>{const t={};for(const n in e)t[n]=e[n];return t})}var Fh=Object.create,$c=Object.defineProperty,Oh=Object.getOwnPropertyDescriptor,wl=Object.getOwnPropertySymbols,Lh=Object.prototype.hasOwnProperty,Bh=Object.prototype.propertyIsEnumerable,Rc=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Zs=e=>{throw TypeError(e)},_l=Math.pow,Va=(e,t,n)=>t in e?$c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Wh=(e,t)=>{for(var n in t||(t={}))Lh.call(t,n)&&Va(e,n,t[n]);if(wl)for(var n of wl(t))Bh.call(t,n)&&Va(e,n,t[n]);return e},Vh=e=>{var t;return[,,,Fh((t=e?.[Rc("metadata")])!=null?t:null)]},Dc=["class","method","getter","setter","accessor","field","value","get","set"],Pc=e=>e!==void 0&&typeof e!="function"?Zs("Function expected"):e,Nh=(e,t,n,r,s)=>({kind:Dc[e],name:t,metadata:r,addInitializer:a=>n._?Zs("Already initialized"):s.push(Pc(a||null))}),zh=(e,t)=>Va(t,Rc("metadata"),e[3]),jh=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)a[s].call(n);return r},Fc=(e,t,n,r,s,a)=>{for(var o,i,l,c,u=t&7,f=!1,m=!1,d=2,h=Dc[u+5],v=e[d]||(e[d]=[]),y=(s=s.prototype,Oh(s,n)),g=r.length-1;g>=0;g--)l=Nh(u,n,i={},e[3],v),l.static=f,l.private=m,c=l.access={has:b=>n in b},c.get=b=>b[n],o=(0,r[g])(y[h],l),i._=1,Pc(o)&&(y[h]=o);return y&&$c(s,n,y),s},Oc=(e,t,n)=>t.has(e)||Zs("Cannot "+n),Zh=(e,t,n)=>(Oc(e,t,"read from private field"),t.get(e)),Hh=(e,t,n)=>t.has(e)?Zs("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Gh=(e,t,n,r)=>(Oc(e,t,"write to private field"),t.set(e,n),n),Rt=class Na{constructor(t,n){this.x=t,this.y=n}static delta(t,n){return new Na(t.x-n.x,t.y-n.y)}static distance(t,n){return Math.hypot(t.x-n.x,t.y-n.y)}static equals(t,n){return t.x===n.x&&t.y===n.y}static from({x:t,y:n}){return new Na(t,n)}},Fr=class on{constructor(t,n,r,s){this.left=t,this.top=n,this.width=r,this.height=s,this.scale={x:1,y:1}}get inverseScale(){return{x:1/this.scale.x,y:1/this.scale.y}}translate(t,n){const{top:r,left:s,width:a,height:o,scale:i}=this,l=new on(s+t,r+n,a,o);return l.scale=Wh({},i),l}get boundingRectangle(){const{width:t,height:n,left:r,top:s,right:a,bottom:o}=this;return{width:t,height:n,left:r,top:s,right:a,bottom:o}}get center(){const{left:t,top:n,right:r,bottom:s}=this;return new Rt((t+r)/2,(n+s)/2)}get area(){const{width:t,height:n}=this;return t*n}equals(t){if(!(t instanceof on))return!1;const{left:n,top:r,width:s,height:a}=this;return n===t.left&&r===t.top&&s===t.width&&a===t.height}containsPoint(t){const{top:n,left:r,bottom:s,right:a}=this;return n<=t.y&&t.y<=s&&r<=t.x&&t.x<=a}intersectionArea(t){return t instanceof on?Uh(this,t):0}intersectionRatio(t){const{area:n}=this,r=this.intersectionArea(t);return r/(t.area+n-r)}get bottom(){const{top:t,height:n}=this;return t+n}get right(){const{left:t,width:n}=this;return t+n}get aspectRatio(){const{width:t,height:n}=this;return t/n}get corners(){return[{x:this.left,y:this.top},{x:this.right,y:this.top},{x:this.left,y:this.bottom},{x:this.right,y:this.bottom}]}static from({top:t,left:n,width:r,height:s}){return new on(n,t,r,s)}static delta(t,n,r={x:"center",y:"center"}){const s=(a,o)=>{const i=r[o],l=o==="x"?a.left:a.top,c=o==="x"?a.width:a.height;return i=="start"?l:i=="end"?l+c:l+c/2};return Rt.delta({x:s(t,"x"),y:s(t,"y")},{x:s(n,"x"),y:s(n,"y")})}static intersectionRatio(t,n){return on.from(t).intersectionRatio(on.from(n))}};function Uh(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),s=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=s-r,i=a-n;return r<s&&n<a?o*i:0}var Lc,Bc,za,cs,Or,Hs=class extends(za=Qt,Bc=[Ae],Lc=[Ae],za){constructor(t){const n=Rt.from(t);super(n,(r,s)=>Rt.equals(r,s)),jh(Or,5,this),Hh(this,cs,0),this.velocity={x:0,y:0}}get delta(){return Rt.delta(this.current,this.initial)}get direction(){const{current:t,previous:n}=this;if(!n)return null;const r={x:t.x-n.x,y:t.y-n.y};return!r.x&&!r.y?null:Math.abs(r.x)>Math.abs(r.y)?r.x>0?"right":"left":r.y>0?"down":"up"}get current(){return super.current}set current(t){const{current:n}=this,r=Rt.from(t),s={x:r.x-n.x,y:r.y-n.y},a=Date.now(),o=a-Zh(this,cs),i=l=>Math.round(l/o*100);qt(()=>{Gh(this,cs,a),this.velocity={x:i(s.x),y:i(s.y)},super.current=r})}reset(t=this.defaultValue){super.reset(Rt.from(t)),this.velocity={x:0,y:0}}};Or=Vh(za);cs=new WeakMap;Fc(Or,2,"delta",Bc,Hs);Fc(Or,2,"direction",Lc,Hs);zh(Or,Hs);function ja({x:e,y:t},n){const r=Math.abs(e),s=Math.abs(t);return typeof n=="number"?Math.sqrt(_l(r,2)+_l(s,2))>n:"x"in n&&"y"in n?r>n.x&&s>n.y:"x"in n?r>n.x:"y"in n?s>n.y:!1}var Wc=(e=>(e.Horizontal="x",e.Vertical="y",e))(Wc||{}),Vc=Object.values(Wc),Xh=Object.create,Io=Object.defineProperty,Yh=Object.defineProperties,Kh=Object.getOwnPropertyDescriptor,qh=Object.getOwnPropertyDescriptors,Cs=Object.getOwnPropertySymbols,Nc=Object.prototype.hasOwnProperty,zc=Object.prototype.propertyIsEnumerable,jc=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Yn=e=>{throw TypeError(e)},Za=(e,t,n)=>t in e?Io(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Zc=(e,t)=>{for(var n in t||(t={}))Nc.call(t,n)&&Za(e,n,t[n]);if(Cs)for(var n of Cs(t))zc.call(t,n)&&Za(e,n,t[n]);return e},Hc=(e,t)=>Yh(e,qh(t)),xl=(e,t)=>Io(e,"name",{value:t,configurable:!0}),Gc=(e,t)=>{var n={};for(var r in e)Nc.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Cs)for(var r of Cs(e))t.indexOf(r)<0&&zc.call(e,r)&&(n[r]=e[r]);return n},Kn=e=>{var t;return[,,,Xh((t=e?.[jc("metadata")])!=null?t:null)]},Uc=["class","method","getter","setter","accessor","field","value","get","set"],or=e=>e!==void 0&&typeof e!="function"?Yn("Function expected"):e,Jh=(e,t,n,r,s)=>({kind:Uc[e],name:t,metadata:r,addInitializer:a=>n._?Yn("Already initialized"):s.push(or(a||null))}),vn=(e,t)=>Za(t,jc("metadata"),e[3]),se=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)t&1?a[s].call(n):r=a[s].call(n,r);return r},ce=(e,t,n,r,s,a)=>{var o,i,l,c,u,f=t&7,m=!!(t&8),d=!!(t&16),h=f>3?e.length+1:f?m?1:2:0,v=Uc[f+5],y=f>3&&(e[h-1]=[]),g=e[h]||(e[h]=[]),b=f&&(!d&&!m&&(s=s.prototype),f<5&&(f>3||!d)&&Kh(f<4?s:{get[n](){return Ge(this,a)},set[n](w){return bt(this,a,w)}},n));f?d&&f<4&&xl(a,(f>2?"set ":f>1?"get ":"")+n):xl(s,n);for(var _=r.length-1;_>=0;_--)c=Jh(f,n,l={},e[3],g),f&&(c.static=m,c.private=d,u=c.access={has:d?w=>Qh(s,w):w=>n in w},f^3&&(u.get=d?w=>(f^1?Ge:ep)(w,s,f^4?a:b.get):w=>w[n]),f>2&&(u.set=d?(w,x)=>bt(w,s,x,f^4?a:b.set):(w,x)=>w[n]=x)),i=(0,r[_])(f?f<4?d?a:b[v]:f>4?void 0:{get:b.get,set:b.set}:s,c),l._=1,f^4||i===void 0?or(i)&&(f>4?y.unshift(i):f?d?a=i:b[v]=i:s=i):typeof i!="object"||i===null?Yn("Object expected"):(or(o=i.get)&&(b.get=o),or(o=i.set)&&(b.set=o),or(o=i.init)&&y.unshift(o));return f||vn(e,s),b&&Io(s,n,b),d?f^4?a:b:s},Mo=(e,t,n)=>t.has(e)||Yn("Cannot "+n),Qh=(e,t)=>Object(t)!==t?Yn('Cannot use the "in" operator on this value'):e.has(t),Ge=(e,t,n)=>(Mo(e,t,"read from private field"),n?n.call(e):t.get(e)),be=(e,t,n)=>t.has(e)?Yn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),bt=(e,t,n,r)=>(Mo(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),ep=(e,t,n)=>(Mo(e,t,"access private method"),n);function Xc(e,t){return{plugin:e,options:t}}function yn(e){return t=>Xc(e,t)}function Ao(e){return typeof e=="function"?{plugin:e,options:void 0}:e}var Yc,Cr,To,us;Yc=[he];var lt=class{constructor(e,t){this.manager=e,this.options=t,be(this,To,se(Cr,8,this,!1)),se(Cr,11,this),be(this,us,new Set)}enable(){this.disabled=!1}disable(){this.disabled=!0}isDisabled(){return we(()=>this.disabled)}configure(e){this.options=e}registerEffect(e){const t=xt(e.bind(this));return Ge(this,us).add(t),t}destroy(){Ge(this,us).forEach(e=>e())}static configure(e){return Xc(this,e)}};Cr=Kn(null);To=new WeakMap;us=new WeakMap;ce(Cr,4,"disabled",Yc,lt,To);vn(Cr,lt);var Lr=class extends lt{},ds,ba=class{constructor(e){this.manager=e,this.instances=new Map,be(this,ds,[])}get values(){return Array.from(this.instances.values())}set values(e){const t=e.map(Ao).reduceRight((r,s)=>r.some(({plugin:a})=>a===s.plugin)?r:[s,...r],[]),n=t.map(({plugin:r})=>r);for(const r of Ge(this,ds))if(!n.includes(r)){if(r.prototype instanceof Lr)continue;this.unregister(r)}for(const{plugin:r,options:s}of t)this.register(r,s);bt(this,ds,n)}get(e){return this.instances.get(e)}register(e,t){const n=this.instances.get(e);if(n)return n.options!==t&&(n.options=t),n;const r=new e(this.manager,t);return this.instances.set(e,r),r}unregister(e){const t=this.instances.get(e);t&&(t.destroy(),this.instances.delete(e))}destroy(){for(const e of this.instances.values())e.destroy();this.instances.clear()}};ds=new WeakMap;function tp(e,t){return e.priority===t.priority?e.type===t.type?t.value-e.value:t.type-e.type:t.priority-e.priority}var ns=[],Tn,$n,np=class extends lt{constructor(e){super(e),be(this,Tn),be(this,$n),this.computeCollisions=this.computeCollisions.bind(this),bt(this,$n,Dr(ns)),this.destroy=Pr(()=>{const t=this.computeCollisions(),n=we(()=>this.manager.dragOperation.position.current);if(t!==ns){const r=Ge(this,Tn);if(bt(this,Tn,n),r&&n.x==r.x&&n.y==r.y)return}else bt(this,Tn,void 0);Ge(this,$n).value=t},()=>{const{dragOperation:t}=this.manager;t.status.initialized&&this.forceUpdate()})}forceUpdate(e=!0){we(()=>{e?Ge(this,$n).value=this.computeCollisions():bt(this,Tn,void 0)})}computeCollisions(e,t){const{registry:n,dragOperation:r}=this.manager,{source:s,shape:a,status:o}=r;if(!o.initialized||!a)return ns;const i=[],l=[];for(const c of e??n.droppables){if(c.disabled||s&&!c.accepts(s))continue;const u=t??c.collisionDetector;if(!u)continue;l.push(c),c.shape;const f=we(()=>u({droppable:c,dragOperation:r}));f&&(c.collisionPriority!=null&&(f.priority=c.collisionPriority),i.push(f))}return l.length===0?ns:(i.sort(tp),i)}get collisions(){return Ge(this,$n).value}};Tn=new WeakMap;$n=new WeakMap;var rp=class{constructor(){this.registry=new Map}addEventListener(e,t){const{registry:n}=this,r=new Set(n.get(e));return r.add(t),n.set(e,r),()=>this.removeEventListener(e,t)}removeEventListener(e,t){const{registry:n}=this,r=new Set(n.get(e));r.delete(t),n.set(e,r)}dispatch(e,...t){const{registry:n}=this,r=n.get(e);if(r)for(const s of r)s(...t)}},sp=class extends rp{constructor(e){super(),this.manager=e}dispatch(e,t){const n=[t,this.manager];super.dispatch(e,...n)}};function fs(e,t=!0){let n=!1;return Hc(Zc({},e),{cancelable:t,get defaultPrevented(){return n},preventDefault(){t&&(n=!0)}})}var ap=class extends Lr{constructor(e){super(e);const t=(r,s)=>r.map(({id:a})=>a).join("")===s.map(({id:a})=>a).join("");let n=[];this.destroy=Pr(()=>{const{dragOperation:r,collisionObserver:s}=e;r.status.initializing&&(n=[],s.enable())},()=>{const{collisionObserver:r,monitor:s}=e,{collisions:a}=r;if(r.isDisabled())return;const o=fs({collisions:a});if(s.dispatch("collision",o),o.defaultPrevented||t(a,n))return;n=a;const[i]=a;we(()=>{var l;i?.id!==((l=e.dragOperation.target)==null?void 0:l.id)&&(r.disable(),e.actions.setDropTarget(i?.id).then(()=>{r.enable()}))})})}},$o=(e=>(e[e.Lowest=0]="Lowest",e[e.Low=1]="Low",e[e.Normal=2]="Normal",e[e.High=3]="High",e[e.Highest=4]="Highest",e))($o||{}),Ro=(e=>(e[e.Collision=0]="Collision",e[e.ShapeIntersection=1]="ShapeIntersection",e[e.PointerIntersection=2]="PointerIntersection",e))(Ro||{}),Kc,qc,Jc,Qc,eu,tu,nu,_t,Do;nu=[he],tu=[Ae],eu=[Ae],Qc=[Ae],Jc=[Ae],qc=[Ae],Kc=[Ae];var Vt=class{constructor(){se(_t,5,this),be(this,Do,se(_t,8,this,"idle")),se(_t,11,this)}get current(){return this.value}get idle(){return this.value==="idle"}get initializing(){return this.value==="initializing"}get initialized(){const{value:e}=this;return e!=="idle"&&e!=="initialization-pending"}get dragging(){return this.value==="dragging"}get dropped(){return this.value==="dropped"}set(e){this.value=e}};_t=Kn(null);Do=new WeakMap;ce(_t,4,"value",nu,Vt,Do);ce(_t,2,"current",tu,Vt);ce(_t,2,"idle",eu,Vt);ce(_t,2,"initializing",Qc,Vt);ce(_t,2,"initialized",Jc,Vt);ce(_t,2,"dragging",qc,Vt);ce(_t,2,"dropped",Kc,Vt);vn(_t,Vt);var op=class{constructor(e){this.manager=e}setDragSource(e){const{dragOperation:t}=this.manager;t.sourceIdentifier=typeof e=="string"||typeof e=="number"?e:e.id}setDropTarget(e){return we(()=>{const{dragOperation:t}=this.manager,n=e??null;if(t.targetIdentifier===n)return Promise.resolve(!1);t.targetIdentifier=n;const r=fs({operation:t.snapshot()});return t.status.dragging&&this.manager.monitor.dispatch("dragover",r),this.manager.renderer.rendering.then(()=>r.defaultPrevented)})}start(e){return we(()=>{const{dragOperation:t}=this.manager;if(e.source!=null&&this.setDragSource(e.source),!t.source)throw new Error("Cannot start a drag operation without a drag source");if(!t.status.idle)throw new Error("Cannot start a drag operation while another is active");const r=new AbortController,{event:s,coordinates:a}=e;qt(()=>{t.status.set("initialization-pending"),t.shape=null,t.canceled=!1,t.activatorEvent=s??null,t.position.reset(a)});const o=fs({operation:t.snapshot()});return this.manager.monitor.dispatch("beforedragstart",o),o.defaultPrevented?(t.reset(),r.abort(),r):(t.status.set("initializing"),t.controller=r,this.manager.renderer.rendering.then(()=>{if(r.signal.aborted)return;const{status:i}=t;i.current==="initializing"&&(t.status.set("dragging"),this.manager.monitor.dispatch("dragstart",{nativeEvent:s,operation:t.snapshot(),cancelable:!1}))}),r)})}move(e){return we(()=>{var t,n;const{dragOperation:r}=this.manager,{status:s,controller:a}=r;if(!s.dragging||!a||a.signal.aborted)return;const o=fs({nativeEvent:e.event,operation:r.snapshot(),by:e.by,to:e.to},(t=e.cancelable)!=null?t:!0);((n=e.propagate)==null||n)&&this.manager.monitor.dispatch("dragmove",o),queueMicrotask(()=>{var i,l,c,u,f;if(o.defaultPrevented)return;const m=(f=e.to)!=null?f:{x:r.position.current.x+((l=(i=e.by)==null?void 0:i.x)!=null?l:0),y:r.position.current.y+((u=(c=e.by)==null?void 0:c.y)!=null?u:0)};r.position.current=m})})}stop(e={}){return we(()=>{var t,n;const{dragOperation:r}=this.manager,{controller:s}=r;if(!s||s.signal.aborted)return;let a;const o=()=>{const l={resume:()=>{},abort:()=>{}};return a=new Promise((c,u)=>{l.resume=c,l.abort=u}),l};s.abort();const i=()=>{this.manager.renderer.rendering.then(()=>{r.status.set("dropped");const l=we(()=>{var u;return((u=r.source)==null?void 0:u.status)==="dropping"}),c=()=>{r.controller===s&&(r.controller=void 0),r.reset()};if(l){const{source:u}=r,f=xt(()=>{u?.status==="idle"&&(f(),c())})}else this.manager.renderer.rendering.then(c)})};r.canceled=(t=e.canceled)!=null?t:!1,this.manager.monitor.dispatch("dragend",{nativeEvent:e.event,operation:r.snapshot(),canceled:(n=e.canceled)!=null?n:!1,suspend:o}),a?a.then(i).catch(()=>r.reset()):i()})}},ru,su,au,ou,it,Po,Fo,Oo,Lo;ou=[he],au=[he],su=[he],ru=[he];var en=class{constructor(e,t){be(this,Po,se(it,8,this)),se(it,11,this),be(this,Fo,se(it,12,this)),se(it,15,this),be(this,Oo,se(it,16,this)),se(it,19,this),be(this,Lo,se(it,20,this)),se(it,23,this);const{effects:n,id:r,data:s={},disabled:a=!1,register:o=!0}=e;let i=r;this.manager=t,this.id=r,this.data=s,this.disabled=a,this.effects=()=>{var l;return[()=>{const{id:c,manager:u}=this;if(c!==i)return u?.registry.register(this),()=>u?.registry.unregister(this)},...(l=n?.())!=null?l:[]]},this.register=this.register.bind(this),this.unregister=this.unregister.bind(this),this.destroy=this.destroy.bind(this),t&&o&&queueMicrotask(this.register)}register(){var e;return(e=this.manager)==null?void 0:e.registry.register(this)}unregister(){var e;(e=this.manager)==null||e.registry.unregister(this)}destroy(){var e;(e=this.manager)==null||e.registry.unregister(this)}};it=Kn(null);Po=new WeakMap;Fo=new WeakMap;Oo=new WeakMap;Lo=new WeakMap;ce(it,4,"manager",ou,en,Po);ce(it,4,"id",au,en,Fo);ce(it,4,"data",su,en,Oo);ce(it,4,"disabled",ru,en,Lo);vn(it,en);var Sl=class{constructor(){this.map=Dr(new Map),this.cleanupFunctions=new WeakMap,this.register=(e,t)=>{const n=this.map.peek(),r=n.get(e),s=()=>this.unregister(e,t);if(r===t)return s;if(r){const i=this.cleanupFunctions.get(r);i?.(),this.cleanupFunctions.delete(r)}const a=new Map(n);a.set(e,t),this.map.value=a;const o=Pr(...t.effects());return this.cleanupFunctions.set(t,o),s},this.unregister=(e,t)=>{const n=this.map.peek();if(n.get(e)!==t)return;const r=this.cleanupFunctions.get(t);r?.(),this.cleanupFunctions.delete(t);const s=new Map(n);s.delete(e),this.map.value=s}}[Symbol.iterator](){return this.map.peek().values()}get value(){return this.map.value.values()}has(e){return this.map.value.has(e)}get(e){return this.map.value.get(e)}destroy(){for(const e of this){const t=this.cleanupFunctions.get(e);t?.(),e.destroy()}this.map.value=new Map}},iu,lu,cu,uu,du,fu,Ha,nt,Bo,Wo,Vo,Dt=class extends(Ha=en,fu=[he],du=[he],uu=[he],cu=[Ae],lu=[Ae],iu=[Ae],Ha){constructor(t,n){var r=t,{modifiers:s,type:a,sensors:o}=r,i=Gc(r,["modifiers","type","sensors"]);super(i,n),se(nt,5,this),be(this,Bo,se(nt,8,this)),se(nt,11,this),be(this,Wo,se(nt,12,this)),se(nt,15,this),be(this,Vo,se(nt,16,this,this.isDragSource?"dragging":"idle")),se(nt,19,this),this.type=a,this.sensors=o,this.modifiers=s,this.alignment=i.alignment}get isDropping(){return this.status==="dropping"&&this.isDragSource}get isDragging(){return this.status==="dragging"&&this.isDragSource}get isDragSource(){var t,n;return((n=(t=this.manager)==null?void 0:t.dragOperation.source)==null?void 0:n.id)===this.id}};nt=Kn(Ha);Bo=new WeakMap;Wo=new WeakMap;Vo=new WeakMap;ce(nt,4,"type",fu,Dt,Bo);ce(nt,4,"modifiers",du,Dt,Wo);ce(nt,4,"status",uu,Dt,Vo);ce(nt,2,"isDropping",cu,Dt);ce(nt,2,"isDragging",lu,Dt);ce(nt,2,"isDragSource",iu,Dt);vn(nt,Dt);var hu,pu,mu,gu,vu,yu,Ga,ze,No,zo,jo,Zo,Ho,Pt=class extends(Ga=en,yu=[he],vu=[he],gu=[he],mu=[he],pu=[he],hu=[Ae],Ga){constructor(t,n){var r=t,{accept:s,collisionDetector:a,collisionPriority:o,type:i}=r,l=Gc(r,["accept","collisionDetector","collisionPriority","type"]);super(l,n),se(ze,5,this),be(this,No,se(ze,8,this)),se(ze,11,this),be(this,zo,se(ze,12,this)),se(ze,15,this),be(this,jo,se(ze,16,this)),se(ze,19,this),be(this,Zo,se(ze,20,this)),se(ze,23,this),be(this,Ho,se(ze,24,this)),se(ze,27,this),this.accept=s,this.collisionDetector=a,this.collisionPriority=o,this.type=i}accepts(t){const{accept:n}=this;return n?typeof n=="function"?n(t):t.type?Array.isArray(n)?n.includes(t.type):t.type===n:!1:!0}get isDropTarget(){var t,n;return((n=(t=this.manager)==null?void 0:t.dragOperation.target)==null?void 0:n.id)===this.id}};ze=Kn(Ga);No=new WeakMap;zo=new WeakMap;jo=new WeakMap;Zo=new WeakMap;Ho=new WeakMap;ce(ze,4,"accept",yu,Pt,No);ce(ze,4,"type",vu,Pt,zo);ce(ze,4,"collisionDetector",gu,Pt,jo);ce(ze,4,"collisionPriority",mu,Pt,Zo);ce(ze,4,"shape",pu,Pt,Ho);ce(ze,2,"isDropTarget",hu,Pt);vn(ze,Pt);var Wn=class extends lt{constructor(e,t){super(e,t),this.manager=e,this.options=t}},ip=class extends AbortController{constructor(e,t){super(),this.constraints=e,this.onActivate=t,this.activated=!1;for(const n of e??[])n.controller=this}onEvent(e){var t;if(!this.activated)if((t=this.constraints)!=null&&t.length)for(const n of this.constraints)n.onEvent(e);else this.activate(e)}activate(e){this.activated||(this.activated=!0,this.onActivate(e))}abort(e){this.activated=!1,super.abort(e)}},hs,bu=class{constructor(e){this.options=e,be(this,hs)}set controller(e){bt(this,hs,e),e.signal.addEventListener("abort",()=>this.abort())}activate(e){var t;(t=Ge(this,hs))==null||t.activate(e)}};hs=new WeakMap;var Vn=class extends lt{constructor(e,t){super(e,t),this.manager=e,this.options=t}apply(e){return e.transform}},lp=class{constructor(e){this.draggables=new Sl,this.droppables=new Sl,this.plugins=new ba(e),this.sensors=new ba(e),this.modifiers=new ba(e)}register(e,t){if(e instanceof Dt)return this.draggables.register(e.id,e);if(e instanceof Pt)return this.droppables.register(e.id,e);if(e.prototype instanceof Vn)return this.modifiers.register(e,t);if(e.prototype instanceof Wn)return this.sensors.register(e,t);if(e.prototype instanceof lt)return this.plugins.register(e,t);throw new Error("Invalid instance type")}unregister(e){if(e instanceof en)return e instanceof Dt?this.draggables.unregister(e.id,e):e instanceof Pt?this.droppables.unregister(e.id,e):()=>{};if(e.prototype instanceof Vn)return this.modifiers.unregister(e);if(e.prototype instanceof Wn)return this.sensors.unregister(e);if(e.prototype instanceof lt)return this.plugins.unregister(e);throw new Error("Invalid instance type")}destroy(){this.draggables.destroy(),this.droppables.destroy(),this.plugins.destroy(),this.sensors.destroy(),this.modifiers.destroy()}},wu,_u,xu,Su,Cu,ku,Eu,Iu,Mu,ir,ps,Rn,De,Go,Uo,Xo,Yo,Ko,lr;Mu=[Ae],Iu=[he],Eu=[he],ku=[he],Cu=[he],Su=[he],xu=[Ae],_u=[Ae],wu=[Ae];var Tt=class{constructor(e){se(De,5,this),be(this,ir),be(this,ps),be(this,Rn,new Qt(void 0,(t,n)=>t&&n?t.equals(n):t===n)),this.status=new Vt,be(this,Go,se(De,8,this,!1)),se(De,11,this),be(this,Uo,se(De,12,this,null)),se(De,15,this),be(this,Xo,se(De,16,this,null)),se(De,19,this),be(this,Yo,se(De,20,this,null)),se(De,23,this),be(this,Ko,se(De,24,this,[])),se(De,27,this),this.position=new Hs({x:0,y:0}),be(this,lr,{x:0,y:0}),bt(this,ir,e)}get shape(){const{current:e,initial:t,previous:n}=Ge(this,Rn);return!e||!t?null:{current:e,initial:t,previous:n}}set shape(e){e?Ge(this,Rn).current=e:Ge(this,Rn).reset()}get source(){var e;const t=this.sourceIdentifier;if(t==null)return null;const n=Ge(this,ir).registry.draggables.get(t);return n&&bt(this,ps,n),(e=n??Ge(this,ps))!=null?e:null}get target(){var e;const t=this.targetIdentifier;return t!=null&&(e=Ge(this,ir).registry.droppables.get(t))!=null?e:null}get transform(){const{x:e,y:t}=this.position.delta;let n={x:e,y:t};for(const r of this.modifiers)n=r.apply(Hc(Zc({},this.snapshot()),{transform:n}));return bt(this,lr,n),n}snapshot(){return we(()=>({source:this.source,target:this.target,activatorEvent:this.activatorEvent,transform:Ge(this,lr),shape:this.shape?ya(this.shape):null,position:ya(this.position),status:ya(this.status),canceled:this.canceled}))}reset(){qt(()=>{this.status.set("idle"),this.sourceIdentifier=null,this.targetIdentifier=null,Ge(this,Rn).reset(),this.position.reset({x:0,y:0}),bt(this,lr,{x:0,y:0}),this.modifiers=[]})}};De=Kn(null);ir=new WeakMap;ps=new WeakMap;Rn=new WeakMap;Go=new WeakMap;Uo=new WeakMap;Xo=new WeakMap;Yo=new WeakMap;Ko=new WeakMap;lr=new WeakMap;ce(De,2,"shape",Mu,Tt);ce(De,4,"canceled",Iu,Tt,Go);ce(De,4,"activatorEvent",Eu,Tt,Uo);ce(De,4,"sourceIdentifier",ku,Tt,Xo);ce(De,4,"targetIdentifier",Cu,Tt,Yo);ce(De,4,"modifiers",Su,Tt,Ko);ce(De,2,"source",xu,Tt);ce(De,2,"target",_u,Tt);ce(De,2,"transform",wu,Tt);vn(De,Tt);var cp={get rendering(){return Promise.resolve()}};function Lt(e,t){return typeof e=="function"?e(t):e??t}var up=class{constructor(t){this.destroy=()=>{this.dragOperation.status.idle||this.actions.stop({canceled:!0}),this.dragOperation.modifiers.forEach(m=>m.destroy()),this.registry.destroy(),this.collisionObserver.destroy()};var n;const r=t??{},s=Lt(r.plugins,[]),a=Lt(r.sensors,[]),o=Lt(r.modifiers,[]),i=(n=r.renderer)!=null?n:cp,l=new sp(this),c=new lp(this);this.registry=c,this.monitor=l,this.renderer=i,this.actions=new op(this),this.dragOperation=new Tt(this),this.collisionObserver=new np(this),this.plugins=[ap,...s],this.modifiers=o,this.sensors=a;const{destroy:u}=this,f=Pr(()=>{var m,d,h;const v=we(()=>this.dragOperation.modifiers),y=this.modifiers;for(const g of v)y.includes(g)||g.destroy();this.dragOperation.modifiers=(h=(d=(m=this.dragOperation.source)==null?void 0:m.modifiers)==null?void 0:d.map(g=>{const{plugin:b,options:_}=Ao(g);return new b(this,_)}))!=null?h:y});this.destroy=()=>{f(),u()}}get plugins(){return this.registry.plugins.values}set plugins(t){this.registry.plugins.values=t}get modifiers(){return this.registry.modifiers.values}set modifiers(t){this.registry.modifiers.values=t}get sensors(){return this.registry.sensors.values}set sensors(t){this.registry.sensors.values=t}},Au=e=>{throw TypeError(e)},qo=(e,t,n)=>t.has(e)||Au("Cannot "+n),ie=(e,t,n)=>(qo(e,t,"read from private field"),t.get(e)),ot=(e,t,n)=>t.has(e)?Au("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),gt=(e,t,n,r)=>(qo(e,t,"write to private field"),t.set(e,n),n),Tu=(e,t,n)=>(qo(e,t,"access private method"),n);function Gs(e){return e?e instanceof KeyframeEffect?!0:"getKeyframes"in e&&typeof e.getKeyframes=="function":!1}function dp(e,t){const n=e.getAnimations();if(n.length>0)for(const r of n){if(r.playState!=="running")continue;const{effect:s}=r,o=(Gs(s)?s.getKeyframes():[]).filter(t);if(o.length>0)return[o[o.length-1],r]}return null}function Us(e){const{width:t,height:n,top:r,left:s,bottom:a,right:o}=e.getBoundingClientRect();return{width:t,height:n,top:r,left:s,bottom:a,right:o}}function Jo(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function Br(e){return"nodeType"in e}function St(e){var t,n,r;return e?Jo(e)?e:Br(e)?"defaultView"in e?(t=e.defaultView)!=null?t:window:(r=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?r:window:window:window}function Qo(e){const{Document:t}=St(e);return e instanceof t||"nodeType"in e&&e.nodeType===Node.DOCUMENT_NODE}function hn(e){return!e||Jo(e)?!1:e instanceof St(e).HTMLElement||"namespaceURI"in e&&typeof e.namespaceURI=="string"&&e.namespaceURI.endsWith("html")}function $u(e){return e instanceof St(e).SVGElement||"namespaceURI"in e&&typeof e.namespaceURI=="string"&&e.namespaceURI.endsWith("svg")}function bn(e){return e?Jo(e)?e.document:Br(e)?Qo(e)?e:hn(e)||$u(e)?e.ownerDocument:document:document:document}function fp(e){var t,n,r,s;const{documentElement:a}=bn(e),o=St(e).visualViewport,i=(t=o?.width)!=null?t:a.clientWidth,l=(n=o?.height)!=null?n:a.clientHeight,c=(r=o?.offsetTop)!=null?r:0,u=(s=o?.offsetLeft)!=null?s:0;return{top:c,left:u,right:u+i,bottom:c+l,width:i,height:l}}function hp(e,t){if(pp(e)&&e.open===!1)return!1;const{overflow:n,overflowX:r,overflowY:s}=getComputedStyle(e);return n==="visible"&&r==="visible"&&s==="visible"}function pp(e){return e.tagName==="DETAILS"}function ks(e,t=e.getBoundingClientRect(),n=0){var r,s,a,o,i;let l=t;const{ownerDocument:c}=e,u=(r=c.defaultView)!=null?r:window;let f=e.parentElement;for(;f&&f!==c.documentElement;){if(!hp(f)){const _=f.getBoundingClientRect(),w=n*(_.bottom-_.top),x=n*(_.right-_.left),C=n*(_.bottom-_.top),k=n*(_.right-_.left);l={top:Math.max(l.top,_.top-w),right:Math.min(l.right,_.right+x),bottom:Math.min(l.bottom,_.bottom+C),left:Math.max(l.left,_.left-k),width:0,height:0},l.width=l.right-l.left,l.height=l.bottom-l.top}f=f.parentElement}const m=u.visualViewport,d=(s=m?.offsetTop)!=null?s:0,h=(a=m?.offsetLeft)!=null?a:0,v=(o=m?.width)!=null?o:u.innerWidth,y=(i=m?.height)!=null?i:u.innerHeight,g=n*y,b=n*v;return l={top:Math.max(l.top,d-g),right:Math.min(l.right,h+v+b),bottom:Math.min(l.bottom,d+y+g),left:Math.max(l.left,h-b),width:0,height:0},l.width=l.right-l.left,l.height=l.bottom-l.top,l.width<0&&(l.width=0),l.height<0&&(l.height=0),l}function Nn(e){return{x:e.clientX,y:e.clientY}}var Ru=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ua(e=document,t=new Set){if(t.has(e))return[];t.add(e);const n=[e];for(const r of Array.from(e.querySelectorAll("iframe, frame")))try{const s=r.contentDocument;s&&!t.has(s)&&n.push(...Ua(s,t))}catch{}try{const r=e.defaultView;if(r&&r!==window.top){const s=r.parent;s&&s.document&&s.document!==e&&n.push(...Ua(s.document,t))}}catch{}return n}function ei(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function Du(){var e,t;const n=ei()?window.visualViewport:null;return{x:(e=n?.offsetLeft)!=null?e:0,y:(t=n?.offsetTop)!=null?t:0}}function ti(e){return!e||!Br(e)?!1:e instanceof St(e).ShadowRoot}function Es(e){if(e&&Br(e)){let t=e.getRootNode();if(ti(t))return t;if(t instanceof Document)return t}return bn(e)}function Pu(e){return e.matchMedia("(prefers-reduced-motion: reduce)").matches}function mp(e){const t="input, textarea, select, canvas, [contenteditable]",n=e.cloneNode(!0),r=Array.from(e.querySelectorAll(t));return Array.from(n.querySelectorAll(t)).forEach((a,o)=>{const i=r[o];if(Cl(a)&&Cl(i)&&(a.type!=="file"&&(a.value=i.value),a.type==="radio"&&a.name&&(a.name=`Cloned__${a.name}`)),kl(a)&&kl(i)&&i.width>0&&i.height>0){const l=a.getContext("2d");l?.drawImage(i,0,0)}}),n}function Cl(e){return"value"in e}function kl(e){return e.tagName==="CANVAS"}function Fu(e,{x:t,y:n}){const r=e.elementFromPoint(t,n);if(gp(r)){const{contentDocument:s}=r;if(s){const{left:a,top:o}=r.getBoundingClientRect();return Fu(s,{x:t-a,y:n-o})}}return r}function gp(e){return e?.tagName==="IFRAME"}var El=new WeakMap;function vp(e){return!!e.closest(`
|
|
1
|
+
"use strict";var Xf=Object.create;var al=Object.defineProperty;var Yf=Object.getOwnPropertyDescriptor;var Kf=Object.getOwnPropertyNames;var qf=Object.getPrototypeOf,Jf=Object.prototype.hasOwnProperty;var Qf=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Kf(t))!Jf.call(e,s)&&s!==n&&al(e,s,{get:()=>t[s],enumerable:!(r=Yf(t,s))||r.enumerable});return e};var eh=(e,t,n)=>(n=e!=null?Xf(qf(e)):{},Qf(t||!e||!e.__esModule?al(n,"default",{value:e,enumerable:!0}):n,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("tone"),C=require("react/jsx-runtime"),p=require("react"),P=require("styled-components"),bo=require("react-dom");function oc(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 ic=oc(O),D=oc(p);var fa={exports:{}},ol;function th(){return ol||(ol=1,(function(e,t){(function(n,r){e.exports=r()})(window,(function(){return(function(n){var r={};function s(a){if(r[a])return r[a].exports;var o=r[a]={i:a,l:!1,exports:{}};return n[a].call(o.exports,o,o.exports,s),o.l=!0,o.exports}return s.m=n,s.c=r,s.d=function(a,o,i){s.o(a,o)||Object.defineProperty(a,o,{enumerable:!0,get:i})},s.r=function(a){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},s.t=function(a,o){if(1&o&&(a=s(a)),8&o||4&o&&typeof a=="object"&&a&&a.__esModule)return a;var i=Object.create(null);if(s.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:a}),2&o&&typeof a!="string")for(var l in a)s.d(i,l,(function(c){return a[c]}).bind(null,l));return i},s.n=function(a){var o=a&&a.__esModule?function(){return a.default}:function(){return a};return s.d(o,"a",o),o},s.o=function(a,o){return Object.prototype.hasOwnProperty.call(a,o)},s.p="",s(s.s="./src/index.ts")})({"./src/chunk.ts":function(n,r,s){s.r(r),s.d(r,"SF2Chunk",(function(){return d}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=s("./src/chunks/index.ts");function l(h){return(l=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(v){return typeof v}:function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v})(h)}function c(h,v){for(var y=0;y<v.length;y++){var g=v[y];g.enumerable=g.enumerable||!1,g.configurable=!0,"value"in g&&(g.writable=!0),Object.defineProperty(h,g.key,g)}}function u(h){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)})(h)}function f(h,v){return(f=Object.setPrototypeOf||function(y,g){return y.__proto__=g,y})(h,v)}function m(h){if(h===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return h}var d=(function(h){function v(b){var w,_,x,S,k,I;return(function(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")})(this,v),_=this,w=!(x=u(v).call(this,b.id,b.length,b.buffer,b.subChunks))||l(x)!=="object"&&typeof x!="function"?m(_):x,S=m(m(w)),I=void 0,(k="subChunks")in S?Object.defineProperty(S,k,{value:I,enumerable:!0,configurable:!0,writable:!0}):S[k]=I,w.subChunks=b.subChunks.map((function(E){return new v(E)})),w}var y,g;return(function(b,w){if(typeof w!="function"&&w!==null)throw new TypeError("Super expression must either be null or a function");b.prototype=Object.create(w&&w.prototype,{constructor:{value:b,writable:!0,configurable:!0}}),w&&f(b,w)})(v,h),y=v,(g=[{key:"getMetaData",value:function(){if(this.id!=="LIST")throw new a.ParseError("Unexpected chunk ID","'LIST'","'".concat(this.id,"'"));var b=this.subChunks.reduce((function(w,_){if(_.id==="ifil"||_.id==="iver"){if(_.length!==o.SF_VERSION_LENGTH)throw new a.ParseError("Invalid size for the '".concat(_.id,"' sub-chunk"));w[_.id]="".concat(_.getInt16(),".").concat(_.getInt16(2))}else w[_.id]=_.getString();return w}),{});if(!b.ifil)throw new a.ParseError("Missing required 'ifil' sub-chunk");if(!b.INAM)throw new a.ParseError("Missing required 'INAM' sub-chunk");return{version:b.ifil,soundEngine:b.isng||"EMU8000",name:b.INAM,rom:b.irom,romVersion:b.iver,creationDate:b.ICRD,author:b.IENG,product:b.IPRD,copyright:b.ICOP,comments:b.ICMT,createdBy:b.ISFT}}},{key:"getSampleData",value:function(){if(this.id!=="LIST")throw new a.ParseError("Unexpected chunk ID","'LIST'","'".concat(this.id,"'"));var b=this.subChunks[0];if(b.id!=="smpl")throw new a.ParseError("Invalid chunk signature","'smpl'","'".concat(b.id,"'"));return b.buffer}},{key:"getPresetData",value:function(){if(this.id!=="LIST")throw new a.ParseError("Unexpected chunk ID","'LIST'","'".concat(this.id,"'"));return{presetHeaders:Object(i.getPresetHeaders)(this.subChunks[0]),presetZones:Object(i.getZones)(this.subChunks[1],"pbag"),presetModulators:Object(i.getModulators)(this.subChunks[2],"pmod"),presetGenerators:Object(i.getGenerators)(this.subChunks[3],"pgen"),instrumentHeaders:Object(i.getInstrumentHeaders)(this.subChunks[4]),instrumentZones:Object(i.getZones)(this.subChunks[5],"ibag"),instrumentModulators:Object(i.getModulators)(this.subChunks[6],"imod"),instrumentGenerators:Object(i.getGenerators)(this.subChunks[7],"igen"),sampleHeaders:Object(i.getSampleHeaders)(this.subChunks[8])}}}])&&c(y.prototype,g),v})(a.RIFFChunk)},"./src/chunks/generators.ts":function(n,r,s){s.r(r),s.d(r,"getGenerators",(function(){return f}));var a=s("./src/riff/index.ts"),o=s("./src/types/index.ts"),i=s("./src/constants.ts"),l=[o.GeneratorType.StartAddrsOffset,o.GeneratorType.EndAddrsOffset,o.GeneratorType.StartLoopAddrsOffset,o.GeneratorType.EndLoopAddrsOffset,o.GeneratorType.StartAddrsCoarseOffset,o.GeneratorType.EndAddrsCoarseOffset,o.GeneratorType.StartLoopAddrsCoarseOffset,o.GeneratorType.KeyNum,o.GeneratorType.Velocity,o.GeneratorType.EndLoopAddrsCoarseOffset,o.GeneratorType.SampleModes,o.GeneratorType.ExclusiveClass,o.GeneratorType.OverridingRootKey],c=[o.GeneratorType.Unused1,o.GeneratorType.Unused2,o.GeneratorType.Unused3,o.GeneratorType.Unused4,o.GeneratorType.Reserved1,o.GeneratorType.Reserved2,o.GeneratorType.Reserved3],u=[o.GeneratorType.KeyRange,o.GeneratorType.VelRange],f=function(m,d){if(m.id!==d)throw new a.ParseError("Unexpected chunk ID","'".concat(d,"'"),"'".concat(m.id,"'"));if(m.length%i.SF_GENERATOR_SIZE)throw new a.ParseError("Invalid size for the '".concat(d,"' sub-chunk"));return m.iterate((function(h){var v=h.getInt16();return o.GeneratorType[v]?d==="pgen"&&l.includes(v)||d==="igen"&&c.includes(v)?null:u.includes(v)?{id:v,range:{lo:h.getByte(),hi:h.getByte()}}:{id:v,value:h.getInt16BE()}:null}))}},"./src/chunks/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/instruments/index.ts");s.d(r,"getInstrumentHeaders",(function(){return a.getInstrumentHeaders}));var o=s("./src/chunks/presets/index.ts");s.d(r,"getPresetHeaders",(function(){return o.getPresetHeaders}));var i=s("./src/chunks/samples/index.ts");s.d(r,"getSampleHeaders",(function(){return i.getSampleHeaders}));var l=s("./src/chunks/generators.ts");s.d(r,"getGenerators",(function(){return l.getGenerators}));var c=s("./src/chunks/modulators.ts");s.d(r,"getModulators",(function(){return c.getModulators}));var u=s("./src/chunks/zones.ts");s.d(r,"getZones",(function(){return u.getZones})),s.d(r,"getItemsInZone",(function(){return u.getItemsInZone}))},"./src/chunks/instruments/headers.ts":function(n,r,s){s.r(r),s.d(r,"getInstrumentHeaders",(function(){return i}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(l){if(l.id!=="inst")throw new a.ParseError("Unexpected chunk ID","'inst'","'".concat(l.id,"'"));if(l.length%o.SF_INSTRUMENT_HEADER_SIZE)throw new a.ParseError("Invalid size for the 'inst' sub-chunk");return l.iterate((function(c){return{name:c.getString(),bagIndex:c.getInt16()}}))}},"./src/chunks/instruments/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/instruments/headers.ts");s.d(r,"getInstrumentHeaders",(function(){return a.getInstrumentHeaders}))},"./src/chunks/modulators.ts":function(n,r,s){s.r(r),s.d(r,"getModulators",(function(){return l}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(c){return{type:c>>10&63,polarity:c>>9&1,direction:c>>8&1,palette:c>>7&1,index:127&c}},l=function(c,u){if(c.id!==u)throw new a.ParseError("Unexpected chunk ID","'".concat(u,"'"),"'".concat(c.id,"'"));if(c.length%o.SF_MODULATOR_SIZE)throw new a.ParseError("Invalid size for the '".concat(u,"' sub-chunk"));return c.iterate((function(f){return{source:i(f.getInt16BE()),id:f.getInt16BE(),value:f.getInt16BE(),valueSource:i(f.getInt16BE()),transform:f.getInt16BE()}}))}},"./src/chunks/presets/headers.ts":function(n,r,s){s.r(r),s.d(r,"getPresetHeaders",(function(){return i}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(l){if(l.id!=="phdr")throw new a.ParseError("Invalid chunk ID","'phdr'","'".concat(l.id,"'"));if(l.length%o.SF_PRESET_HEADER_SIZE)throw new a.ParseError("Invalid size for the 'phdr' sub-chunk");return l.iterate((function(c){return{name:c.getString(),preset:c.getInt16(),bank:c.getInt16(),bagIndex:c.getInt16(),library:c.getUInt32(),genre:c.getUInt32(),morphology:c.getUInt32()}}))}},"./src/chunks/presets/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/presets/headers.ts");s.d(r,"getPresetHeaders",(function(){return a.getPresetHeaders}))},"./src/chunks/samples/headers.ts":function(n,r,s){s.r(r),s.d(r,"getSampleHeaders",(function(){return i}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=function(l){if(l.id!=="shdr")throw new a.ParseError("Unexpected chunk ID","'shdr'","'".concat(l.id,"'"));if(l.length%o.SF_SAMPLE_HEADER_SIZE)throw new a.ParseError("Invalid size for the 'shdr' sub-chunk");return l.iterate((function(c){return{name:c.getString(),start:c.getUInt32(),end:c.getUInt32(),startLoop:c.getUInt32(),endLoop:c.getUInt32(),sampleRate:c.getUInt32(),originalPitch:c.getByte(),pitchCorrection:c.getChar(),link:c.getInt16(),type:c.getInt16()}}))}},"./src/chunks/samples/index.ts":function(n,r,s){s.r(r);var a=s("./src/chunks/samples/headers.ts");s.d(r,"getSampleHeaders",(function(){return a.getSampleHeaders}))},"./src/chunks/zones.ts":function(n,r,s){s.r(r),s.d(r,"getZones",(function(){return l})),s.d(r,"getItemsInZone",(function(){return c}));var a=s("./src/riff/index.ts"),o=s("./src/constants.ts"),i=s("./src/types/index.ts"),l=function(d,h){if(d.id!==h)throw new a.ParseError("Unexpected chunk ID","'".concat(h,"'"),"'".concat(d.id,"'"));if(d.length%o.SF_BAG_SIZE)throw new a.ParseError("Invalid size for the '".concat(h,"' sub-chunk"));return d.iterate((function(v){return{generatorIndex:v.getInt16(),modulatorIndex:v.getInt16()}}))},c=function(d,h,v,y,g,b){for(var w=[],_=0;_<d.length;_++){for(var x=d[_],S=d[_+1],k=x.bagIndex,I=S?S.bagIndex:h.length,E=[],T=void 0,R=k;R<I;R++){var A=u(R,h,v),M=f(R,h,y),$=M[i.GeneratorType.KeyRange]&&M[i.GeneratorType.KeyRange].range,F=M[b];if(F){var L=g[F.value];L&&E.push({keyRange:$,modulators:A,generators:M,reference:L})}else R-k==0&&(T={keyRange:$,modulators:A,generators:M})}w.push({header:x,globalZone:T,zones:E})}return w},u=function(d,h,v){var y=h[d],g=h[d+1],b=y.modulatorIndex,w=g?g.modulatorIndex:h.length;return m(b,w,v)},f=function(d,h,v){var y=h[d],g=h[d+1],b=y.generatorIndex,w=g?g.generatorIndex:h.length;return m(b,w,v)},m=function(d,h,v){for(var y={},g=d;g<h;g++){var b=v[g];b&&(y[b.id]=b)}return y}},"./src/constants.ts":function(n,r,s){s.r(r),s.d(r,"SF_VERSION_LENGTH",(function(){return a})),s.d(r,"SF_PRESET_HEADER_SIZE",(function(){return o})),s.d(r,"SF_BAG_SIZE",(function(){return i})),s.d(r,"SF_MODULATOR_SIZE",(function(){return l})),s.d(r,"SF_GENERATOR_SIZE",(function(){return c})),s.d(r,"SF_INSTRUMENT_HEADER_SIZE",(function(){return u})),s.d(r,"SF_SAMPLE_HEADER_SIZE",(function(){return f})),s.d(r,"DEFAULT_SAMPLE_RATE",(function(){return m}));var a=4,o=38,i=4,l=10,c=4,u=22,f=46,m=22050},"./src/index.ts":function(n,r,s){s.r(r);var a=s("./src/types/index.ts");for(var o in a)["default"].indexOf(o)<0&&(function(u){s.d(r,u,(function(){return a[u]}))})(o);var i=s("./src/chunk.ts");s.d(r,"SF2Chunk",(function(){return i.SF2Chunk}));var l=s("./src/constants.ts");s.d(r,"SF_VERSION_LENGTH",(function(){return l.SF_VERSION_LENGTH})),s.d(r,"SF_PRESET_HEADER_SIZE",(function(){return l.SF_PRESET_HEADER_SIZE})),s.d(r,"SF_BAG_SIZE",(function(){return l.SF_BAG_SIZE})),s.d(r,"SF_MODULATOR_SIZE",(function(){return l.SF_MODULATOR_SIZE})),s.d(r,"SF_GENERATOR_SIZE",(function(){return l.SF_GENERATOR_SIZE})),s.d(r,"SF_INSTRUMENT_HEADER_SIZE",(function(){return l.SF_INSTRUMENT_HEADER_SIZE})),s.d(r,"SF_SAMPLE_HEADER_SIZE",(function(){return l.SF_SAMPLE_HEADER_SIZE})),s.d(r,"DEFAULT_SAMPLE_RATE",(function(){return l.DEFAULT_SAMPLE_RATE}));var c=s("./src/soundFont2.ts");s.d(r,"SoundFont2",(function(){return c.SoundFont2}))},"./src/riff/chunkIterator.ts":function(n,r,s){s.r(r),s.d(r,"ChunkIterator",(function(){return c}));var a=s("./src/utils/index.ts");function o(u,f){if(!(u instanceof f))throw new TypeError("Cannot call a class as a function")}function i(u,f){for(var m=0;m<f.length;m++){var d=f[m];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(u,d.key,d)}}function l(u,f,m){return f in u?Object.defineProperty(u,f,{value:m,enumerable:!0,configurable:!0,writable:!0}):u[f]=m,u}var c=(function(){function u(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;o(this,u),l(this,"target",[]),l(this,"chunk",void 0),l(this,"position",0),this.chunk=d,this.position=h}var f,m;return f=u,(m=[{key:"iterate",value:function(d){for(;this.position<this.chunk.length;){var h=d(this);h&&this.target.push(h)}}},{key:"getString",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:20,h=Object(a.getStringFromBuffer)(this.getBuffer(this.position,d));return this.position+=d,h}},{key:"getInt16",value:function(){return this.chunk.buffer[this.position++]|this.chunk.buffer[this.position++]<<8}},{key:"getInt16BE",value:function(){return this.getInt16()<<16>>16}},{key:"getUInt32",value:function(){return(this.chunk.buffer[this.position++]|this.chunk.buffer[this.position++]<<8|this.chunk.buffer[this.position++]<<16|this.chunk.buffer[this.position++]<<24)>>>0}},{key:"getByte",value:function(){return this.chunk.buffer[this.position++]}},{key:"getChar",value:function(){return this.chunk.buffer[this.position++]<<24>>24}},{key:"skip",value:function(d){this.position+=d}},{key:"getBuffer",value:function(d,h){return this.chunk.buffer.subarray(d,d+h)}},{key:"currentPosition",get:function(){return this.position}}])&&i(f.prototype,m),u})()},"./src/riff/index.ts":function(n,r,s){s.r(r);var a=s("./src/riff/chunkIterator.ts");s.d(r,"ChunkIterator",(function(){return a.ChunkIterator}));var o=s("./src/riff/parseError.ts");s.d(r,"ParseError",(function(){return o.ParseError}));var i=s("./src/riff/parser.ts");s.d(r,"parseBuffer",(function(){return i.parseBuffer})),s.d(r,"getChunk",(function(){return i.getChunk})),s.d(r,"getChunkLength",(function(){return i.getChunkLength})),s.d(r,"getSubChunks",(function(){return i.getSubChunks})),s.d(r,"getChunkId",(function(){return i.getChunkId}));var l=s("./src/riff/riffChunk.ts");s.d(r,"RIFFChunk",(function(){return l.RIFFChunk}))},"./src/riff/parseError.ts":function(n,r,s){function a(d){return(a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(h){return typeof h}:function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h})(d)}function o(d,h){return!h||a(h)!=="object"&&typeof h!="function"?(function(v){if(v===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return v})(d):h}function i(d){var h=typeof Map=="function"?new Map:void 0;return(i=function(v){if(v===null||(y=v,Function.toString.call(y).indexOf("[native code]")===-1))return v;var y;if(typeof v!="function")throw new TypeError("Super expression must either be null or a function");if(h!==void 0){if(h.has(v))return h.get(v);h.set(v,g)}function g(){return c(v,arguments,f(this).constructor)}return g.prototype=Object.create(v.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),u(g,v)})(d)}function l(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch{return!1}}function c(d,h,v){return(c=l()?Reflect.construct:function(y,g,b){var w=[null];w.push.apply(w,g);var _=new(Function.bind.apply(y,w));return b&&u(_,b.prototype),_}).apply(null,arguments)}function u(d,h){return(u=Object.setPrototypeOf||function(v,y){return v.__proto__=y,v})(d,h)}function f(d){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)})(d)}s.r(r),s.d(r,"ParseError",(function(){return m}));var m=(function(d){function h(v,y,g){return(function(b,w){if(!(b instanceof w))throw new TypeError("Cannot call a class as a function")})(this,h),o(this,f(h).call(this,"".concat(v).concat(y&&g?", expected ".concat(y,", received ").concat(g):"")))}return(function(v,y){if(typeof y!="function"&&y!==null)throw new TypeError("Super expression must either be null or a function");v.prototype=Object.create(y&&y.prototype,{constructor:{value:v,writable:!0,configurable:!0}}),y&&u(v,y)})(h,d),h})(i(Error))},"./src/riff/parser.ts":function(n,r,s){s.r(r),s.d(r,"parseBuffer",(function(){return l})),s.d(r,"getChunk",(function(){return c})),s.d(r,"getChunkLength",(function(){return u})),s.d(r,"getSubChunks",(function(){return f})),s.d(r,"getChunkId",(function(){return m}));var a=s("./src/riff/parseError.ts"),o=s("./src/utils/buffer.ts"),i=s("./src/riff/riffChunk.ts"),l=function(d){var h=m(d);if(h!=="RIFF")throw new a.ParseError("Invalid file format","RIFF",h);var v=m(d,8);if(v!=="sfbk")throw new a.ParseError("Invalid signature","sfbk",v);var y=d.subarray(8),g=f(y.subarray(4));return new i.RIFFChunk(h,y.length,y,g)},c=function(d,h){var v=m(d,h),y=u(d,h+4),g=[];return v!=="RIFF"&&v!=="LIST"||(g=f(d.subarray(h+12))),new i.RIFFChunk(v,y,d.subarray(h+8),g)},u=function(d,h){return((d=d.subarray(h,h+4))[0]|d[1]<<8|d[2]<<16|d[3]<<24)>>>0},f=function(d){for(var h=[],v=0;v<=d.length-8;){var y=c(d,v);h.push(y),v=(v+=8+y.length)%2?v+1:v}return h},m=function(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Object(o.getStringFromBuffer)(d.subarray(h,h+4))}},"./src/riff/riffChunk.ts":function(n,r,s){s.r(r),s.d(r,"RIFFChunk",(function(){return c}));var a=s("./src/riff/chunkIterator.ts"),o=s("./src/utils/index.ts");function i(u,f){for(var m=0;m<f.length;m++){var d=f[m];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(u,d.key,d)}}function l(u,f,m){return f in u?Object.defineProperty(u,f,{value:m,enumerable:!0,configurable:!0,writable:!0}):u[f]=m,u}var c=(function(){function u(d,h,v,y){(function(g,b){if(!(g instanceof b))throw new TypeError("Cannot call a class as a function")})(this,u),l(this,"id",void 0),l(this,"length",void 0),l(this,"buffer",void 0),l(this,"subChunks",void 0),this.id=d,this.length=h,this.buffer=v,this.subChunks=y}var f,m;return f=u,(m=[{key:"getString",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,h=arguments.length>1?arguments[1]:void 0;return Object(o.getStringFromBuffer)(this.getBuffer(d,h||this.length-d))}},{key:"getInt16",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[d++]|this.buffer[d]<<8}},{key:"getUInt32",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return(this.buffer[d++]|this.buffer[d++]<<8|this.buffer[d++]<<16|this.buffer[d]<<24)>>>0}},{key:"getByte",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[d]}},{key:"getChar",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[d]<<24>>24}},{key:"iterator",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new a.ChunkIterator(this,d)}},{key:"iterate",value:function(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,v=new a.ChunkIterator(this,h);return v.iterate(d),v.target}},{key:"getBuffer",value:function(d,h){return this.buffer.subarray(d,d+h)}}])&&i(f.prototype,m),u})()},"./src/soundFont2.ts":function(n,r,s){s.r(r),s.d(r,"SoundFont2",(function(){return h}));var a=s("./src/types/index.ts"),o=s("./src/chunk.ts"),i=s("./src/riff/index.ts"),l=s("./src/chunks/index.ts"),c=s("./src/utils/index.ts");function u(v){for(var y=1;y<arguments.length;y++){var g=arguments[y]!=null?arguments[y]:{},b=Object.keys(g);typeof Object.getOwnPropertySymbols=="function"&&(b=b.concat(Object.getOwnPropertySymbols(g).filter((function(w){return Object.getOwnPropertyDescriptor(g,w).enumerable})))),b.forEach((function(w){d(v,w,g[w])}))}return v}function f(v,y){for(var g=0;g<y.length;g++){var b=y[g];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(v,b.key,b)}}function m(v,y,g){return y&&f(v.prototype,y),g&&f(v,g),v}function d(v,y,g){return y in v?Object.defineProperty(v,y,{value:g,enumerable:!0,configurable:!0,writable:!0}):v[y]=g,v}var h=(function(){function v(y){if((function(b,w){if(!(b instanceof w))throw new TypeError("Cannot call a class as a function")})(this,v),d(this,"chunk",void 0),d(this,"metaData",void 0),d(this,"sampleData",void 0),d(this,"samples",void 0),d(this,"presetData",void 0),d(this,"instruments",void 0),d(this,"presets",void 0),d(this,"banks",void 0),!(y instanceof o.SF2Chunk)){var g=Object(i.parseBuffer)(y);y=new o.SF2Chunk(g)}if(y.subChunks.length!==3)throw new i.ParseError("Invalid sfbk structure","3 chunks","".concat(y.subChunks.length," chunks"));this.chunk=y,this.metaData=y.subChunks[0].getMetaData(),this.sampleData=y.subChunks[1].getSampleData(),this.presetData=y.subChunks[2].getPresetData(),this.samples=this.getSamples(),this.instruments=this.getInstruments(),this.presets=this.getPresets(),this.banks=this.getBanks()}return m(v,null,[{key:"from",value:function(y){return new v(y)}}]),m(v,[{key:"getKeyData",value:function(y){var g=this,b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Object(c.memoize)((function(_,x,S){var k=g.banks[x];if(k){var I=k.presets[S];if(I){var E=I.zones.filter((function(j){return g.isKeyInRange(j,_)}));if(E.length>0){var T=!0,R=!1,A=void 0;try{for(var M,$=E[Symbol.iterator]();!(T=(M=$.next()).done);T=!0){var F=M.value,L=F.instrument,z=L.zones.filter((function(j){return g.isKeyInRange(j,_)}));if(z.length>0){var q=!0,Y=!1,ne=void 0;try{for(var G,J=z[Symbol.iterator]();!(q=(G=J.next()).done);q=!0){var ae=G.value,ue=ae.sample,de=u({},F.generators,ae.generators),Ae=u({},F.modulators,ae.modulators);return{keyNumber:_,preset:I,instrument:L,sample:ue,generators:de,modulators:Ae}}}catch(j){Y=!0,ne=j}finally{try{q||J.return==null||J.return()}finally{if(Y)throw ne}}}}}catch(j){R=!0,A=j}finally{try{T||$.return==null||$.return()}finally{if(R)throw A}}}}}return null}))(y,b,w)}},{key:"isKeyInRange",value:function(y,g){return y.keyRange===void 0||y.keyRange.lo<=g&&y.keyRange.hi>=g}},{key:"getBanks",value:function(){return this.presets.reduce((function(y,g){var b=g.header.bank;return y[b]||(y[b]={presets:[]}),y[b].presets[g.header.preset]=g,y}),[])}},{key:"getPresets",value:function(){var y=this.presetData,g=y.presetHeaders,b=y.presetZones,w=y.presetGenerators,_=y.presetModulators;return Object(l.getItemsInZone)(g,b,_,w,this.instruments,a.GeneratorType.Instrument).filter((function(x){return x.header.name!=="EOP"})).map((function(x){return{header:x.header,globalZone:x.globalZone,zones:x.zones.map((function(S){return{keyRange:S.keyRange,generators:S.generators,modulators:S.modulators,instrument:S.reference}}))}}))}},{key:"getInstruments",value:function(){var y=this.presetData,g=y.instrumentHeaders,b=y.instrumentZones,w=y.instrumentModulators,_=y.instrumentGenerators;return Object(l.getItemsInZone)(g,b,w,_,this.samples,a.GeneratorType.SampleId).filter((function(x){return x.header.name!=="EOI"})).map((function(x){return{header:x.header,globalZone:x.globalZone,zones:x.zones.map((function(S){return{keyRange:S.keyRange,generators:S.generators,modulators:S.modulators,sample:S.reference}}))}}))}},{key:"getSamples",value:function(){var y=this;return this.presetData.sampleHeaders.filter((function(g){return g.name!=="EOS"})).map((function(g){if(g.name!=="EOS"&&g.sampleRate<=0)throw new Error("Illegal sample rate of ".concat(g.sampleRate," hz in sample '").concat(g.name,"'"));return g.originalPitch>=128&&g.originalPitch<=254&&(g.originalPitch=60),g.startLoop-=g.start,g.endLoop-=g.start,{header:g,data:new Int16Array(new Uint8Array(y.sampleData.subarray(2*g.start,2*g.end)).buffer)}}))}}]),v})()},"./src/types/bank.ts":function(n,r){},"./src/types/generator.ts":function(n,r,s){var a,o;function i(c,u,f){return u in c?Object.defineProperty(c,u,{value:f,enumerable:!0,configurable:!0,writable:!0}):c[u]=f,c}s.r(r),s.d(r,"GeneratorType",(function(){return o})),s.d(r,"DEFAULT_GENERATOR_VALUES",(function(){return l})),(function(c){c[c.StartAddrsOffset=0]="StartAddrsOffset",c[c.EndAddrsOffset=1]="EndAddrsOffset",c[c.StartLoopAddrsOffset=2]="StartLoopAddrsOffset",c[c.EndLoopAddrsOffset=3]="EndLoopAddrsOffset",c[c.StartAddrsCoarseOffset=4]="StartAddrsCoarseOffset",c[c.ModLFOToPitch=5]="ModLFOToPitch",c[c.VibLFOToPitch=6]="VibLFOToPitch",c[c.ModEnvToPitch=7]="ModEnvToPitch",c[c.InitialFilterFc=8]="InitialFilterFc",c[c.InitialFilterQ=9]="InitialFilterQ",c[c.ModLFOToFilterFc=10]="ModLFOToFilterFc",c[c.ModEnvToFilterFc=11]="ModEnvToFilterFc",c[c.EndAddrsCoarseOffset=12]="EndAddrsCoarseOffset",c[c.ModLFOToVolume=13]="ModLFOToVolume",c[c.Unused1=14]="Unused1",c[c.ChorusEffectsSend=15]="ChorusEffectsSend",c[c.ReverbEffectsSend=16]="ReverbEffectsSend",c[c.Pan=17]="Pan",c[c.Unused2=18]="Unused2",c[c.Unused3=19]="Unused3",c[c.Unused4=20]="Unused4",c[c.DelayModLFO=21]="DelayModLFO",c[c.FreqModLFO=22]="FreqModLFO",c[c.DelayVibLFO=23]="DelayVibLFO",c[c.FreqVibLFO=24]="FreqVibLFO",c[c.DelayModEnv=25]="DelayModEnv",c[c.AttackModEnv=26]="AttackModEnv",c[c.HoldModEnv=27]="HoldModEnv",c[c.DecayModEnv=28]="DecayModEnv",c[c.SustainModEnv=29]="SustainModEnv",c[c.ReleaseModEnv=30]="ReleaseModEnv",c[c.KeyNumToModEnvHold=31]="KeyNumToModEnvHold",c[c.KeyNumToModEnvDecay=32]="KeyNumToModEnvDecay",c[c.DelayVolEnv=33]="DelayVolEnv",c[c.AttackVolEnv=34]="AttackVolEnv",c[c.HoldVolEnv=35]="HoldVolEnv",c[c.DecayVolEnv=36]="DecayVolEnv",c[c.SustainVolEnv=37]="SustainVolEnv",c[c.ReleaseVolEnv=38]="ReleaseVolEnv",c[c.KeyNumToVolEnvHold=39]="KeyNumToVolEnvHold",c[c.KeyNumToVolEnvDecay=40]="KeyNumToVolEnvDecay",c[c.Instrument=41]="Instrument",c[c.Reserved1=42]="Reserved1",c[c.KeyRange=43]="KeyRange",c[c.VelRange=44]="VelRange",c[c.StartLoopAddrsCoarseOffset=45]="StartLoopAddrsCoarseOffset",c[c.KeyNum=46]="KeyNum",c[c.Velocity=47]="Velocity",c[c.InitialAttenuation=48]="InitialAttenuation",c[c.Reserved2=49]="Reserved2",c[c.EndLoopAddrsCoarseOffset=50]="EndLoopAddrsCoarseOffset",c[c.CoarseTune=51]="CoarseTune",c[c.FineTune=52]="FineTune",c[c.SampleId=53]="SampleId",c[c.SampleModes=54]="SampleModes",c[c.Reserved3=55]="Reserved3",c[c.ScaleTuning=56]="ScaleTuning",c[c.ExclusiveClass=57]="ExclusiveClass",c[c.OverridingRootKey=58]="OverridingRootKey",c[c.Unused5=59]="Unused5",c[c.EndOper=60]="EndOper"})(o||(o={}));var l=(i(a={},o.StartAddrsOffset,0),i(a,o.EndAddrsOffset,0),i(a,o.StartLoopAddrsOffset,0),i(a,o.EndLoopAddrsOffset,0),i(a,o.StartAddrsCoarseOffset,0),i(a,o.ModLFOToPitch,0),i(a,o.VibLFOToPitch,0),i(a,o.ModEnvToPitch,0),i(a,o.InitialFilterFc,13500),i(a,o.InitialFilterQ,0),i(a,o.ModLFOToFilterFc,0),i(a,o.ModEnvToFilterFc,0),i(a,o.EndAddrsCoarseOffset,0),i(a,o.ModLFOToVolume,0),i(a,o.ChorusEffectsSend,0),i(a,o.ReverbEffectsSend,0),i(a,o.Pan,0),i(a,o.DelayModLFO,-12e3),i(a,o.FreqModLFO,0),i(a,o.DelayVibLFO,-12e3),i(a,o.FreqVibLFO,0),i(a,o.DelayModEnv,-12e3),i(a,o.AttackModEnv,-12e3),i(a,o.HoldModEnv,-12e3),i(a,o.DecayModEnv,-12e3),i(a,o.SustainModEnv,0),i(a,o.ReleaseModEnv,-12e3),i(a,o.KeyNumToModEnvHold,0),i(a,o.KeyNumToModEnvDecay,0),i(a,o.DelayVolEnv,-12e3),i(a,o.AttackVolEnv,-12e3),i(a,o.HoldVolEnv,-12e3),i(a,o.DecayVolEnv,-12e3),i(a,o.SustainVolEnv,0),i(a,o.ReleaseVolEnv,-12e3),i(a,o.KeyNumToVolEnvHold,0),i(a,o.KeyNumToVolEnvDecay,0),i(a,o.StartLoopAddrsCoarseOffset,0),i(a,o.KeyNum,-1),i(a,o.Velocity,-1),i(a,o.InitialAttenuation,0),i(a,o.EndLoopAddrsCoarseOffset,0),i(a,o.CoarseTune,0),i(a,o.FineTune,0),i(a,o.SampleModes,0),i(a,o.ScaleTuning,100),i(a,o.ExclusiveClass,0),i(a,o.OverridingRootKey,-1),a)},"./src/types/index.ts":function(n,r,s){s.r(r);var a=s("./src/types/bank.ts");for(var o in a)["default"].indexOf(o)<0&&(function(y){s.d(r,y,(function(){return a[y]}))})(o);var i=s("./src/types/generator.ts");s.d(r,"GeneratorType",(function(){return i.GeneratorType})),s.d(r,"DEFAULT_GENERATOR_VALUES",(function(){return i.DEFAULT_GENERATOR_VALUES}));var l=s("./src/types/instrument.ts");for(var o in l)["default","GeneratorType","DEFAULT_GENERATOR_VALUES"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return l[g]}))})(o);var c=s("./src/types/key.ts");for(var o in c)["default","GeneratorType","DEFAULT_GENERATOR_VALUES"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return c[g]}))})(o);var u=s("./src/types/metaData.ts");for(var o in u)["default","GeneratorType","DEFAULT_GENERATOR_VALUES"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return u[g]}))})(o);var f=s("./src/types/modulator.ts");s.d(r,"ControllerType",(function(){return f.ControllerType})),s.d(r,"ControllerPolarity",(function(){return f.ControllerPolarity})),s.d(r,"ControllerDirection",(function(){return f.ControllerDirection})),s.d(r,"ControllerPalette",(function(){return f.ControllerPalette})),s.d(r,"Controller",(function(){return f.Controller})),s.d(r,"TransformType",(function(){return f.TransformType})),s.d(r,"DEFAULT_INSTRUMENT_MODULATORS",(function(){return f.DEFAULT_INSTRUMENT_MODULATORS}));var m=s("./src/types/preset.ts");for(var o in m)["default","GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return m[g]}))})(o);var d=s("./src/types/presetData.ts");for(var o in d)["default","GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return d[g]}))})(o);var h=s("./src/types/sample.ts");s.d(r,"SampleType",(function(){return h.SampleType}));var v=s("./src/types/zone.ts");for(var o in v)["default","GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS","SampleType"].indexOf(o)<0&&(function(g){s.d(r,g,(function(){return v[g]}))})(o)},"./src/types/instrument.ts":function(n,r){},"./src/types/key.ts":function(n,r){},"./src/types/metaData.ts":function(n,r){},"./src/types/modulator.ts":function(n,r,s){s.r(r),s.d(r,"ControllerType",(function(){return a})),s.d(r,"ControllerPolarity",(function(){return o})),s.d(r,"ControllerDirection",(function(){return i})),s.d(r,"ControllerPalette",(function(){return l})),s.d(r,"Controller",(function(){return c})),s.d(r,"TransformType",(function(){return u})),s.d(r,"DEFAULT_INSTRUMENT_MODULATORS",(function(){return m}));var a,o,i,l,c,u,f=s("./src/types/generator.ts");(function(d){d[d.Linear=0]="Linear",d[d.Concave=1]="Concave",d[d.Convex=2]="Convex",d[d.Switch=3]="Switch"})(a||(a={})),(function(d){d[d.Unipolar=0]="Unipolar",d[d.Bipolar=1]="Bipolar"})(o||(o={})),(function(d){d[d.Increasing=0]="Increasing",d[d.Decreasing=1]="Decreasing"})(i||(i={})),(function(d){d[d.GeneralController=0]="GeneralController",d[d.MidiController=1]="MidiController"})(l||(l={})),(function(d){d[d.NoController=0]="NoController",d[d.NoteOnVelocity=2]="NoteOnVelocity",d[d.NoteOnKeyNumber=3]="NoteOnKeyNumber",d[d.PolyPressure=10]="PolyPressure",d[d.ChannelPressure=13]="ChannelPressure",d[d.PitchWheel=14]="PitchWheel",d[d.PitchWheelSensitivity=16]="PitchWheelSensitivity",d[d.Link=127]="Link"})(c||(c={})),(function(d){d[d.Linear=0]="Linear",d[d.Absolute=2]="Absolute"})(u||(u={}));var m=[{id:f.GeneratorType.InitialAttenuation,source:{type:a.Concave,polarity:o.Unipolar,direction:i.Decreasing,palette:l.GeneralController,index:c.NoteOnVelocity},value:960,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialFilterFc,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Decreasing,palette:l.GeneralController,index:c.NoteOnVelocity},value:-2400,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.VibLFOToPitch,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.ChannelPressure},value:50,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.VibLFOToPitch,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.MidiController,index:1},value:50,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialAttenuation,source:{type:a.Concave,polarity:o.Unipolar,direction:i.Decreasing,palette:l.MidiController,index:7},value:960,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialAttenuation,source:{type:a.Linear,polarity:o.Bipolar,direction:i.Increasing,palette:l.MidiController,index:10},value:1e3,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.InitialAttenuation,source:{type:a.Concave,polarity:o.Unipolar,direction:i.Decreasing,palette:l.MidiController,index:11},value:960,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.ReverbEffectsSend,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.MidiController,index:91},value:200,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.ChorusEffectsSend,source:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.MidiController,index:93},value:200,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.NoController},transform:u.Linear},{id:f.GeneratorType.CoarseTune,source:{type:a.Linear,polarity:o.Bipolar,direction:i.Increasing,palette:l.GeneralController,index:c.PitchWheel},value:12700,valueSource:{type:a.Linear,polarity:o.Unipolar,direction:i.Increasing,palette:l.GeneralController,index:c.PitchWheelSensitivity},transform:u.Linear}]},"./src/types/preset.ts":function(n,r){},"./src/types/presetData.ts":function(n,r){},"./src/types/sample.ts":function(n,r,s){var a;s.r(r),s.d(r,"SampleType",(function(){return a})),(function(o){o[o.EOS=0]="EOS",o[o.Mono=1]="Mono",o[o.Right=2]="Right",o[o.Left=4]="Left",o[o.Linked=8]="Linked",o[o.RomMono=32769]="RomMono",o[o.RomRight=32770]="RomRight",o[o.RomLeft=32772]="RomLeft",o[o.RomLinked=32776]="RomLinked"})(a||(a={}))},"./src/types/zone.ts":function(n,r){},"./src/utils/buffer.ts":function(n,r,s){s.r(r),s.d(r,"getStringFromBuffer",(function(){return a}));var a=function(o){var i=new TextDecoder("utf8").decode(o),l=i.indexOf("\0");return(l===-1?i:i.slice(0,l)).trim()}},"./src/utils/index.ts":function(n,r,s){s.r(r);var a=s("./src/utils/buffer.ts");s.d(r,"getStringFromBuffer",(function(){return a.getStringFromBuffer}));var o=s("./src/utils/memoize.ts");s.d(r,"memoize",(function(){return o.memoize}))},"./src/utils/memoize.ts":function(n,r,s){s.r(r),s.d(r,"memoize",(function(){return a}));var a=function(o){var i={};return function(){for(var l=arguments.length,c=new Array(l),u=0;u<l;u++)c[u]=arguments[u];var f=JSON.stringify(c);if(f in i)return i[f];var m=o.apply(void 0,c);return i[f]=m,m}}}})}))})(fa)),fa.exports}th();var Le=1e3;function Aa(e){const{audioBuffer:t,startSample:n,offsetSamples:r=0,gain:s=1,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m}=e,d=t?.sampleRate??e.sampleRate??c?.sample_rate,h=t?.length??e.sourceDurationSamples??(c&&d?Math.ceil(c.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(h===void 0)throw new Error("createClip: sourceDurationSamples is required when audioBuffer is not provided (can use waveformData.duration)");t&&c&&t.sampleRate!==c.sample_rate&&console.warn(`Sample rate mismatch: audioBuffer (${t.sampleRate}) vs waveformData (${c.sample_rate}). Using audioBuffer sample rate. Waveform visualization may be slightly off.`);const v=e.durationSamples??h;return{id:uc(),audioBuffer:t,startSample:n,durationSamples:v,offsetSamples:r,sampleRate:d,sourceDurationSamples:h,gain:s,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m}}function lc(e){const{audioBuffer:t,startTime:n,offset:r=0,gain:s=1,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m}=e,d=t?.sampleRate??e.sampleRate??c?.sample_rate;if(d===void 0)throw new Error("createClipFromSeconds: sampleRate is required when audioBuffer is not provided (can use waveformData.sample_rate)");const h=t?.duration??e.sourceDuration??c?.duration;if(h===void 0)throw new Error("createClipFromSeconds: sourceDuration is required when audioBuffer is not provided (can use waveformData.duration)");t&&c&&t.sampleRate!==c.sample_rate&&console.warn(`Sample rate mismatch: audioBuffer (${t.sampleRate}) vs waveformData (${c.sample_rate}). Using audioBuffer sample rate. Waveform visualization may be slightly off.`);const v=e.duration??h;return Aa({audioBuffer:t,startSample:Math.round(n*d),durationSamples:Math.round(v*d),offsetSamples:Math.round(r*d),sampleRate:d,sourceDurationSamples:Math.ceil(h*d),gain:s,name:a,color:o,fadeIn:i,fadeOut:l,waveformData:c,midiNotes:u,midiChannel:f,midiProgram:m})}function cc(e){const{name:t,clips:n=[],muted:r=!1,soloed:s=!1,volume:a=1,pan:o=0,color:i,height:l,spectrogramConfig:c,spectrogramColorMap:u}=e;return{id:uc(),name:t,clips:n,muted:r,soloed:s,volume:a,pan:o,color:i,height:l,spectrogramConfig:c,spectrogramColorMap:u}}function uc(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function il(e){return[...e].sort((t,n)=>t.startSample-n.startSample)}function nh(e,t){return Math.floor(e/t)}function rh(e,t,n){return Math.ceil(e*n/t)}var Hn=192;function zs(e,t=Hn){const[,n]=e;return t*(4/n)}function wo(e,t=Hn){const[n]=e;return n*zs(e,t)}function On(e,t,n,r=Hn){return Math.round(e*60*n/(t*r))}function Ta(e,t,n,r=Hn){return Math.round(e*r*t/(60*n))}function $a(e,t){return Math.round(e/t)*t}function sh(e,t,n=Hn){const r=wo(t,n),s=zs(t,n),a=Math.floor(e/r)+1,o=Math.floor(e%r/s)+1;return o===1?`${a}`:`${a}.${o}`}function Qr(e){return e.startSample/e.sampleRate}function ll(e){return(e.startSample+e.durationSamples)/e.sampleRate}function cl(e){return e.offsetSamples/e.sampleRate}function ul(e){return e.durationSamples/e.sampleRate}function dc(e,t,n){return Math.floor((e+t)/n)-Math.floor(e/n)}var dl=!1;function xr(e){const t=e._param;return!t&&!dl&&(dl=!0,console.warn("[waveform-playlist] Unable to access Tone.js internal _param. This likely means the Tone.js version is incompatible. Mute scheduling may not work correctly.")),t}function fl(e,t){const n=new Float32Array(e),r=e-1;for(let s=0;s<e;s++){const a=s/r;n[s]=t?a:1-a}return n}function ah(e,t){const n=new Float32Array(e),r=e-1;for(let s=0;s<e;s++){const a=s/r,o=t?s:e-1-s;n[o]=Math.exp(2*a-1)/Math.E}return n}function oh(e,t){const n=new Float32Array(e),r=t?Math.PI/2:-Math.PI/2;for(let s=0;s<e;s++)n[s]=Math.sin(Math.PI*s/e-r)/2+.5;return n}function ih(e,t,n=10){const r=new Float32Array(e);for(let s=0;s<e;s++){const a=t?s:e-1-s,o=s/e;r[a]=Math.log(1+n*o)/Math.log(1+n)}return r}function fc(e,t,n){switch(e){case"linear":return fl(t,n);case"exponential":return ah(t,n);case"sCurve":return oh(t,n);case"logarithmic":return ih(t,n);default:return fl(t,n)}}function hl(e,t,n,r="linear",s=0,a=1){if(!(n<=0))if(r==="linear")e.setValueAtTime(s,t),e.linearRampToValueAtTime(a,t+n);else if(r==="exponential")e.setValueAtTime(Math.max(s,.001),t),e.exponentialRampToValueAtTime(Math.max(a,.001),t+n);else{const o=fc(r,1e4,!0),i=new Float32Array(o.length),l=a-s;for(let c=0;c<o.length;c++)i[c]=s+o[c]*l;e.setValueCurveAtTime(i,t,n)}}function pl(e,t,n,r="linear",s=1,a=0){if(!(n<=0))if(r==="linear")e.setValueAtTime(s,t),e.linearRampToValueAtTime(a,t+n);else if(r==="exponential")e.setValueAtTime(Math.max(s,.001),t),e.exponentialRampToValueAtTime(Math.max(a,.001),t+n);else{const o=fc(r,1e4,!1),i=new Float32Array(o.length),l=s-a;for(let c=0;c<o.length;c++)i[c]=a+o[c]*l;e.setValueCurveAtTime(i,t,n)}}var lh=class{constructor(e){this.activeSources=new Set,this._scheduleGuardOffset=0,this.track=e.track,this.volumeNode=new O.Volume(this.gainToDb(e.track.gain)),this.panNode=new O.Panner(e.track.stereoPan),this.muteGain=new O.Gain(e.track.muted?0:1),this.volumeNode.chain(this.panNode,this.muteGain);const t=e.destination||O.getDestination();if(e.effects){const o=e.effects(this.muteGain,t,!1);o&&(this.effectsCleanup=o)}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}]:[]),r=O.getTransport(),s=O.getContext().rawContext,a=this.volumeNode.input.input;this.scheduledClips=n.map(o=>{const i=s.createGain();i.gain.value=o.gain,i.connect(a);const l=this.track.startTime+o.startTime,c=r.schedule(u=>{l<this._scheduleGuardOffset||this.startClipSource(o,i,u)},l);return{clipInfo:o,fadeGainNode:i,scheduleId:c}})}startClipSource(e,t,n,r,s){const o=O.getContext().rawContext.createBufferSource();o.buffer=e.buffer,o.connect(t);const i=r??e.offset,l=s??e.duration;try{o.start(n,i,l)}catch(c){console.warn(`[waveform-playlist] Failed to start source on track "${this.id}" (time=${n}, offset=${i}, duration=${l}):`,c),o.disconnect();return}this.activeSources.add(o),o.onended=()=>{this.activeSources.delete(o)}}setScheduleGuardOffset(e){this._scheduleGuardOffset=e}startMidClipSources(e,t){for(const{clipInfo:n,fadeGainNode:r}of this.scheduledClips){const s=this.track.startTime+n.startTime,a=s+n.duration;if(s<e&&a>e){const o=e-s,i=n.offset+o,l=n.duration-o;this.startClipSource(n,r,t,i,l)}}}stopAllSources(){this.activeSources.forEach(e=>{try{e.stop()}catch(t){console.warn(`[waveform-playlist] Error stopping source on track "${this.id}":`,t)}}),this.activeSources.clear()}scheduleFades(e,t,n=0){const{clipInfo:r,fadeGainNode:s}=e,a=s.gain;a.cancelScheduledValues(0);const o=n-r.offset;if(r.fadeIn&&o<r.fadeIn.duration){const i=r.fadeIn.duration;if(o<=0)hl(a,t,i,r.fadeIn.type||"linear",0,r.gain);else{const l=i-o,c=o/i,u=r.gain*c;hl(a,t,l,r.fadeIn.type||"linear",u,r.gain)}}else a.setValueAtTime(r.gain,t);if(r.fadeOut){const l=r.duration-r.fadeOut.duration-o;if(l>0){const c=t+l;pl(a,c,r.fadeOut.duration,r.fadeOut.type||"linear",r.gain,0)}else if(l>-r.fadeOut.duration){const c=-l,u=r.fadeOut.duration-c,f=c/r.fadeOut.duration,m=r.gain*(1-f);pl(a,t,u,r.fadeOut.type||"linear",m,0)}}}prepareFades(e,t){this.scheduledClips.forEach(n=>{const r=this.track.startTime+n.clipInfo.startTime,s=r+n.clipInfo.duration;if(!(t>=s))if(t>=r){const a=t-r+n.clipInfo.offset;this.scheduleFades(n,e,a)}else{const a=r-t;this.scheduleFades(n,e+a,n.clipInfo.offset)}})}cancelFades(){this.scheduledClips.forEach(({fadeGainNode:e,clipInfo:t})=>{const n=e.gain;n.cancelScheduledValues(0),n.setValueAtTime(t.gain,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;const t=e?0:1;xr(this.muteGain.gain)?.setValueAtTime(t,0),this.muteGain.gain.value=t}setSolo(e){this.track.soloed=e}dispose(){const e=O.getTransport();if(this.effectsCleanup)try{this.effectsCleanup()}catch(t){console.warn(`[waveform-playlist] Error during track "${this.id}" effects cleanup:`,t)}this.stopAllSources(),this.scheduledClips.forEach((t,n)=>{try{e.clear(t.scheduleId)}catch(r){console.warn(`[waveform-playlist] Error clearing schedule ${n} on track "${this.id}":`,r)}try{t.fadeGainNode.disconnect()}catch(r){console.warn(`[waveform-playlist] Error disconnecting fadeGain ${n} on track "${this.id}":`,r)}});try{this.volumeNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing volumeNode on track "${this.id}":`,t)}try{this.panNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing panNode on track "${this.id}":`,t)}try{this.muteGain.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing muteGain on track "${this.id}":`,t)}}get id(){return this.track.id}get duration(){if(this.scheduledClips.length===0)return 0;const e=this.scheduledClips[this.scheduledClips.length-1];return e.clipInfo.startTime+e.clipInfo.duration}get buffer(){return this.scheduledClips[0]?.clipInfo.buffer}get muted(){return this.track.muted}get startTime(){return this.track.startTime}};function ch(e){return e===35||e===36?"kick":e>=37&&e<=40?"snare":e===41||e===43||e===45||e===47||e===48||e===50?"tom":"cymbal"}var uh=class{constructor(e){this.track=e.track,this.volumeNode=new O.Volume(this.gainToDb(e.track.gain)),this.panNode=new O.Panner(e.track.stereoPan),this.muteGain=new O.Gain(e.track.muted?0:1),this.volumeNode.chain(this.panNode,this.muteGain),this.synth=new O.PolySynth(O.Synth,e.synthOptions),this.synth.connect(this.volumeNode),this.kickSynth=new O.PolySynth(O.MembraneSynth,{voice:O.MembraneSynth,options:{pitchDecay:.05,octaves:6,envelope:{attack:.001,decay:.4,sustain:0,release:.1}}}),this.snareSynth=new O.NoiseSynth({noise:{type:"white"},envelope:{attack:.001,decay:.15,sustain:0,release:.05}}),this.cymbalSynth=new O.PolySynth(O.MetalSynth,{voice:O.MetalSynth,options:{envelope:{attack:.001,decay:.3,release:.1},harmonicity:5.1,modulationIndex:32,resonance:4e3,octaves:1.5}}),this.tomSynth=new O.PolySynth(O.MembraneSynth,{voice:O.MembraneSynth,options:{pitchDecay:.08,octaves:4,envelope:{attack:.001,decay:.3,sustain:0,release:.1}}}),this.kickSynth.connect(this.volumeNode),this.snareSynth.connect(this.volumeNode),this.cymbalSynth.connect(this.volumeNode),this.tomSynth.connect(this.volumeNode);const t=e.destination||O.getDestination();if(e.effects){const n=e.effects(this.muteGain,t,!1);n&&(this.effectsCleanup=n)}else this.muteGain.connect(t);this.scheduledClips=e.clips.map(n=>{const r=n.notes.filter(i=>{const l=i.time+i.duration;return i.time<n.offset+n.duration&&l>n.offset}),s=this.track.startTime+n.startTime,a=r.map(i=>{const l=i.time-n.offset,c=Math.max(0,l),u=Math.min(i.duration-Math.max(0,n.offset-i.time),n.duration-c);return{time:s+c,note:i.name,midi:i.midi,duration:Math.max(0,u),velocity:i.velocity,channel:i.channel}}),o=new O.Part((i,l)=>{l.duration>0&&this.triggerNote(l.midi,l.note,l.duration,i,l.velocity,l.channel)},a);return o.start(0),{clipInfo:n,part:o}})}triggerNote(e,t,n,r,s,a){if(a===9)switch(ch(e)){case"kick":this.kickSynth.triggerAttackRelease("C1",n,r,s);break;case"snare":try{this.snareSynth.triggerAttackRelease(n,r,s)}catch(i){console.warn("[waveform-playlist] Snare overlap — previous hit still decaying, skipped:",i)}break;case"tom":{const i={41:"G1",43:"A1",45:"C2",47:"D2",48:"E2",50:"G2"};this.tomSynth.triggerAttackRelease(i[e]||"C2",n,r,s);break}case"cymbal":this.cymbalSynth.triggerAttackRelease("C4",n,r,s);break}else this.synth.triggerAttackRelease(t,n,r,s)}gainToDb(e){return 20*Math.log10(e)}setScheduleGuardOffset(e){}startMidClipSources(e,t){for(const{clipInfo:n}of this.scheduledClips){const r=this.track.startTime+n.startTime,s=r+n.duration;if(r<e&&s>e)for(const a of n.notes){const o=a.time-n.offset,i=r+Math.max(0,o),l=i+a.duration;if(i<e&&l>e){const c=l-e;try{this.triggerNote(a.midi,a.name,c,t,a.velocity,a.channel)}catch(u){console.warn(`[waveform-playlist] Failed to start mid-clip MIDI note "${a.name}" on track "${this.id}":`,u)}}}}}stopAllSources(){const e=O.getContext().rawContext.currentTime;try{this.synth.releaseAll(e),this.kickSynth.releaseAll(e),this.cymbalSynth.releaseAll(e),this.tomSynth.releaseAll(e)}catch(t){console.warn(`[waveform-playlist] Error releasing synth on track "${this.id}":`,t)}}prepareFades(e,t){}cancelFades(){}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;const t=e?0:1;xr(this.muteGain.gain)?.setValueAtTime(t,0),this.muteGain.gain.value=t}setSolo(e){this.track.soloed=e}dispose(){if(this.effectsCleanup)try{this.effectsCleanup()}catch(t){console.warn(`[waveform-playlist] Error during MIDI track "${this.id}" effects cleanup:`,t)}this.stopAllSources(),this.scheduledClips.forEach(({part:t},n)=>{try{t.dispose()}catch(r){console.warn(`[waveform-playlist] Error disposing Part ${n} on MIDI track "${this.id}":`,r)}});const e=[this.synth,this.kickSynth,this.snareSynth,this.cymbalSynth,this.tomSynth];for(const t of e)try{t?.dispose()}catch(n){console.warn(`[waveform-playlist] Error disposing synth on MIDI track "${this.id}":`,n)}try{this.volumeNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing volumeNode on MIDI track "${this.id}":`,t)}try{this.panNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing panNode on MIDI track "${this.id}":`,t)}try{this.muteGain.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing muteGain on MIDI track "${this.id}":`,t)}}get id(){return this.track.id}get duration(){if(this.scheduledClips.length===0)return 0;const e=this.scheduledClips[this.scheduledClips.length-1];return e.clipInfo.startTime+e.clipInfo.duration}get muted(){return this.track.muted}get startTime(){return this.track.startTime}},hc=class Ra{constructor(t){this.activeSources=new Set,this.track=t.track,this.soundFontCache=t.soundFontCache,this.programNumber=t.programNumber??0,this.bankNumber=t.isPercussion?128:0,this.volumeNode=new O.Volume(this.gainToDb(t.track.gain)),this.panNode=new O.Panner(t.track.stereoPan),this.muteGain=new O.Gain(t.track.muted?0:1),this.volumeNode.chain(this.panNode,this.muteGain);const n=t.destination||O.getDestination();if(t.effects){const r=t.effects(this.muteGain,n,!1);r&&(this.effectsCleanup=r)}else this.muteGain.connect(n);this.scheduledClips=t.clips.map(r=>{const s=r.notes.filter(l=>{const c=l.time+l.duration;return l.time<r.offset+r.duration&&c>r.offset}),a=this.track.startTime+r.startTime,o=s.map(l=>{const c=l.time-r.offset,u=Math.max(0,c),f=Math.min(l.duration-Math.max(0,r.offset-l.time),r.duration-u);return{time:a+u,note:l.name,midi:l.midi,duration:Math.max(0,f),velocity:l.velocity,channel:l.channel}}),i=new O.Part((l,c)=>{c.duration>0&&this.triggerNote(c.midi,c.duration,l,c.velocity,c.channel)},o);return i.start(0),{clipInfo:r,part:i}})}triggerNote(t,n,r,s,a){const o=a===9?128:this.bankNumber,i=a===9?0:this.programNumber,l=this.soundFontCache.getAudioBuffer(t,o,i);if(!l){Ra._missingSampleWarned||(console.warn(`[waveform-playlist] SoundFont sample not found for MIDI note ${t} (bank ${o}, preset ${i}). Subsequent missing samples will be silent.`),Ra._missingSampleWarned=!0);return}const c=O.getContext().rawContext,u=c.createBufferSource();u.buffer=l.buffer,u.playbackRate.value=l.playbackRate,(l.loopMode===1||l.loopMode===3)&&(u.loop=!0,u.loopStart=l.loopStart,u.loopEnd=l.loopEnd);const f=l.buffer.duration/l.playbackRate,m=l.loopMode===0?Math.max(n,f):n,d=s*s,h=c.createGain(),{attackVolEnv:v,holdVolEnv:y,decayVolEnv:g,sustainVolEnv:b,releaseVolEnv:w}=l,_=d*b;h.gain.setValueAtTime(0,r),h.gain.linearRampToValueAtTime(d,r+v),y>.001&&h.gain.setValueAtTime(d,r+v+y);const x=r+v+y;h.gain.linearRampToValueAtTime(_,x+g),h.gain.setValueAtTime(_,r+m),h.gain.linearRampToValueAtTime(0,r+m+w),u.connect(h),h.connect(this.volumeNode.input.input),this.activeSources.add(u),u.onended=()=>{this.activeSources.delete(u);try{h.disconnect()}catch(S){console.warn("[waveform-playlist] GainNode already disconnected:",S)}},u.start(r),u.stop(r+m+w)}gainToDb(t){return 20*Math.log10(t)}setScheduleGuardOffset(t){}startMidClipSources(t,n){for(const{clipInfo:r}of this.scheduledClips){const s=this.track.startTime+r.startTime,a=s+r.duration;if(s<t&&a>t)for(const o of r.notes){const i=o.time-r.offset,l=s+Math.max(0,i),c=l+o.duration;if(l<t&&c>t){const u=c-t;try{this.triggerNote(o.midi,u,n,o.velocity,o.channel)}catch(f){console.warn(`[waveform-playlist] Failed to start mid-clip SoundFont note on track "${this.id}":`,f)}}}}}stopAllSources(){for(const t of this.activeSources)try{t.stop()}catch(n){console.warn("[waveform-playlist] Error stopping AudioBufferSourceNode:",n)}this.activeSources.clear()}prepareFades(t,n){}cancelFades(){}setVolume(t){this.track.gain=t,this.volumeNode.volume.value=this.gainToDb(t)}setPan(t){this.track.stereoPan=t,this.panNode.pan.value=t}setMute(t){this.track.muted=t;const n=t?0:1;xr(this.muteGain.gain)?.setValueAtTime(n,0),this.muteGain.gain.value=n}setSolo(t){this.track.soloed=t}dispose(){if(this.effectsCleanup)try{this.effectsCleanup()}catch(t){console.warn(`[waveform-playlist] Error during SoundFont track "${this.id}" effects cleanup:`,t)}this.stopAllSources(),this.scheduledClips.forEach(({part:t},n)=>{try{t.dispose()}catch(r){console.warn(`[waveform-playlist] Error disposing Part ${n} on SoundFont track "${this.id}":`,r)}});try{this.volumeNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing volumeNode on SoundFont track "${this.id}":`,t)}try{this.panNode.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing panNode on SoundFont track "${this.id}":`,t)}try{this.muteGain.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing muteGain on SoundFont track "${this.id}":`,t)}}get id(){return this.track.id}get duration(){if(this.scheduledClips.length===0)return 0;const t=this.scheduledClips[this.scheduledClips.length-1];return t.clipInfo.startTime+t.clipInfo.duration}get muted(){return this.track.muted}get startTime(){return this.track.startTime}};hc._missingSampleWarned=!1;var dh=hc,fh=class{constructor(e={}){if(this.tracks=new Map,this.isInitialized=!1,this.soloedTracks=new Set,this.manualMuteState=new Map,this._completionEventId=null,this._loopHandler=null,this._loopEnabled=!1,this._loopStart=0,this._loopEnd=0,this.masterVolume=new O.Volume(this.gainToDb(e.masterGain??1)),e.effects){const t=e.effects(this.masterVolume,O.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)}clearCompletionEvent(){if(this._completionEventId!==null){try{O.getTransport().clear(this._completionEventId)}catch(e){console.warn("[waveform-playlist] Error clearing Transport completion event:",e)}this._completionEventId=null}}async init(){this.isInitialized||(await O.start(),this.isInitialized=!0)}addTrack(e){const t={...e,destination:this.masterVolume},n=new lh(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}addMidiTrack(e){const t={...e,destination:this.masterVolume},n=new uh(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}addSoundFontTrack(e){const t={...e,destination:this.masterVolume},n=new dh(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)throw new Error("[waveform-playlist] TonePlayout not initialized. Call init() first.");const r=e??O.now(),s=O.getTransport();this.clearCompletionEvent();const a=t??0;this.tracks.forEach(o=>{o.cancelFades(),o.prepareFades(r,a)}),n!==void 0&&(this._completionEventId=s.scheduleOnce(()=>{this._completionEventId=null;try{this.onPlaybackCompleteCallback?.()}catch(o){console.warn("[waveform-playlist] Error in playback completion callback:",o)}},a+n));try{s.state!=="stopped"&&s.stop(),this.tracks.forEach(o=>o.stopAllSources()),s.loopStart=this._loopStart,s.loopEnd=this._loopEnd,s.loop=this._loopEnabled,this.tracks.forEach(o=>o.setScheduleGuardOffset(a)),t!==void 0?s.start(r,t):s.start(r),s._clock._lastUpdate=r,this.tracks.forEach(o=>{o.startMidClipSources(a,r)})}catch(o){throw this.clearCompletionEvent(),this.tracks.forEach(i=>i.cancelFades()),console.warn("[waveform-playlist] Transport.start() failed. Audio playback could not begin.",o),o}}pause(){const e=O.getTransport();try{e.pause()}catch(t){console.warn("[waveform-playlist] Transport.pause() failed:",t)}this.tracks.forEach(t=>t.stopAllSources()),this.tracks.forEach(t=>t.cancelFades()),this.clearCompletionEvent()}stop(){const e=O.getTransport();try{e.stop()}catch(t){console.warn("[waveform-playlist] Transport.stop() failed:",t)}if(this._loopHandler){try{e.off("loop",this._loopHandler)}catch(t){console.warn("[waveform-playlist] Error removing loop handler:",t)}this._loopHandler=null}this.tracks.forEach(t=>t.stopAllSources()),this.tracks.forEach(t=>t.cancelFades()),this.clearCompletionEvent()}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))}setLoop(e,t,n){this._loopEnabled=e,this._loopStart=t,this._loopEnd=n;const r=O.getTransport();try{r.loopStart=t,r.loopEnd=n,r.loop=e}catch(s){console.warn("[waveform-playlist] Error configuring Transport loop:",s);return}e&&!this._loopHandler?(this._loopHandler=()=>{const s=O.now();this.tracks.forEach(a=>{try{a.stopAllSources(),a.cancelFades(),a.setScheduleGuardOffset(this._loopStart),a.startMidClipSources(this._loopStart,s),a.prepareFades(s,this._loopStart)}catch(o){console.warn(`[waveform-playlist] Error re-scheduling track "${a.id}" on loop:`,o)}})},r.on("loop",this._loopHandler)):!e&&this._loopHandler&&(r.off("loop",this._loopHandler),this._loopHandler=null)}getCurrentTime(){return O.getTransport().seconds}seekTo(e){O.getTransport().seconds=e}dispose(){if(this.clearCompletionEvent(),this._loopHandler){try{O.getTransport().off("loop",this._loopHandler)}catch(e){console.warn("[waveform-playlist] Error removing Transport loop handler:",e)}this._loopHandler=null}if(this.tracks.forEach(e=>{try{e.dispose()}catch(t){console.warn(`[waveform-playlist] Error disposing track "${e.id}":`,t)}}),this.tracks.clear(),this.effectsCleanup)try{this.effectsCleanup()}catch(e){console.warn("[waveform-playlist] Error during master effects cleanup:",e)}try{this.masterVolume.dispose()}catch(e){console.warn("[waveform-playlist] Error disposing master volume:",e)}}get context(){return O.getContext()}get sampleRate(){return O.getContext().sampleRate}setOnPlaybackComplete(e){this.onPlaybackCompleteCallback=e}},es=null;function hh(){return es||(es=new O.Context,O.setContext(es)),es}function ph(){return hh().rawContext}function mh(e){let t=null,n=!1,r=0,s=!1,a=0,o=0,i=!1;function l(c){if(t){try{t.dispose()}catch(f){console.warn("[waveform-playlist] Error disposing previous playout during rebuild:",f)}t=null}r++;const u=r;t=new fh({effects:e?.effects}),i&&t.init().catch(f=>{console.warn("[waveform-playlist] Failed to re-initialize playout after rebuild. Audio playback will require another user gesture.",f),i=!1});for(const f of c){const m=f.clips.filter(h=>h.audioBuffer&&!h.midiNotes),d=f.clips.filter(h=>h.midiNotes&&h.midiNotes.length>0);if(m.length>0){const h=Math.min(...m.map(Qr)),v=Math.max(...m.map(ll)),y={id:f.id,name:f.name,gain:f.volume,muted:f.muted,soloed:f.soloed,stereoPan:f.pan,startTime:h,endTime:v},g=m.map(b=>({buffer:b.audioBuffer,startTime:Qr(b)-h,duration:ul(b),offset:cl(b),fadeIn:b.fadeIn,fadeOut:b.fadeOut,gain:b.gain}));t.addTrack({clips:g,track:y,effects:f.effects})}if(d.length>0){const h=Math.min(...d.map(Qr)),v=Math.max(...d.map(ll)),g={id:m.length>0?`${f.id}:midi`:f.id,name:f.name,gain:f.volume,muted:f.muted,soloed:f.soloed,stereoPan:f.pan,startTime:h,endTime:v},b=d.map(w=>({notes:w.midiNotes,startTime:Qr(w)-h,duration:ul(w),offset:cl(w)}));if(e?.soundFontCache?.isLoaded){const w=d[0],x=w.midiChannel===9,S=w.midiProgram??0;t.addSoundFontTrack({clips:b,track:g,soundFontCache:e.soundFontCache,programNumber:S,isPercussion:x,effects:f.effects})}else e?.soundFontCache&&console.warn(`[waveform-playlist] SoundFont not loaded for track "${f.name}" — falling back to PolySynth.`),t.addMidiTrack({clips:b,track:g,effects:f.effects})}}t.applyInitialSoloState(),t.setLoop(s,a,o),t.setOnPlaybackComplete(()=>{u===r&&(n=!1)})}return{async init(){t&&(await t.init(),i=!0)},setTracks(c){l(c)},play(c,u){if(!t){console.warn("[waveform-playlist] adapter.play() called but no playout is available. Tracks may not have been set, or the adapter was disposed.");return}const f=u!==void 0?u-c:void 0;t.play(O.now(),c,f),n=!0},pause(){t?.pause(),n=!1},stop(){t?.stop(),n=!1},seek(c){t?.seekTo(c)},getCurrentTime(){return t?.getCurrentTime()??0},isPlaying(){return n},setMasterVolume(c){t?.setMasterGain(c)},setTrackVolume(c,u){t?.getTrack(c)?.setVolume(u)},setTrackMute(c,u){t?.setMute(c,u)},setTrackSolo(c,u){t?.setSolo(c,u)},setTrackPan(c,u){t?.getTrack(c)?.setPan(u)},setLoop(c,u,f){s=c,a=u,o=f,t?.setLoop(c,u,f)},dispose(){try{t?.dispose()}catch(c){console.warn("[waveform-playlist] Error disposing playout:",c)}t=null,n=!1}}}function pc(e,t,n,r){let s=t;const a=-e.startSample;if(s=Math.max(s,a),r>0){const o=n[r-1],l=o.startSample+o.durationSamples-e.startSample;s=Math.max(s,l)}if(r<n.length-1){const i=n[r+1].startSample-(e.startSample+e.durationSamples);s=Math.min(s,i)}return s}function mc(e,t,n,r,s,a){let o=t;if(n==="left"){if(o=Math.max(o,-e.startSample),o=Math.max(o,-e.offsetSamples),s>0){const i=r[s-1],l=i.startSample+i.durationSamples;o=Math.max(o,l-e.startSample)}o=Math.min(o,e.durationSamples-a)}else if(o=Math.max(o,a-e.durationSamples),o=Math.min(o,e.sourceDurationSamples-e.offsetSamples-e.durationSamples),s<r.length-1){const i=r[s+1];o=Math.min(o,i.startSample-e.startSample-e.durationSamples)}return o}function gh(e,t){return Math.floor(e/t)*t}function vh(e,t){const n=t-e.startSample,r=e.durationSamples-n,s=e.name?`${e.name} (1)`:void 0,a=e.name?`${e.name} (2)`:void 0,o=Aa({startSample:e.startSample,durationSamples:n,offsetSamples:e.offsetSamples,sampleRate:e.sampleRate,sourceDurationSamples:e.sourceDurationSamples,gain:e.gain,name:s,color:e.color,fadeIn:e.fadeIn,audioBuffer:e.audioBuffer,waveformData:e.waveformData}),i=Aa({startSample:t,durationSamples:r,offsetSamples:e.offsetSamples+n,sampleRate:e.sampleRate,sourceDurationSamples:e.sourceDurationSamples,gain:e.gain,name:a,color:e.color,fadeOut:e.fadeOut,audioBuffer:e.audioBuffer,waveformData:e.waveformData});return{left:o,right:i}}function gc(e,t,n){const r=e.startSample+e.durationSamples;if(t<=e.startSample||t>=r)return!1;const s=t-e.startSample,a=r-t;return s>=n&&a>=n}function ha(e){let t=0;for(const n of e)for(const r of n.clips){const a=(r.startSample+r.durationSamples)/r.sampleRate;t=Math.max(t,a)}return t}function yh(e,t){if(t.length===0)return 0;let n=0,r=Math.abs(t[0]-e);for(let s=1;s<t.length;s++){const a=Math.abs(t[s]-e);a<r&&(r=a,n=s)}return n}function ml(e,t){return Math.max(0,Math.min(e,t))}var bh=44100,wh=1024,_h=[256,512,1024,2048,4096,8192],gl=.1,xh=class{constructor(e={}){if(this._tracks=[],this._currentTime=0,this._playStartPosition=0,this._isPlaying=!1,this._selectedTrackId=null,this._selectionStart=0,this._selectionEnd=0,this._masterVolume=1,this._loopStart=0,this._loopEnd=0,this._isLoopEnabled=!1,this._tracksVersion=0,this._animFrameId=null,this._disposed=!1,this._listeners=new Map,this._sampleRate=e.sampleRate??bh,this._zoomLevels=[...e.zoomLevels??_h],this._adapter=e.adapter??null,this._zoomLevels.length===0)throw new Error("PlaylistEngine: zoomLevels must not be empty");const t=e.samplesPerPixel??wh,n=this._zoomLevels.indexOf(t);if(n===-1)throw new Error(`PlaylistEngine: samplesPerPixel ${t} is not in zoomLevels [${this._zoomLevels.join(", ")}]. Either pass a samplesPerPixel value that exists in zoomLevels, or include ${t} in your zoomLevels array.`);this._zoomIndex=n}getState(){return{tracks:this._tracks.map(e=>({...e,clips:[...e.clips]})),tracksVersion:this._tracksVersion,duration:ha(this._tracks),currentTime:this._currentTime,isPlaying:this._isPlaying,samplesPerPixel:this._zoomLevels[this._zoomIndex],sampleRate:this._sampleRate,selectedTrackId:this._selectedTrackId,zoomIndex:this._zoomIndex,canZoomIn:this._zoomIndex>0,canZoomOut:this._zoomIndex<this._zoomLevels.length-1,selectionStart:this._selectionStart,selectionEnd:this._selectionEnd,masterVolume:this._masterVolume,loopStart:this._loopStart,loopEnd:this._loopEnd,isLoopEnabled:this._isLoopEnabled}}setTracks(e){this._tracks=[...e],this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange()}addTrack(e){this._tracks=[...this._tracks,e],this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange()}removeTrack(e){this._tracks.some(t=>t.id===e)&&(this._tracks=this._tracks.filter(t=>t.id!==e),this._tracksVersion++,this._selectedTrackId===e&&(this._selectedTrackId=null),this._adapter?.setTracks(this._tracks),this._emitStateChange())}selectTrack(e){e!==this._selectedTrackId&&(this._selectedTrackId=e,this._emitStateChange())}moveClip(e,t,n){const r=this._tracks.find(c=>c.id===e);if(!r){console.warn(`[waveform-playlist/engine] moveClip: track "${e}" not found`);return}const s=r.clips.findIndex(c=>c.id===t);if(s===-1){console.warn(`[waveform-playlist/engine] moveClip: clip "${t}" not found in track "${e}"`);return}const a=r.clips[s],o=il(r.clips),i=o.findIndex(c=>c.id===t),l=pc(a,n,o,i);l!==0&&(this._tracks=this._tracks.map(c=>{if(c.id!==e)return c;const u=c.clips.map((f,m)=>m===s?{...f,startSample:Math.floor(f.startSample+l)}:f);return{...c,clips:u}}),this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange())}splitClip(e,t,n){const r=this._tracks.find(c=>c.id===e);if(!r){console.warn(`[waveform-playlist/engine] splitClip: track "${e}" not found`);return}const s=r.clips.findIndex(c=>c.id===t);if(s===-1){console.warn(`[waveform-playlist/engine] splitClip: clip "${t}" not found in track "${e}"`);return}const a=r.clips[s],o=Math.floor(gl*this._sampleRate);if(!gc(a,n,o)){console.warn(`[waveform-playlist/engine] splitClip: cannot split clip "${t}" at sample ${n} (clip range: ${a.startSample}–${a.startSample+a.durationSamples}, minDuration: ${o})`);return}const{left:i,right:l}=vh(a,n);this._tracks=this._tracks.map(c=>{if(c.id!==e)return c;const u=[...c.clips];return u.splice(s,1,i,l),{...c,clips:u}}),this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange()}trimClip(e,t,n,r){const s=this._tracks.find(f=>f.id===e);if(!s){console.warn(`[waveform-playlist/engine] trimClip: track "${e}" not found`);return}const a=s.clips.findIndex(f=>f.id===t);if(a===-1){console.warn(`[waveform-playlist/engine] trimClip: clip "${t}" not found in track "${e}"`);return}const o=s.clips[a],i=il(s.clips),l=i.findIndex(f=>f.id===t),c=Math.floor(gl*this._sampleRate),u=mc(o,r,n,i,l,c);u!==0&&(this._tracks=this._tracks.map(f=>{if(f.id!==e)return f;const m=f.clips.map((d,h)=>h!==a?d:n==="left"?{...d,startSample:d.startSample+u,offsetSamples:d.offsetSamples+u,durationSamples:d.durationSamples-u}:{...d,durationSamples:d.durationSamples+u});return{...f,clips:m}}),this._tracksVersion++,this._adapter?.setTracks(this._tracks),this._emitStateChange())}async init(){this._adapter&&await this._adapter.init()}play(e,t){const n=this._currentTime,r=this._playStartPosition;if(e!==void 0){const s=ha(this._tracks);this._currentTime=ml(e,s)}if(this._playStartPosition=this._currentTime,this._adapter){if(t!==void 0)this._adapter.setLoop(!1,this._loopStart,this._loopEnd);else if(this._isLoopEnabled){const s=this._currentTime<this._loopEnd;this._adapter.setLoop(s,this._loopStart,this._loopEnd)}try{this._adapter.play(this._currentTime,t)}catch(s){throw this._currentTime=n,this._playStartPosition=r,s}}this._isPlaying=!0,this._startTimeUpdateLoop(),this._emit("play"),this._emitStateChange()}pause(){this._isPlaying=!1,this._stopTimeUpdateLoop(),this._adapter?.pause(),this._adapter&&(this._currentTime=this._adapter.getCurrentTime()),this._emit("pause"),this._emitStateChange()}stop(){this._isPlaying=!1,this._currentTime=this._playStartPosition,this._stopTimeUpdateLoop(),this._adapter?.setLoop(!1,this._loopStart,this._loopEnd),this._adapter?.stop(),this._emit("stop"),this._emitStateChange()}seek(e){const t=ha(this._tracks);this._currentTime=ml(e,t),this._adapter?.seek(this._currentTime),this._emitStateChange()}setMasterVolume(e){e!==this._masterVolume&&(this._masterVolume=e,this._adapter?.setMasterVolume(e),this._emitStateChange())}getCurrentTime(){return this._isPlaying&&this._adapter?this._adapter.getCurrentTime():this._currentTime}setSelection(e,t){const n=Math.min(e,t),r=Math.max(e,t);n===this._selectionStart&&r===this._selectionEnd||(this._selectionStart=n,this._selectionEnd=r,this._emitStateChange())}setLoopRegion(e,t){const n=Math.min(e,t),r=Math.max(e,t);n===this._loopStart&&r===this._loopEnd||(this._loopStart=n,this._loopEnd=r,this._adapter?.setLoop(this._isLoopEnabled&&this._isBeforeLoopEnd(),this._loopStart,this._loopEnd),this._emitStateChange())}setLoopEnabled(e){e!==this._isLoopEnabled&&(this._isLoopEnabled=e,this._adapter?.setLoop(e&&this._isBeforeLoopEnd(),this._loopStart,this._loopEnd),this._emitStateChange())}setTrackVolume(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.volume=t),this._adapter?.setTrackVolume(e,t)}setTrackMute(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.muted=t),this._adapter?.setTrackMute(e,t)}setTrackSolo(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.soloed=t),this._adapter?.setTrackSolo(e,t)}setTrackPan(e,t){const n=this._tracks.find(r=>r.id===e);n&&(n.pan=t),this._adapter?.setTrackPan(e,t)}zoomIn(){this._zoomIndex>0&&(this._zoomIndex--,this._emitStateChange())}zoomOut(){this._zoomIndex<this._zoomLevels.length-1&&(this._zoomIndex++,this._emitStateChange())}setZoomLevel(e){const t=yh(e,this._zoomLevels);t!==this._zoomIndex&&(this._zoomIndex=t,this._emitStateChange())}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){this._listeners.get(e)?.delete(t)}dispose(){if(!this._disposed){this._disposed=!0,this._stopTimeUpdateLoop();try{this._adapter?.dispose()}catch(e){console.warn("[waveform-playlist/engine] Error disposing adapter:",e)}this._listeners.clear()}}_emit(e,...t){const n=this._listeners.get(e);if(n)for(const r of n)try{r(...t)}catch(s){console.warn("[waveform-playlist/engine] Error in event listener:",s)}}_isBeforeLoopEnd(){return this._isPlaying?(this._adapter?.getCurrentTime()??this._currentTime)<this._loopEnd:!0}_emitStateChange(){this._emit("statechange",this.getState())}_startTimeUpdateLoop(){if(typeof requestAnimationFrame>"u")return;this._stopTimeUpdateLoop();const e=()=>{this._disposed||!this._isPlaying||(this._adapter&&(this._currentTime=this._adapter.getCurrentTime(),this._emit("timeupdate",this._currentTime)),this._animFrameId=requestAnimationFrame(e))};this._animFrameId=requestAnimationFrame(e)}_stopTimeUpdateLoop(){this._animFrameId!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(this._animFrameId),this._animFrameId=null)}},Ch=Symbol.for("preact-signals");function js(){if(Kt>1)Kt--;else{for(var e,t=!1;gr!==void 0;){var n=gr;for(gr=void 0,Da++;n!==void 0;){var r=n.o;if(n.o=void 0,n.f&=-3,!(8&n.f)&&yc(n))try{n.c()}catch(s){t||(e=s,t=!0)}n=r}}if(Da=0,Kt--,t)throw e}}function qt(e){if(Kt>0)return e();Kt++;try{return e()}finally{js()}}var ve=void 0;function we(e){var t=ve;ve=void 0;try{return e()}finally{ve=t}}var gr=void 0,Kt=0,Da=0,xs=0;function vc(e){if(ve!==void 0){var t=e.n;if(t===void 0||t.t!==ve)return t={i:0,S:e,p:ve.s,n:void 0,t:ve,e:void 0,x:void 0,r:t},ve.s!==void 0&&(ve.s.n=t),ve.s=t,e.n=t,32&ve.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=ve.s,t.n=void 0,ve.s.n=t,ve.s=t),t}}function st(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}st.prototype.brand=Ch;st.prototype.h=function(){return!0};st.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n!==void 0?n.e=e:we(function(){var r;(r=t.W)==null||r.call(t)}))};st.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&we(function(){var s;(s=t.Z)==null||s.call(t)}))}};st.prototype.subscribe=function(e){var t=this;return Ct(function(){var n=t.value,r=ve;ve=void 0;try{e(n)}finally{ve=r}},{name:"sub"})};st.prototype.valueOf=function(){return this.value};st.prototype.toString=function(){return this.value+""};st.prototype.toJSON=function(){return this.value};st.prototype.peek=function(){var e=ve;ve=void 0;try{return this.value}finally{ve=e}};Object.defineProperty(st.prototype,"value",{get:function(){var e=vc(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(Da>100)throw new Error("Cycle detected");this.v=e,this.i++,xs++,Kt++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{js()}}}});function Dr(e,t){return new st(e,t)}function yc(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function bc(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function wc(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function gn(e,t){st.call(this,void 0),this.x=e,this.s=void 0,this.g=xs-1,this.f=4,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}gn.prototype=new st;gn.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===xs))return!0;if(this.g=xs,this.f|=1,this.i>0&&!yc(this))return this.f&=-2,!0;var e=ve;try{bc(this),ve=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(n){this.v=n,this.f|=16,this.i++}return ve=e,wc(this),this.f&=-2,!0};gn.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}st.prototype.S.call(this,e)};gn.prototype.U=function(e){if(this.t!==void 0&&(st.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}};gn.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}};Object.defineProperty(gn.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=vc(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function vl(e,t){return new gn(e,t)}function _c(e){var t=e.u;if(e.u=void 0,typeof t=="function"){Kt++;var n=ve;ve=void 0;try{t()}catch(r){throw e.f&=-2,e.f|=8,_o(e),r}finally{ve=n,js()}}}function _o(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,_c(e)}function Sh(e){if(ve!==this)throw new Error("Out-of-order effect");wc(this),ve=e,this.f&=-2,8&this.f&&_o(this),js()}function Gn(e,t){this.x=e,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=t?.name}Gn.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t=="function"&&(this.u=t)}finally{e()}};Gn.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,_c(this),bc(this),Kt++;var e=ve;return ve=this,Sh.bind(this,e)};Gn.prototype.N=function(){2&this.f||(this.f|=2,this.o=gr,gr=this)};Gn.prototype.d=function(){this.f|=8,1&this.f||_o(this)};Gn.prototype.dispose=function(){this.d()};function Ct(e,t){var n=new Gn(e,t);try{n.c()}catch(s){throw n.d(),s}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var kh=Object.create,xo=Object.defineProperty,Eh=Object.defineProperties,Ih=Object.getOwnPropertyDescriptor,Mh=Object.getOwnPropertyDescriptors,yl=Object.getOwnPropertySymbols,Ah=Object.prototype.hasOwnProperty,Th=Object.prototype.propertyIsEnumerable,$h=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Un=e=>{throw TypeError(e)},Pa=(e,t,n)=>t in e?xo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rh=(e,t)=>{for(var n in t||(t={}))Ah.call(t,n)&&Pa(e,n,t[n]);if(yl)for(var n of yl(t))Th.call(t,n)&&Pa(e,n,t[n]);return e},Dh=(e,t)=>Eh(e,Mh(t)),bl=(e,t)=>xo(e,"name",{value:t,configurable:!0}),Ph=e=>{var t;return[,,,kh((t=void 0)!=null?t:null)]},xc=["class","method","getter","setter","accessor","field","value","get","set"],ar=e=>e!==void 0&&typeof e!="function"?Un("Function expected"):e,Fh=(e,t,n,r,s)=>({kind:xc[e],name:t,metadata:r,addInitializer:a=>n._?Un("Already initialized"):s.push(ar(a||null))}),Cc=(e,t)=>Pa(t,$h("metadata"),e[3]),sn=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)t&1?a[s].call(n):r=a[s].call(n,r);return r},Xn=(e,t,n,r,s,a)=>{var o,i,l,c,u,f=t&7,m=!!(t&8),d=!!(t&16),h=f>3?e.length+1:f?m?1:2:0,v=xc[f+5],y=f>3&&(e[h-1]=[]),g=e[h]||(e[h]=[]),b=f&&(!d&&!m&&(s=s.prototype),f<5&&(f>3||!d)&&Ih(f<4?s:{get[n](){return fn(this,a)},set[n](_){return Ut(this,a,_)}},n));f?d&&f<4&&bl(a,(f>2?"set ":f>1?"get ":"")+n):bl(s,n);for(var w=r.length-1;w>=0;w--)c=Fh(f,n,l={},e[3],g),f&&(c.static=m,c.private=d,u=c.access={has:d?_=>Oh(s,_):_=>n in _},f^3&&(u.get=d?_=>(f^1?fn:Lh)(_,s,f^4?a:b.get):_=>_[n]),f>2&&(u.set=d?(_,x)=>Ut(_,s,x,f^4?a:b.set):(_,x)=>_[n]=x)),i=(0,r[w])(f?f<4?d?a:b[v]:f>4?void 0:{get:b.get,set:b.set}:s,c),l._=1,f^4||i===void 0?ar(i)&&(f>4?y.unshift(i):f?d?a=i:b[v]=i:s=i):typeof i!="object"||i===null?Un("Object expected"):(ar(o=i.get)&&(b.get=o),ar(o=i.set)&&(b.set=o),ar(o=i.init)&&y.unshift(o));return f||Cc(e,s),b&&xo(s,n,b),d?f^4?a:b:s},Co=(e,t,n)=>t.has(e)||Un("Cannot "+n),Oh=(e,t)=>Object(t)!==t?Un('Cannot use the "in" operator on this value'):e.has(t),fn=(e,t,n)=>(Co(e,t,"read from private field"),n?n.call(e):t.get(e)),ts=(e,t,n)=>t.has(e)?Un("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Ut=(e,t,n,r)=>(Co(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Lh=(e,t,n)=>(Co(e,t,"access private method"),n);function Cs(e,t){if(t){let n;return vl(()=>{const r=e();return r&&n&&t(n,r)?n:(n=r,r)})}return vl(e)}function Cr(e,t){if(Object.is(e,t))return!0;if(e===null||t===null)return!1;if(typeof e=="function"&&typeof t=="function")return e===t;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}if(Array.isArray(e))return!Array.isArray(t)||e.length!==t.length?!1:!e.some((r,s)=>!Cr(r,t[s]));if(typeof e=="object"&&typeof t=="object"){const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:!n.some(a=>!Cr(e[a],t[a]))}return!1}function he({get:e},t){return{init(n){return Dr(n)},get(){return e.call(this).value},set(n){const r=e.call(this);r.peek()!==n&&(r.value=n)}}}function Te(e,t){const n=new WeakMap;return function(){let r=n.get(this);return r||(r=Cs(e.bind(this)),n.set(this,r)),r.value}}function pa(e=!0){return function(t,n){n.addInitializer(function(){const r=n.kind==="field"?this:n.static?this:Object.getPrototypeOf(this),s=Object.getOwnPropertyDescriptor(r,n.name);s&&Object.defineProperty(r,n.name,Dh(Rh({},s),{enumerable:e}))})}}function Pr(...e){const t=e.map(n=>Ct(n));return()=>t.forEach(n=>n())}var Sc,kc,Ec,Ic,Mc,Ac,tt,So,ma,Fa,Oa,qe,ko,ga,Tc,La,Eo,va,Ba,Wa;Ac=[he],Mc=[he],Ic=[he],Ec=[pa()],kc=[pa()],Sc=[pa()];var Qt=class{constructor(e,t=Object.is){this.defaultValue=e,this.equals=t,sn(tt,5,this),ts(this,qe),ts(this,So,sn(tt,8,this)),sn(tt,11,this),ts(this,ko,sn(tt,12,this)),sn(tt,15,this),ts(this,Eo,sn(tt,16,this)),sn(tt,19,this),this.reset=this.reset.bind(this),this.reset()}get current(){return fn(this,qe,Ba)}get initial(){return fn(this,qe,Fa)}get previous(){return fn(this,qe,Tc)}set current(e){const t=we(()=>fn(this,qe,Ba));e&&t&&this.equals(t,e)||qt(()=>{fn(this,qe,Fa)||Ut(this,qe,e,Oa),Ut(this,qe,t,La),Ut(this,qe,e,Wa)})}reset(e=this.defaultValue){qt(()=>{Ut(this,qe,void 0,La),Ut(this,qe,e,Oa),Ut(this,qe,e,Wa)})}};tt=Ph();So=new WeakMap;qe=new WeakSet;ko=new WeakMap;Eo=new WeakMap;ma=Xn(tt,20,"#initial",Ac,qe,So),Fa=ma.get,Oa=ma.set;ga=Xn(tt,20,"#previous",Mc,qe,ko),Tc=ga.get,La=ga.set;va=Xn(tt,20,"#current",Ic,qe,Eo),Ba=va.get,Wa=va.set;Xn(tt,2,"current",Ec,Qt);Xn(tt,2,"initial",kc,Qt);Xn(tt,2,"previous",Sc,Qt);Cc(tt,Qt);function ya(e){return we(()=>{const t={};for(const n in e)t[n]=e[n];return t})}var Bh=Object.create,$c=Object.defineProperty,Wh=Object.getOwnPropertyDescriptor,wl=Object.getOwnPropertySymbols,Vh=Object.prototype.hasOwnProperty,Nh=Object.prototype.propertyIsEnumerable,Rc=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Zs=e=>{throw TypeError(e)},_l=Math.pow,Va=(e,t,n)=>t in e?$c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zh=(e,t)=>{for(var n in t||(t={}))Vh.call(t,n)&&Va(e,n,t[n]);if(wl)for(var n of wl(t))Nh.call(t,n)&&Va(e,n,t[n]);return e},jh=e=>{var t;return[,,,Bh((t=e?.[Rc("metadata")])!=null?t:null)]},Dc=["class","method","getter","setter","accessor","field","value","get","set"],Pc=e=>e!==void 0&&typeof e!="function"?Zs("Function expected"):e,Zh=(e,t,n,r,s)=>({kind:Dc[e],name:t,metadata:r,addInitializer:a=>n._?Zs("Already initialized"):s.push(Pc(a||null))}),Hh=(e,t)=>Va(t,Rc("metadata"),e[3]),Gh=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)a[s].call(n);return r},Fc=(e,t,n,r,s,a)=>{for(var o,i,l,c,u=t&7,f=!1,m=!1,d=2,h=Dc[u+5],v=e[d]||(e[d]=[]),y=(s=s.prototype,Wh(s,n)),g=r.length-1;g>=0;g--)l=Zh(u,n,i={},e[3],v),l.static=f,l.private=m,c=l.access={has:b=>n in b},c.get=b=>b[n],o=(0,r[g])(y[h],l),i._=1,Pc(o)&&(y[h]=o);return y&&$c(s,n,y),s},Oc=(e,t,n)=>t.has(e)||Zs("Cannot "+n),Uh=(e,t,n)=>(Oc(e,t,"read from private field"),t.get(e)),Xh=(e,t,n)=>t.has(e)?Zs("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Yh=(e,t,n,r)=>(Oc(e,t,"write to private field"),t.set(e,n),n),Rt=class Na{constructor(t,n){this.x=t,this.y=n}static delta(t,n){return new Na(t.x-n.x,t.y-n.y)}static distance(t,n){return Math.hypot(t.x-n.x,t.y-n.y)}static equals(t,n){return t.x===n.x&&t.y===n.y}static from({x:t,y:n}){return new Na(t,n)}},Fr=class on{constructor(t,n,r,s){this.left=t,this.top=n,this.width=r,this.height=s,this.scale={x:1,y:1}}get inverseScale(){return{x:1/this.scale.x,y:1/this.scale.y}}translate(t,n){const{top:r,left:s,width:a,height:o,scale:i}=this,l=new on(s+t,r+n,a,o);return l.scale=zh({},i),l}get boundingRectangle(){const{width:t,height:n,left:r,top:s,right:a,bottom:o}=this;return{width:t,height:n,left:r,top:s,right:a,bottom:o}}get center(){const{left:t,top:n,right:r,bottom:s}=this;return new Rt((t+r)/2,(n+s)/2)}get area(){const{width:t,height:n}=this;return t*n}equals(t){if(!(t instanceof on))return!1;const{left:n,top:r,width:s,height:a}=this;return n===t.left&&r===t.top&&s===t.width&&a===t.height}containsPoint(t){const{top:n,left:r,bottom:s,right:a}=this;return n<=t.y&&t.y<=s&&r<=t.x&&t.x<=a}intersectionArea(t){return t instanceof on?Kh(this,t):0}intersectionRatio(t){const{area:n}=this,r=this.intersectionArea(t);return r/(t.area+n-r)}get bottom(){const{top:t,height:n}=this;return t+n}get right(){const{left:t,width:n}=this;return t+n}get aspectRatio(){const{width:t,height:n}=this;return t/n}get corners(){return[{x:this.left,y:this.top},{x:this.right,y:this.top},{x:this.left,y:this.bottom},{x:this.right,y:this.bottom}]}static from({top:t,left:n,width:r,height:s}){return new on(n,t,r,s)}static delta(t,n,r={x:"center",y:"center"}){const s=(a,o)=>{const i=r[o],l=o==="x"?a.left:a.top,c=o==="x"?a.width:a.height;return i=="start"?l:i=="end"?l+c:l+c/2};return Rt.delta({x:s(t,"x"),y:s(t,"y")},{x:s(n,"x"),y:s(n,"y")})}static intersectionRatio(t,n){return on.from(t).intersectionRatio(on.from(n))}};function Kh(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),s=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=s-r,i=a-n;return r<s&&n<a?o*i:0}var Lc,Bc,za,cs,Or,Hs=class extends(za=Qt,Bc=[Te],Lc=[Te],za){constructor(t){const n=Rt.from(t);super(n,(r,s)=>Rt.equals(r,s)),Gh(Or,5,this),Xh(this,cs,0),this.velocity={x:0,y:0}}get delta(){return Rt.delta(this.current,this.initial)}get direction(){const{current:t,previous:n}=this;if(!n)return null;const r={x:t.x-n.x,y:t.y-n.y};return!r.x&&!r.y?null:Math.abs(r.x)>Math.abs(r.y)?r.x>0?"right":"left":r.y>0?"down":"up"}get current(){return super.current}set current(t){const{current:n}=this,r=Rt.from(t),s={x:r.x-n.x,y:r.y-n.y},a=Date.now(),o=a-Uh(this,cs),i=l=>Math.round(l/o*100);qt(()=>{Yh(this,cs,a),this.velocity={x:i(s.x),y:i(s.y)},super.current=r})}reset(t=this.defaultValue){super.reset(Rt.from(t)),this.velocity={x:0,y:0}}};Or=jh(za);cs=new WeakMap;Fc(Or,2,"delta",Bc,Hs);Fc(Or,2,"direction",Lc,Hs);Hh(Or,Hs);function ja({x:e,y:t},n){const r=Math.abs(e),s=Math.abs(t);return typeof n=="number"?Math.sqrt(_l(r,2)+_l(s,2))>n:"x"in n&&"y"in n?r>n.x&&s>n.y:"x"in n?r>n.x:"y"in n?s>n.y:!1}var Wc=(e=>(e.Horizontal="x",e.Vertical="y",e))(Wc||{}),Vc=Object.values(Wc),qh=Object.create,Io=Object.defineProperty,Jh=Object.defineProperties,Qh=Object.getOwnPropertyDescriptor,ep=Object.getOwnPropertyDescriptors,Ss=Object.getOwnPropertySymbols,Nc=Object.prototype.hasOwnProperty,zc=Object.prototype.propertyIsEnumerable,jc=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Yn=e=>{throw TypeError(e)},Za=(e,t,n)=>t in e?Io(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Zc=(e,t)=>{for(var n in t||(t={}))Nc.call(t,n)&&Za(e,n,t[n]);if(Ss)for(var n of Ss(t))zc.call(t,n)&&Za(e,n,t[n]);return e},Hc=(e,t)=>Jh(e,ep(t)),xl=(e,t)=>Io(e,"name",{value:t,configurable:!0}),Gc=(e,t)=>{var n={};for(var r in e)Nc.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ss)for(var r of Ss(e))t.indexOf(r)<0&&zc.call(e,r)&&(n[r]=e[r]);return n},Kn=e=>{var t;return[,,,qh((t=e?.[jc("metadata")])!=null?t:null)]},Uc=["class","method","getter","setter","accessor","field","value","get","set"],or=e=>e!==void 0&&typeof e!="function"?Yn("Function expected"):e,tp=(e,t,n,r,s)=>({kind:Uc[e],name:t,metadata:r,addInitializer:a=>n._?Yn("Already initialized"):s.push(or(a||null))}),vn=(e,t)=>Za(t,jc("metadata"),e[3]),se=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)t&1?a[s].call(n):r=a[s].call(n,r);return r},ce=(e,t,n,r,s,a)=>{var o,i,l,c,u,f=t&7,m=!!(t&8),d=!!(t&16),h=f>3?e.length+1:f?m?1:2:0,v=Uc[f+5],y=f>3&&(e[h-1]=[]),g=e[h]||(e[h]=[]),b=f&&(!d&&!m&&(s=s.prototype),f<5&&(f>3||!d)&&Qh(f<4?s:{get[n](){return Ge(this,a)},set[n](_){return wt(this,a,_)}},n));f?d&&f<4&&xl(a,(f>2?"set ":f>1?"get ":"")+n):xl(s,n);for(var w=r.length-1;w>=0;w--)c=tp(f,n,l={},e[3],g),f&&(c.static=m,c.private=d,u=c.access={has:d?_=>np(s,_):_=>n in _},f^3&&(u.get=d?_=>(f^1?Ge:rp)(_,s,f^4?a:b.get):_=>_[n]),f>2&&(u.set=d?(_,x)=>wt(_,s,x,f^4?a:b.set):(_,x)=>_[n]=x)),i=(0,r[w])(f?f<4?d?a:b[v]:f>4?void 0:{get:b.get,set:b.set}:s,c),l._=1,f^4||i===void 0?or(i)&&(f>4?y.unshift(i):f?d?a=i:b[v]=i:s=i):typeof i!="object"||i===null?Yn("Object expected"):(or(o=i.get)&&(b.get=o),or(o=i.set)&&(b.set=o),or(o=i.init)&&y.unshift(o));return f||vn(e,s),b&&Io(s,n,b),d?f^4?a:b:s},Mo=(e,t,n)=>t.has(e)||Yn("Cannot "+n),np=(e,t)=>Object(t)!==t?Yn('Cannot use the "in" operator on this value'):e.has(t),Ge=(e,t,n)=>(Mo(e,t,"read from private field"),n?n.call(e):t.get(e)),be=(e,t,n)=>t.has(e)?Yn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),wt=(e,t,n,r)=>(Mo(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),rp=(e,t,n)=>(Mo(e,t,"access private method"),n);function Xc(e,t){return{plugin:e,options:t}}function yn(e){return t=>Xc(e,t)}function Ao(e){return typeof e=="function"?{plugin:e,options:void 0}:e}var Yc,Sr,To,us;Yc=[he];var ut=class{constructor(e,t){this.manager=e,this.options=t,be(this,To,se(Sr,8,this,!1)),se(Sr,11,this),be(this,us,new Set)}enable(){this.disabled=!1}disable(){this.disabled=!0}isDisabled(){return we(()=>this.disabled)}configure(e){this.options=e}registerEffect(e){const t=Ct(e.bind(this));return Ge(this,us).add(t),t}destroy(){Ge(this,us).forEach(e=>e())}static configure(e){return Xc(this,e)}};Sr=Kn(null);To=new WeakMap;us=new WeakMap;ce(Sr,4,"disabled",Yc,ut,To);vn(Sr,ut);var Lr=class extends ut{},ds,ba=class{constructor(e){this.manager=e,this.instances=new Map,be(this,ds,[])}get values(){return Array.from(this.instances.values())}set values(e){const t=e.map(Ao).reduceRight((r,s)=>r.some(({plugin:a})=>a===s.plugin)?r:[s,...r],[]),n=t.map(({plugin:r})=>r);for(const r of Ge(this,ds))if(!n.includes(r)){if(r.prototype instanceof Lr)continue;this.unregister(r)}for(const{plugin:r,options:s}of t)this.register(r,s);wt(this,ds,n)}get(e){return this.instances.get(e)}register(e,t){const n=this.instances.get(e);if(n)return n.options!==t&&(n.options=t),n;const r=new e(this.manager,t);return this.instances.set(e,r),r}unregister(e){const t=this.instances.get(e);t&&(t.destroy(),this.instances.delete(e))}destroy(){for(const e of this.instances.values())e.destroy();this.instances.clear()}};ds=new WeakMap;function sp(e,t){return e.priority===t.priority?e.type===t.type?t.value-e.value:t.type-e.type:t.priority-e.priority}var ns=[],Tn,$n,ap=class extends ut{constructor(e){super(e),be(this,Tn),be(this,$n),this.computeCollisions=this.computeCollisions.bind(this),wt(this,$n,Dr(ns)),this.destroy=Pr(()=>{const t=this.computeCollisions(),n=we(()=>this.manager.dragOperation.position.current);if(t!==ns){const r=Ge(this,Tn);if(wt(this,Tn,n),r&&n.x==r.x&&n.y==r.y)return}else wt(this,Tn,void 0);Ge(this,$n).value=t},()=>{const{dragOperation:t}=this.manager;t.status.initialized&&this.forceUpdate()})}forceUpdate(e=!0){we(()=>{e?Ge(this,$n).value=this.computeCollisions():wt(this,Tn,void 0)})}computeCollisions(e,t){const{registry:n,dragOperation:r}=this.manager,{source:s,shape:a,status:o}=r;if(!o.initialized||!a)return ns;const i=[],l=[];for(const c of e??n.droppables){if(c.disabled||s&&!c.accepts(s))continue;const u=t??c.collisionDetector;if(!u)continue;l.push(c),c.shape;const f=we(()=>u({droppable:c,dragOperation:r}));f&&(c.collisionPriority!=null&&(f.priority=c.collisionPriority),i.push(f))}return l.length===0?ns:(i.sort(sp),i)}get collisions(){return Ge(this,$n).value}};Tn=new WeakMap;$n=new WeakMap;var op=class{constructor(){this.registry=new Map}addEventListener(e,t){const{registry:n}=this,r=new Set(n.get(e));return r.add(t),n.set(e,r),()=>this.removeEventListener(e,t)}removeEventListener(e,t){const{registry:n}=this,r=new Set(n.get(e));r.delete(t),n.set(e,r)}dispatch(e,...t){const{registry:n}=this,r=n.get(e);if(r)for(const s of r)s(...t)}},ip=class extends op{constructor(e){super(),this.manager=e}dispatch(e,t){const n=[t,this.manager];super.dispatch(e,...n)}};function fs(e,t=!0){let n=!1;return Hc(Zc({},e),{cancelable:t,get defaultPrevented(){return n},preventDefault(){t&&(n=!0)}})}var lp=class extends Lr{constructor(e){super(e);const t=(r,s)=>r.map(({id:a})=>a).join("")===s.map(({id:a})=>a).join("");let n=[];this.destroy=Pr(()=>{const{dragOperation:r,collisionObserver:s}=e;r.status.initializing&&(n=[],s.enable())},()=>{const{collisionObserver:r,monitor:s}=e,{collisions:a}=r;if(r.isDisabled())return;const o=fs({collisions:a});if(s.dispatch("collision",o),o.defaultPrevented||t(a,n))return;n=a;const[i]=a;we(()=>{var l;i?.id!==((l=e.dragOperation.target)==null?void 0:l.id)&&(r.disable(),e.actions.setDropTarget(i?.id).then(()=>{r.enable()}))})})}},$o=(e=>(e[e.Lowest=0]="Lowest",e[e.Low=1]="Low",e[e.Normal=2]="Normal",e[e.High=3]="High",e[e.Highest=4]="Highest",e))($o||{}),Ro=(e=>(e[e.Collision=0]="Collision",e[e.ShapeIntersection=1]="ShapeIntersection",e[e.PointerIntersection=2]="PointerIntersection",e))(Ro||{}),Kc,qc,Jc,Qc,eu,tu,nu,xt,Do;nu=[he],tu=[Te],eu=[Te],Qc=[Te],Jc=[Te],qc=[Te],Kc=[Te];var Vt=class{constructor(){se(xt,5,this),be(this,Do,se(xt,8,this,"idle")),se(xt,11,this)}get current(){return this.value}get idle(){return this.value==="idle"}get initializing(){return this.value==="initializing"}get initialized(){const{value:e}=this;return e!=="idle"&&e!=="initialization-pending"}get dragging(){return this.value==="dragging"}get dropped(){return this.value==="dropped"}set(e){this.value=e}};xt=Kn(null);Do=new WeakMap;ce(xt,4,"value",nu,Vt,Do);ce(xt,2,"current",tu,Vt);ce(xt,2,"idle",eu,Vt);ce(xt,2,"initializing",Qc,Vt);ce(xt,2,"initialized",Jc,Vt);ce(xt,2,"dragging",qc,Vt);ce(xt,2,"dropped",Kc,Vt);vn(xt,Vt);var cp=class{constructor(e){this.manager=e}setDragSource(e){const{dragOperation:t}=this.manager;t.sourceIdentifier=typeof e=="string"||typeof e=="number"?e:e.id}setDropTarget(e){return we(()=>{const{dragOperation:t}=this.manager,n=e??null;if(t.targetIdentifier===n)return Promise.resolve(!1);t.targetIdentifier=n;const r=fs({operation:t.snapshot()});return t.status.dragging&&this.manager.monitor.dispatch("dragover",r),this.manager.renderer.rendering.then(()=>r.defaultPrevented)})}start(e){return we(()=>{const{dragOperation:t}=this.manager;if(e.source!=null&&this.setDragSource(e.source),!t.source)throw new Error("Cannot start a drag operation without a drag source");if(!t.status.idle)throw new Error("Cannot start a drag operation while another is active");const r=new AbortController,{event:s,coordinates:a}=e;qt(()=>{t.status.set("initialization-pending"),t.shape=null,t.canceled=!1,t.activatorEvent=s??null,t.position.reset(a)});const o=fs({operation:t.snapshot()});return this.manager.monitor.dispatch("beforedragstart",o),o.defaultPrevented?(t.reset(),r.abort(),r):(t.status.set("initializing"),t.controller=r,this.manager.renderer.rendering.then(()=>{if(r.signal.aborted)return;const{status:i}=t;i.current==="initializing"&&(t.status.set("dragging"),this.manager.monitor.dispatch("dragstart",{nativeEvent:s,operation:t.snapshot(),cancelable:!1}))}),r)})}move(e){return we(()=>{var t,n;const{dragOperation:r}=this.manager,{status:s,controller:a}=r;if(!s.dragging||!a||a.signal.aborted)return;const o=fs({nativeEvent:e.event,operation:r.snapshot(),by:e.by,to:e.to},(t=e.cancelable)!=null?t:!0);((n=e.propagate)==null||n)&&this.manager.monitor.dispatch("dragmove",o),queueMicrotask(()=>{var i,l,c,u,f;if(o.defaultPrevented)return;const m=(f=e.to)!=null?f:{x:r.position.current.x+((l=(i=e.by)==null?void 0:i.x)!=null?l:0),y:r.position.current.y+((u=(c=e.by)==null?void 0:c.y)!=null?u:0)};r.position.current=m})})}stop(e={}){return we(()=>{var t,n;const{dragOperation:r}=this.manager,{controller:s}=r;if(!s||s.signal.aborted)return;let a;const o=()=>{const l={resume:()=>{},abort:()=>{}};return a=new Promise((c,u)=>{l.resume=c,l.abort=u}),l};s.abort();const i=()=>{this.manager.renderer.rendering.then(()=>{r.status.set("dropped");const l=we(()=>{var u;return((u=r.source)==null?void 0:u.status)==="dropping"}),c=()=>{r.controller===s&&(r.controller=void 0),r.reset()};if(l){const{source:u}=r,f=Ct(()=>{u?.status==="idle"&&(f(),c())})}else this.manager.renderer.rendering.then(c)})};r.canceled=(t=e.canceled)!=null?t:!1,this.manager.monitor.dispatch("dragend",{nativeEvent:e.event,operation:r.snapshot(),canceled:(n=e.canceled)!=null?n:!1,suspend:o}),a?a.then(i).catch(()=>r.reset()):i()})}},ru,su,au,ou,ct,Po,Fo,Oo,Lo;ou=[he],au=[he],su=[he],ru=[he];var en=class{constructor(e,t){be(this,Po,se(ct,8,this)),se(ct,11,this),be(this,Fo,se(ct,12,this)),se(ct,15,this),be(this,Oo,se(ct,16,this)),se(ct,19,this),be(this,Lo,se(ct,20,this)),se(ct,23,this);const{effects:n,id:r,data:s={},disabled:a=!1,register:o=!0}=e;let i=r;this.manager=t,this.id=r,this.data=s,this.disabled=a,this.effects=()=>{var l;return[()=>{const{id:c,manager:u}=this;if(c!==i)return u?.registry.register(this),()=>u?.registry.unregister(this)},...(l=n?.())!=null?l:[]]},this.register=this.register.bind(this),this.unregister=this.unregister.bind(this),this.destroy=this.destroy.bind(this),t&&o&&queueMicrotask(this.register)}register(){var e;return(e=this.manager)==null?void 0:e.registry.register(this)}unregister(){var e;(e=this.manager)==null||e.registry.unregister(this)}destroy(){var e;(e=this.manager)==null||e.registry.unregister(this)}};ct=Kn(null);Po=new WeakMap;Fo=new WeakMap;Oo=new WeakMap;Lo=new WeakMap;ce(ct,4,"manager",ou,en,Po);ce(ct,4,"id",au,en,Fo);ce(ct,4,"data",su,en,Oo);ce(ct,4,"disabled",ru,en,Lo);vn(ct,en);var Cl=class{constructor(){this.map=Dr(new Map),this.cleanupFunctions=new WeakMap,this.register=(e,t)=>{const n=this.map.peek(),r=n.get(e),s=()=>this.unregister(e,t);if(r===t)return s;if(r){const i=this.cleanupFunctions.get(r);i?.(),this.cleanupFunctions.delete(r)}const a=new Map(n);a.set(e,t),this.map.value=a;const o=Pr(...t.effects());return this.cleanupFunctions.set(t,o),s},this.unregister=(e,t)=>{const n=this.map.peek();if(n.get(e)!==t)return;const r=this.cleanupFunctions.get(t);r?.(),this.cleanupFunctions.delete(t);const s=new Map(n);s.delete(e),this.map.value=s}}[Symbol.iterator](){return this.map.peek().values()}get value(){return this.map.value.values()}has(e){return this.map.value.has(e)}get(e){return this.map.value.get(e)}destroy(){for(const e of this){const t=this.cleanupFunctions.get(e);t?.(),e.destroy()}this.map.value=new Map}},iu,lu,cu,uu,du,fu,Ha,nt,Bo,Wo,Vo,Dt=class extends(Ha=en,fu=[he],du=[he],uu=[he],cu=[Te],lu=[Te],iu=[Te],Ha){constructor(t,n){var r=t,{modifiers:s,type:a,sensors:o}=r,i=Gc(r,["modifiers","type","sensors"]);super(i,n),se(nt,5,this),be(this,Bo,se(nt,8,this)),se(nt,11,this),be(this,Wo,se(nt,12,this)),se(nt,15,this),be(this,Vo,se(nt,16,this,this.isDragSource?"dragging":"idle")),se(nt,19,this),this.type=a,this.sensors=o,this.modifiers=s,this.alignment=i.alignment}get isDropping(){return this.status==="dropping"&&this.isDragSource}get isDragging(){return this.status==="dragging"&&this.isDragSource}get isDragSource(){var t,n;return((n=(t=this.manager)==null?void 0:t.dragOperation.source)==null?void 0:n.id)===this.id}};nt=Kn(Ha);Bo=new WeakMap;Wo=new WeakMap;Vo=new WeakMap;ce(nt,4,"type",fu,Dt,Bo);ce(nt,4,"modifiers",du,Dt,Wo);ce(nt,4,"status",uu,Dt,Vo);ce(nt,2,"isDropping",cu,Dt);ce(nt,2,"isDragging",lu,Dt);ce(nt,2,"isDragSource",iu,Dt);vn(nt,Dt);var hu,pu,mu,gu,vu,yu,Ga,ze,No,zo,jo,Zo,Ho,Pt=class extends(Ga=en,yu=[he],vu=[he],gu=[he],mu=[he],pu=[he],hu=[Te],Ga){constructor(t,n){var r=t,{accept:s,collisionDetector:a,collisionPriority:o,type:i}=r,l=Gc(r,["accept","collisionDetector","collisionPriority","type"]);super(l,n),se(ze,5,this),be(this,No,se(ze,8,this)),se(ze,11,this),be(this,zo,se(ze,12,this)),se(ze,15,this),be(this,jo,se(ze,16,this)),se(ze,19,this),be(this,Zo,se(ze,20,this)),se(ze,23,this),be(this,Ho,se(ze,24,this)),se(ze,27,this),this.accept=s,this.collisionDetector=a,this.collisionPriority=o,this.type=i}accepts(t){const{accept:n}=this;return n?typeof n=="function"?n(t):t.type?Array.isArray(n)?n.includes(t.type):t.type===n:!1:!0}get isDropTarget(){var t,n;return((n=(t=this.manager)==null?void 0:t.dragOperation.target)==null?void 0:n.id)===this.id}};ze=Kn(Ga);No=new WeakMap;zo=new WeakMap;jo=new WeakMap;Zo=new WeakMap;Ho=new WeakMap;ce(ze,4,"accept",yu,Pt,No);ce(ze,4,"type",vu,Pt,zo);ce(ze,4,"collisionDetector",gu,Pt,jo);ce(ze,4,"collisionPriority",mu,Pt,Zo);ce(ze,4,"shape",pu,Pt,Ho);ce(ze,2,"isDropTarget",hu,Pt);vn(ze,Pt);var Wn=class extends ut{constructor(e,t){super(e,t),this.manager=e,this.options=t}},up=class extends AbortController{constructor(e,t){super(),this.constraints=e,this.onActivate=t,this.activated=!1;for(const n of e??[])n.controller=this}onEvent(e){var t;if(!this.activated)if((t=this.constraints)!=null&&t.length)for(const n of this.constraints)n.onEvent(e);else this.activate(e)}activate(e){this.activated||(this.activated=!0,this.onActivate(e))}abort(e){this.activated=!1,super.abort(e)}},hs,bu=class{constructor(e){this.options=e,be(this,hs)}set controller(e){wt(this,hs,e),e.signal.addEventListener("abort",()=>this.abort())}activate(e){var t;(t=Ge(this,hs))==null||t.activate(e)}};hs=new WeakMap;var Vn=class extends ut{constructor(e,t){super(e,t),this.manager=e,this.options=t}apply(e){return e.transform}},dp=class{constructor(e){this.draggables=new Cl,this.droppables=new Cl,this.plugins=new ba(e),this.sensors=new ba(e),this.modifiers=new ba(e)}register(e,t){if(e instanceof Dt)return this.draggables.register(e.id,e);if(e instanceof Pt)return this.droppables.register(e.id,e);if(e.prototype instanceof Vn)return this.modifiers.register(e,t);if(e.prototype instanceof Wn)return this.sensors.register(e,t);if(e.prototype instanceof ut)return this.plugins.register(e,t);throw new Error("Invalid instance type")}unregister(e){if(e instanceof en)return e instanceof Dt?this.draggables.unregister(e.id,e):e instanceof Pt?this.droppables.unregister(e.id,e):()=>{};if(e.prototype instanceof Vn)return this.modifiers.unregister(e);if(e.prototype instanceof Wn)return this.sensors.unregister(e);if(e.prototype instanceof ut)return this.plugins.unregister(e);throw new Error("Invalid instance type")}destroy(){this.draggables.destroy(),this.droppables.destroy(),this.plugins.destroy(),this.sensors.destroy(),this.modifiers.destroy()}},wu,_u,xu,Cu,Su,ku,Eu,Iu,Mu,ir,ps,Rn,De,Go,Uo,Xo,Yo,Ko,lr;Mu=[Te],Iu=[he],Eu=[he],ku=[he],Su=[he],Cu=[he],xu=[Te],_u=[Te],wu=[Te];var Tt=class{constructor(e){se(De,5,this),be(this,ir),be(this,ps),be(this,Rn,new Qt(void 0,(t,n)=>t&&n?t.equals(n):t===n)),this.status=new Vt,be(this,Go,se(De,8,this,!1)),se(De,11,this),be(this,Uo,se(De,12,this,null)),se(De,15,this),be(this,Xo,se(De,16,this,null)),se(De,19,this),be(this,Yo,se(De,20,this,null)),se(De,23,this),be(this,Ko,se(De,24,this,[])),se(De,27,this),this.position=new Hs({x:0,y:0}),be(this,lr,{x:0,y:0}),wt(this,ir,e)}get shape(){const{current:e,initial:t,previous:n}=Ge(this,Rn);return!e||!t?null:{current:e,initial:t,previous:n}}set shape(e){e?Ge(this,Rn).current=e:Ge(this,Rn).reset()}get source(){var e;const t=this.sourceIdentifier;if(t==null)return null;const n=Ge(this,ir).registry.draggables.get(t);return n&&wt(this,ps,n),(e=n??Ge(this,ps))!=null?e:null}get target(){var e;const t=this.targetIdentifier;return t!=null&&(e=Ge(this,ir).registry.droppables.get(t))!=null?e:null}get transform(){const{x:e,y:t}=this.position.delta;let n={x:e,y:t};for(const r of this.modifiers)n=r.apply(Hc(Zc({},this.snapshot()),{transform:n}));return wt(this,lr,n),n}snapshot(){return we(()=>({source:this.source,target:this.target,activatorEvent:this.activatorEvent,transform:Ge(this,lr),shape:this.shape?ya(this.shape):null,position:ya(this.position),status:ya(this.status),canceled:this.canceled}))}reset(){qt(()=>{this.status.set("idle"),this.sourceIdentifier=null,this.targetIdentifier=null,Ge(this,Rn).reset(),this.position.reset({x:0,y:0}),wt(this,lr,{x:0,y:0}),this.modifiers=[]})}};De=Kn(null);ir=new WeakMap;ps=new WeakMap;Rn=new WeakMap;Go=new WeakMap;Uo=new WeakMap;Xo=new WeakMap;Yo=new WeakMap;Ko=new WeakMap;lr=new WeakMap;ce(De,2,"shape",Mu,Tt);ce(De,4,"canceled",Iu,Tt,Go);ce(De,4,"activatorEvent",Eu,Tt,Uo);ce(De,4,"sourceIdentifier",ku,Tt,Xo);ce(De,4,"targetIdentifier",Su,Tt,Yo);ce(De,4,"modifiers",Cu,Tt,Ko);ce(De,2,"source",xu,Tt);ce(De,2,"target",_u,Tt);ce(De,2,"transform",wu,Tt);vn(De,Tt);var fp={get rendering(){return Promise.resolve()}};function Lt(e,t){return typeof e=="function"?e(t):e??t}var hp=class{constructor(t){this.destroy=()=>{this.dragOperation.status.idle||this.actions.stop({canceled:!0}),this.dragOperation.modifiers.forEach(m=>m.destroy()),this.registry.destroy(),this.collisionObserver.destroy()};var n;const r=t??{},s=Lt(r.plugins,[]),a=Lt(r.sensors,[]),o=Lt(r.modifiers,[]),i=(n=r.renderer)!=null?n:fp,l=new ip(this),c=new dp(this);this.registry=c,this.monitor=l,this.renderer=i,this.actions=new cp(this),this.dragOperation=new Tt(this),this.collisionObserver=new ap(this),this.plugins=[lp,...s],this.modifiers=o,this.sensors=a;const{destroy:u}=this,f=Pr(()=>{var m,d,h;const v=we(()=>this.dragOperation.modifiers),y=this.modifiers;for(const g of v)y.includes(g)||g.destroy();this.dragOperation.modifiers=(h=(d=(m=this.dragOperation.source)==null?void 0:m.modifiers)==null?void 0:d.map(g=>{const{plugin:b,options:w}=Ao(g);return new b(this,w)}))!=null?h:y});this.destroy=()=>{f(),u()}}get plugins(){return this.registry.plugins.values}set plugins(t){this.registry.plugins.values=t}get modifiers(){return this.registry.modifiers.values}set modifiers(t){this.registry.modifiers.values=t}get sensors(){return this.registry.sensors.values}set sensors(t){this.registry.sensors.values=t}},Au=e=>{throw TypeError(e)},qo=(e,t,n)=>t.has(e)||Au("Cannot "+n),ie=(e,t,n)=>(qo(e,t,"read from private field"),t.get(e)),lt=(e,t,n)=>t.has(e)?Au("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),gt=(e,t,n,r)=>(qo(e,t,"write to private field"),t.set(e,n),n),Tu=(e,t,n)=>(qo(e,t,"access private method"),n);function Gs(e){return e?e instanceof KeyframeEffect?!0:"getKeyframes"in e&&typeof e.getKeyframes=="function":!1}function pp(e,t){const n=e.getAnimations();if(n.length>0)for(const r of n){if(r.playState!=="running")continue;const{effect:s}=r,o=(Gs(s)?s.getKeyframes():[]).filter(t);if(o.length>0)return[o[o.length-1],r]}return null}function Us(e){const{width:t,height:n,top:r,left:s,bottom:a,right:o}=e.getBoundingClientRect();return{width:t,height:n,top:r,left:s,bottom:a,right:o}}function Jo(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function Br(e){return"nodeType"in e}function St(e){var t,n,r;return e?Jo(e)?e:Br(e)?"defaultView"in e?(t=e.defaultView)!=null?t:window:(r=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?r:window:window:window}function Qo(e){const{Document:t}=St(e);return e instanceof t||"nodeType"in e&&e.nodeType===Node.DOCUMENT_NODE}function hn(e){return!e||Jo(e)?!1:e instanceof St(e).HTMLElement||"namespaceURI"in e&&typeof e.namespaceURI=="string"&&e.namespaceURI.endsWith("html")}function $u(e){return e instanceof St(e).SVGElement||"namespaceURI"in e&&typeof e.namespaceURI=="string"&&e.namespaceURI.endsWith("svg")}function bn(e){return e?Jo(e)?e.document:Br(e)?Qo(e)?e:hn(e)||$u(e)?e.ownerDocument:document:document:document}function mp(e){var t,n,r,s;const{documentElement:a}=bn(e),o=St(e).visualViewport,i=(t=o?.width)!=null?t:a.clientWidth,l=(n=o?.height)!=null?n:a.clientHeight,c=(r=o?.offsetTop)!=null?r:0,u=(s=o?.offsetLeft)!=null?s:0;return{top:c,left:u,right:u+i,bottom:c+l,width:i,height:l}}function gp(e,t){if(vp(e)&&e.open===!1)return!1;const{overflow:n,overflowX:r,overflowY:s}=getComputedStyle(e);return n==="visible"&&r==="visible"&&s==="visible"}function vp(e){return e.tagName==="DETAILS"}function ks(e,t=e.getBoundingClientRect(),n=0){var r,s,a,o,i;let l=t;const{ownerDocument:c}=e,u=(r=c.defaultView)!=null?r:window;let f=e.parentElement;for(;f&&f!==c.documentElement;){if(!gp(f)){const w=f.getBoundingClientRect(),_=n*(w.bottom-w.top),x=n*(w.right-w.left),S=n*(w.bottom-w.top),k=n*(w.right-w.left);l={top:Math.max(l.top,w.top-_),right:Math.min(l.right,w.right+x),bottom:Math.min(l.bottom,w.bottom+S),left:Math.max(l.left,w.left-k),width:0,height:0},l.width=l.right-l.left,l.height=l.bottom-l.top}f=f.parentElement}const m=u.visualViewport,d=(s=m?.offsetTop)!=null?s:0,h=(a=m?.offsetLeft)!=null?a:0,v=(o=m?.width)!=null?o:u.innerWidth,y=(i=m?.height)!=null?i:u.innerHeight,g=n*y,b=n*v;return l={top:Math.max(l.top,d-g),right:Math.min(l.right,h+v+b),bottom:Math.min(l.bottom,d+y+g),left:Math.max(l.left,h-b),width:0,height:0},l.width=l.right-l.left,l.height=l.bottom-l.top,l.width<0&&(l.width=0),l.height<0&&(l.height=0),l}function Nn(e){return{x:e.clientX,y:e.clientY}}var Ru=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ua(e=document,t=new Set){if(t.has(e))return[];t.add(e);const n=[e];for(const r of Array.from(e.querySelectorAll("iframe, frame")))try{const s=r.contentDocument;s&&!t.has(s)&&n.push(...Ua(s,t))}catch{}try{const r=e.defaultView;if(r&&r!==window.top){const s=r.parent;s&&s.document&&s.document!==e&&n.push(...Ua(s.document,t))}}catch{}return n}function ei(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function Du(){var e,t;const n=ei()?window.visualViewport:null;return{x:(e=n?.offsetLeft)!=null?e:0,y:(t=n?.offsetTop)!=null?t:0}}function ti(e){return!e||!Br(e)?!1:e instanceof St(e).ShadowRoot}function Es(e){if(e&&Br(e)){let t=e.getRootNode();if(ti(t))return t;if(t instanceof Document)return t}return bn(e)}function Pu(e){return e.matchMedia("(prefers-reduced-motion: reduce)").matches}function yp(e){const t="input, textarea, select, canvas, [contenteditable]",n=e.cloneNode(!0),r=Array.from(e.querySelectorAll(t));return Array.from(n.querySelectorAll(t)).forEach((a,o)=>{const i=r[o];if(Sl(a)&&Sl(i)&&(a.type!=="file"&&(a.value=i.value),a.type==="radio"&&a.name&&(a.name=`Cloned__${a.name}`)),kl(a)&&kl(i)&&i.width>0&&i.height>0){const l=a.getContext("2d");l?.drawImage(i,0,0)}}),n}function Sl(e){return"value"in e}function kl(e){return e.tagName==="CANVAS"}function Fu(e,{x:t,y:n}){const r=e.elementFromPoint(t,n);if(bp(r)){const{contentDocument:s}=r;if(s){const{left:a,top:o}=r.getBoundingClientRect();return Fu(s,{x:t-a,y:n-o})}}return r}function bp(e){return e?.tagName==="IFRAME"}var El=new WeakMap;function wp(e){return!!e.closest(`
|
|
2
2
|
input:not([disabled]),
|
|
3
3
|
select:not([disabled]),
|
|
4
4
|
textarea:not([disabled]),
|
|
5
5
|
button:not([disabled]),
|
|
6
6
|
a[href],
|
|
7
7
|
[contenteditable]:not([contenteditable="false"])
|
|
8
|
-
`)}var Ou=class{constructor(){this.entries=new Set,this.clear=()=>{for(const e of this.entries){const[t,{type:n,listener:r,options:s}]=e;t.removeEventListener(n,r,s)}this.entries.clear()}}bind(e,t){const n=Array.isArray(e)?e:[e],r=Array.isArray(t)?t:[t],s=[];for(const a of n)for(const o of r){const{type:i,listener:l,options:c}=o,u=[a,o];a.addEventListener(i,l,c),this.entries.add(u),s.push(u)}return function(){for(const[o,{type:i,listener:l,options:c}]of s)o.removeEventListener(i,l,c)}}};function zn(e){const t=e?.ownerDocument.defaultView;if(t&&t.self!==t.parent)return t.frameElement}function yp(e){const t=new Set;let n=zn(e);for(;n;)t.add(n),n=zn(n);return t}function bp(e,t){const n=setTimeout(e,t);return()=>clearTimeout(n)}function Lu(e,t){const n=()=>performance.now();let r,s;return function(...a){const o=this;s?(r?.(),r=bp(()=>{e.apply(o,a),s=n()},t-(n()-s))):(e.apply(o,a),s=n())}}function wp(e,t){return e===t?!0:!e||!t?!1:e.top==t.top&&e.left==t.left&&e.right==t.right&&e.bottom==t.bottom}function _p(e,t=e.getBoundingClientRect()){const{width:n,height:r}=ks(e,t);return n>0&&r>0}var xp=Ru?ResizeObserver:class{observe(){}unobserve(){}disconnect(){}},ms,Sp=class extends xp{constructor(e){super(t=>{if(!ie(this,ms)){gt(this,ms,!0);return}e(t,this)}),ot(this,ms,!1)}};ms=new WeakMap;var Il=Array.from({length:100},(e,t)=>t/100),Bu=75,ln,Is,Ht,cn,cr,Xe,vr,ur,Ms,Wu,Vu,Nu=class{constructor(e,t,n={debug:!1,skipInitial:!1}){this.element=e,this.callback=t,ot(this,Ms),this.disconnect=()=>{var a,o,i;gt(this,vr,!0),(a=ie(this,Ht))==null||a.disconnect(),(o=ie(this,cn))==null||o.disconnect(),ie(this,cr).disconnect(),(i=ie(this,Xe))==null||i.remove()},ot(this,ln,!0),ot(this,Is),ot(this,Ht),ot(this,cn),ot(this,cr),ot(this,Xe),ot(this,vr,!1),ot(this,ur,Lu(()=>{var a,o,i;const{element:l}=this;if((a=ie(this,cn))==null||a.disconnect(),ie(this,vr)||!ie(this,ln)||!l.isConnected)return;const c=(o=l.ownerDocument)!=null?o:document,{innerHeight:u,innerWidth:f}=(i=c.defaultView)!=null?i:window,m=l.getBoundingClientRect(),d=ks(l,m),{top:h,left:v,bottom:y,right:g}=d,b=-Math.floor(h),_=-Math.floor(v),w=-Math.floor(f-g),x=-Math.floor(u-y),C=`${b}px ${w}px ${x}px ${_}px`;this.boundingClientRect=m,gt(this,cn,new IntersectionObserver(k=>{const[I]=k,{intersectionRect:E}=I;(I.intersectionRatio!==1?I.intersectionRatio:Fr.intersectionRatio(E,ks(l)))!==1&&ie(this,ur).call(this)},{threshold:Il,rootMargin:C,root:c})),ie(this,cn).observe(l),Tu(this,Ms,Wu).call(this)},Bu)),this.boundingClientRect=e.getBoundingClientRect(),gt(this,ln,_p(e,this.boundingClientRect));let r=!0;this.callback=a=>{r&&(r=!1,n.skipInitial)||t(a)};const s=e.ownerDocument;n?.debug&&(gt(this,Xe,document.createElement("div")),ie(this,Xe).style.background="rgba(0,0,0,0.15)",ie(this,Xe).style.position="fixed",ie(this,Xe).style.pointerEvents="none",s.body.appendChild(ie(this,Xe))),gt(this,cr,new IntersectionObserver(a=>{var o,i;const l=a[a.length-1],{boundingClientRect:c,isIntersecting:u}=l,{width:f,height:m}=c,d=ie(this,ln);gt(this,ln,u),!(!f&&!m)&&(d&&!u?((o=ie(this,cn))==null||o.disconnect(),this.callback(null),(i=ie(this,Ht))==null||i.disconnect(),gt(this,Ht,void 0),ie(this,Xe)&&(ie(this,Xe).style.visibility="hidden")):ie(this,ur).call(this),u&&!ie(this,Ht)&&(gt(this,Ht,new Sp(ie(this,ur))),ie(this,Ht).observe(e)))},{threshold:Il,root:s})),ie(this,ln)&&!n.skipInitial&&this.callback(this.boundingClientRect),ie(this,cr).observe(e)}};ln=new WeakMap;Is=new WeakMap;Ht=new WeakMap;cn=new WeakMap;cr=new WeakMap;Xe=new WeakMap;vr=new WeakMap;ur=new WeakMap;Ms=new WeakSet;Wu=function(){ie(this,vr)||(Tu(this,Ms,Vu).call(this),!wp(this.boundingClientRect,ie(this,Is))&&(this.callback(this.boundingClientRect),gt(this,Is,this.boundingClientRect)))};Vu=function(){if(ie(this,Xe)){const{top:e,left:t,width:n,height:r}=ks(this.element);ie(this,Xe).style.overflow="hidden",ie(this,Xe).style.visibility="visible",ie(this,Xe).style.top=`${Math.floor(e)}px`,ie(this,Xe).style.left=`${Math.floor(t)}px`,ie(this,Xe).style.width=`${Math.floor(n)}px`,ie(this,Xe).style.height=`${Math.floor(r)}px`}};var rs=new WeakMap,ss=new WeakMap;function Cp(e,t){let n=rs.get(e);return n||(n={disconnect:new Nu(e,s=>{const a=rs.get(e);a&&a.callbacks.forEach(o=>o(s))},{skipInitial:!0}).disconnect,callbacks:new Set}),n.callbacks.add(t),rs.set(e,n),()=>{n.callbacks.delete(t),n.callbacks.size===0&&(rs.delete(e),n.disconnect())}}function kp(e,t){const n=new Set;for(const r of e){const s=Cp(r,t);n.add(s)}return()=>n.forEach(r=>r())}function Ep(e,t){var n;const r=e.ownerDocument;if(!ss.has(r)){const o=new AbortController,i=new Set;document.addEventListener("scroll",l=>i.forEach(c=>c(l)),{capture:!0,passive:!0,signal:o.signal}),ss.set(r,{disconnect:()=>o.abort(),listeners:i})}const{listeners:s,disconnect:a}=(n=ss.get(r))!=null?n:{};return!s||!a?()=>{}:(s.add(t),()=>{s.delete(t),s.size===0&&(a(),ss.delete(r))})}var dr,fr,gs,Xa,Ip=class{constructor(e,t,n){this.callback=t,ot(this,dr),ot(this,fr,!1),ot(this,gs),ot(this,Xa,Lu(o=>{if(!ie(this,fr)&&o.target&&"contains"in o.target&&typeof o.target.contains=="function"){for(const i of ie(this,gs))if(o.target.contains(i)){this.callback(ie(this,dr).boundingClientRect);break}}},Bu));const r=yp(e),s=kp(r,t),a=Ep(e,ie(this,Xa));gt(this,gs,r),gt(this,dr,new Nu(e,t,n)),this.disconnect=()=>{ie(this,fr)||(gt(this,fr,!0),s(),a(),ie(this,dr).disconnect())}}};dr=new WeakMap;fr=new WeakMap;gs=new WeakMap;Xa=new WeakMap;function Ya(e){return"showPopover"in e&&"hidePopover"in e&&typeof e.showPopover=="function"&&typeof e.hidePopover=="function"}function kr(e){try{Ya(e)&&e.isConnected&&e.hasAttribute("popover")&&!e.matches(":popover-open")&&e.showPopover()}catch{}}function Ml(e){return!Ru||!e?!1:e===bn(e).scrollingElement}function zu(e){var t,n;const r=St(e),s=Ml(e)?fp(e):Us(e),a=r.visualViewport,o=Ml(e)?{height:(t=a?.height)!=null?t:r.innerHeight,width:(n=a?.width)!=null?n:r.innerWidth}:{height:e.clientHeight,width:e.clientWidth},i={current:{x:e.scrollLeft,y:e.scrollTop},max:{x:e.scrollWidth-o.width,y:e.scrollHeight-o.height}},l=i.current.y<=0,c=i.current.x<=0,u=i.current.y>=i.max.y,f=i.current.x>=i.max.x;return{rect:s,position:i,isTop:l,isLeft:c,isBottom:u,isRight:f}}function Mp(e,t){const{isTop:n,isBottom:r,isLeft:s,isRight:a,position:o}=zu(e),{x:i,y:l}=t??{x:0,y:0},c=!n&&o.current.y+l>0,u=!r&&o.current.y+l<o.max.y,f=!s&&o.current.x+i>0,m=!a&&o.current.x+i<o.max.x;return{top:c,bottom:u,left:f,right:m,x:f||m,y:c||u}}var ni=class{constructor(t){this.scheduler=t,this.pending=!1,this.tasks=new Set,this.resolvers=new Set,this.flush=()=>{const{tasks:n,resolvers:r}=this;this.pending=!1,this.tasks=new Set,this.resolvers=new Set;for(const s of n)s();for(const s of r)s()}}schedule(t){return this.tasks.add(t),this.pending||(this.pending=!0,this.scheduler(this.flush)),new Promise(n=>this.resolvers.add(n))}},As=new ni(e=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()}),Ap=new ni(e=>setTimeout(e,50)),Ts=new Map,Tp=Ts.clear.bind(Ts);function Nt(e,t=!1){if(!t)return Al(e);let n=Ts.get(e);return n||(n=Al(e),Ts.set(e,n),Ap.schedule(Tp),n)}function Al(e){return St(e).getComputedStyle(e)}function $p(e,t=Nt(e,!0)){return t.position==="fixed"||t.position==="sticky"}function Rp(e,t=Nt(e,!0)){const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const a=t[s];return typeof a=="string"?n.test(a):!1})}var Dp={excludeElement:!0,escapeShadowDOM:!0};function Ka(e,t=Dp){const{limit:n,excludeElement:r,escapeShadowDOM:s}=t,a=new Set;function o(i){if(n!=null&&a.size>=n||!i)return a;if(Qo(i)&&i.scrollingElement!=null&&!a.has(i.scrollingElement))return a.add(i.scrollingElement),a;if(s&&ti(i))return o(i.host);if(!hn(i))return $u(i)?o(i.parentElement):a;if(a.has(i))return a;const l=Nt(i,!0);if(r&&i===e||Rp(i,l)&&a.add(i),$p(i,l)){const{scrollingElement:c}=i.ownerDocument;return c&&a.add(c),a}return o(i.parentNode)}return e?o(e):a}function Pp(e){const[t]=Ka(e,{limit:1});return t??null}function jn(e,t=window.frameElement){const n={x:0,y:0,scaleX:1,scaleY:1};if(!e)return n;let r=zn(e);for(;r;){if(r===t)return n;const s=Us(r),{x:a,y:o}=Fp(r,s);n.x=n.x+s.left,n.y=n.y+s.top,n.scaleX=n.scaleX*a,n.scaleY=n.scaleY*o,r=zn(r)}return n}function Fp(e,t=Us(e)){const n=Math.round(t.width),r=Math.round(t.height);if(hn(e))return{x:n/e.offsetWidth,y:r/e.offsetHeight};const s=Nt(e,!0);return{x:(parseFloat(s.width)||n)/n,y:(parseFloat(s.height)||r)/r}}function Op(e){if(e==="none")return null;const t=e.split(" "),n=parseFloat(t[0]),r=parseFloat(t[1]);return isNaN(n)&&isNaN(r)?null:{x:isNaN(n)?r:n,y:isNaN(r)?n:r}}function ri(e){if(e==="none")return null;const[t,n,r="0"]=e.split(" "),s={x:parseFloat(t),y:parseFloat(n),z:parseInt(r,10)};return isNaN(s.x)&&isNaN(s.y)?null:{x:isNaN(s.x)?0:s.x,y:isNaN(s.y)?0:s.y,z:isNaN(s.z)?0:s.z}}function si(e){var t,n,r,s,a,o,i,l,c;const{scale:u,transform:f,translate:m}=e,d=Op(u),h=ri(m),v=Lp(f);if(!v&&!d&&!h)return null;const y={x:(t=d?.x)!=null?t:1,y:(n=d?.y)!=null?n:1},g={x:(r=h?.x)!=null?r:0,y:(s=h?.y)!=null?s:0},b={x:(a=v?.x)!=null?a:0,y:(o=v?.y)!=null?o:0,scaleX:(i=v?.scaleX)!=null?i:1,scaleY:(l=v?.scaleY)!=null?l:1};return{x:g.x+b.x,y:g.y+b.y,z:(c=h?.z)!=null?c:0,scaleX:y.x*b.scaleX,scaleY:y.y*b.scaleY}}function Lp(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}var wt=(e=>(e[e.Idle=0]="Idle",e[e.Forward=1]="Forward",e[e.Reverse=-1]="Reverse",e))(wt||{}),Bp={x:.2,y:.2},Wp={x:10,y:10};function Vp(e,t,n,r=25,s=Bp,a=Wp){const{x:o,y:i}=t,{rect:l,isTop:c,isBottom:u,isLeft:f,isRight:m}=zu(e),d=jn(e),h=Nt(e,!0),v=si(h),y=v!==null?v?.scaleX<0:!1,g=v!==null?v?.scaleY<0:!1,b=new Fr(l.left*d.scaleX+d.x,l.top*d.scaleY+d.y,l.width*d.scaleX,l.height*d.scaleY),_={x:0,y:0},w={x:0,y:0},x={height:b.height*s.y,width:b.width*s.x};return(!c||g&&!u)&&i<=b.top+x.height&&n?.y!==1&&o>=b.left-a.x&&o<=b.right+a.x?(_.y=g?1:-1,w.y=r*Math.abs((b.top+x.height-i)/x.height)):(!u||g&&!c)&&i>=b.bottom-x.height&&n?.y!==-1&&o>=b.left-a.x&&o<=b.right+a.x&&(_.y=g?-1:1,w.y=r*Math.abs((b.bottom-x.height-i)/x.height)),(!m||y&&!f)&&o>=b.right-x.width&&n?.x!==-1&&i>=b.top-a.y&&i<=b.bottom+a.y?(_.x=y?-1:1,w.x=r*Math.abs((b.right-x.width-o)/x.width)):(!f||y&&!m)&&o<=b.left+x.width&&n?.x!==1&&i>=b.top-a.y&&i<=b.bottom+a.y&&(_.x=y?1:-1,w.x=r*Math.abs((b.left+x.width-o)/x.width)),{direction:_,speed:w}}function Np(e){return"scrollIntoViewIfNeeded"in e&&typeof e.scrollIntoViewIfNeeded=="function"}function zp(e,t=!1){if(Np(e)){e.scrollIntoViewIfNeeded(t);return}if(!hn(e))return e.scrollIntoView();var n=Pp(e);if(!hn(n))return;const r=Nt(n,!0),s=parseInt(r.getPropertyValue("border-top-width")),a=parseInt(r.getPropertyValue("border-left-width")),o=e.offsetTop-n.offsetTop<n.scrollTop,i=e.offsetTop-n.offsetTop+e.clientHeight-s>n.scrollTop+n.clientHeight,l=e.offsetLeft-n.offsetLeft<n.scrollLeft,c=e.offsetLeft-n.offsetLeft+e.clientWidth-a>n.scrollLeft+n.clientWidth,u=o&&!i;(o||i)&&t&&(n.scrollTop=e.offsetTop-n.offsetTop-n.clientHeight/2-s+e.clientHeight/2),(l||c)&&t&&(n.scrollLeft=e.offsetLeft-n.offsetLeft-n.clientWidth/2-a+e.clientWidth/2),(o||i||l||c)&&!t&&e.scrollIntoView(u)}function jp(e,t,n){const{scaleX:r,scaleY:s,x:a,y:o}=t,i=e.left+a+(1-r)*parseFloat(n),l=e.top+o+(1-s)*parseFloat(n.slice(n.indexOf(" ")+1)),c=r?e.width*r:e.width,u=s?e.height*s:e.height;return{width:c,height:u,top:l,right:i+c,bottom:l+u,left:i}}function Zp(e,t,n){const{scaleX:r,scaleY:s,x:a,y:o}=t,i=e.left-a-(1-r)*parseFloat(n),l=e.top-o-(1-s)*parseFloat(n.slice(n.indexOf(" ")+1)),c=r?e.width/r:e.width,u=s?e.height/s:e.height;return{width:c,height:u,top:l,right:i+c,bottom:l+u,left:i}}function Hp({element:e,keyframes:t,options:n}){return e.animate(t,n).finished}var Gp=new ni(e=>setTimeout(e,0)),yr=new Map,Up=yr.clear.bind(yr);function Xp(e){const t=e.ownerDocument;let n=yr.get(t);if(n)return n;n=t.getAnimations(),yr.set(t,n),Gp.schedule(Up);const r=n.filter(s=>Gs(s.effect)&&s.effect.target===e);return yr.set(e,r),n}function Yp(e,t){const n=Xp(e).filter(r=>{var s,a;if(Gs(r.effect)){const{target:o}=r.effect;if((a=o&&((s=t.isValidTarget)==null?void 0:s.call(t,o)))!=null?a:!0)return r.effect.getKeyframes().some(l=>{for(const c of t.properties)if(l[c])return!0})}}).map(r=>{const{effect:s,currentTime:a}=r,o=s?.getComputedTiming().duration;if(!(r.pending||r.playState==="finished")&&typeof o=="number"&&typeof a=="number"&&a<o)return r.currentTime=o,()=>{r.currentTime=a}});if(n.length>0)return()=>n.forEach(r=>r?.())}var Bt=class extends Fr{constructor(e,t={}){var n,r,s,a;const{frameTransform:o=jn(e),ignoreTransforms:i,getBoundingClientRect:l=Us}=t,c=Yp(e,{properties:["transform","translate","scale","width","height"],isValidTarget:x=>(x!==e||ei())&&x.contains(e)}),u=l(e);let{top:f,left:m,width:d,height:h}=u,v;const y=Nt(e),g=si(y),b={x:(n=g?.scaleX)!=null?n:1,y:(r=g?.scaleY)!=null?r:1},_=Kp(e,y);c?.(),g&&(v=Zp(u,g,y.transformOrigin),(i||_)&&(f=v.top,m=v.left,d=v.width,h=v.height));const w={width:(s=v?.width)!=null?s:d,height:(a=v?.height)!=null?a:h};if(_&&!i&&v){const x=jp(v,_,y.transformOrigin);f=x.top,m=x.left,d=x.width,h=x.height,b.x=_.scaleX,b.y=_.scaleY}o&&(i||(m*=o.scaleX,d*=o.scaleX,f*=o.scaleY,h*=o.scaleY),m+=o.x,f+=o.y),super(m,f,d,h),this.scale=b,this.intrinsicWidth=w.width,this.intrinsicHeight=w.height}};function Kp(e,t){var n;const r=e.getAnimations();let s=null;if(!r.length)return null;for(const a of r){if(a.playState!=="running")continue;const o=Gs(a.effect)?a.effect.getKeyframes():[],i=o[o.length-1];if(!i)continue;const{transform:l,translate:c,scale:u}=i;if(l||c||u){const f=si({transform:typeof l=="string"&&l?l:t.transform,translate:typeof c=="string"&&c?c:t.translate,scale:typeof u=="string"&&u?u:t.scale});f&&(s=s?{x:s.x+f.x,y:s.y+f.y,z:(n=s.z)!=null?n:f.z,scaleX:s.scaleX*f.scaleX,scaleY:s.scaleY*f.scaleY}:f)}}return s}function br(e){return"style"in e&&typeof e.style=="object"&&e.style!==null&&"setProperty"in e.style&&"removeProperty"in e.style&&typeof e.style.setProperty=="function"&&typeof e.style.removeProperty=="function"}var qp=class{constructor(e){this.element=e,this.initial=new Map}set(e,t=""){const{element:n}=this;if(br(n))for(const[r,s]of Object.entries(e)){const a=`${t}${r}`;this.initial.has(a)||this.initial.set(a,n.style.getPropertyValue(a)),n.style.setProperty(a,typeof s=="string"?s:`${s}px`)}}remove(e,t=""){const{element:n}=this;if(br(n))for(const r of e){const s=`${t}${r}`;n.style.removeProperty(s)}}reset(){const{element:e}=this;if(br(e)){for(const[t,n]of this.initial)e.style.setProperty(t,n);e.getAttribute("style")===""&&e.removeAttribute("style")}}};function pn(e){return e?e instanceof St(e).Element||Br(e)&&e.nodeType===Node.ELEMENT_NODE:!1}function ai(e){if(!e)return!1;const{KeyboardEvent:t}=St(e.target);return e instanceof t}function Jp(e){if(!e)return!1;const{PointerEvent:t}=St(e.target);return e instanceof t}function Qp(e){if(!pn(e))return!1;const{tagName:t}=e;return t==="INPUT"||t==="TEXTAREA"||em(e)}function em(e){return e.hasAttribute("contenteditable")&&e.getAttribute("contenteditable")!=="false"}var wa={};function qa(e){const t=wa[e]==null?0:wa[e]+1;return wa[e]=t,`${e}-${t}`}var tm=({dragOperation:e,droppable:t})=>{const n=e.position.current;if(!n)return null;const{id:r}=t;if(!t.shape)return null;if(t.shape.containsPoint(n)){const s=Rt.distance(t.shape.center,n);return{id:r,value:1/s,type:Ro.PointerIntersection,priority:$o.High}}return null},nm=({dragOperation:e,droppable:t})=>{const{shape:n}=e;if(!t.shape||!n?.current)return null;const r=n.current.intersectionArea(t.shape);if(r){const{position:s}=e,a=Rt.distance(t.shape.center,s.current),i=r/(n.current.area+t.shape.area-r)/a;return{id:t.id,value:i,type:Ro.ShapeIntersection,priority:$o.Normal}}return null},rm=e=>{var t;return(t=tm(e))!=null?t:nm(e)},sm=Object.create,oi=Object.defineProperty,am=Object.defineProperties,om=Object.getOwnPropertyDescriptor,im=Object.getOwnPropertyDescriptors,$s=Object.getOwnPropertySymbols,ju=Object.prototype.hasOwnProperty,Zu=Object.prototype.propertyIsEnumerable,Hu=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),qn=e=>{throw TypeError(e)},Ja=(e,t,n)=>t in e?oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Er=(e,t)=>{for(var n in t||(t={}))ju.call(t,n)&&Ja(e,n,t[n]);if($s)for(var n of $s(t))Zu.call(t,n)&&Ja(e,n,t[n]);return e},ii=(e,t)=>am(e,im(t)),Tl=(e,t)=>oi(e,"name",{value:t,configurable:!0}),Gu=(e,t)=>{var n={};for(var r in e)ju.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&$s)for(var r of $s(e))t.indexOf(r)<0&&Zu.call(e,r)&&(n[r]=e[r]);return n},Jn=e=>{var t;return[,,,sm((t=e?.[Hu("metadata")])!=null?t:null)]},Uu=["class","method","getter","setter","accessor","field","value","get","set"],hr=e=>e!==void 0&&typeof e!="function"?qn("Function expected"):e,lm=(e,t,n,r,s)=>({kind:Uu[e],name:t,metadata:r,addInitializer:a=>n._?qn("Already initialized"):s.push(hr(a||null))}),wn=(e,t)=>Ja(t,Hu("metadata"),e[3]),Be=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)t&1?a[s].call(n):r=a[s].call(n,r);return r},yt=(e,t,n,r,s,a)=>{var o,i,l,c,u,f=t&7,m=!!(t&8),d=!!(t&16),h=f>3?e.length+1:f?m?1:2:0,v=Uu[f+5],y=f>3&&(e[h-1]=[]),g=e[h]||(e[h]=[]),b=f&&(!d&&!m&&(s=s.prototype),f<5&&(f>3||!d)&&om(f<4?s:{get[n](){return Se(this,a)},set[n](w){return rt(this,a,w)}},n));f?d&&f<4&&Tl(a,(f>2?"set ":f>1?"get ":"")+n):Tl(s,n);for(var _=r.length-1;_>=0;_--)c=lm(f,n,l={},e[3],g),f&&(c.static=m,c.private=d,u=c.access={has:d?w=>cm(s,w):w=>n in w},f^3&&(u.get=d?w=>(f^1?Se:mn)(w,s,f^4?a:b.get):w=>w[n]),f>2&&(u.set=d?(w,x)=>rt(w,s,x,f^4?a:b.set):(w,x)=>w[n]=x)),i=(0,r[_])(f?f<4?d?a:b[v]:f>4?void 0:{get:b.get,set:b.set}:s,c),l._=1,f^4||i===void 0?hr(i)&&(f>4?y.unshift(i):f?d?a=i:b[v]=i:s=i):typeof i!="object"||i===null?qn("Object expected"):(hr(o=i.get)&&(b.get=o),hr(o=i.set)&&(b.set=o),hr(o=i.init)&&y.unshift(o));return f||wn(e,s),b&&oi(s,n,b),d?f^4?a:b:s},li=(e,t,n)=>t.has(e)||qn("Cannot "+n),cm=(e,t)=>Object(t)!==t?qn('Cannot use the "in" operator on this value'):e.has(t),Se=(e,t,n)=>(li(e,t,"read from private field"),n?n.call(e):t.get(e)),Pe=(e,t,n)=>t.has(e)?qn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),rt=(e,t,n,r)=>(li(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),mn=(e,t,n)=>(li(e,t,"access private method"),n),$l={role:"button",roleDescription:"draggable"},um="dnd-kit-description",dm="dnd-kit-announcement",fm={draggable:"To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item in a given direction. Press space again to drop the item in its new position, or press escape to cancel."},hm={dragstart({operation:{source:e}}){if(e)return`Picked up draggable item ${e.id}.`},dragover({operation:{source:e,target:t}}){if(!(!e||e.id===t?.id))return t?`Draggable item ${e.id} was moved over droppable target ${t.id}.`:`Draggable item ${e.id} is no longer over a droppable target.`},dragend({operation:{source:e,target:t},canceled:n}){if(e)return n?`Dragging was cancelled. Draggable item ${e.id} was dropped.`:t?`Draggable item ${e.id} was dropped over droppable target ${t.id}`:`Draggable item ${e.id} was dropped.`}};function pm(e){const t=e.tagName.toLowerCase();return["input","select","textarea","a","button"].includes(t)}function mm(e,t){const n=document.createElement("div");return n.id=e,n.style.setProperty("display","none"),n.textContent=t,n}function gm(e){const t=document.createElement("div");return t.id=e,t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),t.style.setProperty("position","fixed"),t.style.setProperty("width","1px"),t.style.setProperty("height","1px"),t.style.setProperty("margin","-1px"),t.style.setProperty("border","0"),t.style.setProperty("padding","0"),t.style.setProperty("overflow","hidden"),t.style.setProperty("clip","rect(0 0 0 0)"),t.style.setProperty("clip-path","inset(100%)"),t.style.setProperty("white-space","nowrap"),t}var vm=["dragover","dragmove"],ym=class extends lt{constructor(e,t){super(e);const{id:n,idPrefix:{description:r=um,announcement:s=dm}={},announcements:a=hm,screenReaderInstructions:o=fm,debounce:i=500}=t??{},l=n?`${r}-${n}`:qa(r),c=n?`${s}-${n}`:qa(s);let u,f,m,d;const h=(x=d)=>{!m||!x||m?.nodeValue!==x&&(m.nodeValue=x)},v=()=>As.schedule(h),y=bm(v,i),g=Object.entries(a).map(([x,C])=>this.manager.monitor.addEventListener(x,(k,I)=>{const E=m;if(!E)return;const T=C?.(k,I);T&&E.nodeValue!==T&&(d=T,vm.includes(x)?y():(v(),y.cancel()))})),b=()=>{let x=[];u?.isConnected||(u=mm(l,o.draggable),x.push(u)),f?.isConnected||(f=gm(c),m=document.createTextNode(""),f.appendChild(m),x.push(f)),x.length>0&&document.body.append(...x)},_=new Set;function w(){for(const x of _)x()}this.registerEffect(()=>{var x;_.clear();for(const C of this.manager.registry.draggables.value){const k=(x=C.handle)!=null?x:C.element;if(k){(!u||!f)&&_.add(b),(!pm(k)||ei())&&!k.hasAttribute("tabindex")&&_.add(()=>k.setAttribute("tabindex","0")),!k.hasAttribute("role")&&k.tagName.toLowerCase()!=="button"&&_.add(()=>k.setAttribute("role",$l.role)),k.hasAttribute("aria-roledescription")||_.add(()=>k.setAttribute("aria-roledescription",$l.roleDescription)),k.hasAttribute("aria-describedby")||_.add(()=>k.setAttribute("aria-describedby",l));for(const E of["aria-pressed","aria-grabbed"]){const T=String(C.isDragging);k.getAttribute(E)!==T&&_.add(()=>k.setAttribute(E,T))}const I=String(C.disabled);k.getAttribute("aria-disabled")!==I&&_.add(()=>k.setAttribute("aria-disabled",I))}}_.size>0&&As.schedule(w)}),this.destroy=()=>{super.destroy(),u?.remove(),f?.remove(),g.forEach(x=>x())}}};function bm(e,t){let n;const r=()=>{clearTimeout(n),n=setTimeout(e,t)};return r.cancel=()=>clearTimeout(n),r}var wm=class extends lt{constructor(e,t){super(e,t),this.manager=e;const n=Ss(()=>{var r;return bn((r=this.manager.dragOperation.source)==null?void 0:r.element)});this.destroy=xt(()=>{var r;const{dragOperation:s}=this.manager,{cursor:a="grabbing",nonce:o}=(r=this.options)!=null?r:{};if(s.status.initialized){const i=n.value,l=i.createElement("style");return o&&l.setAttribute("nonce",o),l.textContent=`* { cursor: ${a} !important; }`,i.head.appendChild(l),()=>l.remove()}})}},Rs=new Map,Xu,Yu,Ku,qu,Qa,wr,Wt,ci,Zn,Ju,Qu,ed,td,_n=class extends(Qa=Lr,qu=[he],Ku=[Ae],Yu=[Ae],Xu=[Ae],Qa){constructor(e){super(e),Be(Wt,5,this),Pe(this,Zn),Pe(this,wr,new Set),Pe(this,ci,Be(Wt,8,this,new Set)),Be(Wt,11,this),this.registerEffect(mn(this,Zn,Ju))}register(e){return Se(this,wr).add(e),()=>{Se(this,wr).delete(e)}}addRoot(e){return we(()=>{const t=new Set(this.additionalRoots);t.add(e),this.additionalRoots=t}),()=>{we(()=>{const t=new Set(this.additionalRoots);t.delete(e),this.additionalRoots=t})}}get sourceRoot(){var e;const{source:t}=this.manager.dragOperation;return Es((e=t?.element)!=null?e:null)}get targetRoot(){var e;const{target:t}=this.manager.dragOperation;return Es((e=t?.element)!=null?e:null)}get roots(){const{status:e}=this.manager.dragOperation;if(e.initializing||e.initialized){const t=[this.sourceRoot,this.targetRoot].filter(n=>n!=null);return new Set([...t,...this.additionalRoots])}return new Set}};Wt=Jn(Qa);wr=new WeakMap;ci=new WeakMap;Zn=new WeakSet;Ju=function(){const{roots:e}=this,t=[];for(const n of e)for(const r of Se(this,wr))t.push(mn(this,Zn,Qu).call(this,n,r));return()=>{for(const n of t)n()}};Qu=function(e,t){let n=Rs.get(e);n||(n=new Map,Rs.set(e,n));let r=n.get(t);if(!r){const a=Qo(e)?mn(this,Zn,ed).call(this,e,n,t):mn(this,Zn,td).call(this,e,n,t);if(!a)return()=>{};r=a,n.set(t,r)}r.refCount++;let s=!1;return()=>{s||(s=!0,r.refCount--,r.refCount===0&&r.cleanup())}};ed=function(e,t,n){const r=e.createElement("style");r.textContent=n,e.head.prepend(r);const s=new MutationObserver(a=>{for(const o of a)for(const i of Array.from(o.removedNodes))if(i===r){e.head.prepend(r);return}});return s.observe(e.head,{childList:!0}),{refCount:0,cleanup:()=>{s.disconnect(),r.remove(),t.delete(n),t.size===0&&Rs.delete(e)}}};td=function(e,t,n){!("adoptedStyleSheets"in e&&Array.isArray(e.adoptedStyleSheets))&&process.env.NODE_ENV!=="production"&&console.error("Cannot inject styles: This browser doesn't support adoptedStyleSheets");const r=e.ownerDocument.defaultView,{CSSStyleSheet:s}=r??{};if(!s)return process.env.NODE_ENV!=="production"&&console.error("Cannot inject styles: CSSStyleSheet constructor not available"),null;const a=new s;return a.replaceSync(n),e.adoptedStyleSheets.push(a),{refCount:0,cleanup:()=>{var o;if(ti(e)&&((o=e.host)!=null&&o.isConnected)){const i=e.adoptedStyleSheets.indexOf(a);i!==-1&&e.adoptedStyleSheets.splice(i,1)}t.delete(n),t.size===0&&Rs.delete(e)}}};yt(Wt,4,"additionalRoots",qu,_n,ci);yt(Wt,2,"sourceRoot",Ku,_n);yt(Wt,2,"targetRoot",Yu,_n);yt(Wt,2,"roots",Xu,_n);wn(Wt,_n);var Wr="data-dnd-",eo=`${Wr}dropping`,Je="--dnd-",$t=`${Wr}dragging`,Ds=`${Wr}placeholder`,_m=[$t,Ds,"popover","aria-pressed","aria-grabbing"],xm=["view-transition-name"],Sm=`
|
|
8
|
+
`)}var Ou=class{constructor(){this.entries=new Set,this.clear=()=>{for(const e of this.entries){const[t,{type:n,listener:r,options:s}]=e;t.removeEventListener(n,r,s)}this.entries.clear()}}bind(e,t){const n=Array.isArray(e)?e:[e],r=Array.isArray(t)?t:[t],s=[];for(const a of n)for(const o of r){const{type:i,listener:l,options:c}=o,u=[a,o];a.addEventListener(i,l,c),this.entries.add(u),s.push(u)}return function(){for(const[o,{type:i,listener:l,options:c}]of s)o.removeEventListener(i,l,c)}}};function zn(e){const t=e?.ownerDocument.defaultView;if(t&&t.self!==t.parent)return t.frameElement}function _p(e){const t=new Set;let n=zn(e);for(;n;)t.add(n),n=zn(n);return t}function xp(e,t){const n=setTimeout(e,t);return()=>clearTimeout(n)}function Lu(e,t){const n=()=>performance.now();let r,s;return function(...a){const o=this;s?(r?.(),r=xp(()=>{e.apply(o,a),s=n()},t-(n()-s))):(e.apply(o,a),s=n())}}function Cp(e,t){return e===t?!0:!e||!t?!1:e.top==t.top&&e.left==t.left&&e.right==t.right&&e.bottom==t.bottom}function Sp(e,t=e.getBoundingClientRect()){const{width:n,height:r}=ks(e,t);return n>0&&r>0}var kp=Ru?ResizeObserver:class{observe(){}unobserve(){}disconnect(){}},ms,Ep=class extends kp{constructor(e){super(t=>{if(!ie(this,ms)){gt(this,ms,!0);return}e(t,this)}),lt(this,ms,!1)}};ms=new WeakMap;var Il=Array.from({length:100},(e,t)=>t/100),Bu=75,ln,Is,Ht,cn,cr,Xe,vr,ur,Ms,Wu,Vu,Nu=class{constructor(e,t,n={debug:!1,skipInitial:!1}){this.element=e,this.callback=t,lt(this,Ms),this.disconnect=()=>{var a,o,i;gt(this,vr,!0),(a=ie(this,Ht))==null||a.disconnect(),(o=ie(this,cn))==null||o.disconnect(),ie(this,cr).disconnect(),(i=ie(this,Xe))==null||i.remove()},lt(this,ln,!0),lt(this,Is),lt(this,Ht),lt(this,cn),lt(this,cr),lt(this,Xe),lt(this,vr,!1),lt(this,ur,Lu(()=>{var a,o,i;const{element:l}=this;if((a=ie(this,cn))==null||a.disconnect(),ie(this,vr)||!ie(this,ln)||!l.isConnected)return;const c=(o=l.ownerDocument)!=null?o:document,{innerHeight:u,innerWidth:f}=(i=c.defaultView)!=null?i:window,m=l.getBoundingClientRect(),d=ks(l,m),{top:h,left:v,bottom:y,right:g}=d,b=-Math.floor(h),w=-Math.floor(v),_=-Math.floor(f-g),x=-Math.floor(u-y),S=`${b}px ${_}px ${x}px ${w}px`;this.boundingClientRect=m,gt(this,cn,new IntersectionObserver(k=>{const[I]=k,{intersectionRect:E}=I;(I.intersectionRatio!==1?I.intersectionRatio:Fr.intersectionRatio(E,ks(l)))!==1&&ie(this,ur).call(this)},{threshold:Il,rootMargin:S,root:c})),ie(this,cn).observe(l),Tu(this,Ms,Wu).call(this)},Bu)),this.boundingClientRect=e.getBoundingClientRect(),gt(this,ln,Sp(e,this.boundingClientRect));let r=!0;this.callback=a=>{r&&(r=!1,n.skipInitial)||t(a)};const s=e.ownerDocument;n?.debug&&(gt(this,Xe,document.createElement("div")),ie(this,Xe).style.background="rgba(0,0,0,0.15)",ie(this,Xe).style.position="fixed",ie(this,Xe).style.pointerEvents="none",s.body.appendChild(ie(this,Xe))),gt(this,cr,new IntersectionObserver(a=>{var o,i;const l=a[a.length-1],{boundingClientRect:c,isIntersecting:u}=l,{width:f,height:m}=c,d=ie(this,ln);gt(this,ln,u),!(!f&&!m)&&(d&&!u?((o=ie(this,cn))==null||o.disconnect(),this.callback(null),(i=ie(this,Ht))==null||i.disconnect(),gt(this,Ht,void 0),ie(this,Xe)&&(ie(this,Xe).style.visibility="hidden")):ie(this,ur).call(this),u&&!ie(this,Ht)&&(gt(this,Ht,new Ep(ie(this,ur))),ie(this,Ht).observe(e)))},{threshold:Il,root:s})),ie(this,ln)&&!n.skipInitial&&this.callback(this.boundingClientRect),ie(this,cr).observe(e)}};ln=new WeakMap;Is=new WeakMap;Ht=new WeakMap;cn=new WeakMap;cr=new WeakMap;Xe=new WeakMap;vr=new WeakMap;ur=new WeakMap;Ms=new WeakSet;Wu=function(){ie(this,vr)||(Tu(this,Ms,Vu).call(this),!Cp(this.boundingClientRect,ie(this,Is))&&(this.callback(this.boundingClientRect),gt(this,Is,this.boundingClientRect)))};Vu=function(){if(ie(this,Xe)){const{top:e,left:t,width:n,height:r}=ks(this.element);ie(this,Xe).style.overflow="hidden",ie(this,Xe).style.visibility="visible",ie(this,Xe).style.top=`${Math.floor(e)}px`,ie(this,Xe).style.left=`${Math.floor(t)}px`,ie(this,Xe).style.width=`${Math.floor(n)}px`,ie(this,Xe).style.height=`${Math.floor(r)}px`}};var rs=new WeakMap,ss=new WeakMap;function Ip(e,t){let n=rs.get(e);return n||(n={disconnect:new Nu(e,s=>{const a=rs.get(e);a&&a.callbacks.forEach(o=>o(s))},{skipInitial:!0}).disconnect,callbacks:new Set}),n.callbacks.add(t),rs.set(e,n),()=>{n.callbacks.delete(t),n.callbacks.size===0&&(rs.delete(e),n.disconnect())}}function Mp(e,t){const n=new Set;for(const r of e){const s=Ip(r,t);n.add(s)}return()=>n.forEach(r=>r())}function Ap(e,t){var n;const r=e.ownerDocument;if(!ss.has(r)){const o=new AbortController,i=new Set;document.addEventListener("scroll",l=>i.forEach(c=>c(l)),{capture:!0,passive:!0,signal:o.signal}),ss.set(r,{disconnect:()=>o.abort(),listeners:i})}const{listeners:s,disconnect:a}=(n=ss.get(r))!=null?n:{};return!s||!a?()=>{}:(s.add(t),()=>{s.delete(t),s.size===0&&(a(),ss.delete(r))})}var dr,fr,gs,Xa,Tp=class{constructor(e,t,n){this.callback=t,lt(this,dr),lt(this,fr,!1),lt(this,gs),lt(this,Xa,Lu(o=>{if(!ie(this,fr)&&o.target&&"contains"in o.target&&typeof o.target.contains=="function"){for(const i of ie(this,gs))if(o.target.contains(i)){this.callback(ie(this,dr).boundingClientRect);break}}},Bu));const r=_p(e),s=Mp(r,t),a=Ap(e,ie(this,Xa));gt(this,gs,r),gt(this,dr,new Nu(e,t,n)),this.disconnect=()=>{ie(this,fr)||(gt(this,fr,!0),s(),a(),ie(this,dr).disconnect())}}};dr=new WeakMap;fr=new WeakMap;gs=new WeakMap;Xa=new WeakMap;function Ya(e){return"showPopover"in e&&"hidePopover"in e&&typeof e.showPopover=="function"&&typeof e.hidePopover=="function"}function kr(e){try{Ya(e)&&e.isConnected&&e.hasAttribute("popover")&&!e.matches(":popover-open")&&e.showPopover()}catch{}}function Ml(e){return!Ru||!e?!1:e===bn(e).scrollingElement}function zu(e){var t,n;const r=St(e),s=Ml(e)?mp(e):Us(e),a=r.visualViewport,o=Ml(e)?{height:(t=a?.height)!=null?t:r.innerHeight,width:(n=a?.width)!=null?n:r.innerWidth}:{height:e.clientHeight,width:e.clientWidth},i={current:{x:e.scrollLeft,y:e.scrollTop},max:{x:e.scrollWidth-o.width,y:e.scrollHeight-o.height}},l=i.current.y<=0,c=i.current.x<=0,u=i.current.y>=i.max.y,f=i.current.x>=i.max.x;return{rect:s,position:i,isTop:l,isLeft:c,isBottom:u,isRight:f}}function $p(e,t){const{isTop:n,isBottom:r,isLeft:s,isRight:a,position:o}=zu(e),{x:i,y:l}=t??{x:0,y:0},c=!n&&o.current.y+l>0,u=!r&&o.current.y+l<o.max.y,f=!s&&o.current.x+i>0,m=!a&&o.current.x+i<o.max.x;return{top:c,bottom:u,left:f,right:m,x:f||m,y:c||u}}var ni=class{constructor(t){this.scheduler=t,this.pending=!1,this.tasks=new Set,this.resolvers=new Set,this.flush=()=>{const{tasks:n,resolvers:r}=this;this.pending=!1,this.tasks=new Set,this.resolvers=new Set;for(const s of n)s();for(const s of r)s()}}schedule(t){return this.tasks.add(t),this.pending||(this.pending=!0,this.scheduler(this.flush)),new Promise(n=>this.resolvers.add(n))}},As=new ni(e=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()}),Rp=new ni(e=>setTimeout(e,50)),Ts=new Map,Dp=Ts.clear.bind(Ts);function Nt(e,t=!1){if(!t)return Al(e);let n=Ts.get(e);return n||(n=Al(e),Ts.set(e,n),Rp.schedule(Dp),n)}function Al(e){return St(e).getComputedStyle(e)}function Pp(e,t=Nt(e,!0)){return t.position==="fixed"||t.position==="sticky"}function Fp(e,t=Nt(e,!0)){const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const a=t[s];return typeof a=="string"?n.test(a):!1})}var Op={excludeElement:!0,escapeShadowDOM:!0};function Ka(e,t=Op){const{limit:n,excludeElement:r,escapeShadowDOM:s}=t,a=new Set;function o(i){if(n!=null&&a.size>=n||!i)return a;if(Qo(i)&&i.scrollingElement!=null&&!a.has(i.scrollingElement))return a.add(i.scrollingElement),a;if(s&&ti(i))return o(i.host);if(!hn(i))return $u(i)?o(i.parentElement):a;if(a.has(i))return a;const l=Nt(i,!0);if(r&&i===e||Fp(i,l)&&a.add(i),Pp(i,l)){const{scrollingElement:c}=i.ownerDocument;return c&&a.add(c),a}return o(i.parentNode)}return e?o(e):a}function Lp(e){const[t]=Ka(e,{limit:1});return t??null}function jn(e,t=window.frameElement){const n={x:0,y:0,scaleX:1,scaleY:1};if(!e)return n;let r=zn(e);for(;r;){if(r===t)return n;const s=Us(r),{x:a,y:o}=Bp(r,s);n.x=n.x+s.left,n.y=n.y+s.top,n.scaleX=n.scaleX*a,n.scaleY=n.scaleY*o,r=zn(r)}return n}function Bp(e,t=Us(e)){const n=Math.round(t.width),r=Math.round(t.height);if(hn(e))return{x:n/e.offsetWidth,y:r/e.offsetHeight};const s=Nt(e,!0);return{x:(parseFloat(s.width)||n)/n,y:(parseFloat(s.height)||r)/r}}function Wp(e){if(e==="none")return null;const t=e.split(" "),n=parseFloat(t[0]),r=parseFloat(t[1]);return isNaN(n)&&isNaN(r)?null:{x:isNaN(n)?r:n,y:isNaN(r)?n:r}}function ri(e){if(e==="none")return null;const[t,n,r="0"]=e.split(" "),s={x:parseFloat(t),y:parseFloat(n),z:parseInt(r,10)};return isNaN(s.x)&&isNaN(s.y)?null:{x:isNaN(s.x)?0:s.x,y:isNaN(s.y)?0:s.y,z:isNaN(s.z)?0:s.z}}function si(e){var t,n,r,s,a,o,i,l,c;const{scale:u,transform:f,translate:m}=e,d=Wp(u),h=ri(m),v=Vp(f);if(!v&&!d&&!h)return null;const y={x:(t=d?.x)!=null?t:1,y:(n=d?.y)!=null?n:1},g={x:(r=h?.x)!=null?r:0,y:(s=h?.y)!=null?s:0},b={x:(a=v?.x)!=null?a:0,y:(o=v?.y)!=null?o:0,scaleX:(i=v?.scaleX)!=null?i:1,scaleY:(l=v?.scaleY)!=null?l:1};return{x:g.x+b.x,y:g.y+b.y,z:(c=h?.z)!=null?c:0,scaleX:y.x*b.scaleX,scaleY:y.y*b.scaleY}}function Vp(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}var _t=(e=>(e[e.Idle=0]="Idle",e[e.Forward=1]="Forward",e[e.Reverse=-1]="Reverse",e))(_t||{}),Np={x:.2,y:.2},zp={x:10,y:10};function jp(e,t,n,r=25,s=Np,a=zp){const{x:o,y:i}=t,{rect:l,isTop:c,isBottom:u,isLeft:f,isRight:m}=zu(e),d=jn(e),h=Nt(e,!0),v=si(h),y=v!==null?v?.scaleX<0:!1,g=v!==null?v?.scaleY<0:!1,b=new Fr(l.left*d.scaleX+d.x,l.top*d.scaleY+d.y,l.width*d.scaleX,l.height*d.scaleY),w={x:0,y:0},_={x:0,y:0},x={height:b.height*s.y,width:b.width*s.x};return(!c||g&&!u)&&i<=b.top+x.height&&n?.y!==1&&o>=b.left-a.x&&o<=b.right+a.x?(w.y=g?1:-1,_.y=r*Math.abs((b.top+x.height-i)/x.height)):(!u||g&&!c)&&i>=b.bottom-x.height&&n?.y!==-1&&o>=b.left-a.x&&o<=b.right+a.x&&(w.y=g?-1:1,_.y=r*Math.abs((b.bottom-x.height-i)/x.height)),(!m||y&&!f)&&o>=b.right-x.width&&n?.x!==-1&&i>=b.top-a.y&&i<=b.bottom+a.y?(w.x=y?-1:1,_.x=r*Math.abs((b.right-x.width-o)/x.width)):(!f||y&&!m)&&o<=b.left+x.width&&n?.x!==1&&i>=b.top-a.y&&i<=b.bottom+a.y&&(w.x=y?1:-1,_.x=r*Math.abs((b.left+x.width-o)/x.width)),{direction:w,speed:_}}function Zp(e){return"scrollIntoViewIfNeeded"in e&&typeof e.scrollIntoViewIfNeeded=="function"}function Hp(e,t=!1){if(Zp(e)){e.scrollIntoViewIfNeeded(t);return}if(!hn(e))return e.scrollIntoView();var n=Lp(e);if(!hn(n))return;const r=Nt(n,!0),s=parseInt(r.getPropertyValue("border-top-width")),a=parseInt(r.getPropertyValue("border-left-width")),o=e.offsetTop-n.offsetTop<n.scrollTop,i=e.offsetTop-n.offsetTop+e.clientHeight-s>n.scrollTop+n.clientHeight,l=e.offsetLeft-n.offsetLeft<n.scrollLeft,c=e.offsetLeft-n.offsetLeft+e.clientWidth-a>n.scrollLeft+n.clientWidth,u=o&&!i;(o||i)&&t&&(n.scrollTop=e.offsetTop-n.offsetTop-n.clientHeight/2-s+e.clientHeight/2),(l||c)&&t&&(n.scrollLeft=e.offsetLeft-n.offsetLeft-n.clientWidth/2-a+e.clientWidth/2),(o||i||l||c)&&!t&&e.scrollIntoView(u)}function Gp(e,t,n){const{scaleX:r,scaleY:s,x:a,y:o}=t,i=e.left+a+(1-r)*parseFloat(n),l=e.top+o+(1-s)*parseFloat(n.slice(n.indexOf(" ")+1)),c=r?e.width*r:e.width,u=s?e.height*s:e.height;return{width:c,height:u,top:l,right:i+c,bottom:l+u,left:i}}function Up(e,t,n){const{scaleX:r,scaleY:s,x:a,y:o}=t,i=e.left-a-(1-r)*parseFloat(n),l=e.top-o-(1-s)*parseFloat(n.slice(n.indexOf(" ")+1)),c=r?e.width/r:e.width,u=s?e.height/s:e.height;return{width:c,height:u,top:l,right:i+c,bottom:l+u,left:i}}function Xp({element:e,keyframes:t,options:n}){return e.animate(t,n).finished}var Yp=new ni(e=>setTimeout(e,0)),yr=new Map,Kp=yr.clear.bind(yr);function qp(e){const t=e.ownerDocument;let n=yr.get(t);if(n)return n;n=t.getAnimations(),yr.set(t,n),Yp.schedule(Kp);const r=n.filter(s=>Gs(s.effect)&&s.effect.target===e);return yr.set(e,r),n}function Jp(e,t){const n=qp(e).filter(r=>{var s,a;if(Gs(r.effect)){const{target:o}=r.effect;if((a=o&&((s=t.isValidTarget)==null?void 0:s.call(t,o)))!=null?a:!0)return r.effect.getKeyframes().some(l=>{for(const c of t.properties)if(l[c])return!0})}}).map(r=>{const{effect:s,currentTime:a}=r,o=s?.getComputedTiming().duration;if(!(r.pending||r.playState==="finished")&&typeof o=="number"&&typeof a=="number"&&a<o)return r.currentTime=o,()=>{r.currentTime=a}});if(n.length>0)return()=>n.forEach(r=>r?.())}var Bt=class extends Fr{constructor(e,t={}){var n,r,s,a;const{frameTransform:o=jn(e),ignoreTransforms:i,getBoundingClientRect:l=Us}=t,c=Jp(e,{properties:["transform","translate","scale","width","height"],isValidTarget:x=>(x!==e||ei())&&x.contains(e)}),u=l(e);let{top:f,left:m,width:d,height:h}=u,v;const y=Nt(e),g=si(y),b={x:(n=g?.scaleX)!=null?n:1,y:(r=g?.scaleY)!=null?r:1},w=Qp(e,y);c?.(),g&&(v=Up(u,g,y.transformOrigin),(i||w)&&(f=v.top,m=v.left,d=v.width,h=v.height));const _={width:(s=v?.width)!=null?s:d,height:(a=v?.height)!=null?a:h};if(w&&!i&&v){const x=Gp(v,w,y.transformOrigin);f=x.top,m=x.left,d=x.width,h=x.height,b.x=w.scaleX,b.y=w.scaleY}o&&(i||(m*=o.scaleX,d*=o.scaleX,f*=o.scaleY,h*=o.scaleY),m+=o.x,f+=o.y),super(m,f,d,h),this.scale=b,this.intrinsicWidth=_.width,this.intrinsicHeight=_.height}};function Qp(e,t){var n;const r=e.getAnimations();let s=null;if(!r.length)return null;for(const a of r){if(a.playState!=="running")continue;const o=Gs(a.effect)?a.effect.getKeyframes():[],i=o[o.length-1];if(!i)continue;const{transform:l,translate:c,scale:u}=i;if(l||c||u){const f=si({transform:typeof l=="string"&&l?l:t.transform,translate:typeof c=="string"&&c?c:t.translate,scale:typeof u=="string"&&u?u:t.scale});f&&(s=s?{x:s.x+f.x,y:s.y+f.y,z:(n=s.z)!=null?n:f.z,scaleX:s.scaleX*f.scaleX,scaleY:s.scaleY*f.scaleY}:f)}}return s}function br(e){return"style"in e&&typeof e.style=="object"&&e.style!==null&&"setProperty"in e.style&&"removeProperty"in e.style&&typeof e.style.setProperty=="function"&&typeof e.style.removeProperty=="function"}var em=class{constructor(e){this.element=e,this.initial=new Map}set(e,t=""){const{element:n}=this;if(br(n))for(const[r,s]of Object.entries(e)){const a=`${t}${r}`;this.initial.has(a)||this.initial.set(a,n.style.getPropertyValue(a)),n.style.setProperty(a,typeof s=="string"?s:`${s}px`)}}remove(e,t=""){const{element:n}=this;if(br(n))for(const r of e){const s=`${t}${r}`;n.style.removeProperty(s)}}reset(){const{element:e}=this;if(br(e)){for(const[t,n]of this.initial)e.style.setProperty(t,n);e.getAttribute("style")===""&&e.removeAttribute("style")}}};function pn(e){return e?e instanceof St(e).Element||Br(e)&&e.nodeType===Node.ELEMENT_NODE:!1}function ai(e){if(!e)return!1;const{KeyboardEvent:t}=St(e.target);return e instanceof t}function tm(e){if(!e)return!1;const{PointerEvent:t}=St(e.target);return e instanceof t}function nm(e){if(!pn(e))return!1;const{tagName:t}=e;return t==="INPUT"||t==="TEXTAREA"||rm(e)}function rm(e){return e.hasAttribute("contenteditable")&&e.getAttribute("contenteditable")!=="false"}var wa={};function qa(e){const t=wa[e]==null?0:wa[e]+1;return wa[e]=t,`${e}-${t}`}var sm=({dragOperation:e,droppable:t})=>{const n=e.position.current;if(!n)return null;const{id:r}=t;if(!t.shape)return null;if(t.shape.containsPoint(n)){const s=Rt.distance(t.shape.center,n);return{id:r,value:1/s,type:Ro.PointerIntersection,priority:$o.High}}return null},am=({dragOperation:e,droppable:t})=>{const{shape:n}=e;if(!t.shape||!n?.current)return null;const r=n.current.intersectionArea(t.shape);if(r){const{position:s}=e,a=Rt.distance(t.shape.center,s.current),i=r/(n.current.area+t.shape.area-r)/a;return{id:t.id,value:i,type:Ro.ShapeIntersection,priority:$o.Normal}}return null},om=e=>{var t;return(t=sm(e))!=null?t:am(e)},im=Object.create,oi=Object.defineProperty,lm=Object.defineProperties,cm=Object.getOwnPropertyDescriptor,um=Object.getOwnPropertyDescriptors,$s=Object.getOwnPropertySymbols,ju=Object.prototype.hasOwnProperty,Zu=Object.prototype.propertyIsEnumerable,Hu=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),qn=e=>{throw TypeError(e)},Ja=(e,t,n)=>t in e?oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Er=(e,t)=>{for(var n in t||(t={}))ju.call(t,n)&&Ja(e,n,t[n]);if($s)for(var n of $s(t))Zu.call(t,n)&&Ja(e,n,t[n]);return e},ii=(e,t)=>lm(e,um(t)),Tl=(e,t)=>oi(e,"name",{value:t,configurable:!0}),Gu=(e,t)=>{var n={};for(var r in e)ju.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&$s)for(var r of $s(e))t.indexOf(r)<0&&Zu.call(e,r)&&(n[r]=e[r]);return n},Jn=e=>{var t;return[,,,im((t=e?.[Hu("metadata")])!=null?t:null)]},Uu=["class","method","getter","setter","accessor","field","value","get","set"],hr=e=>e!==void 0&&typeof e!="function"?qn("Function expected"):e,dm=(e,t,n,r,s)=>({kind:Uu[e],name:t,metadata:r,addInitializer:a=>n._?qn("Already initialized"):s.push(hr(a||null))}),wn=(e,t)=>Ja(t,Hu("metadata"),e[3]),Be=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)t&1?a[s].call(n):r=a[s].call(n,r);return r},yt=(e,t,n,r,s,a)=>{var o,i,l,c,u,f=t&7,m=!!(t&8),d=!!(t&16),h=f>3?e.length+1:f?m?1:2:0,v=Uu[f+5],y=f>3&&(e[h-1]=[]),g=e[h]||(e[h]=[]),b=f&&(!d&&!m&&(s=s.prototype),f<5&&(f>3||!d)&&cm(f<4?s:{get[n](){return Ce(this,a)},set[n](_){return rt(this,a,_)}},n));f?d&&f<4&&Tl(a,(f>2?"set ":f>1?"get ":"")+n):Tl(s,n);for(var w=r.length-1;w>=0;w--)c=dm(f,n,l={},e[3],g),f&&(c.static=m,c.private=d,u=c.access={has:d?_=>fm(s,_):_=>n in _},f^3&&(u.get=d?_=>(f^1?Ce:mn)(_,s,f^4?a:b.get):_=>_[n]),f>2&&(u.set=d?(_,x)=>rt(_,s,x,f^4?a:b.set):(_,x)=>_[n]=x)),i=(0,r[w])(f?f<4?d?a:b[v]:f>4?void 0:{get:b.get,set:b.set}:s,c),l._=1,f^4||i===void 0?hr(i)&&(f>4?y.unshift(i):f?d?a=i:b[v]=i:s=i):typeof i!="object"||i===null?qn("Object expected"):(hr(o=i.get)&&(b.get=o),hr(o=i.set)&&(b.set=o),hr(o=i.init)&&y.unshift(o));return f||wn(e,s),b&&oi(s,n,b),d?f^4?a:b:s},li=(e,t,n)=>t.has(e)||qn("Cannot "+n),fm=(e,t)=>Object(t)!==t?qn('Cannot use the "in" operator on this value'):e.has(t),Ce=(e,t,n)=>(li(e,t,"read from private field"),n?n.call(e):t.get(e)),Pe=(e,t,n)=>t.has(e)?qn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),rt=(e,t,n,r)=>(li(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),mn=(e,t,n)=>(li(e,t,"access private method"),n),$l={role:"button",roleDescription:"draggable"},hm="dnd-kit-description",pm="dnd-kit-announcement",mm={draggable:"To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item in a given direction. Press space again to drop the item in its new position, or press escape to cancel."},gm={dragstart({operation:{source:e}}){if(e)return`Picked up draggable item ${e.id}.`},dragover({operation:{source:e,target:t}}){if(!(!e||e.id===t?.id))return t?`Draggable item ${e.id} was moved over droppable target ${t.id}.`:`Draggable item ${e.id} is no longer over a droppable target.`},dragend({operation:{source:e,target:t},canceled:n}){if(e)return n?`Dragging was cancelled. Draggable item ${e.id} was dropped.`:t?`Draggable item ${e.id} was dropped over droppable target ${t.id}`:`Draggable item ${e.id} was dropped.`}};function vm(e){const t=e.tagName.toLowerCase();return["input","select","textarea","a","button"].includes(t)}function ym(e,t){const n=document.createElement("div");return n.id=e,n.style.setProperty("display","none"),n.textContent=t,n}function bm(e){const t=document.createElement("div");return t.id=e,t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),t.style.setProperty("position","fixed"),t.style.setProperty("width","1px"),t.style.setProperty("height","1px"),t.style.setProperty("margin","-1px"),t.style.setProperty("border","0"),t.style.setProperty("padding","0"),t.style.setProperty("overflow","hidden"),t.style.setProperty("clip","rect(0 0 0 0)"),t.style.setProperty("clip-path","inset(100%)"),t.style.setProperty("white-space","nowrap"),t}var wm=["dragover","dragmove"],_m=class extends ut{constructor(e,t){super(e);const{id:n,idPrefix:{description:r=hm,announcement:s=pm}={},announcements:a=gm,screenReaderInstructions:o=mm,debounce:i=500}=t??{},l=n?`${r}-${n}`:qa(r),c=n?`${s}-${n}`:qa(s);let u,f,m,d;const h=(x=d)=>{!m||!x||m?.nodeValue!==x&&(m.nodeValue=x)},v=()=>As.schedule(h),y=xm(v,i),g=Object.entries(a).map(([x,S])=>this.manager.monitor.addEventListener(x,(k,I)=>{const E=m;if(!E)return;const T=S?.(k,I);T&&E.nodeValue!==T&&(d=T,wm.includes(x)?y():(v(),y.cancel()))})),b=()=>{let x=[];u?.isConnected||(u=ym(l,o.draggable),x.push(u)),f?.isConnected||(f=bm(c),m=document.createTextNode(""),f.appendChild(m),x.push(f)),x.length>0&&document.body.append(...x)},w=new Set;function _(){for(const x of w)x()}this.registerEffect(()=>{var x;w.clear();for(const S of this.manager.registry.draggables.value){const k=(x=S.handle)!=null?x:S.element;if(k){(!u||!f)&&w.add(b),(!vm(k)||ei())&&!k.hasAttribute("tabindex")&&w.add(()=>k.setAttribute("tabindex","0")),!k.hasAttribute("role")&&k.tagName.toLowerCase()!=="button"&&w.add(()=>k.setAttribute("role",$l.role)),k.hasAttribute("aria-roledescription")||w.add(()=>k.setAttribute("aria-roledescription",$l.roleDescription)),k.hasAttribute("aria-describedby")||w.add(()=>k.setAttribute("aria-describedby",l));for(const E of["aria-pressed","aria-grabbed"]){const T=String(S.isDragging);k.getAttribute(E)!==T&&w.add(()=>k.setAttribute(E,T))}const I=String(S.disabled);k.getAttribute("aria-disabled")!==I&&w.add(()=>k.setAttribute("aria-disabled",I))}}w.size>0&&As.schedule(_)}),this.destroy=()=>{super.destroy(),u?.remove(),f?.remove(),g.forEach(x=>x())}}};function xm(e,t){let n;const r=()=>{clearTimeout(n),n=setTimeout(e,t)};return r.cancel=()=>clearTimeout(n),r}var Cm=class extends ut{constructor(e,t){super(e,t),this.manager=e;const n=Cs(()=>{var r;return bn((r=this.manager.dragOperation.source)==null?void 0:r.element)});this.destroy=Ct(()=>{var r;const{dragOperation:s}=this.manager,{cursor:a="grabbing",nonce:o}=(r=this.options)!=null?r:{};if(s.status.initialized){const i=n.value,l=i.createElement("style");return o&&l.setAttribute("nonce",o),l.textContent=`* { cursor: ${a} !important; }`,i.head.appendChild(l),()=>l.remove()}})}},Rs=new Map,Xu,Yu,Ku,qu,Qa,wr,Wt,ci,Zn,Ju,Qu,ed,td,_n=class extends(Qa=Lr,qu=[he],Ku=[Te],Yu=[Te],Xu=[Te],Qa){constructor(e){super(e),Be(Wt,5,this),Pe(this,Zn),Pe(this,wr,new Set),Pe(this,ci,Be(Wt,8,this,new Set)),Be(Wt,11,this),this.registerEffect(mn(this,Zn,Ju))}register(e){return Ce(this,wr).add(e),()=>{Ce(this,wr).delete(e)}}addRoot(e){return we(()=>{const t=new Set(this.additionalRoots);t.add(e),this.additionalRoots=t}),()=>{we(()=>{const t=new Set(this.additionalRoots);t.delete(e),this.additionalRoots=t})}}get sourceRoot(){var e;const{source:t}=this.manager.dragOperation;return Es((e=t?.element)!=null?e:null)}get targetRoot(){var e;const{target:t}=this.manager.dragOperation;return Es((e=t?.element)!=null?e:null)}get roots(){const{status:e}=this.manager.dragOperation;if(e.initializing||e.initialized){const t=[this.sourceRoot,this.targetRoot].filter(n=>n!=null);return new Set([...t,...this.additionalRoots])}return new Set}};Wt=Jn(Qa);wr=new WeakMap;ci=new WeakMap;Zn=new WeakSet;Ju=function(){const{roots:e}=this,t=[];for(const n of e)for(const r of Ce(this,wr))t.push(mn(this,Zn,Qu).call(this,n,r));return()=>{for(const n of t)n()}};Qu=function(e,t){let n=Rs.get(e);n||(n=new Map,Rs.set(e,n));let r=n.get(t);if(!r){const a=Qo(e)?mn(this,Zn,ed).call(this,e,n,t):mn(this,Zn,td).call(this,e,n,t);if(!a)return()=>{};r=a,n.set(t,r)}r.refCount++;let s=!1;return()=>{s||(s=!0,r.refCount--,r.refCount===0&&r.cleanup())}};ed=function(e,t,n){const r=e.createElement("style");r.textContent=n,e.head.prepend(r);const s=new MutationObserver(a=>{for(const o of a)for(const i of Array.from(o.removedNodes))if(i===r){e.head.prepend(r);return}});return s.observe(e.head,{childList:!0}),{refCount:0,cleanup:()=>{s.disconnect(),r.remove(),t.delete(n),t.size===0&&Rs.delete(e)}}};td=function(e,t,n){!("adoptedStyleSheets"in e&&Array.isArray(e.adoptedStyleSheets))&&process.env.NODE_ENV!=="production"&&console.error("Cannot inject styles: This browser doesn't support adoptedStyleSheets");const r=e.ownerDocument.defaultView,{CSSStyleSheet:s}=r??{};if(!s)return process.env.NODE_ENV!=="production"&&console.error("Cannot inject styles: CSSStyleSheet constructor not available"),null;const a=new s;return a.replaceSync(n),e.adoptedStyleSheets.push(a),{refCount:0,cleanup:()=>{var o;if(ti(e)&&((o=e.host)!=null&&o.isConnected)){const i=e.adoptedStyleSheets.indexOf(a);i!==-1&&e.adoptedStyleSheets.splice(i,1)}t.delete(n),t.size===0&&Rs.delete(e)}}};yt(Wt,4,"additionalRoots",qu,_n,ci);yt(Wt,2,"sourceRoot",Ku,_n);yt(Wt,2,"targetRoot",Yu,_n);yt(Wt,2,"roots",Xu,_n);wn(Wt,_n);var Wr="data-dnd-",eo=`${Wr}dropping`,Je="--dnd-",$t=`${Wr}dragging`,Ds=`${Wr}placeholder`,Sm=[$t,Ds,"popover","aria-pressed","aria-grabbing"],km=["view-transition-name"],Em=`
|
|
9
9
|
:is(:root,:host) [${$t}] {
|
|
10
10
|
position: fixed !important;
|
|
11
11
|
pointer-events: none !important;
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
display: none;
|
|
64
64
|
visibility: hidden;
|
|
65
65
|
}
|
|
66
|
-
`.replace(/\n+/g," ").replace(/\s+/g," ").trim();function Cm(e,t="hidden"){return we(()=>{const{element:n,manager:r}=e;if(!n||!r)return;const s=km(n,r.registry.droppables),a=[],o=mp(n),{remove:i}=o;return Em(s,o,a),Im(o,t),o.remove=()=>{a.forEach(l=>l()),i.call(o)},o})}function km(e,t){const n=new Map;for(const r of t)if(r.element&&(e===r.element||e.contains(r.element))){const s=`${Wr}${qa("dom-id")}`;r.element.setAttribute(s,""),n.set(r,s)}return n}function Em(e,t,n){for(const[r,s]of e){if(!r.element)continue;const a=`[${s}]`,o=t.matches(a)?t:t.querySelector(a);if(r.element.removeAttribute(s),!o)continue;const i=r.element;r.proxy=o,o.removeAttribute(s),El.set(i,o),n.push(()=>{El.delete(i),r.proxy=void 0})}}function Im(e,t="hidden"){e.setAttribute("inert","true"),e.setAttribute("tab-index","-1"),e.setAttribute("aria-hidden","true"),e.setAttribute(Ds,t)}function nd(e,t){return e===t?!0:zn(e)===zn(t)}function Rl(e){const{target:t}=e;"newState"in e&&e.newState==="closed"&&pn(t)&&t.hasAttribute("popover")&&requestAnimationFrame(()=>kr(t))}function to(e){return e.tagName==="TR"}function Mm(e,t,n){const r=new MutationObserver(s=>{let a=!1;for(const o of s){if(o.target!==e){a=!0;continue}if(o.type!=="attributes")continue;const i=o.attributeName;if(i.startsWith("aria-")||_m.includes(i))continue;const l=e.getAttribute(i);if(i==="style"){if(br(e)&&br(t)){const c=e.style;for(const u of Array.from(t.style))c.getPropertyValue(u)===""&&t.style.removeProperty(u);for(const u of Array.from(c)){if(xm.includes(u)||u.startsWith(Je))continue;const f=c.getPropertyValue(u);t.style.setProperty(u,f)}}}else l!==null?t.setAttribute(i,l):t.removeAttribute(i)}a&&n&&(t.innerHTML=e.innerHTML)});return r.observe(e,{attributes:!0,subtree:!0,childList:!0}),r}function Am(e,t,n){const r=new MutationObserver(s=>{for(const a of s)if(a.addedNodes.length!==0)for(const o of Array.from(a.addedNodes)){if(o.contains(e)&&e.nextElementSibling!==t){e.insertAdjacentElement("afterend",t),kr(n);return}if(o.contains(t)&&t.previousElementSibling!==e){t.insertAdjacentElement("beforebegin",e),kr(n);return}}});return r.observe(e.ownerDocument.body,{childList:!0,subtree:!0}),r}function Tm(e){return new ResizeObserver(()=>{var t,n;const r=new Bt(e.placeholder,{frameTransform:e.frameTransform,ignoreTransforms:!0}),s=(t=e.transformOrigin)!=null?t:{x:1,y:1},a=(e.width-r.width)*s.x+e.delta.x,o=(e.height-r.height)*s.y+e.delta.y,i=Du();if(e.styles.set({width:r.width-e.widthOffset,height:r.height-e.heightOffset,top:e.top+o+i.y,left:e.left+a+i.x},Je),(n=e.getElementMutationObserver())==null||n.takeRecords(),to(e.element)&&to(e.placeholder)){const l=Array.from(e.element.cells),c=Array.from(e.placeholder.cells);e.getSavedCellWidths()||e.setSavedCellWidths(l.map(u=>u.style.width));for(const[u,f]of l.entries()){const m=c[u];f.style.width=`${m.getBoundingClientRect().width}px`}}e.dragOperation.shape=new Bt(e.feedbackElement)})}var $m=250,Rm="ease";function Dm(e){var t,n,r,s;const{animation:a}=e;if(typeof a=="function"){const b=a({element:e.element,feedbackElement:e.feedbackElement,placeholder:e.placeholder,translate:e.translate,moved:e.moved});Promise.resolve(b).then(()=>{e.cleanup(),requestAnimationFrame(e.restoreFocus)});return}const{duration:o=$m,easing:i=Rm}=a??{};kr(e.feedbackElement);const[,l]=(t=dp(e.feedbackElement,b=>"translate"in b))!=null?t:[];l?.pause();const c=(n=e.placeholder)!=null?n:e.element,u={frameTransform:nd(e.feedbackElement,c)?null:void 0},f=new Bt(e.feedbackElement,u),m=(r=ri(Nt(e.feedbackElement).translate))!=null?r:e.translate,d=new Bt(c,u),h=Fr.delta(f,d,e.alignment),v={x:m.x-h.x,y:m.y-h.y},y=Math.round(f.intrinsicHeight)!==Math.round(d.intrinsicHeight)?{minHeight:[`${f.intrinsicHeight}px`,`${d.intrinsicHeight}px`],maxHeight:[`${f.intrinsicHeight}px`,`${d.intrinsicHeight}px`]}:{},g=Math.round(f.intrinsicWidth)!==Math.round(d.intrinsicWidth)?{minWidth:[`${f.intrinsicWidth}px`,`${d.intrinsicWidth}px`],maxWidth:[`${f.intrinsicWidth}px`,`${d.intrinsicWidth}px`]}:{};e.styles.set({transition:e.transition},Je),e.feedbackElement.setAttribute(eo,""),(s=e.getElementMutationObserver())==null||s.takeRecords(),Hp({element:e.feedbackElement,keyframes:ii(Er(Er({},y),g),{translate:[`${m.x}px ${m.y}px 0`,`${v.x}px ${v.y}px 0`]}),options:{duration:Pu(St(e.feedbackElement))?0:e.moved||e.feedbackElement!==e.element?o:0,easing:i}}).then(()=>{e.feedbackElement.removeAttribute(eo),l?.finish(),e.cleanup(),requestAnimationFrame(e.restoreFocus)})}var rd,no,Ir,ui,vs,sd,ad,Mr=class extends(no=lt,rd=[he],no){constructor(t,n){super(t,n),Pe(this,vs),Pe(this,ui,Be(Ir,8,this)),Be(Ir,11,this),this.state={initial:{},current:{}};const r=t.registry.plugins.get(_n),s=r?.register(Sm);if(s){const a=this.destroy.bind(this);this.destroy=()=>{s(),a()}}this.registerEffect(mn(this,vs,sd).bind(this,r)),this.registerEffect(mn(this,vs,ad))}};Ir=Jn(no);ui=new WeakMap;vs=new WeakSet;sd=function(e){const{overlay:t}=this;if(!t||!e)return;const n=Es(t);if(n)return e.addRoot(n)};ad=function(){var e,t,n;const{state:r,manager:s,options:a}=this,{dragOperation:o}=s,{position:i,source:l,status:c}=o;if(c.idle){r.current={},r.initial={};return}if(!l)return;const{element:u,feedback:f}=l;if(!u||f==="none"||!c.initialized||c.initializing)return;const{initial:m}=r,d=(e=this.overlay)!=null?e:u,h=jn(d),v=jn(u),y=!nd(u,d),g=new Bt(u,{frameTransform:y?v:null,ignoreTransforms:!y}),b={x:v.scaleX/h.scaleX,y:v.scaleY/h.scaleY};let{width:_,height:w,top:x,left:C}=g;y&&(_=_/b.x,w=w/b.y);const k=new qp(d),{transition:I,translate:E,boxSizing:T,paddingBlockStart:R,paddingBlockEnd:A,paddingInlineStart:M,paddingInlineEnd:$,borderInlineStartWidth:F,borderInlineEndWidth:L,borderBlockStartWidth:z,borderBlockEndWidth:q}=Nt(u),Y=f==="clone",ne=T==="content-box",G=ne?parseInt(M)+parseInt($)+parseInt(F)+parseInt(L):0,J=ne?parseInt(R)+parseInt(A)+parseInt(z)+parseInt(q):0,ae=f!=="move"&&!this.overlay?Cm(l,Y?"clone":"hidden"):null,ue=we(()=>ai(s.dragOperation.activatorEvent));if(E!=="none"){const oe=ri(E);oe&&!m.translate&&(m.translate=oe)}if(!m.transformOrigin){const oe=we(()=>i.current);m.transformOrigin={x:(oe.x-C*h.scaleX-h.x)/(_*h.scaleX),y:(oe.y-x*h.scaleY-h.y)/(w*h.scaleY)}}const{transformOrigin:de}=m,Me=x*h.scaleY+h.y,j=C*h.scaleX+h.x;if(!m.coordinates&&(m.coordinates={x:j,y:Me},b.x!==1||b.y!==1)){const{scaleX:oe,scaleY:fe}=v,{x:Ze,y:Et}=de;m.coordinates.x+=(_*oe-_)*Ze,m.coordinates.y+=(w*fe-w)*Et}m.dimensions||(m.dimensions={width:_,height:w}),m.frameTransform||(m.frameTransform=h);const U={x:m.coordinates.x-j,y:m.coordinates.y-Me},ye={width:(m.dimensions.width*m.frameTransform.scaleX-_*h.scaleX)*de.x,height:(m.dimensions.height*m.frameTransform.scaleY-w*h.scaleY)*de.y},Z={x:U.x/h.scaleX+ye.width,y:U.y/h.scaleY+ye.height},Q={left:C+Z.x,top:x+Z.y};d.setAttribute($t,"true");const ke=we(()=>o.transform),B=(t=m.translate)!=null?t:{x:0,y:0},$e=ke.x*h.scaleX+B.x,Qe=ke.y*h.scaleY+B.y,We=Du();k.set({width:_-G,height:w-J,top:Q.top+We.y,left:Q.left+We.x,translate:`${$e}px ${Qe}px 0`,transition:I?`${I}, translate 0ms linear`:"",scale:y?`${b.x} ${b.y}`:"","transform-origin":`${de.x*100}% ${de.y*100}%`},Je),ae&&(u.insertAdjacentElement("afterend",ae),a?.rootElement&&(typeof a.rootElement=="function"?a.rootElement(l):a.rootElement).appendChild(u)),Ya(d)&&(d.hasAttribute("popover")||d.setAttribute("popover","manual"),kr(d),d.addEventListener("beforetoggle",Rl));let pe,te,Ue;const at=Tm({placeholder:ae,element:u,feedbackElement:d,frameTransform:h,transformOrigin:de,width:_,height:w,top:x,left:C,widthOffset:G,heightOffset:J,delta:Z,styles:k,dragOperation:o,getElementMutationObserver:()=>pe,getSavedCellWidths:()=>Ue,setSavedCellWidths:oe=>{Ue=oe}}),_e=new Bt(d);we(()=>o.shape=_e);const Fe=St(d),Ve=oe=>{this.manager.actions.stop({event:oe})},Ye=Pu(Fe);ue&&Fe.addEventListener("resize",Ve),we(()=>l.status)==="idle"&&requestAnimationFrame(()=>l.status="dragging"),ae&&(at.observe(ae),pe=Mm(u,ae,Y),te=Am(u,ae,d));const kt=(n=s.dragOperation.source)==null?void 0:n.id,zt=()=>{var oe;if(!ue||kt==null)return;const fe=s.registry.draggables.get(kt),Ze=(oe=fe?.handle)!=null?oe:fe?.element;hn(Ze)&&Ze.focus()},X=()=>{var oe;if(pe?.disconnect(),te?.disconnect(),at.disconnect(),Fe.removeEventListener("resize",Ve),Ya(d)&&(d.removeEventListener("beforetoggle",Rl),d.removeAttribute("popover")),d.removeAttribute($t),k.reset(),Ue&&to(u)){const Ze=Array.from(u.cells);for(const[Et,It]of Ze.entries())It.style.width=(oe=Ue[Et])!=null?oe:""}l.status="idle";const fe=r.current.translate!=null;ae&&(fe||ae.parentElement!==d.parentElement)&&d.isConnected&&ae.replaceWith(d),ae?.remove()},me=a?.dropAnimation,je=this,Oe=Pr(()=>{var oe;const{transform:fe,status:Ze}=o;if(!(!fe.x&&!fe.y&&!r.current.translate)&&Ze.dragging){const Et=(oe=m.translate)!=null?oe:{x:0,y:0},It={x:fe.x/h.scaleX+Et.x,y:fe.y/h.scaleY+Et.y},Cn=r.current.translate,ft=we(()=>o.modifiers),V=we(()=>{var ee;return(ee=o.shape)==null?void 0:ee.current}),K=ue&&!Ye?"250ms cubic-bezier(0.25, 1, 0.5, 1)":"0ms linear";if(k.set({transition:`${I}, translate ${K}`,translate:`${It.x}px ${It.y}px 0`},Je),pe?.takeRecords(),V&&V!==_e&&Cn&&!ft.length){const ee=Rt.delta(It,Cn);o.shape=Fr.from(V.boundingRectangle).translate(ee.x*h.scaleX,ee.y*h.scaleY)}else o.shape=new Bt(d);r.current.translate=It}},function(){if(o.status.dropped){this.dispose(),l.status="dropping";const oe=je.dropAnimation!==void 0?je.dropAnimation:me;let fe=r.current.translate;const Ze=fe!=null;if(!fe&&u!==d&&(fe={x:0,y:0}),!fe||oe===null){X();return}s.renderer.rendering.then(()=>{Dm({element:u,feedbackElement:d,placeholder:ae,translate:fe,moved:Ze,transition:I,alignment:l.alignment,styles:k,animation:oe??void 0,getElementMutationObserver:()=>pe,cleanup:X,restoreFocus:zt})})}});return()=>{X(),Oe()}};yt(Ir,4,"overlay",rd,Mr,ui);wn(Ir,Mr);Mr.configure=yn(Mr);var ro=Mr,er=!0,Pm=!1,od,id,ld,cd,Xt,di,fi;cd=(ld=[he],wt.Forward),id=(od=[he],wt.Reverse);var Ar=class{constructor(){Pe(this,di,Be(Xt,8,this,er)),Be(Xt,11,this),Pe(this,fi,Be(Xt,12,this,er)),Be(Xt,15,this)}isLocked(e){return e===wt.Idle?!1:e==null?this[wt.Forward]===er&&this[wt.Reverse]===er:this[e]===er}unlock(e){e!==wt.Idle&&(this[e]=Pm)}};Xt=Jn(null);di=new WeakMap;fi=new WeakMap;yt(Xt,4,cd,ld,Ar,di);yt(Xt,4,id,od,Ar,fi);wn(Xt,Ar);var Fm=[wt.Forward,wt.Reverse],Dl=class{constructor(){this.x=new Ar,this.y=new Ar}isLocked(){return this.x.isLocked()&&this.y.isLocked()}},Om=class extends lt{constructor(e){super(e);const t=Dr(new Dl);let n=null;this.signal=t,xt(()=>{const{status:r}=e.dragOperation;if(!r.initialized){n=null,t.value=new Dl;return}const{delta:s}=e.dragOperation.position;if(n){const a={x:Pl(s.x,n.x),y:Pl(s.y,n.y)},o=t.peek();qt(()=>{for(const i of Vc)for(const l of Fm)a[i]===l&&o[i].unlock(l);t.value=o})}n=s})}get current(){return this.signal.peek()}};function Pl(e,t){return Math.sign(e-t)}var ud,so,Tr,hi,Gt,ao,Xs=class extends(so=Lr,ud=[he],so){constructor(e){super(e),Pe(this,hi,Be(Tr,8,this,!1)),Be(Tr,11,this),Pe(this,Gt),Pe(this,ao,()=>{if(!Se(this,Gt))return;const{element:a,by:o}=Se(this,Gt);o.y&&(a.scrollTop+=o.y),o.x&&(a.scrollLeft+=o.x)}),this.scroll=a=>{var o;if(this.disabled)return!1;const i=this.getScrollableElements();if(!i)return rt(this,Gt,void 0),!1;const{position:l}=this.manager.dragOperation,c=l?.current;if(c){const{by:u}=a??{},f=u?{x:Fl(u.x),y:Fl(u.y)}:void 0,m=f?void 0:this.scrollIntentTracker.current;if(m?.isLocked())return!1;for(const d of i){const h=Mp(d,u);if(h.x||h.y){const{speed:v,direction:y}=Vp(d,c,f);if(m)for(const g of Vc)m[g].isLocked(y[g])&&(v[g]=0,y[g]=0);if(y.x||y.y){const{x:g,y:b}=u??y,_=g*v.x,w=b*v.y;if(_||w){const x=(o=Se(this,Gt))==null?void 0:o.by;if(this.autoScrolling&&x&&(x.x&&!_||x.y&&!w))continue;return rt(this,Gt,{element:d,by:{x:_,y:w}}),As.schedule(Se(this,ao)),!0}}}}}return rt(this,Gt,void 0),!1};let t=null,n=null;const r=Ss(()=>{const{position:a,source:o}=e.dragOperation;if(!a)return null;const i=Fu(Es(o?.element),a.current);return i&&(t=i),i??t}),s=Ss(()=>{const a=r.value,{documentElement:o}=bn(a);if(!a||a===o){const{target:i}=e.dragOperation,l=i?.element;if(l){const c=Ka(l,{excludeElement:!1});return n=c,c}}if(a){const i=Ka(a,{excludeElement:!1});return this.autoScrolling&&n&&i.size<n?.size?n:(n=i,i)}return n=null,null},Sr);this.getScrollableElements=()=>s.value,this.scrollIntentTracker=new Om(e),this.destroy=e.monitor.addEventListener("dragmove",a=>{this.disabled||a.defaultPrevented||!ai(e.dragOperation.activatorEvent)||!a.by||this.scroll({by:a.by})&&a.preventDefault()})}};Tr=Jn(so);hi=new WeakMap;Gt=new WeakMap;ao=new WeakMap;yt(Tr,4,"autoScrolling",ud,Xs,hi);wn(Tr,Xs);function Fl(e){return e>0?wt.Forward:e<0?wt.Reverse:wt.Idle}var Lm=class{constructor(e){this.scheduler=e,this.pending=!1,this.tasks=new Set,this.resolvers=new Set,this.flush=()=>{const{tasks:t,resolvers:n}=this;this.pending=!1,this.tasks=new Set,this.resolvers=new Set;for(const r of t)r();for(const r of n)r()}}schedule(e){return this.tasks.add(e),this.pending||(this.pending=!0,this.scheduler(this.flush)),new Promise(t=>this.resolvers.add(t))}},Bm=new Lm(e=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()}),Wm=10,dd=class extends lt{constructor(e,t){super(e);const n=e.registry.plugins.get(Xs);if(!n)throw new Error("AutoScroller plugin depends on Scroller plugin");this.destroy=xt(()=>{if(this.disabled)return;const{position:r,status:s}=e.dragOperation;if(s.dragging)if(n.scroll()){n.autoScrolling=!0;const o=setInterval(()=>Bm.schedule(n.scroll),Wm);return()=>{clearInterval(o)}}else n.autoScrolling=!1})}},Ol={capture:!0,passive:!0},pr,Vm=class extends Lr{constructor(e){super(e),Pe(this,pr),this.handleScroll=()=>{Se(this,pr)==null&&rt(this,pr,setTimeout(()=>{this.manager.collisionObserver.forceUpdate(!1),rt(this,pr,void 0)},50))};const{dragOperation:t}=this.manager;this.destroy=xt(()=>{var n,r,s;if(t.status.dragging){const o=(s=(r=(n=t.source)==null?void 0:n.element)==null?void 0:r.ownerDocument)!=null?s:document;return o.addEventListener("scroll",this.handleScroll,Ol),()=>{o.removeEventListener("scroll",this.handleScroll,Ol)}}})}};pr=new WeakMap;var Nm=class extends lt{constructor(e,t){super(e,t),this.manager=e,this.destroy=xt(()=>{var n;const{dragOperation:r}=this.manager,{nonce:s}=(n=this.options)!=null?n:{};if(r.status.initialized){const a=document.createElement("style");return s&&a.setAttribute("nonce",s),a.textContent="* { user-select: none !important; -webkit-user-select: none !important; }",document.head.appendChild(a),_a(),document.addEventListener("selectionchange",_a,{capture:!0}),()=>{document.removeEventListener("selectionchange",_a,{capture:!0}),a.remove()}}})}};function _a(){var e;(e=document.getSelection())==null||e.removeAllRanges()}var mr=Object.freeze({offset:10,keyboardCodes:{start:["Space","Enter"],cancel:["Escape"],end:["Space","Enter","Tab"],up:["ArrowUp"],down:["ArrowDown"],left:["ArrowLeft"],right:["ArrowRight"]},preventActivation(e,t){var n;const r=(n=t.handle)!=null?n:t.element;return e.target!==r}}),Dn,Ps=class extends Wn{constructor(t,n){super(t),this.manager=t,this.options=n,Pe(this,Dn,[]),this.listeners=new Ou,this.handleSourceKeyDown=(r,s,a)=>{if(this.disabled||r.defaultPrevented||!pn(r.target)||s.disabled)return;const{keyboardCodes:o=mr.keyboardCodes,preventActivation:i=mr.preventActivation}=a??{};o.start.includes(r.code)&&this.manager.dragOperation.status.idle&&(i?.(r,s)||this.handleStart(r,s,a))}}bind(t,n=this.options){return xt(()=>{var s;const a=(s=t.handle)!=null?s:t.element,o=i=>{ai(i)&&this.handleSourceKeyDown(i,t,n)};if(a)return a.addEventListener("keydown",o),()=>{a.removeEventListener("keydown",o)}})}handleStart(t,n,r){const{element:s}=n;if(!s)throw new Error("Source draggable does not have an associated element");t.preventDefault(),t.stopImmediatePropagation(),zp(s);const{center:a}=new Bt(s);if(this.manager.actions.start({event:t,coordinates:{x:a.x,y:a.y},source:n}).signal.aborted)return this.cleanup();this.sideEffects();const i=bn(s),l=[this.listeners.bind(i,[{type:"keydown",listener:c=>this.handleKeyDown(c,n,r),options:{capture:!0}}])];Se(this,Dn).push(...l)}handleKeyDown(t,n,r){const{keyboardCodes:s=mr.keyboardCodes}=r??{};if(In(t,[...s.end,...s.cancel])){t.preventDefault();const a=In(t,s.cancel);this.handleEnd(t,a);return}In(t,s.up)?this.handleMove("up",t):In(t,s.down)&&this.handleMove("down",t),In(t,s.left)?this.handleMove("left",t):In(t,s.right)&&this.handleMove("right",t)}handleEnd(t,n){this.manager.actions.stop({event:t,canceled:n}),this.cleanup()}handleMove(t,n){var r,s;const{shape:a}=this.manager.dragOperation,o=n.shiftKey?5:1;let i={x:0,y:0},l=(s=(r=this.options)==null?void 0:r.offset)!=null?s:mr.offset;if(typeof l=="number"&&(l={x:l,y:l}),!!a){switch(t){case"up":i={x:0,y:-l.y*o};break;case"down":i={x:0,y:l.y*o};break;case"left":i={x:-l.x*o,y:0};break;case"right":i={x:l.x*o,y:0};break}(i.x||i.y)&&(n.preventDefault(),this.manager.actions.move({event:n,by:i}))}}sideEffects(){const t=this.manager.registry.plugins.get(dd);t?.disabled===!1&&(t.disable(),Se(this,Dn).push(()=>{t.enable()}))}cleanup(){Se(this,Dn).forEach(t=>t()),rt(this,Dn,[])}destroy(){this.cleanup(),this.listeners.clear()}};Dn=new WeakMap;Ps.configure=yn(Ps);Ps.defaults=mr;var zm=Ps;function In(e,t){return t.includes(e.code)}var un,jm=class extends bu{constructor(){super(...arguments),Pe(this,un)}onEvent(e){switch(e.type){case"pointerdown":rt(this,un,Nn(e));break;case"pointermove":if(!Se(this,un))return;const{x:t,y:n}=Nn(e),r={x:t-Se(this,un).x,y:n-Se(this,un).y},{tolerance:s}=this.options;if(s&&ja(r,s)){this.abort();return}ja(r,this.options.value)&&this.activate(e);break;case"pointerup":this.abort();break}}abort(){rt(this,un,void 0)}};un=new WeakMap;var Pn,dn,Zm=class extends bu{constructor(){super(...arguments),Pe(this,Pn),Pe(this,dn)}onEvent(e){switch(e.type){case"pointerdown":rt(this,dn,Nn(e)),rt(this,Pn,setTimeout(()=>this.activate(e),this.options.value));break;case"pointermove":if(!Se(this,dn))return;const{x:t,y:n}=Nn(e),r={x:t-Se(this,dn).x,y:n-Se(this,dn).y};ja(r,this.options.tolerance)&&this.abort();break;case"pointerup":this.abort();break}}abort(){Se(this,Pn)&&(clearTimeout(Se(this,Pn)),rt(this,dn,void 0),rt(this,Pn,void 0))}};Pn=new WeakMap;dn=new WeakMap;var Ot=class{};Ot.Delay=Zm;Ot.Distance=jm;var oo=Object.freeze({activationConstraints(e,t){var n;const{pointerType:r,target:s}=e;if(!(r==="mouse"&&pn(s)&&(t.handle===s||(n=t.handle)!=null&&n.contains(s))))return r==="touch"?[new Ot.Delay({value:250,tolerance:5})]:Qp(s)&&!e.defaultPrevented?[new Ot.Delay({value:200,tolerance:0})]:[new Ot.Delay({value:200,tolerance:10}),new Ot.Distance({value:5})]},preventActivation(e,t){var n;const{target:r}=e;return r===t.element||r===t.handle||!pn(r)||(n=t.handle)!=null&&n.contains(r)?!1:vp(r)}}),Fn,Fs=class extends Wn{constructor(t,n){super(t),this.manager=t,this.options=n,Pe(this,Fn,new Set),this.listeners=new Ou,this.latest={event:void 0,coordinates:void 0},this.handleMove=()=>{const{event:r,coordinates:s}=this.latest;!r||!s||this.manager.actions.move({event:r,to:s})},this.handleCancel=this.handleCancel.bind(this),this.handlePointerUp=this.handlePointerUp.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}activationConstraints(t,n,r=this.options){const{activationConstraints:s=oo.activationConstraints}=r??{};return typeof s=="function"?s(t,n):s}bind(t,n=this.options){return xt(()=>{var s;const a=new AbortController,{signal:o}=a,i=c=>{Jp(c)&&this.handlePointerDown(c,t,n)};let l=[(s=t.handle)!=null?s:t.element];n?.activatorElements&&(Array.isArray(n.activatorElements)?l=n.activatorElements:l=n.activatorElements(t));for(const c of l)c&&(Um(c.ownerDocument.defaultView),c.addEventListener("pointerdown",i,{signal:o}));return()=>a.abort()})}handlePointerDown(t,n,r){if(this.disabled||!t.isPrimary||t.button!==0||!pn(t.target)||n.disabled||Hm(t)||!this.manager.dragOperation.status.idle)return;const{preventActivation:s=oo.preventActivation}=r??{};if(s?.(t,n))return;const{target:a}=t,o=hn(a)&&a.draggable&&a.getAttribute("draggable")==="true",i=jn(n.element),{x:l,y:c}=Nn(t);this.initialCoordinates={x:l*i.scaleX+i.x,y:c*i.scaleY+i.y};const u=this.activationConstraints(t,n,r);t.sensor=this;const f=new ip(u,v=>this.handleStart(n,v));f.signal.onabort=()=>this.handleCancel(t),f.onEvent(t),this.controller=f;const m=Ua(),d=this.listeners.bind(m,[{type:"pointermove",listener:v=>this.handlePointerMove(v,n)},{type:"pointerup",listener:this.handlePointerUp,options:{capture:!0}},{type:"pointercancel",listener:this.handleCancel},{type:"dragstart",listener:o?this.handleCancel:as,options:{capture:!0}}]),h=()=>{d(),this.initialCoordinates=void 0};Se(this,Fn).add(h)}handlePointerMove(t,n){var r,s;if(((r=this.controller)==null?void 0:r.activated)===!1){(s=this.controller)==null||s.onEvent(t);return}if(this.manager.dragOperation.status.dragging){const a=Nn(t),o=jn(n.element);a.x=a.x*o.scaleX+o.x,a.y=a.y*o.scaleY+o.y,t.preventDefault(),t.stopPropagation(),this.latest.event=t,this.latest.coordinates=a,As.schedule(this.handleMove)}}handlePointerUp(t){const{status:n}=this.manager.dragOperation;if(!n.idle){t.preventDefault(),t.stopPropagation();const r=!n.initialized;this.manager.actions.stop({event:t,canceled:r})}this.cleanup()}handleKeyDown(t){t.key==="Escape"&&(t.preventDefault(),this.handleCancel(t))}handleStart(t,n){const{manager:r,initialCoordinates:s}=this;if(!s||!r.dragOperation.status.idle||n.defaultPrevented)return;if(r.actions.start({coordinates:s,event:n,source:t}).signal.aborted)return this.cleanup();n.preventDefault();const i=bn(n.target).body;i.setPointerCapture(n.pointerId);const l=pn(n.target)?[n.target,i]:i,c=this.listeners.bind(l,[{type:"touchmove",listener:as,options:{passive:!1}},{type:"click",listener:as},{type:"contextmenu",listener:as},{type:"keydown",listener:this.handleKeyDown}]);Se(this,Fn).add(c)}handleCancel(t){const{dragOperation:n}=this.manager;n.status.initialized&&this.manager.actions.stop({event:t,canceled:!0}),this.cleanup()}cleanup(){this.latest={event:void 0,coordinates:void 0},Se(this,Fn).forEach(t=>t()),Se(this,Fn).clear()}destroy(){this.cleanup(),this.listeners.clear()}};Fn=new WeakMap;Fs.configure=yn(Fs);Fs.defaults=oo;var io=Fs;function Hm(e){return"sensor"in e}function as(e){e.preventDefault()}function Gm(){}var Ll=new WeakSet;function Um(e){!e||Ll.has(e)||(e.addEventListener("touchmove",Gm,{capture:!1,passive:!1}),Ll.add(e))}var Ln={modifiers:[],plugins:[ym,dd,wm,ro,Nm],sensors:[io,zm]},pi=class extends up{constructor(e={}){const t=Lt(e.plugins,Ln.plugins),n=Lt(e.sensors,Ln.sensors),r=Lt(e.modifiers,Ln.modifiers);super(ii(Er({},e),{plugins:[Vm,Xs,_n,...t],sensors:n,modifiers:r}))}},fd,hd,pd,lo,At,mi,gi,vi,Vr=class extends(lo=Dt,pd=[he],hd=[he],fd=[he],lo){constructor(e,t){var n=e,{element:r,effects:s=()=>[],handle:a,feedback:o="default"}=n,i=Gu(n,["element","effects","handle","feedback"]);super(Er({effects:()=>[...s(),()=>{var l,c;const{manager:u}=this;if(!u)return;const m=((c=(l=this.sensors)==null?void 0:l.map(Ao))!=null?c:[...u.sensors]).map(d=>{const h=d instanceof Wn?d:u.registry.register(d.plugin),v=d instanceof Wn?void 0:d.options;return h.bind(this,v)});return function(){m.forEach(h=>h())}}]},i),t),Pe(this,mi,Be(At,8,this)),Be(At,11,this),Pe(this,gi,Be(At,12,this)),Be(At,15,this),Pe(this,vi,Be(At,16,this)),Be(At,19,this),this.element=r,this.handle=a,this.feedback=o}};At=Jn(lo);mi=new WeakMap;gi=new WeakMap;vi=new WeakMap;yt(At,4,"handle",pd,Vr,mi);yt(At,4,"element",hd,Vr,gi);yt(At,4,"feedback",fd,Vr,vi);wn(At,Vr);var md,gd,co,Yt,yi,xa,vd,yd,_r,bi,bd=class extends(co=Pt,gd=[he],md=[he],co){constructor(e,t){var n=e,{element:r,effects:s=()=>[]}=n,a=Gu(n,["element","effects"]);const{collisionDetector:o=rm}=a,i=c=>{const{manager:u,element:f}=this;if(!f||c===null){this.shape=void 0;return}if(!u)return;const m=new Bt(f),d=we(()=>this.shape);return m&&d?.equals(m)?d:(this.shape=m,m)},l=Dr(!1);super(ii(Er({},a),{collisionDetector:o,effects:()=>[...s(),()=>{const{element:c,manager:u}=this;if(!u)return;const{dragOperation:f}=u,{source:m}=f;l.value=!!(m&&f.status.initialized&&c&&!this.disabled&&this.accepts(m))},()=>{const{element:c}=this;if(l.value&&c){const u=new Ip(c,i);return()=>{u.disconnect(),this.shape=void 0}}},()=>{var c;if((c=this.manager)!=null&&c.dragOperation.status.initialized)return()=>{this.shape=void 0}}]}),t),Pe(this,_r),Pe(this,yi,Be(Yt,8,this)),Be(Yt,11,this),Pe(this,bi,Be(Yt,12,this)),Be(Yt,15,this),this.element=r,this.refreshShape=()=>i()}set element(e){rt(this,_r,e,yd)}get element(){var e;return(e=this.proxy)!=null?e:Se(this,_r,vd)}};Yt=Jn(co);yi=new WeakMap;_r=new WeakSet;bi=new WeakMap;xa=yt(Yt,20,"#element",gd,_r,yi),vd=xa.get,yd=xa.set;yt(Yt,4,"proxy",md,bd,bi);wn(Yt,bd);function Xm(e){return e!=null&&typeof e=="object"&&"current"in e}function Os(e){var t;if(e!=null)return Xm(e)?(t=e.current)!=null?t:void 0:e}var Ym=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Ys=Ym?p.useLayoutEffect:p.useEffect;function Km(){const e=p.useState(0)[1];return p.useCallback(()=>{e(t=>t+1)},[e])}function qm(e,t){const n=p.useRef(new Map),r=Km();return Ys(()=>{if(!e){n.current.clear();return}return xt(()=>{var s;let a=!1,o=!1;for(const i of n.current){const[l]=i,c=we(()=>i[1]),u=e[l];c!==u&&(a=!0,n.current.set(l,u),o=(s=t?.(l,c,u))!=null?s:!1)}a&&(o?bo.flushSync(r):r())})},[e]),p.useMemo(()=>e&&new Proxy(e,{get(s,a){const o=s[a];return n.current.set(a,o),o}}),[e])}function an(e,t,n=p.useEffect,r=Object.is){const s=p.useRef(e);n(()=>{const a=s.current;r(e,a)||(s.current=e,t(e,a))},[t,e])}function Bl(e,t){const n=p.useRef(Os(e));Ys(()=>{const r=Os(e);r!==n.current&&(n.current=r,t(r))})}var Jm=Object.defineProperty,Qm=Object.defineProperties,eg=Object.getOwnPropertyDescriptors,Wl=Object.getOwnPropertySymbols,tg=Object.prototype.hasOwnProperty,ng=Object.prototype.propertyIsEnumerable,Vl=(e,t,n)=>t in e?Jm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rg=(e,t)=>{for(var n in t||(t={}))tg.call(t,n)&&Vl(e,n,t[n]);if(Wl)for(var n of Wl(t))ng.call(t,n)&&Vl(e,n,t[n]);return e},sg=(e,t)=>Qm(e,eg(t)),ag=new pi,og=p.createContext(ag);p.memo(p.forwardRef(({children:e},t)=>{const[n,r]=p.useState(0),s=p.useRef(null),a=p.useRef(null),o=p.useMemo(()=>({renderer:{get rendering(){var i;return(i=s.current)!=null?i:Promise.resolve()}},trackRendering(i){s.current||(s.current=new Promise(l=>{a.current=l})),p.startTransition(()=>{i(),r(l=>l+1)})}}),[]);return Ys(()=>{var i;(i=a.current)==null||i.call(a),s.current=null},[e,n]),p.useImperativeHandle(t,()=>o),null}));function ig(){return p.useContext(og)}function lg(e){var t;const n=(t=ig())!=null?t:void 0,[r]=p.useState(()=>e(n));return r.manager!==n&&(r.manager=n),Ys(r.register,[n,r]),r}function Sa(e){const{disabled:t,data:n,element:r,handle:s,id:a,modifiers:o,sensors:i}=e,l=lg(u=>new Vr(sg(rg({},e),{register:!1,handle:Os(s),element:Os(r)}),u)),c=qm(l,cg);return an(a,()=>l.id=a),Bl(s,u=>l.handle=u),Bl(r,u=>l.element=u),an(n,()=>n&&(l.data=n)),an(t,()=>l.disabled=t===!0),an(i,()=>l.sensors=i),an(o,()=>l.modifiers=o,void 0,Sr),an(e.feedback,()=>{var u;return l.feedback=(u=e.feedback)!=null?u:"default"}),an(e.alignment,()=>l.alignment=e.alignment),{draggable:c,get isDragging(){return c.isDragging},get isDropping(){return c.isDropping},get isDragSource(){return c.isDragSource},handleRef:p.useCallback(u=>{l.handle=u??void 0},[l]),ref:p.useCallback(u=>{var f,m;!u&&((f=l.element)!=null&&f.isConnected)&&!((m=l.manager)!=null&&m.dragOperation.status.idle)||(l.element=u??void 0)},[l])}}function cg(e,t,n){return!!(e==="isDragSource"&&!n&&t)}var ug=Object.create,wd=Object.defineProperty,dg=Object.getOwnPropertyDescriptor,_d=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Ks=e=>{throw TypeError(e)},fg=(e,t,n)=>t in e?wd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hg=e=>{var t;return[,,,ug((t=e?.[_d("metadata")])!=null?t:null)]},xd=["class","method","getter","setter","accessor","field","value","get","set"],Sd=e=>e!==void 0&&typeof e!="function"?Ks("Function expected"):e,pg=(e,t,n,r,s)=>({kind:xd[e],name:t,metadata:r,addInitializer:a=>n._?Ks("Already initialized"):s.push(Sd(a||null))}),mg=(e,t)=>fg(t,_d("metadata"),e[3]),gg=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)a[s].call(n);return r},Cd=(e,t,n,r,s,a)=>{for(var o,i,l,c,u=t&7,f=!1,m=!1,d=2,h=xd[u+5],v=e[d]||(e[d]=[]),y=(s=s.prototype,dg(s,n)),g=r.length-1;g>=0;g--)l=pg(u,n,i={},e[3],v),l.static=f,l.private=m,c=l.access={has:b=>n in b},c.get=b=>b[n],o=(0,r[g])(y[h],l),i._=1,Sd(o)&&(y[h]=o);return y&&wd(s,n,y),s},kd=(e,t,n)=>t.has(e)||Ks("Cannot "+n),vg=(e,t,n)=>(kd(e,t,"read from private field"),t.get(e)),yg=(e,t,n)=>t.has(e)?Ks("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),bg=(e,t,n,r)=>(kd(e,t,"write to private field"),t.set(e,n),n),tr=class uo{constructor(t,n){this.x=t,this.y=n}static delta(t,n){return new uo(t.x-n.x,t.y-n.y)}static distance(t,n){return Math.hypot(t.x-n.x,t.y-n.y)}static equals(t,n){return t.x===n.x&&t.y===n.y}static from({x:t,y:n}){return new uo(t,n)}},Ed,Id,fo,ys,Nr,wi=class extends(fo=Qt,Id=[Ae],Ed=[Ae],fo){constructor(t){const n=tr.from(t);super(n,(r,s)=>tr.equals(r,s)),gg(Nr,5,this),yg(this,ys,0),this.velocity={x:0,y:0}}get delta(){return tr.delta(this.current,this.initial)}get direction(){const{current:t,previous:n}=this;if(!n)return null;const r={x:t.x-n.x,y:t.y-n.y};return!r.x&&!r.y?null:Math.abs(r.x)>Math.abs(r.y)?r.x>0?"right":"left":r.y>0?"down":"up"}get current(){return super.current}set current(t){const{current:n}=this,r=tr.from(t),s={x:r.x-n.x,y:r.y-n.y},a=Date.now(),o=a-vg(this,ys),i=l=>Math.round(l/o*100);qt(()=>{bg(this,ys,a),this.velocity={x:i(s.x),y:i(s.y)},super.current=r})}reset(t=this.defaultValue){super.reset(tr.from(t)),this.velocity={x:0,y:0}}};Nr=hg(fo);ys=new WeakMap;Cd(Nr,2,"delta",Id,wi);Cd(Nr,2,"direction",Ed,wi);mg(Nr,wi);var Md=(e=>(e.Horizontal="x",e.Vertical="y",e))(Md||{});Object.values(Md);const wg=new Map([["bold",D.createElement(D.Fragment,null,D.createElement("path",{d:"M144,128a16,16,0,1,1-16-16A16,16,0,0,1,144,128ZM60,112a16,16,0,1,0,16,16A16,16,0,0,0,60,112Zm136,0a16,16,0,1,0,16,16A16,16,0,0,0,196,112Z"}))],["duotone",D.createElement(D.Fragment,null,D.createElement("path",{d:"M240,96v64a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V96A16,16,0,0,1,32,80H224A16,16,0,0,1,240,96Z",opacity:"0.2"}),D.createElement("path",{d:"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm56-12a12,12,0,1,0,12,12A12,12,0,0,0,196,116ZM60,116a12,12,0,1,0,12,12A12,12,0,0,0,60,116Z"}))],["fill",D.createElement(D.Fragment,null,D.createElement("path",{d:"M224,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V96A16,16,0,0,0,224,80ZM60,140a12,12,0,1,1,12-12A12,12,0,0,1,60,140Zm68,0a12,12,0,1,1,12-12A12,12,0,0,1,128,140Zm68,0a12,12,0,1,1,12-12A12,12,0,0,1,196,140Z"}))],["light",D.createElement(D.Fragment,null,D.createElement("path",{d:"M138,128a10,10,0,1,1-10-10A10,10,0,0,1,138,128ZM60,118a10,10,0,1,0,10,10A10,10,0,0,0,60,118Zm136,0a10,10,0,1,0,10,10A10,10,0,0,0,196,118Z"}))],["regular",D.createElement(D.Fragment,null,D.createElement("path",{d:"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm56-12a12,12,0,1,0,12,12A12,12,0,0,0,196,116ZM60,116a12,12,0,1,0,12,12A12,12,0,0,0,60,116Z"}))],["thin",D.createElement(D.Fragment,null,D.createElement("path",{d:"M136,128a8,8,0,1,1-8-8A8,8,0,0,1,136,128Zm-76-8a8,8,0,1,0,8,8A8,8,0,0,0,60,120Zm136,0a8,8,0,1,0,8,8A8,8,0,0,0,196,120Z"}))]]),_g=new Map([["bold",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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"}))]]),xg=new Map([["bold",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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"}))]]),Sg=new Map([["bold",D.createElement(D.Fragment,null,D.createElement("path",{d:"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z"}))],["duotone",D.createElement(D.Fragment,null,D.createElement("path",{d:"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z",opacity:"0.2"}),D.createElement("path",{d:"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["fill",D.createElement(D.Fragment,null,D.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["light",D.createElement(D.Fragment,null,D.createElement("path",{d:"M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z"}))],["regular",D.createElement(D.Fragment,null,D.createElement("path",{d:"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["thin",D.createElement(D.Fragment,null,D.createElement("path",{d:"M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z"}))]]),Cg=p.createContext({color:"currentColor",size:"1em",weight:"regular",mirrored:!1}),zr=D.forwardRef((e,t)=>{const{alt:n,color:r,size:s,weight:a,mirrored:o,children:i,weights:l,...c}=e,{color:u="currentColor",size:f,weight:m="regular",mirrored:d=!1,...h}=D.useContext(Cg);return D.createElement("svg",{ref:t,xmlns:"http://www.w3.org/2000/svg",width:s??f,height:s??f,fill:r??u,viewBox:"0 0 256 256",transform:o||d?"scale(-1, 1)":void 0,...h,...c},!!n&&D.createElement("title",null,n),i,l.get(a??m))});zr.displayName="IconBase";const Ad=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:wg}));Ad.displayName="DotsThreeIcon";const Td=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:_g}));Td.displayName="SpeakerHighIcon";const $d=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:xg}));$d.displayName="SpeakerLowIcon";const Rd=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:Sg}));Rd.displayName="XIcon";const kg=Rd;P.span`
|
|
66
|
+
`.replace(/\n+/g," ").replace(/\s+/g," ").trim();function Im(e,t="hidden"){return we(()=>{const{element:n,manager:r}=e;if(!n||!r)return;const s=Mm(n,r.registry.droppables),a=[],o=yp(n),{remove:i}=o;return Am(s,o,a),Tm(o,t),o.remove=()=>{a.forEach(l=>l()),i.call(o)},o})}function Mm(e,t){const n=new Map;for(const r of t)if(r.element&&(e===r.element||e.contains(r.element))){const s=`${Wr}${qa("dom-id")}`;r.element.setAttribute(s,""),n.set(r,s)}return n}function Am(e,t,n){for(const[r,s]of e){if(!r.element)continue;const a=`[${s}]`,o=t.matches(a)?t:t.querySelector(a);if(r.element.removeAttribute(s),!o)continue;const i=r.element;r.proxy=o,o.removeAttribute(s),El.set(i,o),n.push(()=>{El.delete(i),r.proxy=void 0})}}function Tm(e,t="hidden"){e.setAttribute("inert","true"),e.setAttribute("tab-index","-1"),e.setAttribute("aria-hidden","true"),e.setAttribute(Ds,t)}function nd(e,t){return e===t?!0:zn(e)===zn(t)}function Rl(e){const{target:t}=e;"newState"in e&&e.newState==="closed"&&pn(t)&&t.hasAttribute("popover")&&requestAnimationFrame(()=>kr(t))}function to(e){return e.tagName==="TR"}function $m(e,t,n){const r=new MutationObserver(s=>{let a=!1;for(const o of s){if(o.target!==e){a=!0;continue}if(o.type!=="attributes")continue;const i=o.attributeName;if(i.startsWith("aria-")||Sm.includes(i))continue;const l=e.getAttribute(i);if(i==="style"){if(br(e)&&br(t)){const c=e.style;for(const u of Array.from(t.style))c.getPropertyValue(u)===""&&t.style.removeProperty(u);for(const u of Array.from(c)){if(km.includes(u)||u.startsWith(Je))continue;const f=c.getPropertyValue(u);t.style.setProperty(u,f)}}}else l!==null?t.setAttribute(i,l):t.removeAttribute(i)}a&&n&&(t.innerHTML=e.innerHTML)});return r.observe(e,{attributes:!0,subtree:!0,childList:!0}),r}function Rm(e,t,n){const r=new MutationObserver(s=>{for(const a of s)if(a.addedNodes.length!==0)for(const o of Array.from(a.addedNodes)){if(o.contains(e)&&e.nextElementSibling!==t){e.insertAdjacentElement("afterend",t),kr(n);return}if(o.contains(t)&&t.previousElementSibling!==e){t.insertAdjacentElement("beforebegin",e),kr(n);return}}});return r.observe(e.ownerDocument.body,{childList:!0,subtree:!0}),r}function Dm(e){return new ResizeObserver(()=>{var t,n;const r=new Bt(e.placeholder,{frameTransform:e.frameTransform,ignoreTransforms:!0}),s=(t=e.transformOrigin)!=null?t:{x:1,y:1},a=(e.width-r.width)*s.x+e.delta.x,o=(e.height-r.height)*s.y+e.delta.y,i=Du();if(e.styles.set({width:r.width-e.widthOffset,height:r.height-e.heightOffset,top:e.top+o+i.y,left:e.left+a+i.x},Je),(n=e.getElementMutationObserver())==null||n.takeRecords(),to(e.element)&&to(e.placeholder)){const l=Array.from(e.element.cells),c=Array.from(e.placeholder.cells);e.getSavedCellWidths()||e.setSavedCellWidths(l.map(u=>u.style.width));for(const[u,f]of l.entries()){const m=c[u];f.style.width=`${m.getBoundingClientRect().width}px`}}e.dragOperation.shape=new Bt(e.feedbackElement)})}var Pm=250,Fm="ease";function Om(e){var t,n,r,s;const{animation:a}=e;if(typeof a=="function"){const b=a({element:e.element,feedbackElement:e.feedbackElement,placeholder:e.placeholder,translate:e.translate,moved:e.moved});Promise.resolve(b).then(()=>{e.cleanup(),requestAnimationFrame(e.restoreFocus)});return}const{duration:o=Pm,easing:i=Fm}=a??{};kr(e.feedbackElement);const[,l]=(t=pp(e.feedbackElement,b=>"translate"in b))!=null?t:[];l?.pause();const c=(n=e.placeholder)!=null?n:e.element,u={frameTransform:nd(e.feedbackElement,c)?null:void 0},f=new Bt(e.feedbackElement,u),m=(r=ri(Nt(e.feedbackElement).translate))!=null?r:e.translate,d=new Bt(c,u),h=Fr.delta(f,d,e.alignment),v={x:m.x-h.x,y:m.y-h.y},y=Math.round(f.intrinsicHeight)!==Math.round(d.intrinsicHeight)?{minHeight:[`${f.intrinsicHeight}px`,`${d.intrinsicHeight}px`],maxHeight:[`${f.intrinsicHeight}px`,`${d.intrinsicHeight}px`]}:{},g=Math.round(f.intrinsicWidth)!==Math.round(d.intrinsicWidth)?{minWidth:[`${f.intrinsicWidth}px`,`${d.intrinsicWidth}px`],maxWidth:[`${f.intrinsicWidth}px`,`${d.intrinsicWidth}px`]}:{};e.styles.set({transition:e.transition},Je),e.feedbackElement.setAttribute(eo,""),(s=e.getElementMutationObserver())==null||s.takeRecords(),Xp({element:e.feedbackElement,keyframes:ii(Er(Er({},y),g),{translate:[`${m.x}px ${m.y}px 0`,`${v.x}px ${v.y}px 0`]}),options:{duration:Pu(St(e.feedbackElement))?0:e.moved||e.feedbackElement!==e.element?o:0,easing:i}}).then(()=>{e.feedbackElement.removeAttribute(eo),l?.finish(),e.cleanup(),requestAnimationFrame(e.restoreFocus)})}var rd,no,Ir,ui,vs,sd,ad,Mr=class extends(no=ut,rd=[he],no){constructor(t,n){super(t,n),Pe(this,vs),Pe(this,ui,Be(Ir,8,this)),Be(Ir,11,this),this.state={initial:{},current:{}};const r=t.registry.plugins.get(_n),s=r?.register(Em);if(s){const a=this.destroy.bind(this);this.destroy=()=>{s(),a()}}this.registerEffect(mn(this,vs,sd).bind(this,r)),this.registerEffect(mn(this,vs,ad))}};Ir=Jn(no);ui=new WeakMap;vs=new WeakSet;sd=function(e){const{overlay:t}=this;if(!t||!e)return;const n=Es(t);if(n)return e.addRoot(n)};ad=function(){var e,t,n;const{state:r,manager:s,options:a}=this,{dragOperation:o}=s,{position:i,source:l,status:c}=o;if(c.idle){r.current={},r.initial={};return}if(!l)return;const{element:u,feedback:f}=l;if(!u||f==="none"||!c.initialized||c.initializing)return;const{initial:m}=r,d=(e=this.overlay)!=null?e:u,h=jn(d),v=jn(u),y=!nd(u,d),g=new Bt(u,{frameTransform:y?v:null,ignoreTransforms:!y}),b={x:v.scaleX/h.scaleX,y:v.scaleY/h.scaleY};let{width:w,height:_,top:x,left:S}=g;y&&(w=w/b.x,_=_/b.y);const k=new em(d),{transition:I,translate:E,boxSizing:T,paddingBlockStart:R,paddingBlockEnd:A,paddingInlineStart:M,paddingInlineEnd:$,borderInlineStartWidth:F,borderInlineEndWidth:L,borderBlockStartWidth:z,borderBlockEndWidth:q}=Nt(u),Y=f==="clone",ne=T==="content-box",G=ne?parseInt(M)+parseInt($)+parseInt(F)+parseInt(L):0,J=ne?parseInt(R)+parseInt(A)+parseInt(z)+parseInt(q):0,ae=f!=="move"&&!this.overlay?Im(l,Y?"clone":"hidden"):null,ue=we(()=>ai(s.dragOperation.activatorEvent));if(E!=="none"){const oe=ri(E);oe&&!m.translate&&(m.translate=oe)}if(!m.transformOrigin){const oe=we(()=>i.current);m.transformOrigin={x:(oe.x-S*h.scaleX-h.x)/(w*h.scaleX),y:(oe.y-x*h.scaleY-h.y)/(_*h.scaleY)}}const{transformOrigin:de}=m,Ae=x*h.scaleY+h.y,j=S*h.scaleX+h.x;if(!m.coordinates&&(m.coordinates={x:j,y:Ae},b.x!==1||b.y!==1)){const{scaleX:oe,scaleY:fe}=v,{x:Ze,y:Et}=de;m.coordinates.x+=(w*oe-w)*Ze,m.coordinates.y+=(_*fe-_)*Et}m.dimensions||(m.dimensions={width:w,height:_}),m.frameTransform||(m.frameTransform=h);const U={x:m.coordinates.x-j,y:m.coordinates.y-Ae},ye={width:(m.dimensions.width*m.frameTransform.scaleX-w*h.scaleX)*de.x,height:(m.dimensions.height*m.frameTransform.scaleY-_*h.scaleY)*de.y},Z={x:U.x/h.scaleX+ye.width,y:U.y/h.scaleY+ye.height},Q={left:S+Z.x,top:x+Z.y};d.setAttribute($t,"true");const Ee=we(()=>o.transform),B=(t=m.translate)!=null?t:{x:0,y:0},$e=Ee.x*h.scaleX+B.x,Qe=Ee.y*h.scaleY+B.y,We=Du();k.set({width:w-G,height:_-J,top:Q.top+We.y,left:Q.left+We.x,translate:`${$e}px ${Qe}px 0`,transition:I?`${I}, translate 0ms linear`:"",scale:y?`${b.x} ${b.y}`:"","transform-origin":`${de.x*100}% ${de.y*100}%`},Je),ae&&(u.insertAdjacentElement("afterend",ae),a?.rootElement&&(typeof a.rootElement=="function"?a.rootElement(l):a.rootElement).appendChild(u)),Ya(d)&&(d.hasAttribute("popover")||d.setAttribute("popover","manual"),kr(d),d.addEventListener("beforetoggle",Rl));let pe,te,Ue;const it=Dm({placeholder:ae,element:u,feedbackElement:d,frameTransform:h,transformOrigin:de,width:w,height:_,top:x,left:S,widthOffset:G,heightOffset:J,delta:Z,styles:k,dragOperation:o,getElementMutationObserver:()=>pe,getSavedCellWidths:()=>Ue,setSavedCellWidths:oe=>{Ue=oe}}),_e=new Bt(d);we(()=>o.shape=_e);const Fe=St(d),Ve=oe=>{this.manager.actions.stop({event:oe})},Ye=Pu(Fe);ue&&Fe.addEventListener("resize",Ve),we(()=>l.status)==="idle"&&requestAnimationFrame(()=>l.status="dragging"),ae&&(it.observe(ae),pe=$m(u,ae,Y),te=Rm(u,ae,d));const kt=(n=s.dragOperation.source)==null?void 0:n.id,zt=()=>{var oe;if(!ue||kt==null)return;const fe=s.registry.draggables.get(kt),Ze=(oe=fe?.handle)!=null?oe:fe?.element;hn(Ze)&&Ze.focus()},X=()=>{var oe;if(pe?.disconnect(),te?.disconnect(),it.disconnect(),Fe.removeEventListener("resize",Ve),Ya(d)&&(d.removeEventListener("beforetoggle",Rl),d.removeAttribute("popover")),d.removeAttribute($t),k.reset(),Ue&&to(u)){const Ze=Array.from(u.cells);for(const[Et,It]of Ze.entries())It.style.width=(oe=Ue[Et])!=null?oe:""}l.status="idle";const fe=r.current.translate!=null;ae&&(fe||ae.parentElement!==d.parentElement)&&d.isConnected&&ae.replaceWith(d),ae?.remove()},me=a?.dropAnimation,je=this,Oe=Pr(()=>{var oe;const{transform:fe,status:Ze}=o;if(!(!fe.x&&!fe.y&&!r.current.translate)&&Ze.dragging){const Et=(oe=m.translate)!=null?oe:{x:0,y:0},It={x:fe.x/h.scaleX+Et.x,y:fe.y/h.scaleY+Et.y},Sn=r.current.translate,ft=we(()=>o.modifiers),V=we(()=>{var ee;return(ee=o.shape)==null?void 0:ee.current}),K=ue&&!Ye?"250ms cubic-bezier(0.25, 1, 0.5, 1)":"0ms linear";if(k.set({transition:`${I}, translate ${K}`,translate:`${It.x}px ${It.y}px 0`},Je),pe?.takeRecords(),V&&V!==_e&&Sn&&!ft.length){const ee=Rt.delta(It,Sn);o.shape=Fr.from(V.boundingRectangle).translate(ee.x*h.scaleX,ee.y*h.scaleY)}else o.shape=new Bt(d);r.current.translate=It}},function(){if(o.status.dropped){this.dispose(),l.status="dropping";const oe=je.dropAnimation!==void 0?je.dropAnimation:me;let fe=r.current.translate;const Ze=fe!=null;if(!fe&&u!==d&&(fe={x:0,y:0}),!fe||oe===null){X();return}s.renderer.rendering.then(()=>{Om({element:u,feedbackElement:d,placeholder:ae,translate:fe,moved:Ze,transition:I,alignment:l.alignment,styles:k,animation:oe??void 0,getElementMutationObserver:()=>pe,cleanup:X,restoreFocus:zt})})}});return()=>{X(),Oe()}};yt(Ir,4,"overlay",rd,Mr,ui);wn(Ir,Mr);Mr.configure=yn(Mr);var ro=Mr,er=!0,Lm=!1,od,id,ld,cd,Xt,di,fi;cd=(ld=[he],_t.Forward),id=(od=[he],_t.Reverse);var Ar=class{constructor(){Pe(this,di,Be(Xt,8,this,er)),Be(Xt,11,this),Pe(this,fi,Be(Xt,12,this,er)),Be(Xt,15,this)}isLocked(e){return e===_t.Idle?!1:e==null?this[_t.Forward]===er&&this[_t.Reverse]===er:this[e]===er}unlock(e){e!==_t.Idle&&(this[e]=Lm)}};Xt=Jn(null);di=new WeakMap;fi=new WeakMap;yt(Xt,4,cd,ld,Ar,di);yt(Xt,4,id,od,Ar,fi);wn(Xt,Ar);var Bm=[_t.Forward,_t.Reverse],Dl=class{constructor(){this.x=new Ar,this.y=new Ar}isLocked(){return this.x.isLocked()&&this.y.isLocked()}},Wm=class extends ut{constructor(e){super(e);const t=Dr(new Dl);let n=null;this.signal=t,Ct(()=>{const{status:r}=e.dragOperation;if(!r.initialized){n=null,t.value=new Dl;return}const{delta:s}=e.dragOperation.position;if(n){const a={x:Pl(s.x,n.x),y:Pl(s.y,n.y)},o=t.peek();qt(()=>{for(const i of Vc)for(const l of Bm)a[i]===l&&o[i].unlock(l);t.value=o})}n=s})}get current(){return this.signal.peek()}};function Pl(e,t){return Math.sign(e-t)}var ud,so,Tr,hi,Gt,ao,Xs=class extends(so=Lr,ud=[he],so){constructor(e){super(e),Pe(this,hi,Be(Tr,8,this,!1)),Be(Tr,11,this),Pe(this,Gt),Pe(this,ao,()=>{if(!Ce(this,Gt))return;const{element:a,by:o}=Ce(this,Gt);o.y&&(a.scrollTop+=o.y),o.x&&(a.scrollLeft+=o.x)}),this.scroll=a=>{var o;if(this.disabled)return!1;const i=this.getScrollableElements();if(!i)return rt(this,Gt,void 0),!1;const{position:l}=this.manager.dragOperation,c=l?.current;if(c){const{by:u}=a??{},f=u?{x:Fl(u.x),y:Fl(u.y)}:void 0,m=f?void 0:this.scrollIntentTracker.current;if(m?.isLocked())return!1;for(const d of i){const h=$p(d,u);if(h.x||h.y){const{speed:v,direction:y}=jp(d,c,f);if(m)for(const g of Vc)m[g].isLocked(y[g])&&(v[g]=0,y[g]=0);if(y.x||y.y){const{x:g,y:b}=u??y,w=g*v.x,_=b*v.y;if(w||_){const x=(o=Ce(this,Gt))==null?void 0:o.by;if(this.autoScrolling&&x&&(x.x&&!w||x.y&&!_))continue;return rt(this,Gt,{element:d,by:{x:w,y:_}}),As.schedule(Ce(this,ao)),!0}}}}}return rt(this,Gt,void 0),!1};let t=null,n=null;const r=Cs(()=>{const{position:a,source:o}=e.dragOperation;if(!a)return null;const i=Fu(Es(o?.element),a.current);return i&&(t=i),i??t}),s=Cs(()=>{const a=r.value,{documentElement:o}=bn(a);if(!a||a===o){const{target:i}=e.dragOperation,l=i?.element;if(l){const c=Ka(l,{excludeElement:!1});return n=c,c}}if(a){const i=Ka(a,{excludeElement:!1});return this.autoScrolling&&n&&i.size<n?.size?n:(n=i,i)}return n=null,null},Cr);this.getScrollableElements=()=>s.value,this.scrollIntentTracker=new Wm(e),this.destroy=e.monitor.addEventListener("dragmove",a=>{this.disabled||a.defaultPrevented||!ai(e.dragOperation.activatorEvent)||!a.by||this.scroll({by:a.by})&&a.preventDefault()})}};Tr=Jn(so);hi=new WeakMap;Gt=new WeakMap;ao=new WeakMap;yt(Tr,4,"autoScrolling",ud,Xs,hi);wn(Tr,Xs);function Fl(e){return e>0?_t.Forward:e<0?_t.Reverse:_t.Idle}var Vm=class{constructor(e){this.scheduler=e,this.pending=!1,this.tasks=new Set,this.resolvers=new Set,this.flush=()=>{const{tasks:t,resolvers:n}=this;this.pending=!1,this.tasks=new Set,this.resolvers=new Set;for(const r of t)r();for(const r of n)r()}}schedule(e){return this.tasks.add(e),this.pending||(this.pending=!0,this.scheduler(this.flush)),new Promise(t=>this.resolvers.add(t))}},Nm=new Vm(e=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()}),zm=10,dd=class extends ut{constructor(e,t){super(e);const n=e.registry.plugins.get(Xs);if(!n)throw new Error("AutoScroller plugin depends on Scroller plugin");this.destroy=Ct(()=>{if(this.disabled)return;const{position:r,status:s}=e.dragOperation;if(s.dragging)if(n.scroll()){n.autoScrolling=!0;const o=setInterval(()=>Nm.schedule(n.scroll),zm);return()=>{clearInterval(o)}}else n.autoScrolling=!1})}},Ol={capture:!0,passive:!0},pr,jm=class extends Lr{constructor(e){super(e),Pe(this,pr),this.handleScroll=()=>{Ce(this,pr)==null&&rt(this,pr,setTimeout(()=>{this.manager.collisionObserver.forceUpdate(!1),rt(this,pr,void 0)},50))};const{dragOperation:t}=this.manager;this.destroy=Ct(()=>{var n,r,s;if(t.status.dragging){const o=(s=(r=(n=t.source)==null?void 0:n.element)==null?void 0:r.ownerDocument)!=null?s:document;return o.addEventListener("scroll",this.handleScroll,Ol),()=>{o.removeEventListener("scroll",this.handleScroll,Ol)}}})}};pr=new WeakMap;var Zm=class extends ut{constructor(e,t){super(e,t),this.manager=e,this.destroy=Ct(()=>{var n;const{dragOperation:r}=this.manager,{nonce:s}=(n=this.options)!=null?n:{};if(r.status.initialized){const a=document.createElement("style");return s&&a.setAttribute("nonce",s),a.textContent="* { user-select: none !important; -webkit-user-select: none !important; }",document.head.appendChild(a),_a(),document.addEventListener("selectionchange",_a,{capture:!0}),()=>{document.removeEventListener("selectionchange",_a,{capture:!0}),a.remove()}}})}};function _a(){var e;(e=document.getSelection())==null||e.removeAllRanges()}var mr=Object.freeze({offset:10,keyboardCodes:{start:["Space","Enter"],cancel:["Escape"],end:["Space","Enter","Tab"],up:["ArrowUp"],down:["ArrowDown"],left:["ArrowLeft"],right:["ArrowRight"]},preventActivation(e,t){var n;const r=(n=t.handle)!=null?n:t.element;return e.target!==r}}),Dn,Ps=class extends Wn{constructor(t,n){super(t),this.manager=t,this.options=n,Pe(this,Dn,[]),this.listeners=new Ou,this.handleSourceKeyDown=(r,s,a)=>{if(this.disabled||r.defaultPrevented||!pn(r.target)||s.disabled)return;const{keyboardCodes:o=mr.keyboardCodes,preventActivation:i=mr.preventActivation}=a??{};o.start.includes(r.code)&&this.manager.dragOperation.status.idle&&(i?.(r,s)||this.handleStart(r,s,a))}}bind(t,n=this.options){return Ct(()=>{var s;const a=(s=t.handle)!=null?s:t.element,o=i=>{ai(i)&&this.handleSourceKeyDown(i,t,n)};if(a)return a.addEventListener("keydown",o),()=>{a.removeEventListener("keydown",o)}})}handleStart(t,n,r){const{element:s}=n;if(!s)throw new Error("Source draggable does not have an associated element");t.preventDefault(),t.stopImmediatePropagation(),Hp(s);const{center:a}=new Bt(s);if(this.manager.actions.start({event:t,coordinates:{x:a.x,y:a.y},source:n}).signal.aborted)return this.cleanup();this.sideEffects();const i=bn(s),l=[this.listeners.bind(i,[{type:"keydown",listener:c=>this.handleKeyDown(c,n,r),options:{capture:!0}}])];Ce(this,Dn).push(...l)}handleKeyDown(t,n,r){const{keyboardCodes:s=mr.keyboardCodes}=r??{};if(In(t,[...s.end,...s.cancel])){t.preventDefault();const a=In(t,s.cancel);this.handleEnd(t,a);return}In(t,s.up)?this.handleMove("up",t):In(t,s.down)&&this.handleMove("down",t),In(t,s.left)?this.handleMove("left",t):In(t,s.right)&&this.handleMove("right",t)}handleEnd(t,n){this.manager.actions.stop({event:t,canceled:n}),this.cleanup()}handleMove(t,n){var r,s;const{shape:a}=this.manager.dragOperation,o=n.shiftKey?5:1;let i={x:0,y:0},l=(s=(r=this.options)==null?void 0:r.offset)!=null?s:mr.offset;if(typeof l=="number"&&(l={x:l,y:l}),!!a){switch(t){case"up":i={x:0,y:-l.y*o};break;case"down":i={x:0,y:l.y*o};break;case"left":i={x:-l.x*o,y:0};break;case"right":i={x:l.x*o,y:0};break}(i.x||i.y)&&(n.preventDefault(),this.manager.actions.move({event:n,by:i}))}}sideEffects(){const t=this.manager.registry.plugins.get(dd);t?.disabled===!1&&(t.disable(),Ce(this,Dn).push(()=>{t.enable()}))}cleanup(){Ce(this,Dn).forEach(t=>t()),rt(this,Dn,[])}destroy(){this.cleanup(),this.listeners.clear()}};Dn=new WeakMap;Ps.configure=yn(Ps);Ps.defaults=mr;var Hm=Ps;function In(e,t){return t.includes(e.code)}var un,Gm=class extends bu{constructor(){super(...arguments),Pe(this,un)}onEvent(e){switch(e.type){case"pointerdown":rt(this,un,Nn(e));break;case"pointermove":if(!Ce(this,un))return;const{x:t,y:n}=Nn(e),r={x:t-Ce(this,un).x,y:n-Ce(this,un).y},{tolerance:s}=this.options;if(s&&ja(r,s)){this.abort();return}ja(r,this.options.value)&&this.activate(e);break;case"pointerup":this.abort();break}}abort(){rt(this,un,void 0)}};un=new WeakMap;var Pn,dn,Um=class extends bu{constructor(){super(...arguments),Pe(this,Pn),Pe(this,dn)}onEvent(e){switch(e.type){case"pointerdown":rt(this,dn,Nn(e)),rt(this,Pn,setTimeout(()=>this.activate(e),this.options.value));break;case"pointermove":if(!Ce(this,dn))return;const{x:t,y:n}=Nn(e),r={x:t-Ce(this,dn).x,y:n-Ce(this,dn).y};ja(r,this.options.tolerance)&&this.abort();break;case"pointerup":this.abort();break}}abort(){Ce(this,Pn)&&(clearTimeout(Ce(this,Pn)),rt(this,dn,void 0),rt(this,Pn,void 0))}};Pn=new WeakMap;dn=new WeakMap;var Ot=class{};Ot.Delay=Um;Ot.Distance=Gm;var oo=Object.freeze({activationConstraints(e,t){var n;const{pointerType:r,target:s}=e;if(!(r==="mouse"&&pn(s)&&(t.handle===s||(n=t.handle)!=null&&n.contains(s))))return r==="touch"?[new Ot.Delay({value:250,tolerance:5})]:nm(s)&&!e.defaultPrevented?[new Ot.Delay({value:200,tolerance:0})]:[new Ot.Delay({value:200,tolerance:10}),new Ot.Distance({value:5})]},preventActivation(e,t){var n;const{target:r}=e;return r===t.element||r===t.handle||!pn(r)||(n=t.handle)!=null&&n.contains(r)?!1:wp(r)}}),Fn,Fs=class extends Wn{constructor(t,n){super(t),this.manager=t,this.options=n,Pe(this,Fn,new Set),this.listeners=new Ou,this.latest={event:void 0,coordinates:void 0},this.handleMove=()=>{const{event:r,coordinates:s}=this.latest;!r||!s||this.manager.actions.move({event:r,to:s})},this.handleCancel=this.handleCancel.bind(this),this.handlePointerUp=this.handlePointerUp.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}activationConstraints(t,n,r=this.options){const{activationConstraints:s=oo.activationConstraints}=r??{};return typeof s=="function"?s(t,n):s}bind(t,n=this.options){return Ct(()=>{var s;const a=new AbortController,{signal:o}=a,i=c=>{tm(c)&&this.handlePointerDown(c,t,n)};let l=[(s=t.handle)!=null?s:t.element];n?.activatorElements&&(Array.isArray(n.activatorElements)?l=n.activatorElements:l=n.activatorElements(t));for(const c of l)c&&(Km(c.ownerDocument.defaultView),c.addEventListener("pointerdown",i,{signal:o}));return()=>a.abort()})}handlePointerDown(t,n,r){if(this.disabled||!t.isPrimary||t.button!==0||!pn(t.target)||n.disabled||Xm(t)||!this.manager.dragOperation.status.idle)return;const{preventActivation:s=oo.preventActivation}=r??{};if(s?.(t,n))return;const{target:a}=t,o=hn(a)&&a.draggable&&a.getAttribute("draggable")==="true",i=jn(n.element),{x:l,y:c}=Nn(t);this.initialCoordinates={x:l*i.scaleX+i.x,y:c*i.scaleY+i.y};const u=this.activationConstraints(t,n,r);t.sensor=this;const f=new up(u,v=>this.handleStart(n,v));f.signal.onabort=()=>this.handleCancel(t),f.onEvent(t),this.controller=f;const m=Ua(),d=this.listeners.bind(m,[{type:"pointermove",listener:v=>this.handlePointerMove(v,n)},{type:"pointerup",listener:this.handlePointerUp,options:{capture:!0}},{type:"pointercancel",listener:this.handleCancel},{type:"dragstart",listener:o?this.handleCancel:as,options:{capture:!0}}]),h=()=>{d(),this.initialCoordinates=void 0};Ce(this,Fn).add(h)}handlePointerMove(t,n){var r,s;if(((r=this.controller)==null?void 0:r.activated)===!1){(s=this.controller)==null||s.onEvent(t);return}if(this.manager.dragOperation.status.dragging){const a=Nn(t),o=jn(n.element);a.x=a.x*o.scaleX+o.x,a.y=a.y*o.scaleY+o.y,t.preventDefault(),t.stopPropagation(),this.latest.event=t,this.latest.coordinates=a,As.schedule(this.handleMove)}}handlePointerUp(t){const{status:n}=this.manager.dragOperation;if(!n.idle){t.preventDefault(),t.stopPropagation();const r=!n.initialized;this.manager.actions.stop({event:t,canceled:r})}this.cleanup()}handleKeyDown(t){t.key==="Escape"&&(t.preventDefault(),this.handleCancel(t))}handleStart(t,n){const{manager:r,initialCoordinates:s}=this;if(!s||!r.dragOperation.status.idle||n.defaultPrevented)return;if(r.actions.start({coordinates:s,event:n,source:t}).signal.aborted)return this.cleanup();n.preventDefault();const i=bn(n.target).body;i.setPointerCapture(n.pointerId);const l=pn(n.target)?[n.target,i]:i,c=this.listeners.bind(l,[{type:"touchmove",listener:as,options:{passive:!1}},{type:"click",listener:as},{type:"contextmenu",listener:as},{type:"keydown",listener:this.handleKeyDown}]);Ce(this,Fn).add(c)}handleCancel(t){const{dragOperation:n}=this.manager;n.status.initialized&&this.manager.actions.stop({event:t,canceled:!0}),this.cleanup()}cleanup(){this.latest={event:void 0,coordinates:void 0},Ce(this,Fn).forEach(t=>t()),Ce(this,Fn).clear()}destroy(){this.cleanup(),this.listeners.clear()}};Fn=new WeakMap;Fs.configure=yn(Fs);Fs.defaults=oo;var io=Fs;function Xm(e){return"sensor"in e}function as(e){e.preventDefault()}function Ym(){}var Ll=new WeakSet;function Km(e){!e||Ll.has(e)||(e.addEventListener("touchmove",Ym,{capture:!1,passive:!1}),Ll.add(e))}var Ln={modifiers:[],plugins:[_m,dd,Cm,ro,Zm],sensors:[io,Hm]},pi=class extends hp{constructor(e={}){const t=Lt(e.plugins,Ln.plugins),n=Lt(e.sensors,Ln.sensors),r=Lt(e.modifiers,Ln.modifiers);super(ii(Er({},e),{plugins:[jm,Xs,_n,...t],sensors:n,modifiers:r}))}},fd,hd,pd,lo,At,mi,gi,vi,Vr=class extends(lo=Dt,pd=[he],hd=[he],fd=[he],lo){constructor(e,t){var n=e,{element:r,effects:s=()=>[],handle:a,feedback:o="default"}=n,i=Gu(n,["element","effects","handle","feedback"]);super(Er({effects:()=>[...s(),()=>{var l,c;const{manager:u}=this;if(!u)return;const m=((c=(l=this.sensors)==null?void 0:l.map(Ao))!=null?c:[...u.sensors]).map(d=>{const h=d instanceof Wn?d:u.registry.register(d.plugin),v=d instanceof Wn?void 0:d.options;return h.bind(this,v)});return function(){m.forEach(h=>h())}}]},i),t),Pe(this,mi,Be(At,8,this)),Be(At,11,this),Pe(this,gi,Be(At,12,this)),Be(At,15,this),Pe(this,vi,Be(At,16,this)),Be(At,19,this),this.element=r,this.handle=a,this.feedback=o}};At=Jn(lo);mi=new WeakMap;gi=new WeakMap;vi=new WeakMap;yt(At,4,"handle",pd,Vr,mi);yt(At,4,"element",hd,Vr,gi);yt(At,4,"feedback",fd,Vr,vi);wn(At,Vr);var md,gd,co,Yt,yi,xa,vd,yd,_r,bi,bd=class extends(co=Pt,gd=[he],md=[he],co){constructor(e,t){var n=e,{element:r,effects:s=()=>[]}=n,a=Gu(n,["element","effects"]);const{collisionDetector:o=om}=a,i=c=>{const{manager:u,element:f}=this;if(!f||c===null){this.shape=void 0;return}if(!u)return;const m=new Bt(f),d=we(()=>this.shape);return m&&d?.equals(m)?d:(this.shape=m,m)},l=Dr(!1);super(ii(Er({},a),{collisionDetector:o,effects:()=>[...s(),()=>{const{element:c,manager:u}=this;if(!u)return;const{dragOperation:f}=u,{source:m}=f;l.value=!!(m&&f.status.initialized&&c&&!this.disabled&&this.accepts(m))},()=>{const{element:c}=this;if(l.value&&c){const u=new Tp(c,i);return()=>{u.disconnect(),this.shape=void 0}}},()=>{var c;if((c=this.manager)!=null&&c.dragOperation.status.initialized)return()=>{this.shape=void 0}}]}),t),Pe(this,_r),Pe(this,yi,Be(Yt,8,this)),Be(Yt,11,this),Pe(this,bi,Be(Yt,12,this)),Be(Yt,15,this),this.element=r,this.refreshShape=()=>i()}set element(e){rt(this,_r,e,yd)}get element(){var e;return(e=this.proxy)!=null?e:Ce(this,_r,vd)}};Yt=Jn(co);yi=new WeakMap;_r=new WeakSet;bi=new WeakMap;xa=yt(Yt,20,"#element",gd,_r,yi),vd=xa.get,yd=xa.set;yt(Yt,4,"proxy",md,bd,bi);wn(Yt,bd);function qm(e){return e!=null&&typeof e=="object"&&"current"in e}function Os(e){var t;if(e!=null)return qm(e)?(t=e.current)!=null?t:void 0:e}var Jm=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Ys=Jm?p.useLayoutEffect:p.useEffect;function Qm(){const e=p.useState(0)[1];return p.useCallback(()=>{e(t=>t+1)},[e])}function eg(e,t){const n=p.useRef(new Map),r=Qm();return Ys(()=>{if(!e){n.current.clear();return}return Ct(()=>{var s;let a=!1,o=!1;for(const i of n.current){const[l]=i,c=we(()=>i[1]),u=e[l];c!==u&&(a=!0,n.current.set(l,u),o=(s=t?.(l,c,u))!=null?s:!1)}a&&(o?bo.flushSync(r):r())})},[e]),p.useMemo(()=>e&&new Proxy(e,{get(s,a){const o=s[a];return n.current.set(a,o),o}}),[e])}function an(e,t,n=p.useEffect,r=Object.is){const s=p.useRef(e);n(()=>{const a=s.current;r(e,a)||(s.current=e,t(e,a))},[t,e])}function Bl(e,t){const n=p.useRef(Os(e));Ys(()=>{const r=Os(e);r!==n.current&&(n.current=r,t(r))})}var tg=Object.defineProperty,ng=Object.defineProperties,rg=Object.getOwnPropertyDescriptors,Wl=Object.getOwnPropertySymbols,sg=Object.prototype.hasOwnProperty,ag=Object.prototype.propertyIsEnumerable,Vl=(e,t,n)=>t in e?tg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,og=(e,t)=>{for(var n in t||(t={}))sg.call(t,n)&&Vl(e,n,t[n]);if(Wl)for(var n of Wl(t))ag.call(t,n)&&Vl(e,n,t[n]);return e},ig=(e,t)=>ng(e,rg(t)),lg=new pi,cg=p.createContext(lg);p.memo(p.forwardRef(({children:e},t)=>{const[n,r]=p.useState(0),s=p.useRef(null),a=p.useRef(null),o=p.useMemo(()=>({renderer:{get rendering(){var i;return(i=s.current)!=null?i:Promise.resolve()}},trackRendering(i){s.current||(s.current=new Promise(l=>{a.current=l})),p.startTransition(()=>{i(),r(l=>l+1)})}}),[]);return Ys(()=>{var i;(i=a.current)==null||i.call(a),s.current=null},[e,n]),p.useImperativeHandle(t,()=>o),null}));function ug(){return p.useContext(cg)}function dg(e){var t;const n=(t=ug())!=null?t:void 0,[r]=p.useState(()=>e(n));return r.manager!==n&&(r.manager=n),Ys(r.register,[n,r]),r}function Ca(e){const{disabled:t,data:n,element:r,handle:s,id:a,modifiers:o,sensors:i}=e,l=dg(u=>new Vr(ig(og({},e),{register:!1,handle:Os(s),element:Os(r)}),u)),c=eg(l,fg);return an(a,()=>l.id=a),Bl(s,u=>l.handle=u),Bl(r,u=>l.element=u),an(n,()=>n&&(l.data=n)),an(t,()=>l.disabled=t===!0),an(i,()=>l.sensors=i),an(o,()=>l.modifiers=o,void 0,Cr),an(e.feedback,()=>{var u;return l.feedback=(u=e.feedback)!=null?u:"default"}),an(e.alignment,()=>l.alignment=e.alignment),{draggable:c,get isDragging(){return c.isDragging},get isDropping(){return c.isDropping},get isDragSource(){return c.isDragSource},handleRef:p.useCallback(u=>{l.handle=u??void 0},[l]),ref:p.useCallback(u=>{var f,m;!u&&((f=l.element)!=null&&f.isConnected)&&!((m=l.manager)!=null&&m.dragOperation.status.idle)||(l.element=u??void 0)},[l])}}function fg(e,t,n){return!!(e==="isDragSource"&&!n&&t)}var hg=Object.create,wd=Object.defineProperty,pg=Object.getOwnPropertyDescriptor,_d=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),Ks=e=>{throw TypeError(e)},mg=(e,t,n)=>t in e?wd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gg=e=>{var t;return[,,,hg((t=e?.[_d("metadata")])!=null?t:null)]},xd=["class","method","getter","setter","accessor","field","value","get","set"],Cd=e=>e!==void 0&&typeof e!="function"?Ks("Function expected"):e,vg=(e,t,n,r,s)=>({kind:xd[e],name:t,metadata:r,addInitializer:a=>n._?Ks("Already initialized"):s.push(Cd(a||null))}),yg=(e,t)=>mg(t,_d("metadata"),e[3]),bg=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)a[s].call(n);return r},Sd=(e,t,n,r,s,a)=>{for(var o,i,l,c,u=t&7,f=!1,m=!1,d=2,h=xd[u+5],v=e[d]||(e[d]=[]),y=(s=s.prototype,pg(s,n)),g=r.length-1;g>=0;g--)l=vg(u,n,i={},e[3],v),l.static=f,l.private=m,c=l.access={has:b=>n in b},c.get=b=>b[n],o=(0,r[g])(y[h],l),i._=1,Cd(o)&&(y[h]=o);return y&&wd(s,n,y),s},kd=(e,t,n)=>t.has(e)||Ks("Cannot "+n),wg=(e,t,n)=>(kd(e,t,"read from private field"),t.get(e)),_g=(e,t,n)=>t.has(e)?Ks("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),xg=(e,t,n,r)=>(kd(e,t,"write to private field"),t.set(e,n),n),tr=class uo{constructor(t,n){this.x=t,this.y=n}static delta(t,n){return new uo(t.x-n.x,t.y-n.y)}static distance(t,n){return Math.hypot(t.x-n.x,t.y-n.y)}static equals(t,n){return t.x===n.x&&t.y===n.y}static from({x:t,y:n}){return new uo(t,n)}},Ed,Id,fo,ys,Nr,wi=class extends(fo=Qt,Id=[Te],Ed=[Te],fo){constructor(t){const n=tr.from(t);super(n,(r,s)=>tr.equals(r,s)),bg(Nr,5,this),_g(this,ys,0),this.velocity={x:0,y:0}}get delta(){return tr.delta(this.current,this.initial)}get direction(){const{current:t,previous:n}=this;if(!n)return null;const r={x:t.x-n.x,y:t.y-n.y};return!r.x&&!r.y?null:Math.abs(r.x)>Math.abs(r.y)?r.x>0?"right":"left":r.y>0?"down":"up"}get current(){return super.current}set current(t){const{current:n}=this,r=tr.from(t),s={x:r.x-n.x,y:r.y-n.y},a=Date.now(),o=a-wg(this,ys),i=l=>Math.round(l/o*100);qt(()=>{xg(this,ys,a),this.velocity={x:i(s.x),y:i(s.y)},super.current=r})}reset(t=this.defaultValue){super.reset(tr.from(t)),this.velocity={x:0,y:0}}};Nr=gg(fo);ys=new WeakMap;Sd(Nr,2,"delta",Id,wi);Sd(Nr,2,"direction",Ed,wi);yg(Nr,wi);var Md=(e=>(e.Horizontal="x",e.Vertical="y",e))(Md||{});Object.values(Md);const Cg=new Map([["bold",D.createElement(D.Fragment,null,D.createElement("path",{d:"M144,128a16,16,0,1,1-16-16A16,16,0,0,1,144,128ZM60,112a16,16,0,1,0,16,16A16,16,0,0,0,60,112Zm136,0a16,16,0,1,0,16,16A16,16,0,0,0,196,112Z"}))],["duotone",D.createElement(D.Fragment,null,D.createElement("path",{d:"M240,96v64a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V96A16,16,0,0,1,32,80H224A16,16,0,0,1,240,96Z",opacity:"0.2"}),D.createElement("path",{d:"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm56-12a12,12,0,1,0,12,12A12,12,0,0,0,196,116ZM60,116a12,12,0,1,0,12,12A12,12,0,0,0,60,116Z"}))],["fill",D.createElement(D.Fragment,null,D.createElement("path",{d:"M224,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V96A16,16,0,0,0,224,80ZM60,140a12,12,0,1,1,12-12A12,12,0,0,1,60,140Zm68,0a12,12,0,1,1,12-12A12,12,0,0,1,128,140Zm68,0a12,12,0,1,1,12-12A12,12,0,0,1,196,140Z"}))],["light",D.createElement(D.Fragment,null,D.createElement("path",{d:"M138,128a10,10,0,1,1-10-10A10,10,0,0,1,138,128ZM60,118a10,10,0,1,0,10,10A10,10,0,0,0,60,118Zm136,0a10,10,0,1,0,10,10A10,10,0,0,0,196,118Z"}))],["regular",D.createElement(D.Fragment,null,D.createElement("path",{d:"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm56-12a12,12,0,1,0,12,12A12,12,0,0,0,196,116ZM60,116a12,12,0,1,0,12,12A12,12,0,0,0,60,116Z"}))],["thin",D.createElement(D.Fragment,null,D.createElement("path",{d:"M136,128a8,8,0,1,1-8-8A8,8,0,0,1,136,128Zm-76-8a8,8,0,1,0,8,8A8,8,0,0,0,60,120Zm136,0a8,8,0,1,0,8,8A8,8,0,0,0,196,120Z"}))]]),Sg=new Map([["bold",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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"}))]]),kg=new Map([["bold",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.createElement("path",{d:"M80,88v80H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8Z",opacity:"0.2"}),D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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",D.createElement(D.Fragment,null,D.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"}))]]),Eg=new Map([["bold",D.createElement(D.Fragment,null,D.createElement("path",{d:"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z"}))],["duotone",D.createElement(D.Fragment,null,D.createElement("path",{d:"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z",opacity:"0.2"}),D.createElement("path",{d:"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["fill",D.createElement(D.Fragment,null,D.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["light",D.createElement(D.Fragment,null,D.createElement("path",{d:"M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z"}))],["regular",D.createElement(D.Fragment,null,D.createElement("path",{d:"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["thin",D.createElement(D.Fragment,null,D.createElement("path",{d:"M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z"}))]]),Ig=p.createContext({color:"currentColor",size:"1em",weight:"regular",mirrored:!1}),zr=D.forwardRef((e,t)=>{const{alt:n,color:r,size:s,weight:a,mirrored:o,children:i,weights:l,...c}=e,{color:u="currentColor",size:f,weight:m="regular",mirrored:d=!1,...h}=D.useContext(Ig);return D.createElement("svg",{ref:t,xmlns:"http://www.w3.org/2000/svg",width:s??f,height:s??f,fill:r??u,viewBox:"0 0 256 256",transform:o||d?"scale(-1, 1)":void 0,...h,...c},!!n&&D.createElement("title",null,n),i,l.get(a??m))});zr.displayName="IconBase";const Ad=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:Cg}));Ad.displayName="DotsThreeIcon";const Td=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:Sg}));Td.displayName="SpeakerHighIcon";const $d=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:kg}));$d.displayName="SpeakerLowIcon";const Rd=D.forwardRef((e,t)=>D.createElement(zr,{ref:t,...e,weights:Eg}));Rd.displayName="XIcon";const Mg=Rd;P.span`
|
|
67
67
|
font-family: 'Courier New', Monaco, monospace;
|
|
68
68
|
font-size: 1rem;
|
|
69
69
|
font-weight: 600;
|
|
@@ -112,25 +112,25 @@
|
|
|
112
112
|
min-width: 1.75rem;
|
|
113
113
|
min-height: 1.75rem;
|
|
114
114
|
font-size: ${e=>e.theme.fontSizeSmall};
|
|
115
|
-
`;var
|
|
115
|
+
`;var Ag=P.div`
|
|
116
116
|
display: inline-flex;
|
|
117
117
|
align-items: center;
|
|
118
118
|
gap: 0.5rem;
|
|
119
|
-
`,
|
|
119
|
+
`,Tg=P.input`
|
|
120
120
|
cursor: pointer;
|
|
121
121
|
accent-color: ${e=>e.theme.inputFocusBorder};
|
|
122
122
|
|
|
123
123
|
&:disabled {
|
|
124
124
|
cursor: not-allowed;
|
|
125
125
|
}
|
|
126
|
-
|
|
126
|
+
`,$g=P.label`
|
|
127
127
|
margin: 0;
|
|
128
128
|
cursor: pointer;
|
|
129
129
|
user-select: none;
|
|
130
130
|
font-family: ${e=>e.theme.fontFamily};
|
|
131
131
|
font-size: ${e=>e.theme.fontSize};
|
|
132
132
|
color: ${e=>e.theme.textColor};
|
|
133
|
-
`,
|
|
133
|
+
`,bt=P.button`
|
|
134
134
|
padding: 0.5rem 1rem;
|
|
135
135
|
background: ${e=>e.theme.buttonBackground||"#007bff"};
|
|
136
136
|
color: ${e=>e.theme.buttonText||"white"};
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
`;P(Dd)`
|
|
186
186
|
padding: 0.25rem 0.5rem;
|
|
187
187
|
font-size: ${e=>e.theme.fontSizeSmall};
|
|
188
|
-
`;var
|
|
188
|
+
`;var Rg=P.label`
|
|
189
189
|
font-family: ${e=>e.theme.fontFamily};
|
|
190
190
|
font-size: ${e=>e.theme.fontSizeSmall};
|
|
191
191
|
font-weight: 500;
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
align-items: center;
|
|
201
201
|
gap: 0.5rem;
|
|
202
202
|
cursor: pointer;
|
|
203
|
-
`;var
|
|
203
|
+
`;var Dg=P.span`
|
|
204
204
|
position: absolute;
|
|
205
205
|
width: 1px;
|
|
206
206
|
height: 1px;
|
|
@@ -326,21 +326,21 @@
|
|
|
326
326
|
&:disabled::-moz-range-thumb {
|
|
327
327
|
cursor: not-allowed;
|
|
328
328
|
}
|
|
329
|
-
|
|
329
|
+
`,Pg=({checked:e,onChange:t,disabled:n=!1,className:r})=>{const s=a=>{t(a.target.checked)};return C.jsxs(Ag,{className:r,children:[C.jsx(Tg,{type:"checkbox",id:"automatic-scroll",className:"automatic-scroll",checked:e,onChange:s,disabled:n}),C.jsx($g,{htmlFor:"automatic-scroll",children:"Automatic Scroll"})]})};function Od(e){return typeof e=="object"&&e!==null&&"type"in e}function Jt(e){if(!Od(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 Ld={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)",pianoRollNoteColor:"#2a7070",pianoRollSelectedNoteColor:"#3d9e9e",pianoRollBackgroundColor:"#1a1a2e",borderRadius:"4px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif',fontSize:"14px",fontSizeSmall:"12px"},Fg=class{constructor(e){this._listeners=new Set,this._notifyRafId=null,this.subscribe=r=>(this._listeners.add(r),()=>this._listeners.delete(r)),this.getSnapshot=()=>this._state;const t=e?.clientWidth??(typeof window<"u"?window.innerWidth:1024),n=t*1.5;this._state={scrollLeft:0,containerWidth:t,visibleStart:0,visibleEnd:t+n}}update(e,t){const n=t*1.5,r=Math.max(0,e-n),s=e+t+n;this._state&&this._state.containerWidth===t&&Math.abs(this._state.scrollLeft-e)<100||(this._state={scrollLeft:e,containerWidth:t,visibleStart:r,visibleEnd:s},this._notifyRafId===null&&(this._notifyRafId=requestAnimationFrame(()=>{this._notifyRafId=null;for(const a of this._listeners)a()})))}cancelPendingNotification(){this._notifyRafId!==null&&(cancelAnimationFrame(this._notifyRafId),this._notifyRafId=null)}},Bd=p.createContext(null),Og=()=>()=>{},Lg=({containerRef:e,children:t})=>{const n=p.useRef(null);n.current===null&&(n.current=new Fg(e.current));const r=n.current,s=p.useRef(null),a=p.useCallback(()=>{const i=e.current;i&&r.update(i.scrollLeft,i.clientWidth)},[e,r]),o=p.useCallback(()=>{s.current===null&&(s.current=requestAnimationFrame(()=>{s.current=null,a()}))},[a]);return p.useLayoutEffect(()=>{a()},[a]),p.useEffect(()=>{const i=e.current;if(!i)return;i.addEventListener("scroll",o,{passive:!0});const l=new ResizeObserver(()=>{o()});return l.observe(i),()=>{i.removeEventListener("scroll",o),l.disconnect(),s.current!==null&&(cancelAnimationFrame(s.current),s.current=null),r.cancelPendingNotification()}},[e,o,r]),C.jsx(Bd.Provider,{value:r,children:t})};function Bg(e){const t=p.useContext(Bd);return p.useSyncExternalStore(t?t.subscribe:Og,()=>e(t?t.getSnapshot():null),()=>e(null))}function qs(e,t,n=0){const r=Bg(s=>{const a=Math.ceil(e/t),o=[];for(let i=0;i<a;i++){const l=i*t,c=Math.min(e-l,t);if(s){const u=n+l;if(u+c<=s.visibleStart||u>=s.visibleEnd)continue}o.push(i)}return o.join(",")});return p.useMemo(()=>r?r.split(",").map(Number):[],[r])}var Wd=p.createContext(0),Wg=({originX:e,children:t})=>C.jsx(Wd.Provider,{value:e,children:t}),xi=()=>p.useContext(Wd);function Js(){const e=p.useRef(new Map),t=p.useCallback(n=>{if(n!==null){const r=parseInt(n.dataset.index,10);e.current.set(r,n)}},[]);return p.useEffect(()=>{const n=e.current;for(const[r,s]of n.entries())s.isConnected||n.delete(r)}),{canvasRef:t,canvasMapRef:e}}function Vg(e,t,n,r){if(n*2+1>=e.length)return null;const s=2**(t-1);let a=e[n*2]/s,o=e[n*2+1]/s;for(let i=n+1;i<r&&!(i*2+1>=e.length);i++){const l=e[i*2]/s,c=e[i*2+1]/s;l<a&&(a=l),c>o&&(o=c)}return{min:a,max:o}}function Ng(e,t,n,r,s,a){const o=Math.abs(r*n),i=Math.abs(s*n);return a==="normal"?[{x:e,y:n-i,width:t,height:i+o}]:[{x:e,y:0,width:t,height:n-i},{x:e,y:n+o,width:t,height:n-o}]}function zg(e,t,n){return Math.floor((e-t+n)/n)*n}function jg(e,t,n,r){if(!Od(t))return t;let s;t.direction==="vertical"?s=e.createLinearGradient(0,0,0,r):s=e.createLinearGradient(0,0,n,0);for(const a of t.stops)s.addColorStop(a.offset,a.color);return s}var Zg=P.canvas.attrs(e=>({style:{width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`,left:`${e.$left}px`}}))`
|
|
330
330
|
position: absolute;
|
|
331
331
|
top: 0;
|
|
332
332
|
/* Disable image rendering interpolation */
|
|
333
333
|
image-rendering: pixelated;
|
|
334
334
|
image-rendering: crisp-edges;
|
|
335
|
-
`,
|
|
335
|
+
`,Hg=P.div.attrs(e=>({style:{top:`${e.$waveHeight*e.$index}px`,width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`}}))`
|
|
336
336
|
position: absolute;
|
|
337
337
|
background: ${e=>e.$waveFillColor};
|
|
338
338
|
/* Force GPU compositing layer to reduce scroll flickering */
|
|
339
339
|
transform: translateZ(0);
|
|
340
340
|
backface-visibility: hidden;
|
|
341
|
-
`,Nl=e=>{const{data:t,bits:n,length:r,index:s,className:a,devicePixelRatio:o=1,waveHeight:i=80,waveOutlineColor:l="#E0EFF1",waveFillColor:c="grey",barWidth:u=1,barGap:f=0,transparentBackground:m=!1,drawMode:d="inverted"}=e,{canvasRef:h,canvasMapRef:v}=Js(),y=xi(),g=qs(r,Le,y);p.useEffect(()=>{const x=u+f;for(const[
|
|
341
|
+
`,Nl=e=>{const{data:t,bits:n,length:r,index:s,className:a,devicePixelRatio:o=1,waveHeight:i=80,waveOutlineColor:l="#E0EFF1",waveFillColor:c="grey",barWidth:u=1,barGap:f=0,transparentBackground:m=!1,drawMode:d="inverted"}=e,{canvasRef:h,canvasMapRef:v}=Js(),y=xi(),g=qs(r,Le,y);p.useEffect(()=>{const x=u+f;for(const[S,k]of v.current.entries()){const I=S*Le,E=k.getContext("2d"),T=Math.floor(i/2);if(E){E.resetTransform(),E.clearRect(0,0,k.width,k.height),E.imageSmoothingEnabled=!1,E.scale(o,o);const R=k.width/o;let A;d==="normal"?A=c:A=l,E.fillStyle=jg(E,A,R,i);const M=I,$=I+R,F=zg(M,u,x);for(let L=Math.max(0,F);L<$;L+=x){const z=L-M;if(z+u<=0)continue;const q=Math.min(L+x,r),Y=Vg(t,n,L,q);if(Y){const ne=Ng(z,u,T,Y.min,Y.max,d);for(const G of ne)E.fillRect(G.x,G.y,G.width,G.height)}}}}},[v,t,n,i,l,c,o,r,u,f,d,g,s]);const b=g.map(x=>{const S=x*Le,k=Math.min(r-S,Le);return C.jsx(Zg,{$cssWidth:k,$left:S,width:k*o,height:i*o,$waveHeight:i,"data-index":x,ref:h},`${r}-${x}`)}),_=m?"transparent":Jt(c);return C.jsx(Hg,{$index:s,$cssWidth:r,className:a,$waveHeight:i,$waveFillColor:_,children:b})},Gg={padding:"16px",background:"#1a1a2e",color:"#e0e0e0",border:"1px solid #d08070",borderRadius:"4px",fontFamily:"monospace",fontSize:"13px",minHeight:"60px",display:"flex",alignItems:"center",justifyContent:"center"};(class extends p.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error("[waveform-playlist] Render error:",e,t.componentStack)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:C.jsx("div",{style:Gg,children:"Waveform playlist encountered an error. Check console for details."}):this.props.children}});var Ci=22,Vd=P.div`
|
|
342
342
|
position: relative;
|
|
343
|
-
height: ${
|
|
343
|
+
height: ${Ci}px;
|
|
344
344
|
background: ${e=>e.$isSelected?e.theme.selectedClipHeaderBackgroundColor:e.theme.clipHeaderBackgroundColor};
|
|
345
345
|
border-bottom: 1px solid ${e=>e.theme.clipHeaderBorderColor};
|
|
346
346
|
display: flex;
|
|
@@ -370,12 +370,12 @@
|
|
|
370
370
|
white-space: nowrap;
|
|
371
371
|
overflow: hidden;
|
|
372
372
|
text-overflow: ellipsis;
|
|
373
|
-
`,
|
|
373
|
+
`,Ug=({trackName:e,isSelected:t=!1})=>C.jsx(Vd,{$interactive:!1,$isSelected:t,children:C.jsx(Nd,{title:e,children:e})}),Xg=({clipId:e,trackIndex:t,clipIndex:n,trackName:r,isSelected:s=!1,disableDrag:a=!1,dragHandleProps:o})=>{if(a||!o)return C.jsx(Ug,{trackName:r,isSelected:s});const{handleRef:i}=o;return C.jsx(Vd,{ref:i,"data-clip-id":e,$interactive:!0,$isSelected:s,children:C.jsx(Nd,{title:r,children:r})})},Yg=8,Kg=24,qg=P.div`
|
|
374
374
|
position: absolute;
|
|
375
375
|
${e=>e.$edge==="left"?"left: 0;":"right: 0;"}
|
|
376
376
|
top: 0;
|
|
377
377
|
bottom: 0;
|
|
378
|
-
width: ${e=>e.$touchOptimized?
|
|
378
|
+
width: ${e=>e.$touchOptimized?Kg:Yg}px;
|
|
379
379
|
cursor: col-resize;
|
|
380
380
|
user-select: none;
|
|
381
381
|
z-index: 105; /* Above waveform, below header */
|
|
@@ -398,19 +398,19 @@
|
|
|
398
398
|
background: rgba(255, 255, 255, 0.4);
|
|
399
399
|
${e=>e.$edge==="left"?"border-left: 2px solid rgba(255, 255, 255, 0.8);":"border-right: 2px solid rgba(255, 255, 255, 0.8);"}
|
|
400
400
|
}
|
|
401
|
-
`,zl=({clipId:e,trackIndex:t,clipIndex:n,edge:r,dragHandleProps:s,touchOptimized:a=!1})=>{const[o,i]=p.useState(!1);if(!s)return null;const{ref:l,isDragging:c}=s;return
|
|
401
|
+
`,zl=({clipId:e,trackIndex:t,clipIndex:n,edge:r,dragHandleProps:s,touchOptimized:a=!1})=>{const[o,i]=p.useState(!1);if(!s)return null;const{ref:l,isDragging:c}=s;return C.jsx(qg,{ref:l,"data-clip-id":e,"data-boundary-edge":r,$edge:r,$isDragging:c,$isHovered:o,$touchOptimized:a,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1)})},Jg=P.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
|
|
402
402
|
position: absolute;
|
|
403
403
|
top: 0;
|
|
404
404
|
bottom: 0;
|
|
405
405
|
pointer-events: none;
|
|
406
406
|
z-index: 50;
|
|
407
|
-
`,
|
|
407
|
+
`,Qg=P.svg`
|
|
408
408
|
width: 100%;
|
|
409
409
|
height: 100%;
|
|
410
410
|
display: block;
|
|
411
411
|
/* Flip horizontally for fadeOut - makes it mirror of fadeIn */
|
|
412
412
|
transform: ${e=>e.$type==="fadeOut"?"scaleX(-1)":"none"};
|
|
413
|
-
`;function
|
|
413
|
+
`;function ev(e,t,n="logarithmic"){const r=[],s=Math.max(20,Math.min(e,100));for(let a=0;a<=s;a++){const o=a/s*e,i=a/s;let l;switch(n){case"linear":l=i;break;case"exponential":l=i*i;break;case"sCurve":l=(1-Math.cos(i*Math.PI))/2;break;case"logarithmic":default:l=Math.log10(1+i*9)/Math.log10(10);break}const c=(1-l)*t;r.push(`${o},${c}`)}return`M 0,${t} L ${r.join(" L ")} L ${e},0 L 0,0 Z`}var jl=({left:e,width:t,type:n,curveType:r="logarithmic",color:s})=>{const a=P.useTheme();if(t<1)return null;const o=s||a?.fadeOverlayColor||"rgba(0, 0, 0, 0.4)";return C.jsx(Jg,{$left:e,$width:t,$type:n,children:C.jsx(Qg,{$type:n,viewBox:`0 0 ${t} 100`,preserveAspectRatio:"none",children:C.jsx("path",{d:ev(t,100,r),fill:o})})})},tv=P.div.attrs(e=>({style:e.$isOverlay?{}:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
|
|
414
414
|
position: ${e=>e.$isOverlay?"relative":"absolute"};
|
|
415
415
|
top: 0;
|
|
416
416
|
height: ${e=>e.$isOverlay?"auto":"100%"};
|
|
@@ -419,30 +419,30 @@
|
|
|
419
419
|
flex-direction: column;
|
|
420
420
|
z-index: 10; /* Above progress overlay (z-index: 2) but below controls/playhead */
|
|
421
421
|
pointer-events: none; /* Let clicks pass through to ClickOverlay for playhead positioning */
|
|
422
|
-
`,
|
|
422
|
+
`,nv=P.div`
|
|
423
423
|
flex: 1;
|
|
424
424
|
position: relative;
|
|
425
425
|
overflow: ${e=>e.$isOverlay?"visible":"hidden"};
|
|
426
|
-
`,ho=({children:e,className:t,clipId:n,trackIndex:r,clipIndex:s,trackName:a,startSample:o,durationSamples:i,samplesPerPixel:l,showHeader:c=!1,disableHeaderDrag:u=!1,isOverlay:f=!1,isSelected:m=!1,onMouseDown:d,trackId:h,fadeIn:v,fadeOut:y,sampleRate:g=44100,showFades:b=!1,touchOptimized:
|
|
426
|
+
`,ho=({children:e,className:t,clipId:n,trackIndex:r,clipIndex:s,trackName:a,startSample:o,durationSamples:i,samplesPerPixel:l,showHeader:c=!1,disableHeaderDrag:u=!1,isOverlay:f=!1,isSelected:m=!1,onMouseDown:d,trackId:h,fadeIn:v,fadeOut:y,sampleRate:g=44100,showFades:b=!1,touchOptimized:w=!1})=>{const _=Math.floor(o/l),x=dc(o,i,l),S=c&&!u&&!f,k=`clip-${r}-${s}`,{ref:I,handleRef:E,isDragSource:T}=Ca({id:k,data:{clipId:n,trackIndex:r,clipIndex:s,startSample:o,durationSamples:i},disabled:!S}),R=`clip-boundary-left-${r}-${s}`,{ref:A,isDragSource:M}=Ca({id:R,data:{clipId:n,trackIndex:r,clipIndex:s,boundary:"left",startSample:o,durationSamples:i},disabled:!S,feedback:"none"}),$=`clip-boundary-right-${r}-${s}`,{ref:F,isDragSource:L}=Ca({id:$,data:{clipId:n,trackIndex:r,clipIndex:s,boundary:"right",startSample:o,durationSamples:i},disabled:!S,feedback:"none"}),z=T?{zIndex:100}:void 0;return C.jsxs(tv,{ref:I,style:z,className:t,$left:_,$width:x,$isOverlay:f,"data-clip-container":"true","data-track-id":h,onMouseDown:d,tabIndex:-1,children:[c&&C.jsx(Xg,{clipId:n,trackIndex:r,clipIndex:s,trackName:a,isSelected:m,disableDrag:u,dragHandleProps:S?{handleRef:E}:void 0}),C.jsx(Wg,{originX:_,children:C.jsxs(nv,{$isOverlay:f,children:[e,b&&v&&v.duration>0&&C.jsx(jl,{left:0,width:Math.floor(v.duration*g/l),type:"fadeIn",curveType:v.type}),b&&y&&y.duration>0&&C.jsx(jl,{left:x-Math.floor(y.duration*g/l),width:Math.floor(y.duration*g/l),type:"fadeOut",curveType:y.type})]})}),c&&!u&&!f&&C.jsxs(C.Fragment,{children:[C.jsx(zl,{clipId:n,trackIndex:r,clipIndex:s,edge:"left",touchOptimized:w,dragHandleProps:{ref:A,isDragging:M}}),C.jsx(zl,{clipId:n,trackIndex:r,clipIndex:s,edge:"right",touchOptimized:w,dragHandleProps:{ref:F,isDragging:L}})]})]})},rv=P.div`
|
|
427
427
|
display: inline-flex;
|
|
428
428
|
align-items: center;
|
|
429
429
|
gap: 0.5rem;
|
|
430
|
-
`,
|
|
430
|
+
`,sv=P(Rg)`
|
|
431
431
|
margin: 0;
|
|
432
432
|
white-space: nowrap;
|
|
433
|
-
`,
|
|
433
|
+
`,av=P(Fd)`
|
|
434
434
|
width: 120px;
|
|
435
|
-
`,
|
|
435
|
+
`,ov=({volume:e,onChange:t,disabled:n=!1,className:r})=>{const s=a=>{t(parseFloat(a.target.value)/100)};return C.jsxs(rv,{className:r,children:[C.jsx(sv,{htmlFor:"master-gain",children:"Master Volume"}),C.jsx(av,{min:"0",max:"100",value:e*100,onChange:s,disabled:n,id:"master-gain"})]})},iv=P.canvas.attrs(e=>({style:{width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`,left:`${e.$left}px`}}))`
|
|
436
436
|
position: absolute;
|
|
437
437
|
top: 0;
|
|
438
438
|
image-rendering: pixelated;
|
|
439
439
|
image-rendering: crisp-edges;
|
|
440
|
-
`,
|
|
440
|
+
`,lv=P.div.attrs(e=>({style:{top:`${e.$waveHeight*e.$index}px`,width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`}}))`
|
|
441
441
|
position: absolute;
|
|
442
442
|
background: ${e=>e.$backgroundColor};
|
|
443
443
|
transform: translateZ(0);
|
|
444
444
|
backface-visibility: hidden;
|
|
445
|
-
`,
|
|
445
|
+
`,cv=({index:e,midiNotes:t,length:n,waveHeight:r,devicePixelRatio:s,samplesPerPixel:a,sampleRate:o,clipOffsetSeconds:i,noteColor:l="#2a7070",selectedNoteColor:c="#3d9e9e",isSelected:u=!1,transparentBackground:f=!1,backgroundColor:m="#1a1a2e"})=>{const{canvasRef:d,canvasMapRef:h}=Js(),v=xi(),y=qs(n,Le,v),{minMidi:g,maxMidi:b}=p.useMemo(()=>{if(t.length===0)return{minMidi:0,maxMidi:127};let S=127,k=0;for(const I of t)I.midi<S&&(S=I.midi),I.midi>k&&(k=I.midi);return{minMidi:Math.max(0,S-1),maxMidi:Math.min(127,k+1)}},[t]),w=u?c:l;p.useEffect(()=>{const S=b-g+1,k=Math.max(2,r/S),I=o/a;for(const[E,T]of h.current.entries()){const R=E*Le,A=T.width/s,M=T.getContext("2d");if(!M)continue;M.resetTransform(),M.clearRect(0,0,T.width,T.height),M.imageSmoothingEnabled=!1,M.scale(s,s);const $=R*a/o,F=(R+A)*a/o;for(const L of t){const z=L.time-i;if(z+L.duration<=$||z>=F)continue;const Y=z*I-R,ne=Math.max(2,L.duration*I),G=(b-L.midi)/S*r,J=.3+L.velocity*.7;M.fillStyle=w,M.globalAlpha=J;const ae=1;M.beginPath(),M.roundRect(Y,G,ne,k,ae),M.fill()}M.globalAlpha=1}},[h,t,r,s,a,o,i,w,g,b,n,y,e]);const _=y.map(S=>{const k=S*Le,I=Math.min(n-k,Le);return C.jsx(iv,{$cssWidth:I,$left:k,width:I*s,height:r*s,$waveHeight:r,"data-index":S,ref:d},`${n}-${S}`)}),x=f?"transparent":m;return C.jsx(lv,{$index:e,$cssWidth:n,$waveHeight:r,$backgroundColor:x,children:_})};P.div.attrs(e=>({style:{transform:`translate3d(${e.$position}px, 0, 0)`}}))`
|
|
446
446
|
position: absolute;
|
|
447
447
|
top: 0;
|
|
448
448
|
left: 0;
|
|
@@ -476,32 +476,32 @@
|
|
|
476
476
|
width: 2px;
|
|
477
477
|
height: 100%;
|
|
478
478
|
background: ${e=>e.$color};
|
|
479
|
-
`;var
|
|
479
|
+
`;var uv=P.div`
|
|
480
480
|
display: flex;
|
|
481
481
|
overflow-y: hidden;
|
|
482
482
|
position: relative;
|
|
483
|
-
`,
|
|
483
|
+
`,dv=P.div.attrs(e=>({style:{width:`${e.$width}px`}}))`
|
|
484
484
|
flex-shrink: 0;
|
|
485
485
|
overflow: hidden;
|
|
486
|
-
`,
|
|
486
|
+
`,fv=P.div.attrs(e=>({style:{height:`${e.$height}px`}}))``,hv=P.div`
|
|
487
487
|
overflow-x: auto;
|
|
488
488
|
overflow-y: hidden;
|
|
489
489
|
overflow-anchor: none;
|
|
490
490
|
flex: 1;
|
|
491
491
|
position: relative;
|
|
492
|
-
`,
|
|
492
|
+
`,pv=P.div.attrs(e=>({style:e.$width!==void 0?{width:`${e.$width}px`}:{}}))`
|
|
493
493
|
position: relative;
|
|
494
494
|
background: ${e=>e.$backgroundColor||"transparent"};
|
|
495
|
-
`,
|
|
495
|
+
`,mv=P.div.attrs(e=>({style:e.$width?{minWidth:`${e.$width}px`}:{}}))`
|
|
496
496
|
background: ${e=>e.$backgroundColor||"white"};
|
|
497
497
|
width: 100%;
|
|
498
498
|
position: relative;
|
|
499
499
|
overflow: hidden; /* Constrain loop region to timescale area */
|
|
500
|
-
`,
|
|
500
|
+
`,gv=P.div.attrs(e=>({style:e.$width!==void 0?{minWidth:`${e.$width}px`}:{}}))`
|
|
501
501
|
position: relative;
|
|
502
502
|
background: ${e=>e.$backgroundColor||"transparent"};
|
|
503
503
|
width: 100%;
|
|
504
|
-
`,
|
|
504
|
+
`,vv=P.div`
|
|
505
505
|
position: absolute;
|
|
506
506
|
top: 0;
|
|
507
507
|
left: 0;
|
|
@@ -510,7 +510,7 @@
|
|
|
510
510
|
cursor: crosshair;
|
|
511
511
|
/* When selecting, raise z-index above clip boundaries (z-index: 105) to prevent interference */
|
|
512
512
|
z-index: ${e=>e.$isSelecting?110:1};
|
|
513
|
-
`,
|
|
513
|
+
`,Si=({children:e,backgroundColor:t,timescaleBackgroundColor:n,timescale:r,timescaleWidth:s,tracksWidth:a,controlsWidth:o,onTracksClick:i,onTracksMouseDown:l,onTracksMouseMove:c,onTracksMouseUp:u,scrollContainerRef:f,isSelecting:m,"data-playlist-state":d,trackControlsSlots:h,timescaleGapHeight:v=0})=>{const y=p.useRef(null),g=p.useCallback(w=>{y.current=w,f?.(w)},[f]),b=o!==void 0&&o>0;return C.jsxs(uv,{"data-playlist-state":d,children:[b&&C.jsxs(dv,{$width:o,children:[v>0&&C.jsx(fv,{$height:v}),h]}),C.jsx(hv,{"data-scroll-container":"true",ref:g,children:C.jsx(Lg,{containerRef:y,children:C.jsxs(pv,{$backgroundColor:t,$width:a,children:[r&&C.jsx(mv,{$width:s,$backgroundColor:n,children:r}),C.jsxs(gv,{$width:a,$backgroundColor:t,children:[e,(i||l)&&C.jsx(vv,{$isSelecting:m,onClick:i,onMouseDown:l,onMouseMove:c,onMouseUp:u})]})]})})})]})};P.withTheme(Si);var yv=P.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
|
|
514
514
|
position: absolute;
|
|
515
515
|
top: 0;
|
|
516
516
|
background: ${e=>e.$color};
|
|
@@ -518,7 +518,7 @@
|
|
|
518
518
|
z-index: 60; /* Above clips (z-index: 10) and fades (z-index: 50), below playhead (z-index: 100) */
|
|
519
519
|
pointer-events: none;
|
|
520
520
|
opacity: 0.3;
|
|
521
|
-
`,zd=({startPosition:e,endPosition:t,color:n="#00ff00"})=>{const r=Math.max(0,t-e);return r<=0?null:
|
|
521
|
+
`,zd=({startPosition:e,endPosition:t,color:n="#00ff00"})=>{const r=Math.max(0,t-e);return r<=0?null:C.jsx(yv,{$left:e,$width:r,$color:n,"data-selection":!0})};P.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
|
|
522
522
|
position: absolute;
|
|
523
523
|
top: 0;
|
|
524
524
|
background: ${e=>e.$color};
|
|
@@ -582,7 +582,7 @@
|
|
|
582
582
|
&:hover::before {
|
|
583
583
|
opacity: 1;
|
|
584
584
|
}
|
|
585
|
-
`,
|
|
585
|
+
`,bv=P.div.attrs(e=>({style:{left:`${e.$left}px`,width:`${e.$width}px`}}))`
|
|
586
586
|
position: absolute;
|
|
587
587
|
top: 0;
|
|
588
588
|
height: 100%;
|
|
@@ -593,7 +593,7 @@
|
|
|
593
593
|
&:active {
|
|
594
594
|
cursor: grabbing;
|
|
595
595
|
}
|
|
596
|
-
`,
|
|
596
|
+
`,wv=({startPosition:e,endPosition:t,markerColor:n="#3b82f6",regionColor:r="rgba(59, 130, 246, 0.3)",onLoopStartChange:s,onLoopEndChange:a,onLoopRegionMove:o,minPosition:i=0,maxPosition:l=1/0})=>{const[c,u]=p.useState(null),f=p.useRef(0),m=p.useRef(0),d=p.useRef(0),h=Math.max(0,t-e),v=p.useCallback((g,b)=>{g.preventDefault(),g.stopPropagation(),u(b),f.current=g.clientX,m.current=b==="start"?e:t;const w=x=>{const S=x.clientX-f.current,k=m.current+S;if(b==="start"){const I=Math.max(i,Math.min(t-10,k));s?.(I)}else{const I=Math.max(e+10,Math.min(l,k));a?.(I)}},_=()=>{u(null),document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",_)};document.addEventListener("mousemove",w),document.addEventListener("mouseup",_)},[e,t,i,l,s,a]),y=p.useCallback(g=>{g.preventDefault(),g.stopPropagation(),u("region"),f.current=g.clientX,m.current=e,d.current=t;const b=t-e,w=x=>{const S=x.clientX-f.current;let k=m.current+S,I=d.current+S;k<i&&(k=i,I=i+b),I>l&&(I=l,k=l-b),o?.(k,I)},_=()=>{u(null),document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",_)};document.addEventListener("mousemove",w),document.addEventListener("mouseup",_)},[e,t,i,l,o]);return h<=0?null:C.jsxs(C.Fragment,{children:[C.jsx(bv,{$left:e,$width:h,$color:r,$isDragging:c==="region",onMouseDown:y,"data-loop-region-timescale":!0}),C.jsx(Zl,{$left:e,$color:n,$isStart:!0,$isDragging:c==="start",onMouseDown:g=>v(g,"start"),"data-loop-marker-handle":"start"}),C.jsx(Zl,{$left:t,$color:n,$isStart:!1,$isDragging:c==="end",onMouseDown:g=>v(g,"end"),"data-loop-marker-handle":"end"})]})},_v=P.div`
|
|
597
597
|
position: absolute;
|
|
598
598
|
top: 0;
|
|
599
599
|
left: 0;
|
|
@@ -601,17 +601,17 @@
|
|
|
601
601
|
height: 100%; /* Stay within timescale bounds, don't extend into tracks */
|
|
602
602
|
cursor: crosshair;
|
|
603
603
|
z-index: 40; /* Below markers and shading */
|
|
604
|
-
`,
|
|
604
|
+
`,xv=({startPosition:e,endPosition:t,markerColor:n="#3b82f6",regionColor:r="rgba(59, 130, 246, 0.3)",onLoopRegionChange:s,minPosition:a=0,maxPosition:o=1/0})=>{const[,i]=p.useState(!1),l=p.useRef(0),c=p.useRef(null),u=t>e,f=p.useCallback(m=>{const d=m.target;if(d.closest("[data-loop-marker-handle]")||d.closest("[data-loop-region-timescale]"))return;m.preventDefault(),i(!0);const h=c.current?.getBoundingClientRect();if(!h)return;const v=m.clientX-h.left,y=Math.max(a,Math.min(o,v));l.current=y,s?.(y,y);const g=w=>{const _=w.clientX-h.left,x=Math.max(a,Math.min(o,_)),S=Math.min(l.current,x),k=Math.max(l.current,x);s?.(S,k)},b=()=>{i(!1),document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",b)};document.addEventListener("mousemove",g),document.addEventListener("mouseup",b)},[a,o,s]);return C.jsx(_v,{ref:c,onMouseDown:f,"data-timescale-loop-creator":!0,children:u&&C.jsx(wv,{startPosition:e,endPosition:t,markerColor:n,regionColor:r,minPosition:a,maxPosition:o,onLoopStartChange:m=>s?.(m,t),onLoopEndChange:m=>s?.(e,m),onLoopRegionMove:(m,d)=>s?.(m,d)})})};function nr(e,t){const n=Math.floor(e/3600)%24,r=Math.floor(e/60)%60,s=(e%60).toFixed(t);return String(n).padStart(2,"0")+":"+String(r).padStart(2,"0")+":"+s.padStart(t>0?t+3:2,"0")}function Bn(e,t){switch(t){case"seconds":return e.toFixed(0);case"thousandths":return e.toFixed(3);case"hh:mm:ss":return nr(e,0);case"hh:mm:ss.u":return nr(e,1);case"hh:mm:ss.uu":return nr(e,2);case"hh:mm:ss.uuu":return nr(e,3);default:return nr(e,3)}}function jd(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,s=parseInt(n[1],10)||0,a=parseFloat(n[2])||0;return r*3600+s*60+a}default:return 0}}var Hl=({id:e,label:t,value:n,format:r,className:s,onChange:a,readOnly:o=!1})=>{const[i,l]=p.useState("");p.useEffect(()=>{const m=Bn(n,r);l(m)},[n,r,e]);const c=m=>{const d=m.target.value;l(d)},u=()=>{if(a){const m=jd(i,r);a(m)}l(Bn(n,r))},f=m=>{m.key==="Enter"&&m.currentTarget.blur()};return C.jsxs(C.Fragment,{children:[C.jsx(Dg,{as:"label",htmlFor:e,children:t}),C.jsx(Dd,{type:"text",className:s,id:e,value:i,onChange:c,onBlur:u,onKeyDown:f,readOnly:o})]})},Cv=({selectionStart:e,selectionEnd:t,onSelectionChange:n,className:r})=>{const[s,a]=p.useState("hh:mm:ss.uuu");p.useEffect(()=>{const l=document.querySelector(".time-format"),c=()=>{l&&a(l.value)};return l&&(a(l.value),l.addEventListener("change",c)),()=>{l?.removeEventListener("change",c)}},[]);const o=l=>{n&&n(l,t)},i=l=>{n&&n(e,l)};return C.jsxs("div",{className:r,children:[C.jsx(Hl,{id:"audio_start",label:"Start of audio selection",value:e,format:s,className:"audio-start form-control mr-sm-2",onChange:o}),C.jsx(Hl,{id:"audio_end",label:"End of audio selection",value:t,format:s,className:"audio-end form-control mr-sm-2",onChange:i})]})},Sv=p.createContext(null);function Zd(){return p.useContext(Sv)}function bs(){return window.devicePixelRatio}var Hd=p.createContext(bs()),Gd=({children:e})=>{const[t,n]=p.useState(bs());return matchMedia(`(resolution: ${bs()}dppx)`).addEventListener("change",()=>{n(bs())},{once:!0}),C.jsx(Hd.Provider,{value:Math.ceil(t),children:e})},ki=()=>p.useContext(Hd),jr=p.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}),Qs=()=>p.useContext(jr),Zr=()=>p.useContext(P.ThemeContext);p.createContext(C.jsx(p.Fragment,{}));var kv=0,Ev=!1,Iv=0,Mv=0,Av={progress:kv,isPlaying:Ev,selectionStart:Iv,selectionEnd:Mv};p.createContext(Av);p.createContext({setIsPlaying:()=>{},setProgress:()=>{},setSelection:()=>{}});var Tv=(e,t,n)=>(e-t)/(n-t),$v=P.div.attrs(e=>({style:{top:`${e.$waveHeight*e.$index}px`,width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`}}))`
|
|
605
605
|
position: absolute;
|
|
606
606
|
background: #000;
|
|
607
607
|
transform: translateZ(0);
|
|
608
608
|
backface-visibility: hidden;
|
|
609
|
-
`,
|
|
609
|
+
`,Rv=P.canvas.attrs(e=>({style:{width:`${e.$cssWidth}px`,height:`${e.$waveHeight}px`,left:`${e.$left}px`}}))`
|
|
610
610
|
position: absolute;
|
|
611
611
|
top: 0;
|
|
612
612
|
image-rendering: pixelated;
|
|
613
613
|
image-rendering: crisp-edges;
|
|
614
|
-
`;function
|
|
614
|
+
`;function Dv(){const e=new Uint8Array(768);for(let t=0;t<256;t++)e[t*3]=e[t*3+1]=e[t*3+2]=t;return e}var Pv=Dv(),Gl=({index:e,channelIndex:t,data:n,length:r,waveHeight:s,devicePixelRatio:a=1,samplesPerPixel:o,colorLUT:i,frequencyScaleFn:l,minFrequency:c=0,maxFrequency:u,workerApi:f,clipId:m,onCanvasesReady:d})=>{const h=t??e,{canvasRef:v,canvasMapRef:y}=Js(),g=p.useRef([]),b=p.useRef(new WeakSet),w=p.useRef(f),_=p.useRef(d),x=!!(f&&m),S=xi(),k=qs(r,Le,S),I=i??Pv,E=u??(n?n.sampleRate/2:22050),T=l??Tv,R=!!l;p.useEffect(()=>{w.current=f},[f]),p.useEffect(()=>{_.current=d},[d]),p.useEffect(()=>{if(!x)return;const M=w.current;if(!M||!m)return;const $=g.current.length,F=[];for(const q of g.current){const Y=q.match(/chunk(\d+)$/);if(!Y){F.push(q);continue}const ne=parseInt(Y[1],10),G=y.current.get(ne);if(G&&G.isConnected)F.push(q);else try{M.unregisterCanvas(q)}catch(J){console.warn(`[spectrogram] unregisterCanvas failed for ${q}:`,J)}}g.current=F;const L=[];for(const[q,Y]of y.current.entries()){if(b.current.has(Y))continue;const ne=`${m}-ch${h}-chunk${q}`;let G;try{G=Y.transferControlToOffscreen()}catch(J){console.warn(`[spectrogram] transferControlToOffscreen failed for ${ne}:`,J);continue}b.current.add(Y);try{M.registerCanvas(ne,G),L.push(ne)}catch(J){console.warn(`[spectrogram] registerCanvas failed for ${ne}:`,J);continue}}if(L.length>0&&(g.current=[...g.current,...L]),L.length>0||F.length<$){const q=g.current,Y=q.map(ne=>{const G=ne.match(/chunk(\d+)$/);if(!G)return console.warn(`[spectrogram] Unexpected canvas ID format: ${ne}`),Le;const J=parseInt(G[1],10);return Math.min(r-J*Le,Le)});_.current?.(q,Y)}},[y,x,m,h,r,k]),p.useEffect(()=>()=>{const M=w.current;if(M){for(const $ of g.current)try{M.unregisterCanvas($)}catch(F){console.warn(`[spectrogram] unregisterCanvas failed for ${$}:`,F)}g.current=[]}},[]),p.useEffect(()=>{if(x||!n)return;const{frequencyBinCount:M,frameCount:$,hopSize:F,sampleRate:L,gainDb:z,rangeDb:q}=n,Y=q===0?1:q,ne=G=>G/M*(L/2);for(const[G,J]of y.current.entries()){const ae=G*Le,ue=J.getContext("2d");if(!ue)continue;const de=J.width/a,Ae=s;ue.resetTransform(),ue.clearRect(0,0,J.width,J.height),ue.imageSmoothingEnabled=!1,ue.scale(a,a);const j=ue.createImageData(de,Ae),U=j.data;for(let ye=0;ye<de;ye++){const Q=(ae+ye)*o,Ee=Math.floor(Q/F);if(Ee<0||Ee>=$)continue;const B=Ee*M;for(let $e=0;$e<Ae;$e++){const Qe=1-$e/Ae;let We=Math.floor(Qe*M);if(R){let _e=0,Fe=M-1;for(;_e<Fe;){const Ve=_e+Fe>>1,Ye=ne(Ve);T(Ye,c,E)<Qe?_e=Ve+1:Fe=Ve}We=_e}if(We<0||We>=M)continue;const pe=n.data[B+We],te=Math.max(0,Math.min(1,(pe+Y+z)/Y)),Ue=Math.floor(te*255),it=($e*de+ye)*4;U[it]=I[Ue*3],U[it+1]=I[Ue*3+1],U[it+2]=I[Ue*3+2],U[it+3]=255}}if(ue.resetTransform(),ue.putImageData(j,0,0),a!==1){const ye=document.createElement("canvas");ye.width=de,ye.height=Ae;const Z=ye.getContext("2d");if(!Z)continue;Z.putImageData(j,0,0),ue.clearRect(0,0,J.width,J.height),ue.imageSmoothingEnabled=!1,ue.drawImage(ye,0,0,J.width,J.height)}}},[y,x,n,r,s,a,o,I,c,E,T,R,k]);const A=k.map(M=>{const $=M*Le,F=Math.min(r-$,Le);return C.jsx(Rv,{$cssWidth:F,$left:$,width:F*a,height:s*a,$waveHeight:s,"data-index":M,ref:v},`${r}-${M}`)});return C.jsx($v,{$index:e,$cssWidth:r,$waveHeight:s,children:A})},Ud=({isSelected:e,transparentBackground:t,renderMode:n="waveform",spectrogramData:r,spectrogramColorLUT:s,samplesPerPixel:a,spectrogramFrequencyScaleFn:o,spectrogramMinFrequency:i,spectrogramMaxFrequency:l,spectrogramWorkerApi:c,spectrogramClipId:u,spectrogramOnCanvasesReady:f,midiNotes:m,sampleRate:d,clipOffsetSeconds:h,...v})=>{const y=Zr(),{waveHeight:g,barWidth:b,barGap:w,samplesPerPixel:_,sampleRate:x}=Qs(),S=ki(),k=a??_,I=e&&y?y.selectedWaveOutlineColor:y?.waveOutlineColor,E=e&&y?y.selectedWaveFillColor:y?.waveFillColor,T=y?.waveformDrawMode||"inverted",R=r||c;if(n==="spectrogram"&&R)return C.jsx(Gl,{index:v.index,data:r,length:v.length,waveHeight:g,devicePixelRatio:S,samplesPerPixel:k,colorLUT:s,frequencyScaleFn:o,minFrequency:i,maxFrequency:l,workerApi:c,clipId:u,onCanvasesReady:f});if(n==="both"&&R){const A=Math.floor(g/2);return C.jsxs(C.Fragment,{children:[C.jsx(Gl,{index:v.index*2,channelIndex:v.index,data:r,length:v.length,waveHeight:A,devicePixelRatio:S,samplesPerPixel:k,colorLUT:s,frequencyScaleFn:o,minFrequency:i,maxFrequency:l,workerApi:c,clipId:u,onCanvasesReady:f}),C.jsx("div",{style:{position:"absolute",top:(v.index*2+1)*A,width:v.length,height:A},children:C.jsx(Nl,{...v,index:0,waveOutlineColor:I,waveFillColor:E,waveHeight:A,devicePixelRatio:S,barWidth:b,barGap:w,transparentBackground:t,drawMode:T})})]})}return n==="piano-roll"?C.jsx(cv,{index:v.index,midiNotes:m??[],length:v.length,waveHeight:g,devicePixelRatio:S,samplesPerPixel:k,sampleRate:d??x,clipOffsetSeconds:h??0,noteColor:y?.pianoRollNoteColor,selectedNoteColor:y?.pianoRollSelectedNoteColor,isSelected:e,transparentBackground:t,backgroundColor:y?.pianoRollBackgroundColor}):C.jsx(Nl,{...v,waveOutlineColor:I,waveFillColor:E,waveHeight:g,devicePixelRatio:S,barWidth:b,barGap:w,transparentBackground:t,drawMode:T})},Ul=72,Fv=P.div`
|
|
615
615
|
position: sticky;
|
|
616
616
|
left: 0;
|
|
617
617
|
z-index: 101;
|
|
@@ -619,31 +619,31 @@
|
|
|
619
619
|
height: 0;
|
|
620
620
|
width: 0;
|
|
621
621
|
overflow: visible;
|
|
622
|
-
`;function
|
|
622
|
+
`;function Ov(e,t,n){const s=[20,50,100,200,500,1e3,2e3,3e3,4e3,5e3,8e3,1e4,12e3,16e3,2e4].filter(l=>l>=e&&l<=t),a=Math.max(2,Math.floor(n/20));if(s.length<=a)return s;const o=(s.length-1)/(a-1),i=[];for(let l=0;l<a;l++)i.push(s[Math.round(l*o)]);return i}var Lv=({waveHeight:e,numChannels:t,frequencyScaleFn:n,minFrequency:r,maxFrequency:s,labelsColor:a="#ccc",labelsBackground:o="rgba(0,0,0,0.6)",renderMode:i="spectrogram",hasClipHeaders:l=!1})=>{const c=p.useRef(null),u=ki(),f=i==="both"?Math.floor(e/2):e,m=t*e,d=l?22:0;return p.useLayoutEffect(()=>{const h=c.current;if(!h)return;const v=h.getContext("2d");if(!v)return;v.resetTransform(),v.clearRect(0,0,h.width,h.height),v.scale(u,u);const y=Ov(r,s,f);for(let g=0;g<t;g++){const b=g*e+d;v.font="11px monospace",v.textBaseline="middle";for(const w of y){const _=n(w,r,s);if(_<0||_>1)continue;const x=b+f*(1-_),S=w>=1e3?`${(w/1e3).toFixed(1)}k`:`${w} Hz`,k=v.measureText(S),I=3;v.fillStyle=o,v.fillRect(0,x-7,k.width+I*2,14),v.fillStyle=a,v.fillText(S,I,x)}}},[e,t,n,r,s,a,o,u,f,d]),C.jsx(Fv,{$height:m+d,children:C.jsx("canvas",{ref:c,width:Ul*u,height:(m+d)*u,style:{width:Ul,height:m+d,pointerEvents:"none"}})})},Bv=P.div.attrs(e=>({style:{width:`${e.$cssWidth}px`,height:`${e.$timeScaleHeight}px`}}))`
|
|
623
623
|
position: relative;
|
|
624
624
|
overflow: visible; /* Allow time labels to render above the container */
|
|
625
625
|
border-bottom: 1px solid ${e=>e.theme.timeColor};
|
|
626
626
|
box-sizing: border-box;
|
|
627
|
-
`,
|
|
627
|
+
`,Wv=P.canvas.attrs(e=>({style:{width:`${e.$cssWidth}px`,height:`${e.$timeScaleHeight}px`,left:`${e.$left}px`}}))`
|
|
628
628
|
position: absolute;
|
|
629
629
|
bottom: 0;
|
|
630
|
-
`,
|
|
630
|
+
`,Vv=e=>{const{theme:{timeColor:t},tickData:n}=e,{canvasRef:r,canvasMapRef:s}=Js(),{timeScaleHeight:a}=p.useContext(jr),o=ki(),{widthX:i,canvasInfo:l,timeMarkersWithPositions:c}=n,u=qs(i,Le),f=u.map(v=>{const y=v*Le,g=Math.min(i-y,Le);return C.jsx(Wv,{$cssWidth:g,$left:y,$timeScaleHeight:a,width:g*o,height:a*o,"data-index":v,ref:r},`timescale-${v}`)}),m=u.length>0?u[0]*Le:0,d=u.length>0?(u[u.length-1]+1)*Le:1/0,h=u.length>0?c.filter(({pix:v})=>v>=m&&v<d).map(({element:v})=>v):c.map(({element:v})=>v);return p.useLayoutEffect(()=>{for(const[v,y]of s.current.entries()){const g=y.getContext("2d");if(!g)continue;const b=v*Le,w=y.width/o;g.resetTransform(),g.clearRect(0,0,y.width,y.height),g.imageSmoothingEnabled=!1,g.fillStyle=t,g.scale(o,o);for(const[_,x]of l.entries()){if(_<b||_>=b+w)continue;const S=_-b,k=a-x;g.fillRect(S,k,1,x)}}},[s,o,t,a,l,u]),C.jsxs(Bv,{$cssWidth:i,$timeScaleHeight:a,children:[h,f]})},Nv=P.withTheme(Vv),Xl=new Map([[700,{marker:1e3,bigStep:500,smallStep:100}],[1500,{marker:2e3,bigStep:1e3,smallStep:200}],[2500,{marker:2e3,bigStep:1e3,smallStep:500}],[5e3,{marker:5e3,bigStep:1e3,smallStep:500}],[1e4,{marker:1e4,bigStep:5e3,smallStep:1e3}],[12e3,{marker:15e3,bigStep:5e3,smallStep:1e3}],[1/0,{marker:3e4,bigStep:1e4,smallStep:5e3}]]);function po(e){const t=Xl.keys();let n;for(const r of t)if(e<r){n=Xl.get(r);break}return n===void 0&&(n={marker:3e4,bigStep:1e4,smallStep:5e3}),n}function zv(e){const t=Math.floor(e/1e3),n=t%60;return`${(t-n)/60}:${String(n).padStart(2,"0")}`}var jv=P.div.attrs(e=>({style:{left:`${e.$left+4}px`}}))`
|
|
631
631
|
position: absolute;
|
|
632
632
|
font-size: 0.75rem; /* Smaller font to prevent overflow */
|
|
633
633
|
white-space: nowrap; /* Prevent text wrapping */
|
|
634
634
|
color: ${e=>e.theme.timeColor}; /* Use theme color instead of inheriting */
|
|
635
|
-
`,Xd=({renderTick:e})=>{const{samplesPerPixel:t,sampleRate:n,duration:r,timeScaleHeight:s}=p.useContext(jr),a=Zd(),o=p.useMemo(()=>{const i=
|
|
635
|
+
`,Xd=({renderTick:e})=>{const{samplesPerPixel:t,sampleRate:n,duration:r,timeScaleHeight:s}=p.useContext(jr),a=Zd(),o=p.useMemo(()=>{const i=rh(r/1e3,t,n);if(a&&a.scaleMode==="beats"){const{bpm:y,timeSignature:g,ticksPerBar:b,ticksPerBeat:w}=a,_=new Map,x=[],S=r/1e3,k=Math.ceil(S*y*Hn/60),I=On(w,y,n)/t,E=On(b,y,n)/t,T=10,R=30;let A;if(I>=T)A=w;else if(E>=T)A=b;else{const $=Math.ceil(T/E);A=b*$}let M;if(I>=R)M=w;else if(E>=R)M=b;else{const $=Math.ceil(R/E);M=b*$}for(let $=0;$<=k;$+=A){const F=On($,y,n),L=nh(F,t);if(L>=i)break;const z=$%b===0,q=$%M===0,Y=z?s:Math.floor(q?s/2:s/5);if(_.set(L,Y),q){const ne=sh($,g),G=e?C.jsx(p.Fragment,{children:e(ne,L)},`bb-${$}`):C.jsx("div",{style:{position:"absolute",left:`${L+4}px`,fontSize:"0.75rem",whiteSpace:"nowrap"},children:ne},`bb-${$}`);x.push({pix:L,element:G})}}return{widthX:i,canvasInfo:_,timeMarkersWithPositions:x}}const l=po(t),{marker:c,bigStep:u,smallStep:f}=l,m=new Map,d=[],h=n/t;let v=0;for(let y=0;y<i;y+=h*f/1e3){const g=Math.floor(y);if(v%c===0){const b=zv(v),w=e?C.jsx(p.Fragment,{children:e(b,g)},`timestamp-${v}`):C.jsx(jv,{$left:g,children:b},b);d.push({pix:g,element:w}),m.set(g,s)}else v%u===0?m.set(g,Math.floor(s/2)):v%f===0&&m.set(g,Math.floor(s/5));v+=f}return{widthX:i,canvasInfo:m,timeMarkersWithPositions:d}},[a,r,t,n,s,e]);return C.jsx(Nv,{tickData:o})},Zv=P.div`
|
|
636
636
|
display: inline-flex;
|
|
637
637
|
align-items: center;
|
|
638
638
|
gap: 0.5rem;
|
|
639
|
-
`,
|
|
639
|
+
`,Hv=[{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"}],Gv=({value:e,onChange:t,disabled:n=!1,className:r})=>{const s=a=>{t(a.target.value)};return C.jsx(Zv,{className:r,children:C.jsx(Pd,{className:"time-format",value:e,onChange:s,disabled:n,"aria-label":"Time format selection",children:Hv.map(a=>C.jsx("option",{value:a.value,children:a.label},a.value))})})},Uv=P.div.attrs(e=>({style:{height:`${e.$waveHeight*e.$numChannels+(e.$hasClipHeaders?Ci:0)}px`}}))`
|
|
640
640
|
position: relative;
|
|
641
641
|
${e=>e.$width!==void 0&&`width: ${e.$width}px;`}
|
|
642
|
-
`,
|
|
642
|
+
`,Xv=P.div.attrs(e=>({style:{paddingLeft:`${e.$offset||0}px`}}))`
|
|
643
643
|
position: relative;
|
|
644
644
|
background: ${e=>e.$backgroundColor||"transparent"};
|
|
645
645
|
height: 100%;
|
|
646
|
-
`,Yd=({numChannels:e,children:t,className:n,backgroundColor:r,offset:s=0,width:a,hasClipHeaders:o=!1,onClick:i,trackId:l,isSelected:c=!1})=>{const{waveHeight:u}=Qs();return
|
|
646
|
+
`,Yd=({numChannels:e,children:t,className:n,backgroundColor:r,offset:s=0,width:a,hasClipHeaders:o=!1,onClick:i,trackId:l,isSelected:c=!1})=>{const{waveHeight:u}=Qs();return C.jsx(Uv,{$numChannels:e,className:n,$waveHeight:u,$width:a,$hasClipHeaders:o,children:C.jsx(Xv,{$backgroundColor:r,$offset:s,onClick:i,"data-track-id":l,children:t})})},Yl=P.button.attrs({type:"button"})`
|
|
647
647
|
display: inline-block;
|
|
648
648
|
font-family: ${e=>e.theme.fontFamily};
|
|
649
649
|
font-weight: 500;
|
|
@@ -705,7 +705,7 @@
|
|
|
705
705
|
box-shadow: 0 0 0 0.2rem ${e.theme.inputFocusBorder}33;
|
|
706
706
|
}
|
|
707
707
|
`}
|
|
708
|
-
`,
|
|
708
|
+
`,Yv=P.div`
|
|
709
709
|
margin-bottom: 0.3rem;
|
|
710
710
|
|
|
711
711
|
button:not(:first-child) {
|
|
@@ -717,7 +717,7 @@
|
|
|
717
717
|
border-top-right-radius: 0;
|
|
718
718
|
border-bottom-right-radius: 0;
|
|
719
719
|
}
|
|
720
|
-
`,
|
|
720
|
+
`,Kv=P.button`
|
|
721
721
|
position: absolute;
|
|
722
722
|
left: 0;
|
|
723
723
|
top: 0;
|
|
@@ -739,7 +739,7 @@
|
|
|
739
739
|
opacity: 1;
|
|
740
740
|
color: #dc3545;
|
|
741
741
|
}
|
|
742
|
-
`,
|
|
742
|
+
`,qv=({onClick:e,title:t="Remove track"})=>C.jsx(Kv,{onClick:e,title:t,children:C.jsx(Mg,{size:12,weight:"bold"})}),Jv=P.div`
|
|
743
743
|
background: transparent;
|
|
744
744
|
width: 100%;
|
|
745
745
|
height: 100%;
|
|
@@ -752,7 +752,7 @@
|
|
|
752
752
|
text-align: center;
|
|
753
753
|
border: 1px solid ${e=>e.theme.borderColor};
|
|
754
754
|
border-radius: ${e=>e.theme.borderRadius};
|
|
755
|
-
`,
|
|
755
|
+
`,Qv=P.header`
|
|
756
756
|
overflow: hidden;
|
|
757
757
|
height: 26px;
|
|
758
758
|
width: 100%;
|
|
@@ -763,7 +763,7 @@
|
|
|
763
763
|
font-size: ${e=>e.theme.fontSizeSmall};
|
|
764
764
|
color: ${e=>e.theme.textColor};
|
|
765
765
|
background-color: transparent;
|
|
766
|
-
`,
|
|
766
|
+
`,e0=e=>C.jsx($d,{weight:"light",...e}),t0=e=>C.jsx(Td,{weight:"light",...e}),n0=e=>C.jsx(Ad,{weight:"bold",...e}),Kl=P(Fd)`
|
|
767
767
|
width: 75%;
|
|
768
768
|
height: 5px;
|
|
769
769
|
background: ${e=>e.theme.sliderTrackColor};
|
|
@@ -820,10 +820,10 @@
|
|
|
820
820
|
padding: 0 1rem;
|
|
821
821
|
margin-bottom: 0.2rem;
|
|
822
822
|
font-size: 14px;
|
|
823
|
-
`,
|
|
823
|
+
`,r0=P.div`
|
|
824
824
|
position: relative;
|
|
825
825
|
display: inline-block;
|
|
826
|
-
`,
|
|
826
|
+
`,s0=P.button`
|
|
827
827
|
background: none;
|
|
828
828
|
border: none;
|
|
829
829
|
cursor: pointer;
|
|
@@ -837,7 +837,7 @@
|
|
|
837
837
|
&:hover {
|
|
838
838
|
opacity: 1;
|
|
839
839
|
}
|
|
840
|
-
`,ws=180,
|
|
840
|
+
`,ws=180,a0=P.div`
|
|
841
841
|
position: fixed;
|
|
842
842
|
top: ${e=>e.$top}px;
|
|
843
843
|
left: ${e=>e.$left}px;
|
|
@@ -849,12 +849,12 @@
|
|
|
849
849
|
padding: 0.5rem 0;
|
|
850
850
|
min-width: ${ws}px;
|
|
851
851
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
852
|
-
`,
|
|
852
|
+
`,o0=P.hr`
|
|
853
853
|
border: none;
|
|
854
854
|
border-top: 1px solid rgba(128, 128, 128, 0.3);
|
|
855
855
|
margin: 0.35rem 0;
|
|
856
|
-
`,
|
|
857
|
-
`,10)+1,a=r.substring(s)+"",o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}function g0(e,t,n){var r;return function(a){return r=r||m0(e),new Worker(r,a)}}var v0=g0("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogQXVkaW9CdWZmZXItYmFzZWQgV2F2ZWZvcm1EYXRhIGdlbmVyYXRvcgogICAqCiAgICogQWRhcHRlZCBmcm9tIEJsb2NrRmlsZTo6Q2FsY1N1bW1hcnkgaW4gQXVkYWNpdHksIHdpdGggcGVybWlzc2lvbi4KICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F1ZGFjaXR5L2F1ZGFjaXR5L2Jsb2IvCiAgICogICAxMTA4YzEzNzZjMDkxNjYxNjIzMzVmYWI0NzQzMDA4Y2JhNTdjNGVlL3NyYy9CbG9ja0ZpbGUuY3BwI0wxOTgKICAgKi8KCiAgdmFyIElOVDhfTUFYID0gMTI3OwogIHZhciBJTlQ4X01JTiA9IC0xMjg7CiAgdmFyIElOVDE2X01BWCA9IDMyNzY3OwogIHZhciBJTlQxNl9NSU4gPSAtMzI3Njg7CiAgZnVuY3Rpb24gY2FsY3VsYXRlV2F2ZWZvcm1EYXRhTGVuZ3RoKGF1ZGlvX3NhbXBsZV9jb3VudCwgc2NhbGUpIHsKICAgIHZhciBkYXRhX2xlbmd0aCA9IE1hdGguZmxvb3IoYXVkaW9fc2FtcGxlX2NvdW50IC8gc2NhbGUpOwogICAgdmFyIHNhbXBsZXNfcmVtYWluaW5nID0gYXVkaW9fc2FtcGxlX2NvdW50IC0gZGF0YV9sZW5ndGggKiBzY2FsZTsKICAgIGlmIChzYW1wbGVzX3JlbWFpbmluZyA+IDApIHsKICAgICAgZGF0YV9sZW5ndGgrKzsKICAgIH0KICAgIHJldHVybiBkYXRhX2xlbmd0aDsKICB9CiAgZnVuY3Rpb24gZ2VuZXJhdGVXYXZlZm9ybURhdGEob3B0aW9ucykgewogICAgdmFyIHNjYWxlID0gb3B0aW9ucy5zY2FsZTsKICAgIHZhciBhbXBsaXR1ZGVfc2NhbGUgPSBvcHRpb25zLmFtcGxpdHVkZV9zY2FsZTsKICAgIHZhciBzcGxpdF9jaGFubmVscyA9IG9wdGlvbnMuc3BsaXRfY2hhbm5lbHM7CiAgICB2YXIgbGVuZ3RoID0gb3B0aW9ucy5sZW5ndGg7CiAgICB2YXIgc2FtcGxlX3JhdGUgPSBvcHRpb25zLnNhbXBsZV9yYXRlOwogICAgdmFyIGNoYW5uZWxzID0gb3B0aW9ucy5jaGFubmVscy5tYXAoZnVuY3Rpb24gKGNoYW5uZWwpIHsKICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoY2hhbm5lbCk7CiAgICB9KTsKICAgIHZhciBvdXRwdXRfY2hhbm5lbHMgPSBzcGxpdF9jaGFubmVscyA/IGNoYW5uZWxzLmxlbmd0aCA6IDE7CiAgICB2YXIgaGVhZGVyX3NpemUgPSAyNDsKICAgIHZhciBkYXRhX2xlbmd0aCA9IGNhbGN1bGF0ZVdhdmVmb3JtRGF0YUxlbmd0aChsZW5ndGgsIHNjYWxlKTsKICAgIHZhciBieXRlc19wZXJfc2FtcGxlID0gb3B0aW9ucy5iaXRzID09PSA4ID8gMSA6IDI7CiAgICB2YXIgdG90YWxfc2l6ZSA9IGhlYWRlcl9zaXplICsgZGF0YV9sZW5ndGggKiAyICogYnl0ZXNfcGVyX3NhbXBsZSAqIG91dHB1dF9jaGFubmVsczsKICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodG90YWxfc2l6ZSk7CiAgICB2YXIgZGF0YV92aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICB2YXIgc2NhbGVfY291bnRlciA9IDA7CiAgICB2YXIgb2Zmc2V0ID0gaGVhZGVyX3NpemU7CiAgICB2YXIgbWluX3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICB2YXIgbWF4X3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICBmb3IgKHZhciBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dF9jaGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgIG1pbl92YWx1ZVtjaGFubmVsXSA9IEluZmluaXR5OwogICAgICBtYXhfdmFsdWVbY2hhbm5lbF0gPSAtSW5maW5pdHk7CiAgICB9CiAgICB2YXIgcmFuZ2VfbWluID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NSU4gOiBJTlQxNl9NSU47CiAgICB2YXIgcmFuZ2VfbWF4ID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NQVggOiBJTlQxNl9NQVg7CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMCwgMiwgdHJ1ZSk7IC8vIFZlcnNpb24KICAgIGRhdGFfdmlldy5zZXRVaW50MzIoNCwgb3B0aW9ucy5iaXRzID09PSA4LCB0cnVlKTsgLy8gSXMgOCBiaXQ/CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoOCwgc2FtcGxlX3JhdGUsIHRydWUpOyAvLyBTYW1wbGUgcmF0ZQogICAgZGF0YV92aWV3LnNldEludDMyKDEyLCBzY2FsZSwgdHJ1ZSk7IC8vIFNjYWxlCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMTYsIGRhdGFfbGVuZ3RoLCB0cnVlKTsgLy8gTGVuZ3RoCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMjAsIG91dHB1dF9jaGFubmVscywgdHJ1ZSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzYW1wbGUgPSAwOwogICAgICBpZiAob3V0cHV0X2NoYW5uZWxzID09PSAxKSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwgPSAwOyBfY2hhbm5lbCA8IGNoYW5uZWxzLmxlbmd0aDsgKytfY2hhbm5lbCkgewogICAgICAgICAgc2FtcGxlICs9IGNoYW5uZWxzW19jaGFubmVsXVtpXTsKICAgICAgICB9CiAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBzYW1wbGUgKiBhbXBsaXR1ZGVfc2NhbGUgLyBjaGFubmVscy5sZW5ndGgpOwogICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbMF0pIHsKICAgICAgICAgIG1pbl92YWx1ZVswXSA9IHNhbXBsZTsKICAgICAgICAgIGlmIChtaW5fdmFsdWVbMF0gPCByYW5nZV9taW4pIHsKICAgICAgICAgICAgbWluX3ZhbHVlWzBdID0gcmFuZ2VfbWluOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc2FtcGxlID4gbWF4X3ZhbHVlWzBdKSB7CiAgICAgICAgICBtYXhfdmFsdWVbMF0gPSBzYW1wbGU7CiAgICAgICAgICBpZiAobWF4X3ZhbHVlWzBdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgIG1heF92YWx1ZVswXSA9IHJhbmdlX21heDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwyID0gMDsgX2NoYW5uZWwyIDwgb3V0cHV0X2NoYW5uZWxzOyArK19jaGFubmVsMikgewogICAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBjaGFubmVsc1tfY2hhbm5lbDJdW2ldICogYW1wbGl0dWRlX3NjYWxlKTsKICAgICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtaW5fdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1pbl92YWx1ZVtfY2hhbm5lbDJdIDwgcmFuZ2VfbWluKSB7CiAgICAgICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9taW47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChzYW1wbGUgPiBtYXhfdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtYXhfdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1heF92YWx1ZVtfY2hhbm5lbDJdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgICAgbWF4X3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9tYXg7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCsrc2NhbGVfY291bnRlciA9PT0gc2NhbGUpIHsKICAgICAgICBmb3IgKHZhciBfY2hhbm5lbDMgPSAwOyBfY2hhbm5lbDMgPCBvdXRwdXRfY2hhbm5lbHM7IF9jaGFubmVsMysrKSB7CiAgICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtaW5fdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50MTYob2Zmc2V0LCBtaW5fdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQxNihvZmZzZXQgKyAyLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIG9mZnNldCArPSA0OwogICAgICAgICAgfQogICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsM10gPSBJbmZpbml0eTsKICAgICAgICAgIG1heF92YWx1ZVtfY2hhbm5lbDNdID0gLUluZmluaXR5OwogICAgICAgIH0KICAgICAgICBzY2FsZV9jb3VudGVyID0gMDsKICAgICAgfQogICAgfQogICAgaWYgKHNjYWxlX2NvdW50ZXIgPiAwKSB7CiAgICAgIGZvciAodmFyIF9jaGFubmVsNCA9IDA7IF9jaGFubmVsNCA8IG91dHB1dF9jaGFubmVsczsgX2NoYW5uZWw0KyspIHsKICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50OChvZmZzZXQrKywgbWluX3ZhbHVlW19jaGFubmVsNF0pOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDgob2Zmc2V0KyssIG1heF92YWx1ZVtfY2hhbm5lbDRdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCwgbWluX3ZhbHVlW19jaGFubmVsNF0sIHRydWUpOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCArIDIsIG1heF92YWx1ZVtfY2hhbm5lbDRdLCB0cnVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBidWZmZXI7CiAgfQoKICBvbm1lc3NhZ2UgPSBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZ0KSB7CiAgICB2YXIgYnVmZmVyID0gZ2VuZXJhdGVXYXZlZm9ybURhdGEoZXZ0LmRhdGEpOwoKICAgIC8vIFRyYW5zZmVyIGJ1ZmZlciB0byB0aGUgY2FsbGluZyB0aHJlYWQKICAgIHRoaXMucG9zdE1lc3NhZ2UoYnVmZmVyLCBbYnVmZmVyXSk7CiAgICB0aGlzLmNsb3NlKCk7CiAgfTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdhdmVmb3JtLWRhdGEtd29ya2VyLmpzLm1hcAoK");function vt(e){if(d0(e)&&(e=h0(e)),f0(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 xn(this,t)}else throw new TypeError("WaveformData.create(): Unknown data format")}var rr={scale:512,bits:8,amplitude_scale:1,split_channels:!1,disable_worker:!1};function y0(e){var t={scale:e.scale||rr.scale,bits:e.bits||rr.bits,amplitude_scale:e.amplitude_scale||rr.amplitude_scale,split_channels:e.split_channels||rr.split_channels,disable_worker:e.disable_worker||rr.disable_worker};return t}function b0(e){for(var t=[],n=0;n<e.numberOfChannels;++n)t.push(e.getChannelData(n).buffer);return t}function Kd(e,t,n){var r=b0(e);if(t.disable_worker){var s=u0({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 vt(s),e)}else{var a=new v0;a.onmessage=function(o){n(void 0,new vt(o.data),e)},a.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 w0(e,t,n,r){function s(o){o||(o=new DOMException("EncodingError")),r(o),r=function(){}}var a=e.decodeAudioData(t,function(o){Kd(o,n,r)},s);a&&a.catch(s)}vt.create=function(t){return new vt(t)};vt.createFromAudio=function(e,t){var n=y0(e);if(e.audio_context&&e.array_buffer)return w0(e.audio_context,e.array_buffer,n,t);if(e.audio_buffer)return Kd(e.audio_buffer,n,t);throw new TypeError("WaveformData.createFromAudio(): Pass either an AudioContext and ArrayBuffer, or an AudioBuffer object")};function ea(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,s=this._inputData.bits===8?1:2,a=r+n*2*this._inputData.channels*s;this._output_data=new ArrayBuffer(a),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 vt(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 i=0;i<o;++i)this._input_buffer_size>0?(this._min[i]=this._inputData.channel(i).min_sample(this._input_index),this._max[i]=this._inputData.channel(i).max_sample(this._input_index)):(this._min[i]=0,this._max[i]=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}ea.prototype.sample_at_pixel=function(e){return Math.floor(e*this._output_samples_per_pixel)};ea.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 s=0;s<n;++s)r=this._outputWaveformData.channel(s),r.set_min_sample(this._output_index-1,this._min[s]),r.set_max_sample(this._output_index-1,this._max[s]);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 a=0;a<n;++a)this._min[a]=this._max_value,this._max[a]=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 i=r.min_sample(this._input_index);i<this._min[o]&&(this._min[o]=i),i=r.max_sample(this._input_index),i>this._max[o]&&(this._max[o]=i)}this._input_index++}e++}if(this._input_index<this._input_buffer_size)return!1;if(this._input_index!==this._last_input_index)for(var l=0;l<n;++l)r=this._outputWaveformData.channel(l),r.set_min_sample(this._output_index-1,this._min[l]),r.set_max_sample(this._output_index-1,this._max[l]);return!0};ea.prototype.getOutputData=function(){return this._output_data};vt.prototype={_getResampleOptions:function(t){var n={};if(n.scale=t.scale,n.width=t.width,!Mn(n.width)&&(typeof n.width!="number"||n.width<=0))throw new RangeError("WaveformData.resample(): width should be a positive integer value");if(!Mn(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 ea(t);!n.next(););return new vt(n.getOutputData())},concat:function(){var t=this,n=Array.prototype.slice.call(arguments);n.forEach(function(s){if(t.channels!==s.channels||t.sample_rate!==s.sample_rate||t.bits!==s.bits||t.scale!==s.scale)throw new Error("WaveformData.concat(): Waveforms are incompatible")});var r=this._concatBuffers.apply(this,n);return vt.create(r)},_concatBuffers:function(){for(var t=Array.prototype.slice.call(arguments),n=this._offset,r=n,s=0,a=[this].concat(t).map(function(g){return g._data.buffer}),o=0;o<a.length;o++){var i=a[o],l=new DataView(i).getInt32(16,!0);r+=i.byteLength-n,s+=l}for(var c=new ArrayBuffer(r),u=new DataView(a[0]),f=new DataView(c),m=0;m<n;m++)f.setUint8(m,u.getUint8(m));f.setInt32(16,s,!0);for(var d=0,h=new Uint8Array(c,n),v=0;v<a.length;v++){var y=a[v];h.set(new Uint8Array(y,n),d),d+=y.byteLength-n}return c},slice:function(t){var n=0,r=0;if(!Mn(t.startIndex)&&!Mn(t.endIndex)?(n=t.startIndex,r=t.endIndex):!Mn(t.startTime)&&!Mn(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 s=r-n,a=24,o=this.bits===8?1:2,i=a+s*2*this.channels*o,l=new ArrayBuffer(i),c=new DataView(l);c.setInt32(0,2,!0),c.setUint32(4,this.bits===8,!0),c.setInt32(8,this.sample_rate,!0),c.setInt32(12,this.scale,!0),c.setInt32(16,s,!0),c.setInt32(20,this.channels,!0);for(var u=0;u<s*this.channels*2;u++){var f=this._at(n*this.channels*2+u);this.bits===8?c.setInt8(a+u,f):c.setInt16(a+u*2,f,!0)}return new vt(l)},_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 Ei(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 vt.create(r)}else{const r=await t.json();return vt.create(r)}}function qd(e,t=0){const n=e.channel(t),r=e.bits,s=n.min_array(),a=n.max_array(),o=s.length,i=r===8?new Int8Array(o*2):new Int16Array(o*2);for(let l=0;l<o;l++)i[l*2]=s[l],i[l*2+1]=a[l];return{data:i,bits:r,length:o,sampleRate:e.sample_rate}}async function _0(e,t=0){const n=await Ei(e);return qd(n,t)}async function x0(e){const t=await Ei(e);return{sampleRate:t.sample_rate,channels:t.channels,duration:t.duration,samplesPerPixel:t.scale,length:t.length,bits:t.bits}}function Jd(e,t,n,r){let s=e;if(n!==void 0&&r!==void 0)if(s.scale!==t){const a=e.scale,o=t/a,i=Math.floor(n/t),l=Math.ceil((n+r)/t),c=Math.floor(i*o),u=Math.min(e.length,Math.ceil(l*o));if(c>=u)return null;s=s.slice({startIndex:c,endIndex:u}),s=s.resample({scale:t})}else{const a=Math.floor(n/t),o=Math.ceil((n+r)/t);s=s.slice({startIndex:a,endIndex:o})}else s.scale!==t&&(s=s.resample({scale:t}));return s}function S0(e,t,n=0,r,s){const a=Jd(e,t,r,s);if(a===null){const m=e.bits;return{data:m===8?new Int8Array(0):new Int16Array(0),bits:m,length:0}}const o=a.channel(n),i=a.bits,l=o.min_array(),c=o.max_array(),u=l.length,f=i===8?new Int8Array(u*2):new Int16Array(u*2);for(let m=0;m<u;m++)f[m*2]=l[m],f[m*2+1]=c[m];return{data:f,bits:i,length:u}}function Jl(e,t,n,r,s){const a=Jd(e,t,r,s);if(a===null){const u=e.bits;return{length:0,data:[],bits:u}}const o=a.channels,i=a.bits,l=[];for(let u=0;u<o;u++){const f=a.channel(u),m=f.min_array(),d=f.max_array(),h=m.length,v=i===8?new Int8Array(h*2):new Int16Array(h*2);for(let y=0;y<h;y++)v[y*2]=m[y],v[y*2+1]=d[y];l.push(v)}if(n&&l.length>1){const u=1/l.length,f=l[0].length/2,m=i===8?new Int8Array(f*2):new Int16Array(f*2);for(let d=0;d<f;d++){let h=0,v=0;for(let y=0;y<l.length;y++)h+=u*l[y][d*2],v+=u*l[y][d*2+1];m[d*2]=h,m[d*2+1]=v}return{length:f,data:[m],bits:i}}return{length:l.length>0?l[0].length/2:0,data:l,bits:i}}function Qd(){const[e,t]=p.useState("hh:mm:ss.uuu");return{timeFormat:e,setTimeFormat:t,formatTime:s=>Bn(s,e),parseTime:s=>jd(s,e)}}function ef({engineRef:e,initialSamplesPerPixel:t}){const[n,r]=p.useState(t),[s,a]=p.useState(!0),[o,i]=p.useState(!0),l=p.useRef(!0),c=p.useRef(!0),u=p.useRef(t),f=p.useCallback(()=>{e.current?.zoomIn()},[e]),m=p.useCallback(()=>{e.current?.zoomOut()},[e]),d=p.useCallback(h=>{h.samplesPerPixel!==u.current&&(u.current=h.samplesPerPixel,p.startTransition(()=>{r(h.samplesPerPixel)})),h.canZoomIn!==l.current&&(l.current=h.canZoomIn,a(h.canZoomIn)),h.canZoomOut!==c.current&&(c.current=h.canZoomOut,i(h.canZoomOut))},[]);return{samplesPerPixel:n,zoomIn:f,zoomOut:m,canZoomIn:s,canZoomOut:o,onEngineState:d}}function tf({engineRef:e,initialVolume:t=1}){const[n,r]=p.useState(t),s=p.useRef(t),a=p.useCallback(i=>{e.current?e.current.setMasterVolume(i):(s.current=i,r(i))},[e]),o=p.useCallback(i=>{i.masterVolume!==s.current&&(s.current=i.masterVolume,r(i.masterVolume))},[]);return{masterVolume:n,setMasterVolume:a,masterVolumeRef:s,onEngineState:o}}function C0({engineRef:e}){const[t,n]=p.useState(0),[r,s]=p.useState(0),a=p.useRef(0),o=p.useRef(0),i=p.useCallback((c,u)=>{e.current?.setSelection(c,u)},[e]),l=p.useCallback(c=>{c.selectionStart!==a.current&&(a.current=c.selectionStart,n(c.selectionStart)),c.selectionEnd!==o.current&&(o.current=c.selectionEnd,s(c.selectionEnd))},[]);return{selectionStart:t,selectionEnd:r,setSelection:i,selectionStartRef:a,selectionEndRef:o,onEngineState:l}}function k0({engineRef:e}){const[t,n]=p.useState(!1),[r,s]=p.useState(0),[a,o]=p.useState(0),i=p.useRef(!1),l=p.useRef(0),c=p.useRef(0),u=p.useCallback(h=>{e.current?.setLoopEnabled(h)},[e]),f=p.useCallback((h,v)=>{e.current?.setLoopRegion(h,v)},[e]),m=p.useCallback(()=>{e.current?.setLoopRegion(0,0)},[e]),d=p.useCallback(h=>{h.isLoopEnabled!==i.current&&(i.current=h.isLoopEnabled,n(h.isLoopEnabled)),h.loopStart!==l.current&&(l.current=h.loopStart,s(h.loopStart)),h.loopEnd!==c.current&&(c.current=h.loopEnd,o(h.loopEnd))},[]);return{isLoopEnabled:t,loopStart:r,loopEnd:a,setLoopEnabled:u,setLoopRegion:f,clearLoopRegion:m,isLoopEnabledRef:i,loopStartRef:l,loopEndRef:c,onEngineState:d}}function E0({engineRef:e}){const[t,n]=p.useState(null),r=p.useRef(null),s=p.useCallback(o=>{e.current?.selectTrack(o)},[e]),a=p.useCallback(o=>{o.selectedTrackId!==r.current&&(r.current=o.selectedTrackId,n(o.selectedTrackId))},[]);return{selectedTrackId:t,setSelectedTrackId:s,onEngineState:a,selectedTrackIdRef:r}}const I0=(e=256)=>{const t=p.useRef(null),n=p.useCallback((r,s,a)=>{const o=new O.Analyser("fft",e);return r.connect(o),r.connect(s),t.current=o,function(){o.dispose(),t.current=null}},[e]);return{analyserRef:t,masterEffects:n}},M0=48e3;function os(e,t,n,r){const s=n??e.audioBuffer,a=s?.sampleRate??e.waveformData?.sample_rate??M0,o=s?.duration??e.waveformData?.duration??(e.duration!=null?e.duration+(e.offset??0):void 0);if(o===void 0)return console.warn(`[waveform-playlist] Track ${t+1} ("${e.name??"unnamed"}"): Cannot create track — provide duration, audioBuffer, or waveformData with duration.`),null;const i=lc({audioBuffer:s,sampleRate:a,sourceDuration:o,startTime:e.startTime??0,duration:e.duration??o,offset:e.offset??0,name:e.name||`Track ${t+1}`,fadeIn:e.fadeIn,fadeOut:e.fadeOut,waveformData:e.waveformData});if(isNaN(i.startSample)||isNaN(i.durationSamples)||isNaN(i.offsetSamples))return console.error(`[waveform-playlist] Invalid clip values for track ${t+1} ("${e.name??"unnamed"}"): startSample=${i.startSample}, durationSamples=${i.durationSamples}, offsetSamples=${i.offsetSamples}`),null;const l={...cc({name:e.name||`Track ${t+1}`,clips:[i],muted:e.muted??!1,soloed:e.soloed??!1,volume:e.volume??1,pan:e.pan??0,color:e.color}),effects:e.effects,renderMode:e.renderMode,spectrogramConfig:e.spectrogramConfig,spectrogramColorMap:e.spectrogramColorMap},c=r.get(t);return c?(l.id=c.trackId,l.clips[0]={...l.clips[0],id:c.clipId}):r.set(t,{trackId:l.id,clipId:l.clips[0].id}),l}function A0(e,t={}){const{immediate:n=!1,progressive:r=!1}=t,s=n||r,[a,o]=p.useState(!0),[i,l]=p.useState(null),[c,u]=p.useState(0),f=e.length,[m,d]=p.useState(new Map),h=p.useRef(new Map),v=p.useMemo(()=>{if(!s)return null;const _=[];for(let w=0;w<e.length;w++){const x=os(e[w],w,m.get(w),h.current);x&&_.push(x)}return _},[s,e,m]),[y,g]=p.useState(v??[]),b=p.useRef(v);return v!==b.current&&(b.current=v,v&&g(v)),p.useEffect(()=>{if(e.length===0){g([]),o(!1),u(0);return}let _=!1;const w=new AbortController;return(async()=>{try{o(!0),l(null),u(0),s&&d(new Map);const C=ic.getContext().rawContext,k=e.map(async(E,T)=>{if(E.audioBuffer){if(s&&!_){d($=>{const F=new Map($);return F.set(T,E.audioBuffer),F}),u($=>$+1);return}return os(E,T,E.audioBuffer,h.current)}if(!E.src&&E.waveformData){if(s&&!_){u($=>$+1);return}return os(E,T,void 0,h.current)}if(!E.src)throw new Error(`Track ${T+1}: Must provide src, audioBuffer, or waveformData`);const R=await fetch(E.src,{signal:w.signal});if(!R.ok)throw new Error(`Failed to fetch ${E.src}: ${R.statusText}`);const A=await R.arrayBuffer(),M=await C.decodeAudioData(A);if(!M||!M.sampleRate||!M.duration)throw new Error(`Invalid audio buffer for ${E.src}`);if(s&&!_){d($=>{const F=new Map($);return F.set(T,M),F}),u($=>$+1);return}return os(E,T,M,h.current)}),I=await Promise.all(k);if(!_){if(!s){const E=I.filter(T=>T!=null);g(E),u(E.length)}o(!1)}}catch(C){if(!_){const k=C instanceof Error?C.message:"Unknown error loading audio";l(k),o(!1),console.error(`[waveform-playlist] Error loading audio tracks: ${k}`)}}})(),()=>{_=!0,w.abort()}},[e,s]),{tracks:y,loading:a,error:i,loadedCount:c,totalCount:f}}function T0({originalClip:e,clip:t,pixelDelta:n,samplesPerPixel:r,sampleRate:s,boundary:a,sortedClips:o,sortedIndex:i}){const l=n*r,c=Math.floor(.1*s),u={...t,startSample:e.startSample,offsetSamples:e.offsetSamples,durationSamples:e.durationSamples},f=mc(u,Math.floor(l),a,o,i,c);return a==="left"?{startSample:e.startSample+f,durationSamples:e.durationSamples-f,offsetSamples:e.offsetSamples+f}:{startSample:e.startSample,durationSamples:e.durationSamples+f,offsetSamples:e.offsetSamples}}function nf({tracks:e,onTracksChange:t,samplesPerPixel:n,sampleRate:r,engineRef:s,isDraggingRef:a,snapSamplePosition:o}){const i=p.useRef(o);i.current=o;const l=p.useRef(null),c=p.useRef(0),u=p.useCallback(d=>{const h=d.operation.source?.data;if(!h)return;if(!h.boundary){l.current=null;return}const y=e[h.trackIndex]?.clips[h.clipIndex];y&&(l.current={offsetSamples:y.offsetSamples,durationSamples:y.durationSamples,startSample:y.startSample},a.current=!0)},[e,a]),f=p.useCallback(d=>{const h=d.operation.source?.data;if(!h||!h.boundary||!l.current)return;const{boundary:v,trackIndex:y,clipIndex:g}=h,_=(d.to?.x??d.operation.position.current.x)-d.operation.position.initial.x,w=_*n,x=l.current,C=i.current;let k=w;const I=e.map((E,T)=>{if(T!==y)return E;const R=[...E.clips].sort(($,F)=>$.startSample-F.startSample),A=R.findIndex($=>$===E.clips[g]),M=E.clips.map(($,F)=>{if(F!==g)return $;let L=T0({originalClip:x,clip:$,pixelDelta:_,samplesPerPixel:n,sampleRate:r,boundary:v,sortedClips:R,sortedIndex:A});if(C)if(v==="left"){const z=C(L.startSample),q=z-L.startSample;L={startSample:z,durationSamples:L.durationSamples-q,offsetSamples:L.offsetSamples+q},k=z-x.startSample}else{const z=L.startSample+L.durationSamples,q=C(z);L={...L,durationSamples:q-L.startSample},k=L.durationSamples-x.durationSamples}return{...$,startSample:L.startSample,durationSamples:L.durationSamples,offsetSamples:L.offsetSamples}});return{...E,clips:M}});c.current=k,t(I)},[e,t,n,r]),m=p.useCallback(d=>{if(d.canceled){if(l.current){const w=d.operation.source?.data;if(w){const{trackIndex:x,clipIndex:C}=w,k=l.current,I=e.map((E,T)=>{if(T!==x)return E;const R=E.clips.map((A,M)=>M!==C?A:{...A,offsetSamples:k.offsetSamples,durationSamples:k.durationSamples,startSample:k.startSample});return{...E,clips:R}});t(I)}}a.current=!1,l.current=null,c.current=0;return}const h=d.operation.source?.data;if(!h)return;const{trackIndex:v,clipId:y,boundary:g}=h,b=g?c.current:d.operation.transform.x*n,_=e[v]?.id;if(g){a.current=!1,_?s.current?s.current.trimClip(_,y,g,Math.floor(b)):console.warn("[waveform-playlist] engineRef is null — trim not synced to adapter"):console.warn(`[waveform-playlist] onDragEnd: track at index ${v} not found — trim not synced to adapter`),l.current=null,c.current=0;return}_?s.current?s.current.moveClip(_,y,Math.floor(b)):console.warn("[waveform-playlist] engineRef is null — move not synced to adapter"):console.warn(`[waveform-playlist] onDragEnd: track at index ${v} not found — move not synced to adapter`)},[e,t,n,s,a]);return{onDragStart:u,onDragMove:f,onDragEnd:m}}const Ca=.01;function rf({annotations:e,onAnnotationsChange:t,samplesPerPixel:n,sampleRate:r,duration:s,linkEndpoints:a}){const o=p.useRef(null),i=p.useCallback(u=>{const f=u.operation.source?.data;if(!f||f.annotationIndex===void 0){o.current=null;return}const m=e[f.annotationIndex];m&&(o.current={start:m.start,end:m.end,annotationIndex:f.annotationIndex})},[e]),l=p.useCallback(u=>{if(!o.current)return;const f=u.operation.source?.data;if(!f)return;const{edge:m,annotationIndex:d}=f,h=o.current,g=((u.to?.x??u.operation.position.current.x)-u.operation.position.initial.x)*n/r,b=m==="start"?h.start+g:h.end+g,_=$0({annotationIndex:d,newTime:b,isDraggingStart:m==="start",annotations:e,duration:s,linkEndpoints:a});t(_)},[e,t,n,r,s,a]),c=p.useCallback(u=>{if(u.canceled&&o.current){const{annotationIndex:f,start:m,end:d}=o.current,h=e.map((v,y)=>y!==f?v:{...v,start:m,end:d});t(h)}o.current=null},[e,t]);return{onDragStart:i,onDragMove:l,onDragEnd:c}}function $0({annotationIndex:e,newTime:t,isDraggingStart:n,annotations:r,duration:s,linkEndpoints:a}){const o=[...r],i=r[e];if(n){const l=Math.min(i.end-.1,Math.max(0,t)),c=l-i.start;if(o[e]={...i,start:l},a&&e>0){const u=o[e-1];Math.abs(u.end-i.start)<Ca?o[e-1]={...u,end:Math.max(u.start+.1,u.end+c)}:l<=u.end&&(o[e]={...o[e],start:u.end})}else!a&&e>0&&l<o[e-1].end&&(o[e-1]={...o[e-1],end:l})}else{const l=Math.max(i.start+.1,Math.min(t,s)),c=l-i.end;if(o[e]={...i,end:l},a&&e<o.length-1){const u=o[e+1];if(Math.abs(u.start-i.end)<Ca){const f=u.start+c;o[e+1]={...u,start:Math.min(u.end-.1,f)};let m=e+1;for(;m<o.length-1;){const d=o[m],h=o[m+1];if(Math.abs(h.start-d.end)<Ca){const v=d.end-r[m].end;o[m+1]={...h,start:Math.min(h.end-.1,h.start+v)},m++}else break}}else l>=u.start&&(o[e]={...o[e],end:u.start})}else if(!a&&e<o.length-1&&l>o[e+1].start){const u=o[e+1];o[e+1]={...u,start:l};let f=e+1;for(;f<o.length-1;){const m=o[f],d=o[f+1];if(m.end>d.start)o[f+1]={...d,start:m.end},f++;else break}}}return o}function sf(e={}){const{touchOptimized:t=!1,touchDelay:n=250,touchTolerance:r=5,mouseDistance:s=1}=e;return p.useMemo(()=>t?[io.configure({activationConstraints(a){return a.pointerType==="touch"?[new Ot.Delay({value:n,tolerance:r})]:[new Ot.Distance({value:s})]}})]:[io.configure({activationConstraints:[new Ot.Distance({value:s})]})],[t,n,r,s])}const R0=e=>{const{tracks:t,sampleRate:n,engineRef:r}=e,{currentTimeRef:s}=ct(),{selectedTrackId:a}=ut(),o=p.useCallback((l,c,u)=>{const{samplesPerPixel:f}=e,m=t[l];if(!m)return!1;const d=m.clips[c];if(!d)return!1;const h=Math.round(u*n),v=hh(h,f),y=Math.floor(.1*n);if(!gc(d,v,y))return console.warn("Split point is invalid (outside bounds or too close to edge)"),!1;const g=r.current;return g?(g.splitClip(m.id,d.id,v),!0):(console.warn("[waveform-playlist] engineRef is null — split not synced to adapter"),!1)},[t,e,n,r]);return{splitClipAtPlayhead:p.useCallback(()=>{if(!a)return console.warn("[waveform-playlist] No track selected — click a clip to select a track first"),!1;const l=t.findIndex(f=>f.id===a);if(l===-1)return console.warn("Selected track not found"),!1;const c=t[l],u=s.current??0;for(let f=0;f<c.clips.length;f++){const m=c.clips[f],d=m.startSample/n,h=(m.startSample+m.durationSamples)/n;if(u>d&&u<h)return o(l,f,u)}return console.warn(`[waveform-playlist] No clip found at playhead position on track "${c.name}"`),!1},[t,s,a,o,n]),splitClipAt:o}},Bs=e=>{const{shortcuts:t,enabled:n=!0}=e,r=p.useCallback(s=>{if(!n)return;const a=s.target;if(a.tagName==="INPUT"||a.tagName==="TEXTAREA"||a.isContentEditable)return;const o=t.find(i=>{const l=s.key.toLowerCase()===i.key.toLowerCase()||s.key===i.key,c=i.ctrlKey===void 0||s.ctrlKey===i.ctrlKey,u=i.shiftKey===void 0||s.shiftKey===i.shiftKey,f=i.metaKey===void 0||s.metaKey===i.metaKey,m=i.altKey===void 0||s.altKey===i.altKey;return l&&c&&u&&f&&m});o&&(o.preventDefault!==!1&&s.preventDefault(),o.action())},[t,n]);p.useEffect(()=>{if(n)return window.addEventListener("keydown",r),()=>{window.removeEventListener("keydown",r)}},[r,n])},D0=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("+")},P0=(e={})=>{const{enabled:t=!0,additionalShortcuts:n=[],shortcuts:r}=e,{isPlaying:s}=ct(),{setCurrentTime:a,play:o,pause:i,stop:l}=Te(),c=p.useCallback(()=>{s?i():o()},[s,o,i]),u=p.useCallback(()=>{l()},[l]),f=p.useCallback(()=>{a(0),s&&o(0)},[s,a,o]),d=r??[...[{key:" ",action:c,description:"Play/Pause",preventDefault:!0},{key:"Escape",action:u,description:"Stop",preventDefault:!0},{key:"0",action:f,description:"Rewind to start",preventDefault:!0}],...n];return Bs({shortcuts:d,enabled:t}),{rewindToStart:f,togglePlayPause:c,stopPlayback:u,shortcuts:d}},ka=.01,is=.01;function F0({annotations:e,activeAnnotationId:t,onAnnotationsChange:n,onActiveAnnotationChange:r,duration:s,linkEndpoints:a,continuousPlay:o=!1,enabled:i=!0,scrollContainerRef:l,samplesPerPixel:c,sampleRate:u,onPlay:f}){const m=p.useMemo(()=>t?e.findIndex(I=>I.id===t):-1,[e,t]),d=p.useCallback(I=>{if(!l?.current||!c||!u)return;const E=e.find(q=>q.id===I);if(!E)return;const T=l.current,R=T.clientWidth,A=E.start*u/c,M=E.end*u/c,$=(A+M)/2,F=T.scrollLeft,L=F,z=F+R;if(A<L||M>z){const q=Math.max(0,$-R/2);T.scrollTo({left:q,behavior:"smooth"})}},[e,l,c,u]);p.useEffect(()=>{t&&l?.current&&c&&u&&d(t)},[t,d,l,c,u]);const h=p.useCallback(I=>{if(m<0)return;const E=e[m],T=Math.max(0,Math.min(E.end-.1,E.start+I)),R=T-E.start,A=[...e];if(A[m]={...E,start:T},a&&m>0){const M=A[m-1];Math.abs(M.end-E.start)<ka&&(A[m-1]={...M,end:Math.max(M.start+.1,M.end+R)})}else if(!a&&m>0){const M=A[m-1];T<M.end&&(A[m-1]={...M,end:T})}n(A)},[e,m,a,n]),v=p.useCallback(I=>{if(m<0)return;const E=e[m],T=Math.max(E.start+.1,Math.min(s,E.end+I)),R=T-E.end,A=[...e];if(A[m]={...E,end:T},a&&m<e.length-1){const M=A[m+1];if(Math.abs(M.start-E.end)<ka){const $=Math.min(M.end-.1,M.start+R);A[m+1]={...M,start:$};let F=m+1;for(;F<A.length-1;){const L=A[F],z=A[F+1];if(Math.abs(z.start-e[F].end)<ka){const q=L.end-e[F].end;A[F+1]={...z,start:Math.min(z.end-.1,z.start+q)},F++}else break}}}else if(!a&&m<e.length-1){const M=A[m+1];if(T>M.start){A[m+1]={...M,start:T};let $=m+1;for(;$<A.length-1;){const F=A[$],L=A[$+1];if(F.end>L.start)A[$+1]={...L,start:F.end},$++;else break}}}n(A)},[e,m,s,a,n]),y=p.useCallback(()=>{!r||e.length===0||(m<=0?r(e[e.length-1].id):r(e[m-1].id))},[e,m,r]),g=p.useCallback(()=>{!r||e.length===0||(m<0||m>=e.length-1?r(e[0].id):r(e[m+1].id))},[e,m,r]),b=p.useCallback(()=>{!r||e.length===0||r(e[0].id)},[e,r]),_=p.useCallback(()=>{!r||e.length===0||r(e[e.length-1].id)},[e,r]),w=p.useCallback(()=>{r&&r(null)},[r]),x=p.useCallback(()=>{if(m<0||!f)return;const I=e[m],E=o?void 0:I.end-I.start;f(I.start,E)},[e,m,o,f]),C=p.useMemo(()=>[{key:"[",action:()=>h(-is),description:"Move annotation start earlier",preventDefault:!0},{key:"]",action:()=>h(is),description:"Move annotation start later",preventDefault:!0},{key:"{",shiftKey:!0,action:()=>v(-is),description:"Move annotation end earlier",preventDefault:!0},{key:"}",shiftKey:!0,action:()=>v(is),description:"Move annotation end later",preventDefault:!0},{key:"Enter",action:x,description:"Play selected annotation",preventDefault:!0}],[h,v,x]),k=p.useMemo(()=>[{key:"ArrowUp",action:y,description:"Select previous annotation",preventDefault:!0},{key:"ArrowLeft",action:y,description:"Select previous annotation",preventDefault:!0},{key:"ArrowDown",action:g,description:"Select next annotation",preventDefault:!0},{key:"ArrowRight",action:g,description:"Select next annotation",preventDefault:!0},{key:"Home",action:b,description:"Select first annotation",preventDefault:!0},{key:"End",action:_,description:"Select last annotation",preventDefault:!0},{key:"Escape",action:w,description:"Deselect annotation",preventDefault:!0}],[y,g,b,_,w]);return Bs({shortcuts:C,enabled:i&&m>=0}),Bs({shortcuts:k,enabled:i&&e.length>0&&!!r}),{moveStartBoundary:h,moveEndBoundary:v,selectPrevious:y,selectNext:g,selectFirst:b,selectLast:_,clearSelection:w,scrollToAnnotation:d,playActiveAnnotation:x}}const Hr=[{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}]}],Ii=e=>Hr.find(t=>t.id===e),O0=e=>Hr.filter(t=>t.category===e),L0=[{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"}];const B0={reverb:O.Reverb,freeverb:O.Freeverb,jcReverb:O.JCReverb,feedbackDelay:O.FeedbackDelay,pingPongDelay:O.PingPongDelay,chorus:O.Chorus,phaser:O.Phaser,tremolo:O.Tremolo,vibrato:O.Vibrato,autoPanner:O.AutoPanner,autoFilter:O.AutoFilter,autoWah:O.AutoWah,eq3:O.EQ3,distortion:O.Distortion,bitCrusher:O.BitCrusher,chebyshev:O.Chebyshev,compressor:O.Compressor,limiter:O.Limiter,gate:O.Gate,stereoWidener:O.StereoWidener};let W0=0;const V0=()=>`effect_${Date.now()}_${++W0}`;function $r(e,t){const n=B0[e.id];if(!n)throw new Error(`Unknown effect type: ${e.id}`);const r={};e.parameters.forEach(i=>{const l=t?.[i.name]??i.default;r[i.name]=l});const s=new n(r),a=V0(),o=s;return{effect:s,id:e.id,instanceId:a,dispose(){try{s.disconnect(),s.dispose()}catch(i){console.warn(`[waveform-playlist] Error disposing effect "${e.id}" (${a}):`,i)}},setParameter(i,l){const c=o[i];if(i==="wet"){const u=o.wet;if(u&&typeof u=="object"&&"value"in u){u.value=l;return}}c!==void 0&&(c&&typeof c=="object"&&"value"in c?c.value=l:o[i]=l)},getParameter(i){if(i==="wet"){const c=o.wet;if(c&&typeof c=="object"&&"value"in c)return c.value}const l=o[i];if(l!==void 0)return l&&typeof l=="object"&&"value"in l?l.value:l},connect(i){s.connect(i)},disconnect(){try{s.disconnect()}catch(i){console.warn(`[waveform-playlist] Error disconnecting effect "${e.id}" (${a}):`,i)}}}}function N0(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 z0(e=256){const[t,n]=p.useState([]),r=p.useRef(t);r.current=t;const s=p.useRef(new Map),a=p.useRef(null),o=p.useRef(null),i=p.useCallback(y=>{const g=o.current;if(!g)return;const{masterGainNode:b,destination:_,analyserNode:w}=g;try{b.disconnect()}catch(C){console.warn("[waveform-playlist] Error disconnecting master effects chain:",C)}const x=y.map(C=>s.current.get(C.instanceId)).filter(C=>C!==void 0);if(x.length===0)b.connect(w),w.connect(_);else{let C=b;x.forEach(k=>{try{k.disconnect()}catch(I){console.warn(`[waveform-playlist] Error disconnecting effect "${k.id}":`,I)}C.connect(k.effect),C=k.effect}),C.connect(w),w.connect(_)}},[]),l=p.useCallback(y=>{const g=Ii(y);if(!g){console.error(`Unknown effect: ${y}`);return}const b={};g.parameters.forEach(x=>{b[x.name]=x.default});const _=$r(g,b);s.current.set(_.instanceId,_);const w={instanceId:_.instanceId,effectId:g.id,definition:g,params:b,bypassed:!1};n(x=>[...x,w])},[]),c=p.useCallback(y=>{const g=s.current.get(y);g&&(g.dispose(),s.current.delete(y)),n(b=>b.filter(_=>_.instanceId!==y))},[]),u=p.useCallback((y,g,b)=>{const _=s.current.get(y);_&&_.setParameter(g,b),n(w=>w.map(x=>x.instanceId===y?{...x,params:{...x.params,[g]:b}}:x))},[]),f=p.useCallback(y=>{const g=r.current.find(w=>w.instanceId===y);if(!g)return;const b=!g.bypassed,_=s.current.get(y);if(_){const w=g.params.wet??1;_.setParameter("wet",b?0:w)}n(w=>w.map(x=>x.instanceId===y?{...x,bypassed:b}:x))},[]),m=p.useCallback((y,g)=>{n(b=>{const _=[...b],[w]=_.splice(y,1);return _.splice(g,0,w),_})},[]),d=p.useCallback(()=>{s.current.forEach(y=>y.dispose()),s.current.clear(),n([])},[]);p.useEffect(()=>{i(t)},[t,i]);const h=p.useCallback((y,g,b)=>{const _=new O.Analyser("fft",e);a.current=_,o.current={masterGainNode:y,destination:g,analyserNode:_};const x=r.current.map(C=>s.current.get(C.instanceId)).filter(C=>C!==void 0);if(x.length===0)y.connect(_),_.connect(g);else{let C=y;x.forEach(k=>{C.connect(k.effect),C=k.effect}),C.connect(_),_.connect(g)}return function(){_.dispose(),a.current=null,o.current=null}},[e]);p.useEffect(()=>{const y=s.current;return()=>{y.forEach(g=>g.dispose()),y.clear()}},[]);const v=p.useCallback(()=>{const y=t.filter(g=>!g.bypassed);if(y.length!==0)return(g,b,_)=>{const w=[];for(const x of y){const C=$r(x.definition,x.params);w.push(C)}if(w.length===0)g.connect(b);else{let x=g;w.forEach(C=>{x.connect(C.effect),x=C.effect}),x.connect(b)}return function(){w.forEach(C=>C.dispose())}}},[t]);return{activeEffects:t,availableEffects:Hr,addEffect:l,removeEffect:c,updateParameter:u,toggleBypass:f,reorderEffects:m,clearAllEffects:d,masterEffects:h,createOfflineEffectsFunction:v,analyserRef:a}}function j0(){const[e,t]=p.useState(new Map),n=p.useRef(new Map),r=p.useRef(new Map),s=p.useCallback((d,h)=>{const v=r.current.get(d);if(!v)return;const{graphEnd:y,masterGainNode:g}=v,b=n.current.get(d);try{y.disconnect()}catch(w){console.warn(`[waveform-playlist] Error disconnecting track "${d}" effect chain:`,w)}const _=h.map(w=>b?.get(w.instanceId)).filter(w=>w!==void 0);if(_.length===0)y.connect(g);else{let w=y;_.forEach(x=>{try{x.disconnect()}catch(C){console.warn(`[waveform-playlist] Error disconnecting effect "${x.id}" on track "${d}":`,C)}w.connect(x.effect),w=x.effect}),w.connect(g)}},[]),a=p.useCallback((d,h)=>{const v=Ii(h);if(!v){console.error(`Unknown effect: ${h}`);return}const y={};v.parameters.forEach(_=>{y[_.name]=_.default});const g=$r(v,y);n.current.has(d)||n.current.set(d,new Map),n.current.get(d).set(g.instanceId,g);const b={instanceId:g.instanceId,effectId:v.id,definition:v,params:y,bypassed:!1};t(_=>{const w=new Map(_),x=w.get(d)||[];return w.set(d,[...x,b]),w})},[]),o=p.useCallback((d,h)=>{const v=n.current.get(d),y=v?.get(h);y&&(y.dispose(),v?.delete(h)),t(g=>{const b=new Map(g),_=b.get(d)||[];return b.set(d,_.filter(w=>w.instanceId!==h)),b})},[]),i=p.useCallback((d,h,v,y)=>{const b=n.current.get(d)?.get(h);b&&b.setParameter(v,y),t(_=>{const w=new Map(_),x=w.get(d)||[];return w.set(d,x.map(C=>C.instanceId===h?{...C,params:{...C.params,[v]:y}}:C)),w})},[]),l=p.useCallback((d,h)=>{const y=(u.current.get(d)||[]).find(w=>w.instanceId===h);if(!y)return;const g=!y.bypassed,_=n.current.get(d)?.get(h);if(_){const w=y.params.wet??1;_.setParameter("wet",g?0:w)}t(w=>{const x=new Map(w),C=x.get(d)||[];return x.set(d,C.map(k=>k.instanceId===h?{...k,bypassed:g}:k)),x})},[]),c=p.useCallback(d=>{const h=n.current.get(d);h&&(h.forEach(v=>v.dispose()),h.clear()),t(v=>{const y=new Map(v);return y.set(d,[]),y})},[]),u=p.useRef(e);u.current=e;const f=p.useCallback(d=>(h,v,y)=>{r.current.set(d,{graphEnd:h,masterGainNode:v});const g=u.current.get(d)||[],b=n.current.get(d),_=g.map(w=>b?.get(w.instanceId)).filter(w=>w!==void 0);if(_.length===0)h.connect(v);else{let w=h;_.forEach(x=>{w.connect(x.effect),w=x.effect}),w.connect(v)}return function(){r.current.delete(d)}},[]);p.useEffect(()=>{e.forEach((d,h)=>{s(h,d)})},[e,s]),p.useEffect(()=>{const d=n.current;return()=>{d.forEach(h=>{h.forEach(v=>v.dispose()),h.clear()}),d.clear()}},[]);const m=p.useCallback(d=>{const v=(e.get(d)||[]).filter(y=>!y.bypassed);if(v.length!==0)return(y,g,b)=>{const _=[];for(const w of v){const x=$r(w.definition,w.params);_.push(x)}if(_.length===0)y.connect(g);else{let w=y;_.forEach(x=>{w.connect(x.effect),w=x.effect}),w.connect(g)}return function(){_.forEach(x=>x.dispose())}}},[e]);return{trackEffectsState:e,addEffectToTrack:a,removeEffectFromTrack:o,updateTrackEffectParameter:i,toggleBypass:l,clearTrackEffects:c,getTrackEffectsFunction:f,createOfflineTrackEffectsFunction:m,availableEffects:Hr}}function Z0(e,t={}){const{bitDepth:n=16}=t,r=e.numberOfChannels,s=e.sampleRate,a=e.length,o=n/8,i=r*o,l=s*i,c=a*i,u=44,f=u+c,m=new ArrayBuffer(f),d=new DataView(m);ls(d,0,"RIFF"),d.setUint32(4,f-8,!0),ls(d,8,"WAVE"),ls(d,12,"fmt "),d.setUint32(16,16,!0),d.setUint16(20,n===32?3:1,!0),d.setUint16(22,r,!0),d.setUint32(24,s,!0),d.setUint32(28,l,!0),d.setUint16(32,i,!0),d.setUint16(34,n,!0),ls(d,36,"data"),d.setUint32(40,c,!0);const h=[];for(let y=0;y<r;y++)h.push(e.getChannelData(y));let v=u;if(n===16)for(let y=0;y<a;y++)for(let g=0;g<r;g++){const b=h[g][y],_=Math.max(-1,Math.min(1,b)),w=_<0?_*32768:_*32767;d.setInt16(v,w,!0),v+=2}else for(let y=0;y<a;y++)for(let g=0;g<r;g++)d.setFloat32(v,h[g][y],!0),v+=4;return new Blob([m],{type:"audio/wav"})}function ls(e,t,n){for(let r=0;r<n.length;r++)e.setUint8(t+r,n.charCodeAt(r))}function H0(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 af(){const[e,t]=p.useState(!1),[n,r]=p.useState(0),[s,a]=p.useState(null);return{exportWav:p.useCallback(async(i,l,c={})=>{const{filename:u="export",mode:f="master",trackIndex:m,autoDownload:d=!0,applyEffects:h=!0,effectsFunction:v,createOfflineTrackEffects:y,bitDepth:g=16,onProgress:b}=c;t(!0),r(0),a(null);try{if(i.length===0)throw new Error("No tracks to export");if(f==="individual"&&(m===void 0||m<0||m>=i.length))throw new Error("Invalid track index for individual export");const _=i[0].clips[0]?.sampleRate||44100;let w=0;for(const R of i)for(const A of R.clips){const M=A.startSample+A.durationSamples;w=Math.max(w,M)}w+=Math.round(_*.1);const x=w/_,C=f==="individual"?[{track:i[m],state:l[m],index:m}]:i.map((R,A)=>({track:R,state:l[A],index:A})),k=l.some(R=>R.soloed),I=!!y;let E;if((v||I)&&h)E=await G0(C,l,k,x,_,v,y,R=>{r(R),b?.(R)});else{const R=new OfflineAudioContext(2,w,_);let A=0;const M=C.reduce(($,{track:F})=>$+F.clips.length,0);for(const{track:$,state:F}of C)if(!(F.muted&&!F.soloed)&&!(k&&!F.soloed))for(const L of $.clips){await X0(R,L,F,_,h),A++;const z=A/M*.5;r(z),b?.(z)}r(.5),b?.(.5),E=await R.startRendering()}r(.9),b?.(.9);const T=Z0(E,{bitDepth:g});if(r(1),b?.(1),d){const R=f==="individual"?`${u}_${i[m].name}`:u;H0(T,`${R}.wav`)}return{audioBuffer:E,blob:T,duration:x}}catch(_){const w=_ instanceof Error?_.message:"Export failed";throw a(w),_}finally{t(!1)}},[]),isExporting:e,progress:n,error:s}}async function G0(e,t,n,r,s,a,o,i){const{Offline:l,Volume:c,Gain:u,Panner:f,Player:m,ToneAudioBuffer:d}=await import("tone");i(.1);let h;try{h=await l(async({transport:v,destination:y})=>{const g=new c(0);let b;a?b=a(g,y,!0):g.connect(y);for(const{track:_,state:w}of e){if(w.muted&&!w.soloed||n&&!w.soloed)continue;const x=new c(U0(w.volume)),C=new f(w.pan),k=new u(w.muted?0:1),I=o?.(_.id);I?I(k,g,!0):k.connect(g),C.connect(k),x.connect(C);for(const E of _.clips){const{audioBuffer:T,startSample:R,durationSamples:A,offsetSamples:M,gain:$,fadeIn:F,fadeOut:L}=E,z=R/s,q=A/s,Y=M/s,ne=new d(T),G=new m(ne),J=new u($);if(G.connect(J),J.connect(x),F){const ae=z,ue=z+F.duration,de=xr(J.gain);de&&(de.setValueAtTime(0,ae),de.linearRampToValueAtTime($,ue))}if(L){const ae=z+q-L.duration,ue=z+q,de=xr(J.gain);de&&(de.setValueAtTime($,ae),de.linearRampToValueAtTime(0,ue))}G.start(z,Y,q)}}v.start(0)},r,2,s)}catch(v){throw v instanceof Error?v:new Error(`Tone.Offline rendering failed: ${String(v)}`)}return i(.9),h.get()}function U0(e){return 20*Math.log10(Math.max(e,1e-4))}async function X0(e,t,n,r,s){const{audioBuffer:a,startSample:o,durationSamples:i,offsetSamples:l,gain:c,fadeIn:u,fadeOut:f}=t;if(!a){console.warn(`Skipping clip "${t.name||t.id}" - no audioBuffer for export`);return}const m=o/r,d=i/r,h=l/r,v=e.createBufferSource();v.buffer=a;const y=e.createGain(),g=c*n.volume,b=e.createStereoPanner();if(b.pan.value=n.pan,v.connect(y),y.connect(b),b.connect(e.destination),s){if(u?y.gain.setValueAtTime(0,m):y.gain.setValueAtTime(g,m),u){const _=m,w=m+u.duration;Ql(y.gain,_,w,0,g,u.type||"linear")}if(f){const _=m+d-f.duration,w=m+d;(!u||u.duration<d-f.duration)&&y.gain.setValueAtTime(g,_),Ql(y.gain,_,w,g,0,f.type||"linear")}}else y.gain.setValueAtTime(g,m);v.start(m,h,d)}function Ql(e,t,n,r,s,a){const o=n-t;if(!(o<=0))switch(a){case"linear":e.setValueAtTime(r,t),e.linearRampToValueAtTime(s,n);break;case"exponential":{const i=Math.max(r,1e-4),l=Math.max(s,1e-4);e.setValueAtTime(i,t),e.exponentialRampToValueAtTime(l,n),s===0&&e.setValueAtTime(0,n);break}case"logarithmic":{const i=ec(r,s,256,"logarithmic");e.setValueCurveAtTime(i,t,o);break}case"sCurve":{const i=ec(r,s,256,"sCurve");e.setValueCurveAtTime(i,t,o);break}default:e.setValueAtTime(r,t),e.linearRampToValueAtTime(s,n)}}function ec(e,t,n,r){const s=new Float32Array(n),a=t-e;for(let o=0;o<n;o++){const i=o/(n-1);let l;r==="logarithmic"?a>0?l=Math.log10(1+i*9)/Math.log10(10):l=1-Math.log10(1+(1-i)*9)/Math.log10(10):l=i*i*(3-2*i),s[o]=e+a*l}return s}const of=()=>{const e=p.useRef(null),t=p.useCallback(()=>{e.current!==null&&(cancelAnimationFrame(e.current),e.current=null)},[]),n=p.useCallback(r=>{t(),e.current=requestAnimationFrame(r)},[t]);return p.useEffect(()=>()=>{t()},[t]),{animationFrameRef:e,startAnimationFrameLoop:n,stopAnimationFrameLoop:t}},Y0=`
|
|
856
|
+
`,i0=({items:e})=>{const[t,n]=p.useState(!1),r=p.useCallback(()=>n(!1),[]),s=typeof e=="function"?e(r):e,[a,o]=p.useState({top:0,left:0}),i=p.useRef(null),l=p.useRef(null),c=p.useCallback(()=>{if(!i.current)return;const u=i.current.getBoundingClientRect(),f=window.innerWidth,m=window.innerHeight,d=l.current?.offsetHeight??160;let h=u.right+4;h+ws>f&&(h=u.left-ws-4),h=Math.max(4,Math.min(h,f-ws-4));let v=u.top;v+d>m-4&&(v=Math.max(4,u.bottom-d)),o({top:v,left:h})},[]);return p.useEffect(()=>{if(!t)return;c();const u=requestAnimationFrame(()=>c()),f=()=>c(),m=()=>c();return window.addEventListener("scroll",f,!0),window.addEventListener("resize",m),()=>{cancelAnimationFrame(u),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",m)}},[t,c]),p.useEffect(()=>{if(!t)return;const u=m=>{const d=m.target;i.current&&!i.current.contains(d)&&l.current&&!l.current.contains(d)&&n(!1)},f=m=>{m.key==="Escape"&&n(!1)};return document.addEventListener("mousedown",u),document.addEventListener("keydown",f),()=>{document.removeEventListener("mousedown",u),document.removeEventListener("keydown",f)}},[t]),C.jsxs(r0,{children:[C.jsx(s0,{ref:i,onClick:u=>{u.stopPropagation(),n(f=>!f)},onMouseDown:u=>u.stopPropagation(),title:"Track menu","aria-label":"Track menu",children:C.jsx(n0,{size:16})}),t&&typeof document<"u"&&bo.createPortal(C.jsx(a0,{ref:l,$top:a.top,$left:a.left,onMouseDown:u=>u.stopPropagation(),children:s.map((u,f)=>C.jsxs(p.Fragment,{children:[f>0&&C.jsx(o0,{}),u.content]},u.id))}),document.body)]})};function xn(e,t){this._waveformData=e,this._channelIndex=t}xn.prototype.min_sample=function(e){var t=(e*this._waveformData.channels+this._channelIndex)*2;return this._waveformData._at(t)};xn.prototype.max_sample=function(e){var t=(e*this._waveformData.channels+this._channelIndex)*2+1;return this._waveformData._at(t)};xn.prototype.set_min_sample=function(e,t){var n=(e*this._waveformData.channels+this._channelIndex)*2;return this._waveformData._set_at(n,t)};xn.prototype.set_max_sample=function(e,t){var n=(e*this._waveformData.channels+this._channelIndex)*2+1;return this._waveformData._set_at(n,t)};xn.prototype.min_array=function(){for(var e=this._waveformData.length,t=[],n=0;n<e;n++)t.push(this.min_sample(n));return t};xn.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 l0=127,c0=-128,u0=32767,d0=-32768;function f0(e,t){var n=Math.floor(e/t),r=e-n*t;return r>0&&n++,n}function h0(e){for(var t=e.scale,n=e.amplitude_scale,r=e.split_channels,s=e.length,a=e.sample_rate,o=e.channels.map(function(R){return new Float32Array(R)}),i=r?o.length:1,l=24,c=f0(s,t),u=e.bits===8?1:2,f=l+c*2*u*i,m=new ArrayBuffer(f),d=new DataView(m),h=0,v=l,y=new Array(i),g=new Array(i),b=0;b<i;b++)y[b]=1/0,g[b]=-1/0;var w=e.bits===8?c0:d0,_=e.bits===8?l0:u0;d.setInt32(0,2,!0),d.setUint32(4,e.bits===8,!0),d.setInt32(8,a,!0),d.setInt32(12,t,!0),d.setInt32(16,c,!0),d.setInt32(20,i,!0);for(var x=0;x<s;x++){var S=0;if(i===1){for(var k=0;k<o.length;++k)S+=o[k][x];S=Math.floor(_*S*n/o.length),S<y[0]&&(y[0]=S,y[0]<w&&(y[0]=w)),S>g[0]&&(g[0]=S,g[0]>_&&(g[0]=_))}else for(var I=0;I<i;++I)S=Math.floor(_*o[I][x]*n),S<y[I]&&(y[I]=S,y[I]<w&&(y[I]=w)),S>g[I]&&(g[I]=S,g[I]>_&&(g[I]=_));if(++h===t){for(var E=0;E<i;E++)e.bits===8?(d.setInt8(v++,y[E]),d.setInt8(v++,g[E])):(d.setInt16(v,y[E],!0),d.setInt16(v+2,g[E],!0),v+=4),y[E]=1/0,g[E]=-1/0;h=0}}if(h>0)for(var T=0;T<i;T++)e.bits===8?(d.setInt8(v++,y[T]),d.setInt8(v++,g[T])):(d.setInt16(v,y[T],!0),d.setInt16(v+2,g[T],!0));return m}function Ls(e){"@babel/helpers - typeof";return Ls=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},Ls(e)}function p0(e){return e&&Ls(e)==="object"&&"sample_rate"in e&&"samples_per_pixel"in e&&"bits"in e&&"length"in e&&"data"in e}function m0(e){var t=e&&Ls(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 g0(e){var t=e.data,n=e.channels||1,r=24,s=e.bits===8?1:2,a=e.length*2*n;if(t.length!==a)throw new Error("WaveformData.create(): Length mismatch in JSON waveform data");var o=r+t.length*s,i=new ArrayBuffer(o),l=new DataView(i);l.setInt32(0,2,!0),l.setUint32(4,e.bits===8,!0),l.setInt32(8,e.sample_rate,!0),l.setInt32(12,e.samples_per_pixel,!0),l.setInt32(16,e.length,!0),l.setInt32(20,n,!0);var c=r;if(e.bits===8)for(var u=0;u<t.length;u++)l.setInt8(c++,t[u],!0);else for(var f=0;f<t.length;f++)l.setInt16(c,t[f],!0),c+=2;return i}function Mn(e){return e==null}function v0(e,t){var n=atob(e);return n}function y0(e,t,n){var r=v0(e),s=r.indexOf(`
|
|
857
|
+
`,10)+1,a=r.substring(s)+"",o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}function b0(e,t,n){var r;return function(a){return r=r||y0(e),new Worker(r,a)}}var w0=b0("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogQXVkaW9CdWZmZXItYmFzZWQgV2F2ZWZvcm1EYXRhIGdlbmVyYXRvcgogICAqCiAgICogQWRhcHRlZCBmcm9tIEJsb2NrRmlsZTo6Q2FsY1N1bW1hcnkgaW4gQXVkYWNpdHksIHdpdGggcGVybWlzc2lvbi4KICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F1ZGFjaXR5L2F1ZGFjaXR5L2Jsb2IvCiAgICogICAxMTA4YzEzNzZjMDkxNjYxNjIzMzVmYWI0NzQzMDA4Y2JhNTdjNGVlL3NyYy9CbG9ja0ZpbGUuY3BwI0wxOTgKICAgKi8KCiAgdmFyIElOVDhfTUFYID0gMTI3OwogIHZhciBJTlQ4X01JTiA9IC0xMjg7CiAgdmFyIElOVDE2X01BWCA9IDMyNzY3OwogIHZhciBJTlQxNl9NSU4gPSAtMzI3Njg7CiAgZnVuY3Rpb24gY2FsY3VsYXRlV2F2ZWZvcm1EYXRhTGVuZ3RoKGF1ZGlvX3NhbXBsZV9jb3VudCwgc2NhbGUpIHsKICAgIHZhciBkYXRhX2xlbmd0aCA9IE1hdGguZmxvb3IoYXVkaW9fc2FtcGxlX2NvdW50IC8gc2NhbGUpOwogICAgdmFyIHNhbXBsZXNfcmVtYWluaW5nID0gYXVkaW9fc2FtcGxlX2NvdW50IC0gZGF0YV9sZW5ndGggKiBzY2FsZTsKICAgIGlmIChzYW1wbGVzX3JlbWFpbmluZyA+IDApIHsKICAgICAgZGF0YV9sZW5ndGgrKzsKICAgIH0KICAgIHJldHVybiBkYXRhX2xlbmd0aDsKICB9CiAgZnVuY3Rpb24gZ2VuZXJhdGVXYXZlZm9ybURhdGEob3B0aW9ucykgewogICAgdmFyIHNjYWxlID0gb3B0aW9ucy5zY2FsZTsKICAgIHZhciBhbXBsaXR1ZGVfc2NhbGUgPSBvcHRpb25zLmFtcGxpdHVkZV9zY2FsZTsKICAgIHZhciBzcGxpdF9jaGFubmVscyA9IG9wdGlvbnMuc3BsaXRfY2hhbm5lbHM7CiAgICB2YXIgbGVuZ3RoID0gb3B0aW9ucy5sZW5ndGg7CiAgICB2YXIgc2FtcGxlX3JhdGUgPSBvcHRpb25zLnNhbXBsZV9yYXRlOwogICAgdmFyIGNoYW5uZWxzID0gb3B0aW9ucy5jaGFubmVscy5tYXAoZnVuY3Rpb24gKGNoYW5uZWwpIHsKICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoY2hhbm5lbCk7CiAgICB9KTsKICAgIHZhciBvdXRwdXRfY2hhbm5lbHMgPSBzcGxpdF9jaGFubmVscyA/IGNoYW5uZWxzLmxlbmd0aCA6IDE7CiAgICB2YXIgaGVhZGVyX3NpemUgPSAyNDsKICAgIHZhciBkYXRhX2xlbmd0aCA9IGNhbGN1bGF0ZVdhdmVmb3JtRGF0YUxlbmd0aChsZW5ndGgsIHNjYWxlKTsKICAgIHZhciBieXRlc19wZXJfc2FtcGxlID0gb3B0aW9ucy5iaXRzID09PSA4ID8gMSA6IDI7CiAgICB2YXIgdG90YWxfc2l6ZSA9IGhlYWRlcl9zaXplICsgZGF0YV9sZW5ndGggKiAyICogYnl0ZXNfcGVyX3NhbXBsZSAqIG91dHB1dF9jaGFubmVsczsKICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodG90YWxfc2l6ZSk7CiAgICB2YXIgZGF0YV92aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICB2YXIgc2NhbGVfY291bnRlciA9IDA7CiAgICB2YXIgb2Zmc2V0ID0gaGVhZGVyX3NpemU7CiAgICB2YXIgbWluX3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICB2YXIgbWF4X3ZhbHVlID0gbmV3IEFycmF5KG91dHB1dF9jaGFubmVscyk7CiAgICBmb3IgKHZhciBjaGFubmVsID0gMDsgY2hhbm5lbCA8IG91dHB1dF9jaGFubmVsczsgY2hhbm5lbCsrKSB7CiAgICAgIG1pbl92YWx1ZVtjaGFubmVsXSA9IEluZmluaXR5OwogICAgICBtYXhfdmFsdWVbY2hhbm5lbF0gPSAtSW5maW5pdHk7CiAgICB9CiAgICB2YXIgcmFuZ2VfbWluID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NSU4gOiBJTlQxNl9NSU47CiAgICB2YXIgcmFuZ2VfbWF4ID0gb3B0aW9ucy5iaXRzID09PSA4ID8gSU5UOF9NQVggOiBJTlQxNl9NQVg7CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMCwgMiwgdHJ1ZSk7IC8vIFZlcnNpb24KICAgIGRhdGFfdmlldy5zZXRVaW50MzIoNCwgb3B0aW9ucy5iaXRzID09PSA4LCB0cnVlKTsgLy8gSXMgOCBiaXQ/CiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoOCwgc2FtcGxlX3JhdGUsIHRydWUpOyAvLyBTYW1wbGUgcmF0ZQogICAgZGF0YV92aWV3LnNldEludDMyKDEyLCBzY2FsZSwgdHJ1ZSk7IC8vIFNjYWxlCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMTYsIGRhdGFfbGVuZ3RoLCB0cnVlKTsgLy8gTGVuZ3RoCiAgICBkYXRhX3ZpZXcuc2V0SW50MzIoMjAsIG91dHB1dF9jaGFubmVscywgdHJ1ZSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzYW1wbGUgPSAwOwogICAgICBpZiAob3V0cHV0X2NoYW5uZWxzID09PSAxKSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwgPSAwOyBfY2hhbm5lbCA8IGNoYW5uZWxzLmxlbmd0aDsgKytfY2hhbm5lbCkgewogICAgICAgICAgc2FtcGxlICs9IGNoYW5uZWxzW19jaGFubmVsXVtpXTsKICAgICAgICB9CiAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBzYW1wbGUgKiBhbXBsaXR1ZGVfc2NhbGUgLyBjaGFubmVscy5sZW5ndGgpOwogICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbMF0pIHsKICAgICAgICAgIG1pbl92YWx1ZVswXSA9IHNhbXBsZTsKICAgICAgICAgIGlmIChtaW5fdmFsdWVbMF0gPCByYW5nZV9taW4pIHsKICAgICAgICAgICAgbWluX3ZhbHVlWzBdID0gcmFuZ2VfbWluOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc2FtcGxlID4gbWF4X3ZhbHVlWzBdKSB7CiAgICAgICAgICBtYXhfdmFsdWVbMF0gPSBzYW1wbGU7CiAgICAgICAgICBpZiAobWF4X3ZhbHVlWzBdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgIG1heF92YWx1ZVswXSA9IHJhbmdlX21heDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh2YXIgX2NoYW5uZWwyID0gMDsgX2NoYW5uZWwyIDwgb3V0cHV0X2NoYW5uZWxzOyArK19jaGFubmVsMikgewogICAgICAgICAgc2FtcGxlID0gTWF0aC5mbG9vcihyYW5nZV9tYXggKiBjaGFubmVsc1tfY2hhbm5lbDJdW2ldICogYW1wbGl0dWRlX3NjYWxlKTsKICAgICAgICAgIGlmIChzYW1wbGUgPCBtaW5fdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtaW5fdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1pbl92YWx1ZVtfY2hhbm5lbDJdIDwgcmFuZ2VfbWluKSB7CiAgICAgICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9taW47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChzYW1wbGUgPiBtYXhfdmFsdWVbX2NoYW5uZWwyXSkgewogICAgICAgICAgICBtYXhfdmFsdWVbX2NoYW5uZWwyXSA9IHNhbXBsZTsKICAgICAgICAgICAgaWYgKG1heF92YWx1ZVtfY2hhbm5lbDJdID4gcmFuZ2VfbWF4KSB7CiAgICAgICAgICAgICAgbWF4X3ZhbHVlW19jaGFubmVsMl0gPSByYW5nZV9tYXg7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCsrc2NhbGVfY291bnRlciA9PT0gc2NhbGUpIHsKICAgICAgICBmb3IgKHZhciBfY2hhbm5lbDMgPSAwOyBfY2hhbm5lbDMgPCBvdXRwdXRfY2hhbm5lbHM7IF9jaGFubmVsMysrKSB7CiAgICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtaW5fdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQ4KG9mZnNldCsrLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50MTYob2Zmc2V0LCBtaW5fdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIGRhdGFfdmlldy5zZXRJbnQxNihvZmZzZXQgKyAyLCBtYXhfdmFsdWVbX2NoYW5uZWwzXSwgdHJ1ZSk7CiAgICAgICAgICAgIG9mZnNldCArPSA0OwogICAgICAgICAgfQogICAgICAgICAgbWluX3ZhbHVlW19jaGFubmVsM10gPSBJbmZpbml0eTsKICAgICAgICAgIG1heF92YWx1ZVtfY2hhbm5lbDNdID0gLUluZmluaXR5OwogICAgICAgIH0KICAgICAgICBzY2FsZV9jb3VudGVyID0gMDsKICAgICAgfQogICAgfQogICAgaWYgKHNjYWxlX2NvdW50ZXIgPiAwKSB7CiAgICAgIGZvciAodmFyIF9jaGFubmVsNCA9IDA7IF9jaGFubmVsNCA8IG91dHB1dF9jaGFubmVsczsgX2NoYW5uZWw0KyspIHsKICAgICAgICBpZiAob3B0aW9ucy5iaXRzID09PSA4KSB7CiAgICAgICAgICBkYXRhX3ZpZXcuc2V0SW50OChvZmZzZXQrKywgbWluX3ZhbHVlW19jaGFubmVsNF0pOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDgob2Zmc2V0KyssIG1heF92YWx1ZVtfY2hhbm5lbDRdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCwgbWluX3ZhbHVlW19jaGFubmVsNF0sIHRydWUpOwogICAgICAgICAgZGF0YV92aWV3LnNldEludDE2KG9mZnNldCArIDIsIG1heF92YWx1ZVtfY2hhbm5lbDRdLCB0cnVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBidWZmZXI7CiAgfQoKICBvbm1lc3NhZ2UgPSBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZ0KSB7CiAgICB2YXIgYnVmZmVyID0gZ2VuZXJhdGVXYXZlZm9ybURhdGEoZXZ0LmRhdGEpOwoKICAgIC8vIFRyYW5zZmVyIGJ1ZmZlciB0byB0aGUgY2FsbGluZyB0aHJlYWQKICAgIHRoaXMucG9zdE1lc3NhZ2UoYnVmZmVyLCBbYnVmZmVyXSk7CiAgICB0aGlzLmNsb3NlKCk7CiAgfTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdhdmVmb3JtLWRhdGEtd29ya2VyLmpzLm1hcAoK");function vt(e){if(p0(e)&&(e=g0(e)),m0(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 xn(this,t)}else throw new TypeError("WaveformData.create(): Unknown data format")}var rr={scale:512,bits:8,amplitude_scale:1,split_channels:!1,disable_worker:!1};function _0(e){var t={scale:e.scale||rr.scale,bits:e.bits||rr.bits,amplitude_scale:e.amplitude_scale||rr.amplitude_scale,split_channels:e.split_channels||rr.split_channels,disable_worker:e.disable_worker||rr.disable_worker};return t}function x0(e){for(var t=[],n=0;n<e.numberOfChannels;++n)t.push(e.getChannelData(n).buffer);return t}function Kd(e,t,n){var r=x0(e);if(t.disable_worker){var s=h0({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 vt(s),e)}else{var a=new w0;a.onmessage=function(o){n(void 0,new vt(o.data),e)},a.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 C0(e,t,n,r){function s(o){o||(o=new DOMException("EncodingError")),r(o),r=function(){}}var a=e.decodeAudioData(t,function(o){Kd(o,n,r)},s);a&&a.catch(s)}vt.create=function(t){return new vt(t)};vt.createFromAudio=function(e,t){var n=_0(e);if(e.audio_context&&e.array_buffer)return C0(e.audio_context,e.array_buffer,n,t);if(e.audio_buffer)return Kd(e.audio_buffer,n,t);throw new TypeError("WaveformData.createFromAudio(): Pass either an AudioContext and ArrayBuffer, or an AudioBuffer object")};function ea(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,s=this._inputData.bits===8?1:2,a=r+n*2*this._inputData.channels*s;this._output_data=new ArrayBuffer(a),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 vt(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 i=0;i<o;++i)this._input_buffer_size>0?(this._min[i]=this._inputData.channel(i).min_sample(this._input_index),this._max[i]=this._inputData.channel(i).max_sample(this._input_index)):(this._min[i]=0,this._max[i]=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}ea.prototype.sample_at_pixel=function(e){return Math.floor(e*this._output_samples_per_pixel)};ea.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 s=0;s<n;++s)r=this._outputWaveformData.channel(s),r.set_min_sample(this._output_index-1,this._min[s]),r.set_max_sample(this._output_index-1,this._max[s]);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 a=0;a<n;++a)this._min[a]=this._max_value,this._max[a]=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 i=r.min_sample(this._input_index);i<this._min[o]&&(this._min[o]=i),i=r.max_sample(this._input_index),i>this._max[o]&&(this._max[o]=i)}this._input_index++}e++}if(this._input_index<this._input_buffer_size)return!1;if(this._input_index!==this._last_input_index)for(var l=0;l<n;++l)r=this._outputWaveformData.channel(l),r.set_min_sample(this._output_index-1,this._min[l]),r.set_max_sample(this._output_index-1,this._max[l]);return!0};ea.prototype.getOutputData=function(){return this._output_data};vt.prototype={_getResampleOptions:function(t){var n={};if(n.scale=t.scale,n.width=t.width,!Mn(n.width)&&(typeof n.width!="number"||n.width<=0))throw new RangeError("WaveformData.resample(): width should be a positive integer value");if(!Mn(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 ea(t);!n.next(););return new vt(n.getOutputData())},concat:function(){var t=this,n=Array.prototype.slice.call(arguments);n.forEach(function(s){if(t.channels!==s.channels||t.sample_rate!==s.sample_rate||t.bits!==s.bits||t.scale!==s.scale)throw new Error("WaveformData.concat(): Waveforms are incompatible")});var r=this._concatBuffers.apply(this,n);return vt.create(r)},_concatBuffers:function(){for(var t=Array.prototype.slice.call(arguments),n=this._offset,r=n,s=0,a=[this].concat(t).map(function(g){return g._data.buffer}),o=0;o<a.length;o++){var i=a[o],l=new DataView(i).getInt32(16,!0);r+=i.byteLength-n,s+=l}for(var c=new ArrayBuffer(r),u=new DataView(a[0]),f=new DataView(c),m=0;m<n;m++)f.setUint8(m,u.getUint8(m));f.setInt32(16,s,!0);for(var d=0,h=new Uint8Array(c,n),v=0;v<a.length;v++){var y=a[v];h.set(new Uint8Array(y,n),d),d+=y.byteLength-n}return c},slice:function(t){var n=0,r=0;if(!Mn(t.startIndex)&&!Mn(t.endIndex)?(n=t.startIndex,r=t.endIndex):!Mn(t.startTime)&&!Mn(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 s=r-n,a=24,o=this.bits===8?1:2,i=a+s*2*this.channels*o,l=new ArrayBuffer(i),c=new DataView(l);c.setInt32(0,2,!0),c.setUint32(4,this.bits===8,!0),c.setInt32(8,this.sample_rate,!0),c.setInt32(12,this.scale,!0),c.setInt32(16,s,!0),c.setInt32(20,this.channels,!0);for(var u=0;u<s*this.channels*2;u++){var f=this._at(n*this.channels*2+u);this.bits===8?c.setInt8(a+u,f):c.setInt16(a+u*2,f,!0)}return new vt(l)},_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 Ei(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 vt.create(r)}else{const r=await t.json();return vt.create(r)}}function qd(e,t=0){const n=e.channel(t),r=e.bits,s=n.min_array(),a=n.max_array(),o=s.length,i=r===8?new Int8Array(o*2):new Int16Array(o*2);for(let l=0;l<o;l++)i[l*2]=s[l],i[l*2+1]=a[l];return{data:i,bits:r,length:o,sampleRate:e.sample_rate}}async function S0(e,t=0){const n=await Ei(e);return qd(n,t)}async function k0(e){const t=await Ei(e);return{sampleRate:t.sample_rate,channels:t.channels,duration:t.duration,samplesPerPixel:t.scale,length:t.length,bits:t.bits}}function Jd(e,t,n,r){let s=e;if(n!==void 0&&r!==void 0)if(s.scale!==t){const a=e.scale,o=t/a,i=Math.floor(n/t),l=Math.ceil((n+r)/t),c=Math.floor(i*o),u=Math.min(e.length,Math.ceil(l*o));if(c>=u)return null;s=s.slice({startIndex:c,endIndex:u}),s=s.resample({scale:t})}else{const a=Math.floor(n/t),o=Math.ceil((n+r)/t);s=s.slice({startIndex:a,endIndex:o})}else s.scale!==t&&(s=s.resample({scale:t}));return s}function E0(e,t,n=0,r,s){const a=Jd(e,t,r,s);if(a===null){const m=e.bits;return{data:m===8?new Int8Array(0):new Int16Array(0),bits:m,length:0}}const o=a.channel(n),i=a.bits,l=o.min_array(),c=o.max_array(),u=l.length,f=i===8?new Int8Array(u*2):new Int16Array(u*2);for(let m=0;m<u;m++)f[m*2]=l[m],f[m*2+1]=c[m];return{data:f,bits:i,length:u}}function Jl(e,t,n,r,s){const a=Jd(e,t,r,s);if(a===null){const u=e.bits;return{length:0,data:[],bits:u}}const o=a.channels,i=a.bits,l=[];for(let u=0;u<o;u++){const f=a.channel(u),m=f.min_array(),d=f.max_array(),h=m.length,v=i===8?new Int8Array(h*2):new Int16Array(h*2);for(let y=0;y<h;y++)v[y*2]=m[y],v[y*2+1]=d[y];l.push(v)}if(n&&l.length>1){const u=1/l.length,f=l[0].length/2,m=i===8?new Int8Array(f*2):new Int16Array(f*2);for(let d=0;d<f;d++){let h=0,v=0;for(let y=0;y<l.length;y++)h+=u*l[y][d*2],v+=u*l[y][d*2+1];m[d*2]=h,m[d*2+1]=v}return{length:f,data:[m],bits:i}}return{length:l.length>0?l[0].length/2:0,data:l,bits:i}}function Qd(){const[e,t]=p.useState("hh:mm:ss.uuu");return{timeFormat:e,setTimeFormat:t,formatTime:s=>Bn(s,e),parseTime:s=>jd(s,e)}}function ef({engineRef:e,initialSamplesPerPixel:t}){const[n,r]=p.useState(t),[s,a]=p.useState(!0),[o,i]=p.useState(!0),l=p.useRef(!0),c=p.useRef(!0),u=p.useRef(t),f=p.useCallback(()=>{e.current?.zoomIn()},[e]),m=p.useCallback(()=>{e.current?.zoomOut()},[e]),d=p.useCallback(h=>{h.samplesPerPixel!==u.current&&(u.current=h.samplesPerPixel,p.startTransition(()=>{r(h.samplesPerPixel)})),h.canZoomIn!==l.current&&(l.current=h.canZoomIn,a(h.canZoomIn)),h.canZoomOut!==c.current&&(c.current=h.canZoomOut,i(h.canZoomOut))},[]);return{samplesPerPixel:n,zoomIn:f,zoomOut:m,canZoomIn:s,canZoomOut:o,onEngineState:d}}function tf({engineRef:e,initialVolume:t=1}){const[n,r]=p.useState(t),s=p.useRef(t),a=p.useCallback(i=>{e.current?e.current.setMasterVolume(i):(s.current=i,r(i))},[e]),o=p.useCallback(i=>{i.masterVolume!==s.current&&(s.current=i.masterVolume,r(i.masterVolume))},[]);return{masterVolume:n,setMasterVolume:a,masterVolumeRef:s,onEngineState:o}}function I0({engineRef:e}){const[t,n]=p.useState(0),[r,s]=p.useState(0),a=p.useRef(0),o=p.useRef(0),i=p.useCallback((c,u)=>{e.current?.setSelection(c,u)},[e]),l=p.useCallback(c=>{c.selectionStart!==a.current&&(a.current=c.selectionStart,n(c.selectionStart)),c.selectionEnd!==o.current&&(o.current=c.selectionEnd,s(c.selectionEnd))},[]);return{selectionStart:t,selectionEnd:r,setSelection:i,selectionStartRef:a,selectionEndRef:o,onEngineState:l}}function M0({engineRef:e}){const[t,n]=p.useState(!1),[r,s]=p.useState(0),[a,o]=p.useState(0),i=p.useRef(!1),l=p.useRef(0),c=p.useRef(0),u=p.useCallback(h=>{e.current?.setLoopEnabled(h)},[e]),f=p.useCallback((h,v)=>{e.current?.setLoopRegion(h,v)},[e]),m=p.useCallback(()=>{e.current?.setLoopRegion(0,0)},[e]),d=p.useCallback(h=>{h.isLoopEnabled!==i.current&&(i.current=h.isLoopEnabled,n(h.isLoopEnabled)),h.loopStart!==l.current&&(l.current=h.loopStart,s(h.loopStart)),h.loopEnd!==c.current&&(c.current=h.loopEnd,o(h.loopEnd))},[]);return{isLoopEnabled:t,loopStart:r,loopEnd:a,setLoopEnabled:u,setLoopRegion:f,clearLoopRegion:m,isLoopEnabledRef:i,loopStartRef:l,loopEndRef:c,onEngineState:d}}function A0({engineRef:e}){const[t,n]=p.useState(null),r=p.useRef(null),s=p.useCallback(o=>{e.current?.selectTrack(o)},[e]),a=p.useCallback(o=>{o.selectedTrackId!==r.current&&(r.current=o.selectedTrackId,n(o.selectedTrackId))},[]);return{selectedTrackId:t,setSelectedTrackId:s,onEngineState:a,selectedTrackIdRef:r}}const T0=(e=256)=>{const t=p.useRef(null),n=p.useCallback((r,s,a)=>{const o=new O.Analyser("fft",e);return r.connect(o),r.connect(s),t.current=o,function(){o.dispose(),t.current=null}},[e]);return{analyserRef:t,masterEffects:n}},$0=48e3;function os(e,t,n,r){const s=n??e.audioBuffer,a=s?.sampleRate??e.waveformData?.sample_rate??$0,o=s?.duration??e.waveformData?.duration??(e.duration!=null?e.duration+(e.offset??0):void 0);if(o===void 0)return console.warn(`[waveform-playlist] Track ${t+1} ("${e.name??"unnamed"}"): Cannot create track — provide duration, audioBuffer, or waveformData with duration.`),null;const i=lc({audioBuffer:s,sampleRate:a,sourceDuration:o,startTime:e.startTime??0,duration:e.duration??o,offset:e.offset??0,name:e.name||`Track ${t+1}`,fadeIn:e.fadeIn,fadeOut:e.fadeOut,waveformData:e.waveformData});if(isNaN(i.startSample)||isNaN(i.durationSamples)||isNaN(i.offsetSamples))return console.error(`[waveform-playlist] Invalid clip values for track ${t+1} ("${e.name??"unnamed"}"): startSample=${i.startSample}, durationSamples=${i.durationSamples}, offsetSamples=${i.offsetSamples}`),null;const l={...cc({name:e.name||`Track ${t+1}`,clips:[i],muted:e.muted??!1,soloed:e.soloed??!1,volume:e.volume??1,pan:e.pan??0,color:e.color}),effects:e.effects,renderMode:e.renderMode,spectrogramConfig:e.spectrogramConfig,spectrogramColorMap:e.spectrogramColorMap},c=r.get(t);return c?(l.id=c.trackId,l.clips[0]={...l.clips[0],id:c.clipId}):r.set(t,{trackId:l.id,clipId:l.clips[0].id}),l}function R0(e,t={}){const{immediate:n=!1,progressive:r=!1}=t,s=n||r,[a,o]=p.useState(!0),[i,l]=p.useState(null),[c,u]=p.useState(0),f=e.length,[m,d]=p.useState(new Map),h=p.useRef(new Map),v=p.useMemo(()=>{if(!s)return null;const w=[];for(let _=0;_<e.length;_++){const x=os(e[_],_,m.get(_),h.current);x&&w.push(x)}return w},[s,e,m]),[y,g]=p.useState(v??[]),b=p.useRef(v);return v!==b.current&&(b.current=v,v&&g(v)),p.useEffect(()=>{if(e.length===0){g([]),o(!1),u(0);return}let w=!1;const _=new AbortController;return(async()=>{try{o(!0),l(null),u(0),s&&d(new Map);const S=ic.getContext().rawContext,k=e.map(async(E,T)=>{if(E.audioBuffer){if(s&&!w){d($=>{const F=new Map($);return F.set(T,E.audioBuffer),F}),u($=>$+1);return}return os(E,T,E.audioBuffer,h.current)}if(!E.src&&E.waveformData){if(s&&!w){u($=>$+1);return}return os(E,T,void 0,h.current)}if(!E.src)throw new Error(`Track ${T+1}: Must provide src, audioBuffer, or waveformData`);const R=await fetch(E.src,{signal:_.signal});if(!R.ok)throw new Error(`Failed to fetch ${E.src}: ${R.statusText}`);const A=await R.arrayBuffer(),M=await S.decodeAudioData(A);if(!M||!M.sampleRate||!M.duration)throw new Error(`Invalid audio buffer for ${E.src}`);if(s&&!w){d($=>{const F=new Map($);return F.set(T,M),F}),u($=>$+1);return}return os(E,T,M,h.current)}),I=await Promise.all(k);if(!w){if(!s){const E=I.filter(T=>T!=null);g(E),u(E.length)}o(!1)}}catch(S){if(!w){const k=S instanceof Error?S.message:"Unknown error loading audio";l(k),o(!1),console.error(`[waveform-playlist] Error loading audio tracks: ${k}`)}}})(),()=>{w=!0,_.abort()}},[e,s]),{tracks:y,loading:a,error:i,loadedCount:c,totalCount:f}}function D0({originalClip:e,clip:t,pixelDelta:n,samplesPerPixel:r,sampleRate:s,boundary:a,sortedClips:o,sortedIndex:i}){const l=n*r,c=Math.floor(.1*s),u={...t,startSample:e.startSample,offsetSamples:e.offsetSamples,durationSamples:e.durationSamples},f=mc(u,Math.floor(l),a,o,i,c);return a==="left"?{startSample:e.startSample+f,durationSamples:e.durationSamples-f,offsetSamples:e.offsetSamples+f}:{startSample:e.startSample,durationSamples:e.durationSamples+f,offsetSamples:e.offsetSamples}}function nf({tracks:e,onTracksChange:t,samplesPerPixel:n,sampleRate:r,engineRef:s,isDraggingRef:a,snapSamplePosition:o}){const i=p.useRef(o);i.current=o;const l=p.useRef(null),c=p.useRef(0),u=p.useCallback(d=>{const h=d.operation.source?.data;if(!h)return;if(!h.boundary){l.current=null;return}const y=e[h.trackIndex]?.clips[h.clipIndex];y&&(l.current={offsetSamples:y.offsetSamples,durationSamples:y.durationSamples,startSample:y.startSample},a.current=!0)},[e,a]),f=p.useCallback(d=>{const h=d.operation.source?.data;if(!h||!h.boundary||!l.current)return;const{boundary:v,trackIndex:y,clipIndex:g}=h,w=(d.to?.x??d.operation.position.current.x)-d.operation.position.initial.x,_=w*n,x=l.current,S=i.current;let k=_;const I=e.map((E,T)=>{if(T!==y)return E;const R=[...E.clips].sort(($,F)=>$.startSample-F.startSample),A=R.findIndex($=>$===E.clips[g]),M=E.clips.map(($,F)=>{if(F!==g)return $;let L=D0({originalClip:x,clip:$,pixelDelta:w,samplesPerPixel:n,sampleRate:r,boundary:v,sortedClips:R,sortedIndex:A});if(S)if(v==="left"){const z=S(L.startSample),q=z-L.startSample;L={startSample:z,durationSamples:L.durationSamples-q,offsetSamples:L.offsetSamples+q},k=z-x.startSample}else{const z=L.startSample+L.durationSamples,q=S(z);L={...L,durationSamples:q-L.startSample},k=L.durationSamples-x.durationSamples}return{...$,startSample:L.startSample,durationSamples:L.durationSamples,offsetSamples:L.offsetSamples}});return{...E,clips:M}});c.current=k,t(I)},[e,t,n,r]),m=p.useCallback(d=>{if(d.canceled){if(l.current){const _=d.operation.source?.data;if(_){const{trackIndex:x,clipIndex:S}=_,k=l.current,I=e.map((E,T)=>{if(T!==x)return E;const R=E.clips.map((A,M)=>M!==S?A:{...A,offsetSamples:k.offsetSamples,durationSamples:k.durationSamples,startSample:k.startSample});return{...E,clips:R}});t(I)}}a.current=!1,l.current=null,c.current=0;return}const h=d.operation.source?.data;if(!h)return;const{trackIndex:v,clipId:y,boundary:g}=h,b=g?c.current:d.operation.transform.x*n,w=e[v]?.id;if(g){a.current=!1,w?s.current?s.current.trimClip(w,y,g,Math.floor(b)):console.warn("[waveform-playlist] engineRef is null — trim not synced to adapter"):console.warn(`[waveform-playlist] onDragEnd: track at index ${v} not found — trim not synced to adapter`),l.current=null,c.current=0;return}w?s.current?s.current.moveClip(w,y,Math.floor(b)):console.warn("[waveform-playlist] engineRef is null — move not synced to adapter"):console.warn(`[waveform-playlist] onDragEnd: track at index ${v} not found — move not synced to adapter`)},[e,t,n,s,a]);return{onDragStart:u,onDragMove:f,onDragEnd:m}}const Sa=.01;function rf({annotations:e,onAnnotationsChange:t,samplesPerPixel:n,sampleRate:r,duration:s,linkEndpoints:a}){const o=p.useRef(null),i=p.useCallback(u=>{const f=u.operation.source?.data;if(!f||f.annotationIndex===void 0){o.current=null;return}const m=e[f.annotationIndex];m&&(o.current={start:m.start,end:m.end,annotationIndex:f.annotationIndex})},[e]),l=p.useCallback(u=>{if(!o.current)return;const f=u.operation.source?.data;if(!f)return;const{edge:m,annotationIndex:d}=f,h=o.current,g=((u.to?.x??u.operation.position.current.x)-u.operation.position.initial.x)*n/r,b=m==="start"?h.start+g:h.end+g,w=P0({annotationIndex:d,newTime:b,isDraggingStart:m==="start",annotations:e,duration:s,linkEndpoints:a});t(w)},[e,t,n,r,s,a]),c=p.useCallback(u=>{if(u.canceled&&o.current){const{annotationIndex:f,start:m,end:d}=o.current,h=e.map((v,y)=>y!==f?v:{...v,start:m,end:d});t(h)}o.current=null},[e,t]);return{onDragStart:i,onDragMove:l,onDragEnd:c}}function P0({annotationIndex:e,newTime:t,isDraggingStart:n,annotations:r,duration:s,linkEndpoints:a}){const o=[...r],i=r[e];if(n){const l=Math.min(i.end-.1,Math.max(0,t)),c=l-i.start;if(o[e]={...i,start:l},a&&e>0){const u=o[e-1];Math.abs(u.end-i.start)<Sa?o[e-1]={...u,end:Math.max(u.start+.1,u.end+c)}:l<=u.end&&(o[e]={...o[e],start:u.end})}else!a&&e>0&&l<o[e-1].end&&(o[e-1]={...o[e-1],end:l})}else{const l=Math.max(i.start+.1,Math.min(t,s)),c=l-i.end;if(o[e]={...i,end:l},a&&e<o.length-1){const u=o[e+1];if(Math.abs(u.start-i.end)<Sa){const f=u.start+c;o[e+1]={...u,start:Math.min(u.end-.1,f)};let m=e+1;for(;m<o.length-1;){const d=o[m],h=o[m+1];if(Math.abs(h.start-d.end)<Sa){const v=d.end-r[m].end;o[m+1]={...h,start:Math.min(h.end-.1,h.start+v)},m++}else break}}else l>=u.start&&(o[e]={...o[e],end:u.start})}else if(!a&&e<o.length-1&&l>o[e+1].start){const u=o[e+1];o[e+1]={...u,start:l};let f=e+1;for(;f<o.length-1;){const m=o[f],d=o[f+1];if(m.end>d.start)o[f+1]={...d,start:m.end},f++;else break}}}return o}function sf(e={}){const{touchOptimized:t=!1,touchDelay:n=250,touchTolerance:r=5,mouseDistance:s=1}=e;return p.useMemo(()=>t?[io.configure({activationConstraints(a){return a.pointerType==="touch"?[new Ot.Delay({value:n,tolerance:r})]:[new Ot.Distance({value:s})]}})]:[io.configure({activationConstraints:[new Ot.Distance({value:s})]})],[t,n,r,s])}const af=e=>{const{tracks:t,sampleRate:n,engineRef:r}=e,{currentTimeRef:s}=dt(),{selectedTrackId:a}=at(),o=p.useCallback((l,c,u)=>{const{samplesPerPixel:f}=e,m=t[l];if(!m)return!1;const d=m.clips[c];if(!d)return!1;const h=Math.round(u*n),v=gh(h,f),y=Math.floor(.1*n);if(!gc(d,v,y))return console.warn("Split point is invalid (outside bounds or too close to edge)"),!1;const g=r.current;return g?(g.splitClip(m.id,d.id,v),!0):(console.warn("[waveform-playlist] engineRef is null — split not synced to adapter"),!1)},[t,e,n,r]);return{splitClipAtPlayhead:p.useCallback(()=>{if(!a)return console.warn("[waveform-playlist] No track selected — click a clip to select a track first"),!1;const l=t.findIndex(f=>f.id===a);if(l===-1)return console.warn("Selected track not found"),!1;const c=t[l],u=s.current??0;for(let f=0;f<c.clips.length;f++){const m=c.clips[f],d=m.startSample/n,h=(m.startSample+m.durationSamples)/n;if(u>d&&u<h)return o(l,f,u)}return console.warn(`[waveform-playlist] No clip found at playhead position on track "${c.name}"`),!1},[t,s,a,o,n]),splitClipAt:o}},Bs=e=>{const{shortcuts:t,enabled:n=!0}=e,r=p.useCallback(s=>{if(!n)return;const a=s.target;if(a.tagName==="INPUT"||a.tagName==="TEXTAREA"||a.isContentEditable)return;const o=t.find(i=>{const l=s.key.toLowerCase()===i.key.toLowerCase()||s.key===i.key,c=i.ctrlKey===void 0||s.ctrlKey===i.ctrlKey,u=i.shiftKey===void 0||s.shiftKey===i.shiftKey,f=i.metaKey===void 0||s.metaKey===i.metaKey,m=i.altKey===void 0||s.altKey===i.altKey;return l&&c&&u&&f&&m});o&&(o.preventDefault!==!1&&s.preventDefault(),o.action())},[t,n]);p.useEffect(()=>{if(n)return window.addEventListener("keydown",r),()=>{window.removeEventListener("keydown",r)}},[r,n])},F0=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("+")},of=(e={})=>{const{enabled:t=!0,additionalShortcuts:n=[],shortcuts:r}=e,{isPlaying:s}=dt(),{setCurrentTime:a,play:o,pause:i,stop:l}=ke(),c=p.useCallback(()=>{s?i():o()},[s,o,i]),u=p.useCallback(()=>{l()},[l]),f=p.useCallback(()=>{a(0),s&&o(0)},[s,a,o]),d=r??[...[{key:" ",action:c,description:"Play/Pause",preventDefault:!0},{key:"Escape",action:u,description:"Stop",preventDefault:!0},{key:"0",action:f,description:"Rewind to start",preventDefault:!0}],...n];return Bs({shortcuts:d,enabled:t}),{rewindToStart:f,togglePlayPause:c,stopPlayback:u,shortcuts:d}},ka=.01,is=.01;function lf({annotations:e,activeAnnotationId:t,onAnnotationsChange:n,onActiveAnnotationChange:r,duration:s,linkEndpoints:a,continuousPlay:o=!1,enabled:i=!0,scrollContainerRef:l,samplesPerPixel:c,sampleRate:u,onPlay:f}){const m=p.useMemo(()=>t?e.findIndex(I=>I.id===t):-1,[e,t]),d=p.useCallback(I=>{if(!l?.current||!c||!u)return;const E=e.find(q=>q.id===I);if(!E)return;const T=l.current,R=T.clientWidth,A=E.start*u/c,M=E.end*u/c,$=(A+M)/2,F=T.scrollLeft,L=F,z=F+R;if(A<L||M>z){const q=Math.max(0,$-R/2);T.scrollTo({left:q,behavior:"smooth"})}},[e,l,c,u]);p.useEffect(()=>{t&&l?.current&&c&&u&&d(t)},[t,d,l,c,u]);const h=p.useCallback(I=>{if(m<0)return;const E=e[m],T=Math.max(0,Math.min(E.end-.1,E.start+I)),R=T-E.start,A=[...e];if(A[m]={...E,start:T},a&&m>0){const M=A[m-1];Math.abs(M.end-E.start)<ka&&(A[m-1]={...M,end:Math.max(M.start+.1,M.end+R)})}else if(!a&&m>0){const M=A[m-1];T<M.end&&(A[m-1]={...M,end:T})}n(A)},[e,m,a,n]),v=p.useCallback(I=>{if(m<0)return;const E=e[m],T=Math.max(E.start+.1,Math.min(s,E.end+I)),R=T-E.end,A=[...e];if(A[m]={...E,end:T},a&&m<e.length-1){const M=A[m+1];if(Math.abs(M.start-E.end)<ka){const $=Math.min(M.end-.1,M.start+R);A[m+1]={...M,start:$};let F=m+1;for(;F<A.length-1;){const L=A[F],z=A[F+1];if(Math.abs(z.start-e[F].end)<ka){const q=L.end-e[F].end;A[F+1]={...z,start:Math.min(z.end-.1,z.start+q)},F++}else break}}}else if(!a&&m<e.length-1){const M=A[m+1];if(T>M.start){A[m+1]={...M,start:T};let $=m+1;for(;$<A.length-1;){const F=A[$],L=A[$+1];if(F.end>L.start)A[$+1]={...L,start:F.end},$++;else break}}}n(A)},[e,m,s,a,n]),y=p.useCallback(()=>{!r||e.length===0||(m<=0?r(e[e.length-1].id):r(e[m-1].id))},[e,m,r]),g=p.useCallback(()=>{!r||e.length===0||(m<0||m>=e.length-1?r(e[0].id):r(e[m+1].id))},[e,m,r]),b=p.useCallback(()=>{!r||e.length===0||r(e[0].id)},[e,r]),w=p.useCallback(()=>{!r||e.length===0||r(e[e.length-1].id)},[e,r]),_=p.useCallback(()=>{r&&r(null)},[r]),x=p.useCallback(()=>{if(m<0||!f)return;const I=e[m],E=o?void 0:I.end-I.start;f(I.start,E)},[e,m,o,f]),S=p.useMemo(()=>[{key:"[",action:()=>h(-is),description:"Move annotation start earlier",preventDefault:!0},{key:"]",action:()=>h(is),description:"Move annotation start later",preventDefault:!0},{key:"{",shiftKey:!0,action:()=>v(-is),description:"Move annotation end earlier",preventDefault:!0},{key:"}",shiftKey:!0,action:()=>v(is),description:"Move annotation end later",preventDefault:!0},{key:"Enter",action:x,description:"Play selected annotation",preventDefault:!0}],[h,v,x]),k=p.useMemo(()=>[{key:"ArrowUp",action:y,description:"Select previous annotation",preventDefault:!0},{key:"ArrowLeft",action:y,description:"Select previous annotation",preventDefault:!0},{key:"ArrowDown",action:g,description:"Select next annotation",preventDefault:!0},{key:"ArrowRight",action:g,description:"Select next annotation",preventDefault:!0},{key:"Home",action:b,description:"Select first annotation",preventDefault:!0},{key:"End",action:w,description:"Select last annotation",preventDefault:!0},{key:"Escape",action:_,description:"Deselect annotation",preventDefault:!0}],[y,g,b,w,_]);return Bs({shortcuts:S,enabled:i&&m>=0}),Bs({shortcuts:k,enabled:i&&e.length>0&&!!r}),{moveStartBoundary:h,moveEndBoundary:v,selectPrevious:y,selectNext:g,selectFirst:b,selectLast:w,clearSelection:_,scrollToAnnotation:d,playActiveAnnotation:x}}const Hr=[{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}]}],Ii=e=>Hr.find(t=>t.id===e),O0=e=>Hr.filter(t=>t.category===e),L0=[{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"}];const B0={reverb:O.Reverb,freeverb:O.Freeverb,jcReverb:O.JCReverb,feedbackDelay:O.FeedbackDelay,pingPongDelay:O.PingPongDelay,chorus:O.Chorus,phaser:O.Phaser,tremolo:O.Tremolo,vibrato:O.Vibrato,autoPanner:O.AutoPanner,autoFilter:O.AutoFilter,autoWah:O.AutoWah,eq3:O.EQ3,distortion:O.Distortion,bitCrusher:O.BitCrusher,chebyshev:O.Chebyshev,compressor:O.Compressor,limiter:O.Limiter,gate:O.Gate,stereoWidener:O.StereoWidener};let W0=0;const V0=()=>`effect_${Date.now()}_${++W0}`;function $r(e,t){const n=B0[e.id];if(!n)throw new Error(`Unknown effect type: ${e.id}`);const r={};e.parameters.forEach(i=>{const l=t?.[i.name]??i.default;r[i.name]=l});const s=new n(r),a=V0(),o=s;return{effect:s,id:e.id,instanceId:a,dispose(){try{s.disconnect(),s.dispose()}catch(i){console.warn(`[waveform-playlist] Error disposing effect "${e.id}" (${a}):`,i)}},setParameter(i,l){const c=o[i];if(i==="wet"){const u=o.wet;if(u&&typeof u=="object"&&"value"in u){u.value=l;return}}c!==void 0&&(c&&typeof c=="object"&&"value"in c?c.value=l:o[i]=l)},getParameter(i){if(i==="wet"){const c=o.wet;if(c&&typeof c=="object"&&"value"in c)return c.value}const l=o[i];if(l!==void 0)return l&&typeof l=="object"&&"value"in l?l.value:l},connect(i){s.connect(i)},disconnect(){try{s.disconnect()}catch(i){console.warn(`[waveform-playlist] Error disconnecting effect "${e.id}" (${a}):`,i)}}}}function N0(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 z0(e=256){const[t,n]=p.useState([]),r=p.useRef(t);r.current=t;const s=p.useRef(new Map),a=p.useRef(null),o=p.useRef(null),i=p.useCallback(y=>{const g=o.current;if(!g)return;const{masterGainNode:b,destination:w,analyserNode:_}=g;try{b.disconnect()}catch(S){console.warn("[waveform-playlist] Error disconnecting master effects chain:",S)}const x=y.map(S=>s.current.get(S.instanceId)).filter(S=>S!==void 0);if(x.length===0)b.connect(_),_.connect(w);else{let S=b;x.forEach(k=>{try{k.disconnect()}catch(I){console.warn(`[waveform-playlist] Error disconnecting effect "${k.id}":`,I)}S.connect(k.effect),S=k.effect}),S.connect(_),_.connect(w)}},[]),l=p.useCallback(y=>{const g=Ii(y);if(!g){console.error(`Unknown effect: ${y}`);return}const b={};g.parameters.forEach(x=>{b[x.name]=x.default});const w=$r(g,b);s.current.set(w.instanceId,w);const _={instanceId:w.instanceId,effectId:g.id,definition:g,params:b,bypassed:!1};n(x=>[...x,_])},[]),c=p.useCallback(y=>{const g=s.current.get(y);g&&(g.dispose(),s.current.delete(y)),n(b=>b.filter(w=>w.instanceId!==y))},[]),u=p.useCallback((y,g,b)=>{const w=s.current.get(y);w&&w.setParameter(g,b),n(_=>_.map(x=>x.instanceId===y?{...x,params:{...x.params,[g]:b}}:x))},[]),f=p.useCallback(y=>{const g=r.current.find(_=>_.instanceId===y);if(!g)return;const b=!g.bypassed,w=s.current.get(y);if(w){const _=g.params.wet??1;w.setParameter("wet",b?0:_)}n(_=>_.map(x=>x.instanceId===y?{...x,bypassed:b}:x))},[]),m=p.useCallback((y,g)=>{n(b=>{const w=[...b],[_]=w.splice(y,1);return w.splice(g,0,_),w})},[]),d=p.useCallback(()=>{s.current.forEach(y=>y.dispose()),s.current.clear(),n([])},[]);p.useEffect(()=>{i(t)},[t,i]);const h=p.useCallback((y,g,b)=>{const w=new O.Analyser("fft",e);a.current=w,o.current={masterGainNode:y,destination:g,analyserNode:w};const x=r.current.map(S=>s.current.get(S.instanceId)).filter(S=>S!==void 0);if(x.length===0)y.connect(w),w.connect(g);else{let S=y;x.forEach(k=>{S.connect(k.effect),S=k.effect}),S.connect(w),w.connect(g)}return function(){w.dispose(),a.current=null,o.current=null}},[e]);p.useEffect(()=>{const y=s.current;return()=>{y.forEach(g=>g.dispose()),y.clear()}},[]);const v=p.useCallback(()=>{const y=t.filter(g=>!g.bypassed);if(y.length!==0)return(g,b,w)=>{const _=[];for(const x of y){const S=$r(x.definition,x.params);_.push(S)}if(_.length===0)g.connect(b);else{let x=g;_.forEach(S=>{x.connect(S.effect),x=S.effect}),x.connect(b)}return function(){_.forEach(S=>S.dispose())}}},[t]);return{activeEffects:t,availableEffects:Hr,addEffect:l,removeEffect:c,updateParameter:u,toggleBypass:f,reorderEffects:m,clearAllEffects:d,masterEffects:h,createOfflineEffectsFunction:v,analyserRef:a}}function j0(){const[e,t]=p.useState(new Map),n=p.useRef(new Map),r=p.useRef(new Map),s=p.useCallback((d,h)=>{const v=r.current.get(d);if(!v)return;const{graphEnd:y,masterGainNode:g}=v,b=n.current.get(d);try{y.disconnect()}catch(_){console.warn(`[waveform-playlist] Error disconnecting track "${d}" effect chain:`,_)}const w=h.map(_=>b?.get(_.instanceId)).filter(_=>_!==void 0);if(w.length===0)y.connect(g);else{let _=y;w.forEach(x=>{try{x.disconnect()}catch(S){console.warn(`[waveform-playlist] Error disconnecting effect "${x.id}" on track "${d}":`,S)}_.connect(x.effect),_=x.effect}),_.connect(g)}},[]),a=p.useCallback((d,h)=>{const v=Ii(h);if(!v){console.error(`Unknown effect: ${h}`);return}const y={};v.parameters.forEach(w=>{y[w.name]=w.default});const g=$r(v,y);n.current.has(d)||n.current.set(d,new Map),n.current.get(d).set(g.instanceId,g);const b={instanceId:g.instanceId,effectId:v.id,definition:v,params:y,bypassed:!1};t(w=>{const _=new Map(w),x=_.get(d)||[];return _.set(d,[...x,b]),_})},[]),o=p.useCallback((d,h)=>{const v=n.current.get(d),y=v?.get(h);y&&(y.dispose(),v?.delete(h)),t(g=>{const b=new Map(g),w=b.get(d)||[];return b.set(d,w.filter(_=>_.instanceId!==h)),b})},[]),i=p.useCallback((d,h,v,y)=>{const b=n.current.get(d)?.get(h);b&&b.setParameter(v,y),t(w=>{const _=new Map(w),x=_.get(d)||[];return _.set(d,x.map(S=>S.instanceId===h?{...S,params:{...S.params,[v]:y}}:S)),_})},[]),l=p.useCallback((d,h)=>{const y=(u.current.get(d)||[]).find(_=>_.instanceId===h);if(!y)return;const g=!y.bypassed,w=n.current.get(d)?.get(h);if(w){const _=y.params.wet??1;w.setParameter("wet",g?0:_)}t(_=>{const x=new Map(_),S=x.get(d)||[];return x.set(d,S.map(k=>k.instanceId===h?{...k,bypassed:g}:k)),x})},[]),c=p.useCallback(d=>{const h=n.current.get(d);h&&(h.forEach(v=>v.dispose()),h.clear()),t(v=>{const y=new Map(v);return y.set(d,[]),y})},[]),u=p.useRef(e);u.current=e;const f=p.useCallback(d=>(h,v,y)=>{r.current.set(d,{graphEnd:h,masterGainNode:v});const g=u.current.get(d)||[],b=n.current.get(d),w=g.map(_=>b?.get(_.instanceId)).filter(_=>_!==void 0);if(w.length===0)h.connect(v);else{let _=h;w.forEach(x=>{_.connect(x.effect),_=x.effect}),_.connect(v)}return function(){r.current.delete(d)}},[]);p.useEffect(()=>{e.forEach((d,h)=>{s(h,d)})},[e,s]),p.useEffect(()=>{const d=n.current;return()=>{d.forEach(h=>{h.forEach(v=>v.dispose()),h.clear()}),d.clear()}},[]);const m=p.useCallback(d=>{const v=(e.get(d)||[]).filter(y=>!y.bypassed);if(v.length!==0)return(y,g,b)=>{const w=[];for(const _ of v){const x=$r(_.definition,_.params);w.push(x)}if(w.length===0)y.connect(g);else{let _=y;w.forEach(x=>{_.connect(x.effect),_=x.effect}),_.connect(g)}return function(){w.forEach(x=>x.dispose())}}},[e]);return{trackEffectsState:e,addEffectToTrack:a,removeEffectFromTrack:o,updateTrackEffectParameter:i,toggleBypass:l,clearTrackEffects:c,getTrackEffectsFunction:f,createOfflineTrackEffectsFunction:m,availableEffects:Hr}}function Z0(e,t={}){const{bitDepth:n=16}=t,r=e.numberOfChannels,s=e.sampleRate,a=e.length,o=n/8,i=r*o,l=s*i,c=a*i,u=44,f=u+c,m=new ArrayBuffer(f),d=new DataView(m);ls(d,0,"RIFF"),d.setUint32(4,f-8,!0),ls(d,8,"WAVE"),ls(d,12,"fmt "),d.setUint32(16,16,!0),d.setUint16(20,n===32?3:1,!0),d.setUint16(22,r,!0),d.setUint32(24,s,!0),d.setUint32(28,l,!0),d.setUint16(32,i,!0),d.setUint16(34,n,!0),ls(d,36,"data"),d.setUint32(40,c,!0);const h=[];for(let y=0;y<r;y++)h.push(e.getChannelData(y));let v=u;if(n===16)for(let y=0;y<a;y++)for(let g=0;g<r;g++){const b=h[g][y],w=Math.max(-1,Math.min(1,b)),_=w<0?w*32768:w*32767;d.setInt16(v,_,!0),v+=2}else for(let y=0;y<a;y++)for(let g=0;g<r;g++)d.setFloat32(v,h[g][y],!0),v+=4;return new Blob([m],{type:"audio/wav"})}function ls(e,t,n){for(let r=0;r<n.length;r++)e.setUint8(t+r,n.charCodeAt(r))}function H0(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 cf(){const[e,t]=p.useState(!1),[n,r]=p.useState(0),[s,a]=p.useState(null);return{exportWav:p.useCallback(async(i,l,c={})=>{const{filename:u="export",mode:f="master",trackIndex:m,autoDownload:d=!0,applyEffects:h=!0,effectsFunction:v,createOfflineTrackEffects:y,bitDepth:g=16,onProgress:b}=c;t(!0),r(0),a(null);try{if(i.length===0)throw new Error("No tracks to export");if(f==="individual"&&(m===void 0||m<0||m>=i.length))throw new Error("Invalid track index for individual export");const w=i[0].clips[0]?.sampleRate||44100;let _=0;for(const R of i)for(const A of R.clips){const M=A.startSample+A.durationSamples;_=Math.max(_,M)}_+=Math.round(w*.1);const x=_/w,S=f==="individual"?[{track:i[m],state:l[m],index:m}]:i.map((R,A)=>({track:R,state:l[A],index:A})),k=l.some(R=>R.soloed),I=!!y;let E;if((v||I)&&h)E=await G0(S,l,k,x,w,v,y,R=>{r(R),b?.(R)});else{const R=new OfflineAudioContext(2,_,w);let A=0;const M=S.reduce(($,{track:F})=>$+F.clips.length,0);for(const{track:$,state:F}of S)if(!(F.muted&&!F.soloed)&&!(k&&!F.soloed))for(const L of $.clips){await X0(R,L,F,w,h),A++;const z=A/M*.5;r(z),b?.(z)}r(.5),b?.(.5),E=await R.startRendering()}r(.9),b?.(.9);const T=Z0(E,{bitDepth:g});if(r(1),b?.(1),d){const R=f==="individual"?`${u}_${i[m].name}`:u;H0(T,`${R}.wav`)}return{audioBuffer:E,blob:T,duration:x}}catch(w){const _=w instanceof Error?w.message:"Export failed";throw a(_),w}finally{t(!1)}},[]),isExporting:e,progress:n,error:s}}async function G0(e,t,n,r,s,a,o,i){const{Offline:l,Volume:c,Gain:u,Panner:f,Player:m,ToneAudioBuffer:d}=await import("tone");i(.1);let h;try{h=await l(async({transport:v,destination:y})=>{const g=new c(0);let b;a?b=a(g,y,!0):g.connect(y);for(const{track:w,state:_}of e){if(_.muted&&!_.soloed||n&&!_.soloed)continue;const x=new c(U0(_.volume)),S=new f(_.pan),k=new u(_.muted?0:1),I=o?.(w.id);I?I(k,g,!0):k.connect(g),S.connect(k),x.connect(S);for(const E of w.clips){const{audioBuffer:T,startSample:R,durationSamples:A,offsetSamples:M,gain:$,fadeIn:F,fadeOut:L}=E,z=R/s,q=A/s,Y=M/s,ne=new d(T),G=new m(ne),J=new u($);if(G.connect(J),J.connect(x),F){const ae=z,ue=z+F.duration,de=xr(J.gain);de&&(de.setValueAtTime(0,ae),de.linearRampToValueAtTime($,ue))}if(L){const ae=z+q-L.duration,ue=z+q,de=xr(J.gain);de&&(de.setValueAtTime($,ae),de.linearRampToValueAtTime(0,ue))}G.start(z,Y,q)}}v.start(0)},r,2,s)}catch(v){throw v instanceof Error?v:new Error(`Tone.Offline rendering failed: ${String(v)}`)}return i(.9),h.get()}function U0(e){return 20*Math.log10(Math.max(e,1e-4))}async function X0(e,t,n,r,s){const{audioBuffer:a,startSample:o,durationSamples:i,offsetSamples:l,gain:c,fadeIn:u,fadeOut:f}=t;if(!a){console.warn(`Skipping clip "${t.name||t.id}" - no audioBuffer for export`);return}const m=o/r,d=i/r,h=l/r,v=e.createBufferSource();v.buffer=a;const y=e.createGain(),g=c*n.volume,b=e.createStereoPanner();if(b.pan.value=n.pan,v.connect(y),y.connect(b),b.connect(e.destination),s){if(u?y.gain.setValueAtTime(0,m):y.gain.setValueAtTime(g,m),u){const w=m,_=m+u.duration;Ql(y.gain,w,_,0,g,u.type||"linear")}if(f){const w=m+d-f.duration,_=m+d;(!u||u.duration<d-f.duration)&&y.gain.setValueAtTime(g,w),Ql(y.gain,w,_,g,0,f.type||"linear")}}else y.gain.setValueAtTime(g,m);v.start(m,h,d)}function Ql(e,t,n,r,s,a){const o=n-t;if(!(o<=0))switch(a){case"linear":e.setValueAtTime(r,t),e.linearRampToValueAtTime(s,n);break;case"exponential":{const i=Math.max(r,1e-4),l=Math.max(s,1e-4);e.setValueAtTime(i,t),e.exponentialRampToValueAtTime(l,n),s===0&&e.setValueAtTime(0,n);break}case"logarithmic":{const i=ec(r,s,256,"logarithmic");e.setValueCurveAtTime(i,t,o);break}case"sCurve":{const i=ec(r,s,256,"sCurve");e.setValueCurveAtTime(i,t,o);break}default:e.setValueAtTime(r,t),e.linearRampToValueAtTime(s,n)}}function ec(e,t,n,r){const s=new Float32Array(n),a=t-e;for(let o=0;o<n;o++){const i=o/(n-1);let l;r==="logarithmic"?a>0?l=Math.log10(1+i*9)/Math.log10(10):l=1-Math.log10(1+(1-i)*9)/Math.log10(10):l=i*i*(3-2*i),s[o]=e+a*l}return s}const uf=()=>{const e=p.useRef(null),t=p.useCallback(()=>{e.current!==null&&(cancelAnimationFrame(e.current),e.current=null)},[]),n=p.useCallback(r=>{t(),e.current=requestAnimationFrame(r)},[t]);return p.useEffect(()=>()=>{t()},[t]),{animationFrameRef:e,startAnimationFrameLoop:n,stopAnimationFrameLoop:t}},Y0=`
|
|
858
858
|
"use strict";
|
|
859
859
|
|
|
860
860
|
var INT8_MAX = 127;
|
|
@@ -1001,13 +1001,13 @@ self.onmessage = function(e) {
|
|
|
1001
1001
|
self.postMessage({ id: msg.id, error: err.message || String(err) });
|
|
1002
1002
|
}
|
|
1003
1003
|
};
|
|
1004
|
-
`;let K0=0;function q0(){let e;try{const r=new Blob([Y0],{type:"application/javascript"}),s=URL.createObjectURL(r);e=new Worker(s),URL.revokeObjectURL(s)}catch(r){return console.warn("[waveform-playlist] Failed to create peaks worker (CSP restriction?):",r),{generate(){return Promise.reject(new Error("Worker creation failed"))},terminate(){}}}const t=new Map;let n=!1;return e.onmessage=r=>{const s=r.data,a=t.get(s.id);if(a)if(t.delete(s.id),s.error)a.reject(new Error(s.error));else try{const o=vt.create(s.buffer);a.resolve(o)}catch(o){a.reject(o)}},e.onerror=r=>{n=!0,e.terminate();for(const[,s]of t)s.reject(r.error??new Error(r.message));t.clear()},{generate(r){if(n)return Promise.reject(new Error("Worker terminated"));const s=String(++K0);return new Promise((a,o)=>{t.set(s,{resolve:a,reject:o}),e.postMessage({id:s,scale:r.scale,bits:r.bits,amplitude_scale:1,split_channels:r.splitChannels,length:r.length,sample_rate:r.sampleRate,channels:r.channels},r.channels)})},terminate(){n=!0,e.terminate();for(const[,r]of t)r.reject(new Error("Worker terminated"));t.clear()}}}function J0(e,t){const[n,r]=p.useState(()=>new Map),[s,a]=p.useState(!1),o=p.useRef(null),i=p.useRef(new WeakMap),l=p.useRef(new WeakMap),c=p.useRef(new WeakMap),u=p.useRef(0),f=p.useCallback(()=>(o.current||(o.current=q0()),o.current),[]);return p.useEffect(()=>{let m=!1;const d=i.current,h=l.current,v=c.current,y=[],g=new Map;for(const _ of e)for(const w of _.clips){if(!w.audioBuffer||w.waveformData)continue;const x=d.get(w.audioBuffer);if(x){y.push({clipId:w.id,waveformData:x});continue}if(h.get(w.audioBuffer)){const k=v.get(w.audioBuffer);k?k.add(w.id):v.set(w.audioBuffer,new Set([w.id]));continue}const C=g.get(w.audioBuffer);C?C.add(w.id):g.set(w.audioBuffer,new Set([w.id]))}if(y.length>0&&r(_=>{const w=new Map(_);for(const x of y)w.set(x.clipId,x.waveformData);return w}),g.size===0)return;u.current+=g.size,a(!0);const b=f();for(const[_,w]of g){v.set(_,new Set(w));const x=[];for(let I=0;I<_.numberOfChannels;I++)x.push(_.getChannelData(I).slice().buffer);const C=`buffer-${Math.random().toString(36).slice(2,11)}`,k=b.generate({id:C,channels:x,length:_.length,sampleRate:_.sampleRate,scale:t,bits:16,splitChannels:!0}).then(I=>{d.set(_,I);const E=v.get(_)??new Set;v.delete(_),h.delete(_),!m&&(r(T=>{const R=new Map(T);for(const A of E)R.set(A,I);return R}),u.current--,u.current<=0&&(u.current=0,a(!1)))}).catch(I=>{v.delete(_),h.delete(_),!m&&(console.warn("[waveform-playlist] Worker peak generation failed:",I),u.current--,u.current<=0&&(u.current=0,a(!1)))});h.set(_,k)}return()=>{m=!0,l.current=new WeakMap,c.current=new WeakMap,u.current=0,a(!1)}},[e,t,f]),p.useEffect(()=>()=>{o.current?.terminate(),o.current=null},[]),{cache:n,isGenerating:s}}function mo(e){return e instanceof File?e.name.replace(/\.[^/.]+$/,""):e instanceof Blob?"Untitled":typeof e=="string"?e.split("/").pop()?.replace(/\.[^/.]+$/,"")??"Untitled":e.name??e.src.split("/").pop()?.replace(/\.[^/.]+$/,"")??"Untitled"}async function Q0(e,t,n){const r=mo(e);if(e instanceof Blob){const l=await e.arrayBuffer();return n?.throwIfAborted(),{audioBuffer:await t.decodeAudioData(l),name:r}}const s=typeof e=="string"?e:e.src,a=await fetch(s,{signal:n});if(!a.ok)throw new Error(`Failed to fetch ${s}: ${a.statusText}`);const o=await a.arrayBuffer();return n?.throwIfAborted(),{audioBuffer:await t.decodeAudioData(o),name:r}}function ey(){const[e,t]=p.useState([]),[n,r]=p.useState(0),[s,a]=p.useState([]),o=p.useRef(!1),i=p.useRef(new Set),l=p.useRef(new Map);p.useEffect(()=>{const f=l.current;return()=>{o.current=!0;for(const m of f.values())m.abort();f.clear()}},[]);const c=p.useCallback(f=>{if(f.length===0)return;const m=dh(),d=f.map(h=>({track:cc({name:`${mo(h)} (loading...)`,clips:[]}),source:h}));t(h=>[...h,...d.map(v=>v.track)]),r(h=>h+f.length);for(const{track:h,source:v}of d){i.current.add(h.id);const y=new AbortController;l.current.set(h.id,y),(async()=>{try{const{audioBuffer:g,name:b}=await Q0(v,m,y.signal),_=lc({audioBuffer:g,startTime:0,duration:g.duration,offset:0,name:b});!o.current&&i.current.has(h.id)&&t(w=>w.map(x=>x.id===h.id?{...x,name:b,clips:[_]}:x))}catch(g){if(g instanceof DOMException&&g.name==="AbortError")return;console.warn("[waveform-playlist] Error loading audio:",g),!o.current&&i.current.has(h.id)&&(t(b=>b.filter(_=>_.id!==h.id)),a(b=>[...b,{name:mo(v),error:g instanceof Error?g:new Error(String(g))}]))}finally{l.current.delete(h.id),!o.current&&i.current.delete(h.id)&&r(g=>g-1)}})()}},[]),u=p.useCallback(f=>{t(d=>d.filter(h=>h.id!==f));const m=l.current.get(f);m&&(m.abort(),l.current.delete(f)),i.current.delete(f)&&r(d=>d-1)},[]);return{tracks:e,addTracks:c,removeTrack:u,loadingCount:n,isLoading:n>0,errors:s}}const lf=p.createContext(null),cf=p.createContext(null),uf=p.createContext(null),df=p.createContext(null),ty=({tracks:e,timescale:t=!1,mono:n=!1,waveHeight:r=80,samplesPerPixel:s=1024,zoomLevels:a,automaticScroll:o=!1,theme:i,controls:l={show:!1,width:0},annotationList:c,effects:u,onReady:f,onAnnotationUpdate:m,onAnnotationsChange:d,barWidth:h=1,barGap:v=0,progressBarWidth:y,onTracksChange:g,soundFontCache:b,deferEngineRebuild:_=!1,children:w})=>{const x=y??h+v,C=p.useMemo(()=>a,[a?.join(",")]),k=p.useMemo(()=>{if(!c?.annotations)return[];if(process.env.NODE_ENV!=="production"&&c.annotations.length>0){const N=c.annotations[0];if(typeof N.start!="number"||typeof N.end!="number")return console.error("[waveform-playlist] Annotations must have numeric start/end values. In v6, use parseAeneas() from @waveform-playlist/annotations before passing annotations. Received start type: "+typeof N.start),[]}return c.annotations},[c?.annotations]),I=p.useRef(k);I.current=k;const[E,T]=p.useState(null),[R,A]=p.useState(!1),[M,$]=p.useState(0),[F,L]=p.useState(0),[z,q]=p.useState([]),[Y,ne]=p.useState([]),[G,J]=p.useState([]),[ae,ue]=p.useState(o),[de,Me]=p.useState(c?.isContinuousPlay??!1),[j,U]=p.useState(c?.linkEndpoints??!1),[ye,Z]=p.useState(c?.editable??!1),[Q,ke]=p.useState(!1),B=p.useRef(null),$e=p.useRef(!1),Qe=p.useRef(!1);Qe.current=R;const We=p.useRef(0),pe=p.useRef(0),te=p.useRef(e),Ue=p.useRef(b);Ue.current=b;const at=p.useRef(G),_e=p.useRef(0),Fe=p.useRef(0),Ve=p.useRef(null),Ye=p.useRef(null),kt=p.useRef(!1),zt=p.useRef(c?.isContinuousPlay??!1),X=p.useRef(null),me=p.useRef(null),je=p.useRef(0),Oe=p.useRef(!1),oe=p.useRef(!1),fe=p.useRef(s),Ze=p.useRef(44100),{timeFormat:Et,setTimeFormat:It,formatTime:Cn}=Qd(),ft=ef({engineRef:B,initialSamplesPerPixel:s}),{samplesPerPixel:V,onEngineState:K}=ft,ee=tf({engineRef:B,initialVolume:1}),{masterVolume:le,setMasterVolume:Re,masterVolumeRef:He,onEngineState:re}=ee,{selectionStart:Ke,selectionEnd:et,setSelection:Ne,selectionStartRef:ht,selectionEndRef:Mt,onEngineState:tn}=C0({engineRef:B}),{isLoopEnabled:nn,loopStart:jt,loopEnd:Qn,setLoopEnabled:Ur,setLoopRegion:kn,clearLoopRegion:Ri,isLoopEnabledRef:Di,loopStartRef:Pi,loopEndRef:Fi,onEngineState:Oi}=k0({engineRef:B}),{selectedTrackId:Li,setSelectedTrackId:Bi,onEngineState:Wi,selectedTrackIdRef:Vi}=E0({engineRef:B}),{animationFrameRef:Ni,startAnimationFrameLoop:oa,stopAnimationFrameLoop:Xr}=of(),Lf=p.useMemo(()=>Math.min(...C??[256,512,1024,2048,4096,8192]),[C]),{cache:zi}=J0(e,Lf),ji=p.useCallback(N=>{zt.current=N,Me(N)},[]),Ft=p.useCallback(N=>{X.current=N,T(N)},[]),Zi=p.useCallback(()=>{const N=ht.current??0,H=Mt.current??0;N!==H&&H>N&&kn(N,H)},[kn,ht,Mt]);p.useEffect(()=>{kt.current=ae},[ae]),p.useEffect(()=>{at.current=G},[G]),te.current=e;const ia=e===me.current;Oe.current=ia||oe.current,p.useEffect(()=>{if(!Ye.current||F===0)return;const N=Ye.current,H=fe.current,ge=V;if(H===ge)return;const W=N.clientWidth,Ee=N.scrollLeft+W/2,Ce=Ze.current,da=Ee*H/Ce*Ce/ge,Jr=Math.max(0,da-W/2);N.scrollLeft=Jr,fe.current=ge},[V,F]);const Yr=p.useRef(null);p.useEffect(()=>{if(ia||oe.current){ia&&(me.current=null);let W=0;e.forEach(xe=>{xe.clips.forEach(Ee=>{const Ce=(Ee.startSample+Ee.durationSamples)/Ee.sampleRate;W=Math.max(W,Ce)})}),L(W);return}if(_){let W=0;e.forEach(xe=>{xe.clips.forEach(Ee=>{const Ce=(Ee.startSample+Ee.durationSamples)/Ee.sampleRate;W=Math.max(W,Ce)})}),L(W);return}if(ke(!1),e.length===0){q([]),L(0),J([]),ne([]),B.current&&(B.current.dispose(),B.current=null);return}const N=Qe.current,H=pe.current;return B.current&&N&&(B.current.stop(),Xr(),Yr.current={position:H}),(async()=>{try{const W=[];e.forEach(Ie=>{Ie.clips.length>0&&Ie.clips[0].audioBuffer&&W.push(Ie.clips[0].audioBuffer)});let xe=0;e.forEach(Ie=>{Ie.clips.forEach(mt=>{const Zt=mt.sampleRate,Zf=(mt.startSample+mt.durationSamples)/Zt;xe=Math.max(xe,Zf)})}),q(W),L(xe),J(Ie=>Ie.length===e.length?Ie.map((mt,Zt)=>({...mt,name:e[Zt].name})):e.map(mt=>({name:mt.name,muted:mt.muted,soloed:mt.soloed,volume:mt.volume,pan:mt.pan}))),B.current&&B.current.dispose(),je.current=0,me.current=null,$e.current=!1;const Ee=fh({effects:u,soundFontCache:Ue.current}),Ce=new bh({adapter:Ee,samplesPerPixel:fe.current,zoomLevels:C});Ce.setSelection(ht.current??0,Mt.current??0),Ce.setLoopRegion(Pi.current??0,Fi.current??0),Di.current&&Ce.setLoopEnabled(!0),Ce.setMasterVolume(He.current??1),Vi.current&&Ce.selectTrack(Vi.current);const qr=at.current,da=e.map((Ie,mt)=>{const Zt=qr[mt];return{...Ie,volume:Zt?.volume??Ie.volume,muted:Zt?.muted??Ie.muted,soloed:Zt?.soloed??Ie.soloed,pan:Zt?.pan??Ie.pan}});let Jr=!0;Ce.on("statechange",Ie=>{tn(Ie),Oi(Ie),Wi(Ie),K(Ie),re(Ie),!Jr&&Ie.tracksVersion!==je.current&&(je.current=Ie.tracksVersion,me.current=Ie.tracks,g?g(Ie.tracks):console.warn("[waveform-playlist] Engine tracks changed but onTracksChange prop is not set — UI will revert on next render. Pass onTracksChange to WaveformPlaylistProvider."))}),Ce.setTracks(da),Jr=!1,je.current=Ce.getState().tracksVersion,B.current=Ce,ke(!0);const jf=new CustomEvent("waveform-playlist:ready",{detail:{trackCount:e.length,duration:xe}});window.dispatchEvent(jf),f?.()}catch(W){console.error("Error loading audio:",W)}})(),()=>{if(Oe.current){Oe.current=!1;return}Xr(),B.current&&B.current.dispose()}},[e,f,u,Xr,tn,Oi,Wi,K,re,g,He,ht,Mt,Pi,Fi,Di,C,b,_]),p.useEffect(()=>{if(e.length===0)return;const N=e.map(H=>H.clips.map(W=>{let xe;if(W.waveformData)try{xe=Jl(W.waveformData,V,n,W.offsetSamples,W.durationSamples)}catch(Ee){console.warn("[waveform-playlist] Failed to extract peaks from waveformData:",Ee)}if(!xe){const Ee=zi.get(W.id);if(Ee)try{xe=Jl(Ee,V,n,W.offsetSamples,W.durationSamples)}catch(Ce){console.warn("[waveform-playlist] Failed to extract peaks from cache:",Ce)}}if(!xe){!_&&!W.audioBuffer&&!W.waveformData&&!W.midiNotes&&console.warn(`[waveform-playlist] Clip "${W.id}" has no audio data or waveform data`);const Ee=n?1:W.audioBuffer?.numberOfChannels??1,Ce=W.midiNotes?Math.ceil(W.durationSamples/V):0;xe={length:Ce,data:Array.from({length:Ee},()=>new Int16Array(Ce*2)),bits:16}}return{clipId:W.id,trackName:H.name,peaks:xe,startSample:W.startSample,durationSamples:W.durationSamples,fadeIn:W.fadeIn,fadeOut:W.fadeOut,midiNotes:W.midiNotes,sampleRate:W.sampleRate,offsetSamples:W.offsetSamples}}));ne(N)},[e,V,n,zi,_]);const Hi=p.useRef(!1),En=p.useCallback(()=>{if(B.current)return B.current.getCurrentTime();Hi.current||(Hi.current=!0,console.warn("[waveform-playlist] getPlaybackTime called without engine. Falling back to manual elapsed time (loop wrapping will not work)."));const N=O.getContext().currentTime-(_e.current??0);return(Fe.current??0)+N},[]),rn=p.useCallback(()=>{const N=()=>{const H=En();pe.current=H;const ge=I.current;if(ge.length>0){const W=ge.find(xe=>H>=xe.start&&H<xe.end);if(zt.current)W&&W.id!==X.current?Ft(W.id):!W&&X.current!==null&&Ft(null);else if(X.current){const xe=ge.find(Ee=>Ee.id===X.current);if(xe&&H>=xe.end){B.current&&B.current.stop(),A(!1),pe.current=We.current,$(We.current);return}}else W&&Ft(W.id)}if(kt.current&&Ye.current&&F>0){const W=Ye.current,xe=Ze.current,Ee=H*xe/fe.current,Ce=W.clientWidth,qr=Math.max(0,Ee-Ce/2);W.scrollLeft=qr}if(Ve.current!==null&&H>=Ve.current){B.current&&B.current.stop(),A(!1),pe.current=Ve.current,$(Ve.current),Ve.current=null;return}if(H>=F){B.current&&B.current.stop(),A(!1),pe.current=We.current,$(We.current),Ft(null);return}oa(N)};oa(N)},[F,Ft,oa,En]),pt=Xr;p.useEffect(()=>{(async()=>{if(R&&Ni.current&&B.current)if(de){const H=pe.current;B.current.stop(),pt();const W=O.getContext().currentTime;_e.current=W,Fe.current=H,B.current.play(H),rn()}else pt(),rn()})().catch(H=>{console.warn("[waveform-playlist] Failed to reschedule playback:",H),A(!1),pt()})},[de,R,rn,pt,Ni]),p.useEffect(()=>{(async()=>{if(Yr.current&&B.current){const{position:H}=Yr.current;Yr.current=null;const W=O.getContext().currentTime;_e.current=W,Fe.current=H,$e.current||(await B.current.init(),$e.current=!0),B.current.play(H),A(!0),rn()}})().catch(H=>{console.warn("[waveform-playlist] Failed to resume playback after track change:",H),A(!1),pt()})},[e,rn,pt]);const Kr=p.useCallback(async(N,H)=>{if(!B.current||F===0)return;const ge=N??pe.current;We.current=ge,pe.current=ge,B.current.stop(),B.current.seek(ge),pt();const xe=O.getContext().currentTime;_e.current=xe,Fe.current=ge,Ve.current=H!==void 0?ge+H:null,$e.current||(await B.current.init(),$e.current=!0);const Ee=H!==void 0?ge+H:void 0;try{B.current.play(ge,Ee)}catch(Ce){console.warn("[waveform-playlist] Playback failed to start:",Ce),pt();return}A(!0),rn()},[F,rn,pt]),Gi=p.useCallback(()=>{if(!B.current)return;const N=En();B.current.pause(),A(!1),pt(),pe.current=N,$(N)},[pt,En]),Ui=p.useCallback(()=>{B.current&&(B.current.stop(),A(!1),pt(),pe.current=We.current,$(We.current),Ft(null))},[pt,Ft]),Xi=p.useCallback(N=>{const H=Math.max(0,Math.min(N,F));pe.current=H,$(H),R&&B.current&&Kr(H)},[F,R,Kr]),Yi=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],muted:H},J(W),B.current&&B.current.setTrackMute(ge,H)},[G]),Ki=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],soloed:H},J(W),B.current&&B.current.setTrackSolo(ge,H)},[G]),qi=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],volume:H},J(W),B.current&&B.current.setTrackVolume(ge,H)},[G]),Ji=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],pan:H},J(W),B.current&&B.current.setTrackPan(ge,H)},[G]),Qi=p.useCallback((N,H)=>{Ne(N,H),pe.current=N,$(N),R&&B.current&&(B.current.stop(),B.current.seek(N),B.current.play(N))},[R,Ne]),el=p.useCallback(N=>{Ye.current=N},[]),la=p.useRef(d);la.current=d;const tl=p.useCallback(N=>{const H=typeof N=="function"?N(I.current):N;if(!la.current){process.env.NODE_ENV!=="production"&&console.warn("waveform-playlist: setAnnotations was called but no onAnnotationsChange callback is provided. Annotation edits will not persist. Pass onAnnotationsChange to WaveformPlaylistProvider to handle annotation updates.");return}la.current(H)},[]),ca=z[0]?.sampleRate||e[0]?.clips[0]?.sampleRate||44100;Ze.current=ca;const ua=t?30:0,nl=e.length*r+ua,Bf=p.useMemo(()=>({isPlaying:R,currentTime:M,currentTimeRef:pe,playbackStartTimeRef:_e,audioStartPositionRef:Fe,getPlaybackTime:En}),[R,M,pe,_e,Fe,En]),Wf=p.useMemo(()=>({continuousPlay:de,linkEndpoints:j,annotationsEditable:ye,isAutomaticScroll:ae,isLoopEnabled:nn,annotations:k,activeAnnotationId:E,selectionStart:Ke,selectionEnd:et,selectedTrackId:Li,loopStart:jt,loopEnd:Qn}),[de,j,ye,ae,nn,k,E,Ke,et,Li,jt,Qn]),rl=p.useCallback(N=>{pe.current=N,$(N)},[pe]),sl=p.useCallback(N=>{ue(N)},[]),Vf=p.useMemo(()=>({play:Kr,pause:Gi,stop:Ui,seekTo:Xi,setCurrentTime:rl,setTrackMute:Yi,setTrackSolo:Ki,setTrackVolume:qi,setTrackPan:Ji,setSelection:Qi,setSelectedTrackId:Bi,setTimeFormat:It,formatTime:Cn,zoomIn:ft.zoomIn,zoomOut:ft.zoomOut,setMasterVolume:Re,setAutomaticScroll:sl,setScrollContainer:el,scrollContainerRef:Ye,setContinuousPlay:ji,setLinkEndpoints:U,setAnnotationsEditable:Z,setAnnotations:tl,setActiveAnnotationId:Ft,setLoopEnabled:Ur,setLoopRegion:kn,setLoopRegionFromSelection:Zi,clearLoopRegion:Ri}),[Kr,Gi,Ui,Xi,rl,Yi,Ki,qi,Ji,Qi,Bi,It,Cn,ft.zoomIn,ft.zoomOut,Re,sl,el,Ye,ji,U,Z,tl,Ft,Ur,kn,Zi,Ri]),Nf=p.useMemo(()=>({duration:F,audioBuffers:z,peaksDataArray:Y,trackStates:G,tracks:e,sampleRate:ca,waveHeight:r,timeScaleHeight:ua,minimumPlaylistHeight:nl,controls:l,playoutRef:B,samplesPerPixel:V,timeFormat:Et,masterVolume:le,canZoomIn:ft.canZoomIn,canZoomOut:ft.canZoomOut,barWidth:h,barGap:v,progressBarWidth:x,isReady:Q,mono:n,isDraggingRef:oe,onTracksChange:g}),[F,z,Y,G,e,ca,r,ua,nl,l,B,V,Et,le,ft.canZoomIn,ft.canZoomOut,h,v,x,Q,n,oe,g]),zf={...Ld,...i};return S.jsx(P.ThemeProvider,{theme:zf,children:S.jsx(lf.Provider,{value:Bf,children:S.jsx(cf.Provider,{value:Wf,children:S.jsx(uf.Provider,{value:Vf,children:S.jsx(df.Provider,{value:Nf,children:w})})})})})},ct=()=>{const e=p.useContext(lf);if(!e)throw new Error("usePlaybackAnimation must be used within WaveformPlaylistProvider");return e},ut=()=>{const e=p.useContext(cf);if(!e)throw new Error("usePlaylistState must be used within WaveformPlaylistProvider");return e},Te=()=>{const e=p.useContext(uf);if(!e)throw new Error("usePlaylistControls must be used within WaveformPlaylistProvider");return e},dt=()=>{const e=p.useContext(df);if(!e)throw new Error("usePlaylistData must be used within WaveformPlaylistProvider");return e};var ny=class{constructor(e){this._playbackRate=1,this.handleEnded=()=>{this.onStopCallback&&this.onStopCallback()},this.handleTimeUpdate=()=>{this.onTimeUpdateCallback&&this.onTimeUpdateCallback(this.audioElement.currentTime)},this._peaks=e.peaks,this._id=e.id??`track-${Date.now()}`,this._name=e.name??"Track",this._playbackRate=e.playbackRate??1,typeof e.source=="string"?(this.audioElement=new Audio(e.source),this.ownsElement=!0):(this.audioElement=e.source,this.ownsElement=!1),this.audioElement.preload="auto",this.audioElement.volume=e.volume??1,this.audioElement.playbackRate=this._playbackRate;const t=this.audioElement;"preservesPitch"in this.audioElement?t.preservesPitch=!0:"mozPreservesPitch"in this.audioElement?t.mozPreservesPitch=!0:"webkitPreservesPitch"in this.audioElement&&(t.webkitPreservesPitch=!0),this.audioElement.addEventListener("ended",this.handleEnded),this.audioElement.addEventListener("timeupdate",this.handleTimeUpdate)}play(e=0){this.audioElement.currentTime=e,this.audioElement.play().catch(t=>{console.warn("MediaElementTrack: play() failed:",t)})}pause(){this.audioElement.pause()}stop(){this.audioElement.pause(),this.audioElement.currentTime=0}seekTo(e){this.audioElement.currentTime=Math.max(0,Math.min(e,this.duration))}setVolume(e){this.audioElement.volume=Math.max(0,Math.min(1,e))}setPlaybackRate(e){const t=Math.max(.5,Math.min(2,e));this._playbackRate=t,this.audioElement.playbackRate=t}setMuted(e){this.audioElement.muted=e}setOnStopCallback(e){this.onStopCallback=e}setOnTimeUpdateCallback(e){this.onTimeUpdateCallback=e}dispose(){this.audioElement.removeEventListener("ended",this.handleEnded),this.audioElement.removeEventListener("timeupdate",this.handleTimeUpdate),this.audioElement.pause(),this.ownsElement&&(this.audioElement.src="",this.audioElement.load())}get id(){return this._id}get name(){return this._name}get peaks(){return this._peaks}get currentTime(){return this.audioElement.currentTime}get duration(){return this.audioElement.duration||this._peaks.duration}get isPlaying(){return!this.audioElement.paused&&!this.audioElement.ended}get volume(){return this.audioElement.volume}get playbackRate(){return this._playbackRate}get muted(){return this.audioElement.muted}get element(){return this.audioElement}},ry=class{constructor(e={}){this.track=null,this._isPlaying=!1,this._masterVolume=e.masterVolume??1,this._playbackRate=e.playbackRate??1}async init(){}addTrack(e){return this.track&&(console.warn("MediaElementPlayout: Only one track is supported. Disposing previous track. For multi-track, use TonePlayout."),this.track.dispose()),this.track=new ny({...e,volume:this._masterVolume*(e.volume??1),playbackRate:this._playbackRate}),this.track.setOnStopCallback(()=>{this._isPlaying=!1,this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback()}),this.track}removeTrack(e){this.track&&this.track.id===e&&(this.track.dispose(),this.track=null)}getTrack(e){if(this.track&&this.track.id===e)return this.track}play(e,t,n){if(!this.track){console.warn("MediaElementPlayout: No track to play");return}const r=t??0;if(this._isPlaying=!0,this.track.play(r),n!==void 0){const s=n/this._playbackRate;setTimeout(()=>{this._isPlaying&&(this.pause(),this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback())},s*1e3)}}pause(){this.track&&this.track.pause(),this._isPlaying=!1}stop(){this.track&&this.track.stop(),this._isPlaying=!1}seekTo(e){this.track&&this.track.seekTo(e)}getCurrentTime(){return this.track?this.track.currentTime:0}setMasterVolume(e){this._masterVolume=Math.max(0,Math.min(1,e)),this.track&&this.track.setVolume(this._masterVolume)}setPlaybackRate(e){this._playbackRate=Math.max(.5,Math.min(2,e)),this.track&&this.track.setPlaybackRate(this._playbackRate)}setMute(e,t){const n=this.getTrack(e);n&&n.setMuted(t)}setSolo(e,t){console.warn("MediaElementPlayout: Solo is not applicable for single-track playback")}setOnPlaybackComplete(e){this.onPlaybackCompleteCallback=e}dispose(){this.track&&(this.track.dispose(),this.track=null)}get isPlaying(){return this._isPlaying}get masterVolume(){return this._masterVolume}get playbackRate(){return this._playbackRate}get duration(){return this.track?.duration??0}get sampleRate(){return this.track?.peaks.sample_rate??44100}};const ff=p.createContext(null),hf=p.createContext(null),pf=p.createContext(null),mf=p.createContext(null),sy=({track:e,samplesPerPixel:t=1024,waveHeight:n=100,timescale:r=!1,playbackRate:s=1,automaticScroll:a=!1,theme:o,controls:i={show:!1,width:0},annotationList:l,barWidth:c=1,barGap:u=0,progressBarWidth:f,onAnnotationsChange:m,onReady:d,children:h})=>{const v=f??c+u,[y,g]=p.useState(!1),[b,_]=p.useState(0),[w,x]=p.useState(0),[C,k]=p.useState([]),[I,E]=p.useState(s),T=p.useMemo(()=>{if(!l?.annotations)return[];if(process.env.NODE_ENV!=="production"&&l.annotations.length>0){const X=l.annotations[0];if(typeof X.start!="number"||typeof X.end!="number")return console.error("[waveform-playlist] Annotations must have numeric start/end values. In v6, use parseAeneas() from @waveform-playlist/annotations before passing annotations. Received start type: "+typeof X.start),[]}return l.annotations},[l?.annotations]),R=p.useRef(T);R.current=T;const[A,M]=p.useState(null),[$,F]=p.useState(l?.isContinuousPlay??!1),[L]=p.useState(t),[z,q]=p.useState(a),Y=p.useRef(null),ne=p.useRef(0),G=p.useRef($),J=p.useRef(null),ae=p.useRef(null),ue=p.useRef(a),de=p.useRef(t),{startAnimationFrameLoop:Me,stopAnimationFrameLoop:j}=of();p.useEffect(()=>{G.current=$},[$]),p.useEffect(()=>{ue.current=z},[z]);const U=p.useCallback(X=>{J.current=X,M(X)},[]),ye=p.useCallback(X=>{G.current=X,F(X)},[]),Z=p.useCallback(X=>{ae.current=X},[]),Q=e.waveformData.sample_rate;p.useEffect(()=>{const X=new ry({playbackRate:s});X.addTrack({source:e.source,peaks:e.waveformData,name:e.name});const me=X.getTrack(X.track?.id??"");return me&&me.setOnTimeUpdateCallback(je=>{ne.current=je}),X.setOnPlaybackComplete(()=>{j(),g(!1),U(null),ne.current=0,_(0)}),Y.current=X,x(e.waveformData.duration),d?.(),()=>{j(),X.dispose()}},[e.source,e.waveformData,e.name,s,d,j,U]),p.useEffect(()=>{try{const X=S0(e.waveformData,L,0,0,Math.ceil(e.waveformData.duration*Q)),me={clipId:"media-element-clip",trackName:e.name??"Track",peaks:{length:X.length,data:[X.data],bits:X.bits},startSample:0,durationSamples:Math.ceil(e.waveformData.duration*Q)};k([[me]])}catch(X){console.warn("[waveform-playlist] Failed to extract peaks from waveform data:",X)}},[e.waveformData,e.name,L,Q]);const ke=p.useCallback(()=>{const X=()=>{const me=Y.current?.getCurrentTime()??0;ne.current=me;const je=R.current;if(je.length>0){const Oe=je.find(oe=>me>=oe.start&&me<oe.end);if(G.current)Oe&&Oe.id!==J.current?U(Oe.id):!Oe&&J.current!==null&&U(null);else if(J.current){const oe=je.find(fe=>fe.id===J.current);if(oe&&me>=oe.end){Y.current?.stop(),g(!1);return}}else Oe&&U(Oe.id)}if(ue.current&&ae.current){const Oe=ae.current,oe=me*Q/de.current,fe=Oe.clientWidth,Ze=Math.max(0,oe-fe/2);Oe.scrollLeft=Ze}Me(X)};Me(X)},[U,Q,Me]),B=j,$e=p.useCallback(X=>{if(!Y.current)return;const me=X??ne.current;Y.current.play(void 0,me),g(!0),ke()},[ke]),Qe=p.useCallback(()=>{Y.current&&(Y.current.pause(),g(!1),B(),_(Y.current.getCurrentTime()))},[B]),We=p.useCallback(()=>{Y.current&&(Y.current.stop(),g(!1),B(),ne.current=0,_(0),U(null))},[B,U]),pe=p.useCallback(X=>{const me=Math.max(0,Math.min(X,w));ne.current=me,_(me),Y.current&&Y.current.seekTo(me)},[w]),te=p.useCallback(X=>{const me=Math.max(.5,Math.min(2,X));E(me),Y.current&&Y.current.setPlaybackRate(me)},[]),Ue=r?30:0,at=p.useMemo(()=>({isPlaying:y,currentTime:b,currentTimeRef:ne}),[y,b]),_e=p.useMemo(()=>({continuousPlay:$,annotations:T,activeAnnotationId:A,playbackRate:I,isAutomaticScroll:z}),[$,T,A,I,z]),Fe=p.useRef(m);Fe.current=m;const Ve=p.useCallback(X=>{const me=typeof X=="function"?X(R.current):X;if(!Fe.current){process.env.NODE_ENV!=="production"&&console.warn("waveform-playlist: setAnnotations was called but no onAnnotationsChange callback is provided. Annotation edits will not persist. Pass onAnnotationsChange to MediaElementPlaylistProvider to handle annotation updates.");return}Fe.current(me)},[]),Ye=p.useMemo(()=>({play:$e,pause:Qe,stop:We,seekTo:pe,setPlaybackRate:te,setContinuousPlay:ye,setAnnotations:Ve,setActiveAnnotationId:U,setAutomaticScroll:X=>{q(X)},setScrollContainer:Z,scrollContainerRef:ae}),[$e,Qe,We,pe,te,ye,Ve,U,Z]),kt=p.useMemo(()=>({duration:w,peaksDataArray:C,sampleRate:Q,waveHeight:n,timeScaleHeight:Ue,samplesPerPixel:L,playoutRef:Y,controls:i,barWidth:c,barGap:u,progressBarWidth:v}),[w,C,Q,n,Ue,L,i,c,u,v]),zt={...Ld,...o};return S.jsx(P.ThemeProvider,{theme:zt,children:S.jsx(ff.Provider,{value:at,children:S.jsx(hf.Provider,{value:_e,children:S.jsx(pf.Provider,{value:Ye,children:S.jsx(mf.Provider,{value:kt,children:h})})})})})},ta=()=>{const e=p.useContext(ff);if(!e)throw new Error("useMediaElementAnimation must be used within MediaElementPlaylistProvider");return e},na=()=>{const e=p.useContext(hf);if(!e)throw new Error("useMediaElementState must be used within MediaElementPlaylistProvider");return e},Mi=()=>{const e=p.useContext(pf);if(!e)throw new Error("useMediaElementControls must be used within MediaElementPlaylistProvider");return e},ra=()=>{const e=p.useContext(mf);if(!e)throw new Error("useMediaElementData must be used within MediaElementPlaylistProvider");return e},ay=({className:e})=>{const{isPlaying:t,currentTimeRef:n}=ct(),{selectionStart:r,selectionEnd:s,isLoopEnabled:a}=ut(),{play:o}=Te(),i=async()=>{if(r!==s&&s>r&&!a){const c=s-r;await o(r,c)}else await o(n.current??0)};return S.jsx(Ct,{onClick:i,disabled:t,className:e,children:"Play"})},oy=({className:e})=>{const{isPlaying:t}=ct(),{pause:n}=Te();return S.jsx(Ct,{onClick:n,disabled:!t,className:e,children:"Pause"})},iy=({className:e})=>{const{isPlaying:t}=ct(),{stop:n}=Te();return S.jsx(Ct,{onClick:n,disabled:!t,className:e,children:"Stop"})},ly=({className:e})=>{const{isPlaying:t}=ct(),{play:n,setCurrentTime:r}=Te(),s=()=>{r(0),t&&n(0)};return S.jsx(Ct,{onClick:s,className:e,children:"Rewind"})},cy=({className:e})=>{const{isPlaying:t}=ct(),{play:n,setCurrentTime:r}=Te(),{duration:s}=dt(),a=()=>{r(s),t&&n(s)};return S.jsx(Ct,{onClick:a,className:e,children:"Fast Forward"})},uy=({skipAmount:e=5,className:t})=>{const{currentTimeRef:n,isPlaying:r}=ct(),{play:s,setCurrentTime:a}=Te(),o=()=>{const i=Math.max(0,(n.current??0)-e);a(i),r&&s(i)};return S.jsx(Ct,{onClick:o,className:t,children:"Skip Backward"})},dy=({skipAmount:e=5,className:t})=>{const{currentTimeRef:n,isPlaying:r}=ct(),{play:s,setCurrentTime:a}=Te(),{duration:o}=dt(),i=()=>{const l=Math.min(o,(n.current??0)+e);a(l),r&&s(l)};return S.jsx(Ct,{onClick:i,className:t,children:"Skip Forward"})},fy=({className:e})=>{const{isLoopEnabled:t,loopStart:n,loopEnd:r}=ut(),{setLoopEnabled:s,setLoopRegion:a}=Te(),{duration:o}=dt(),i=n!==r&&r>n,l=()=>{if(!t&&!i){const c=Math.min(10,o*.25);a(0,Math.max(1,c))}s(!t)};return S.jsx(Ct,{onClick:l,className:e,title:t?"Disable loop":"Enable loop",children:t?"Loop On":"Loop Off"})},hy=({className:e})=>{const{selectionStart:t,selectionEnd:n,loopStart:r,loopEnd:s}=ut(),{setLoopRegionFromSelection:a,clearLoopRegion:o}=Te(),i=t!==n&&n>t,l=r!==s&&s>r,c=()=>{l?o():a()};return S.jsx(Ct,{onClick:c,disabled:!i&&!l,className:e,title:l?"Clear loop region":i?"Set loop region from selection":"Create a selection first",children:l?"Clear Loop":"Set Loop"})},py=({className:e,disabled:t})=>{const{zoomIn:n}=Te(),{canZoomIn:r}=dt();return S.jsx(Ct,{onClick:n,disabled:t||!r,className:e,children:"Zoom In"})},my=({className:e,disabled:t})=>{const{zoomOut:n}=Te(),{canZoomOut:r}=dt();return S.jsx(Ct,{onClick:n,disabled:t||!r,className:e,children:"Zoom Out"})},gy=({className:e})=>{const{masterVolume:t}=dt(),{setMasterVolume:n}=Te();return S.jsx(rv,{volume:t,onChange:n,className:e})},vy=({className:e})=>{const{timeFormat:t}=dt(),{setTimeFormat:n}=Te();return S.jsx(jv,{value:t,onChange:n,className:e})},yy=P.span`
|
|
1004
|
+
`;let K0=0;function q0(){let e;try{const r=new Blob([Y0],{type:"application/javascript"}),s=URL.createObjectURL(r);e=new Worker(s),URL.revokeObjectURL(s)}catch(r){return console.warn("[waveform-playlist] Failed to create peaks worker (CSP restriction?):",r),{generate(){return Promise.reject(new Error("Worker creation failed"))},terminate(){}}}const t=new Map;let n=!1;return e.onmessage=r=>{const s=r.data,a=t.get(s.id);if(a)if(t.delete(s.id),s.error)a.reject(new Error(s.error));else try{const o=vt.create(s.buffer);a.resolve(o)}catch(o){a.reject(o)}},e.onerror=r=>{n=!0,e.terminate();for(const[,s]of t)s.reject(r.error??new Error(r.message));t.clear()},{generate(r){if(n)return Promise.reject(new Error("Worker terminated"));const s=String(++K0);return new Promise((a,o)=>{t.set(s,{resolve:a,reject:o}),e.postMessage({id:s,scale:r.scale,bits:r.bits,amplitude_scale:1,split_channels:r.splitChannels,length:r.length,sample_rate:r.sampleRate,channels:r.channels},r.channels)})},terminate(){n=!0,e.terminate();for(const[,r]of t)r.reject(new Error("Worker terminated"));t.clear()}}}function J0(e,t){const[n,r]=p.useState(()=>new Map),[s,a]=p.useState(!1),o=p.useRef(null),i=p.useRef(new WeakMap),l=p.useRef(new WeakMap),c=p.useRef(new WeakMap),u=p.useRef(0),f=p.useCallback(()=>(o.current||(o.current=q0()),o.current),[]);return p.useEffect(()=>{let m=!1;const d=i.current,h=l.current,v=c.current,y=[],g=new Map;for(const w of e)for(const _ of w.clips){if(!_.audioBuffer||_.waveformData)continue;const x=d.get(_.audioBuffer);if(x){y.push({clipId:_.id,waveformData:x});continue}if(h.get(_.audioBuffer)){const k=v.get(_.audioBuffer);k?k.add(_.id):v.set(_.audioBuffer,new Set([_.id]));continue}const S=g.get(_.audioBuffer);S?S.add(_.id):g.set(_.audioBuffer,new Set([_.id]))}if(y.length>0&&r(w=>{const _=new Map(w);for(const x of y)_.set(x.clipId,x.waveformData);return _}),g.size===0)return;u.current+=g.size,a(!0);const b=f();for(const[w,_]of g){v.set(w,new Set(_));const x=[];for(let I=0;I<w.numberOfChannels;I++)x.push(w.getChannelData(I).slice().buffer);const S=`buffer-${Math.random().toString(36).slice(2,11)}`,k=b.generate({id:S,channels:x,length:w.length,sampleRate:w.sampleRate,scale:t,bits:16,splitChannels:!0}).then(I=>{d.set(w,I);const E=v.get(w)??new Set;v.delete(w),h.delete(w),!m&&(r(T=>{const R=new Map(T);for(const A of E)R.set(A,I);return R}),u.current--,u.current<=0&&(u.current=0,a(!1)))}).catch(I=>{v.delete(w),h.delete(w),!m&&(console.warn("[waveform-playlist] Worker peak generation failed:",I),u.current--,u.current<=0&&(u.current=0,a(!1)))});h.set(w,k)}return()=>{m=!0,l.current=new WeakMap,c.current=new WeakMap,u.current=0,a(!1)}},[e,t,f]),p.useEffect(()=>()=>{o.current?.terminate(),o.current=null},[]),{cache:n,isGenerating:s}}function mo(e){return e instanceof File?e.name.replace(/\.[^/.]+$/,""):e instanceof Blob?"Untitled":typeof e=="string"?e.split("/").pop()?.replace(/\.[^/.]+$/,"")??"Untitled":e.name??e.src.split("/").pop()?.replace(/\.[^/.]+$/,"")??"Untitled"}async function Q0(e,t,n){const r=mo(e);if(e instanceof Blob){const l=await e.arrayBuffer();return n?.throwIfAborted(),{audioBuffer:await t.decodeAudioData(l),name:r}}const s=typeof e=="string"?e:e.src,a=await fetch(s,{signal:n});if(!a.ok)throw new Error(`Failed to fetch ${s}: ${a.statusText}`);const o=await a.arrayBuffer();return n?.throwIfAborted(),{audioBuffer:await t.decodeAudioData(o),name:r}}function ey(){const[e,t]=p.useState([]),[n,r]=p.useState(0),[s,a]=p.useState([]),o=p.useRef(!1),i=p.useRef(new Set),l=p.useRef(new Map);p.useEffect(()=>{const f=l.current;return()=>{o.current=!0;for(const m of f.values())m.abort();f.clear()}},[]);const c=p.useCallback(f=>{if(f.length===0)return;const m=ph(),d=f.map(h=>({track:cc({name:`${mo(h)} (loading...)`,clips:[]}),source:h}));t(h=>[...h,...d.map(v=>v.track)]),r(h=>h+f.length);for(const{track:h,source:v}of d){i.current.add(h.id);const y=new AbortController;l.current.set(h.id,y),(async()=>{try{const{audioBuffer:g,name:b}=await Q0(v,m,y.signal),w=lc({audioBuffer:g,startTime:0,duration:g.duration,offset:0,name:b});!o.current&&i.current.has(h.id)&&t(_=>_.map(x=>x.id===h.id?{...x,name:b,clips:[w]}:x))}catch(g){if(g instanceof DOMException&&g.name==="AbortError")return;console.warn("[waveform-playlist] Error loading audio:",g),!o.current&&i.current.has(h.id)&&(t(b=>b.filter(w=>w.id!==h.id)),a(b=>[...b,{name:mo(v),error:g instanceof Error?g:new Error(String(g))}]))}finally{l.current.delete(h.id),!o.current&&i.current.delete(h.id)&&r(g=>g-1)}})()}},[]),u=p.useCallback(f=>{t(d=>d.filter(h=>h.id!==f));const m=l.current.get(f);m&&(m.abort(),l.current.delete(f)),i.current.delete(f)&&r(d=>d-1)},[]);return{tracks:e,addTracks:c,removeTrack:u,loadingCount:n,isLoading:n>0,errors:s}}const df=p.createContext(null),ff=p.createContext(null),hf=p.createContext(null),pf=p.createContext(null),ty=({tracks:e,timescale:t=!1,mono:n=!1,waveHeight:r=80,samplesPerPixel:s=1024,zoomLevels:a,automaticScroll:o=!1,theme:i,controls:l={show:!1,width:0},annotationList:c,effects:u,onReady:f,onAnnotationUpdate:m,onAnnotationsChange:d,barWidth:h=1,barGap:v=0,progressBarWidth:y,onTracksChange:g,soundFontCache:b,deferEngineRebuild:w=!1,children:_})=>{const x=y??h+v,S=p.useMemo(()=>a,[a?.join(",")]),k=p.useMemo(()=>{if(!c?.annotations)return[];if(process.env.NODE_ENV!=="production"&&c.annotations.length>0){const N=c.annotations[0];if(typeof N.start!="number"||typeof N.end!="number")return console.error("[waveform-playlist] Annotations must have numeric start/end values. In v6, use parseAeneas() from @waveform-playlist/annotations before passing annotations. Received start type: "+typeof N.start),[]}return c.annotations},[c?.annotations]),I=p.useRef(k);I.current=k;const[E,T]=p.useState(null),[R,A]=p.useState(!1),[M,$]=p.useState(0),[F,L]=p.useState(0),[z,q]=p.useState([]),[Y,ne]=p.useState([]),[G,J]=p.useState([]),[ae,ue]=p.useState(o),[de,Ae]=p.useState(c?.isContinuousPlay??!1),[j,U]=p.useState(c?.linkEndpoints??!1),[ye,Z]=p.useState(c?.editable??!1),[Q,Ee]=p.useState(!1),B=p.useRef(null),$e=p.useRef(!1),Qe=p.useRef(!1);Qe.current=R;const We=p.useRef(0),pe=p.useRef(0),te=p.useRef(e),Ue=p.useRef(b);Ue.current=b;const it=p.useRef(G),_e=p.useRef(0),Fe=p.useRef(0),Ve=p.useRef(null),Ye=p.useRef(null),kt=p.useRef(!1),zt=p.useRef(c?.isContinuousPlay??!1),X=p.useRef(null),me=p.useRef(null),je=p.useRef(0),Oe=p.useRef(!1),oe=p.useRef(!1),fe=p.useRef(s),Ze=p.useRef(44100),{timeFormat:Et,setTimeFormat:It,formatTime:Sn}=Qd(),ft=ef({engineRef:B,initialSamplesPerPixel:s}),{samplesPerPixel:V,onEngineState:K}=ft,ee=tf({engineRef:B,initialVolume:1}),{masterVolume:le,setMasterVolume:Re,masterVolumeRef:He,onEngineState:re}=ee,{selectionStart:Ke,selectionEnd:et,setSelection:Ne,selectionStartRef:ht,selectionEndRef:Mt,onEngineState:tn}=I0({engineRef:B}),{isLoopEnabled:nn,loopStart:jt,loopEnd:Qn,setLoopEnabled:Ur,setLoopRegion:kn,clearLoopRegion:Ri,isLoopEnabledRef:Di,loopStartRef:Pi,loopEndRef:Fi,onEngineState:Oi}=M0({engineRef:B}),{selectedTrackId:Li,setSelectedTrackId:Bi,onEngineState:Wi,selectedTrackIdRef:Vi}=A0({engineRef:B}),{animationFrameRef:Ni,startAnimationFrameLoop:oa,stopAnimationFrameLoop:Xr}=uf(),Vf=p.useMemo(()=>Math.min(...S??[256,512,1024,2048,4096,8192]),[S]),{cache:zi}=J0(e,Vf),ji=p.useCallback(N=>{zt.current=N,Ae(N)},[]),Ft=p.useCallback(N=>{X.current=N,T(N)},[]),Zi=p.useCallback(()=>{const N=ht.current??0,H=Mt.current??0;N!==H&&H>N&&kn(N,H)},[kn,ht,Mt]);p.useEffect(()=>{kt.current=ae},[ae]),p.useEffect(()=>{it.current=G},[G]),te.current=e;const ia=e===me.current;Oe.current=ia||oe.current,p.useEffect(()=>{if(!Ye.current||F===0)return;const N=Ye.current,H=fe.current,ge=V;if(H===ge)return;const W=N.clientWidth,Ie=N.scrollLeft+W/2,Se=Ze.current,da=Ie*H/Se*Se/ge,Jr=Math.max(0,da-W/2);N.scrollLeft=Jr,fe.current=ge},[V,F]);const Yr=p.useRef(null);p.useEffect(()=>{if(ia||oe.current){ia&&(me.current=null);let W=0;e.forEach(xe=>{xe.clips.forEach(Ie=>{const Se=(Ie.startSample+Ie.durationSamples)/Ie.sampleRate;W=Math.max(W,Se)})}),L(W);return}if(w){let W=0;e.forEach(xe=>{xe.clips.forEach(Ie=>{const Se=(Ie.startSample+Ie.durationSamples)/Ie.sampleRate;W=Math.max(W,Se)})}),L(W);return}if(Ee(!1),e.length===0){q([]),L(0),J([]),ne([]),B.current&&(B.current.dispose(),B.current=null);return}const N=Qe.current,H=pe.current;return B.current&&N&&(B.current.stop(),Xr(),Yr.current={position:H}),(async()=>{try{const W=[];e.forEach(Me=>{Me.clips.length>0&&Me.clips[0].audioBuffer&&W.push(Me.clips[0].audioBuffer)});let xe=0;e.forEach(Me=>{Me.clips.forEach(mt=>{const Zt=mt.sampleRate,Uf=(mt.startSample+mt.durationSamples)/Zt;xe=Math.max(xe,Uf)})}),q(W),L(xe),J(Me=>Me.length===e.length?Me.map((mt,Zt)=>({...mt,name:e[Zt].name})):e.map(mt=>({name:mt.name,muted:mt.muted,soloed:mt.soloed,volume:mt.volume,pan:mt.pan}))),B.current&&B.current.dispose(),je.current=0,me.current=null,$e.current=!1;const Ie=mh({effects:u,soundFontCache:Ue.current}),Se=new xh({adapter:Ie,samplesPerPixel:fe.current,zoomLevels:S});Se.setSelection(ht.current??0,Mt.current??0),Se.setLoopRegion(Pi.current??0,Fi.current??0),Di.current&&Se.setLoopEnabled(!0),Se.setMasterVolume(He.current??1),Vi.current&&Se.selectTrack(Vi.current);const qr=it.current,da=e.map((Me,mt)=>{const Zt=qr[mt];return{...Me,volume:Zt?.volume??Me.volume,muted:Zt?.muted??Me.muted,soloed:Zt?.soloed??Me.soloed,pan:Zt?.pan??Me.pan}});let Jr=!0;Se.on("statechange",Me=>{tn(Me),Oi(Me),Wi(Me),K(Me),re(Me),!Jr&&Me.tracksVersion!==je.current&&(je.current=Me.tracksVersion,me.current=Me.tracks,g?g(Me.tracks):console.warn("[waveform-playlist] Engine tracks changed but onTracksChange prop is not set — UI will revert on next render. Pass onTracksChange to WaveformPlaylistProvider."))}),Se.setTracks(da),Jr=!1,je.current=Se.getState().tracksVersion,B.current=Se,Ee(!0);const Gf=new CustomEvent("waveform-playlist:ready",{detail:{trackCount:e.length,duration:xe}});window.dispatchEvent(Gf),f?.()}catch(W){console.error("Error loading audio:",W)}})(),()=>{if(Oe.current){Oe.current=!1;return}Xr(),B.current&&B.current.dispose()}},[e,f,u,Xr,tn,Oi,Wi,K,re,g,He,ht,Mt,Pi,Fi,Di,S,b,w]),p.useEffect(()=>{if(e.length===0)return;const N=e.map(H=>H.clips.map(W=>{let xe;if(W.waveformData)try{xe=Jl(W.waveformData,V,n,W.offsetSamples,W.durationSamples)}catch(Ie){console.warn("[waveform-playlist] Failed to extract peaks from waveformData:",Ie)}if(!xe){const Ie=zi.get(W.id);if(Ie)try{xe=Jl(Ie,V,n,W.offsetSamples,W.durationSamples)}catch(Se){console.warn("[waveform-playlist] Failed to extract peaks from cache:",Se)}}if(!xe){!w&&!W.audioBuffer&&!W.waveformData&&!W.midiNotes&&console.warn(`[waveform-playlist] Clip "${W.id}" has no audio data or waveform data`);const Ie=n?1:W.audioBuffer?.numberOfChannels??1,Se=W.midiNotes?Math.ceil(W.durationSamples/V):0;xe={length:Se,data:Array.from({length:Ie},()=>new Int16Array(Se*2)),bits:16}}return{clipId:W.id,trackName:H.name,peaks:xe,startSample:W.startSample,durationSamples:W.durationSamples,fadeIn:W.fadeIn,fadeOut:W.fadeOut,midiNotes:W.midiNotes,sampleRate:W.sampleRate,offsetSamples:W.offsetSamples}}));ne(N)},[e,V,n,zi,w]);const Hi=p.useRef(!1),En=p.useCallback(()=>{if(B.current)return B.current.getCurrentTime();Hi.current||(Hi.current=!0,console.warn("[waveform-playlist] getPlaybackTime called without engine. Falling back to manual elapsed time (loop wrapping will not work)."));const N=O.getContext().currentTime-(_e.current??0);return(Fe.current??0)+N},[]),rn=p.useCallback(()=>{const N=()=>{const H=En();pe.current=H;const ge=I.current;if(ge.length>0){const W=ge.find(xe=>H>=xe.start&&H<xe.end);if(zt.current)W&&W.id!==X.current?Ft(W.id):!W&&X.current!==null&&Ft(null);else if(X.current){const xe=ge.find(Ie=>Ie.id===X.current);if(xe&&H>=xe.end){B.current&&B.current.stop(),A(!1),pe.current=We.current,$(We.current);return}}else W&&Ft(W.id)}if(kt.current&&Ye.current&&F>0){const W=Ye.current,xe=Ze.current,Ie=H*xe/fe.current,Se=W.clientWidth,qr=Math.max(0,Ie-Se/2);W.scrollLeft=qr}if(Ve.current!==null&&H>=Ve.current){B.current&&B.current.stop(),A(!1),pe.current=Ve.current,$(Ve.current),Ve.current=null;return}if(H>=F){B.current&&B.current.stop(),A(!1),pe.current=We.current,$(We.current),Ft(null);return}oa(N)};oa(N)},[F,Ft,oa,En]),pt=Xr;p.useEffect(()=>{(async()=>{if(R&&Ni.current&&B.current)if(de){const H=pe.current;B.current.stop(),pt();const W=O.getContext().currentTime;_e.current=W,Fe.current=H,B.current.play(H),rn()}else pt(),rn()})().catch(H=>{console.warn("[waveform-playlist] Failed to reschedule playback:",H),A(!1),pt()})},[de,R,rn,pt,Ni]),p.useEffect(()=>{(async()=>{if(Yr.current&&B.current){const{position:H}=Yr.current;Yr.current=null;const W=O.getContext().currentTime;_e.current=W,Fe.current=H,$e.current||(await B.current.init(),$e.current=!0),B.current.play(H),A(!0),rn()}})().catch(H=>{console.warn("[waveform-playlist] Failed to resume playback after track change:",H),A(!1),pt()})},[e,rn,pt]);const Kr=p.useCallback(async(N,H)=>{if(!B.current||F===0)return;const ge=N??pe.current;We.current=ge,pe.current=ge,B.current.stop(),B.current.seek(ge),pt();const xe=O.getContext().currentTime;_e.current=xe,Fe.current=ge,Ve.current=H!==void 0?ge+H:null,$e.current||(await B.current.init(),$e.current=!0);const Ie=H!==void 0?ge+H:void 0;try{B.current.play(ge,Ie)}catch(Se){console.warn("[waveform-playlist] Playback failed to start:",Se),pt();return}A(!0),rn()},[F,rn,pt]),Gi=p.useCallback(()=>{if(!B.current)return;const N=En();B.current.pause(),A(!1),pt(),pe.current=N,$(N)},[pt,En]),Ui=p.useCallback(()=>{B.current&&(B.current.stop(),A(!1),pt(),pe.current=We.current,$(We.current),Ft(null))},[pt,Ft]),Xi=p.useCallback(N=>{const H=Math.max(0,Math.min(N,F));pe.current=H,$(H),R&&B.current&&Kr(H)},[F,R,Kr]),Yi=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],muted:H},J(W),B.current&&B.current.setTrackMute(ge,H)},[G]),Ki=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],soloed:H},J(W),B.current&&B.current.setTrackSolo(ge,H)},[G]),qi=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],volume:H},J(W),B.current&&B.current.setTrackVolume(ge,H)},[G]),Ji=p.useCallback((N,H)=>{const ge=te.current[N]?.id;if(!ge)return;const W=[...G];W[N]={...W[N],pan:H},J(W),B.current&&B.current.setTrackPan(ge,H)},[G]),Qi=p.useCallback((N,H)=>{Ne(N,H),pe.current=N,$(N),R&&B.current&&(B.current.stop(),B.current.seek(N),B.current.play(N))},[R,Ne]),el=p.useCallback(N=>{Ye.current=N},[]),la=p.useRef(d);la.current=d;const tl=p.useCallback(N=>{const H=typeof N=="function"?N(I.current):N;if(!la.current){process.env.NODE_ENV!=="production"&&console.warn("waveform-playlist: setAnnotations was called but no onAnnotationsChange callback is provided. Annotation edits will not persist. Pass onAnnotationsChange to WaveformPlaylistProvider to handle annotation updates.");return}la.current(H)},[]),ca=z[0]?.sampleRate||e[0]?.clips[0]?.sampleRate||44100;Ze.current=ca;const ua=t?30:0,nl=e.length*r+ua,Nf=p.useMemo(()=>({isPlaying:R,currentTime:M,currentTimeRef:pe,playbackStartTimeRef:_e,audioStartPositionRef:Fe,getPlaybackTime:En}),[R,M,pe,_e,Fe,En]),zf=p.useMemo(()=>({continuousPlay:de,linkEndpoints:j,annotationsEditable:ye,isAutomaticScroll:ae,isLoopEnabled:nn,annotations:k,activeAnnotationId:E,selectionStart:Ke,selectionEnd:et,selectedTrackId:Li,loopStart:jt,loopEnd:Qn}),[de,j,ye,ae,nn,k,E,Ke,et,Li,jt,Qn]),rl=p.useCallback(N=>{pe.current=N,$(N)},[pe]),sl=p.useCallback(N=>{ue(N)},[]),jf=p.useMemo(()=>({play:Kr,pause:Gi,stop:Ui,seekTo:Xi,setCurrentTime:rl,setTrackMute:Yi,setTrackSolo:Ki,setTrackVolume:qi,setTrackPan:Ji,setSelection:Qi,setSelectedTrackId:Bi,setTimeFormat:It,formatTime:Sn,zoomIn:ft.zoomIn,zoomOut:ft.zoomOut,setMasterVolume:Re,setAutomaticScroll:sl,setScrollContainer:el,scrollContainerRef:Ye,setContinuousPlay:ji,setLinkEndpoints:U,setAnnotationsEditable:Z,setAnnotations:tl,setActiveAnnotationId:Ft,setLoopEnabled:Ur,setLoopRegion:kn,setLoopRegionFromSelection:Zi,clearLoopRegion:Ri}),[Kr,Gi,Ui,Xi,rl,Yi,Ki,qi,Ji,Qi,Bi,It,Sn,ft.zoomIn,ft.zoomOut,Re,sl,el,Ye,ji,U,Z,tl,Ft,Ur,kn,Zi,Ri]),Zf=p.useMemo(()=>({duration:F,audioBuffers:z,peaksDataArray:Y,trackStates:G,tracks:e,sampleRate:ca,waveHeight:r,timeScaleHeight:ua,minimumPlaylistHeight:nl,controls:l,playoutRef:B,samplesPerPixel:V,timeFormat:Et,masterVolume:le,canZoomIn:ft.canZoomIn,canZoomOut:ft.canZoomOut,barWidth:h,barGap:v,progressBarWidth:x,isReady:Q,mono:n,isDraggingRef:oe,onTracksChange:g}),[F,z,Y,G,e,ca,r,ua,nl,l,B,V,Et,le,ft.canZoomIn,ft.canZoomOut,h,v,x,Q,n,oe,g]),Hf={...Ld,...i};return C.jsx(P.ThemeProvider,{theme:Hf,children:C.jsx(df.Provider,{value:Nf,children:C.jsx(ff.Provider,{value:zf,children:C.jsx(hf.Provider,{value:jf,children:C.jsx(pf.Provider,{value:Zf,children:_})})})})})},dt=()=>{const e=p.useContext(df);if(!e)throw new Error("usePlaybackAnimation must be used within WaveformPlaylistProvider");return e},at=()=>{const e=p.useContext(ff);if(!e)throw new Error("usePlaylistState must be used within WaveformPlaylistProvider");return e},ke=()=>{const e=p.useContext(hf);if(!e)throw new Error("usePlaylistControls must be used within WaveformPlaylistProvider");return e},ot=()=>{const e=p.useContext(pf);if(!e)throw new Error("usePlaylistData must be used within WaveformPlaylistProvider");return e};var ny=class{constructor(e){this._playbackRate=1,this.handleEnded=()=>{this.onStopCallback&&this.onStopCallback()},this.handleTimeUpdate=()=>{this.onTimeUpdateCallback&&this.onTimeUpdateCallback(this.audioElement.currentTime)},this._peaks=e.peaks,this._id=e.id??`track-${Date.now()}`,this._name=e.name??"Track",this._playbackRate=e.playbackRate??1,typeof e.source=="string"?(this.audioElement=new Audio(e.source),this.ownsElement=!0):(this.audioElement=e.source,this.ownsElement=!1),this.audioElement.preload="auto",this.audioElement.volume=e.volume??1,this.audioElement.playbackRate=this._playbackRate;const t=this.audioElement;"preservesPitch"in this.audioElement?t.preservesPitch=!0:"mozPreservesPitch"in this.audioElement?t.mozPreservesPitch=!0:"webkitPreservesPitch"in this.audioElement&&(t.webkitPreservesPitch=!0),this.audioElement.addEventListener("ended",this.handleEnded),this.audioElement.addEventListener("timeupdate",this.handleTimeUpdate)}play(e=0){this.audioElement.currentTime=e,this.audioElement.play().catch(t=>{console.warn("MediaElementTrack: play() failed:",t)})}pause(){this.audioElement.pause()}stop(){this.audioElement.pause(),this.audioElement.currentTime=0}seekTo(e){this.audioElement.currentTime=Math.max(0,Math.min(e,this.duration))}setVolume(e){this.audioElement.volume=Math.max(0,Math.min(1,e))}setPlaybackRate(e){const t=Math.max(.5,Math.min(2,e));this._playbackRate=t,this.audioElement.playbackRate=t}setMuted(e){this.audioElement.muted=e}setOnStopCallback(e){this.onStopCallback=e}setOnTimeUpdateCallback(e){this.onTimeUpdateCallback=e}dispose(){this.audioElement.removeEventListener("ended",this.handleEnded),this.audioElement.removeEventListener("timeupdate",this.handleTimeUpdate),this.audioElement.pause(),this.ownsElement&&(this.audioElement.src="",this.audioElement.load())}get id(){return this._id}get name(){return this._name}get peaks(){return this._peaks}get currentTime(){return this.audioElement.currentTime}get duration(){return this.audioElement.duration||this._peaks.duration}get isPlaying(){return!this.audioElement.paused&&!this.audioElement.ended}get volume(){return this.audioElement.volume}get playbackRate(){return this._playbackRate}get muted(){return this.audioElement.muted}get element(){return this.audioElement}},ry=class{constructor(e={}){this.track=null,this._isPlaying=!1,this._masterVolume=e.masterVolume??1,this._playbackRate=e.playbackRate??1}async init(){}addTrack(e){return this.track&&(console.warn("MediaElementPlayout: Only one track is supported. Disposing previous track. For multi-track, use TonePlayout."),this.track.dispose()),this.track=new ny({...e,volume:this._masterVolume*(e.volume??1),playbackRate:this._playbackRate}),this.track.setOnStopCallback(()=>{this._isPlaying=!1,this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback()}),this.track}removeTrack(e){this.track&&this.track.id===e&&(this.track.dispose(),this.track=null)}getTrack(e){if(this.track&&this.track.id===e)return this.track}play(e,t,n){if(!this.track){console.warn("MediaElementPlayout: No track to play");return}const r=t??0;if(this._isPlaying=!0,this.track.play(r),n!==void 0){const s=n/this._playbackRate;setTimeout(()=>{this._isPlaying&&(this.pause(),this.onPlaybackCompleteCallback&&this.onPlaybackCompleteCallback())},s*1e3)}}pause(){this.track&&this.track.pause(),this._isPlaying=!1}stop(){this.track&&this.track.stop(),this._isPlaying=!1}seekTo(e){this.track&&this.track.seekTo(e)}getCurrentTime(){return this.track?this.track.currentTime:0}setMasterVolume(e){this._masterVolume=Math.max(0,Math.min(1,e)),this.track&&this.track.setVolume(this._masterVolume)}setPlaybackRate(e){this._playbackRate=Math.max(.5,Math.min(2,e)),this.track&&this.track.setPlaybackRate(this._playbackRate)}setMute(e,t){const n=this.getTrack(e);n&&n.setMuted(t)}setSolo(e,t){console.warn("MediaElementPlayout: Solo is not applicable for single-track playback")}setOnPlaybackComplete(e){this.onPlaybackCompleteCallback=e}dispose(){this.track&&(this.track.dispose(),this.track=null)}get isPlaying(){return this._isPlaying}get masterVolume(){return this._masterVolume}get playbackRate(){return this._playbackRate}get duration(){return this.track?.duration??0}get sampleRate(){return this.track?.peaks.sample_rate??44100}};const mf=p.createContext(null),gf=p.createContext(null),vf=p.createContext(null),yf=p.createContext(null),sy=({track:e,samplesPerPixel:t=1024,waveHeight:n=100,timescale:r=!1,playbackRate:s=1,automaticScroll:a=!1,theme:o,controls:i={show:!1,width:0},annotationList:l,barWidth:c=1,barGap:u=0,progressBarWidth:f,onAnnotationsChange:m,onReady:d,children:h})=>{const v=f??c+u,[y,g]=p.useState(!1),[b,w]=p.useState(0),[_,x]=p.useState(0),[S,k]=p.useState([]),[I,E]=p.useState(s),T=p.useMemo(()=>{if(!l?.annotations)return[];if(process.env.NODE_ENV!=="production"&&l.annotations.length>0){const X=l.annotations[0];if(typeof X.start!="number"||typeof X.end!="number")return console.error("[waveform-playlist] Annotations must have numeric start/end values. In v6, use parseAeneas() from @waveform-playlist/annotations before passing annotations. Received start type: "+typeof X.start),[]}return l.annotations},[l?.annotations]),R=p.useRef(T);R.current=T;const[A,M]=p.useState(null),[$,F]=p.useState(l?.isContinuousPlay??!1),[L]=p.useState(t),[z,q]=p.useState(a),Y=p.useRef(null),ne=p.useRef(0),G=p.useRef($),J=p.useRef(null),ae=p.useRef(null),ue=p.useRef(a),de=p.useRef(t),{startAnimationFrameLoop:Ae,stopAnimationFrameLoop:j}=uf();p.useEffect(()=>{G.current=$},[$]),p.useEffect(()=>{ue.current=z},[z]);const U=p.useCallback(X=>{J.current=X,M(X)},[]),ye=p.useCallback(X=>{G.current=X,F(X)},[]),Z=p.useCallback(X=>{ae.current=X},[]),Q=e.waveformData.sample_rate;p.useEffect(()=>{const X=new ry({playbackRate:s});X.addTrack({source:e.source,peaks:e.waveformData,name:e.name});const me=X.getTrack(X.track?.id??"");return me&&me.setOnTimeUpdateCallback(je=>{ne.current=je}),X.setOnPlaybackComplete(()=>{j(),g(!1),U(null),ne.current=0,w(0)}),Y.current=X,x(e.waveformData.duration),d?.(),()=>{j(),X.dispose()}},[e.source,e.waveformData,e.name,s,d,j,U]),p.useEffect(()=>{try{const X=E0(e.waveformData,L,0,0,Math.ceil(e.waveformData.duration*Q)),me={clipId:"media-element-clip",trackName:e.name??"Track",peaks:{length:X.length,data:[X.data],bits:X.bits},startSample:0,durationSamples:Math.ceil(e.waveformData.duration*Q)};k([[me]])}catch(X){console.warn("[waveform-playlist] Failed to extract peaks from waveform data:",X)}},[e.waveformData,e.name,L,Q]);const Ee=p.useCallback(()=>{const X=()=>{const me=Y.current?.getCurrentTime()??0;ne.current=me;const je=R.current;if(je.length>0){const Oe=je.find(oe=>me>=oe.start&&me<oe.end);if(G.current)Oe&&Oe.id!==J.current?U(Oe.id):!Oe&&J.current!==null&&U(null);else if(J.current){const oe=je.find(fe=>fe.id===J.current);if(oe&&me>=oe.end){Y.current?.stop(),g(!1);return}}else Oe&&U(Oe.id)}if(ue.current&&ae.current){const Oe=ae.current,oe=me*Q/de.current,fe=Oe.clientWidth,Ze=Math.max(0,oe-fe/2);Oe.scrollLeft=Ze}Ae(X)};Ae(X)},[U,Q,Ae]),B=j,$e=p.useCallback(X=>{if(!Y.current)return;const me=X??ne.current;Y.current.play(void 0,me),g(!0),Ee()},[Ee]),Qe=p.useCallback(()=>{Y.current&&(Y.current.pause(),g(!1),B(),w(Y.current.getCurrentTime()))},[B]),We=p.useCallback(()=>{Y.current&&(Y.current.stop(),g(!1),B(),ne.current=0,w(0),U(null))},[B,U]),pe=p.useCallback(X=>{const me=Math.max(0,Math.min(X,_));ne.current=me,w(me),Y.current&&Y.current.seekTo(me)},[_]),te=p.useCallback(X=>{const me=Math.max(.5,Math.min(2,X));E(me),Y.current&&Y.current.setPlaybackRate(me)},[]),Ue=r?30:0,it=p.useMemo(()=>({isPlaying:y,currentTime:b,currentTimeRef:ne}),[y,b]),_e=p.useMemo(()=>({continuousPlay:$,annotations:T,activeAnnotationId:A,playbackRate:I,isAutomaticScroll:z}),[$,T,A,I,z]),Fe=p.useRef(m);Fe.current=m;const Ve=p.useCallback(X=>{const me=typeof X=="function"?X(R.current):X;if(!Fe.current){process.env.NODE_ENV!=="production"&&console.warn("waveform-playlist: setAnnotations was called but no onAnnotationsChange callback is provided. Annotation edits will not persist. Pass onAnnotationsChange to MediaElementPlaylistProvider to handle annotation updates.");return}Fe.current(me)},[]),Ye=p.useMemo(()=>({play:$e,pause:Qe,stop:We,seekTo:pe,setPlaybackRate:te,setContinuousPlay:ye,setAnnotations:Ve,setActiveAnnotationId:U,setAutomaticScroll:X=>{q(X)},setScrollContainer:Z,scrollContainerRef:ae}),[$e,Qe,We,pe,te,ye,Ve,U,Z]),kt=p.useMemo(()=>({duration:_,peaksDataArray:S,sampleRate:Q,waveHeight:n,timeScaleHeight:Ue,samplesPerPixel:L,playoutRef:Y,controls:i,barWidth:c,barGap:u,progressBarWidth:v}),[_,S,Q,n,Ue,L,i,c,u,v]),zt={...Ld,...o};return C.jsx(P.ThemeProvider,{theme:zt,children:C.jsx(mf.Provider,{value:it,children:C.jsx(gf.Provider,{value:_e,children:C.jsx(vf.Provider,{value:Ye,children:C.jsx(yf.Provider,{value:kt,children:h})})})})})},ta=()=>{const e=p.useContext(mf);if(!e)throw new Error("useMediaElementAnimation must be used within MediaElementPlaylistProvider");return e},na=()=>{const e=p.useContext(gf);if(!e)throw new Error("useMediaElementState must be used within MediaElementPlaylistProvider");return e},Mi=()=>{const e=p.useContext(vf);if(!e)throw new Error("useMediaElementControls must be used within MediaElementPlaylistProvider");return e},ra=()=>{const e=p.useContext(yf);if(!e)throw new Error("useMediaElementData must be used within MediaElementPlaylistProvider");return e},ay=({className:e})=>{const{isPlaying:t,currentTimeRef:n}=dt(),{selectionStart:r,selectionEnd:s,isLoopEnabled:a}=at(),{play:o}=ke(),i=async()=>{if(r!==s&&s>r&&!a){const c=s-r;await o(r,c)}else await o(n.current??0)};return C.jsx(bt,{onClick:i,disabled:t,className:e,children:"Play"})},oy=({className:e})=>{const{isPlaying:t}=dt(),{pause:n}=ke();return C.jsx(bt,{onClick:n,disabled:!t,className:e,children:"Pause"})},iy=({className:e})=>{const{isPlaying:t}=dt(),{stop:n}=ke();return C.jsx(bt,{onClick:n,disabled:!t,className:e,children:"Stop"})},ly=({className:e})=>{const{isPlaying:t}=dt(),{play:n,setCurrentTime:r}=ke(),s=()=>{r(0),t&&n(0)};return C.jsx(bt,{onClick:s,className:e,children:"Rewind"})},cy=({className:e})=>{const{isPlaying:t}=dt(),{play:n,setCurrentTime:r}=ke(),{duration:s}=ot(),a=()=>{r(s),t&&n(s)};return C.jsx(bt,{onClick:a,className:e,children:"Fast Forward"})},uy=({skipAmount:e=5,className:t})=>{const{currentTimeRef:n,isPlaying:r}=dt(),{play:s,setCurrentTime:a}=ke(),o=()=>{const i=Math.max(0,(n.current??0)-e);a(i),r&&s(i)};return C.jsx(bt,{onClick:o,className:t,children:"Skip Backward"})},dy=({skipAmount:e=5,className:t})=>{const{currentTimeRef:n,isPlaying:r}=dt(),{play:s,setCurrentTime:a}=ke(),{duration:o}=ot(),i=()=>{const l=Math.min(o,(n.current??0)+e);a(l),r&&s(l)};return C.jsx(bt,{onClick:i,className:t,children:"Skip Forward"})},fy=({className:e})=>{const{isLoopEnabled:t,loopStart:n,loopEnd:r}=at(),{setLoopEnabled:s,setLoopRegion:a}=ke(),{duration:o}=ot(),i=n!==r&&r>n,l=()=>{if(!t&&!i){const c=Math.min(10,o*.25);a(0,Math.max(1,c))}s(!t)};return C.jsx(bt,{onClick:l,className:e,title:t?"Disable loop":"Enable loop",children:t?"Loop On":"Loop Off"})},hy=({className:e})=>{const{selectionStart:t,selectionEnd:n,loopStart:r,loopEnd:s}=at(),{setLoopRegionFromSelection:a,clearLoopRegion:o}=ke(),i=t!==n&&n>t,l=r!==s&&s>r,c=()=>{l?o():a()};return C.jsx(bt,{onClick:c,disabled:!i&&!l,className:e,title:l?"Clear loop region":i?"Set loop region from selection":"Create a selection first",children:l?"Clear Loop":"Set Loop"})},py=({onClearAll:e,label:t="Clear All",className:n})=>{const{stop:r}=ke(),s=p.useCallback(()=>{r(),e()},[r,e]);return C.jsx(bt,{onClick:s,className:n,title:"Remove all tracks",children:t})},my=({className:e,disabled:t})=>{const{zoomIn:n}=ke(),{canZoomIn:r}=ot();return C.jsx(bt,{onClick:n,disabled:t||!r,className:e,children:"Zoom In"})},gy=({className:e,disabled:t})=>{const{zoomOut:n}=ke(),{canZoomOut:r}=ot();return C.jsx(bt,{onClick:n,disabled:t||!r,className:e,children:"Zoom Out"})},vy=({className:e})=>{const{masterVolume:t}=ot(),{setMasterVolume:n}=ke();return C.jsx(ov,{volume:t,onChange:n,className:e})},yy=({className:e})=>{const{timeFormat:t}=ot(),{setTimeFormat:n}=ke();return C.jsx(Gv,{value:t,onChange:n,className:e})},by=P.span`
|
|
1005
1005
|
font-family: 'Courier New', Monaco, monospace;
|
|
1006
1006
|
font-size: 1rem;
|
|
1007
1007
|
font-weight: 600;
|
|
1008
1008
|
color: ${e=>e.theme?.textColor||"#333"};
|
|
1009
1009
|
user-select: none;
|
|
1010
|
-
`,
|
|
1010
|
+
`,wy=({className:e})=>{const t=p.useRef(null),n=p.useRef(null),{isPlaying:r,currentTimeRef:s,getPlaybackTime:a}=dt(),{timeFormat:o}=ot();return p.useEffect(()=>{const i=()=>{if(t.current){const l=r?a():s.current??0;t.current.textContent=Bn(l,o)}r&&(n.current=requestAnimationFrame(i))};return r?n.current=requestAnimationFrame(i):i(),()=>{n.current&&(cancelAnimationFrame(n.current),n.current=null)}},[r,o,s,a]),p.useEffect(()=>{!r&&t.current&&(t.current.textContent=Bn(s.current??0,o))}),C.jsx(by,{ref:t,className:e,"aria-label":"Audio position",children:Bn(s.current??0,o)})},_y=({className:e})=>{const{selectionStart:t,selectionEnd:n}=at(),{setSelection:r}=ke();return C.jsx(Cv,{selectionStart:t,selectionEnd:n,onSelectionChange:r,className:e})},xy=({className:e})=>{const{isAutomaticScroll:t}=at(),{setAutomaticScroll:n}=ke();return C.jsx(Pg,{checked:t,onChange:n,className:e})},sa=p.createContext(null),Cy=sa.Provider;function Cn(){const e=p.useContext(sa);if(!e)throw new Error("useAnnotationIntegration must be used within <AnnotationProvider>. Install @waveform-playlist/annotations and wrap your app with <AnnotationProvider>. See: https://waveform-playlist.naomiaro.com/docs/guides/annotations");return e}const Sy=({className:e})=>{const{ContinuousPlayCheckbox:t}=Cn(),{continuousPlay:n}=at(),{setContinuousPlay:r}=ke();return C.jsx(t,{checked:n,onChange:r,className:e})},ky=({className:e})=>{const{LinkEndpointsCheckbox:t}=Cn(),{linkEndpoints:n}=at(),{setLinkEndpoints:r}=ke();return C.jsx(t,{checked:n,onChange:r,className:e})},Ey=({className:e})=>{const{EditableCheckbox:t}=Cn(),{annotationsEditable:n}=at(),{setAnnotationsEditable:r}=ke();return C.jsx(t,{checked:n,onChange:r,className:e})},Iy=({filename:e,className:t})=>{const{DownloadAnnotationsButton:n}=Cn(),{annotations:r}=at();return C.jsx(n,{annotations:r,filename:e,className:t})},My=({label:e="Export WAV",filename:t="export",mode:n="master",trackIndex:r,bitDepth:s=16,applyEffects:a=!0,effectsFunction:o,createOfflineTrackEffects:i,className:l,onExportComplete:c,onExportError:u})=>{const{tracks:f,trackStates:m}=ot(),{exportWav:d,isExporting:h,progress:v}=cf(),y=async()=>{try{const b=await d(f,m,{filename:t,mode:n,trackIndex:r,bitDepth:s,applyEffects:a,effectsFunction:o,createOfflineTrackEffects:i,autoDownload:!0});c?.(b.blob)}catch(b){u?.(b instanceof Error?b:new Error("Export failed"))}},g=h?`Exporting ${Math.round(v*100)}%`:e;return C.jsx(bt,{onClick:y,disabled:h||f.length===0,className:l,children:g})},bf=p.createContext(!1),Ay=bf.Provider;function wf(){return p.useContext(bf)}const Ty=P.div.attrs(e=>({style:{width:`${e.$width}px`,background:e.$color}}))`
|
|
1011
1011
|
position: absolute;
|
|
1012
1012
|
top: 0;
|
|
1013
1013
|
left: 0;
|
|
@@ -1015,7 +1015,7 @@ self.onmessage = function(e) {
|
|
|
1015
1015
|
z-index: 100; /* Below sticky controls (z-index: 101) so playhead is hidden when scrolled behind controls */
|
|
1016
1016
|
pointer-events: none;
|
|
1017
1017
|
will-change: transform;
|
|
1018
|
-
|
|
1018
|
+
`,$y=({color:e="#ff0000"})=>{const t=p.useRef(null),n=p.useRef(null),{isPlaying:r,currentTimeRef:s,getPlaybackTime:a}=dt(),{samplesPerPixel:o,sampleRate:i,progressBarWidth:l}=ot();return p.useEffect(()=>{const c=()=>{if(t.current){const f=(r?a():s.current??0)*i/o;t.current.style.transform=`translate3d(${f}px, 0, 0)`}r&&(n.current=requestAnimationFrame(c))};return r?n.current=requestAnimationFrame(c):c(),()=>{n.current&&(cancelAnimationFrame(n.current),n.current=null)}},[r,i,o,s,a]),p.useEffect(()=>{if(!r&&t.current){const u=(s.current??0)*i/o;t.current.style.transform=`translate3d(${u}px, 0, 0)`}}),C.jsx(Ty,{ref:t,$color:e,$width:l,"data-playhead":!0})},Ry=P.div`
|
|
1019
1019
|
position: relative;
|
|
1020
1020
|
`,Ea=P.div.attrs(e=>({style:{top:`${e.$top}px`,width:`${e.$width}px`,height:`${e.$height}px`,background:e.$color}}))`
|
|
1021
1021
|
position: absolute;
|
|
@@ -1024,7 +1024,7 @@ self.onmessage = function(e) {
|
|
|
1024
1024
|
/* Force GPU compositing layer to prevent gradient flickering during scroll */
|
|
1025
1025
|
transform: translateZ(0);
|
|
1026
1026
|
backface-visibility: hidden;
|
|
1027
|
-
`,
|
|
1027
|
+
`,Dy=P.div.attrs(e=>({style:{top:`${e.$top}px`,height:`${e.$height}px`,width:`${e.$width}px`,background:e.$color,transform:"scaleX(0)"}}))`
|
|
1028
1028
|
position: absolute;
|
|
1029
1029
|
left: 0;
|
|
1030
1030
|
pointer-events: none;
|
|
@@ -1032,16 +1032,16 @@ self.onmessage = function(e) {
|
|
|
1032
1032
|
transform-origin: left;
|
|
1033
1033
|
/* scaleX changes are composite-only (GPU) — no layout reflow per frame */
|
|
1034
1034
|
will-change: transform;
|
|
1035
|
-
`,
|
|
1035
|
+
`,Py=P.div`
|
|
1036
1036
|
position: relative;
|
|
1037
1037
|
z-index: 2;
|
|
1038
|
-
`,tc=({clipStartSample:e,clipDurationSamples:t,midiNotes:n,clipSampleRate:r,clipOffsetSeconds:s,...a})=>{const o=p.useRef(null),i=p.useRef(null),l=Zr(),{waveHeight:c}=Qs(),{isPlaying:u,currentTimeRef:f,getPlaybackTime:m}=
|
|
1038
|
+
`,tc=({clipStartSample:e,clipDurationSamples:t,midiNotes:n,clipSampleRate:r,clipOffsetSeconds:s,...a})=>{const o=p.useRef(null),i=p.useRef(null),l=Zr(),{waveHeight:c}=Qs(),{isPlaying:u,currentTimeRef:f,getPlaybackTime:m}=dt(),{samplesPerPixel:d,sampleRate:h}=ot(),v=l?.waveProgressColor||"rgba(0, 0, 0, 0.1)",y=dc(e,t,d);p.useEffect(()=>{const R=()=>{if(o.current){const M=(u?m():f.current??0)*h,$=e+t;let F=0;M<=e?F=0:M>=$?F=1:F=(M-e)/t,o.current.style.transform=`scaleX(${F})`}u&&(i.current=requestAnimationFrame(R))};return u?i.current=requestAnimationFrame(R):R(),()=>{i.current&&(cancelAnimationFrame(i.current),i.current=null)}},[u,h,e,t,y,f,m]),p.useEffect(()=>{if(!u&&o.current){const A=(f.current??0)*h,M=e+t;let $=0;A<=e?$=0:A>=M?$=1:$=(A-e)/t,o.current.style.transform=`scaleX(${$})`}});const g=l?.waveformDrawMode||"inverted";let b;g==="inverted"?b=a.isSelected&&l?l.selectedWaveFillColor:l?.waveFillColor||"white":b=a.isSelected&&l?l.selectedWaveOutlineColor:l?.waveOutlineColor||"grey";const w=a.renderMode==="spectrogram"||a.renderMode==="both",_=a.renderMode==="piano-roll",x=a.renderMode==="both",S=w?"#000":_?l?.pianoRollBackgroundColor||"#1a1a2e":Jt(b),k=Math.floor(c/2),I=c,E=a.index*c,T=Jt(b);return C.jsxs(Ry,{children:[x?C.jsxs(C.Fragment,{children:[C.jsx(Ea,{$color:"#000",$height:k,$top:E,$width:a.length}),C.jsx(Ea,{$color:T,$height:k,$top:E+k,$width:a.length})]}):C.jsx(Ea,{$color:S,$height:I,$top:E,$width:a.length}),!_&&C.jsx(Dy,{ref:o,$color:v,$height:I,$top:E,$width:y}),C.jsx(Py,{children:C.jsx(Ud,{...a,transparentBackground:!0,midiNotes:n,sampleRate:r,clipOffsetSeconds:s})})]})},Ai=p.createContext(null),Fy=Ai.Provider;function Oy(){const e=p.useContext(Ai);if(!e)throw new Error("useSpectrogramIntegration must be used within <SpectrogramProvider>. Install @waveform-playlist/spectrogram and wrap your app with <SpectrogramProvider>.");return e}const Ly=60,By=P.div.attrs(e=>({style:{height:`${e.$height}px`}}))`
|
|
1039
1039
|
overflow: hidden;
|
|
1040
1040
|
pointer-events: auto;
|
|
1041
1041
|
background: ${e=>e.theme.surfaceColor};
|
|
1042
1042
|
transition: background 0.15s ease-in-out;
|
|
1043
1043
|
${e=>e.$isSelected&&`background: ${e.theme.selectedTrackControlsBackground};`}
|
|
1044
|
-
`,yf=({renderTrackControls:e,renderTick:t,renderPlayhead:n,annotationControls:r,getAnnotationBoxLabel:s,className:a,showClipHeaders:o=!1,interactiveClips:i=!1,showFades:l=!1,touchOptimized:c=!1,onRemoveTrack:u,recordingState:f})=>{const m=Zr(),{isPlaying:d,currentTimeRef:h,playbackStartTimeRef:v,audioStartPositionRef:y,getPlaybackTime:g}=ct(),{selectionStart:b,selectionEnd:_,annotations:w,activeAnnotationId:x,annotationsEditable:C,linkEndpoints:k,continuousPlay:I,selectedTrackId:E,loopStart:T,loopEnd:R,isLoopEnabled:A}=ut(),M=p.useContext(sa),{setAnnotations:$,setActiveAnnotationId:F,setTrackMute:L,setTrackSolo:z,setTrackVolume:q,setTrackPan:Y,setSelection:ne,play:G,setScrollContainer:J,setSelectedTrackId:ae,setCurrentTime:ue,setLoopRegion:de}=Te(),{peaksDataArray:Me,trackStates:j,tracks:U,duration:ye,samplesPerPixel:Z,sampleRate:Q,waveHeight:ke,timeScaleHeight:B,controls:$e,barWidth:Qe,barGap:We,isReady:pe}=dt(),te=p.useContext(Ai),Ue=p.useMemo(()=>{if(!te)return new Map;const V=new Map;return U.forEach(K=>{if((te.trackSpectrogramOverrides.get(K.id)?.renderMode??K.renderMode??"waveform")==="waveform")return;const le=te.trackSpectrogramOverrides.get(K.id),Re=le?.colorMap??K.spectrogramColorMap??te.spectrogramColorMap??"viridis",He=le?.config??K.spectrogramConfig??te.spectrogramConfig;V.set(K.id,{colorLUT:te.getColorMap(Re),frequencyScaleFn:te.getFrequencyScale(He?.frequencyScale??"mel"),config:He})}),V},[U,te]),at=p.useMemo(()=>{if(te?.spectrogramWorkerApi)return{registerCanvas:te.spectrogramWorkerApi.registerCanvas.bind(te.spectrogramWorkerApi),unregisterCanvas:te.spectrogramWorkerApi.unregisterCanvas.bind(te.spectrogramWorkerApi)}},[te?.spectrogramWorkerApi]),[_e,Fe]=p.useState(null),[Ve,Ye]=p.useState(!1),kt=p.useRef(0),zt=p.useRef(null),X=p.useCallback(V=>{zt.current=V,J(V)},[J]),me=U.reduce((V,K)=>K.clips.reduce((ee,le)=>{const Re=(le.startSample+le.durationSamples)/le.sampleRate;return Math.max(ee,Re)},V),0);let je=me>0?me:ye>0?ye:Oy;if(f?.isRecording){const K=(f.startSample+f.durationSamples)/Q;je=Math.max(je,K+10)}const Oe=Math.floor(je*Q/Z),oe=async V=>{F(V.id);const K=I?void 0:V.end-V.start;try{await G(V.start,K)}catch(ee){console.error("waveform-playlist: Failed to start playback for annotation",V.id,ee)}},fe=p.useCallback(V=>{if(V>=0&&V<U.length){const K=U[V];ae(K.id)}},[U,ae]),Ze=V=>{const K=V.currentTarget.getBoundingClientRect(),le=(V.clientX-K.left)*Z/Q,He=V.clientY-K.top;let re=0,Ke=-1;for(let et=0;et<Me.length;et++){const Ne=Me[et],ht=Ne.length>0?Math.max(1,...Ne.map(jt=>jt.peaks.data.length)):1,nn=((te?.trackSpectrogramOverrides.get(U[et]?.id)?.renderMode??U[et]?.renderMode??"waveform")==="both"?ht*2:ht)*ke+(o?22:0);if(He>=re&&He<re+nn){Ke=et;break}re+=nn}Ke!==-1&&fe(Ke),kt.current=le,Ye(!0),ue(le),ne(le,le)},Et=V=>{if(!Ve||d)return;const K=V.currentTarget.getBoundingClientRect(),le=(V.clientX-K.left)*Z/Q,Re=Math.min(b,le),He=Math.max(b,le);ne(Re,He)},It=V=>{if(!Ve)return;if(Ye(!1),d){const re=Math.max(0,kt.current);ue(re),ne(re,re),G(re);return}const K=V.currentTarget.getBoundingClientRect(),le=(V.clientX-K.left)*Z/Q,Re=Math.min(b,le),He=Math.max(b,le);Math.abs(He-Re)<.1?ue(Re):ne(Re,He)};if(U.some(V=>V.clips.length>0)&&Me.length===0)return S.jsx("div",{className:a,children:"Loading waveform..."});const ft=$e.show?Me.map((V,K)=>{const ee=U[K];if(!ee)return null;const le=j[K]||{name:`Track ${K+1}`,muted:!1,soloed:!1,volume:1,pan:0},Re=ee.clips.some(Ne=>Ne.midiNotes&&Ne.midiNotes.length>0),He=te?.trackSpectrogramOverrides.get(ee.id)?.renderMode??ee.renderMode??(Re?"piano-roll":"waveform"),re=V.length>0?Math.max(1,...V.map(Ne=>Ne.peaks.data.length)):1,Ke=ke*re+(o?Si:0),et=e?e(K):S.jsxs(Yv,{onClick:()=>fe(K),children:[S.jsxs(Kv,{style:{justifyContent:"center",position:"relative"},children:[u&&S.jsx(Xv,{onClick:Ne=>{Ne.stopPropagation(),u(K)}}),S.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"0 24px",display:"block"},children:le.name||`Track ${K+1}`}),te?.renderMenuItems&&S.jsx("span",{style:{position:"absolute",right:0,top:0},children:S.jsx(s0,{items:Ne=>te.renderMenuItems({renderMode:He,onRenderModeChange:ht=>te.setTrackRenderMode(ee.id,ht),onOpenSettings:()=>Fe(ee.id),onClose:Ne})})})]}),S.jsxs(Gv,{children:[S.jsx(Yl,{$variant:le.muted?"danger":"outline",onClick:()=>L(K,!le.muted),children:"Mute"}),S.jsx(Yl,{$variant:le.soloed?"info":"outline",onClick:()=>z(K,!le.soloed),children:"Solo"})]}),S.jsxs(ql,{children:[S.jsx(qv,{}),S.jsx(Kl,{min:"0",max:"1",step:"0.01",value:le.volume,onChange:Ne=>q(K,parseFloat(Ne.target.value))}),S.jsx(Jv,{})]}),S.jsxs(ql,{children:[S.jsx("span",{children:"L"}),S.jsx(Kl,{min:"-1",max:"1",step:"0.01",value:le.pan,onChange:Ne=>Y(K,parseFloat(Ne.target.value))}),S.jsx("span",{children:"R"})]})]});return S.jsx(Ly,{$height:Ke,$isSelected:ee.id===E,children:et},ee.id)}):void 0;return S.jsxs(Gd,{children:[S.jsx(jr.Provider,{value:{samplesPerPixel:Z,sampleRate:Q,zoomLevels:[Z],waveHeight:ke,timeScaleHeight:B,duration:je*1e3,controls:$e,barWidth:Qe,barGap:We},children:S.jsx(Ci,{theme:m,backgroundColor:m.playlistBackgroundColor||Jt(m.waveOutlineColor),timescaleBackgroundColor:m.timescaleBackgroundColor,timescaleWidth:Oe,tracksWidth:Oe,controlsWidth:$e.show?$e.width:0,onTracksMouseDown:Ze,onTracksMouseMove:Et,onTracksMouseUp:It,scrollContainerRef:X,isSelecting:Ve,"data-playlist-state":pe?"ready":"loading",trackControlsSlots:ft,timescaleGapHeight:B>0?B+1:0,timescale:B>0?S.jsxs(S.Fragment,{children:[S.jsx(Xd,{renderTick:t}),A&&S.jsx(bv,{startPosition:Math.min(T,R)*Q/Z,endPosition:Math.max(T,R)*Q/Z,markerColor:m.loopMarkerColor,regionColor:m.loopRegionColor,minPosition:0,maxPosition:Oe,onLoopRegionChange:(V,K)=>{const ee=V*Z/Q,le=K*Z/Q;de(ee,le)}})]}):void 0,children:S.jsxs(S.Fragment,{children:[Me.map((V,K)=>{const ee=U[K];if(!ee)return null;const le=ee.clips.some(re=>re.midiNotes&&re.midiNotes.length>0),Re=te?.trackSpectrogramOverrides.get(ee.id)?.renderMode??ee.renderMode??(le?"piano-roll":"waveform"),He=V.length>0?Math.max(1,...V.map(re=>re.peaks.data.length)):1;return S.jsxs(Yd,{numChannels:He,backgroundColor:Re==="piano-roll"?m.pianoRollBackgroundColor||"#1a1a2e":Jt(m.waveOutlineColor),offset:0,width:Oe,hasClipHeaders:o,trackId:ee.id,isSelected:ee.id===E,children:[Re!=="waveform"&&(()=>{const re=Ue.get(ee.id),Ke=re?.config;return!Ke?.labels||!re?null:S.jsx(Pv,{waveHeight:ke,numChannels:He,frequencyScaleFn:re.frequencyScaleFn,minFrequency:Ke.minFrequency??0,maxFrequency:Ke.maxFrequency??Q/2,labelsColor:Ke.labelsColor,labelsBackground:Ke.labelsBackground,renderMode:Re,hasClipHeaders:o})})(),V.map((re,Ke)=>{const et=re.peaks,Ne=et.length;return S.jsx(ho,{clipId:re.clipId,trackIndex:K,clipIndex:Ke,trackName:re.trackName,startSample:re.startSample,durationSamples:re.durationSamples,samplesPerPixel:Z,showHeader:o,disableHeaderDrag:!i,isSelected:ee.id===E,trackId:ee.id,fadeIn:re.fadeIn,fadeOut:re.fadeOut,sampleRate:Q,showFades:l,touchOptimized:c,onMouseDown:ht=>{ht.target.closest('[role="button"][aria-roledescription="draggable"]')||fe(K)},children:et.data.map((ht,Mt)=>{const tn=te?.spectrogramDataMap.get(re.clipId),nn=tn?.[Mt]??tn?.[0],jt=Ue.get(ee.id),Qn=jt?.config;return S.jsx(tc,{index:Mt,data:ht,bits:et.bits,length:Ne,isSelected:ee.id===E,clipStartSample:re.startSample,clipDurationSamples:re.durationSamples,renderMode:re.midiNotes?"piano-roll":Re,midiNotes:re.midiNotes,clipSampleRate:re.sampleRate,clipOffsetSeconds:re.offsetSamples!=null?re.offsetSamples/(re.sampleRate||Q):0,spectrogramData:nn,samplesPerPixel:Z,spectrogramColorLUT:jt?.colorLUT,spectrogramFrequencyScaleFn:jt?.frequencyScaleFn,spectrogramMinFrequency:Qn?.minFrequency,spectrogramMaxFrequency:Qn?.maxFrequency,spectrogramWorkerApi:at,spectrogramClipId:re.clipId,spectrogramOnCanvasesReady:te?(Ur,kn)=>{te.registerSpectrogramCanvases(re.clipId,Mt,Ur,kn)}:void 0},`${re.clipId}-${Mt}`)})},re.clipId)}),f?.isRecording&&f.trackId===ee.id&&f.peaks.length>0&&S.jsx(ho,{clipId:"recording-preview",trackIndex:K,clipIndex:V.length,trackName:"Recording...",startSample:f.startSample,durationSamples:f.durationSamples,samplesPerPixel:Z,showHeader:o,disableHeaderDrag:!0,isSelected:ee.id===E,trackId:ee.id,children:S.jsx(tc,{index:0,data:f.peaks,bits:16,length:Math.floor(f.peaks.length/2),isSelected:ee.id===E,clipStartSample:f.startSample,clipDurationSamples:f.durationSamples},`${ee.id}-recording-0`)},`${ee.id}-recording`)]},ee.id)}),w.length>0&&M&&S.jsx(M.AnnotationBoxesWrapper,{height:30,width:Oe,children:w.map((V,K)=>{const ee=V.start*Q/Z,le=V.end*Q/Z,Re=s?s(V,K):V.id;return S.jsx(M.AnnotationBox,{annotationId:V.id,annotationIndex:K,startPosition:ee,endPosition:le,label:Re,color:"#ff9800",isActive:V.id===x,onClick:()=>oe(V),editable:C},V.id)})}),b!==_&&S.jsx(zd,{startPosition:Math.min(b,_)*Q/Z,endPosition:Math.max(b,_)*Q/Z,color:m.selectionColor}),(d||b===_)&&(n?n({position:(h.current??0)*Q/Z,color:m.playheadColor,isPlaying:d,currentTimeRef:h,playbackStartTimeRef:v,audioStartPositionRef:y,samplesPerPixel:Z,sampleRate:Q,controlsOffset:0,getAudioContextTime:()=>O.getContext().currentTime,getPlaybackTime:g}):S.jsx(Ty,{color:m.playheadColor}))]})})}),te?.SettingsModal&&typeof document<"u"&&bo.createPortal(S.jsx(te.SettingsModal,{open:_e!==null,onClose:()=>Fe(null),config:_e!==null?te.trackSpectrogramOverrides.get(_e)?.config??U.find(V=>V.id===_e)?.spectrogramConfig??te.spectrogramConfig??{}:{},colorMap:_e!==null?te.trackSpectrogramOverrides.get(_e)?.colorMap??U.find(V=>V.id===_e)?.spectrogramColorMap??te.spectrogramColorMap??"viridis":"viridis",onApply:(V,K)=>{_e!==null&&te.setTrackSpectrogramConfig(_e,V,K)}}),document.body)]})},bf=({height:e,renderAnnotationItem:t,onAnnotationUpdate:n,controls:r,annotationListConfig:s,scrollActivePosition:a="center",scrollActiveContainer:o="nearest"})=>{const{annotations:i,activeAnnotationId:l,annotationsEditable:c,linkEndpoints:u,continuousPlay:f}=ut(),m=Sn(),{setAnnotations:d}=Te(),h=s??{linkEndpoints:u,continuousPlay:f},v=p.useCallback(g=>{d(g),n?.(g)},[d,n]),{AnnotationText:y}=m;return S.jsx(y,{annotations:i,activeAnnotationId:l??void 0,shouldScrollToActive:!0,scrollActivePosition:a,scrollActiveContainer:o,editable:c,controls:c?r:void 0,annotationListConfig:h,height:e,onAnnotationUpdate:v,renderAnnotationItem:t})},By=({renderTrackControls:e,renderTick:t,renderTimestamp:n,renderPlayhead:r,annotationControls:s,annotationListConfig:a,annotationTextHeight:o,renderAnnotationItem:i,getAnnotationBoxLabel:l,scrollActivePosition:c="center",scrollActiveContainer:u="nearest",className:f,showClipHeaders:m=!1,interactiveClips:d=!1,showFades:h=!1,touchOptimized:v=!1,onRemoveTrack:y,recordingState:g})=>{const{annotations:b}=ut(),_=vf(),w=d||_;return S.jsxs(S.Fragment,{children:[S.jsx(yf,{renderTrackControls:e,renderTick:t??(n?(x,C)=>n(parseFloat(x)||0,C):void 0),renderPlayhead:r,annotationControls:s,getAnnotationBoxLabel:l,className:f,showClipHeaders:m,interactiveClips:w,showFades:h,touchOptimized:v,onRemoveTrack:y,recordingState:g}),b.length>0&&S.jsx(bf,{height:o,renderAnnotationItem:i,controls:s,annotationListConfig:a,scrollActivePosition:c,scrollActiveContainer:u})]})};var Wy=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",wf=Wy?p.useLayoutEffect:p.useEffect;function An(e){const t=p.useRef(e);return wf(()=>{t.current=e},[e]),t}function Ia(e,t,n=p.useEffect,r=Object.is){const s=p.useRef(e);n(()=>{const a=s.current;r(e,a)||(s.current=e,t(e,a))},[t,e])}var nc=Object.getOwnPropertySymbols,Vy=Object.prototype.hasOwnProperty,Ny=Object.prototype.propertyIsEnumerable,zy=(e,t)=>{var n={};for(var r in e)Vy.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&nc)for(var r of nc(e))t.indexOf(r)<0&&Ny.call(e,r)&&(n[r]=e[r]);return n},jy=new pi,Zy=p.createContext(jy),Hy=p.memo(p.forwardRef(({children:e},t)=>{const[n,r]=p.useState(0),s=p.useRef(null),a=p.useRef(null),o=p.useMemo(()=>({renderer:{get rendering(){var i;return(i=s.current)!=null?i:Promise.resolve()}},trackRendering(i){s.current||(s.current=new Promise(l=>{a.current=l})),p.startTransition(()=>{i(),r(l=>l+1)})}}),[]);return wf(()=>{var i;(i=a.current)==null||i.call(a),s.current=null},[e,n]),p.useImperativeHandle(t,()=>o),null})),Ma=[void 0,Sr];function _f(e){var t=e,{children:n,onCollision:r,onBeforeDragStart:s,onDragStart:a,onDragMove:o,onDragOver:i,onDragEnd:l}=t,c=zy(t,["children","onCollision","onBeforeDragStart","onDragStart","onDragMove","onDragOver","onDragEnd"]);const u=p.useRef(null),{plugins:f,modifiers:m,sensors:d}=c,h=Lt(f,Ln.plugins),v=Lt(d,Ln.sensors),y=Lt(m,Ln.modifiers),g=An(s),b=An(a),_=An(i),w=An(o),x=An(l),C=An(r),k=Gy(()=>{var I;return(I=c.manager)!=null?I:new pi(c)});return p.useEffect(()=>{if(!u.current)throw new Error("Renderer not found");const{renderer:I,trackRendering:E}=u.current,{monitor:T}=k;k.renderer=I;const R=[T.addEventListener("beforedragstart",A=>{const M=g.current;M&&E(()=>M(A,k))}),T.addEventListener("dragstart",A=>{var M;return(M=b.current)==null?void 0:M.call(b,A,k)}),T.addEventListener("dragover",A=>{const M=_.current;M&&E(()=>M(A,k))}),T.addEventListener("dragmove",A=>{const M=w.current;M&&E(()=>M(A,k))}),T.addEventListener("dragend",A=>{const M=x.current;M&&E(()=>M(A,k))}),T.addEventListener("collision",A=>{var M;return(M=C.current)==null?void 0:M.call(C,A,k)})];return()=>R.forEach(A=>A())},[k]),Ia(h,()=>k&&(k.plugins=h),...Ma),Ia(v,()=>k&&(k.sensors=v),...Ma),Ia(y,()=>k&&(k.modifiers=y),...Ma),S.jsxs(Zy.Provider,{value:k,children:[S.jsx(Hy,{ref:u,children:n}),n]})}function Gy(e){const t=p.useRef(null);return t.current||(t.current=e()),p.useInsertionEffect(()=>()=>{var n;return(n=t.current)==null?void 0:n.destroy()},[]),t.current}var Uy=Object.create,xf=Object.defineProperty,Xy=Object.getOwnPropertyDescriptor,Sf=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),aa=e=>{throw TypeError(e)},Yy=(e,t,n)=>t in e?xf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ky=e=>{var t;return[,,,Uy((t=e?.[Sf("metadata")])!=null?t:null)]},Cf=["class","method","getter","setter","accessor","field","value","get","set"],kf=e=>e!==void 0&&typeof e!="function"?aa("Function expected"):e,qy=(e,t,n,r,s)=>({kind:Cf[e],name:t,metadata:r,addInitializer:a=>n._?aa("Already initialized"):s.push(kf(a||null))}),Jy=(e,t)=>Yy(t,Sf("metadata"),e[3]),Qy=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)a[s].call(n);return r},Ef=(e,t,n,r,s,a)=>{for(var o,i,l,c,u=t&7,f=!1,m=!1,d=2,h=Cf[u+5],v=e[d]||(e[d]=[]),y=(s=s.prototype,Xy(s,n)),g=r.length-1;g>=0;g--)l=qy(u,n,i={},e[3],v),l.static=f,l.private=m,c=l.access={has:b=>n in b},c.get=b=>b[n],o=(0,r[g])(y[h],l),i._=1,kf(o)&&(y[h]=o);return y&&xf(s,n,y),s},If=(e,t,n)=>t.has(e)||aa("Cannot "+n),eb=(e,t,n)=>(If(e,t,"read from private field"),t.get(e)),tb=(e,t,n)=>t.has(e)?aa("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),nb=(e,t,n,r)=>(If(e,t,"write to private field"),t.set(e,n),n),sr=class go{constructor(t,n){this.x=t,this.y=n}static delta(t,n){return new go(t.x-n.x,t.y-n.y)}static distance(t,n){return Math.hypot(t.x-n.x,t.y-n.y)}static equals(t,n){return t.x===n.x&&t.y===n.y}static from({x:t,y:n}){return new go(t,n)}},Mf,Af,vo,_s,Gr,Ti=class extends(vo=Qt,Af=[Ae],Mf=[Ae],vo){constructor(e){const t=sr.from(e);super(t,(n,r)=>sr.equals(n,r)),Qy(Gr,5,this),tb(this,_s,0),this.velocity={x:0,y:0}}get delta(){return sr.delta(this.current,this.initial)}get direction(){const{current:e,previous:t}=this;if(!t)return null;const n={x:e.x-t.x,y:e.y-t.y};return!n.x&&!n.y?null:Math.abs(n.x)>Math.abs(n.y)?n.x>0?"right":"left":n.y>0?"down":"up"}get current(){return super.current}set current(e){const{current:t}=this,n=sr.from(e),r={x:n.x-t.x,y:n.y-t.y},s=Date.now(),a=s-eb(this,_s),o=i=>Math.round(i/a*100);qt(()=>{nb(this,_s,s),this.velocity={x:o(r.x),y:o(r.y)},super.current=n})}reset(e=this.defaultValue){super.reset(sr.from(e)),this.velocity={x:0,y:0}}};Gr=Ky(vo);_s=new WeakMap;Ef(Gr,2,"delta",Af,Ti);Ef(Gr,2,"direction",Mf,Ti);Jy(Gr,Ti);var Tf=(e=>(e.Horizontal="x",e.Vertical="y",e))(Tf||{});Object.values(Tf);var rb=Object.defineProperty,sb=Object.defineProperties,ab=Object.getOwnPropertyDescriptors,rc=Object.getOwnPropertySymbols,ob=Object.prototype.hasOwnProperty,ib=Object.prototype.propertyIsEnumerable,sc=(e,t,n)=>t in e?rb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$f=(e,t)=>{for(var n in t||(t={}))ob.call(t,n)&&sc(e,n,t[n]);if(rc)for(var n of rc(t))ib.call(t,n)&&sc(e,n,t[n]);return e},Rf=(e,t)=>sb(e,ab(t)),yo=class extends Vn{apply({transform:t}){if(!this.options)return t;const{axis:n,value:r}=this.options;return Rf($f({},t),{[n]:r})}};yo.configure=yn(yo);var Df=yo;Df.configure({axis:"x",value:0});var Pf=Df.configure({axis:"y",value:0}),ac=class extends Vn{apply({transform:t}){var n;const{size:r=20}=(n=this.options)!=null?n:{},s=typeof r=="number"?r:r.x,a=typeof r=="number"?r:r.y;return Rf($f({},t),{x:Math.ceil(t.x/s)*s,y:Math.ceil(t.y/a)*a})}};ac.configure=yn(ac);const $i=e=>{let t=!1;const n=e.map(r=>r===ro?(t=!0,ro.configure({dropAnimation:null})):r);return t||console.warn("[waveform-playlist] noDropAnimationPlugins: Feedback plugin not found in defaults — drop animation may not be disabled. Check @dnd-kit/dom version."),n},lb=P.div`
|
|
1044
|
+
`,_f=({renderTrackControls:e,renderTick:t,renderPlayhead:n,annotationControls:r,getAnnotationBoxLabel:s,className:a,showClipHeaders:o=!1,interactiveClips:i=!1,showFades:l=!1,touchOptimized:c=!1,onRemoveTrack:u,recordingState:f})=>{const m=Zr(),{isPlaying:d,currentTimeRef:h,playbackStartTimeRef:v,audioStartPositionRef:y,getPlaybackTime:g}=dt(),{selectionStart:b,selectionEnd:w,annotations:_,activeAnnotationId:x,annotationsEditable:S,linkEndpoints:k,continuousPlay:I,selectedTrackId:E,loopStart:T,loopEnd:R,isLoopEnabled:A}=at(),M=p.useContext(sa),{setAnnotations:$,setActiveAnnotationId:F,setTrackMute:L,setTrackSolo:z,setTrackVolume:q,setTrackPan:Y,setSelection:ne,play:G,setScrollContainer:J,setSelectedTrackId:ae,setCurrentTime:ue,setLoopRegion:de}=ke(),{peaksDataArray:Ae,trackStates:j,tracks:U,duration:ye,samplesPerPixel:Z,sampleRate:Q,waveHeight:Ee,timeScaleHeight:B,controls:$e,barWidth:Qe,barGap:We,isReady:pe}=ot(),te=p.useContext(Ai),Ue=p.useMemo(()=>{if(!te)return new Map;const V=new Map;return U.forEach(K=>{if((te.trackSpectrogramOverrides.get(K.id)?.renderMode??K.renderMode??"waveform")==="waveform")return;const le=te.trackSpectrogramOverrides.get(K.id),Re=le?.colorMap??K.spectrogramColorMap??te.spectrogramColorMap??"viridis",He=le?.config??K.spectrogramConfig??te.spectrogramConfig;V.set(K.id,{colorLUT:te.getColorMap(Re),frequencyScaleFn:te.getFrequencyScale(He?.frequencyScale??"mel"),config:He})}),V},[U,te]),it=p.useMemo(()=>{if(te?.spectrogramWorkerApi)return{registerCanvas:te.spectrogramWorkerApi.registerCanvas.bind(te.spectrogramWorkerApi),unregisterCanvas:te.spectrogramWorkerApi.unregisterCanvas.bind(te.spectrogramWorkerApi)}},[te?.spectrogramWorkerApi]),[_e,Fe]=p.useState(null),[Ve,Ye]=p.useState(!1),kt=p.useRef(0),zt=p.useRef(null),X=p.useCallback(V=>{zt.current=V,J(V)},[J]),me=U.reduce((V,K)=>K.clips.reduce((ee,le)=>{const Re=(le.startSample+le.durationSamples)/le.sampleRate;return Math.max(ee,Re)},V),0);let je=me>0?me:ye>0?ye:Ly;if(f?.isRecording){const K=(f.startSample+f.durationSamples)/Q;je=Math.max(je,K+10)}const Oe=Math.floor(je*Q/Z),oe=async V=>{F(V.id);const K=I?void 0:V.end-V.start;try{await G(V.start,K)}catch(ee){console.error("waveform-playlist: Failed to start playback for annotation",V.id,ee)}},fe=p.useCallback(V=>{if(V>=0&&V<U.length){const K=U[V];ae(K.id)}},[U,ae]),Ze=V=>{const K=V.currentTarget.getBoundingClientRect(),le=(V.clientX-K.left)*Z/Q,He=V.clientY-K.top;let re=0,Ke=-1;for(let et=0;et<Ae.length;et++){const Ne=Ae[et],ht=Ne.length>0?Math.max(1,...Ne.map(jt=>jt.peaks.data.length)):1,nn=((te?.trackSpectrogramOverrides.get(U[et]?.id)?.renderMode??U[et]?.renderMode??"waveform")==="both"?ht*2:ht)*Ee+(o?22:0);if(He>=re&&He<re+nn){Ke=et;break}re+=nn}Ke!==-1&&fe(Ke),kt.current=le,Ye(!0),ue(le),ne(le,le)},Et=V=>{if(!Ve||d)return;const K=V.currentTarget.getBoundingClientRect(),le=(V.clientX-K.left)*Z/Q,Re=Math.min(b,le),He=Math.max(b,le);ne(Re,He)},It=V=>{if(!Ve)return;if(Ye(!1),d){const re=Math.max(0,kt.current);ue(re),ne(re,re),G(re);return}const K=V.currentTarget.getBoundingClientRect(),le=(V.clientX-K.left)*Z/Q,Re=Math.min(b,le),He=Math.max(b,le);Math.abs(He-Re)<.1?ue(Re):ne(Re,He)};if(U.some(V=>V.clips.length>0)&&Ae.length===0)return C.jsx("div",{className:a,children:"Loading waveform..."});const ft=$e.show?Ae.map((V,K)=>{const ee=U[K];if(!ee)return null;const le=j[K]||{name:`Track ${K+1}`,muted:!1,soloed:!1,volume:1,pan:0},Re=ee.clips.some(Ne=>Ne.midiNotes&&Ne.midiNotes.length>0),He=te?.trackSpectrogramOverrides.get(ee.id)?.renderMode??ee.renderMode??(Re?"piano-roll":"waveform"),re=V.length>0?Math.max(1,...V.map(Ne=>Ne.peaks.data.length)):1,Ke=Ee*re+(o?Ci:0),et=e?e(K):C.jsxs(Jv,{onClick:()=>fe(K),children:[C.jsxs(Qv,{style:{justifyContent:"center",position:"relative"},children:[u&&C.jsx(qv,{onClick:Ne=>{Ne.stopPropagation(),u(K)}}),C.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"0 24px",display:"block"},children:le.name||`Track ${K+1}`}),te?.renderMenuItems&&C.jsx("span",{style:{position:"absolute",right:0,top:0},children:C.jsx(i0,{items:Ne=>te.renderMenuItems({renderMode:He,onRenderModeChange:ht=>te.setTrackRenderMode(ee.id,ht),onOpenSettings:()=>Fe(ee.id),onClose:Ne})})})]}),C.jsxs(Yv,{children:[C.jsx(Yl,{$variant:le.muted?"danger":"outline",onClick:()=>L(K,!le.muted),children:"Mute"}),C.jsx(Yl,{$variant:le.soloed?"info":"outline",onClick:()=>z(K,!le.soloed),children:"Solo"})]}),C.jsxs(ql,{children:[C.jsx(e0,{}),C.jsx(Kl,{min:"0",max:"1",step:"0.01",value:le.volume,onChange:Ne=>q(K,parseFloat(Ne.target.value))}),C.jsx(t0,{})]}),C.jsxs(ql,{children:[C.jsx("span",{children:"L"}),C.jsx(Kl,{min:"-1",max:"1",step:"0.01",value:le.pan,onChange:Ne=>Y(K,parseFloat(Ne.target.value))}),C.jsx("span",{children:"R"})]})]});return C.jsx(By,{$height:Ke,$isSelected:ee.id===E,children:et},ee.id)}):void 0;return C.jsxs(Gd,{children:[C.jsx(jr.Provider,{value:{samplesPerPixel:Z,sampleRate:Q,zoomLevels:[Z],waveHeight:Ee,timeScaleHeight:B,duration:je*1e3,controls:$e,barWidth:Qe,barGap:We},children:C.jsx(Si,{theme:m,backgroundColor:m.playlistBackgroundColor||Jt(m.waveOutlineColor),timescaleBackgroundColor:m.timescaleBackgroundColor,timescaleWidth:Oe,tracksWidth:Oe,controlsWidth:$e.show?$e.width:0,onTracksMouseDown:Ze,onTracksMouseMove:Et,onTracksMouseUp:It,scrollContainerRef:X,isSelecting:Ve,"data-playlist-state":pe?"ready":"loading",trackControlsSlots:ft,timescaleGapHeight:B>0?B+1:0,timescale:B>0?C.jsxs(C.Fragment,{children:[C.jsx(Xd,{renderTick:t}),A&&C.jsx(xv,{startPosition:Math.min(T,R)*Q/Z,endPosition:Math.max(T,R)*Q/Z,markerColor:m.loopMarkerColor,regionColor:m.loopRegionColor,minPosition:0,maxPosition:Oe,onLoopRegionChange:(V,K)=>{const ee=V*Z/Q,le=K*Z/Q;de(ee,le)}})]}):void 0,children:C.jsxs(C.Fragment,{children:[Ae.map((V,K)=>{const ee=U[K];if(!ee)return null;const le=ee.clips.some(re=>re.midiNotes&&re.midiNotes.length>0),Re=te?.trackSpectrogramOverrides.get(ee.id)?.renderMode??ee.renderMode??(le?"piano-roll":"waveform"),He=V.length>0?Math.max(1,...V.map(re=>re.peaks.data.length)):1;return C.jsxs(Yd,{numChannels:He,backgroundColor:Re==="piano-roll"?m.pianoRollBackgroundColor||"#1a1a2e":Jt(m.waveOutlineColor),offset:0,width:Oe,hasClipHeaders:o,trackId:ee.id,isSelected:ee.id===E,children:[Re!=="waveform"&&(()=>{const re=Ue.get(ee.id),Ke=re?.config;return!Ke?.labels||!re?null:C.jsx(Lv,{waveHeight:Ee,numChannels:He,frequencyScaleFn:re.frequencyScaleFn,minFrequency:Ke.minFrequency??0,maxFrequency:Ke.maxFrequency??Q/2,labelsColor:Ke.labelsColor,labelsBackground:Ke.labelsBackground,renderMode:Re,hasClipHeaders:o})})(),V.map((re,Ke)=>{const et=re.peaks,Ne=et.length;return C.jsx(ho,{clipId:re.clipId,trackIndex:K,clipIndex:Ke,trackName:re.trackName,startSample:re.startSample,durationSamples:re.durationSamples,samplesPerPixel:Z,showHeader:o,disableHeaderDrag:!i,isSelected:ee.id===E,trackId:ee.id,fadeIn:re.fadeIn,fadeOut:re.fadeOut,sampleRate:Q,showFades:l,touchOptimized:c,onMouseDown:ht=>{ht.target.closest('[role="button"][aria-roledescription="draggable"]')||fe(K)},children:et.data.map((ht,Mt)=>{const tn=te?.spectrogramDataMap.get(re.clipId),nn=tn?.[Mt]??tn?.[0],jt=Ue.get(ee.id),Qn=jt?.config;return C.jsx(tc,{index:Mt,data:ht,bits:et.bits,length:Ne,isSelected:ee.id===E,clipStartSample:re.startSample,clipDurationSamples:re.durationSamples,renderMode:re.midiNotes?"piano-roll":Re,midiNotes:re.midiNotes,clipSampleRate:re.sampleRate,clipOffsetSeconds:re.offsetSamples!=null?re.offsetSamples/(re.sampleRate||Q):0,spectrogramData:nn,samplesPerPixel:Z,spectrogramColorLUT:jt?.colorLUT,spectrogramFrequencyScaleFn:jt?.frequencyScaleFn,spectrogramMinFrequency:Qn?.minFrequency,spectrogramMaxFrequency:Qn?.maxFrequency,spectrogramWorkerApi:it,spectrogramClipId:re.clipId,spectrogramOnCanvasesReady:te?(Ur,kn)=>{te.registerSpectrogramCanvases(re.clipId,Mt,Ur,kn)}:void 0},`${re.clipId}-${Mt}`)})},re.clipId)}),f?.isRecording&&f.trackId===ee.id&&f.peaks.length>0&&C.jsx(ho,{clipId:"recording-preview",trackIndex:K,clipIndex:V.length,trackName:"Recording...",startSample:f.startSample,durationSamples:f.durationSamples,samplesPerPixel:Z,showHeader:o,disableHeaderDrag:!0,isSelected:ee.id===E,trackId:ee.id,children:C.jsx(tc,{index:0,data:f.peaks,bits:16,length:Math.floor(f.peaks.length/2),isSelected:ee.id===E,clipStartSample:f.startSample,clipDurationSamples:f.durationSamples},`${ee.id}-recording-0`)},`${ee.id}-recording`)]},ee.id)}),_.length>0&&M&&C.jsx(M.AnnotationBoxesWrapper,{height:30,width:Oe,children:_.map((V,K)=>{const ee=V.start*Q/Z,le=V.end*Q/Z,Re=s?s(V,K):V.id;return C.jsx(M.AnnotationBox,{annotationId:V.id,annotationIndex:K,startPosition:ee,endPosition:le,label:Re,color:"#ff9800",isActive:V.id===x,onClick:()=>oe(V),editable:S},V.id)})}),b!==w&&C.jsx(zd,{startPosition:Math.min(b,w)*Q/Z,endPosition:Math.max(b,w)*Q/Z,color:m.selectionColor}),(d||b===w)&&(n?n({position:(h.current??0)*Q/Z,color:m.playheadColor,isPlaying:d,currentTimeRef:h,playbackStartTimeRef:v,audioStartPositionRef:y,samplesPerPixel:Z,sampleRate:Q,controlsOffset:0,getAudioContextTime:()=>O.getContext().currentTime,getPlaybackTime:g}):C.jsx($y,{color:m.playheadColor}))]})})}),te?.SettingsModal&&typeof document<"u"&&bo.createPortal(C.jsx(te.SettingsModal,{open:_e!==null,onClose:()=>Fe(null),config:_e!==null?te.trackSpectrogramOverrides.get(_e)?.config??U.find(V=>V.id===_e)?.spectrogramConfig??te.spectrogramConfig??{}:{},colorMap:_e!==null?te.trackSpectrogramOverrides.get(_e)?.colorMap??U.find(V=>V.id===_e)?.spectrogramColorMap??te.spectrogramColorMap??"viridis":"viridis",onApply:(V,K)=>{_e!==null&&te.setTrackSpectrogramConfig(_e,V,K)}}),document.body)]})},xf=({height:e,renderAnnotationItem:t,onAnnotationUpdate:n,controls:r,annotationListConfig:s,scrollActivePosition:a="center",scrollActiveContainer:o="nearest"})=>{const{annotations:i,activeAnnotationId:l,annotationsEditable:c,linkEndpoints:u,continuousPlay:f}=at(),m=Cn(),{setAnnotations:d}=ke(),h=s??{linkEndpoints:u,continuousPlay:f},v=p.useCallback(g=>{d(g),n?.(g)},[d,n]),{AnnotationText:y}=m;return C.jsx(y,{annotations:i,activeAnnotationId:l??void 0,shouldScrollToActive:!0,scrollActivePosition:a,scrollActiveContainer:o,editable:c,controls:c?r:void 0,annotationListConfig:h,height:e,onAnnotationUpdate:v,renderAnnotationItem:t})},Wy=({renderTrackControls:e,renderTick:t,renderTimestamp:n,renderPlayhead:r,annotationControls:s,annotationListConfig:a,annotationTextHeight:o,renderAnnotationItem:i,getAnnotationBoxLabel:l,scrollActivePosition:c="center",scrollActiveContainer:u="nearest",className:f,showClipHeaders:m=!1,interactiveClips:d=!1,showFades:h=!1,touchOptimized:v=!1,onRemoveTrack:y,recordingState:g})=>{const{annotations:b}=at(),w=wf(),_=d||w;return C.jsxs(C.Fragment,{children:[C.jsx(_f,{renderTrackControls:e,renderTick:t??(n?(x,S)=>n(parseFloat(x)||0,S):void 0),renderPlayhead:r,annotationControls:s,getAnnotationBoxLabel:l,className:f,showClipHeaders:m,interactiveClips:_,showFades:h,touchOptimized:v,onRemoveTrack:y,recordingState:g}),b.length>0&&C.jsx(xf,{height:o,renderAnnotationItem:i,controls:s,annotationListConfig:a,scrollActivePosition:c,scrollActiveContainer:u})]})};var Vy=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Cf=Vy?p.useLayoutEffect:p.useEffect;function An(e){const t=p.useRef(e);return Cf(()=>{t.current=e},[e]),t}function Ia(e,t,n=p.useEffect,r=Object.is){const s=p.useRef(e);n(()=>{const a=s.current;r(e,a)||(s.current=e,t(e,a))},[t,e])}var nc=Object.getOwnPropertySymbols,Ny=Object.prototype.hasOwnProperty,zy=Object.prototype.propertyIsEnumerable,jy=(e,t)=>{var n={};for(var r in e)Ny.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&nc)for(var r of nc(e))t.indexOf(r)<0&&zy.call(e,r)&&(n[r]=e[r]);return n},Zy=new pi,Hy=p.createContext(Zy),Gy=p.memo(p.forwardRef(({children:e},t)=>{const[n,r]=p.useState(0),s=p.useRef(null),a=p.useRef(null),o=p.useMemo(()=>({renderer:{get rendering(){var i;return(i=s.current)!=null?i:Promise.resolve()}},trackRendering(i){s.current||(s.current=new Promise(l=>{a.current=l})),p.startTransition(()=>{i(),r(l=>l+1)})}}),[]);return Cf(()=>{var i;(i=a.current)==null||i.call(a),s.current=null},[e,n]),p.useImperativeHandle(t,()=>o),null})),Ma=[void 0,Cr];function Sf(e){var t=e,{children:n,onCollision:r,onBeforeDragStart:s,onDragStart:a,onDragMove:o,onDragOver:i,onDragEnd:l}=t,c=jy(t,["children","onCollision","onBeforeDragStart","onDragStart","onDragMove","onDragOver","onDragEnd"]);const u=p.useRef(null),{plugins:f,modifiers:m,sensors:d}=c,h=Lt(f,Ln.plugins),v=Lt(d,Ln.sensors),y=Lt(m,Ln.modifiers),g=An(s),b=An(a),w=An(i),_=An(o),x=An(l),S=An(r),k=Uy(()=>{var I;return(I=c.manager)!=null?I:new pi(c)});return p.useEffect(()=>{if(!u.current)throw new Error("Renderer not found");const{renderer:I,trackRendering:E}=u.current,{monitor:T}=k;k.renderer=I;const R=[T.addEventListener("beforedragstart",A=>{const M=g.current;M&&E(()=>M(A,k))}),T.addEventListener("dragstart",A=>{var M;return(M=b.current)==null?void 0:M.call(b,A,k)}),T.addEventListener("dragover",A=>{const M=w.current;M&&E(()=>M(A,k))}),T.addEventListener("dragmove",A=>{const M=_.current;M&&E(()=>M(A,k))}),T.addEventListener("dragend",A=>{const M=x.current;M&&E(()=>M(A,k))}),T.addEventListener("collision",A=>{var M;return(M=S.current)==null?void 0:M.call(S,A,k)})];return()=>R.forEach(A=>A())},[k]),Ia(h,()=>k&&(k.plugins=h),...Ma),Ia(v,()=>k&&(k.sensors=v),...Ma),Ia(y,()=>k&&(k.modifiers=y),...Ma),C.jsxs(Hy.Provider,{value:k,children:[C.jsx(Gy,{ref:u,children:n}),n]})}function Uy(e){const t=p.useRef(null);return t.current||(t.current=e()),p.useInsertionEffect(()=>()=>{var n;return(n=t.current)==null?void 0:n.destroy()},[]),t.current}var Xy=Object.create,kf=Object.defineProperty,Yy=Object.getOwnPropertyDescriptor,Ef=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),aa=e=>{throw TypeError(e)},Ky=(e,t,n)=>t in e?kf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qy=e=>{var t;return[,,,Xy((t=e?.[Ef("metadata")])!=null?t:null)]},If=["class","method","getter","setter","accessor","field","value","get","set"],Mf=e=>e!==void 0&&typeof e!="function"?aa("Function expected"):e,Jy=(e,t,n,r,s)=>({kind:If[e],name:t,metadata:r,addInitializer:a=>n._?aa("Already initialized"):s.push(Mf(a||null))}),Qy=(e,t)=>Ky(t,Ef("metadata"),e[3]),eb=(e,t,n,r)=>{for(var s=0,a=e[t>>1],o=a&&a.length;s<o;s++)a[s].call(n);return r},Af=(e,t,n,r,s,a)=>{for(var o,i,l,c,u=t&7,f=!1,m=!1,d=2,h=If[u+5],v=e[d]||(e[d]=[]),y=(s=s.prototype,Yy(s,n)),g=r.length-1;g>=0;g--)l=Jy(u,n,i={},e[3],v),l.static=f,l.private=m,c=l.access={has:b=>n in b},c.get=b=>b[n],o=(0,r[g])(y[h],l),i._=1,Mf(o)&&(y[h]=o);return y&&kf(s,n,y),s},Tf=(e,t,n)=>t.has(e)||aa("Cannot "+n),tb=(e,t,n)=>(Tf(e,t,"read from private field"),t.get(e)),nb=(e,t,n)=>t.has(e)?aa("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),rb=(e,t,n,r)=>(Tf(e,t,"write to private field"),t.set(e,n),n),sr=class go{constructor(t,n){this.x=t,this.y=n}static delta(t,n){return new go(t.x-n.x,t.y-n.y)}static distance(t,n){return Math.hypot(t.x-n.x,t.y-n.y)}static equals(t,n){return t.x===n.x&&t.y===n.y}static from({x:t,y:n}){return new go(t,n)}},$f,Rf,vo,_s,Gr,Ti=class extends(vo=Qt,Rf=[Te],$f=[Te],vo){constructor(e){const t=sr.from(e);super(t,(n,r)=>sr.equals(n,r)),eb(Gr,5,this),nb(this,_s,0),this.velocity={x:0,y:0}}get delta(){return sr.delta(this.current,this.initial)}get direction(){const{current:e,previous:t}=this;if(!t)return null;const n={x:e.x-t.x,y:e.y-t.y};return!n.x&&!n.y?null:Math.abs(n.x)>Math.abs(n.y)?n.x>0?"right":"left":n.y>0?"down":"up"}get current(){return super.current}set current(e){const{current:t}=this,n=sr.from(e),r={x:n.x-t.x,y:n.y-t.y},s=Date.now(),a=s-tb(this,_s),o=i=>Math.round(i/a*100);qt(()=>{rb(this,_s,s),this.velocity={x:o(r.x),y:o(r.y)},super.current=n})}reset(e=this.defaultValue){super.reset(sr.from(e)),this.velocity={x:0,y:0}}};Gr=qy(vo);_s=new WeakMap;Af(Gr,2,"delta",Rf,Ti);Af(Gr,2,"direction",$f,Ti);Qy(Gr,Ti);var Df=(e=>(e.Horizontal="x",e.Vertical="y",e))(Df||{});Object.values(Df);var sb=Object.defineProperty,ab=Object.defineProperties,ob=Object.getOwnPropertyDescriptors,rc=Object.getOwnPropertySymbols,ib=Object.prototype.hasOwnProperty,lb=Object.prototype.propertyIsEnumerable,sc=(e,t,n)=>t in e?sb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pf=(e,t)=>{for(var n in t||(t={}))ib.call(t,n)&&sc(e,n,t[n]);if(rc)for(var n of rc(t))lb.call(t,n)&&sc(e,n,t[n]);return e},Ff=(e,t)=>ab(e,ob(t)),yo=class extends Vn{apply({transform:t}){if(!this.options)return t;const{axis:n,value:r}=this.options;return Ff(Pf({},t),{[n]:r})}};yo.configure=yn(yo);var Of=yo;Of.configure({axis:"x",value:0});var Lf=Of.configure({axis:"y",value:0}),ac=class extends Vn{apply({transform:t}){var n;const{size:r=20}=(n=this.options)!=null?n:{},s=typeof r=="number"?r:r.x,a=typeof r=="number"?r:r.y;return Ff(Pf({},t),{x:Math.ceil(t.x/s)*s,y:Math.ceil(t.y/a)*a})}};ac.configure=yn(ac);const $i=e=>{let t=!1;const n=e.map(r=>r===ro?(t=!0,ro.configure({dropAnimation:null})):r);return t||console.warn("[waveform-playlist] noDropAnimationPlugins: Feedback plugin not found in defaults — drop animation may not be disabled. Check @dnd-kit/dom version."),n},cb=P.div`
|
|
1045
1045
|
position: absolute;
|
|
1046
1046
|
top: 0;
|
|
1047
1047
|
left: 0;
|
|
@@ -1051,9 +1051,9 @@ self.onmessage = function(e) {
|
|
|
1051
1051
|
z-index: 100;
|
|
1052
1052
|
pointer-events: none;
|
|
1053
1053
|
will-change: transform;
|
|
1054
|
-
`,
|
|
1054
|
+
`,ub=({color:e="#ff0000"})=>{const t=p.useRef(null),n=p.useRef(null),{isPlaying:r,currentTimeRef:s}=ta(),{samplesPerPixel:a,sampleRate:o,progressBarWidth:i}=ra();return p.useEffect(()=>{const l=()=>{if(t.current){const u=(s.current??0)*o/a;t.current.style.transform=`translate3d(${u}px, 0, 0)`}r&&(n.current=requestAnimationFrame(l))};return r?n.current=requestAnimationFrame(l):l(),()=>{n.current&&(cancelAnimationFrame(n.current),n.current=null)}},[r,o,a,s]),p.useEffect(()=>{if(!r&&t.current){const c=(s.current??0)*o/a;t.current.style.transform=`translate3d(${c}px, 0, 0)`}}),C.jsx(cb,{ref:t,$color:e,$width:i,"data-playhead":!0})},db=P.div`
|
|
1055
1055
|
position: relative;
|
|
1056
|
-
`,
|
|
1056
|
+
`,fb=P.div`
|
|
1057
1057
|
position: absolute;
|
|
1058
1058
|
top: ${e=>e.$top}px;
|
|
1059
1059
|
left: 0;
|
|
@@ -1063,7 +1063,7 @@ self.onmessage = function(e) {
|
|
|
1063
1063
|
z-index: 0;
|
|
1064
1064
|
transform: translateZ(0);
|
|
1065
1065
|
backface-visibility: hidden;
|
|
1066
|
-
`,
|
|
1066
|
+
`,hb=P.div`
|
|
1067
1067
|
position: absolute;
|
|
1068
1068
|
top: ${e=>e.$top}px;
|
|
1069
1069
|
left: 0;
|
|
@@ -1072,8 +1072,8 @@ self.onmessage = function(e) {
|
|
|
1072
1072
|
pointer-events: none;
|
|
1073
1073
|
z-index: 1;
|
|
1074
1074
|
will-change: width;
|
|
1075
|
-
`,
|
|
1075
|
+
`,pb=P.div`
|
|
1076
1076
|
position: relative;
|
|
1077
1077
|
z-index: 2;
|
|
1078
|
-
`,pb=({clipStartSample:e,clipDurationSamples:t,...n})=>{const r=p.useRef(null),s=p.useRef(null),a=Zr(),{waveHeight:o}=Qs(),{isPlaying:i,currentTimeRef:l}=ta(),{samplesPerPixel:c,sampleRate:u}=ra(),f=a?.waveProgressColor||"rgba(0, 0, 0, 0.1)";p.useEffect(()=>{const v=()=>{if(r.current){const g=(l.current??0)*u,b=e+t;let _=0;if(g<=e)_=0;else if(g>=b)_=n.length;else{const w=g-e;_=Math.floor(w/c)}r.current.style.width=`${_}px`}i&&(s.current=requestAnimationFrame(v))};return i?s.current=requestAnimationFrame(v):v(),()=>{s.current&&(cancelAnimationFrame(s.current),s.current=null)}},[i,u,c,e,t,n.length,l]),p.useEffect(()=>{if(!i&&r.current){const y=(l.current??0)*u,g=e+t;let b=0;if(y<=e)b=0;else if(y>=g)b=n.length;else{const _=y-e;b=Math.floor(_/c)}r.current.style.width=`${b}px`}});const m=a?.waveformDrawMode||"inverted";let d;m==="inverted"?d=a?.selectedWaveFillColor||a?.waveFillColor||"white":d=a?.selectedWaveOutlineColor||a?.waveOutlineColor||"grey";const h=Jt(d);return S.jsxs(ub,{children:[S.jsx(db,{$color:h,$height:o,$top:n.index*o,$width:n.length}),S.jsx(fb,{ref:r,$color:f,$height:o,$top:n.index*o}),S.jsx(hb,{children:S.jsx(Ud,{...n,isSelected:!0,transparentBackground:!0})})]})},Ff=({getAnnotationBoxLabel:e,editable:t=!1,linkEndpoints:n=!1,onAnnotationUpdate:r,className:s})=>{const a=Zr(),{isPlaying:o}=ta(),{annotations:i,activeAnnotationId:l}=na(),c=p.useContext(sa),{play:u,seekTo:f,setActiveAnnotationId:m,setAnnotations:d,setScrollContainer:h}=Mi(),{duration:v,peaksDataArray:y,sampleRate:g,waveHeight:b,timeScaleHeight:_,samplesPerPixel:w,controls:x,playoutRef:C,barWidth:k,barGap:I}=ra(),[E,T]=p.useState(0),[R,A]=p.useState(0),[M,$]=p.useState(!1),F=p.useRef(null),L=p.useCallback(j=>{F.current=j,h(j)},[h]),z=Math.floor(v*g/w),q=p.useCallback(async j=>{m(j.id);try{await u(j.start)}catch(U){console.error("waveform-playlist: Failed to start playback for annotation",j.id,U)}},[m,u]),Y=p.useCallback(j=>{d(j),r?.(j)},[d,r]),{onDragStart:ne,onDragMove:G,onDragEnd:J}=rf({annotations:i,onAnnotationsChange:Y,samplesPerPixel:w,sampleRate:g,duration:v,linkEndpoints:n}),ae=p.useRef(0),ue=p.useCallback(j=>{const U=j.currentTarget.getBoundingClientRect(),Z=(j.clientX-U.left)*w/g;ae.current=Z,$(!0),T(Z),A(Z)},[w,g]),de=p.useCallback(j=>{if(!M)return;const U=j.currentTarget.getBoundingClientRect(),Z=(j.clientX-U.left)*w/g;A(Z)},[M,w,g]),Me=p.useCallback(j=>{if(!M)return;if($(!1),o&&C.current){const B=Math.max(0,ae.current);f(B),T(B),A(B),C.current.stop(),u(B);return}const U=j.currentTarget.getBoundingClientRect(),Z=(j.clientX-U.left)*w/g,Q=Math.min(E,Z),ke=Math.max(E,Z);Math.abs(ke-Q)<.1?(f(Q),T(Q),A(Q)):(T(Q),A(ke))},[M,E,w,g,f,o,C,u]);return y.length===0?S.jsx("div",{className:s,children:"Loading waveform..."}):S.jsx(Gd,{children:S.jsx(jr.Provider,{value:{samplesPerPixel:w,sampleRate:g,zoomLevels:[w],waveHeight:b,timeScaleHeight:_,duration:v*1e3,controls:x,barWidth:k,barGap:I},children:S.jsx(Ci,{theme:a,backgroundColor:Jt(a.waveOutlineColor),timescaleBackgroundColor:a.timescaleBackgroundColor,timescaleWidth:z,tracksWidth:z,controlsWidth:x.show?x.width:0,onTracksMouseDown:ue,onTracksMouseMove:de,onTracksMouseUp:Me,scrollContainerRef:L,isSelecting:M,timescale:_>0?S.jsx(Xd,{}):void 0,children:S.jsxs(S.Fragment,{children:[y.map((j,U)=>{const ye=j.length>0?Math.max(...j.map(Z=>Z.peaks.data.length)):1;return S.jsx(Yd,{numChannels:ye,backgroundColor:Jt(a.waveOutlineColor),offset:0,width:z,hasClipHeaders:!1,trackId:`media-element-track-${U}`,isSelected:!0,children:j.map((Z,Q)=>{const ke=Z.peaks,B=ke.length;return S.jsx(ho,{clipId:Z.clipId,trackIndex:U,clipIndex:Q,trackName:Z.trackName,startSample:Z.startSample,durationSamples:Z.durationSamples,samplesPerPixel:w,showHeader:!1,disableHeaderDrag:!0,isSelected:!0,trackId:`media-element-track-${U}`,children:ke.data.map(($e,Qe)=>S.jsx(pb,{index:Qe,data:$e,bits:ke.bits,length:B,clipStartSample:Z.startSample,clipDurationSamples:Z.durationSamples},`${U}-${Q}-${Qe}`))},`${U}-${Q}`)})},U)}),i.length>0&&c&&S.jsx(_f,{onDragStart:ne,onDragMove:G,onDragEnd:J,modifiers:t?[Pf]:[],plugins:$i,children:S.jsx(c.AnnotationBoxesWrapper,{height:30,width:z,children:i.map((j,U)=>{const ye=j.start*g/w,Z=j.end*g/w,Q=e?e(j,U):j.id;return S.jsx(c.AnnotationBox,{annotationId:j.id,annotationIndex:U,startPosition:ye,endPosition:Z,label:Q,color:"#ff9800",isActive:j.id===l,onClick:()=>q(j),editable:t},j.id)})})}),E!==R&&S.jsx(zd,{startPosition:Math.min(E,R)*g/w,endPosition:Math.max(E,R)*g/w,color:a.selectionColor}),S.jsx(cb,{color:a.playheadColor})]})})})})},Of=({height:e,renderAnnotationItem:t,onAnnotationUpdate:n,editable:r=!1,controls:s,annotationListConfig:a,scrollActivePosition:o="center",scrollActiveContainer:i="nearest"})=>{const{annotations:l,activeAnnotationId:c,continuousPlay:u}=na(),f=Sn(),{setAnnotations:m}=Mi(),d=a??{linkEndpoints:!1,continuousPlay:u},h=p.useCallback(y=>{m(y),n?.(y)},[m,n]),{AnnotationText:v}=f;return S.jsx(v,{annotations:l,activeAnnotationId:c??void 0,shouldScrollToActive:!0,scrollActivePosition:o,scrollActiveContainer:i,editable:r,controls:r?s:void 0,annotationListConfig:d,height:e,onAnnotationUpdate:h,renderAnnotationItem:t})},mb=({annotationTextHeight:e,getAnnotationBoxLabel:t,renderAnnotationItem:n,editable:r=!1,linkEndpoints:s=!1,onAnnotationUpdate:a,scrollActivePosition:o="center",scrollActiveContainer:i="nearest",className:l})=>{const{annotations:c}=na();return S.jsxs(S.Fragment,{children:[S.jsx(Ff,{getAnnotationBoxLabel:t,editable:r,linkEndpoints:s,onAnnotationUpdate:a,className:l}),c.length>0&&S.jsx(Of,{height:e,renderAnnotationItem:n,onAnnotationUpdate:a,editable:r,annotationListConfig:{linkEndpoints:s,continuousPlay:!1},scrollActivePosition:o,scrollActiveContainer:i})]})},Vs=class Vs extends Vn{apply(t){const{transform:n,source:r}=t;if(!r?.data||!this.options)return n;const{boundary:s,trackIndex:a,clipIndex:o}=r.data;if(s)return{x:0,y:0};const{tracks:i,samplesPerPixel:l}=this.options,c=i[a];if(!c)return n;const u=c.clips[o];if(!u)return n;const f=n.x*l,m=[...c.clips].sort((v,y)=>v.startSample-y.startSample),d=m.findIndex(v=>v.id===u.id);return{x:pc(u,f,m,d)/l,y:0}}};Vs.configure=yn(Vs);let Ws=Vs;const Ns=class Ns extends Vn{apply(t){const{transform:n,source:r}=t;if(!this.options||!r?.data)return n;const{boundary:s,startSample:a}=r.data;if(s)return n;const{samplesPerPixel:o}=this.options;if(this.options.mode==="timescale"){const{gridSamples:y}=this.options;if(a!==void 0){const _=a+n.x*o;return{x:(Math.round(_/y)*y-a)/o,y:0}}const g=n.x*o;return{x:Math.round(g/y)*y/o,y:0}}const{snapTo:i,bpm:l,timeSignature:c,sampleRate:u}=this.options;if(i==="off")return n;const f=i==="bar"?wo(c):zs(c);if(a!==void 0){const y=a+n.x*o,g=Ta(y,l,u),b=$a(g,f);return{x:(On(b,l,u)-a)/o,y:0}}const m=n.x*o,d=Ta(m,l,u),h=$a(d,f);return{x:On(h,l,u)/o,y:0}}};Ns.configure=yn(Ns);let Rr=Ns;const gb=()=>{},vb=({snap:e=!1,touchOptimized:t=!1,children:n})=>{const{tracks:r,samplesPerPixel:s,sampleRate:a,playoutRef:o,isDraggingRef:i,onTracksChange:l}=dt(),{setSelectedTrackId:c}=Te(),u=Zd(),f=e&&u!=null&&u.scaleMode==="beats"&&u.snapTo!=="off",m=e&&!f;p.useEffect(()=>{l==null&&console.warn("[waveform-playlist] ClipInteractionProvider: onTracksChange is not set on WaveformPlaylistProvider. Drag and trim edits will not be persisted.")},[l]);const d=p.useMemo(()=>{if(f&&u){const{bpm:w,timeSignature:x,snapTo:C}=u,k=C==="bar"?wo(x):zs(x);return I=>{const E=Ta(I,w,a),T=$a(E,k);return On(T,w,a)}}if(m){const w=Math.round(po(s).smallStep/1e3*a);return x=>Math.round(x/w)*w}},[f,m,u,a,s]),h=sf({touchOptimized:t}),{onDragStart:v,onDragMove:y,onDragEnd:g}=nf({tracks:r,onTracksChange:l??gb,samplesPerPixel:s,sampleRate:a,engineRef:o,isDraggingRef:i,snapSamplePosition:d}),b=p.useCallback(w=>{const x=w.operation?.source?.data?.trackIndex;x!==void 0&&r[x]&&c(r[x].id),v(w)},[v,r,c]),_=p.useMemo(()=>{const w=[Pf];return f&&u?w.push(Rr.configure({mode:"beats",snapTo:u.snapTo,bpm:u.bpm,timeSignature:u.timeSignature,samplesPerPixel:s,sampleRate:a})):m&&w.push(Rr.configure({mode:"timescale",gridSamples:Math.round(po(s).smallStep/1e3*a),samplesPerPixel:s})),w.push(Ws.configure({tracks:r,samplesPerPixel:s})),w},[f,m,u,r,s,a]);return S.jsx(My,{value:!0,children:S.jsx(_f,{sensors:h,onDragStart:b,onDragMove:y,onDragEnd:g,modifiers:_,plugins:$i,children:n})})};exports.Tone=ic;exports.AnnotationIntegrationProvider=xy;exports.AudioPosition=by;exports.AutomaticScrollCheckbox=_y;exports.ClipCollisionModifier=Ws;exports.ClipInteractionProvider=vb;exports.ContinuousPlayCheckbox=Sy;exports.DownloadAnnotationsButton=Ey;exports.EditableCheckbox=ky;exports.ExportWavButton=Iy;exports.FastForwardButton=cy;exports.LinkEndpointsCheckbox=Cy;exports.LoopButton=fy;exports.MasterVolumeControl=gy;exports.MediaElementAnnotationList=Of;exports.MediaElementPlaylist=Ff;exports.MediaElementPlaylistProvider=sy;exports.MediaElementWaveform=mb;exports.PauseButton=oy;exports.PlayButton=ay;exports.PlaylistAnnotationList=bf;exports.PlaylistVisualization=yf;exports.RewindButton=ly;exports.SelectionTimeInputs=wy;exports.SetLoopRegionButton=hy;exports.SkipBackwardButton=uy;exports.SkipForwardButton=dy;exports.SnapToGridModifier=Rr;exports.SpectrogramIntegrationProvider=Py;exports.StopButton=iy;exports.TimeFormatSelect=vy;exports.Waveform=By;exports.WaveformPlaylistProvider=ty;exports.ZoomInButton=py;exports.ZoomOutButton=my;exports.createEffectChain=N0;exports.createEffectInstance=$r;exports.effectCategories=L0;exports.effectDefinitions=Hr;exports.getEffectDefinition=Ii;exports.getEffectsByCategory=O0;exports.getShortcutLabel=D0;exports.getWaveformDataMetadata=x0;exports.loadPeaksFromWaveformData=_0;exports.loadWaveformData=Ei;exports.noDropAnimationPlugins=$i;exports.useAnnotationDragHandlers=rf;exports.useAnnotationIntegration=Sn;exports.useAnnotationKeyboardControls=F0;exports.useAudioTracks=A0;exports.useClipDragHandlers=nf;exports.useClipInteractionEnabled=vf;exports.useClipSplitting=R0;exports.useDragSensors=sf;exports.useDynamicEffects=z0;exports.useDynamicTracks=ey;exports.useExportWav=af;exports.useKeyboardShortcuts=Bs;exports.useMasterAnalyser=I0;exports.useMasterVolume=tf;exports.useMediaElementAnimation=ta;exports.useMediaElementControls=Mi;exports.useMediaElementData=ra;exports.useMediaElementState=na;exports.usePlaybackAnimation=ct;exports.usePlaybackShortcuts=P0;exports.usePlaylistControls=Te;exports.usePlaylistData=dt;exports.usePlaylistState=ut;exports.useSpectrogramIntegration=Fy;exports.useTimeFormat=Qd;exports.useTrackDynamicEffects=j0;exports.useZoomControls=ef;exports.waveformDataToPeaks=qd;
|
|
1078
|
+
`,mb=({clipStartSample:e,clipDurationSamples:t,...n})=>{const r=p.useRef(null),s=p.useRef(null),a=Zr(),{waveHeight:o}=Qs(),{isPlaying:i,currentTimeRef:l}=ta(),{samplesPerPixel:c,sampleRate:u}=ra(),f=a?.waveProgressColor||"rgba(0, 0, 0, 0.1)";p.useEffect(()=>{const v=()=>{if(r.current){const g=(l.current??0)*u,b=e+t;let w=0;if(g<=e)w=0;else if(g>=b)w=n.length;else{const _=g-e;w=Math.floor(_/c)}r.current.style.width=`${w}px`}i&&(s.current=requestAnimationFrame(v))};return i?s.current=requestAnimationFrame(v):v(),()=>{s.current&&(cancelAnimationFrame(s.current),s.current=null)}},[i,u,c,e,t,n.length,l]),p.useEffect(()=>{if(!i&&r.current){const y=(l.current??0)*u,g=e+t;let b=0;if(y<=e)b=0;else if(y>=g)b=n.length;else{const w=y-e;b=Math.floor(w/c)}r.current.style.width=`${b}px`}});const m=a?.waveformDrawMode||"inverted";let d;m==="inverted"?d=a?.selectedWaveFillColor||a?.waveFillColor||"white":d=a?.selectedWaveOutlineColor||a?.waveOutlineColor||"grey";const h=Jt(d);return C.jsxs(db,{children:[C.jsx(fb,{$color:h,$height:o,$top:n.index*o,$width:n.length}),C.jsx(hb,{ref:r,$color:f,$height:o,$top:n.index*o}),C.jsx(pb,{children:C.jsx(Ud,{...n,isSelected:!0,transparentBackground:!0})})]})},Bf=({getAnnotationBoxLabel:e,editable:t=!1,linkEndpoints:n=!1,onAnnotationUpdate:r,className:s})=>{const a=Zr(),{isPlaying:o}=ta(),{annotations:i,activeAnnotationId:l}=na(),c=p.useContext(sa),{play:u,seekTo:f,setActiveAnnotationId:m,setAnnotations:d,setScrollContainer:h}=Mi(),{duration:v,peaksDataArray:y,sampleRate:g,waveHeight:b,timeScaleHeight:w,samplesPerPixel:_,controls:x,playoutRef:S,barWidth:k,barGap:I}=ra(),[E,T]=p.useState(0),[R,A]=p.useState(0),[M,$]=p.useState(!1),F=p.useRef(null),L=p.useCallback(j=>{F.current=j,h(j)},[h]),z=Math.floor(v*g/_),q=p.useCallback(async j=>{m(j.id);try{await u(j.start)}catch(U){console.error("waveform-playlist: Failed to start playback for annotation",j.id,U)}},[m,u]),Y=p.useCallback(j=>{d(j),r?.(j)},[d,r]),{onDragStart:ne,onDragMove:G,onDragEnd:J}=rf({annotations:i,onAnnotationsChange:Y,samplesPerPixel:_,sampleRate:g,duration:v,linkEndpoints:n}),ae=p.useRef(0),ue=p.useCallback(j=>{const U=j.currentTarget.getBoundingClientRect(),Z=(j.clientX-U.left)*_/g;ae.current=Z,$(!0),T(Z),A(Z)},[_,g]),de=p.useCallback(j=>{if(!M)return;const U=j.currentTarget.getBoundingClientRect(),Z=(j.clientX-U.left)*_/g;A(Z)},[M,_,g]),Ae=p.useCallback(j=>{if(!M)return;if($(!1),o&&S.current){const B=Math.max(0,ae.current);f(B),T(B),A(B),S.current.stop(),u(B);return}const U=j.currentTarget.getBoundingClientRect(),Z=(j.clientX-U.left)*_/g,Q=Math.min(E,Z),Ee=Math.max(E,Z);Math.abs(Ee-Q)<.1?(f(Q),T(Q),A(Q)):(T(Q),A(Ee))},[M,E,_,g,f,o,S,u]);return y.length===0?C.jsx("div",{className:s,children:"Loading waveform..."}):C.jsx(Gd,{children:C.jsx(jr.Provider,{value:{samplesPerPixel:_,sampleRate:g,zoomLevels:[_],waveHeight:b,timeScaleHeight:w,duration:v*1e3,controls:x,barWidth:k,barGap:I},children:C.jsx(Si,{theme:a,backgroundColor:Jt(a.waveOutlineColor),timescaleBackgroundColor:a.timescaleBackgroundColor,timescaleWidth:z,tracksWidth:z,controlsWidth:x.show?x.width:0,onTracksMouseDown:ue,onTracksMouseMove:de,onTracksMouseUp:Ae,scrollContainerRef:L,isSelecting:M,timescale:w>0?C.jsx(Xd,{}):void 0,children:C.jsxs(C.Fragment,{children:[y.map((j,U)=>{const ye=j.length>0?Math.max(...j.map(Z=>Z.peaks.data.length)):1;return C.jsx(Yd,{numChannels:ye,backgroundColor:Jt(a.waveOutlineColor),offset:0,width:z,hasClipHeaders:!1,trackId:`media-element-track-${U}`,isSelected:!0,children:j.map((Z,Q)=>{const Ee=Z.peaks,B=Ee.length;return C.jsx(ho,{clipId:Z.clipId,trackIndex:U,clipIndex:Q,trackName:Z.trackName,startSample:Z.startSample,durationSamples:Z.durationSamples,samplesPerPixel:_,showHeader:!1,disableHeaderDrag:!0,isSelected:!0,trackId:`media-element-track-${U}`,children:Ee.data.map(($e,Qe)=>C.jsx(mb,{index:Qe,data:$e,bits:Ee.bits,length:B,clipStartSample:Z.startSample,clipDurationSamples:Z.durationSamples},`${U}-${Q}-${Qe}`))},`${U}-${Q}`)})},U)}),i.length>0&&c&&C.jsx(Sf,{onDragStart:ne,onDragMove:G,onDragEnd:J,modifiers:t?[Lf]:[],plugins:$i,children:C.jsx(c.AnnotationBoxesWrapper,{height:30,width:z,children:i.map((j,U)=>{const ye=j.start*g/_,Z=j.end*g/_,Q=e?e(j,U):j.id;return C.jsx(c.AnnotationBox,{annotationId:j.id,annotationIndex:U,startPosition:ye,endPosition:Z,label:Q,color:"#ff9800",isActive:j.id===l,onClick:()=>q(j),editable:t},j.id)})})}),E!==R&&C.jsx(zd,{startPosition:Math.min(E,R)*g/_,endPosition:Math.max(E,R)*g/_,color:a.selectionColor}),C.jsx(ub,{color:a.playheadColor})]})})})})},Wf=({height:e,renderAnnotationItem:t,onAnnotationUpdate:n,editable:r=!1,controls:s,annotationListConfig:a,scrollActivePosition:o="center",scrollActiveContainer:i="nearest"})=>{const{annotations:l,activeAnnotationId:c,continuousPlay:u}=na(),f=Cn(),{setAnnotations:m}=Mi(),d=a??{linkEndpoints:!1,continuousPlay:u},h=p.useCallback(y=>{m(y),n?.(y)},[m,n]),{AnnotationText:v}=f;return C.jsx(v,{annotations:l,activeAnnotationId:c??void 0,shouldScrollToActive:!0,scrollActivePosition:o,scrollActiveContainer:i,editable:r,controls:r?s:void 0,annotationListConfig:d,height:e,onAnnotationUpdate:h,renderAnnotationItem:t})},gb=({annotationTextHeight:e,getAnnotationBoxLabel:t,renderAnnotationItem:n,editable:r=!1,linkEndpoints:s=!1,onAnnotationUpdate:a,scrollActivePosition:o="center",scrollActiveContainer:i="nearest",className:l})=>{const{annotations:c}=na();return C.jsxs(C.Fragment,{children:[C.jsx(Bf,{getAnnotationBoxLabel:t,editable:r,linkEndpoints:s,onAnnotationUpdate:a,className:l}),c.length>0&&C.jsx(Wf,{height:e,renderAnnotationItem:n,onAnnotationUpdate:a,editable:r,annotationListConfig:{linkEndpoints:s,continuousPlay:!1},scrollActivePosition:o,scrollActiveContainer:i})]})},vb=({playback:e=!1,clipSplitting:t=!1,annotations:n=!1,additionalShortcuts:r=[],enabled:s=!0})=>{const{tracks:a,samplesPerPixel:o,sampleRate:i,playoutRef:l,duration:c}=ot(),{annotations:u,linkEndpoints:f,activeAnnotationId:m,continuousPlay:d}=at(),{setAnnotations:h,setActiveAnnotationId:v,scrollContainerRef:y,play:g}=ke(),{splitClipAtPlayhead:b}=af({tracks:a,sampleRate:i,samplesPerPixel:o,engineRef:l}),w=[];return t&&w.push({key:"s",action:b,description:"Split clip at playhead",preventDefault:!0}),r.length>0&&w.push(...r),of({enabled:s&&(e||w.length>0),...e?{additionalShortcuts:w}:{shortcuts:w}}),lf({annotations:u,activeAnnotationId:m,onAnnotationsChange:h,onActiveAnnotationChange:v,duration:c,linkEndpoints:f,continuousPlay:d,scrollContainerRef:y,samplesPerPixel:o,sampleRate:i,onPlay:g,enabled:s&&n&&u.length>0}),null},Vs=class Vs extends Vn{apply(t){const{transform:n,source:r}=t;if(!r?.data||!this.options)return n;const{boundary:s,trackIndex:a,clipIndex:o}=r.data;if(s)return{x:0,y:0};const{tracks:i,samplesPerPixel:l}=this.options,c=i[a];if(!c)return n;const u=c.clips[o];if(!u)return n;const f=n.x*l,m=[...c.clips].sort((v,y)=>v.startSample-y.startSample),d=m.findIndex(v=>v.id===u.id);return{x:pc(u,f,m,d)/l,y:0}}};Vs.configure=yn(Vs);let Ws=Vs;const Ns=class Ns extends Vn{apply(t){const{transform:n,source:r}=t;if(!this.options||!r?.data)return n;const{boundary:s,startSample:a}=r.data;if(s)return n;const{samplesPerPixel:o}=this.options;if(this.options.mode==="timescale"){const{gridSamples:y}=this.options;if(a!==void 0){const w=a+n.x*o;return{x:(Math.round(w/y)*y-a)/o,y:0}}const g=n.x*o;return{x:Math.round(g/y)*y/o,y:0}}const{snapTo:i,bpm:l,timeSignature:c,sampleRate:u}=this.options;if(i==="off")return n;const f=i==="bar"?wo(c):zs(c);if(a!==void 0){const y=a+n.x*o,g=Ta(y,l,u),b=$a(g,f);return{x:(On(b,l,u)-a)/o,y:0}}const m=n.x*o,d=Ta(m,l,u),h=$a(d,f);return{x:On(h,l,u)/o,y:0}}};Ns.configure=yn(Ns);let Rr=Ns;const yb=()=>{},bb=({snap:e=!1,touchOptimized:t=!1,children:n})=>{const{tracks:r,samplesPerPixel:s,sampleRate:a,playoutRef:o,isDraggingRef:i,onTracksChange:l}=ot(),{setSelectedTrackId:c}=ke(),u=Zd(),f=e&&u!=null&&u.scaleMode==="beats"&&u.snapTo!=="off",m=e&&!f;p.useEffect(()=>{l==null&&console.warn("[waveform-playlist] ClipInteractionProvider: onTracksChange is not set on WaveformPlaylistProvider. Drag and trim edits will not be persisted.")},[l]);const d=p.useMemo(()=>{if(f&&u){const{bpm:_,timeSignature:x,snapTo:S}=u,k=S==="bar"?wo(x):zs(x);return I=>{const E=Ta(I,_,a),T=$a(E,k);return On(T,_,a)}}if(m){const _=Math.round(po(s).smallStep/1e3*a);return x=>Math.round(x/_)*_}},[f,m,u,a,s]),h=sf({touchOptimized:t}),{onDragStart:v,onDragMove:y,onDragEnd:g}=nf({tracks:r,onTracksChange:l??yb,samplesPerPixel:s,sampleRate:a,engineRef:o,isDraggingRef:i,snapSamplePosition:d}),b=p.useCallback(_=>{const x=_.operation?.source?.data?.trackIndex;x!==void 0&&r[x]&&c(r[x].id),v(_)},[v,r,c]),w=p.useMemo(()=>{const _=[Lf];return f&&u?_.push(Rr.configure({mode:"beats",snapTo:u.snapTo,bpm:u.bpm,timeSignature:u.timeSignature,samplesPerPixel:s,sampleRate:a})):m&&_.push(Rr.configure({mode:"timescale",gridSamples:Math.round(po(s).smallStep/1e3*a),samplesPerPixel:s})),_.push(Ws.configure({tracks:r,samplesPerPixel:s})),_},[f,m,u,r,s,a]);return C.jsx(Ay,{value:!0,children:C.jsx(Sf,{sensors:h,onDragStart:b,onDragMove:y,onDragEnd:g,modifiers:w,plugins:$i,children:n})})};exports.Tone=ic;exports.AnnotationIntegrationProvider=Cy;exports.AudioPosition=wy;exports.AutomaticScrollCheckbox=xy;exports.ClearAllButton=py;exports.ClipCollisionModifier=Ws;exports.ClipInteractionProvider=bb;exports.ContinuousPlayCheckbox=Sy;exports.DownloadAnnotationsButton=Iy;exports.EditableCheckbox=Ey;exports.ExportWavButton=My;exports.FastForwardButton=cy;exports.KeyboardShortcuts=vb;exports.LinkEndpointsCheckbox=ky;exports.LoopButton=fy;exports.MasterVolumeControl=vy;exports.MediaElementAnnotationList=Wf;exports.MediaElementPlaylist=Bf;exports.MediaElementPlaylistProvider=sy;exports.MediaElementWaveform=gb;exports.PauseButton=oy;exports.PlayButton=ay;exports.PlaylistAnnotationList=xf;exports.PlaylistVisualization=_f;exports.RewindButton=ly;exports.SelectionTimeInputs=_y;exports.SetLoopRegionButton=hy;exports.SkipBackwardButton=uy;exports.SkipForwardButton=dy;exports.SnapToGridModifier=Rr;exports.SpectrogramIntegrationProvider=Fy;exports.StopButton=iy;exports.TimeFormatSelect=yy;exports.Waveform=Wy;exports.WaveformPlaylistProvider=ty;exports.ZoomInButton=my;exports.ZoomOutButton=gy;exports.createEffectChain=N0;exports.createEffectInstance=$r;exports.effectCategories=L0;exports.effectDefinitions=Hr;exports.getEffectDefinition=Ii;exports.getEffectsByCategory=O0;exports.getShortcutLabel=F0;exports.getWaveformDataMetadata=k0;exports.loadPeaksFromWaveformData=S0;exports.loadWaveformData=Ei;exports.noDropAnimationPlugins=$i;exports.useAnnotationDragHandlers=rf;exports.useAnnotationIntegration=Cn;exports.useAnnotationKeyboardControls=lf;exports.useAudioTracks=R0;exports.useClipDragHandlers=nf;exports.useClipInteractionEnabled=wf;exports.useClipSplitting=af;exports.useDragSensors=sf;exports.useDynamicEffects=z0;exports.useDynamicTracks=ey;exports.useExportWav=cf;exports.useKeyboardShortcuts=Bs;exports.useMasterAnalyser=T0;exports.useMasterVolume=tf;exports.useMediaElementAnimation=ta;exports.useMediaElementControls=Mi;exports.useMediaElementData=ra;exports.useMediaElementState=na;exports.usePlaybackAnimation=dt;exports.usePlaybackShortcuts=of;exports.usePlaylistControls=ke;exports.usePlaylistData=ot;exports.usePlaylistState=at;exports.useSpectrogramIntegration=Oy;exports.useTimeFormat=Qd;exports.useTrackDynamicEffects=j0;exports.useZoomControls=ef;exports.waveformDataToPeaks=qd;
|
|
1079
1079
|
//# sourceMappingURL=index.js.map
|