var eternalDjukebox=(()=>{var e,O=Object.create,i=Object.defineProperty,$=Object.getOwnPropertyDescriptor,j=Object.getOwnPropertyNames,P=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty,t=(e,t)=>function(){return t||(0,e[j(e)[0]])((t={exports:{}}).exports,t),t.exports},G=(t,a,n,r)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let e of j(a))F.call(t,e)||e===n||i(t,e,{get:()=>a[e],enumerable:!(r=$(a,e))||r.enumerable});return t},a=(e,t,a)=>(a=null!=e?O(P(e)):{},G(!t&&e&&e.__esModule?a:i(a,"default",{value:e,enumerable:!0}),e)),n=(e,t,a)=>{var n;return n=a,(t="symbol"!=typeof t?t+"":t)in(e=e)?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,a},r=t({"external-global-plugin:react"(e,t){t.exports=Spicetify.React}}),H=t({"../../node_modules/spcr-whats-new/node_modules/semver/internal/debug.js"(e,t){var a="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};t.exports=a}}),X=t({"../../node_modules/spcr-whats-new/node_modules/semver/internal/constants.js"(e,t){var a=Number.MAX_SAFE_INTEGER||9007199254740991;t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:a,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}}),U=t({"../../node_modules/spcr-whats-new/node_modules/semver/internal/re.js"(e,t){var{MAX_SAFE_COMPONENT_LENGTH:a,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:r}=X(),i=H(),s=(e=t.exports={}).re=[],o=e.safeRe=[],l=e.src=[],c=e.t={},u=0,t="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",r],[t,n]],r=(e,t,a)=>{var n=(e=>{for(var[t,a]of h)e=e.split(t+"*").join(`${t}{0,${a}}`).split(t+"+").join(`${t}{1,${a}}`);return e})(t),r=u++;i(e,r,t),c[e]=r,l[r]=t,s[r]=new RegExp(t,a?"g":void 0),o[r]=new RegExp(n,a?"g":void 0)};r("NUMERICIDENTIFIER","0|[1-9]\\d*"),r("NUMERICIDENTIFIERLOOSE","\\d+"),r("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${t}*`),r("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),r("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),r("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),r("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),r("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),r("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),r("BUILDIDENTIFIER",t+"+"),r("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),r("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),r("FULL",`^${l[c.FULLPLAIN]}$`),r("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),r("LOOSE",`^${l[c.LOOSEPLAIN]}$`),r("GTLT","((?:<|>)?=?)"),r("XRANGEIDENTIFIERLOOSE",l[c.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*"),r("XRANGEIDENTIFIER",l[c.NUMERICIDENTIFIER]+"|x|X|\\*"),r("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),r("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),r("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),r("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),r("COERCE",`(^|[^\\d])(\\d{1,${a}})(?:\\.(\\d{1,${a}}))?(?:\\.(\\d{1,${a}}))?(?:$|[^\\d])`),r("COERCERTL",l[c.COERCE],!0),r("LONETILDE","(?:~>?)"),r("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",r("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),r("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),r("LONECARET","(?:\\^)"),r("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",r("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),r("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),r("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),r("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),r("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",r("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),r("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),r("STAR","(<|>)?=?\\s*\\*"),r("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),r("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),z=t({"../../node_modules/spcr-whats-new/node_modules/semver/internal/parse-options.js"(e,t){var a=Object.freeze({loose:!0}),n=Object.freeze({});t.exports=e=>e?"object"!=typeof e?a:e:n}}),q=t({"../../node_modules/spcr-whats-new/node_modules/semver/internal/identifiers.js"(e,t){var r=/^[0-9]+$/,a=(e,t)=>{var a=r.test(e),n=r.test(t);return a&&n&&(e=+e,t=+t),e===t?0:a&&!n||(!n||a)&&ea(t,e)}}}),V=t({"../../node_modules/spcr-whats-new/node_modules/semver/classes/semver.js"(e,t){var r=H(),{MAX_LENGTH:a,MAX_SAFE_INTEGER:n}=X(),{safeRe:i,t:s}=U(),o=z(),l=q()["compareIdentifiers"],c=class{constructor(e,t){if(t=o(t),e instanceof c){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>a)throw new TypeError(`version is longer than ${a} characters`);r("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;t=e.trim().match(t.loose?i[s.LOOSE]:i[s.FULL]);if(!t)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+t[1],this.minor=+t[2],this.patch=+t[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");t[4]?this.prerelease=t[4].split(".").map(e=>{if(/^[0-9]+$/.test(e)){var t=+e;if(0<=t&&tnew n(e,a).compare(new n(t,a))}}),W=t({"../../node_modules/spcr-whats-new/node_modules/semver/functions/gt.js"(e,t){var n=J();t.exports=(e,t,a)=>0function(){return xt.default.createElement(vt,null)}};for(e in Q)i(Z,e,{get:Q[e],enumerable:!0});var s=a(r()),K="app-module__full-size-container___XoGtP_eternalDjukebox",ee="app-module__empty-container___Or2XU_eternalDjukebox",te="app-module__elements-container___Ac4rM_eternalDjukebox",o={container:"Home-module__container___OGYoy_eternalDjukebox",title:"Home-module__title___r5q25_eternalDjukebox",button:"Home-module__button___C7z3Z_eternalDjukebox",content:"Home-module__content___z3y-o_eternalDjukebox",stats:"Home-module__stats___JAqyz_eternalDjukebox"},l=a(r()),ae={"jukebox-graph":"JukeboxVisualizer-module__jukebox-graph___e-QLA_eternalDjukebox"},c=a(r()),ne=a(r());function re(e){return Spicetify.Platform?.[e]}function ie(e){const[t,a]=(0,ne.useState)(!1);return ne.default.createElement("path",{fill:e.drawData.beat.isPlaying||t?e.drawData.activeColor:e.drawData.color,d:e.drawData.drawCommand,onMouseOver:()=>{a(!0)},onMouseOut:()=>{a(!1)},onClick:async()=>{await function(e){var t=re(e);if(void 0===t)throw new Error(`Platform API "${e}" is not available`);return t}("PlayerAPI").seekTo(e.drawData.beat.start)}},ne.default.createElement("title",null,"Beat ",e.drawData.beat.index))}var se=a(r()),oe={"flex-center":"app-module__flex-center___p5IEY_eternalDjukebox","full-size-container":"app-module__full-size-container___XoGtP_eternalDjukebox","empty-container":"app-module__empty-container___Or2XU_eternalDjukebox","elements-container":"app-module__elements-container___Ac4rM_eternalDjukebox"};function le(e){const[t,a]=(0,se.useState)(!1);return se.default.createElement("path",{className:oe["edge-path"]+" "+(e.drawData.edge.isPlaying?"is-active":""),fill:"none",stroke:e.drawData.edge.isPlaying||t?e.drawData.activeColor:e.drawData.color,strokeWidth:e.drawData.strokeWidth,d:e.drawData.drawCommand,onMouseOver:e=>{e=e.target,document.getElementById("#jukebox-graph")?.firstChild?.appendChild(e),a(!0)},onMouseOut:()=>{a(!1)}},se.default.createElement("title",null,e.drawData.edge.source.index+" - "+e.drawData.edge.destination.index))}function ce(e){return(ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var ue=/^\s+/,he=/\s+$/;function f(e,t){var a;return t=t||{},(e=e||"")instanceof f?e:this instanceof f?(a=function(e){var t={r:0,g:0,b:0},a=1,n=null,r=null,i=null,s=!1,o=!1;"string"==typeof e&&(e=function(e){e=e.replace(ue,"").replace(he,"").toLowerCase();var t,a=!1;if(Ae[e])e=Ae[e],a=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(t=g.rgb.exec(e))return{r:t[1],g:t[2],b:t[3]};if(t=g.rgba.exec(e))return{r:t[1],g:t[2],b:t[3],a:t[4]};if(t=g.hsl.exec(e))return{h:t[1],s:t[2],l:t[3]};if(t=g.hsla.exec(e))return{h:t[1],s:t[2],l:t[3],a:t[4]};if(t=g.hsv.exec(e))return{h:t[1],s:t[2],v:t[3]};if(t=g.hsva.exec(e))return{h:t[1],s:t[2],v:t[3],a:t[4]};if(t=g.hex8.exec(e))return{r:d(t[1]),g:d(t[2]),b:d(t[3]),a:Ce(t[4]),format:a?"name":"hex8"};if(t=g.hex6.exec(e))return{r:d(t[1]),g:d(t[2]),b:d(t[3]),format:a?"name":"hex"};if(t=g.hex4.exec(e))return{r:d(t[1]+""+t[1]),g:d(t[2]+""+t[2]),b:d(t[3]+""+t[3]),a:Ce(t[4]+""+t[4]),format:a?"name":"hex8"};if(t=g.hex3.exec(e))return{r:d(t[1]+""+t[1]),g:d(t[2]+""+t[2]),b:d(t[3]+""+t[3]),format:a?"name":"hex"};return!1}(e));"object"==ce(e)&&(E(e.r)&&E(e.g)&&E(e.b)?(t=function(e,t,a){return{r:255*u(e,255),g:255*u(t,255),b:255*u(a,255)}}(e.r,e.g,e.b),s=!0,o="%"===String(e.r).substr(-1)?"prgb":"rgb"):E(e.h)&&E(e.s)&&E(e.v)?(n=p(e.s),r=p(e.v),t=function(e,t,a){e=6*u(e,360),t=u(t,100),a=u(a,100);var n=Math.floor(e),e=e-n,r=a*(1-t),i=a*(1-e*t),e=a*(1-(1-e)*t),t=n%6;return{r:255*[a,i,r,r,e,a][t],g:255*[e,a,a,i,r,r][t],b:255*[r,r,e,a,a,i][t]}}(e.h,n,r),s=!0,o="hsv"):E(e.h)&&E(e.s)&&E(e.l)&&(n=p(e.s),i=p(e.l),t=function(e,t,a){var n,r,i;function s(e,t,a){return a<0&&(a+=1),1>1)+720)%360;--t;)n.h=(n.h+r)%360,i.push(f(n));return i}function Ne(e,t){t=t||6;for(var e=f(e).toHsv(),a=e.h,n=e.s,r=e.v,i=[],s=1/t;t--;)i.push(f({h:a,s:n,v:r})),r=(r+s)%1;return i}f.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e=this.toRgb(),t=e.r/255,a=e.g/255,e=e.b/255,t=t<=.03928?t/12.92:Math.pow((.055+t)/1.055,2.4),a=a<=.03928?a/12.92:Math.pow((.055+a)/1.055,2.4),e=e<=.03928?e/12.92:Math.pow((.055+e)/1.055,2.4);return.2126*t+.7152*a+.0722*e},setAlpha:function(e){return this._a=ke(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=me(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=me(this._r,this._g,this._b),t=Math.round(360*e.h),a=Math.round(100*e.s),e=Math.round(100*e.v);return 1==this._a?"hsv("+t+", "+a+"%, "+e+"%)":"hsva("+t+", "+a+"%, "+e+"%, "+this._roundA+")"},toHsl:function(){var e=de(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=de(this._r,this._g,this._b),t=Math.round(360*e.h),a=Math.round(100*e.s),e=Math.round(100*e.l);return 1==this._a?"hsl("+t+", "+a+"%, "+e+"%)":"hsla("+t+", "+a+"%, "+e+"%, "+this._roundA+")"},toHex:function(e){return fe(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){var t=this._r,a=this._g,n=this._b,r=this._a;return t=[m(Math.round(t).toString(16)),m(Math.round(a).toString(16)),m(Math.round(n).toString(16)),m(Me(r))],e&&t[0].charAt(0)==t[0].charAt(1)&&t[1].charAt(0)==t[1].charAt(1)&&t[2].charAt(0)==t[2].charAt(1)&&t[3].charAt(0)==t[3].charAt(1)?t[0].charAt(0)+t[1].charAt(0)+t[2].charAt(0)+t[3].charAt(0):t.join("")},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(100*u(this._r,255))+"%",g:Math.round(100*u(this._g,255))+"%",b:Math.round(100*u(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*u(this._r,255))+"%, "+Math.round(100*u(this._g,255))+"%, "+Math.round(100*u(this._b,255))+"%)":"rgba("+Math.round(100*u(this._r,255))+"%, "+Math.round(100*u(this._g,255))+"%, "+Math.round(100*u(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&Le[fe(this._r,this._g,this._b,!0)]||!1},toFilter:function(e){var t="#"+pe(this._r,this._g,this._b,this._a),a=t;return"progid:DXImageTransform.Microsoft.gradient("+(this._gradientType?"GradientType = 1, ":"")+"startColorstr="+t+",endColorstr="+(a=e?"#"+pe((t=f(e))._r,t._g,t._b,t._a):a)+")"},toString:function(e){var t=!!e,a=(e=e||this._format,!1),n=this._a<1&&0<=this._a;return t||!n||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(a=this.toRgbString()),"prgb"===e&&(a=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(a=this.toHexString()),"hex3"===e&&(a=this.toHexString(!0)),"hex4"===e&&(a=this.toHex8String(!0)),"hex8"===e&&(a=this.toHex8String()),"name"===e&&(a=this.toName()),"hsl"===e&&(a=this.toHslString()),(a="hsv"===e?this.toHsvString():a)||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return f(this.toString())},_applyModification:function(e,t){e=e.apply(null,[this].concat([].slice.call(t)));return this._r=e._r,this._g=e._g,this._b=e._b,this.setAlpha(e._a),this},lighten:function(){return this._applyModification(_e,arguments)},brighten:function(){return this._applyModification(ve,arguments)},darken:function(){return this._applyModification(xe,arguments)},desaturate:function(){return this._applyModification(be,arguments)},saturate:function(){return this._applyModification(ge,arguments)},greyscale:function(){return this._applyModification(Ee,arguments)},spin:function(){return this._applyModification(ye,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(Ie,arguments)},complement:function(){return this._applyCombination(Re,arguments)},monochromatic:function(){return this._applyCombination(Ne,arguments)},splitcomplement:function(){return this._applyCombination(Se,arguments)},triad:function(){return this._applyCombination(we,[3])},tetrad:function(){return this._applyCombination(we,[4])}},f.fromRatio=function(e,t){if("object"==ce(e)){var a,n={};for(a in e)e.hasOwnProperty(a)&&(n[a]="a"===a?e[a]:p(e[a]));e=n}return f(e,t)},f.equals=function(e,t){return!(!e||!t)&&f(e).toRgbString()==f(t).toRgbString()},f.random=function(){return f.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},f.mix=function(e,t,a){a=0===a?0:a||50;e=f(e).toRgb(),t=f(t).toRgb(),a/=100;return f({r:(t.r-e.r)*a+e.r,g:(t.g-e.g)*a+e.g,b:(t.b-e.b)*a+e.b,a:(t.a-e.a)*a+e.a})},f.readability=function(e,t){e=f(e),t=f(t);return(Math.max(e.getLuminance(),t.getLuminance())+.05)/(Math.min(e.getLuminance(),t.getLuminance())+.05)},f.isReadable=function(e,t,a){var n=f.readability(e,t),r=!1,e=function(e){var t;t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase(),e=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA");"small"!==e&&"large"!==e&&(e="small");return{level:t,size:e}}(a);switch(e.level+e.size){case"AAsmall":case"AAAlarge":r=4.5<=n;break;case"AAlarge":r=3<=n;break;case"AAAsmall":r=7<=n}return r},f.mostReadable=function(e,t,a){for(var n,r=null,i=0,s=(a=a||{}).includeFallbackColors,o=a.level,l=a.size,c=0;ca[e]&&(a[e]=n)}return[t,a]}(e),r=e.beats[0].start,n=e.beats[e.beats.length-1].start+e.beats[e.beats.length-1].duration-r,u=r,h=n,d=t,m=a,{beats:r=(c=e).beats.map(e=>{var t=100*(e.start-u)/h,a=100*e.duration/h,n=Math.min(De+Te*e.playCount+(e.isPlaying?Be:0),Oe),n=R+n,r=v(t,n,x),i=v(t+a,n,x),s=v(t,R,x),o=v(t+a,R,x),l=function(e,t,a,n){e=e.remixedBeats[t.index].firstOverlappingSegment??null;return null!==e?function(t,a,n){var r=[];for(let e=0;e<3;e++){var i=(t.timbre[e+1]-a[e])/(n[e]-a[e]);r[e]=i}var e=f.fromRatio({r:r[1],g:r[2],b:r[0]});return e.toHexString()}(e,a,n):"#000"}(c,e,d,m),n=`M ${r.toString()} A ${n},${n} 0 0 0 ${i.toString()} L ${o.toString()} A ${R},${R} 0 0 1 `+s.toString();return{beat:e,percentFromStart:t,percentOfSong:a,outerArcStart:r,outerArcEnd:i,innerArcStart:s,innerArcEnd:o,drawCommand:n,color:l,activeColor:f(l).complement().saturate(100).toHexString()}}),edges:function(e,t){var a=[];for(const o of e)for(const l of o.beat.neighbours){var n=e[l.source.index],r=e[l.destination.index],i=_.getMiddlePoint(n.innerArcStart,n.innerArcEnd),s=_.getMiddlePoint(r.innerArcStart,r.innerArcEnd),n=_.getDistanceBetweenPoints(n.innerArcStart,n.innerArcEnd),r=_.getDistanceBetweenPoints(r.innerArcStart,r.innerArcEnd),n={edge:l,strokeWidth:Math.min(n,r),drawCommand:` M ${i.toString()} Q ${t},${t} `+s.toString(),color:o.color,activeColor:o.activeColor};a.push(n)}return a}(r,y)})}function je(e){return(0,c.useEffect)(()=>{var e=document.querySelector("svg path.is-active");null!==e&&(e=e,document.getElementById("#jukebox-graph")?.firstChild?.appendChild(e))}),0===e.state.beats.length?c.default.createElement("div",null,"Loading..."):(e=$e(e.state),c.default.createElement("svg",{id:"#jukebox-graph",viewBox:`0 0 ${x} `+x,className:ae["jukebox-graph"]},c.default.createElement("g",{transform:`scale(-1,1) translate(${-x}, 0) rotate(-90,${y},${y}) `},e.beats.map(e=>c.default.createElement(ie,{key:e.beat.index,drawData:e})),e.edges.map(e=>c.default.createElement(le,{key:e.edge.source.index+"-"+e.edge.destination.index,drawData:e})))))}var Pe,Fe,w,Ge={"settings-button":"SettingsButton-module__settings-button___gAdcv_eternalDjukebox"},He=a(r()),Xe=a(r()),Ue={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},ze=(Pe="Settings",Fe=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],(w=(0,Xe.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:a=2,absoluteStrokeWidth:n,className:r="",children:i,...s},o)=>(0,Xe.createElement)("svg",{ref:o,...Ue,width:t,height:t,stroke:e,strokeWidth:n?24*Number(a)/Number(t):a,className:["lucide","lucide-"+Pe.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),r].join(" "),...s},[...Fe.map(([e,t])=>(0,Xe.createElement)(e,t)),...Array.isArray(i)?i:[i]]))).displayName=""+Pe,w),qe={"settings-modal":"SettingsModal-module__settings-modal___rQEeB_eternalDjukebox","reset-button-container":"SettingsModal-module__reset-button-container___rD2SS_eternalDjukebox"},S=a(r()),I=class{maxBranchDistance=I.defaultBranchDistance;useDynamicBranchDistance=!1;minRandomBranchChance=I.defaultMinRandomBranchChance;maxRandomBranchChance=I.defaultMaxRandomBranchChance;randomBranchChanceDelta=I.defaultRandomBranchChanceDelta;maxJukeboxPlayTime=0;addLastEdge=!0;justBackwards=!1;justLongBranches=!1;removeSequentialBranches=!1;alwaysFollowLastBranch=!0;static fromPartial(e){var t=new I;return t.maxBranchDistance=e.maxBranchDistance,t.useDynamicBranchDistance=e.useDynamicBranchDistance,t.minRandomBranchChance=e.minRandomBranchChance,t.maxRandomBranchChance=e.maxRandomBranchChance,t.randomBranchChanceDelta=e.randomBranchChanceDelta,t.addLastEdge=e.addLastEdge,t.justBackwards=e.justBackwards,t.justLongBranches=e.justLongBranches,t.removeSequentialBranches=e.removeSequentialBranches,t.alwaysFollowLastBranch=e.alwaysFollowLastBranch,t.maxJukeboxPlayTime=e.maxJukeboxPlayTime,t}toPartial(){return{maxBranchDistance:this.maxBranchDistance,useDynamicBranchDistance:this.useDynamicBranchDistance,minRandomBranchChance:this.minRandomBranchChance,maxRandomBranchChance:this.maxRandomBranchChance,randomBranchChanceDelta:this.randomBranchChanceDelta,addLastEdge:this.addLastEdge,justBackwards:this.justBackwards,justLongBranches:this.justLongBranches,removeSequentialBranches:this.removeSequentialBranches,alwaysFollowLastBranch:this.alwaysFollowLastBranch,maxJukeboxPlayTime:this.maxJukeboxPlayTime}}},N=I,Ve=(n(N,"minBeatsBeforeBranching",5),n(N,"rangeMinBranchDistance",2),n(N,"rangeMaxBranchDistance",80),n(N,"defaultBranchDistance",30),n(N,"defaultMinRandomBranchChance",.18),n(N,"defaultMaxRandomBranchChance",.5),n(N,"minRandomBranchChanceDelta",0),n(N,"maxRandomBranchChanceDelta",.2),n(N,"defaultRandomBranchChanceDelta",.018),class{static get settings(){return N.fromPartial(Ve.storedSettings)}static set settings(e){Ve.storedSettings=e.toPartial()}static get storedSettings(){var e=Spicetify.LocalStorage.get(this.settingId);return null==e?(new N).toPartial():JSON.parse(e)}static set storedSettings(e){Spicetify.LocalStorage.set(this.settingId,JSON.stringify(e))}}),Je=Ve;n(Je,"settingId","jukebox:settings");var We="MultiRangeSlider-module__container___N3Ds6_eternalDjukebox",Ye="MultiRangeSlider-module__slider___o7chs_eternalDjukebox",Ze="MultiRangeSlider-module__slider__track___Hkmv4_eternalDjukebox",Qe="MultiRangeSlider-module__slider__range___EjOl1_eternalDjukebox",Ke="MultiRangeSlider-module__thumb___CwlUJ_eternalDjukebox",et="MultiRangeSlider-module__thumb--zindex-3___5wXiP_eternalDjukebox",tt="MultiRangeSlider-module__thumb--zindex-4___pt5k8_eternalDjukebox",at="MultiRangeSlider-module__thumb--zindex-5___uBskE_eternalDjukebox",A=a(r());function nt(t){const[a,n]=(0,A.useState)(t.minDefaultValue),[r,i]=(0,A.useState)(t.maxDefaultValue),s=(0,A.useRef)(null),o=(0,A.useRef)(null),l=(0,A.useRef)(null),c=(0,A.useCallback)(e=>Math.round((e-t.min)/(t.max-t.min)*100),[t.min,t.max]);return(0,A.useEffect)(()=>{var e,t;o.current&&(e=c(a),t=c(o.current.valueAsNumber),l.current)&&(l.current.style.left=e+"%",l.current.style.width=t-e+"%")},[a,c]),(0,A.useEffect)(()=>{var e,t;s.current&&(e=c(s.current.valueAsNumber),t=c(r),l.current)&&(l.current.style.width=t-e+"%")},[r,c]),(0,A.useEffect)(()=>{t.onChange({min:a,max:r})},[a,r,t.onChange]),A.default.createElement("div",{className:We},A.default.createElement("input",{type:"range",min:t.min,max:t.max,value:a,ref:s,onChange:e=>{var t=Math.min(e.target.valueAsNumber,r-1);n(t),e.target.value=t.toString()},className:Ke+" "+et+(a>t.max-10*t.max/100?" "+at:"")}),A.default.createElement("input",{type:"range",min:t.min,max:t.max,value:r,ref:o,onChange:e=>{var t=Math.max(e.target.valueAsNumber,a+1);i(t),e.target.value=t.toString()},className:Ke+" "+tt}),A.default.createElement("div",{className:Ye},A.default.createElement("div",{className:Ze}),A.default.createElement("div",{ref:l,className:Qe})))}var rt=a(r());function L(e){const{elementType:t="span",children:a,...n}=e;let r;switch(t){case"h1":r=Spicetify.ReactComponent.TextComponent.h1;break;case"h2":r=Spicetify.ReactComponent.TextComponent.h2;break;case"h3":r=Spicetify.ReactComponent.TextComponent.h3;break;case"h4":r=Spicetify.ReactComponent.TextComponent.h4;break;case"h5":r=Spicetify.ReactComponent.TextComponent.h5;break;case"h6":r=Spicetify.ReactComponent.TextComponent.h6;break;case"li":r=Spicetify.ReactComponent.TextComponent.li;break;case"p":r=Spicetify.ReactComponent.TextComponent.p;break;case"small":r=Spicetify.ReactComponent.TextComponent.small;break;case"span":r=Spicetify.ReactComponent.TextComponent.span;break;default:r=Spicetify.ReactComponent.TextComponent}return rt.default.createElement(r,{...n,style:e.style},a)}var k=a(r());function it(t){return k.default.createElement("label",{className:"x-toggle-wrapper"},k.default.createElement("input",{id:t.inputId,className:"x-toggle-input",type:"checkbox",checked:t.value,onChange:e=>{t.onChange(!t.value)}}),k.default.createElement("span",{className:"x-toggle-indicatorWrapper"},k.default.createElement("span",{className:"x-toggle-indicator"})))}var st="CheckboxContainer-module__checkbox-container___H9j0B_eternalDjukebox",M=a(r());function C(e){return M.default.createElement("div",{className:st},M.default.createElement("div",null,M.default.createElement(L,{elementType:"h3",variant:"violaBold"},e.label),M.default.createElement(L,{elementType:"small",semanticColor:"textSubdued"},e.subLabel)),M.default.createElement(it,{inputId:e.inputId,value:e.value,onChange:e.onChange}))}var ot="SliderContainer-module__range-subtext___rvp7-_eternalDjukebox",D=a(r());function lt(e){return D.default.createElement("div",{style:{width:e.containerWidth,...e.style}},D.default.createElement("div",null,D.default.createElement(L,{elementType:"h3",variant:"violaBold"},e.label),D.default.createElement(L,{style:{display:"block"},elementType:"small",semanticColor:"textSubdued",paddingBottom:"8px"},e.subLabel)),e.slider,D.default.createElement("div",{className:ot},D.default.createElement(L,{elementType:"small",semanticColor:"textSubdued"},e.minLabel),D.default.createElement(L,{elementType:"small",semanticColor:"textSubdued"},e.maxLabel)))}function ct(){const[e,n]=(0,S.useState)(Je.storedSettings);function a(t,a){if(typeof a!=typeof e[t])throw new Error("Value type does not match field type");e[t]!==a&&n(e=>({...e,[t]:a}))}return(0,S.useEffect)(()=>{const n=new MutationObserver(e=>{let t=!1;for(const a of e)a.removedNodes.forEach(e=>{"GENERIC-MODAL"===e.nodeName&&(t=!0)});t&&(window.jukebox.reloadSettings().catch(console.error),n.disconnect())});n.observe(document.getElementsByTagName("body")[0],{childList:!0})},[]),(0,S.useEffect)(()=>{Je.storedSettings=e},[e]),S.default.createElement("div",{className:qe["settings-modal"]},S.default.createElement(lt,{label:"Branch Similarity Threshold: "+e.maxBranchDistance,subLabel:"The maximum similarity distance allowed between two beats in order to create a branch.",slider:S.default.createElement("input",{id:"jukebox.settings.maxBranchDistance",type:"range",min:N.rangeMinBranchDistance,max:N.rangeMaxBranchDistance,value:e.maxBranchDistance,step:1,onChange:e=>{a("maxBranchDistance",e.target.valueAsNumber)},disabled:e.useDynamicBranchDistance}),minLabel:"Higher quality",maxLabel:"More branches",style:{opacity:e.useDynamicBranchDistance?.5:1}}),S.default.createElement(C,{inputId:"jukebox.settings.useDynamicBranchDistance",label:"Use dynamic branch distance",subLabel:"If checked, will calculate the branch similarity threshold automatically to try to get as many quality branch as possible.",value:e.useDynamicBranchDistance,onChange:e=>{a("useDynamicBranchDistance",e)}}),S.default.createElement(lt,{label:`Branch Probability Range: ${Math.round(100*e.minRandomBranchChance)}% to ${Math.round(100*e.maxRandomBranchChance)}%`,subLabel:"The minimum and maximum chance for a branch to be selected each beat.",slider:S.default.createElement(nt,{min:0,max:100,minDefaultValue:100*e.minRandomBranchChance,maxDefaultValue:100*e.maxRandomBranchChance,onChange:({min:e,max:t})=>{a("minRandomBranchChance",e/100),a("maxRandomBranchChance",t/100)}}),minLabel:"Low",maxLabel:"High"}),S.default.createElement(lt,{label:`Branch Probability Ramp-up Speed: ${Math.round(100*e.randomBranchChanceDelta)}%`,subLabel:"Controls how fast the chance to select a branch will increase.",slider:S.default.createElement("input",{id:"jukebox.settings.randomBranchChanceDelta",type:"range",min:0,max:100,value:100*e.randomBranchChanceDelta,step:2,onChange:e=>{a("randomBranchChanceDelta",e.target.valueAsNumber/100)}}),minLabel:"Slow",maxLabel:"Fast"}),S.default.createElement(C,{inputId:"jukebox.settings.addLastEdge",label:"Loop extension optimization",subLabel:"If checked, optimize by adding a good last edge.",value:e.addLastEdge,onChange:e=>{a("addLastEdge",e)}}),S.default.createElement(C,{inputId:"jukebox.settings.justBackwards",label:"Allow only backward branches",subLabel:"If checked, only add backward branches.",value:e.justBackwards,onChange:e=>{a("justBackwards",e)}}),S.default.createElement(C,{inputId:"jukebox.settings.justLongBranches",label:"Allow only long branches",subLabel:"If checked, only add long branches.",value:e.justLongBranches,onChange:e=>{a("justLongBranches",e)}}),S.default.createElement(C,{inputId:"jukebox.settings.removeSequentialBranches",label:"Remove sequential branches",subLabel:"If checked, remove consecutive branches of the same distance.",value:e.removeSequentialBranches,onChange:e=>{a("removeSequentialBranches",e)}}),S.default.createElement(C,{inputId:"jukebox.settings.alwaysFollowLastBranch",label:"Always follow the last branch",subLabel:"If checked, always follow the last possible branch. Note that setting this to false will result in songs not looping indefinitely.",value:e.alwaysFollowLastBranch,onChange:e=>{a("alwaysFollowLastBranch",e)}}),S.default.createElement("div",null,S.default.createElement(L,{elementType:"h3",variant:"violaBold"},"Maximum play time for a song, in seconds"),S.default.createElement(L,{elementType:"p",semanticColor:"textSubdued"},"After the listen time reaches this value, the jukebox will stop branching and continue to the next song where it will activate again. Set this to 0 for no limit."),S.default.createElement("input",{type:"number",className:"x-settings-input",style:{marginTop:"1rem"},id:"jukebox.settings.maxJukeboxPlayTime",value:e.maxJukeboxPlayTime/1e3,onChange:e=>{a("maxJukeboxPlayTime",1e3*e.target.valueAsNumber)}})),S.default.createElement("div",{className:qe["reset-button-container"]},S.default.createElement(Spicetify.ReactComponent.ButtonPrimary,{buttonSize:"sm",onClick:function(){n((new N).toPartial())}},"Reset")))}function ut(){return He.default.createElement("button",{className:Ge["settings-button"],onClick:e=>{Spicetify.PopupModal.display({title:"Jukebox settings",content:He.default.createElement(ct),isLarge:!0})},style:{height:"50px",width:"50px",borderRadius:"15px"}},He.default.createElement(ze,{stroke:"currentColor",size:20}))}function ht(){const[e,t]=(0,l.useState)({trackName:"",artistName:""}),[a,n]=(0,l.useState)({beats:[],remixedBeats:[],segments:[]}),[r,i]=(0,l.useState)({beatsPlayed:0,listenTime:"0",currentRandomBranchChance:0});return(0,l.useEffect)(()=>{const e=window.jukebox.songState$.subscribe(e=>{t({trackName:e?.track?.metadata?.title??"",artistName:e?.track?.metadata?.artist_name??""}),n({beats:e?.graph.beats??[],segments:e?.analysis.segments??[],remixedBeats:e?.analysis.beats??[]})});return()=>{e.unsubscribe()}},[]),(0,l.useEffect)(()=>{const e=window.jukebox.statsChanged$.subscribe(e=>{var t;i({beatsPlayed:e.beatsPlayed,currentRandomBranchChance:100*e.currentRandomBranchChance,listenTime:(e=e.listenTime,t=Math.floor(e/6e4),60===(e=Math.floor(e%6e4/1e3))?t+1+":00":t+":"+(e<10?"0":"")+e)})});return()=>{e.unsubscribe()}},[]),l.default.createElement("div",{className:o.container},l.default.createElement("div",{className:o.title},l.default.createElement("h1",null,e.trackName),l.default.createElement("p",null,"by"),l.default.createElement("h2",null,e.artistName)),l.default.createElement("div",{className:o.button},l.default.createElement(ut,null)),l.default.createElement("div",{className:o.content},l.default.createElement(je,{state:a})),l.default.createElement("div",{className:o.stats},l.default.createElement("span",null,"Total Beats: "+r.beatsPlayed),l.default.createElement("span",null,`Current branch change: ${Math.round(r.currentRandomBranchChance)}%`),l.default.createElement("span",null,"Listen Time: "+r.listenTime)))}var dt="1.0.0-beta.3",mt=a(W()),ft=a(t());var pt=async function(t,a,e){for(;!Spicetify?.PopupModal||!Spicetify?.LocalStorage;)await new Promise(e=>setTimeout(e,100));var n,t=`spcr-whats-new_${t}-version`,r=Spicetify.LocalStorage.get(t)??"";try{(0,mt.default)(a,r)&&(Spicetify.LocalStorage.set(t,a),n={...e,content:function(e){var t=document.createElement("div"),a=(t.setAttribute("id","whats-new-content-wrapper"),document.createElement("style"));return a.textContent=` #whats-new-content-wrapper ul, #whats-new-content-wrapper ol { list-style: inherit; margin-left: 1em; } `,ft.default.render(e,t),t.appendChild(a),t}(e.content)},Spicetify.PopupModal.display(n))}catch(e){Spicetify.LocalStorage.set(t,a)}},bt=['Fix "No analysis available for this track".'],T=a(r(),1),gt=(()=>"undefined"==typeof window?T.useEffect:T.useLayoutEffect)(),Et=e=>e[1]?.next?e[1]:{next:e[1],error:e[2],complete:e[3]};function _t(e,t,a,n){{var r=T.useEffect,i=[e,t,a,n];const s=(0,T.useRef)(i),o=(0,T.useRef)(),l=(0,T.useRef)();gt(()=>{s.current=i,o.current=Et(i)}),r(()=>{const t=s.current[0],e=(o.current||(o.current=Et(s.current)),t.subscribe({next:e=>{t===s.current[0]&&o.current.next?.(e)},error:e=>{t===s.current[0]&&(o.current.error?o.current:console).error(e)},complete:()=>{t===s.current[0]&&o.current.complete?.()}}));return l.current=e,()=>{e.unsubscribe()}},[i[0]]),l}}var B,vt=function(){var[e,t]=(0,s.useState)(null);return _t(window.jukebox.songState$,t),(0,s.useEffect)(()=>{!async function(){await pt("eternal-jukebox",dt,{title:"New in v"+dt,content:s.default.createElement("p",null,s.default.createElement("ul",null,bt.map(e=>s.default.createElement("li",{key:e},e)))),isLarge:!0})}()},[]),window.jukebox.isEnabled?null!==e?s.default.createElement("div",{className:K},s.default.createElement(ht,null)):s.default.createElement("div",{className:ee},s.default.createElement("div",{className:te},s.default.createElement(ut,null),s.default.createElement("div",null,s.default.createElement("h1",null,"Loading...")))):s.default.createElement("div",{className:ee},s.default.createElement("div",{className:te},s.default.createElement(ut,null),s.default.createElement("div",null,s.default.createElement("h1",null,"Jukebox not enabled."))))},xt=a(r());return B=Y,G(i({},"__esModule",{value:!0}),B)})();const render=()=>eternalDjukebox.default();