import{store as Wt,getContext as H,getElement as Dt}from"@wordpress/interactivity";var et={grad:.9,turn:360,rad:360/(2*Math.PI)},k=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},y=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=Math.pow(10,e)),Math.round(a*t)/a+0},g=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=1),t>a?a:t>e?t:e},J=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},q=function(t){return{r:g(t.r,0,255),g:g(t.g,0,255),b:g(t.b,0,255),a:g(t.a)}},I=function(t){return{r:y(t.r),g:y(t.g),b:y(t.b),a:y(t.a,3)}},at=/^#([0-9a-f]{3,8})$/i,x=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},Y=function(t){var e=t.r,a=t.g,i=t.b,r=t.a,o=Math.max(e,a,i),s=o-Math.min(e,a,i),n=s?o===e?(a-i)/s:o===a?2+(i-e)/s:4+(e-a)/s:0;return{h:60*(n<0?n+6:n),s:o?s/o*100:0,v:o/255*100,a:r}},G=function(t){var e=t.h,a=t.s,i=t.v,r=t.a;e=e/360*6,a/=100,i/=100;var o=Math.floor(e),s=i*(1-a),n=i*(1-(e-o)*a),l=i*(1-(1-e+o)*a),h=o%6;return{r:255*[i,n,s,s,l,i][h],g:255*[l,i,i,n,s,s][h],b:255*[s,s,l,i,i,n][h],a:r}},$=function(t){return{h:J(t.h),s:g(t.s,0,100),l:g(t.l,0,100),a:g(t.a)}},z=function(t){return{h:y(t.h),s:y(t.s),l:y(t.l),a:y(t.a,3)}},O=function(t){return G((a=(e=t).s,{h:e.h,s:(a*=((i=e.l)<50?i:100-i)/100)>0?2*a/(i+a)*100:0,v:i+a,a:e.a}));var e,a,i},M=function(t){return{h:(e=Y(t)).h,s:(r=(200-(a=e.s))*(i=e.v)/100)>0&&r<200?a*i/100/(r<=100?r:200-r)*100:0,l:r/2,a:e.a};var e,a,i,r},it=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rt=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ot=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,st=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,U={string:[[function(t){var e=at.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?y(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?y(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=ot.exec(t)||st.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:q({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=it.exec(t)||rt.exec(t);if(!e)return null;var a,i,r=$({h:(a=e[1],i=e[2],i===void 0&&(i="deg"),Number(a)*(et[i]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return O(r)},"hsl"]],object:[[function(t){var e=t.r,a=t.g,i=t.b,r=t.a,o=r===void 0?1:r;return k(e)&&k(a)&&k(i)?q({r:Number(e),g:Number(a),b:Number(i),a:Number(o)}):null},"rgb"],[function(t){var e=t.h,a=t.s,i=t.l,r=t.a,o=r===void 0?1:r;if(!k(e)||!k(a)||!k(i))return null;var s=$({h:Number(e),s:Number(a),l:Number(i),a:Number(o)});return O(s)},"hsl"],[function(t){var e=t.h,a=t.s,i=t.v,r=t.a,o=r===void 0?1:r;if(!k(e)||!k(a)||!k(i))return null;var s=(function(n){return{h:J(n.h),s:g(n.s,0,100),v:g(n.v,0,100),a:g(n.a)}})({h:Number(e),s:Number(a),v:Number(i),a:Number(o)});return G(s)},"hsv"]]},F=function(t,e){for(var a=0;a<e.length;a++){var i=e[a][0](t);if(i)return[i,e[a][1]]}return[null,void 0]},nt=function(t){return typeof t=="string"?F(t.trim(),U.string):typeof t=="object"&&t!==null?F(t,U.object):[null,void 0]};var R=function(t,e){var a=M(t);return{h:a.h,s:g(a.s+100*e,0,100),l:a.l,a:a.a}},B=function(t){return(299*t.r+587*t.g+114*t.b)/1e3/255},j=function(t,e){var a=M(t);return{h:a.h,s:a.s,l:g(a.l+100*e,0,100),a:a.a}},V=(function(){function t(e){this.parsed=nt(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return t.prototype.isValid=function(){return this.parsed!==null},t.prototype.brightness=function(){return y(B(this.rgba),2)},t.prototype.isDark=function(){return B(this.rgba)<.5},t.prototype.isLight=function(){return B(this.rgba)>=.5},t.prototype.toHex=function(){return e=I(this.rgba),a=e.r,i=e.g,r=e.b,s=(o=e.a)<1?x(y(255*o)):"","#"+x(a)+x(i)+x(r)+s;var e,a,i,r,o,s},t.prototype.toRgb=function(){return I(this.rgba)},t.prototype.toRgbString=function(){return e=I(this.rgba),a=e.r,i=e.g,r=e.b,(o=e.a)<1?"rgba("+a+", "+i+", "+r+", "+o+")":"rgb("+a+", "+i+", "+r+")";var e,a,i,r,o},t.prototype.toHsl=function(){return z(M(this.rgba))},t.prototype.toHslString=function(){return e=z(M(this.rgba)),a=e.h,i=e.s,r=e.l,(o=e.a)<1?"hsla("+a+", "+i+"%, "+r+"%, "+o+")":"hsl("+a+", "+i+"%, "+r+"%)";var e,a,i,r,o},t.prototype.toHsv=function(){return e=Y(this.rgba),{h:y(e.h),s:y(e.s),v:y(e.v),a:y(e.a,3)};var e},t.prototype.invert=function(){return v({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),v(R(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),v(R(this.rgba,-e))},t.prototype.grayscale=function(){return v(R(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),v(j(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),v(j(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?v({r:(a=this.rgba).r,g:a.g,b:a.b,a:e}):y(this.rgba.a,3);var a},t.prototype.hue=function(e){var a=M(this.rgba);return typeof e=="number"?v({h:e,s:a.s,l:a.l,a:a.a}):y(a.h)},t.prototype.isEqual=function(e){return this.toHex()===v(e).toHex()},t})(),v=function(t){return t instanceof V?t:new V(t)};function lt(t){let e={};if(t.dataset.url&&(e.url=t.dataset.url),t.dataset.height&&(e.height=parseInt(t.dataset.height)),t.dataset.samples&&(e.samples=parseInt(t.dataset.samples)),t.dataset.preload&&(e.preload=t.dataset.preload),t.dataset.waveformStyle&&(e.waveformStyle=t.dataset.waveformStyle),t.dataset.barWidth&&(e.barWidth=parseInt(t.dataset.barWidth)),t.dataset.barSpacing&&(e.barSpacing=parseInt(t.dataset.barSpacing)),t.dataset.buttonAlign&&(e.buttonAlign=t.dataset.buttonAlign),t.dataset.colorPreset&&(e.colorPreset=t.dataset.colorPreset),t.dataset.waveformColor&&(e.waveformColor=t.dataset.waveformColor),t.dataset.progressColor&&(e.progressColor=t.dataset.progressColor),t.dataset.buttonColor&&(e.buttonColor=t.dataset.buttonColor),t.dataset.buttonHoverColor&&(e.buttonHoverColor=t.dataset.buttonHoverColor),t.dataset.textColor&&(e.textColor=t.dataset.textColor),t.dataset.textSecondaryColor&&(e.textSecondaryColor=t.dataset.textSecondaryColor),t.dataset.backgroundColor&&(e.backgroundColor=t.dataset.backgroundColor),t.dataset.borderColor&&(e.borderColor=t.dataset.borderColor),t.dataset.color&&(e.waveformColor=t.dataset.color),t.dataset.theme&&(e.colorPreset=t.dataset.theme),t.dataset.autoplay&&(e.autoplay=t.dataset.autoplay==="true"),t.dataset.showTime&&(e.showTime=t.dataset.showTime==="true"),t.dataset.showHoverTime&&(e.showHoverTime=t.dataset.showHoverTime==="true"),t.dataset.showBpm&&(e.showBPM=t.dataset.showBpm==="true"),t.dataset.singlePlay&&(e.singlePlay=t.dataset.singlePlay==="true"),t.dataset.playOnSeek&&(e.playOnSeek=t.dataset.playOnSeek==="true"),t.dataset.title&&(e.title=t.dataset.title),t.dataset.subtitle&&(e.subtitle=t.dataset.subtitle),t.dataset.album&&(e.album=t.dataset.album),t.dataset.artwork&&(e.artwork=t.dataset.artwork),t.dataset.waveform&&(e.waveform=t.dataset.waveform),t.dataset.markers)try{e.markers=JSON.parse(t.dataset.markers)}catch(a){console.warn("Invalid markers JSON:",a)}if(t.dataset.playbackRate&&(e.playbackRate=parseFloat(t.dataset.playbackRate)),t.dataset.showPlaybackSpeed!==void 0&&(e.showPlaybackSpeed=t.dataset.showPlaybackSpeed==="true"),t.dataset.playbackRates)try{e.playbackRates=JSON.parse(t.dataset.playbackRates)}catch(a){console.warn("Invalid playbackRates JSON:",a)}return t.dataset.enableMediaSession!==void 0&&(e.enableMediaSession=t.dataset.enableMediaSession==="true"),e}function K(t){if(!t||isNaN(t))return"0:00";let e=Math.floor(t/60),a=Math.floor(t%60);return`${e}:${a.toString().padStart(2,"0")}`}function ht(t){let e=t||Math.random().toString();return btoa(e.substring(0,10)).replace(/[^a-zA-Z0-9]/g,"")}function dt(t){if(!t)return"Audio";let e=t.split("/");return e[e.length-1].split(".")[0].replace(/[-_]/g," ").replace(/\b\w/g,a=>a.toUpperCase())}function X(...t){let e={};for(let a of t)for(let i in a)a[i]!==null&&a[i]!==void 0&&(e[i]=a[i]);return e}function ut(t,e){let a;return function(...i){let r=()=>{clearTimeout(a),t(...i)};clearTimeout(a),a=setTimeout(r,e)}}function T(t,e){if(t.length===e)return t;if(t.length===0||e===0)return[];let a=[];if(e>t.length){let i=(t.length-1)/(e-1);for(let r=0;r<e;r++){let o=r*i,s=Math.floor(o),n=Math.ceil(o),l=o-s;if(n>=t.length)a.push(t[t.length-1]);else if(s===n)a.push(t[s]);else{let h=t[s]*(1-l)+t[n]*l;a.push(h)}}}else{let i=t.length/e;for(let r=0;r<e;r++){let o=Math.floor(r*i),s=Math.floor((r+1)*i),n=0,l=0;for(let h=o;h<=s&&h<t.length;h++)t[h]>n&&(n=t[h]),l++;if(l===0){let h=Math.min(Math.round(r*i),t.length-1);n=t[h]}a.push(n)}}return a}function Q(t,e,a,i,r){let o=window.devicePixelRatio||1,s=r.barWidth*o,n=r.barSpacing*o,l=Math.floor(e.width/(s+n)),h=T(a,l),u=e.height,c=i*e.width;t.clearRect(0,0,e.width,e.height);for(let m=0;m<h.length;m++){let f=m*(s+n);if(f+s>e.width)break;let d=h[m]*u*.9,b=u-d;t.fillStyle=r.color,t.fillRect(f,b,s,d)}t.save(),t.beginPath(),t.rect(0,0,c,u),t.clip();for(let m=0;m<h.length;m++){let f=m*(s+n);if(f>c)break;let d=h[m]*u*.9,b=u-d;t.fillStyle=r.progressColor,t.fillRect(f,b,s,d)}t.restore()}function ct(t,e,a,i,r){let o=window.devicePixelRatio||1,s=r.barWidth*o,n=r.barSpacing*o,l=Math.floor(e.width/(s+n)),h=T(a,l),u=e.height,c=u/2,m=i*e.width;t.clearRect(0,0,e.width,e.height);for(let f=0;f<h.length;f++){let d=f*(s+n);if(d+s>e.width)break;let b=h[f]*u*.45;t.fillStyle=r.color,t.fillRect(d,c-b,s,b),t.fillRect(d,c,s,b)}t.save(),t.beginPath(),t.rect(0,0,m,u),t.clip();for(let f=0;f<h.length;f++){let d=f*(s+n);if(d>m)break;let b=h[f]*u*.45;t.fillStyle=r.progressColor,t.fillRect(d,c-b,s,b),t.fillRect(d,c,s,b)}t.restore()}function pt(t,e,a,i,r){let o=e.width,s=e.height,n=s/2,l=s*.35;t.clearRect(0,0,o,s);let h=(u,c,m=1,f=!1)=>{f&&(t.shadowBlur=12,t.shadowColor=u),t.strokeStyle=u,t.lineWidth=c,t.lineCap="round",t.lineJoin="round",t.beginPath(),t.moveTo(0,n);let d=[],b=Math.floor(a.length*m);for(let p=0;p<b;p++){let P=p/(a.length-1)*o,E=a[p],S=Math.sin(p*.1)*E,C=n+S*l;d.push({x:P,y:C})}for(let p=0;p<d.length-1;p++){let P=d[p].x+(d[p+1].x-d[p].x)*.5,E=d[p].y,S=d[p+1].x-(d[p+1].x-d[p].x)*.5,C=d[p+1].y;t.bezierCurveTo(P,E,S,C,d[p+1].x,d[p+1].y)}t.stroke(),f&&(t.shadowBlur=0)};t.strokeStyle="rgba(255, 255, 255, 0.03)",t.lineWidth=.5,t.beginPath(),t.moveTo(0,n),t.lineTo(o,n),t.stroke();for(let u=0;u<=10;u++){let c=o/10*u;t.beginPath(),t.moveTo(c,0),t.lineTo(c,s),t.stroke()}h(r.color,2,1,!1),i>0&&h(r.progressColor,3,i,!0)}function mt(t,e,a,i,r){let o=window.devicePixelRatio||1,s=(r.barWidth||3)*o,n=(r.barSpacing||1)*o,l=Math.floor(e.width/(s+n)),h=T(a,l),u=e.height,c=4*o,m=2*o,f=i*e.width,d=u/2;t.clearRect(0,0,e.width,e.height);for(let b=0;b<h.length;b++){let p=b*(s+n);if(p+s>e.width)break;let P=h[b]*u*.9,E=Math.floor(P/(c+m));t.fillStyle=p<f?r.progressColor:r.color;for(let S=0;S<E;S++){let C=S*(c+m);t.fillRect(p,d-C-c,s,c),S>0&&t.fillRect(p,d+C,s,c)}}}function ft(t,e,a,i,r){let o=window.devicePixelRatio||1,s=(r.barWidth||2)*o,n=(r.barSpacing||3)*o,l=Math.floor(e.width/(s+n)),h=T(a,l),u=e.height,c=Math.max(1.5*o,s/2),m=i*e.width,f=u/2;t.clearRect(0,0,e.width,e.height);for(let d=0;d<h.length;d++){let b=d*(s+n)+s/2;if(b>e.width)break;let p=h[d]*u*.9;t.fillStyle=b<m?r.progressColor:r.color,t.beginPath(),t.arc(b,f-p/2,c,0,Math.PI*2),t.fill(),t.beginPath(),t.arc(b,f+p/2,c,0,Math.PI*2),t.fill()}}function bt(t,e,a,i,r){let o=e.width,s=e.height,n=s/2,l=4,h=l/2;if(t.clearRect(0,0,o,s),t.fillStyle=r.color||"rgba(255, 255, 255, 0.2)",t.beginPath(),t.moveTo(h,n-l/2),t.lineTo(o-h,n-l/2),t.arc(o-h,n,l/2,-Math.PI/2,Math.PI/2),t.lineTo(h,n+l/2),t.arc(h,n,l/2,Math.PI/2,-Math.PI/2),t.closePath(),t.fill(),i>0){let u=Math.max(h*2,i*o);t.shadowBlur=8,t.shadowColor=r.progressColor,t.fillStyle=r.progressColor||"rgba(255, 255, 255, 0.9)",t.beginPath(),t.moveTo(h,n-l/2),t.lineTo(u-h,n-l/2),t.arc(u-h,n,l/2,-Math.PI/2,Math.PI/2),t.lineTo(h,n+l/2),t.arc(h,n,l/2,Math.PI/2,-Math.PI/2),t.closePath(),t.fill(),t.shadowBlur=0;let c=8,m=u;t.shadowBlur=4,t.shadowColor="rgba(0, 0, 0, 0.3)",t.shadowOffsetY=2,t.fillStyle="#ffffff",t.beginPath(),t.arc(m,n,c,0,Math.PI*2),t.fill(),t.shadowBlur=0,t.shadowOffsetY=0,t.fillStyle=r.progressColor||"rgba(255, 255, 255, 0.9)",t.beginPath(),t.arc(m,n,c*.4,0,Math.PI*2),t.fill()}}var yt={bars:Q,mirror:ct,line:pt,blocks:mt,dots:ft,seekbar:bt};function vt(t,e,a,i,r){(yt[r.waveformStyle]||Q)(t,e,a,i,r)}function gt(t){try{let e=t.getChannelData(0),a=t.sampleRate,i=wt(e,a);if(i.length<2)return 120;let r=[];for(let l=1;l<i.length;l++)r.push((i[l]-i[l-1])/a);let o={};r.forEach(l=>{let h=60/l,u=Math.round(h/3)*3;u>60&&u<200&&(o[u]=(o[u]||0)+1)});let s=0,n=120;for(let[l,h]of Object.entries(o))h>s&&(s=h,n=parseInt(l));return n<70&&o[n*2]?n*=2:n>160&&o[Math.round(n/2)]&&(n=Math.round(n/2)),n-1}catch(e){return console.warn("BPM detection failed:",e),null}}function wt(t,e){let a=[],i=0;for(let r=0;r<t.length-2048;r+=1024){let o=0;for(let l=r;l<r+2048;l++)o+=t[l]*t[l];o=o/2048;let s=o-i,n=i*1.8+.01;if(s>n&&o>.01){let l=a[a.length-1]||0,h=e*.15;r-l>h&&a.push(r)}i=o*.8+i*.2}return a}function kt(t,e=200){let a=t.length/e,i=~~(a/10)||1,r=t.numberOfChannels,o=[];for(let n=0;n<r;n++){let l=t.getChannelData(n);for(let h=0;h<e;h++){let u=~~(h*a),c=~~(u+a),m=0,f=0;for(let b=u;b<c;b+=i){let p=l[b];p>f&&(f=p),p<m&&(m=p)}let d=Math.max(Math.abs(f),Math.abs(m));(n===0||d>o[h])&&(o[h]=d)}}let s=Math.max(...o);return s>0?o.map(n=>n/s):o}async function Z(t,e=200,a=!1){try{let i=new(window.AudioContext||window.webkitAudioContext),r=await(await fetch(t)).arrayBuffer(),o=await i.decodeAudioData(r),s=kt(o,e);s=Ct(s);let n=null;return a&&(n=await gt(o)),i.close(),{peaks:s,bpm:n}}catch(i){throw console.error("Failed to generate waveform:",i),i}}function St(t=200){let e=[];for(let a=0;a<t;a++){let i=Math.random()*.5+.3,r=Math.sin(a/t*Math.PI*4)*.2;e.push(Math.max(.1,Math.min(1,i+r)))}return e}function Ct(t,e=.95){let a=Math.max(...t);if(a===0||a>e)return t;let i=e/a;return t.map(r=>r*i)}function Pt(){let t=document.documentElement,e=document.body;if(t.classList.contains("dark")||t.classList.contains("dark-mode")||t.classList.contains("theme-dark")||t.getAttribute("data-theme")==="dark"||t.getAttribute("data-color-scheme")==="dark"||e.classList.contains("dark")||e.classList.contains("dark-mode")||e.getAttribute("data-theme")==="dark")return"dark";if(t.classList.contains("light")||t.classList.contains("light-mode")||t.classList.contains("theme-light")||t.getAttribute("data-theme")==="light"||t.getAttribute("data-color-scheme")==="light"||e.classList.contains("light")||e.classList.contains("light-mode")||e.getAttribute("data-theme")==="light")return"light";try{let a=getComputedStyle(document.body).backgroundColor.match(/\d+/g);if(a&&a.length>=3){let[i,r,o]=a.map(Number),s=(i*299+r*587+o*114)/1e3;if(s>128)return"light";if(s<128)return"dark"}}catch{}if(window.matchMedia){if(window.matchMedia("(prefers-color-scheme: dark)").matches)return"dark";if(window.matchMedia("(prefers-color-scheme: light)").matches)return"light"}return"dark"}var W={dark:{waveformColor:"rgba(255, 255, 255, 0.3)",progressColor:"rgba(255, 255, 255, 0.9)",buttonColor:"rgba(255, 255, 255, 0.9)",buttonHoverColor:"rgba(255, 255, 255, 1)",textColor:"#ffffff",textSecondaryColor:"rgba(255, 255, 255, 0.6)",backgroundColor:"rgba(255, 255, 255, 0.03)",borderColor:"rgba(255, 255, 255, 0.1)"},light:{waveformColor:"rgba(0, 0, 0, 0.2)",progressColor:"rgba(0, 0, 0, 0.8)",buttonColor:"rgba(0, 0, 0, 0.8)",buttonHoverColor:"rgba(0, 0, 0, 0.9)",textColor:"#333333",textSecondaryColor:"rgba(0, 0, 0, 0.6)",backgroundColor:"rgba(0, 0, 0, 0.02)",borderColor:"rgba(0, 0, 0, 0.1)"}};function Et(t){if(t&&W[t])return W[t];let e=Pt();return W[e]}var Mt={url:"",height:60,samples:200,preload:"metadata",playbackRate:1,showPlaybackSpeed:!1,playbackRates:[.5,.75,1,1.25,1.5,1.75,2],buttonAlign:"auto",waveformStyle:"mirror",barWidth:2,barSpacing:0,colorPreset:null,waveformColor:null,progressColor:null,buttonColor:null,buttonHoverColor:null,textColor:null,textSecondaryColor:null,backgroundColor:null,borderColor:null,autoplay:!1,showTime:!0,showHoverTime:!1,showBPM:!1,singlePlay:!0,playOnSeek:!0,enableMediaSession:!0,markers:[],showMarkers:!0,title:null,subtitle:null,artwork:null,album:"",playIcon:'<svg viewBox="0 0 24 24" width="16" height="16"><path d="M8 5v14l11-7z"/></svg>',pauseIcon:'<svg viewBox="0 0 24 24" width="16" height="16"><path d="M6 4h4v16H6zM14 4h4v16h-4z"/></svg>',onLoad:null,onPlay:null,onPause:null,onEnd:null,onError:null,onTimeUpdate:null},xt={bars:{barWidth:3,barSpacing:1},mirror:{barWidth:2,barSpacing:0},line:{barWidth:2,barSpacing:0},blocks:{barWidth:4,barSpacing:2},dots:{barWidth:3,barSpacing:3},seekbar:{barWidth:1,barSpacing:0}},A=class w{static instances=new Map;static currentlyPlaying=null;constructor(e,a={}){if(this.container=typeof e=="string"?document.querySelector(e):e,!this.container)throw new Error("WaveformPlayer: Container element not found");let i=lt(this.container);this.options=X(Mt,i,a);let r=Et(this.options.colorPreset);for(let[s,n]of Object.entries(r))(this.options[s]===null||this.options[s]===void 0)&&(this.options[s]=n);let o=xt[this.options.waveformStyle];o&&(i.barWidth===void 0&&a.barWidth===void 0&&(this.options.barWidth=o.barWidth),i.barSpacing===void 0&&a.barSpacing===void 0&&(this.options.barSpacing=o.barSpacing)),this.audio=null,this.canvas=null,this.ctx=null,this.waveformData=[],this.progress=0,this.isPlaying=!1,this.isLoading=!1,this.hasError=!1,this.updateTimer=null,this.resizeObserver=null,this.id=this.container.id||ht(this.options.url),w.instances.set(this.id,this),this.init(),setTimeout(()=>{this.container.dispatchEvent(new CustomEvent("waveformplayer:ready",{bubbles:!0,detail:{player:this,url:this.options.url}}))},100)}init(){this.createDOM(),this.createAudio(),this.initPlaybackSpeed(),this.initKeyboardControls(),this.bindEvents(),this.setupResizeObserver(),requestAnimationFrame(()=>{this.resizeCanvas(),this.options.url&&this.load(this.options.url).then(()=>{this.options.autoplay&&this.play()}).catch(e=>{console.error("Failed to load audio:",e)})})}createDOM(){this.container.innerHTML="",this.container.className="waveform-player";let e=this.options.buttonAlign;e==="auto"&&(this.options.waveformStyle==="bars"?e="bottom":e="center"),this.container.innerHTML=`
<div class="waveform-player-inner">
<div class="waveform-body">
<div class="waveform-track waveform-align-${e}">
<button class="waveform-btn" aria-label="Play/Pause" style="
border-color: ${this.options.buttonColor};
color: ${this.options.buttonColor};
">
<span class="waveform-icon-play">${this.options.playIcon}</span>
<span class="waveform-icon-pause" style="display:none;">${this.options.pauseIcon}</span>
</button>
<div class="waveform-container">
<canvas></canvas>
<div class="waveform-markers"></div>
<div class="waveform-loading" style="display:none;"></div>
<div class="waveform-error" style="display:none;">
<span class="waveform-error-text">Unable to load audio</span>
</div>
</div>
</div>
<div class="waveform-info">
${this.options.artwork?`
<img class="waveform-artwork" src="${this.options.artwork}" alt="Album artwork" style="
width: 40px;
height: 40px;
border-radius: 4px;
object-fit: cover;
flex-shrink: 0;
">
`:""}
<div class="waveform-text">
<span class="waveform-title" style="color: ${this.options.textColor};"></span>
${this.options.subtitle?`<span class="waveform-subtitle" style="color: ${this.options.textSecondaryColor};">${this.options.subtitle}</span>`:""}
</div>
<div style="display: flex; align-items: center; gap: 1rem;">
${this.options.showBPM?`
<span class="waveform-bpm" style="color: ${this.options.textSecondaryColor}; display: none;">
<span class="bpm-value">--</span> BPM
</span>
`:""}
${this.options.showPlaybackSpeed?`
<div class="waveform-speed">
<button class="speed-btn" aria-label="Playback speed">
<span class="speed-value">1x</span>
</button>
<div class="speed-menu" style="display: none;">
${this.options.playbackRates.map(a=>`<button class="speed-option" data-rate="${a}">${a}x</button>`).join("")}
</div>
</div>
`:""}
${this.options.showTime?`
<span class="waveform-time" style="color: ${this.options.textSecondaryColor};">
<span class="time-current">0:00</span> / <span class="time-total">0:00</span>
</span>
`:""}
</div>
</div>
</div>
</div>
`,this.playBtn=this.container.querySelector(".waveform-btn"),this.canvas=this.container.querySelector("canvas"),this.ctx=this.canvas.getContext("2d"),this.titleEl=this.container.querySelector(".waveform-title"),this.subtitleEl=this.container.querySelector(".waveform-subtitle"),this.artworkEl=this.container.querySelector(".waveform-artwork"),this.currentTimeEl=this.container.querySelector(".time-current"),this.totalTimeEl=this.container.querySelector(".time-total"),this.bpmEl=this.container.querySelector(".waveform-bpm"),this.bpmValueEl=this.container.querySelector(".bpm-value"),this.loadingEl=this.container.querySelector(".waveform-loading"),this.errorEl=this.container.querySelector(".waveform-error"),this.markersContainer=this.container.querySelector(".waveform-markers"),this.speedBtn=this.container.querySelector(".speed-btn"),this.speedMenu=this.container.querySelector(".speed-menu"),this.resizeCanvas()}createAudio(){this.audio=new Audio,this.audio.preload=this.options.preload||"metadata",this.audio.crossOrigin="anonymous"}initPlaybackSpeed(){this.options.playbackRate&&this.options.playbackRate!==1&&(this.audio.playbackRate=this.options.playbackRate),this.options.showPlaybackSpeed&&this.initSpeedControls()}initSpeedControls(){let e=this.container.querySelector(".speed-btn"),a=this.container.querySelector(".speed-menu");!e||!a||(e.addEventListener("click",i=>{i.stopPropagation(),a.style.display=a.style.display==="none"?"block":"none"}),document.addEventListener("click",()=>{a.style.display="none"}),a.addEventListener("click",i=>{if(i.stopPropagation(),i.target.classList.contains("speed-option")){let r=parseFloat(i.target.dataset.rate);this.setPlaybackRate(r),a.style.display="none"}}),this.updateSpeedUI())}initKeyboardControls(){this.container.setAttribute("tabindex","-1"),this.container.addEventListener("click",()=>{w.getAllInstances().forEach(e=>{e!==this&&e.container.setAttribute("tabindex","-1")}),this.container.setAttribute("tabindex","0"),this.container.focus()}),this.container.addEventListener("keydown",e=>{if(document.activeElement!==this.container)return;let a=e.key,i=this.audio.currentTime;if(a>="0"&&a<="9"){e.preventDefault(),this.seekToPercent(parseInt(a)/10);return}let r={" ":()=>this.togglePlay(),ArrowLeft:()=>this.seekTo(Math.max(0,i-5)),ArrowRight:()=>this.seekTo(Math.min(this.audio.duration,i+5)),ArrowUp:()=>this.setVolume(Math.min(1,this.audio.volume+.1)),ArrowDown:()=>this.setVolume(Math.max(0,this.audio.volume-.1)),m:()=>this.audio.muted=!this.audio.muted,M:()=>this.audio.muted=!this.audio.muted};r[a]&&(e.preventDefault(),r[a]())})}initMediaSession(){!("mediaSession"in navigator)||!this.options.enableMediaSession||(navigator.mediaSession.metadata=new MediaMetadata({title:this.options.title||"Unknown Track",artist:this.options.subtitle||"",album:this.options.album||"",artwork:this.options.artwork?[{src:this.options.artwork,sizes:"512x512",type:"image/jpeg"}]:[]}),navigator.mediaSession.setActionHandler("play",()=>this.play()),navigator.mediaSession.setActionHandler("pause",()=>this.pause()),navigator.mediaSession.setActionHandler("seekbackward",()=>{this.seekTo(Math.max(0,this.audio.currentTime-10))}),navigator.mediaSession.setActionHandler("seekforward",()=>{this.seekTo(Math.min(this.audio.duration,this.audio.currentTime+10))}),navigator.mediaSession.setActionHandler("seekto",e=>{e.seekTime!==null&&this.seekTo(e.seekTime)}))}bindEvents(){this.playBtn.addEventListener("click",()=>this.togglePlay()),this.audio.addEventListener("loadstart",()=>this.setLoading(!0)),this.audio.addEventListener("loadedmetadata",()=>this.onMetadataLoaded()),this.audio.addEventListener("canplay",()=>this.setLoading(!1)),this.audio.addEventListener("play",()=>this.onPlay()),this.audio.addEventListener("pause",()=>this.onPause()),this.audio.addEventListener("ended",()=>this.onEnded()),this.audio.addEventListener("error",e=>this.onError(e)),this.canvas.addEventListener("click",e=>this.handleCanvasClick(e)),this.resizeHandler=ut(()=>this.resizeCanvas(),100),window.addEventListener("resize",this.resizeHandler)}setupResizeObserver(){"ResizeObserver"in window&&(this.resizeObserver=new ResizeObserver(()=>{this.resizeCanvas()}),this.canvas?.parentElement&&this.resizeObserver.observe(this.canvas.parentElement))}async load(e){try{this.setLoading(!0),this.progress=0,this.hasError=!1,this.audio.src=e,await new Promise((i,r)=>{let o=()=>{this.audio.removeEventListener("loadedmetadata",o),this.audio.removeEventListener("error",s),i()},s=n=>{this.audio.removeEventListener("loadedmetadata",o),this.audio.removeEventListener("error",s),r(n)};this.audio.addEventListener("loadedmetadata",o),this.audio.addEventListener("error",s)});let a=this.options.title||dt(e);if(this.titleEl&&(this.titleEl.textContent=a),this.options.waveform)this.setWaveformData(this.options.waveform);else try{let i=await Z(e,this.options.samples,this.options.showBPM);this.waveformData=i.peaks,i.bpm&&(this.detectedBPM=i.bpm,this.updateBPMDisplay())}catch(i){console.warn("Using placeholder waveform:",i),this.waveformData=St(this.options.samples)}this.drawWaveform(),this.renderMarkers(),this.initMediaSession(),this.options.onLoad&&this.options.onLoad(this)}catch(a){console.error("Failed to load audio:",a),this.onError(a)}finally{this.setLoading(!1)}}async loadTrack(e,a=null,i=null,r={}){this.isPlaying&&this.pause(),this.audio.src="",this.audio.load(),this.hasError=!1,this.errorEl&&(this.errorEl.style.display="none"),this.canvas&&(this.canvas.style.opacity="1"),this.playBtn&&(this.playBtn.disabled=!1),this.progress=0,this.waveformData=[],this.options=X(this.options,{url:e,title:a||this.options.title,subtitle:i||this.options.subtitle,...r}),r.preload&&(this.audio.preload=r.preload),this.subtitleEl&&(i?(this.subtitleEl.textContent=i,this.subtitleEl.style.display=""):i===""&&(this.subtitleEl.style.display="none")),r.artwork&&this.artworkEl&&(this.artworkEl.src=r.artwork),r.markers&&(this.options.markers=r.markers),await this.load(e),this.play()}setWaveformData(e){if(typeof e=="string")try{let a=JSON.parse(e);this.waveformData=Array.isArray(a)?a:[]}catch{this.waveformData=e.split(",").map(Number)}else this.waveformData=Array.isArray(e)?e:[];this.drawWaveform()}drawWaveform(){!this.ctx||this.waveformData.length===0||vt(this.ctx,this.canvas,this.waveformData,this.progress,{...this.options,waveformStyle:this.options.waveformStyle||"bars",color:this.options.waveformColor,progressColor:this.options.progressColor})}resizeCanvas(){if(!this.canvas||this.isDestroying)return;let e=window.devicePixelRatio||1,a=this.canvas.getBoundingClientRect();this.canvas.width=a.width*e,this.canvas.height=this.options.height*e,this.canvas.style.height=this.options.height+"px",this.canvas.parentElement.style.height=this.options.height+"px",this.drawWaveform()}renderMarkers(){!this.options.showMarkers||!this.options.markers?.length||!this.markersContainer||(this.markersContainer.innerHTML="",!(!this.audio||!this.audio.duration||this.audio.duration===0)&&this.options.markers.forEach((e,a)=>{if(e.time>this.audio.duration){console.warn(`Marker "${e.label}" at ${e.time}s exceeds audio duration of ${this.audio.duration}s`);return}let i=e.time/this.audio.duration*100,r=document.createElement("button");r.className="waveform-marker",r.style.left=`${i}%`,r.style.backgroundColor=e.color||"rgba(255, 255, 255, 0.5)",r.setAttribute("aria-label",e.label),r.setAttribute("data-time",e.time);let o=document.createElement("span");o.className="waveform-marker-tooltip",o.textContent=e.label,r.appendChild(o),r.addEventListener("click",s=>{s.stopPropagation(),this.seekTo(e.time),this.options.playOnSeek&&!this.isPlaying&&this.play()}),this.markersContainer.appendChild(r)}))}handleCanvasClick(e){if(!this.audio.duration)return;let a=this.canvas.getBoundingClientRect(),i=e.clientX-a.left,r=Math.max(0,Math.min(1,i/a.width));this.seekToPercent(r)}setLoading(e){this.isLoading=e,this.loadingEl&&(this.loadingEl.style.display=e?"block":"none")}onMetadataLoaded(){this.isDestroying||(this.totalTimeEl&&(this.totalTimeEl.textContent=K(this.audio.duration)),this.renderMarkers())}onPlay(){if(this.isDestroying)return;this.isPlaying=!0,this.playBtn.classList.add("playing");let e=this.playBtn.querySelector(".waveform-icon-play"),a=this.playBtn.querySelector(".waveform-icon-pause");e&&(e.style.display="none"),a&&(a.style.display="flex"),this.startSmoothUpdate(),this.container.dispatchEvent(new CustomEvent("waveformplayer:play",{bubbles:!0,detail:{player:this,url:this.options.url}})),this.options.onPlay&&this.options.onPlay(this)}onPause(){if(this.isDestroying)return;this.isPlaying=!1,this.playBtn.classList.remove("playing");let e=this.playBtn.querySelector(".waveform-icon-play"),a=this.playBtn.querySelector(".waveform-icon-pause");e&&(e.style.display="flex"),a&&(a.style.display="none"),this.stopSmoothUpdate(),this.container.dispatchEvent(new CustomEvent("waveformplayer:pause",{bubbles:!0,detail:{player:this,url:this.options.url}})),this.options.onPause&&this.options.onPause(this)}onEnded(){this.isDestroying||(this.progress=0,this.audio.currentTime=0,this.drawWaveform(),this.currentTimeEl&&(this.currentTimeEl.textContent="0:00"),this.container.dispatchEvent(new CustomEvent("waveformplayer:ended",{bubbles:!0,detail:{player:this,url:this.options.url}})),this.onPause(),this.options.onEnd&&this.options.onEnd(this))}onError(e){this.isDestroying||(console.error("Audio error:",e),this.hasError=!0,this.setLoading(!1),this.errorEl&&(this.errorEl.style.display="flex"),this.canvas&&(this.canvas.style.opacity="0.2"),this.playBtn&&(this.playBtn.disabled=!0),this.options.onError&&this.options.onError(e,this))}startSmoothUpdate(){this.stopSmoothUpdate();let e=()=>{this.isPlaying&&this.audio.duration&&(this.updateProgress(),this.updateTimer=requestAnimationFrame(e))};this.updateTimer=requestAnimationFrame(e)}stopSmoothUpdate(){this.updateTimer&&(cancelAnimationFrame(this.updateTimer),this.updateTimer=null)}updateProgress(){if(!this.audio.duration)return;let e=this.audio.currentTime/this.audio.duration;Math.abs(e-this.progress)>.001&&(this.progress=e,this.drawWaveform()),this.currentTimeEl&&(this.currentTimeEl.textContent=K(this.audio.currentTime)),this.container.dispatchEvent(new CustomEvent("waveformplayer:timeupdate",{bubbles:!0,detail:{player:this,currentTime:this.audio.currentTime,duration:this.audio.duration,url:this.options.url}})),this.options.onTimeUpdate&&this.options.onTimeUpdate(this.audio.currentTime,this.audio.duration,this)}updateBPMDisplay(){this.bpmEl&&this.bpmValueEl&&this.detectedBPM&&(this.bpmValueEl.textContent=Math.round(this.detectedBPM),this.bpmEl.style.display="inline-flex")}updateSpeedUI(){let e=this.container.querySelector(".speed-value");if(e){let a=this.audio.playbackRate;e.textContent=a===1?"1x":`${a}x`}this.container.querySelectorAll(".speed-option").forEach(a=>{a.classList.toggle("active",parseFloat(a.dataset.rate)===this.audio.playbackRate)})}play(){this.options.singlePlay&&w.currentlyPlaying&&w.currentlyPlaying!==this&&w.currentlyPlaying.pause(),w.currentlyPlaying=this,this.audio.play()}pause(){w.currentlyPlaying===this&&(w.currentlyPlaying=null),this.audio.pause()}togglePlay(){this.isPlaying?this.pause():this.play()}seekTo(e){this.audio&&this.audio.duration&&(this.audio.currentTime=Math.max(0,Math.min(e,this.audio.duration)),this.updateProgress())}seekToPercent(e){this.audio&&this.audio.duration&&(this.audio.currentTime=this.audio.duration*Math.max(0,Math.min(1,e)),this.updateProgress())}setVolume(e){this.audio&&(this.audio.volume=Math.max(0,Math.min(1,e)))}setPlaybackRate(e){if(!this.audio)return;let a=Math.max(.5,Math.min(2,e));this.audio.playbackRate=a,this.options.playbackRate=a,this.updateSpeedUI()}destroy(){this.isDestroying=!0,this.pause(),this.stopSmoothUpdate(),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.resizeHandler&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null),w.instances.delete(this.id),w.currentlyPlaying===this&&(w.currentlyPlaying=null),this.audio&&(this.audio.pause(),this.audio.src="",this.audio.load(),this.audio=null),this.container.innerHTML="",this.canvas=null,this.ctx=null,this.playBtn=null,this.waveformData=[]}static getInstance(e){if(typeof e=="string"){let a=this.instances.get(e);if(a)return a;let i=document.getElementById(e);if(i)return Array.from(this.instances.values()).find(r=>r.container===i)}if(e instanceof HTMLElement)return Array.from(this.instances.values()).find(a=>a.container===e)}static getAllInstances(){return Array.from(this.instances.values())}static destroyAll(){this.instances.forEach(e=>e.destroy()),this.instances.clear()}static async generateWaveformData(e,a=200){try{return(await Z(e,a)).peaks}catch(i){throw console.error("Failed to generate waveform:",i),i}}};function D(){typeof document>"u"||document.querySelectorAll("[data-waveform-player]").forEach(t=>{if(t.dataset.waveformInitialized!=="true")try{new A(t),t.dataset.waveformInitialized="true"}catch(e){console.error("Failed to initialize WaveformPlayer:",e,t)}})}typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",D):D());A.init=D;typeof window<"u"&&(window.WaveformPlayer=A);var _=A;var Tt=100;function At(t){return t.ownerDocument.defaultView.getComputedStyle(t)}function Lt(t){let e=At(t).color,a=v(e).alpha(.3).toRgbString(),i=v(e).alpha(.6).toRgbString();return{textColor:e,waveformColor:a,progressColor:i}}function It({url:t,title:e,artist:a,artwork:i,waveformColor:r,progressColor:o,buttonColor:s,height:n=Tt}){let l=document.createElement("div");return l.setAttribute("data-waveform-player",""),l.setAttribute("data-url",t),l.setAttribute("data-height",String(n)),l.setAttribute("data-waveform-style","bars"),l.setAttribute("data-waveform-color",r),l.setAttribute("data-progress-color",o),l.setAttribute("data-button-color",s),l.setAttribute("data-text-color",s),l.setAttribute("data-text-secondary-color",s),e&&l.setAttribute("data-title",e),a&&l.setAttribute("data-subtitle",a),i&&l.setAttribute("data-artwork",i),l}function Rt(t,e){let i=v(e).isDark()?"#ffffff":"#000000";t.querySelectorAll("svg path").forEach(o=>{o.style.fill=i})}function Bt(t,{play:e="Play",pause:a="Pause"}={}){let i=t.querySelector(".waveform-btn");if(!i)return;i.setAttribute("aria-label",e);let r=()=>i.setAttribute("aria-label",a),o=()=>i.setAttribute("aria-label",e);return t.addEventListener("waveformplayer:play",r),t.addEventListener("waveformplayer:pause",o),t.addEventListener("waveformplayer:ended",o),()=>{t.removeEventListener("waveformplayer:play",r),t.removeEventListener("waveformplayer:pause",o),t.removeEventListener("waveformplayer:ended",o)}}function L(t){t.name!=="AbortError"&&console.error("Playlist play error:",t)}function tt(t,{src:e,title:a,artist:i,image:r,autoPlay:o,onEnded:s,labels:n}){let{textColor:l,waveformColor:h,progressColor:u}=Lt(t),c=It({url:e,title:a,artist:i,artwork:r,waveformColor:h,progressColor:u,buttonColor:l});t.appendChild(c);let m=new _(c),f,d={ready:()=>{Rt(c,l),f=Bt(c,n),o&&m.play()?.catch(L)},ended:()=>s?.()};return c.addEventListener("waveformplayer:ready",d.ready),c.addEventListener("waveformplayer:ended",d.ended),{instance:m,container:c,destroy:()=>{f?.(),c.removeEventListener("waveformplayer:ready",d.ready),c.removeEventListener("waveformplayer:ended",d.ended),m.destroy(),c.remove()}}}var N=new WeakMap,{state:Ht}=Wt("core/playlist",{state:{playlists:{},get isCurrentTrack(){let{currentId:t,uniqueId:e}=H();return t===e}},actions:{changeTrack(){let t=H();t.currentId=t.uniqueId}},callbacks:{initWaveformPlayer(){let t=H(),{ref:e}=Dt();if(!t.currentId||!e)return;let a=Ht.playlists[t.playlistId]?.tracks[t.currentId];if(!a?.url)return;let i=N.get(e);if(i?.url===a.url)return;let r=!!i?.url;Nt(e,a,r,t)}}},{lock:!0});function Nt(t,e,a,i){let r=N.get(t);if(r?.instance){r.instance.loadTrack(e.url,e.title,e.artist,{artwork:e.image}).then(()=>{r.url=e.url,a&&r.instance.play()?.catch(L)}).catch(L);return}let o={play:t.dataset.labelPlay,pause:t.dataset.labelPause},s=tt(t,{src:e.url,title:e.title,artist:e.artist,image:e.image,autoPlay:a,labels:o,onEnded:()=>{let n=i.tracks.findIndex(h=>h===i.currentId),l=i.tracks[n+1];l&&(i.currentId=l)}});N.set(t,{url:e.url,instance:s.instance,destroy:s.destroy})}
//# sourceMappingURL=view.min.js.map