var marketplace=(()=>{var D,$=Object.create,F=Object.defineProperty,M=Object.defineProperties,B=Object.getOwnPropertyDescriptor,U=Object.getOwnPropertyDescriptors,H=Object.getOwnPropertyNames,K=Object.getOwnPropertySymbols,G=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable,z=(e,t,n)=>t in e?F(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,s=(e,t)=>{for(var n in t=t||{})V.call(t,n)&&z(e,n,t[n]);if(K)for(var n of K(t))q.call(t,n)&&z(e,n,t[n]);return e},J=(e,t)=>M(e,U(t)),y=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,t)=>("undefined"!=typeof require?require:e)[t]}):e)(function(e){if("react"===e)return Spicetify.React;if("react-dom"===e)return Spicetify.ReactDOM;if("undefined"!=typeof require)return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')}),e=(e,t)=>function(){return t||(0,e[H(e)[0]])((t={exports:{}}).exports,t),t.exports},W=(t,n,r,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let e of H(n))V.call(t,e)||e===r||F(t,e,{get:()=>n[e],enumerable:!(a=B(n,e))||a.enumerable});return t},t=(e,t,n)=>(n=null!=e?$(G(e)):{},W(!t&&e&&e.__esModule?n:F(n,"default",{value:e,enumerable:!0}),e)),Y=e({"../../node_modules/semver/internal/constants.js"(e,t){var n=Number.MAX_SAFE_INTEGER||9007199254740991;t.exports={SEMVER_SPEC_VERSION:"2.0.0",MAX_LENGTH:256,MAX_SAFE_INTEGER:n,MAX_SAFE_COMPONENT_LENGTH:16}}}),X=e({"../../node_modules/semver/internal/debug.js"(e,t){var n="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};t.exports=n}}),Q=e({"../../node_modules/semver/internal/re.js"(e,t){var n=Y()["MAX_SAFE_COMPONENT_LENGTH"],a=X(),o=(e=t.exports={}).re=[],i=e.src=[],s=e.t={},l=0,t=(e,t,n)=>{var r=l++;a(e,r,t),s[e]=r,i[r]=t,o[r]=new RegExp(t,n?"g":void 0)};t("NUMERICIDENTIFIER","0|[1-9]\\d*"),t("NUMERICIDENTIFIERLOOSE","[0-9]+"),t("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),t("MAINVERSION",`(${i[s.NUMERICIDENTIFIER]})\\.(${i[s.NUMERICIDENTIFIER]})\\.(${i[s.NUMERICIDENTIFIER]})`),t("MAINVERSIONLOOSE",`(${i[s.NUMERICIDENTIFIERLOOSE]})\\.(${i[s.NUMERICIDENTIFIERLOOSE]})\\.(${i[s.NUMERICIDENTIFIERLOOSE]})`),t("PRERELEASEIDENTIFIER",`(?:${i[s.NUMERICIDENTIFIER]}|${i[s.NONNUMERICIDENTIFIER]})`),t("PRERELEASEIDENTIFIERLOOSE",`(?:${i[s.NUMERICIDENTIFIERLOOSE]}|${i[s.NONNUMERICIDENTIFIER]})`),t("PRERELEASE",`(?:-(${i[s.PRERELEASEIDENTIFIER]}(?:\\.${i[s.PRERELEASEIDENTIFIER]})*))`),t("PRERELEASELOOSE",`(?:-?(${i[s.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${i[s.PRERELEASEIDENTIFIERLOOSE]})*))`),t("BUILDIDENTIFIER","[0-9A-Za-z-]+"),t("BUILD",`(?:\\+(${i[s.BUILDIDENTIFIER]}(?:\\.${i[s.BUILDIDENTIFIER]})*))`),t("FULLPLAIN",`v?${i[s.MAINVERSION]}${i[s.PRERELEASE]}?${i[s.BUILD]}?`),t("FULL",`^${i[s.FULLPLAIN]}$`),t("LOOSEPLAIN",`[v=\\s]*${i[s.MAINVERSIONLOOSE]}${i[s.PRERELEASELOOSE]}?${i[s.BUILD]}?`),t("LOOSE",`^${i[s.LOOSEPLAIN]}$`),t("GTLT","((?:<|>)?=?)"),t("XRANGEIDENTIFIERLOOSE",i[s.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*"),t("XRANGEIDENTIFIER",i[s.NUMERICIDENTIFIER]+"|x|X|\\*"),t("XRANGEPLAIN",`[v=\\s]*(${i[s.XRANGEIDENTIFIER]})(?:\\.(${i[s.XRANGEIDENTIFIER]})(?:\\.(${i[s.XRANGEIDENTIFIER]})(?:${i[s.PRERELEASE]})?${i[s.BUILD]}?)?)?`),t("XRANGEPLAINLOOSE",`[v=\\s]*(${i[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[s.XRANGEIDENTIFIERLOOSE]})(?:${i[s.PRERELEASELOOSE]})?${i[s.BUILD]}?)?)?`),t("XRANGE",`^${i[s.GTLT]}\\s*${i[s.XRANGEPLAIN]}$`),t("XRANGELOOSE",`^${i[s.GTLT]}\\s*${i[s.XRANGEPLAINLOOSE]}$`),t("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),t("COERCERTL",i[s.COERCE],!0),t("LONETILDE","(?:~>?)"),t("TILDETRIM",`(\\s*)${i[s.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",t("TILDE",`^${i[s.LONETILDE]}${i[s.XRANGEPLAIN]}$`),t("TILDELOOSE",`^${i[s.LONETILDE]}${i[s.XRANGEPLAINLOOSE]}$`),t("LONECARET","(?:\\^)"),t("CARETTRIM",`(\\s*)${i[s.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",t("CARET",`^${i[s.LONECARET]}${i[s.XRANGEPLAIN]}$`),t("CARETLOOSE",`^${i[s.LONECARET]}${i[s.XRANGEPLAINLOOSE]}$`),t("COMPARATORLOOSE",`^${i[s.GTLT]}\\s*(${i[s.LOOSEPLAIN]})$|^$`),t("COMPARATOR",`^${i[s.GTLT]}\\s*(${i[s.FULLPLAIN]})$|^$`),t("COMPARATORTRIM",`(\\s*)${i[s.GTLT]}\\s*(${i[s.LOOSEPLAIN]}|${i[s.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",t("HYPHENRANGE",`^\\s*(${i[s.XRANGEPLAIN]})\\s+-\\s+(${i[s.XRANGEPLAIN]})\\s*$`),t("HYPHENRANGELOOSE",`^\\s*(${i[s.XRANGEPLAINLOOSE]})\\s+-\\s+(${i[s.XRANGEPLAINLOOSE]})\\s*$`),t("STAR","(<|>)?=?\\s*\\*"),t("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),t("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),Z=e({"../../node_modules/semver/internal/parse-options.js"(e,t){var n=["includePrerelease","loose","rtl"];t.exports=t=>t?"object"!=typeof t?{loose:!0}:n.filter(e=>t[e]).reduce((e,t)=>(e[t]=!0,e),{}):{}}}),ee=e({"../../node_modules/semver/internal/identifiers.js"(e,t){var a=/^[0-9]+$/,n=(e,t)=>{var n=a.test(e),r=a.test(t);return n&&r&&(e=+e,t=+t),e===t?0:n&&!r||(!r||n)&&en(t,e)}}}),I=e({"../../node_modules/semver/classes/semver.js"(e,t){var a=X(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:o}=Y(),{re:i,t:s}=Q(),l=Z(),c=ee()["compareIdentifiers"],u=class{constructor(e,t){if(t=l(t),e instanceof u){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>r)throw new TypeError(`version is longer than ${r} characters`);a("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=e.trim().match(t.loose?i[s.LOOSE]:i[s.FULL]);if(!n)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(e=>{if(/^[0-9]+$/.test(e)){var t=+e;if(0<=t&&t{if(t=s(t),e instanceof i)return e;if("string"!=typeof e)return null;if(e.length>r)return null;const n=t.loose?a[o.LOOSE]:a[o.FULL];if(!n.test(e))return null;try{return new i(e,t)}catch(e){return null}}}}),ne=e({"../../node_modules/semver/functions/valid.js"(e,t){var n=te();t.exports=(e,t)=>{e=n(e,t);return e?e.version:null}}}),re=e({"../../node_modules/semver/functions/clean.js"(e,t){var n=te();t.exports=(e,t)=>{e=n(e.trim().replace(/^[=v]+/,""),t);return e?e.version:null}}}),ae=e({"../../node_modules/semver/functions/inc.js"(e,t){var a=I();t.exports=(e,t,n,r)=>{"string"==typeof n&&(r=n,n=void 0);try{return new a(e instanceof a?e.version:e,n).inc(t,r).version}catch(e){return null}}}}),a=e({"../../node_modules/semver/functions/compare.js"(e,t){var r=I();t.exports=(e,t,n)=>new r(e,n).compare(new r(t,n))}}),oe=e({"../../node_modules/semver/functions/eq.js"(e,t){var r=a();t.exports=(e,t,n)=>0===r(e,t,n)}}),ie=e({"../../node_modules/semver/functions/diff.js"(e,t){var i=te(),s=oe();t.exports=(e,t)=>{if(s(e,t))return null;var n=i(e),r=i(t),e=n.prerelease.length||r.prerelease.length,a=e?"pre":"",t=e?"prerelease":"";for(const o in n)if(("major"===o||"minor"===o||"patch"===o)&&n[o]!==r[o])return a+o;return t}}}),se=e({"../../node_modules/semver/functions/major.js"(e,t){var n=I();t.exports=(e,t)=>new n(e,t).major}}),le=e({"../../node_modules/semver/functions/minor.js"(e,t){var n=I();t.exports=(e,t)=>new n(e,t).minor}}),ce=e({"../../node_modules/semver/functions/patch.js"(e,t){var n=I();t.exports=(e,t)=>new n(e,t).patch}}),ue=e({"../../node_modules/semver/functions/prerelease.js"(e,t){var n=te();t.exports=(e,t)=>{e=n(e,t);return e&&e.prerelease.length?e.prerelease:null}}}),pe=e({"../../node_modules/semver/functions/rcompare.js"(e,t){var r=a();t.exports=(e,t,n)=>r(t,e,n)}}),de=e({"../../node_modules/semver/functions/compare-loose.js"(e,t){var n=a();t.exports=(e,t)=>n(e,t,!0)}}),he=e({"../../node_modules/semver/functions/compare-build.js"(e,t){var a=I();t.exports=(e,t,n)=>{const r=new a(e,n);e=new a(t,n);return r.compare(e)||r.compareBuild(e)}}}),fe=e({"../../node_modules/semver/functions/sort.js"(e,t){var r=he();t.exports=(e,n)=>e.sort((e,t)=>r(e,t,n))}}),me=e({"../../node_modules/semver/functions/rsort.js"(e,t){var r=he();t.exports=(e,n)=>e.sort((e,t)=>r(t,e,n))}}),ge=e({"../../node_modules/semver/functions/gt.js"(e,t){var r=a();t.exports=(e,t,n)=>0r(e,t,n)<0}}),ye=e({"../../node_modules/semver/functions/neq.js"(e,t){var r=a();t.exports=(e,t,n)=>0!==r(e,t,n)}}),be=e({"../../node_modules/semver/functions/gte.js"(e,t){var r=a();t.exports=(e,t,n)=>0<=r(e,t,n)}}),Se=e({"../../node_modules/semver/functions/lte.js"(e,t){var r=a();t.exports=(e,t,n)=>r(e,t,n)<=0}}),we=e({"../../node_modules/semver/functions/cmp.js"(e,t){var a=oe(),o=ye(),i=ge(),s=be(),l=ve(),c=Se();t.exports=(e,t,n,r)=>{switch(t){case"===":return(e="object"==typeof e?e.version:e)===(n="object"==typeof n?n.version:n);case"!==":return(e="object"==typeof e?e.version:e)!==(n="object"==typeof n?n.version:n);case"":case"=":case"==":return a(e,n,r);case"!=":return o(e,n,r);case">":return i(e,n,r);case">=":return s(e,n,r);case"<":return l(e,n,r);case"<=":return c(e,n,r);default:throw new TypeError("Invalid operator: "+t)}}}}),Ee=e({"../../node_modules/semver/functions/coerce.js"(e,t){var a=I(),o=te(),{re:i,t:s}=Q();t.exports=(e,t)=>{if(e instanceof a)return e;if("string"!=typeof(e="number"==typeof e?String(e):e))return null;let n=null;if((t=t||{}).rtl){for(var r;(r=i[s.COERCERTL].exec(e))&&(!n||n.index+n[0].length!==e.length);)n&&r.index+r[0].length===n.index+n[0].length||(n=r),i[s.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;i[s.COERCERTL].lastIndex=-1}else n=e.match(i[s.COERCE]);return null===n?null:o(`${n[2]}.${n[3]||"0"}.`+(n[4]||"0"),t)}}}),ke=e({"../../node_modules/yallist/iterator.js"(e,t){"use strict";t.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}}}),Oe=e({"../../node_modules/yallist/yallist.js"(e,t){"use strict";function o(e){var t=this;if((t=t instanceof o?t:new o).tail=null,t.head=null,t.length=0,e&&"function"==typeof e.forEach)e.forEach(function(e){t.push(e)});else if(0this.length&&(t=this.length);for(var r=0,a=this.head;null!==a&&rthis.length&&(t=this.length);for(var r=this.length,a=this.tail;null!==a&&tthis.length?this.length-1:e)<0&&(e=this.length+e);for(var r=0,a=this.head;null!==a&&r1,f=(e,t,n)=>{const r=e[h].get(t);if(r){t=r.value;if(m(e,t)){if(v(e,r),!e[o])return}else n&&(e[a]&&(r.value.now=Date.now()),e[d].unshiftNode(r));return t.value}},m=(e,t)=>{var n;return!(!t||!t.maxAge&&!e[c])&&(n=Date.now()-t.now,t.maxAge?n>t.maxAge:e[c]&&n>e[c])},g=t=>{if(t[s]>t[i])for(let e=t[d].tail;t[s]>t[i]&&null!==e;){var n=e.prev;v(t,e),e=n}},v=(e,t)=>{var n;t&&(n=t.value,e[u]&&e[u](n.key,n.value),e[s]-=n.length,e[h].delete(n.key),e[d].removeNode(t))},y=class{constructor(e,t,n,r,a){this.key=e,this.value=t,this.length=n,this.now=r,this.maxAge=a||0}},b=(e,t,n,r)=>{let a=n.value;m(e,a)&&(v(e,n),e[o]||(a=void 0)),a&&t.call(r,a.value,a.key,e)};t.exports=class{constructor(e){if((e=(e="number"==typeof e?{max:e}:e)||{}).max&&("number"!=typeof e.max||e.max<0))throw new TypeError("max must be a non-negative number");this[i]=e.max||1/0;var t=e.length||r;if(this[l]="function"!=typeof t?r:t,this[o]=e.stale||!1,e.maxAge&&"number"!=typeof e.maxAge)throw new TypeError("maxAge must be a number");this[c]=e.maxAge||0,this[u]=e.dispose,this[p]=e.noDisposeOnSet||!1,this[a]=e.updateAgeOnGet||!1,this.reset()}set max(e){if("number"!=typeof e||e<0)throw new TypeError("max must be a non-negative number");this[i]=e||1/0,g(this)}get max(){return this[i]}set allowStale(e){this[o]=!!e}get allowStale(){return this[o]}set maxAge(e){if("number"!=typeof e)throw new TypeError("maxAge must be a non-negative number");this[c]=e,g(this)}get maxAge(){return this[c]}set lengthCalculator(e){(e="function"!=typeof e?r:e)!==this[l]&&(this[l]=e,this[s]=0,this[d].forEach(e=>{e.length=this[l](e.value,e.key),this[s]+=e.length})),g(this)}get lengthCalculator(){return this[l]}get length(){return this[s]}get itemCount(){return this[d].length}rforEach(t,n){n=n||this;for(let e=this[d].tail;null!==e;){var r=e.prev;b(this,t,e,n),e=r}}forEach(t,n){n=n||this;for(let e=this[d].head;null!==e;){var r=e.next;b(this,t,e,n),e=r}}keys(){return this[d].toArray().map(e=>e.key)}values(){return this[d].toArray().map(e=>e.value)}reset(){this[u]&&this[d]&&this[d].length&&this[d].forEach(e=>this[u](e.key,e.value)),this[h]=new Map,this[d]=new n,this[s]=0}dump(){return this[d].map(e=>!m(this,e)&&{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[d]}set(e,t,n){if((n=n||this[c])&&"number"!=typeof n)throw new TypeError("maxAge must be a number");var r=n?Date.now():0,a=this[l](t,e);if(this[h].has(e)){if(a>this[i])return v(this,this[h].get(e)),!1;const o=this[h].get(e).value;this[u]&&!this[p]&&this[u](e,o.value),o.now=r,o.maxAge=n,o.value=t,this[s]+=a-o.length,o.length=a,this.get(e)}else{if((a=new y(e,t,a,r,n)).length>this[i])return this[u]&&this[u](e,t),!1;this[s]+=a.length,this[d].unshift(a),this[h].set(e,this[d].head)}return g(this),!0}has(e){return!!this[h].has(e)&&(e=this[h].get(e).value,!m(this,e))}get(e){return f(this,e,!0)}peek(e){return f(this,e,!1)}pop(){var e=this[d].tail;return e?(v(this,e),e.value):null}del(e){v(this,this[h].get(e))}load(t){this.reset();var n=Date.now();for(let e=t.length-1;0<=e;e--){var r=t[e],a=r.e||0;0===a?this.set(r.k,r.v):0<(a=a-n)&&this.set(r.k,r.v,a)}}prune(){this[h].forEach((e,t)=>f(this,t,!1))}}}}),p=e({"../../node_modules/semver/classes/range.js"(e,t){var r=class{constructor(e,t){if(t=a(t),e instanceof r)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new r(e.raw,t);if(e instanceof l)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split("||").map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);if(1!m(e[0])),0===this.set.length)this.set=[t];else if(1e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();var t=`parseRange:${Object.keys(this.options).join(",")}:`+e,n=s.get(t);if(n)return n;var n=this.options.loose,r=n?d[h.HYPHENRANGELOOSE]:d[h.HYPHENRANGE];e=e.replace(r,C(this.options.includePrerelease)),p("hyphen replace",e),e=e.replace(d[h.COMPARATORTRIM],c),p("comparator trim",e);let a=(e=(e=(e=e.replace(d[h.TILDETRIM],u)).replace(d[h.CARETTRIM],f)).split(/\s+/).join(" ")).split(" ").map(e=>g(e,this.options)).join(" ").split(/\s+/).map(e=>x(e,this.options));n&&(a=a.filter(e=>(p("loose invalid filter",e,this.options),!!e.match(d[h.COMPARATORLOOSE])))),p("range list",a);const o=new Map;for(const i of a.map(e=>new l(e,this.options))){if(m(i))return[i];o.set(i.value,i)}1i(t,n)&&e.set.some(e=>i(e,n)&&t.every(t=>e.every(e=>t.intersects(e,n)))));throw new TypeError("a Range is required")}test(t){if(t){if("string"==typeof t)try{t=new n(t,this.options)}catch(e){return!1}for(let e=0;e"<0.0.0-0"===e.value,o=e=>""===e.value,i=(e,t)=>{let n=!0;const r=e.slice();let a=r.pop();for(;n&&r.length;)n=r.every(e=>a.intersects(e,t)),a=r.pop();return n},g=(e,t)=>(p("comp",e,t),e=S(e,t),p("caret",e),e=y(e,t),p("tildes",e),e=E(e,t),p("xrange",e),e=O(e,t),p("stars",e),e),v=e=>!e||"x"===e.toLowerCase()||"*"===e,y=(e,t)=>e.trim().split(/\s+/).map(e=>b(e,t)).join(" "),b=(i,e)=>{e=e.loose?d[h.TILDELOOSE]:d[h.TILDE];return i.replace(e,(e,t,n,r,a)=>{p("tilde",i,e,t,n,r,a);let o;return o=v(t)?"":v(n)?`>=${t}.0.0 <${+t+1}.0.0-0`:v(r)?`>=${t}.${n}.0 <${t}.${+n+1}.0-0`:a?(p("replaceTilde pr",a),`>=${t}.${n}.${r}-${a} <${t}.${+n+1}.0-0`):`>=${t}.${n}.${r} <${t}.${+n+1}.0-0`,p("tilde return",o),o})},S=(e,t)=>e.trim().split(/\s+/).map(e=>w(e,t)).join(" "),w=(i,e)=>{p("caret",i,e);var t=e.loose?d[h.CARETLOOSE]:d[h.CARET];const s=e.includePrerelease?"-0":"";return i.replace(t,(e,t,n,r,a)=>{p("caret",i,e,t,n,r,a);let o;return o=v(t)?"":v(n)?`>=${t}.0.0${s} <${+t+1}.0.0-0`:v(r)?"0"===t?`>=${t}.${n}.0${s} <${t}.${+n+1}.0-0`:`>=${t}.${n}.0${s} <${+t+1}.0.0-0`:a?(p("replaceCaret pr",a),"0"===t?"0"===n?`>=${t}.${n}.${r}-${a} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}-${a} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r}-${a} <${+t+1}.0.0-0`):(p("no pr"),"0"===t?"0"===n?`>=${t}.${n}.${r}${s} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}${s} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${+t+1}.0.0-0`),p("caret return",o),o})},E=(e,t)=>(p("replaceXRanges",e,t),e.split(/\s+/).map(e=>k(e,t)).join(" ")),k=(c,u)=>{c=c.trim();var e=u.loose?d[h.XRANGELOOSE]:d[h.XRANGE];return c.replace(e,(e,t,n,r,a,o)=>{p("xRange",c,e,t,n,r,a,o);var i=v(n),s=i||v(r),l=s||v(a);return"="===t&&l&&(t=""),o=u.includePrerelease?"-0":"",i?e=">"===t||"<"===t?"<0.0.0-0":"*":t&&l?(s&&(r=0),a=0,">"===t?(t=">=",a=s?(n=+n+1,r=0):(r=+r+1,0)):"<="===t&&(t="<",s?n=+n+1:r=+r+1),e=t+n+`.${r}.`+a+(o="<"===t?"-0":o)):s?e=`>=${n}.0.0${o} <${+n+1}.0.0-0`:l&&(e=`>=${n}.${r}.0${o} <${n}.${+r+1}.0-0`),p("xRange return",e),e})},O=(e,t)=>(p("replaceStars",e,t),e.trim().replace(d[h.STAR],"")),x=(e,t)=>(p("replaceGTE0",e,t),e.trim().replace(d[t.includePrerelease?h.GTE0PRE:h.GTE0],"")),C=h=>(e,t,n,r,a,o,i,s,l,c,u,p,d)=>((t=v(n)?"":v(r)?`>=${n}.0.0`+(h?"-0":""):v(a)?`>=${n}.${r}.0`+(h?"-0":""):o?">="+t:">="+t+(h?"-0":""))+" "+(s=v(l)?"":v(c)?`<${+l+1}.0.0-0`:v(u)?`<${l}.${+c+1}.0-0`:p?`<=${l}.${c}.${u}-`+p:h?`<${l}.${c}.${+u+1}-0`:"<="+s)).trim(),N=(t,n,e)=>{for(let e=0;e="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),r=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),a=this.semver.version===e.semver.version,o=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),i=l(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),t=l(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator),n||r||a&&o||i||t);throw new TypeError("a Comparator is required")}},r=(t.exports=s,Z()),{re:a,t:o}=Q(),l=we(),i=X(),c=I(),u=p()}}),Ne=e({"../../node_modules/semver/functions/satisfies.js"(e,t){var r=p();t.exports=(e,t,n)=>{try{t=new r(t,n)}catch(e){return!1}return t.test(e)}}}),Ie=e({"../../node_modules/semver/ranges/to-comparators.js"(e,t){var n=p();t.exports=(e,t)=>new n(e,t).set.map(e=>e.map(e=>e.value).join(" ").trim().split(" "))}}),Le=e({"../../node_modules/semver/ranges/max-satisfying.js"(e,t){var i=I(),s=p();t.exports=(e,t,n)=>{let r=null,a=null,o=null;try{o=new s(t,n)}catch(e){return null}return e.forEach(e=>{!o.test(e)||r&&-1!==a.compare(e)||(r=e,a=new i(r,n))}),r}}}),Pe=e({"../../node_modules/semver/ranges/min-satisfying.js"(e,t){var i=I(),s=p();t.exports=(e,t,n)=>{let r=null,a=null,o=null;try{o=new s(t,n)}catch(e){return null}return e.forEach(e=>{!o.test(e)||r&&1!==a.compare(e)||(r=e,a=new i(r,n))}),r}}}),Re=e({"../../node_modules/semver/ranges/min-version.js"(e,t){var o=I(),n=p(),i=ge();t.exports=(t,e)=>{t=new n(t,e);let r=new o("0.0.0");if(t.test(r))return r;if(r=new o("0.0.0-0"),t.test(r))return r;r=null;for(let e=0;e{const t=new o(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":n&&!i(t,n)||(n=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}),!n||r&&!i(r,n)||(r=n)}return r&&t.test(r)?r:null}}}),je=e({"../../node_modules/semver/ranges/valid.js"(e,t){var n=p();t.exports=(e,t)=>{try{return new n(e,t).range||"*"}catch(e){return null}}}}),Te=e({"../../node_modules/semver/ranges/outside.js"(e,t){var n=I(),d=Ce(),h=d["ANY"],f=p(),m=Ne(),g=ge(),v=ve(),y=Se(),b=be();t.exports=(r,a,e,o)=>{r=new n(r,o),a=new f(a,o);let i,s,l,c,u;switch(e){case">":i=g,s=y,l=v,c=">",u=">=";break;case"<":i=v,s=b,l=g,c="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(m(r,a,o))return!1;for(let e=0;e{e.semver===h&&(e=new d(">=0.0.0")),t=t||e,n=n||e,i(e.semver,t.semver,o)?t=e:l(e.semver,n.semver,o)&&(n=e)}),t.operator===c||t.operator===u)return!1;if((!n.operator||n.operator===c)&&s(r,n.semver))return!1;if(n.operator===u&&l(r,n.semver))return!1}return!0}}}),_e=e({"../../node_modules/semver/ranges/gtr.js"(e,t){var r=Te();t.exports=(e,t,n)=>r(e,t,">",n)}}),Ae=e({"../../node_modules/semver/ranges/ltr.js"(e,t){var r=Te();t.exports=(e,t,n)=>r(e,t,"<",n)}}),De=e({"../../node_modules/semver/ranges/intersects.js"(e,t){var r=p();t.exports=(e,t,n)=>(e=new r(e,n),t=new r(t,n),e.intersects(t))}}),$e=e({"../../node_modules/semver/ranges/simplify.js"(e,t){var h=Ne(),f=a();t.exports=(e,t,n)=>{const r=[];let a=null,o=null;var i,s,l=e.sort((e,t)=>f(e,t,n));for(const d of l){var c=h(d,t,n);a=c?(o=d,a||d):(o&&r.push([a,o]),o=null)}a&&r.push([a,null]);const u=[];for([i,s]of r)i===s?u.push(i):s||i!==l[0]?s?i===l[0]?u.push("<="+s):u.push(i+" - "+s):u.push(">="+i):u.push("*");var e=u.join(" || "),p="string"==typeof t.raw?t.raw:String(t);return e.length{return!e||!(0<(n=S(e.semver,t.semver,n)))&&(n<0||">"===t.operator&&">="===e.operator)?t:e},E=(e,t,n)=>{return!e||!((n=S(e.semver,t.semver,n))<0)&&(0{if(t!==n){t=new s(t,r),n=new s(n,r);let e=!1;e:for(const o of t.set){for(const i of n.set){var a=((s,l,c)=>{if(s!==l){if(1===s.length&&s[0].semver===y){if(1===l.length&&l[0].semver===y)return!0;s=c.includePrerelease?[new v(">=0.0.0-0")]:[new v(">=0.0.0")]}if(1===l.length&&l[0].semver===y){if(c.includePrerelease)return!0;l=[new v(">=0.0.0")]}const d=new Set;let e,t;for(const h of s)">"===h.operator||">="===h.operator?e=w(e,h,c):"<"===h.operator||"<="===h.operator?t=E(t,h,c):d.add(h.semver);if(1="!==e.operator||"<="!==t.operator))return null}for(const f of d){if(e&&!b(f,String(e),c))return null;if(t&&!b(f,String(t),c))return null;for(const m of l)if(!b(f,String(m),c))return!1;return!0}var u,p;let r,a,o=!(!t||c.includePrerelease||!t.semver.prerelease.length)&&t.semver,i=!(!e||c.includePrerelease||!e.semver.prerelease.length)&&e.semver;o&&1===o.prerelease.length&&"<"===t.operator&&0===o.prerelease[0]&&(o=!1);for(const g of l){if(a=a||">"===g.operator||">="===g.operator,r=r||"<"===g.operator||"<="===g.operator,e)if(i&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===i.major&&g.semver.minor===i.minor&&g.semver.patch===i.patch&&(i=!1),">"===g.operator||">="===g.operator){if((u=w(e,g,c))===g&&u!==e)return!1}else if(">="===e.operator&&!b(e.semver,String(g),c))return!1;if(t)if(o&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===o.major&&g.semver.minor===o.minor&&g.semver.patch===o.patch&&(o=!1),"<"===g.operator||"<="===g.operator){if((p=E(t,g,c))===g&&p!==t)return!1}else if("<="===t.operator&&!b(t.semver,String(g),c))return!1;if(!g.operator&&(t||e)&&0!==n)return!1}if(e&&r&&!t&&0!==n)return!1;if(t&&a&&!e&&0!==n)return!1;if(i||o)return!1}return true})(o,i,r);if(e=e||null!==a,a)continue e}if(e)return!1}}return!0}}}),Me=e({"../../node_modules/semver/index.js"(e,t){var n=Q();t.exports={re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:Y().SEMVER_SPEC_VERSION,SemVer:I(),compareIdentifiers:ee().compareIdentifiers,rcompareIdentifiers:ee().rcompareIdentifiers,parse:te(),valid:ne(),clean:re(),inc:ae(),diff:ie(),major:se(),minor:le(),patch:ce(),prerelease:ue(),compare:a(),rcompare:pe(),compareLoose:de(),compareBuild:he(),sort:fe(),rsort:me(),gt:ge(),lt:ve(),eq:oe(),neq:ye(),gte:be(),lte:Se(),cmp:we(),coerce:Ee(),Comparator:Ce(),Range:p(),satisfies:Ne(),toComparators:Ie(),maxSatisfying:Le(),minSatisfying:Pe(),minVersion:Re(),validRange:je(),outside:Te(),gtr:_e(),ltr:Ae(),intersects:De(),simplifyRange:$e(),subset:Fe()}}}),Be=e({"../../node_modules/react-simple-code-editor/lib/index.js"(e){"use strict";var r,t,n=e&&e.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),E=e&&e.__assign||function(){return(E=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"}}:{children:o})),O.createElement("textarea",{ref:function(e){return t._input=e},style:E(E(E({},N.editor),N.textarea),a),className:x+(s?" ".concat(s):""),id:i,value:n,onChange:this._handleChange,onKeyDown:this._handleKeyDown,onClick:v,onKeyUp:S,onFocus:y,onBlur:b,disabled:c,form:u,maxLength:p,minLength:d,name:h,placeholder:f,readOnly:m,required:g,autoFocus:l,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-gramm":!1}),O.createElement("style",{dangerouslySetInnerHTML:{__html:C}}))},s.defaultProps={tabSize:2,insertSpaces:!0,ignoreTabKey:!1,padding:0},s);function s(){var m=null!==t&&t.apply(this,arguments)||this;return m.state={capture:!0},m._recordCurrentState=function(){var e,t,n=m._input;n&&(e=n.value,t=n.selectionStart,n=n.selectionEnd,m._recordChange({value:e,selectionStart:t,selectionEnd:n}))},m._getLines=function(e,t){return e.substring(0,t).split("\n")},m._recordChange=function(e,t){void 0===t&&(t=!1);var n=m._history,r=n.stack,n=n.offset,n=(r.length&&-1=i.reach);y+=v.value.length,v=v.next){var b=v.value;if(n.length>t.length)return;if(!(b instanceof R)){var S,w=1;if(f){if(!(S=j(g,y,t,h))||S.index>=t.length)break;var E=S.index,k=S.index+S[0].length,O=y;for(O+=v.value.length;O<=E;)v=v.next,O+=v.value.length;if(O-=v.value.length,y=O,v.value instanceof R)continue;for(var x=v;x!==n.tail&&(Oi.reach&&(i.reach=b),v.prev),N=(N&&(L=T(n,L,N),y+=N.length),_(n,L,w),new R(s,d?P.tokenize(C,d):C,m,C));v=T(n,L,N),I&&T(n,v,I),1i.reach&&(i.reach=C.reach))}}}}}(e,a,t,a.head,0),a),i=[],s=o.head.next;s!==o.tail;)i.push(s.value),s=s.next;return i},hooks:{all:{},add:function(e,t){var n=P.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=P.hooks.all[e];if(n&&n.length)for(var r,a=0;r=n[a++];)r(t)}},Token:R},l.Prism=P,R.stringify=function t(e,n){if("string"==typeof e)return e;var r;if(Array.isArray(e))return r="",e.forEach(function(e){r+=t(e,n)}),r;var a,o={type:e.type,content:t(e.content,n),tag:"span",classes:["token",e.type],attributes:{},language:n},e=e.alias,i=(e&&(Array.isArray(e)?Array.prototype.push.apply(o.classes,e):o.classes.push(e)),P.hooks.run("wrap",o),"");for(a in o.attributes)i+=" "+a+'="'+(o.attributes[a]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+i+">"+o.content+""},l.document?((a=P.util.currentScript())&&(P.filename=a.src,a.hasAttribute("data-manual")&&(P.manual=!0)),P.manual||("loading"===(o=document.readyState)||"interactive"===o&&a&&a.defer?document.addEventListener("DOMContentLoaded",i):window.requestAnimationFrame?window.requestAnimationFrame(i):window.setTimeout(i,16))):l.addEventListener&&!P.disableWorkerMessageHandler&&l.addEventListener("message",function(e){var e=JSON.parse(e.data),t=e.language,n=e.code,e=e.immediateClose;l.postMessage(P.highlight(n,P.languages[t],t)),e&&l.close()},!1),P);function R(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function j(e,t,n,r){e.lastIndex=t;t=e.exec(n);return t&&r&&t[1]&&(e=t[1].length,t.index+=e,t[0]=t[0].slice(e)),t}function c(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function T(e,t,n){var r=t.next,n={value:n,prev:t,next:r};return t.next=n,r.prev=n,e.length++,n}function _(e,t,n){for(var r=t.next,a=0;afunction(){return Ma.default.createElement(Fa,null)}};for(D in Ve)F(Ge,D,{get:Ve[D],enumerable:!0});var qe=t(y("react"));function ze(e){return(ze="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)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Je(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n":">",'"':""","'":"'","/":"/"};function gt(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,function(e){return mt[e]}):e}var vt="undefined"!=typeof window&&window.navigator&&void 0===window.navigator.userAgentData&&window.navigator.userAgent&&-1s+l;)l++,u=i[c=o.slice(s,s+l).join(a)];if(void 0===u)return;if(null===u)return null;if(n.endsWith(c)){if("string"==typeof u)return u;if(c&&"string"==typeof u[c])return u[c]}var p=o.slice(s+l).join(a);return p?e(u,p,a):void 0}i=i[o[s]]}return i}}(this.data&&this.data[e]&&this.data[e][t],n,a)}},{key:"addResource",value:function(e,t,n,r){var a=4=p.maxReplaces)break}var n,r}),a}},{key:"nest",value:function(e,t){var n,r=this,a=2=this.maxParallelReads?void this.waitingReads.push({lng:r,ns:a,fcName:o,tried:s,wait:l,callback:c}):(this.readingCalls++,this.backend[o](r,a,function(e,t){var n;i.readingCalls--,0",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"};function dn(t,e){var n,r=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)),r}function hn(t){for(var e=1;e{t=localStorage.getItem(t);if(!t)return e;try{return JSON.parse(t)}catch(e){return t}},Qn=e=>{const r={section:/^\s*\[\s*([^\]]*)\s*\]\s*$/,param:/^\s*([^=]+?)\s*=\s*(.*?)\s*$/,comment:/^\s*;.*$/},a={},t=e.split(/[\r\n]+/);let o=null;return t.forEach(function(e){if(!r.comment.test(e))if(r.param.test(e)){const n=e.match(r.param);o?a[o][null==n?void 0:n[1]]=null==n?void 0:n[2].split(";")[0].trim():n&&(a[n[1]]=n[2].split(";")[0].trim())}else{var t;r.section.test(e)?(t=e.match(r.section))&&(a[t[1]]={},o=t[1]):0==e.length&&o&&(o=null)}}),a},Zn=e=>{const t=document.querySelector("style.marketplaceSnippets"),n=(t&&t.remove(),document.createElement("style"));e=e.reduce((e,t)=>e=(e+=`/* ${t.title} - ${t.description} */ `)+t.code+` `,"");n.innerHTML=e,n.classList.add("marketplaceSnippets"),document.head.appendChild(n)},er=(e,t)=>{let n=[];return e&&0({name:e.name,url:cr(e.url)})):n.push({name:t,url:"https://github.com/"+t}),n},tr=e=>e?Object.keys(e).map(e=>({key:e,value:e})):[],nr=()=>{console.log("Resetting Marketplace"),Object.keys(localStorage).forEach(e=>{e.startsWith("marketplace:")&&(localStorage.removeItem(e),console.log("Removed "+e))}),console.log("Marketplace has been reset"),location.reload()},rr=t=>{console.log("Importing Marketplace"),nr(),Object.keys(t).forEach(e=>{localStorage.setItem(e,t[e]),console.log("Imported "+e)}),location.reload()},ar=n=>{const e=document.querySelector("style.marketplaceCSS.marketplaceScheme");if(e&&e.remove(),n){const r=document.createElement("style");r.classList.add("marketplaceCSS"),r.classList.add("marketplaceScheme");let t=":root {";const a=Object.keys(n);a.forEach(e=>{t=(t+=`--spice-${e}: #${n[e]} !important;`)+`--spice-rgb-${e}: ${(e=>{if(3===e.length)e=e.split("").map(e=>e+e).join("");else{if(6!=e.length)throw"Only 3- or 6-digit hex colours are allowed.";if(e.match(/[^0-9a-f]/i))throw"Only hex colours are allowed."}e=e.match(/.{1,2}/g);if(e&&3===e.length)return[parseInt(e[0],16),parseInt(e[1],16),parseInt(e[2],16)];throw"Could not parse hex colour."})(n[e])} !important;`}),t+="}",r.innerHTML=t,document.head.appendChild(r)}else{const t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("href","colors.css"),t.classList.add("userCSS"),document.head.appendChild(t)}},or=e=>{try{const t=document.querySelector("link[href='user.css']"),n=(t&&t.remove(),document.querySelector("style.marketplaceCSS.marketplaceUserCSS"));if(n&&n.remove(),e){const r=document.createElement("style");r.classList.add("marketplaceCSS"),r.classList.add("marketplaceUserCSS"),r.innerHTML=e,document.head.appendChild(r)}else{const a=document.createElement("link");a.setAttribute("rel","stylesheet"),a.setAttribute("href","user.css"),a.classList.add("userCSS"),document.head.appendChild(a)}}catch(e){console.warn(e)}},ir=async e=>{if(!e.cssURL)throw new Error("No CSS URL provided");const t=(e=>{const t=new URL(e);return t.host,t.host==="raw.githubusercontent.com"})(e.cssURL)?`https://cdn.jsdelivr.net/gh/${e.user}/${e.repo}@${e.branch}/`+e.manifest.usercss:e.cssURL;var n,r=t.replace("/user.css","/assets/");console.log("Parsing CSS: ",t);let a=await fetch(t+"?time="+Date.now()).then(e=>e.text());for(const o of a.matchAll(new RegExp(`url\\(['|"](?.+?)['|"]\\)`,"gm"))||[]){const i=null==(n=null==o?void 0:o.groups)?void 0:n.path;!i||i.startsWith("http")||i.startsWith("data")||(n=r+i.replace(/\.\//g,""),a=a.replace(i,n))}return a};async function sr(e,t,n){try{var r={text:e,context:t+"/"+n,mode:"gfm"};const a=await fetch("https://api.github.com/markdown",{method:"POST",body:JSON.stringify(r)});if(a.ok)return await a.text();throw Spicetify.showNotification(`Error parsing markdown (HTTP ${a.status})`,!0)}catch(e){return null}}function lr(e){var t,n="snippet"===e.type?"snippet:":`${e.item.user}/${e.item.repo}/`;let r;switch(e.type){case"snippet":r=e.item.title.replaceAll(" ","-");break;case"theme":r=(null==(t=e.item.manifest)?void 0:t.usercss)||"";break;case"extension":r=(null==(t=e.item.manifest)?void 0:t.main)||"";break;case"app":r=(null==(t=null==(t=e.item.manifest)?void 0:t.name)?void 0:t.replaceAll(" ","-"))||""}return"marketplace:installed:"+n+r}var cr=e=>{const t=decodeURI(e).trim().toLowerCase();return t.startsWith("javascript:")||t.startsWith("data:")||t.startsWith("vbscript:")?"about:blank":e},ur="0.8.2",pr="marketplace:installed-extensions",w="marketplace:installed-snippets",dr="marketplace:installed-themes",hr="marketplace:active-tab",fr="marketplace:tabs",mr="marketplace:sort-by",E="marketplace:theme-installed",gr=[{name:"Extensions",enabled:!0},{name:"Themes",enabled:!0},{name:"Snippets",enabled:!0},{name:"Apps",enabled:!0},{name:"Installed",enabled:!0}],k=100,vr="/marketplace",yr="https://api.github.com/repos/spicetify/spicetify-marketplace/releases/tags/v0.8.2",O=t(y("react")),x=t(y("react")),br=t(Be()),Sr=t(Ue()),wr=(Me=Prism,_=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/,Me.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+_.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+_.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+_.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+_.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:_,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},Me.languages.css.atrule.inside.rest=Me.languages.css,(_=Me.languages.markup)&&(_.tag.addInlined("style","css"),_.tag.addAttribute("style","css")),t(y("react"))),Er="button-module__button___hf2qg_marketplace",kr="button-module__circle___EZ88P_marketplace",C=e=>{var t=e.type||"round";const n=[Er];return"circle"===t&&n.push(kr),e.classes&&n.push(...e.classes),wr.default.createElement("button",{className:n.join(" "),onClick:e.onClick,"aria-label":e.label,disabled:e.disabled},e.children)},Or=i=>{var e,t="marketplace-customCSS-preview";const[s,n]=x.default.useState("ADD_SNIPPET"!==i.type&&(null==(e=i.content)?void 0:e.item.code)||""),[r,a]=x.default.useState("ADD_SNIPPET"!==i.type&&(null==(e=i.content)?void 0:e.item.title)||""),[l,o]=x.default.useState("ADD_SNIPPET"!==i.type&&(null==(e=i.content)?void 0:e.item.description)||""),[c,u]=x.default.useState("ADD_SNIPPET"!==i.type&&(null==(e=i.content)?void 0:e.item.imageURL)||""),p=()=>r.replace(/\n/g,"").replaceAll(" ","-");let d;return x.default.createElement("div",{id:"marketplace-add-snippet-container"},x.default.createElement("div",{className:"marketplace-customCSS-input-container"},x.default.createElement("label",{htmlFor:"marketplace-custom-css"},g("snippets.customCSS")),x.default.createElement("div",{className:"marketplace-code-editor-wrapper marketplace-code-editor"},x.default.createElement(br.default,{value:s,onValueChange:e=>n(e),highlight:e=>(0,Sr.highlight)(e,Sr.languages.css),textareaId:"marketplace-custom-css",textareaClassName:"snippet-code-editor",readOnly:"VIEW_SNIPPET"===i.type,placeholder:g("snippets.customCSSPlaceholder"),style:{}}))),x.default.createElement("div",{className:"marketplace-customCSS-input-container"},x.default.createElement("label",{htmlFor:"marketplace-customCSS-name-submit"},g("snippets.snippetName")),x.default.createElement("input",{id:"marketplace-customCSS-name-submit",className:"marketplace-code-editor",value:r,onChange:e=>{"VIEW_SNIPPET"!==i.type&&a(e.target.value)},placeholder:g("snippets.snippetNamePlaceholder")})),x.default.createElement("div",{className:"marketplace-customCSS-input-container"},x.default.createElement("label",{htmlFor:"marketplace-customCSS-description-submit"},g("snippets.snippetDesc")),x.default.createElement("input",{id:"marketplace-customCSS-description-submit",className:"marketplace-code-editor",value:l,onChange:e=>{"VIEW_SNIPPET"!==i.type&&o(e.target.value)},placeholder:g("snippets.snippetDescPlaceholder")})),x.default.createElement("div",{className:"marketplace-customCSS-input-container"},x.default.createElement("label",{htmlFor:t},g("snippets.snippetPreview")," ","VIEW_SNIPPET"!==i.type&&`(${g("snippets.optional")})`),c&&x.default.createElement("label",{htmlFor:t,style:{textAlign:"center"}},x.default.createElement("img",{className:"marketplace-customCSS-image-preview",src:c,alt:"Preview"}))),"VIEW_SNIPPET"!==i.type&&x.default.createElement(x.default.Fragment,null,x.default.createElement(C,{onClick:()=>{d.click()}},c.length?g("snippets.changeImage"):g("snippets.addImage"),x.default.createElement("input",{id:t,type:"file",style:{display:"none"},ref:e=>d=e,onChange:async e=>{var t,n,r;if(null!=(t=e.target.files)&&t[0])try{r=null==(n=e.target.files)?void 0:n[0];var a=await new Promise((e,t)=>{const n=new FileReader;n.readAsDataURL(r),n.onload=()=>{e(n.result)},n.onerror=e=>{t(e)}});a&&(console.log(a),u(a))}catch(e){console.error(e)}}})),x.default.createElement(C,{onClick:()=>{var e=p(),t=l.trim(),n="marketplace:installed:snippet:"+e;if(S(n)&&"EDIT_SNIPPET"!==i.type)Spicetify.showNotification("That name is already taken!",!0);else{if(console.log("Installing snippet: "+e),i.content&&i.content.item.title!==e){console.log("Deleting outdated snippet: "+i.content.item.title),localStorage.removeItem("marketplace:installed:snippet:"+i.content.item.title);const o=S(w,[]);var r=o.filter(e=>{return e!=="marketplace:installed:snippet:"+(null==(e=i.content)?void 0:e.item.title)});localStorage.setItem(w,JSON.stringify(r))}localStorage.setItem(n,JSON.stringify({title:e,code:s,description:t,imageURL:c,custom:!0}));const a=S(w,[]);-1===a.indexOf(n)&&(a.push(n),console.log(a),localStorage.setItem(w,JSON.stringify(a)));r=a.map(e=>S(e));Zn(r),Spicetify.PopupModal.hide(),"EDIT_SNIPPET"===i.type&&location.reload()}},disabled:!p()||!s.replace(/\n/g,"\\n")},g("snippets.saveCSS"))))},xr=t(y("react")),Cr=()=>xr.default.createElement("div",{id:"marketplace-reload-container"},xr.default.createElement("p",null,g("reloadModal.description")),xr.default.createElement("div",{className:"marketplace-reload-modal__button-container"},xr.default.createElement(C,{onClick:()=>{Spicetify.PopupModal.hide(),location.reload()}},g("reloadModal.reloadNow")),xr.default.createElement(C,{onClick:()=>{Spicetify.PopupModal.hide()}},g("reloadModal.reloadLater")))),N=t(y("react")),Nr=t(y("react")),Ir=t(y("react")),Lr="toggle-module__toggle-wrapper___ocE5z_marketplace",Pr="toggle-module__disabled___OYAYf_marketplace",Rr="toggle-module__toggle-input___ceLM4_marketplace",jr="toggle-module__toggle-indicator-wrapper___6Lcp0_marketplace",Tr="toggle-module__toggle-indicator___nCxwE_marketplace",_r=e=>{var t="toggle:"+e.storageKey;const n=[Lr];return!1===e.clickable&&n.push(Pr),Ir.default.createElement("label",{className:n.join(" ")},Ir.default.createElement("input",{className:Rr,type:"checkbox",checked:e.enabled,"data-storage-key":e.storageKey,id:t,title:"Toggle for "+e.storageKey,onChange:e.onChange}),Ir.default.createElement("span",{className:jr},Ir.default.createElement("span",{className:Tr})))},Ar=n=>{var e="toggle:"+n.storageKey,t=!!n.modalConfig.visual[n.storageKey];return Nr.default.createElement("div",{className:"setting-row"},Nr.default.createElement("label",{htmlFor:e,className:"col description"},n.name),Nr.default.createElement("div",{className:"col action"},Nr.default.createElement(_r,{name:n.name,storageKey:n.storageKey,enabled:t,onChange:e=>{var t=e.target.checked,e=e.target.dataset.storageKey;n.modalConfig.visual[e]=t,console.log(`toggling ${e} to `+t),localStorage.setItem("marketplace:"+e,String(t)),n.updateConfig(n.modalConfig)}})))},Dr=t(y("react")),$r=r=>{var e="toggle:"+r.name;const t=r.modalConfig.tabs.reduce((e,t,n)=>t.name===r.name?n:e,-1);var n=r.modalConfig.tabs[t]["enabled"];function a(e,t){console.log({currPos:e,dir:t});var t=e+t,n=r.modalConfig.tabs[t];r.modalConfig.tabs[t]=r.modalConfig.tabs[e],r.modalConfig.tabs[e]=n,localStorage.setItem(fr,JSON.stringify(r.modalConfig.tabs)),r.updateConfig(r.modalConfig)}return Dr.default.createElement("div",{className:"setting-row"},Dr.default.createElement("label",{htmlFor:e,className:"col description"},g("tabs."+r.name)),Dr.default.createElement("div",{className:"col action"},Dr.default.createElement("button",{title:"Move up",className:"arrow-btn",disabled:0===t,onClick:()=>a(t,-1)},Dr.default.createElement("svg",{height:"16",width:"16",viewBox:"0 0 16 16",fill:"currentColor",dangerouslySetInnerHTML:{__html:String(Spicetify.SVGIcons["chart-up"])}})),Dr.default.createElement("button",{title:"Move down",className:"arrow-btn",disabled:t===r.modalConfig.tabs.length-1,onClick:()=>a(t,1)},Dr.default.createElement("svg",{height:"16",width:"16",viewBox:"0 0 16 16",fill:"currentColor",dangerouslySetInnerHTML:{__html:String(Spicetify.SVGIcons["chart-down"])}})),Dr.default.createElement(_r,{name:r.name,storageKey:"tab:"+r.name,clickable:"Extensions"!==r.name,enabled:n,onChange:e=>{console.log({e:e}),r.modalConfig.tabs[t].enabled=e.target.checked,localStorage.setItem(fr,JSON.stringify(r.modalConfig.tabs)),r.updateConfig(r.modalConfig)}})))},Fr=async()=>{const e=new MutationObserver(async()=>{var t;document.querySelector(".GenericModal[aria-label='Settings']")||(t=100,await new Promise(e=>setTimeout(e,t)),Jr("IMPORT_EXPORT"),e.disconnect())});e.observe(document.body,{childList:!0,subtree:!0}),Spicetify.PopupModal.hide()},Mr=({CONFIG:e,updateAppConfig:t})=>{const[n,r]=N.default.useState(s({},e)),a=e=>{t(s({},e)),r(s({},e))},o=document.querySelector("body > generic-modal button.main-trackCreditsModal-closeBtn"),i=document.querySelector("body > generic-modal > div");return o&&i&&(o.onclick=()=>location.reload(),o.setAttribute("style","cursor: pointer;"),i.onclick=e=>{e.target===i&&location.reload()}),N.default.createElement("div",{id:"marketplace-config-container"},N.default.createElement("h2",null,g("settings.optionsHeading")),N.default.createElement(Ar,{name:g("settings.starCountLabel"),storageKey:"stars",modalConfig:n,updateConfig:a}),N.default.createElement(Ar,{name:g("settings.tagsLabel"),storageKey:"tags",modalConfig:n,updateConfig:a}),N.default.createElement(Ar,{name:g("settings.devToolsLabel"),storageKey:"themeDevTools",modalConfig:n,updateConfig:a}),N.default.createElement(Ar,{name:g("settings.hideInstalledLabel"),storageKey:"hideInstalled",modalConfig:n,updateConfig:a}),N.default.createElement(Ar,{name:g("settings.colourShiftLabel"),storageKey:"colorShift",modalConfig:n,updateConfig:a}),N.default.createElement("h2",null,g("settings.tabsHeading")),N.default.createElement("div",{className:"tabs-container"},n.tabs.map(({name:e},t)=>N.default.createElement($r,{key:t,name:e,modalConfig:n,updateConfig:a}))),N.default.createElement("h2",null,g("settings.resetHeading")),N.default.createElement("div",{className:"setting-row"},N.default.createElement("label",{className:"col description"},g("settings.resetDescription")),N.default.createElement("div",{className:"col action"},N.default.createElement(C,{onClick:nr},g("settings.resetBtn")))),N.default.createElement("h2",null,"Back up/Restore"),N.default.createElement("div",{className:"setting-row"},N.default.createElement("label",{className:"col description"},"Back up or restore all Marketplace data. This does not include settings for anything installed via Marketplace."),N.default.createElement("div",{className:"col action"},N.default.createElement(C,{onClick:Fr},"Back up/Restore"))))},L=t(y("react")),Br=t(Be()),Ur=t(Ue()),Hr=(Prism.languages.ini={comment:{pattern:/(^[ \f\t\v]*)[#;][^\n\r]*/m,lookbehind:!0},section:{pattern:/(^[ \f\t\v]*)\[[^\n\r\]]*\]?/m,lookbehind:!0,inside:{"section-name":{pattern:/(^\[[ \f\t\v]*)[^ \f\t\v\]]+(?:[ \f\t\v]+[^ \f\t\v\]]+)*/,lookbehind:!0,alias:"selector"},punctuation:/\[|\]/}},key:{pattern:/(^[ \f\t\v]*)[^ \f\n\r\t\v=]+(?:[ \f\t\v]+[^ \f\n\r\t\v=]+)*(?=[ \f\t\v]*=)/m,lookbehind:!0,alias:"attr-name"},value:{pattern:/(=[ \f\t\v]*)[^ \f\n\r\t\v]+(?:[ \f\t\v]+[^ \f\n\r\t\v]+)*/,lookbehind:!0,alias:"attr-value",inside:{"inner-value":{pattern:/^("|').+(?=\1$)/,lookbehind:!0}}},punctuation:/=/},localStorage.getItem(E)),Kr=Hr?S(Hr):null,Gr=()=>{const[n,t]=L.default.useState(Kr?(e=>{let t="";for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n))if("object"==typeof e[n]){t+=`[${n}] `;for(const r in e[n])Object.prototype.hasOwnProperty.call(e[n],r)&&(t+=`${r}=${e[n][r]} `)}else t+=`${n}=${e[n]} `;return t})(Kr.schemes):g("devTools.noThemeInstalled"));return L.default.createElement("div",{id:"marketplace-theme-dev-tools-container",className:"marketplace-theme-dev-tools-container"},L.default.createElement("div",{className:"devtools-column"},L.default.createElement("label",{htmlFor:"color-ini-editor"},L.default.createElement("h2",{className:"devtools-heading"},g("devTools.colorIniEditor"))),L.default.createElement("div",{className:"marketplace-code-editor-wrapper marketplace-code-editor"},L.default.createElement(Br.default,{value:n,onValueChange:e=>t(e),highlight:e=>(0,Ur.highlight)(e,Ur.languages.ini),textareaId:"color-ini-editor",textareaClassName:"color-ini-editor",readOnly:!Kr,placeholder:g("devTools.colorIniEditorPlaceholder"),style:{fontFamily:"monospace",resize:"none"}})),L.default.createElement(C,{onClick:()=>{var e=n;{var t;Hr?(t=Qn(e),Kr.schemes=t,localStorage.setItem(Hr,JSON.stringify(Kr))):Spicetify.showNotification(g("devTools.noThemeManifest"),!0)}}},g("save"))),L.default.createElement("div",{className:"devtools-column"},L.default.createElement("h2",{className:"devtools-heading"},g("devTools.invalidCSS")),L.default.createElement("div",{className:"marketplace-code-editor-wrapper marketplace-code-editor"},function(){var e=document.querySelector("head > style.marketplaceCSS.marketplaceUserCSS");const t=null==e?void 0:e.innerHTML;if(e=new RegExp(".-?[_a-zA-Z]+[_a-zA-Z0-9-]*\\s*{","g"),!t)return["Error: Class name list not found; please create an issue"];const n=[];for(const a of t.matchAll(e)){const o=a[0].replace(/{/g,"").trim();var r=o.split(" ");let t;for(let e=0;eL.default.createElement("div",{key:t,className:"invalid-css-text"},e)))))},R=t(y("react")),Vr=t(Be()),qr=t(Ue()),zr=(Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json,()=>{const[n,t]=R.default.useState("");return R.default.createElement("div",{id:"marketplace-import-export-container"},R.default.createElement("div",{className:"marketplace-import-export-input-container"},R.default.createElement("label",{htmlFor:"marketplace-import-export"},"Marketplace Settings"),R.default.createElement("div",{className:"marketplace-code-editor-wrapper marketplace-code-editor"},R.default.createElement(Vr.default,{value:n,onValueChange:e=>t(e),highlight:e=>(0,qr.highlight)(e,qr.languages.css),textareaId:"marketplace-import-text",textareaClassName:"import-textarea",readOnly:!1,className:"marketplace-code-editor-textarea",placeholder:"Copy/paste your settings here",style:{}}))),R.default.createElement(R.default.Fragment,null,R.default.createElement(C,{classes:["marketplace-import-export-button"],onClick:()=>{var e=(()=>{const t={};return Object.keys(localStorage).forEach(e=>{e.startsWith("marketplace:")&&(t[e]=localStorage.getItem(e))}),t})();Spicetify.Platform.ClipboardAPI.copy(JSON.stringify(e)),Spicetify.showNotification("Settings copied to clipboard."),Spicetify.PopupModal.hide()}},"Export"),R.default.createElement(C,{classes:["marketplace-import-export-button"],onClick:()=>{var e=n;let t;if(e){try{t=JSON.parse(e)}catch(e){return void Spicetify.showNotification("Invalid JSON")}rr(t),Spicetify.PopupModal.hide(),location.reload()}else Spicetify.showNotification("No data pasted")}},"Import"),R.default.createElement(C,{classes:["marketplace-import-export-button"],onClick:async()=>{const e=await window.showOpenFilePicker(),t=await e[0].getFile();var n=await t.text();let r;if(n){try{r=JSON.parse(n)}catch(e){return void Spicetify.showNotification("Invalid JSON")}rr(r)}else Spicetify.showNotification("No data pasted")}},"Import from file")))}),Jr=(e,t,n,r)=>{e=((e,t,n,r)=>{switch(e){case"ADD_SNIPPET":return{title:g("snippets.addTitle"),content:O.default.createElement(Or,{type:e}),isLarge:!0};case"EDIT_SNIPPET":return{title:g("snippets.editTitle"),content:O.default.createElement(Or,{type:e,content:r}),isLarge:!0};case"VIEW_SNIPPET":return{title:g("snippets.viewTitle"),content:O.default.createElement(Or,{type:e,content:r}),isLarge:!0};case"RELOAD":return{title:g("reloadModal.title"),content:O.default.createElement(Cr,null),isLarge:!1};case"SETTINGS":return{title:g("settings.title"),content:O.default.createElement(Mr,{CONFIG:t,updateAppConfig:n}),isLarge:!0};case"THEME_DEV_TOOLS":return{title:g("devTools.title"),content:O.default.createElement(Gr,null),isLarge:!0};case"IMPORT_EXPORT":return{title:"Import/Export",content:O.default.createElement(zr,null),isLarge:!0};default:return{title:"",content:O.default.createElement("div",null),isLarge:!1}}})(e,t,n,r),Spicetify.PopupModal.display(e)},Wr=[{title:"Fix 'Liked' Icon",description:"Fix the colours of the Liked icon in sidebar",code:".main-likedSongsButton-likedSongsIcon {\n color: var(--spice-sidebar);\n background: var(--spice-text);\n}",preview:"resources/assets/snippets/fix-liked-icon.png"},{title:"Hide Upgrade Button",description:"Makes the upgrade button hidden",code:".main-topBar-UpgradeButton {\n display: none !important;\n}",preview:"resources/assets/snippets/hide-upgrade-button.png"},{title:"Auto-hide Friends",description:"Collapse the friends activity sidebar on small screens",code:"[aria-label='Friend Activity'] {\n transition: width 0.3s;\n}\n@media screen and (max-width: 1200px) {\n [aria-label='Friend Activity'] {\n width: 0;\n }\n [aria-label='Friend Activity'] .LayoutResizer__resize-bar {\n display: none;\n }\n}",preview:"resources/assets/snippets/auto-hide-friends.png"},{title:"Smooth Reveal Playlist Gradient",description:"Reveals the playlist gradient header gradient with a fade in effect",code:".main-entityHeader-overlay,\n.main-actionBarBackground-background,\n.main-entityHeader-overlay,\n.main-entityHeader-backgroundColor {\n -webkit-transition: 3s;\n}",preview:"resources/assets/snippets/smooth-playlist-reveal-gradient.png"},{title:"Remove connect bar",description:"Remove connect bar that causes progress bar displacement when listening on different devices",code:".main-connectBar-connectBar {\n color: transparent !important;\n overflow: visible !important;\n --triangle-position: 147px !important;\n align-items: unset !important;\n height: 0px !important;\n position: absolute !important;\n left: 80% !important;\n display: flex !important;\n bottom: 2% !important;\n padding: unset !important;\n}",preview:"resources/assets/snippets/remove-connect-bar.png"},{title:"Fix playlist arrows",description:"Fixes the opened and closed orientation of the playlist folder arrows",code:".main-rootlist-expandArrow {\n -webkit-transform: rotate(-90deg) !important;\n transform: rotate(-90deg) !important;\n}\n.main-rootlist-expandArrow:hover {\n -webkit-transform: rotate(-90deg) !important;\n transform: rotate(-90deg) !important;\n}\n.qAAhQw9dXNB7DbPgDDxy {\n -webkit-transform: rotate(0deg) !important;\n transform: rotate(0deg) !important;\n}\n.qAAhQw9dXNB7DbPgDDxy:hover {\n -webkit-transform: rotate(0deg) !important;\n transform: rotate(0deg) !important;\n}",preview:"resources/assets/snippets/fix-playlist-arrows.png"},{title:"Fix main view width",description:"Makes main view fill up all available space",code:".contentSpacing {\n max-width: 100% !important;\n}",preview:"resources/assets/snippets/fix-main-view-width.png"},{title:"Left aligned heart icons",description:"Moves the heart icon to the left side of the track title in track views",code:".main-trackList-rowSectionStart {\n margin-left: 38px !important;\n}\n.main-addButton-button.main-trackList-rowHeartButton,\n.main-addButton-button.main-trackList-rowHeartButton {\n position: absolute !important;\n left: 48px !important;\n}",preview:"resources/assets/snippets/left-aligned-heart-icons.png"},{title:"Hover Panels",description:"Have your playlist, friend activity, and controls bar be hoverable.",code:".Root__nav-bar {\n position: absolute;\n width: 40px;\n opacity: 0;\n bottom: 0;\n left: 0;\n top: 0;\n z-index: 1;\n}\nnav.Root__nav-bar:hover {\n position: inherit;\n width: 225px;\n opacity: 1;\n transition: visibility 5s, opacity 0.5s linear;\n}\n.LayoutResizer__resize-bar {\n cursor: none;\n}\n.Root__top-bar {\n opacity: 0;\n transition: visibility 5s, opacity 1s linear;\n}\n.Root__top-bar:hover {\n transition-delay: 0.5s;\n opacity: 1;\n transition: visibility 5s, opacity 0.5s linear;\n}\n.main-topBar-container {\n -webkit-padding-end: 32px;\n padding: 16px 85px;\n padding-inline-end: 32px;\n max-width: none;\n}\naside.main-buddyFeed-buddyFeedRoot:hover {\n position: inherit;\n width: var(--buddy-feed-width);\n opacity: 1;\n transition: visibility 5s, opacity 0.5s linear;\n left: 0;\n}\naside.main-buddyFeed-buddyFeedRoot {\n position: absolute;\n width: 65px;\n opacity: 0;\n bottom: 0;\n left: -30px;\n top: 0;\n z-index: 1;\n}",preview:"resources/assets/snippets/hover-panels.png"},{title:"Fix progress bar displacement",description:"Fixes the progress bar displacement for a few themes. Better version of @CharlieS1103 Snippet",code:".main-connectBar-connectBar {\n overflow: visible !important;\n position: absolute !important;\n display: flex !important;\n align-items: unset !important;\n left: 80% !important;\n height: 20px !important;\n bottom: 1% !important;\n padding: 2px !important;\n background-color: transparent !important;\n color: var(--spice-text) !important;\n}\n.control-button::after {\n display: none !important;\n}",preview:"resources/assets/snippets/fix-progress-bar.png"},{title:"Fix playlist hover effect",description:"Fixes the hover effect on the playlist titles in some themes",code:".main-rootlist-rootlistItemOverlay {\n display: none;\n}",preview:"resources/assets/snippets/fix-playlist-hover.png"},{title:"Disable Homepage Recommendation",description:"Disable Homepage Recommendation charts",code:"section[data-testid='home-page'] .main-shelf-shelf:not([aria-label='Recently played'], [aria-label='Your playlists']) {\n\tdisplay: none !important;\n}",preview:"resources/assets/snippets/disable-recommendation.png"},{title:"Circular Album Art",description:"Makes the now playing album art be circular (like a vinyl)",code:".cover-art .cover-art-image {\n border-radius: 100% !important;\n}",preview:"resources/assets/snippets/circular-album-art.png"},{title:"Always show forward button",description:"The navigate forward button hides itself when the window width is smaller. This snipppet makes it so that it is always shown.",code:".main-topBar-historyButtons .main-topBar-forward {\n display: inline-flex !important;\n}",preview:"resources/assets/snippets/always-show-forward.png"},{title:"Right Side Cover Art",description:"Cover art on right side with animation",code:".main-nowPlayingWidget-nowPlaying > .ellipsis-one-line,\n.main-trackInfo-container {\n margin-left: 74px;\n}\n.main-coverSlotExpanded-container {\n position: fixed;\n top: calc(100% - 305px);\n left: calc(100% - 220px);\n width: 200px;\n height: 200px;\n visibility: hidden;\n transform-origin: center;\n animation: 1s coverExpandedIn;\n animation-fill-mode: forwards;\n}\n.Q4cc5RktWgz2H8_vDrIS {\n display: none;\n}\n.main-coverSlotCollapsed-container {\n position: fixed;\n top: -12px;\n left: 0px;\n width: 56px;\n height: 56px;\n visibility: visible;\n z-index: 1;\n}\n.cover-art .cover-art-image,\n.main-coverSlotCollapsed-container {\n transform-origin: center;\n transition-timing-function: ease-in;\n transition: width 0.5s 0.2s, height 0.5s 0.2s, top 0.3s, left 0.5s,\n box-shadow 0.5s;\n}\n.main-coverSlotCollapsed-container[aria-hidden='true'] {\n left: calc(100vw - 164px);\n top: -240px;\n width: 200px;\n height: 200px;\n visibility: hidden;\n animation: 1s coverExpandedOut;\n}\n.main-coverSlotCollapsed-container[aria-hidden='false'] {\n transition-timing-function: ease-out !important;\n transition: width 0.5s 0.2s, height 0.5s 0.2s, top 0.5s 0.1s, left 0.3s,\n box-shadow 0.5s !important;\n}\n.main-coverSlotCollapsed-container[aria-hidden='true']\n .cover-art\n .cover-art-image,\n.main-nowPlayingWidget-coverExpanded\n .main-coverSlotCollapsed-container\n .cover-art\n .cover-art-image {\n width: 200px;\n height: 200px;\n}\n.main-nowPlayingBar-left {\n z-index: 2;\n}\n.main-nowPlayingBar-center {\n z-index: 1;\n}\n.cover-art.shadow {\n box-shadow: 0 0 10px rgba(var(--spice-rgb-shadow), 1) !important;\n}\n@keyframes coverExpandedIn {\n 99% {\n visibility: hidden;\n }\n 100% {\n visibility: visible;\n }\n}\n@keyframes coverExpandedOut {\n 99% {\n visibility: visible;\n }\n 100% {\n visibility: hidden;\n }\n}",preview:"resources/assets/snippets/right-cover-art.png"},{title:"Better lyrics style",description:"Spotify lyrics are focused and beautified",code:".lyrics-lyrics-contentContainer .lyrics-lyricsContent-lyric.lyrics-lyricsContent-highlight { filter: blur(1.5px); padding: 15px; font-size: 110%; } .lyrics-lyrics-contentContainer .lyrics-lyricsContent-lyric.lyrics-lyricsContent-active { filter: none; padding: 20px; font-size: 130%; } .lyrics-lyrics-contentContainer .lyrics-lyricsContent-lyric { filter: blur(1.5px); padding: 15px; font-size: 110%; } .lyrics-lyrics-contentContainer .lyrics-lyricsContent-lyric.lyrics-lyricsContent-unsynced { filter: none; padding: 10px; font-size: 100%; }",preview:"resources/assets/snippets/better-lyrics-style.png"},{title:"Fix now playing icon color",description:"Fixes the now playing icon color",code:`.main-trackList-playingIcon { -webkit-mask-image: url("data:image/svg+xml,%3Csvg id='playing-icon' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 24'%3E%3Cdefs%3E%3Cstyle%3E %23playing-icon %7B fill: %2320BC54; %7D @keyframes play %7B 0%25 %7Btransform: scaleY(1);%7D 3.3%25 %7Btransform: scaleY(0.9583);%7D 6.6%25 %7Btransform: scaleY(0.9166);%7D 9.9%25 %7Btransform: scaleY(0.8333);%7D 13.3%25 %7Btransform: scaleY(0.7083);%7D 16.6%25 %7Btransform: scaleY(0.5416);%7D 19.9%25 %7Btransform: scaleY(0.4166);%7D 23.3%25 %7Btransform: scaleY(0.25);%7D 26.6%25 %7Btransform: scaleY(0.1666);%7D 29.9%25 %7Btransform: scaleY(0.125);%7D 33.3%25 %7Btransform: scaleY(0.125);%7D 36.6%25 %7Btransform: scaleY(0.1666);%7D 39.9%25 %7Btransform: scaleY(0.1666);%7D 43.3%25 %7Btransform: scaleY(0.2083);%7D 46.6%25 %7Btransform: scaleY(0.2916);%7D 49.9%25 %7Btransform: scaleY(0.375);%7D 53.3%25 %7Btransform: scaleY(0.5);%7D 56.6%25 %7Btransform: scaleY(0.5833);%7D 59.9%25 %7Btransform: scaleY(0.625);%7D 63.3%25 %7Btransform: scaleY(0.6666);%7D 66.6%25 %7Btransform: scaleY(0.6666);%7D 69.9%25 %7Btransform: scaleY(0.6666);%7D 73.3%25 %7Btransform: scaleY(0.6666);%7D 76.6%25 %7Btransform: scaleY(0.7083);%7D 79.9%25 %7Btransform: scaleY(0.75);%7D 83.3%25 %7Btransform: scaleY(0.8333);%7D 86.6%25 %7Btransform: scaleY(0.875);%7D 89.9%25 %7Btransform: scaleY(0.9166);%7D 93.3%25 %7Btransform: scaleY(0.9583);%7D 96.6%25 %7Btransform: scaleY(1);%7D %7D %23bar1 %7B transform-origin: bottom; animation: play 0.9s -0.51s infinite; %7D %23bar2 %7B transform-origin: bottom; animation: play 0.9s infinite; %7D %23bar3 %7B transform-origin: bottom; animation: play 0.9s -0.15s infinite; %7D %23bar4 %7B transform-origin: bottom; animation: play 0.9s -0.75s infinite; %7D %3C/style%3E%3C/defs%3E%3Ctitle%3Eplaying-icon%3C/title%3E%3Crect id='bar1' class='cls-1' width='4' height='24'/%3E%3Crect id='bar2' class='cls-1' x='6' width='4' height='24'/%3E%3Crect id='bar3' class='cls-1' x='12' width='4' height='24'/%3E%3Crect id='bar4' class='cls-1' x='18' width='4' height='24'/%3E%3C/svg%3E"); background: var(--spice-button); content-visibility: hidden; -webkit-mask-repeat: no-repeat; }`,preview:"resources/assets/snippets/fix-now-playing-icon.png"},{title:"Hide playing gif",description:"Hides the gif that shows the music playing",code:".main-trackList-playingIcon{display: none}",preview:"resources/assets/snippets/hide-playing-gif.png"},{title:"Pointers",description:"Clickable elements are now a pointer",code:"button, .show-followButton-button, .main-dropDown-dropDown, .x-toggle-wrapper, .main-playlistEditDetailsModal-closeBtn, .main-trackList-rowPlayPauseButton, .main-rootlist-rootlistItemLink:link, .main-rootlist-rootlistItemLink:visited, .x-sortBox-sortDropdown, .main-contextMenu-menuItemButton, .main-trackList-column, .main-moreButton-button, .x-downloadButton-button, .main-playButton-PlayButton, .main-coverSlotExpandedCollapseButton-chevron, .main-coverSlotCollapsed-chevron, .control-button:focus, .control-button:hover, .main-repeatButton-button, .main-skipForwardButton-button, .main-playPauseButton-button, .main-skipBackButton-button, .main-shuffleButton-button, .main-addButton-button, .progress-bar__slider, .playback-bar, .main-editImageButton-image, .X1lXSiVj0pzhQCUo_72A { cursor: pointer !important; }",preview:"resources/assets/snippets/pointer.png"},{title:"Remove Top gradient",description:"Removes gradient from home page and playlist page",code:".main-entityHeader-backgroundColor { display: none !important; } .main-actionBarBackground-background { display: none !important; } .main-home-homeHeader { display: none !important; }",preview:"resources/assets/snippets/remove-gradient.png"},{title:"Fix Liked Button",description:"Fixes Liked Button colors",code:'#_R_G *:not([fill="none"]) { fill: var(--spice-button) !important; } #_R_G *:not([stroke="none"]) { stroke: var(--spice-button); } .main-addButton-button[aria-checked="false"] { color: rgba(var(--spice-rgb-selected-row), 0.7); } .control-button-heart[aria-checked="true"], .main-addButton-button, .main-addButton-active:focus, .main-addButton-active:hover { color: var(--spice-button); }',preview:"resources/assets/snippets/fix-liked-button.png"},{title:"Hide Sidebar ScrollBar",description:"Hides Sidebar ScrollBar near playlist section",code:".os-scrollbar:nth-child(6) .os-scrollbar-handle { visibility: hidden; }",preview:"resources/assets/snippets/hide-sidebar-scrollbar.png"},{title:"Modern ScrollBar",description:"Thin rounded modern scrollbar",code:".os-theme-spotify.os-host-transition > .os-scrollbar-vertical > .os-scrollbar-track > .os-scrollbar-handle { border-radius: 4px; width: 6px; background-color: var(--spice-button-disabled); } .os-theme-spotify.os-host-transition > .os-scrollbar-vertical > .os-scrollbar-track { width: 6px; }",preview:"resources/assets/snippets/modern-scrollbar.png"},{title:"Remove liked and Episodes icon",description:"Removes the liked and episodes icon from the sidebar",code:'.main-collectionLinkButton-collectionLinkButton[href="/collection/tracks"], .main-collectionLinkButton-collectionLinkButton[href="/collection/episodes"] {display: none;}',preview:"resources/assets/snippets/remove-ep-likes.png"},{title:"Rotating Cover Art",description:"Adds circular mask to cover art and rotation",code:"@keyframes rotating { from { transform: rotate(0deg); } to { transform: rotate(360deg); }} .cover-art { animation: rotating 2s linear infinite; clip-path: circle(50% at 50% 50%);}",preview:"resources/assets/snippets/rotating-coverart"}];async function Yr(e,t=1,n=[],r){let a=r?`https://api.github.com/search/repositories?q=${encodeURIComponent(r+"+topic:"+e)}&per_page=100`:`https://api.github.com/search/repositories?q=${encodeURIComponent("topic:"+e)}&per_page=100`;t&&(a+="&page="+t);const o=await fetch(a).then(e=>e.json()).catch(()=>[]);if(o.items)return J(s({},o),{page_count:o.items.length,items:o.items.filter(e=>!n.includes(e.html_url))});Spicetify.showNotification("Too Many Requests, Cool Down.",!0)}async function Xr(e,t,n){var r=window.sessionStorage.getItem(e+"-"+t);const a=window.sessionStorage.getItem("noManifests");if(r)return JSON.parse(r);const o=`https://raw.githubusercontent.com/${e}/${t}/${n}/manifest.json`;return null!=a&&a.includes(o)?null:((r=await fetch(o).then(e=>e.json()).catch(()=>{var r=[o],a="noManifests";r&&r.forEach(e=>{a=a||r.user+"-"+r.repo;var t=window.sessionStorage.getItem(a);const n=t?JSON.parse(t):[];n.push(e),window.sessionStorage.setItem(a,JSON.stringify(n))})}))&&window.sessionStorage.setItem(e+"-"+t,JSON.stringify(r)),r)}async function Qr(t,r,a,o=!1){try{let e;var n=t.match(new RegExp("https:\\/\\/api\\.github\\.com\\/repos\\/(?.+)\\/(?.+)\\/contents"));if(!n||!n.groups)return null;const{user:i,repo:s}=n.groups;return e=await Xr(i,s,r),(e=Array.isArray(e)?e:[e]).reduce((e,t)=>{var n=t.branch||r,n={manifest:t,title:t.name,subtitle:t.description,authors:er(t.authors,i),user:i,repo:s,branch:n,imageURL:t.preview&&t.preview.startsWith("http")?t.preview:`https://raw.githubusercontent.com/${i}/${s}/${n}/`+t.preview,extensionURL:t.main.startsWith("http")?t.main:`https://raw.githubusercontent.com/${i}/${s}/${n}/`+t.main,readmeURL:t.readme&&t.readme.startsWith("http")?t.readme:`https://raw.githubusercontent.com/${i}/${s}/${n}/`+t.readme,stars:a,tags:t.tags};return t&&t.name&&t.description&&t.main&&(o&&localStorage.getItem(`marketplace:installed:${i}/${s}/`+t.main)||e.push(n)),e},[])}catch(e){return null}}async function Zr(t,r,a){try{let e;var n=t.match(new RegExp("https:\\/\\/api\\.github\\.com\\/repos\\/(?.+)\\/(?.+)\\/contents"));if(!n||!n.groups)return null;const{user:o,repo:i}=n.groups;return e=await Xr(o,i,r),(e=Array.isArray(e)?e:[e]).reduce((e,t)=>{var n=t.branch||r,n={manifest:t,title:t.name,subtitle:t.description,authors:er(t.authors,o),user:o,repo:i,branch:n,imageURL:t.preview&&t.preview.startsWith("http")?t.preview:`https://raw.githubusercontent.com/${o}/${i}/${n}/`+t.preview,readmeURL:t.readme&&t.readme.startsWith("http")?t.readme:`https://raw.githubusercontent.com/${o}/${i}/${n}/`+t.readme,stars:a,tags:t.tags,cssURL:t.usercss.startsWith("http")?t.usercss:`https://raw.githubusercontent.com/${o}/${i}/${n}/`+t.usercss,schemesURL:t.schemes?t.schemes.startsWith("http")?t.schemes:`https://raw.githubusercontent.com/${o}/${i}/${n}/`+t.schemes:null,include:t.include};return null!=t&&t.name&&null!=t&&t.usercss&&null!=t&&t.description&&e.push(n),e},[])}catch(e){return null}}async function ea(t,r,a){try{let e;var n=t.match(new RegExp("https:\\/\\/api\\.github\\.com\\/repos\\/(?.+)\\/(?.+)\\/contents"));if(!n||!n.groups)return null;const{user:o,repo:i}=n.groups;return e=await Xr(o,i,r),(e=Array.isArray(e)?e:[e]).reduce((e,t)=>{var n=t.branch||r,n={manifest:t,title:t.name,subtitle:t.description,authors:er(t.authors,o),user:o,repo:i,branch:n,imageURL:t.preview&&t.preview.startsWith("http")?t.preview:`https://raw.githubusercontent.com/${o}/${i}/${n}/`+t.preview,readmeURL:t.readme&&t.readme.startsWith("http")?t.readme:`https://raw.githubusercontent.com/${o}/${i}/${n}/`+t.readme,stars:a,tags:t.tags};return t&&t.name&&t.description&&e.push(n),e},[])}catch(e){return null}}var ta=async()=>{return(await fetch("https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/resources/blacklist.json").then(e=>e.json()).catch(()=>({}))).repos},na=async()=>{return Wr.reduce((e,t)=>{const n=s({},t);return n.preview&&(n.imageURL=n.preview.startsWith("http")?n.preview:"https://raw.githubusercontent.com/spicetify/spicetify-marketplace/main/"+n.preview,delete n.preview),e.push(n),e},[])},ra=t(y("react")),aa=class extends ra.default.Component{render(){return ra.default.createElement("div",{onClick:this.props.onClick},ra.default.createElement("p",{style:{fontSize:100,lineHeight:"65px"}},"»"),ra.default.createElement("span",{style:{fontSize:20}},"Load more"))}},oa=t(y("react")),ia=()=>oa.default.createElement("svg",{width:"100px",height:"100px",viewBox:"0 0 100 100",preserveAspectRatio:"xMidYMid"},oa.default.createElement("circle",{cx:"50",cy:"50",r:"0",fill:"none",stroke:"currentColor",strokeWidth:"2"},oa.default.createElement("animate",{attributeName:"r",repeatCount:"indefinite",dur:"1s",values:"0;40",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"0s"}),oa.default.createElement("animate",{attributeName:"opacity",repeatCount:"indefinite",dur:"1s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"0s"})),oa.default.createElement("circle",{cx:"50",cy:"50",r:"0",fill:"none",stroke:"currentColor",strokeWidth:"2"},oa.default.createElement("animate",{attributeName:"r",repeatCount:"indefinite",dur:"1s",values:"0;40",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"-0.5s"}),oa.default.createElement("animate",{attributeName:"opacity",repeatCount:"indefinite",dur:"1s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"-0.5s"}))),sa=t(y("react")),la=()=>sa.default.createElement("svg",{role:"img",width:"16",height:"16",viewBox:"0 0 24 24","aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"},sa.default.createElement("path",{d:"M24 13.616v-3.232c-1.651-.587-2.694-.752-3.219-2.019v-.001c-.527-1.271.1-2.134.847-3.707l-2.285-2.285c-1.561.742-2.433 1.375-3.707.847h-.001c-1.269-.526-1.435-1.576-2.019-3.219h-3.232c-.582 1.635-.749 2.692-2.019 3.219h-.001c-1.271.528-2.132-.098-3.707-.847l-2.285 2.285c.745 1.568 1.375 2.434.847 3.707-.527 1.271-1.584 1.438-3.219 2.02v3.232c1.632.58 2.692.749 3.219 2.019.53 1.282-.114 2.166-.847 3.707l2.285 2.286c1.562-.743 2.434-1.375 3.707-.847h.001c1.27.526 1.436 1.579 2.019 3.219h3.232c.582-1.636.75-2.69 2.027-3.222h.001c1.262-.524 2.12.101 3.698.851l2.285-2.286c-.744-1.563-1.375-2.433-.848-3.706.527-1.271 1.588-1.44 3.221-2.021zm-12 2.384c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z",fill:"currentColor"})),ca=t(y("react")),ua=()=>ca.default.createElement("svg",{className:"devtools-icon",version:"1.1",viewBox:"1 1 22 22",xmlSpace:"preserve",xmlns:"http://www.w3.org/2000/svg"},ca.default.createElement("g",{className:"devtools-icon-internal",id:"grid_system"}),ca.default.createElement("g",{id:"_icons"},ca.default.createElement("path",{d:"M18,12v-0.9l0.7-5.7C18.8,4.5,18.6,3.7,18,3c-0.6-0.6-1.4-1-2.2-1H8.3C7.4,2,6.6,2.4,6,3C5.4,3.7,5.2,4.5,5.3,5.4L6,11.1 V12c0,1.6,1.3,2.9,2.8,3l-0.4,2.9c-0.1,1,0.2,2.1,0.8,2.9S11,22,12,22s2-0.5,2.7-1.2s1-1.8,0.8-2.9L15.2,15 C16.7,14.9,18,13.6,18,12z M7.5,4.3C7.7,4.1,8,4,8.3,4H13v2c0,0.6,0.4,1,1,1s1-0.4,1-1V4h0.7c0.3,0,0.6,0.1,0.8,0.3 c0.2,0.2,0.3,0.5,0.2,0.8L16.1,10H7.9L7.3,5.1C7.2,4.8,7.3,4.6,7.5,4.3z M13.2,19.4c-0.6,0.7-1.8,0.7-2.4,0 c-0.3-0.4-0.4-0.8-0.4-1.3l0.5-3.2h2.3l0.5,3.2C13.7,18.6,13.5,19.1,13.2,19.4z M15,13h-1h-4H9c-0.6,0-1-0.4-1-1h8 C16,12.6,15.6,13,15,13z"}))),pa=t(y("react")),da=t(e()),ha=t=>{var e=t.sortBoxOptions.map(e=>({value:e.key,label:e.value})),n=t.sortBoxOptions.find(t.sortBySelectedFn);return pa.default.createElement("div",{className:"marketplace-sortBox"},pa.default.createElement("div",{className:"marketplace-sortBox-header"},pa.default.createElement("div",{className:"marketplace-sortBox-header-title"}),pa.default.createElement(da.default,{placeholder:"Select an option",options:e,value:null==n?void 0:n.key,onChange:e=>{t.onChange(e.value)}})))},j=t(y("react")),fa=t(e()),Me=class extends j.default.Component{constructor(e){super(e)}render(){const e=this.props["t"];return this.props.item.enabled?j.default.createElement("li",{className:"marketplace-tabBar-headerItem","data-tab":this.props.item.value,onClick:e=>{e.preventDefault(),this.props.switchTo(this.props.item)}},j.default.createElement("a",{"aria-current":"page",className:"marketplace-tabBar-headerItemLink "+(this.props.item.active?"marketplace-tabBar-active":""),draggable:"false",href:""},j.default.createElement("span",{className:"main-type-mestoBold"},e("tabs."+this.props.item.value)))):null}},ma=jn()(Me),ga=j.default.memo(function({items:e,switchTo:t}){return j.default.createElement("li",{className:"marketplace-tabBar-headerItem"},j.default.createElement(fa.default,{className:"main-type-mestoBold",options:e,value:"More",placeholder:"More",onChange:t}))}),va=e=>{const t=document.querySelector(".Root__main-view .os-resize-observer-host");if(!t)return null;const[n,r]=(0,j.useState)(t.clientWidth),a=()=>r(t.clientWidth);return(0,j.useEffect)(()=>{const e=new ResizeObserver(a);return e.observe(t),()=>{e.disconnect()}},[a]),(0,j.useEffect)(()=>{{var e=document.querySelector(".marketplace-tabBar");const t=document.querySelector(".main-topBar-topbarContentWrapper");e&&t&&"/marketplace"==Spicetify.Platform.History.location.pathname&&t.appendChild(e),Spicetify.Platform.History.listen(({pathname:e})=>{"/marketplace"!=e&&null!=(e=document.querySelector(".marketplace-tabBar"))&&e.remove()})}}),j.default.createElement(ya,{windowSize:n,links:e.links,activeLink:e.activeLink,switchCallback:e.switchCallback})},ya=j.default.memo(function({links:e,activeLink:n,switchCallback:t,windowSize:r=1/0}){const a=j.default.useRef(null),[o,i]=(0,j.useState)([]),[s,l]=(0,j.useState)(0),[c,u]=(0,j.useState)([]),p=e.map(({name:e,enabled:t})=>{return{label:e,value:e,active:e===n,enabled:t}});return(0,j.useEffect)(()=>{a.current&&l(a.current.clientWidth)},[r]),(0,j.useEffect)(()=>{if(a.current){const t=Array.from(a.current.children);var e=t.map(e=>e.clientWidth);i(e)}},[e]),(0,j.useEffect)(()=>{if(a.current)if(o.reduce((e,t)=>e+t,0)<=s)u([]);else{var e=Math.max(...o);const r=[];let n=e;o.forEach((e,t)=>{s>=n+e?n+=e:r.push(t)}),u(r)}},[s,o]),j.default.createElement("nav",{className:"marketplace-tabBar marketplace-tabBar-nav"},j.default.createElement("ul",{className:"marketplace-tabBar-header",ref:a},p.filter((e,t)=>!c.includes(t)).map(e=>j.default.createElement(ma,{key:e.value,item:e,switchTo:t})),c.length||0===o.length?j.default.createElement(ga,{items:c.map(e=>p[e]).filter(e=>e),switchTo:t}):null))}),T=t(y("react")),ba=t(y("react")),Sa=()=>ba.default.createElement("svg",{role:"img",width:"16",height:"16",viewBox:"0 0 448 512","aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"},ba.default.createElement("path",{d:"M53.21 467c1.562 24.84 23.02 45 47.9 45h245.8c24.88 0 46.33-20.16 47.9-45L416 128H32L53.21 467zM432 32H320l-11.58-23.16c-2.709-5.42-8.25-8.844-14.31-8.844H153.9c-6.061 0-11.6 3.424-14.31 8.844L128 32H16c-8.836 0-16 7.162-16 16V80c0 8.836 7.164 16 16 16h416c8.838 0 16-7.164 16-16V48C448 39.16 440.8 32 432 32z",fill:"currentColor"})),wa=t(y("react")),Ea=()=>wa.default.createElement("svg",{role:"img",width:"16",height:"16",viewBox:"0 0 512 512","aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"},wa.default.createElement("path",{d:"M480 352h-133.5l-45.25 45.25C289.2 409.3 273.1 416 256 416s-33.16-6.656-45.25-18.75L165.5 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96C512 366.3 497.7 352 480 352zM432 456c-13.2 0-24-10.8-24-24c0-13.2 10.8-24 24-24s24 10.8 24 24C456 445.2 445.2 456 432 456zM233.4 374.6C239.6 380.9 247.8 384 256 384s16.38-3.125 22.62-9.375l128-128c12.49-12.5 12.49-32.75 0-45.25c-12.5-12.5-32.76-12.5-45.25 0L288 274.8V32c0-17.67-14.33-32-32-32C238.3 0 224 14.33 224 32v242.8L150.6 201.4c-12.49-12.5-32.75-12.5-45.25 0c-12.49 12.5-12.49 32.75 0 45.25L233.4 374.6z",fill:"currentColor"})),ka=t(y("react")),Oa=()=>ka.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24"},ka.default.createElement("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z",fill:"currentColor"})),xa=t(y("react")),Ca=e=>{return xa.default.createElement("div",{className:"marketplace-card__authors"},e.authors.map((e,t)=>xa.default.createElement("a",{title:e.name,className:"marketplace-card__author",href:e.url,draggable:"false",dir:"auto",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),key:t},e.name)))},Na=t(y("react")),Ia=r=>{const[e,t]=Na.default.useState(!1),a={[g("grid.externalJS")]:"external JS",[g("grid.dark")]:"dark",[g("grid.light")]:"light"};var n=e=>{const t=e.filter((e,t,n)=>n.indexOf(e)===t);return t.reduce((e,t)=>{var n=a[t]||t;return!r.showTags&&t!==g("grid.externalJS")||e.push(Na.default.createElement("li",{className:"marketplace-card__tag",draggable:!1,"data-tag":n},t)),e},[])},o=r.tags.slice(0,4),i=r.tags.slice(4);return Na.default.createElement("div",{className:"marketplace-card__tags-container"},Na.default.createElement("ul",{className:"marketplace-card__tags"},n(o),i.length&&e?n(i):null),i.length&&!e?Na.default.createElement("button",{className:"marketplace-card__tags-more-btn",onClick:e=>{e.stopPropagation(),t(!0)}},"..."):null)},La=class extends T.default.Component{constructor(e){super(e),this.key=null,this.type=La,this.menuType=Spicetify.ReactComponent.Menu,this.localStorageKey=lr(e),Object.assign(this,e),this.tags=e.item.tags||[],e.item.include&&this.tags.push(g("grid.externalJS")),this.state={installed:null!==localStorage.getItem(this.localStorageKey),stars:this.props.item.stars||0,tagsExpanded:!1,externalUrl:this.props.item.user&&this.props.item.repo?`https://github.com/${this.props.item.user}/`+this.props.item.repo:"",lastUpdated:this.props.item.user&&this.props.item.repo?this.props.item.lastUpdated:void 0}}isInstalled(){return null!==localStorage.getItem(this.localStorageKey)}async componentDidMount(){if("Installed"===this.props.CONFIG.activeTab&&"snippet"!==this.props.type){var e=`https://api.github.com/repos/${this.props.item.user}/`+this.props.item.repo,{stargazers_count:e,pushed_at:t}=await fetch(e).then(e=>e.json());const n={stars:0,lastUpdated:void 0};this.state.stars!==e&&this.props.CONFIG.visual.stars&&(n.stars=e,console.log("Stars updated to: "+e)),this.state.lastUpdated!==t&&(n.lastUpdated=t,console.log("New update pushed at: "+t))}}buttonClicked(){var e,t;"extension"===this.props.type?(this.isInstalled()?(console.log("Extension already installed, removing"),this.removeExtension()):this.installExtension(),Jr("RELOAD")):"theme"===this.props.type?(t=(e=localStorage.getItem("marketplace:theme-installed"))?S(e,{}):{},console.log(t),console.log(e),this.isInstalled()?(console.log("Theme already installed, removing"),this.removeTheme(this.localStorageKey)):(this.removeTheme(),this.installTheme()),(null!=(e=this.props.item.manifest)&&e.include||t.include)&&Jr("RELOAD")):"app"===this.props.type?window.open(this.state.externalUrl,"_blank"):"snippet"===this.props.type?this.isInstalled()?(console.log("Snippet already installed, removing"),this.removeSnippet()):this.installSnippet():console.error("Unknown card type")}installExtension(){if(console.log("Installing extension "+this.localStorageKey),this.props.item){var{manifest:e,title:t,subtitle:n,authors:r,user:a,repo:o,branch:i,imageURL:s,extensionURL:l,readmeURL:c,lastUpdated:u}=this.props.item;localStorage.setItem(this.localStorageKey,JSON.stringify({manifest:e,type:this.props.type,title:t,subtitle:n,authors:r,user:a,repo:o,branch:i,imageURL:s,extensionURL:l,readmeURL:c,stars:this.state.stars,lastUpdated:u}));const p=S(pr,[]);-1===p.indexOf(this.localStorageKey)&&(p.push(this.localStorageKey),localStorage.setItem(pr,JSON.stringify(p))),console.log("Installed"),this.setState({installed:!0})}else Spicetify.showNotification("There was an error installing extension",!0)}removeExtension(){if(localStorage.getItem(this.localStorageKey)){console.log("Removing extension "+this.localStorageKey),localStorage.removeItem(this.localStorageKey);const t=S(pr,[]);var e=t.filter(e=>e!==this.localStorageKey);localStorage.setItem(pr,JSON.stringify(e)),console.log("Removed"),this.setState({installed:!1})}}async installTheme(){var t=this.props["item"];if(t){console.log("Installing theme "+this.localStorageKey);let e={};if(t.schemesURL){const y=await fetch(t.schemesURL);var n=await y.text();e=Qn(n)}var n=Object.keys(e)[0],n=(console.log(e,n),n||null),{manifest:r,title:a,subtitle:o,authors:i,user:s,repo:l,branch:c,imageURL:u,extensionURL:p,readmeURL:d,cssURL:h,schemesURL:f,include:m,lastUpdated:g}=t;localStorage.setItem(this.localStorageKey,JSON.stringify({manifest:r,type:this.props.type,title:a,subtitle:o,authors:i,user:s,repo:l,branch:c,imageURL:u,extensionURL:p,readmeURL:d,stars:this.state.stars,tags:this.tags,cssURL:h,schemesURL:f,include:m,schemes:e,activeScheme:n,lastUpdated:g}));const v=S(dr,[]);-1===v.indexOf(this.localStorageKey)&&(v.push(this.localStorageKey),localStorage.setItem(dr,JSON.stringify(v)),localStorage.setItem(E,this.localStorageKey)),console.log("Installed"),t.include||(this.fetchAndInjectUserCSS(this.localStorageKey),this.props.updateActiveTheme(this.localStorageKey),this.props.updateColourSchemes(e,n),(a=null==(r=this.props.item.manifest)?void 0:r.name)&&(Spicetify.Config.current_theme=a),n&&(Spicetify.Config.color_scheme=n)),this.setState({installed:!0})}else Spicetify.showNotification("There was an error installing theme",!0)}removeTheme(t){var e=(t=t||localStorage.getItem(E))&&localStorage.getItem(t);if(t&&e){console.log("Removing theme "+t),localStorage.removeItem(t),localStorage.removeItem(E);const n=S(dr,[]);e=n.filter(e=>e!==t);localStorage.setItem(dr,JSON.stringify(e)),console.log("Removed"),this.fetchAndInjectUserCSS(null),this.props.updateActiveTheme(null),this.props.updateColourSchemes(null,null),Spicetify.Config.current_theme=Spicetify.Config.local_theme,Spicetify.Config.color_scheme=Spicetify.Config.local_color_scheme,this.setState({installed:!1})}}installSnippet(){console.log("Installing snippet "+this.localStorageKey),localStorage.setItem(this.localStorageKey,JSON.stringify({code:this.props.item.code,title:this.props.item.title,description:this.props.item.description,imageURL:this.props.item.imageURL}));const e=S(w,[]);-1===e.indexOf(this.localStorageKey)&&(e.push(this.localStorageKey),localStorage.setItem(w,JSON.stringify(e)));var t=e.map(e=>S(e));Zn(t),this.setState({installed:!0})}removeSnippet(){localStorage.removeItem(this.localStorageKey);const e=S(w,[]),t=e.filter(e=>e!==this.localStorageKey);localStorage.setItem(w,JSON.stringify(t));var n=t.map(e=>S(e));Zn(n),this.setState({installed:!1})}async fetchAndInjectUserCSS(e){try{var t=e?await ir(this.props.item):void 0;or(t)}catch(e){console.warn(e)}}openReadme(){var e;null!=(e=this.props.item)&&e.manifest&&null!=(e=null==(e=this.props.item)?void 0:e.manifest)&&e.readme?Spicetify.Platform.History.push({pathname:vr+"/readme",state:{data:{title:this.props.item.title,user:this.props.item.user,repo:this.props.item.repo,branch:this.props.item.branch,readmeURL:this.props.item.readmeURL,type:this.props.type,install:this.buttonClicked.bind(this),isInstalled:this.isInstalled.bind(this)}}}):Spicetify.showNotification("No page was found",!0)}render(){var e,t=this.isInstalled();if("Installed"===this.props.CONFIG.activeTab&&!t)return console.log("Card item not installed"),null;const n=["main-card-card","marketplace-card--"+this.props.type],r=(t&&n.push("marketplace-card--installed"),[]);return"snippet"!==this.props.type&&this.props.visual.stars&&r.push("★ "+this.state.stars),T.default.createElement("div",{className:n.join(" "),onClick:()=>{if("snippet"===this.props.type){var e=this.props.item.title.replace(/\n/g,"");if(null!=(e=S("marketplace:installed:snippet:"+e))&&e.custom)return Jr("EDIT_SNIPPET",void 0,void 0,this.props);Jr("VIEW_SNIPPET",void 0,void 0,this.props)}else this.openReadme()}},T.default.createElement("div",{className:"main-card-draggable",draggable:"true"},T.default.createElement("div",{className:"main-card-imageContainer"},T.default.createElement("div",{className:"main-cardImage-imageWrapper"},T.default.createElement("div",null,T.default.createElement("img",{alt:"","aria-hidden":"false",draggable:"false",loading:"lazy",src:this.props.item.imageURL,className:"main-image-image main-cardImage-image",onError:e=>{e.currentTarget.setAttribute("src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII"),null!=(e=e.currentTarget.closest(".main-cardImage-imageWrapper"))&&e.classList.add("main-cardImage-imageWrapper--error")}})))),T.default.createElement("div",{className:"main-card-cardMetadata"},T.default.createElement("a",{draggable:"false",title:"snippet"===this.props.type?this.props.item.title:null==(e=this.props.item.manifest)?void 0:e.name,className:"main-cardHeader-link",dir:"auto",href:"snippet"!==this.props.type?this.state.externalUrl:"https://github.com/spicetify/spicetify-marketplace/blob/main/packages/marketplace/src/resources/snippets.ts",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation()},T.default.createElement("div",{className:"main-cardHeader-text main-type-balladBold"},this.props.item.title)),T.default.createElement("div",{className:"main-cardSubHeader-root main-type-mestoBold marketplace-cardSubHeader"},this.props.item.authors&&T.default.createElement(Ca,{authors:this.props.item.authors}),T.default.createElement("span",null,r.join(" ‒ "))),T.default.createElement("p",{className:"marketplace-card-desc"},"snippet"===this.props.type?this.props.item.description:null==(e=this.props.item.manifest)?void 0:e.description),this.props.item.lastUpdated&&T.default.createElement("p",{className:"marketplace-card-desc"},g("grid.lastUpdated",{val:new Date(this.props.item.lastUpdated),formatParams:{val:{year:"numeric",month:"long",day:"numeric"}}})),this.tags.length?T.default.createElement("div",{className:"marketplace-card__bottom-meta main-type-mestoBold"},T.default.createElement(Ia,{tags:this.tags,showTags:this.props.CONFIG.visual.tags})):null,t&&T.default.createElement("div",{className:"marketplace-card__bottom-meta main-type-mestoBold"},"✓ ",g("grid.installed")),T.default.createElement("div",{className:"main-card-PlayButtonContainer"},T.default.createElement(C,{classes:["marketplace-installButton"],type:"circle",label:"app"===this.props.type?g("github"):g(t?"remove":"install"),onClick:e=>{e.stopPropagation(),this.buttonClicked()}},"app"===this.props.type?T.default.createElement(Oa,null):t?T.default.createElement(Sa,null):T.default.createElement(Ea,null))))))}},Pa=jn()(La),Ra=t(y("react")),ja=t(ge()),Ta=t(y("react-dom"));var _a=async function(t,n,e){for(;!Spicetify?.PopupModal||!Spicetify?.LocalStorage;)await new Promise(e=>setTimeout(e,100));var r,t=`spcr-whats-new_${t}-version`,a=Spicetify.LocalStorage.get(t)??"";try{(0,ja.default)(n,a)&&(Spicetify.LocalStorage.set(t,n),r={...e,content:function(e){const t=document.createElement("div"),n=(t.setAttribute("id","whats-new-content-wrapper"),document.createElement("style"));return n.textContent=` #whats-new-content-wrapper ul, #whats-new-content-wrapper ol { list-style: inherit; margin-left: 1em; } `,Ta.default.render(e,t),t.appendChild(n),t}(e.content)},Spicetify.PopupModal.display(r))}catch(e){Spicetify.LocalStorage.set(t,n)}},Aa=async()=>{var e=await fetch(yr).then(e=>e.json()).then(e=>{e=e.message?null:e.body;return e&&sr(e,"spicetify","spicetify-marketplace")}).catch(e=>(console.error(e),null));e&&_a("marketplace",ur,{title:"✨ Marketplace v0.8.2",content:Ra.default.createElement("div",{dangerouslySetInnerHTML:{__html:e}}),isLarge:!0})},_=class extends v.default.Component{constructor(e){super(e),this.endOfList=!1,this.lastScroll=0,this.requestQueue=[],this.requestPage=0,this.cardList=[],Object.assign(this,e),this.updateAppConfig=e.updateAppConfig.bind(this),this.sortConfig={by:S(mr,"top")},this.state={version:ur,newUpdate:!1,searchValue:"",cards:[],tabs:e.CONFIG.tabs,rest:!0,endOfList:!1,schemes:e.CONFIG.theme.schemes,activeScheme:e.CONFIG.theme.activeScheme,activeThemeKey:e.CONFIG.theme.activeThemeKey}}getInstalledTheme(){var e=localStorage.getItem(E);return(e=e&&localStorage.getItem(e))?JSON.parse(e):null}newRequest(e,t){this.cardList=[];var n=[];this.requestQueue.unshift(n),this.loadAmount(n,e,t)}appendCard(e,t){e=v.default.createElement(Pa,{item:e,key:this.props.CONFIG.activeTab+":"+e.title,CONFIG:this.CONFIG,visual:this.props.CONFIG.visual,type:t,activeThemeKey:this.state.activeThemeKey,updateColourSchemes:this.updateColourSchemes.bind(this),updateActiveTheme:this.setActiveTheme.bind(this)});this.cardList.push(e),this.setState({cards:this.cardList})}updateSort(e){e&&(this.sortConfig.by=e,localStorage.setItem(mr,e)),this.requestPage=0,this.cardList=[],this.setState({cards:[],rest:!1,endOfList:!1}),this.endOfList=!1,this.newRequest(k)}updateTabs(){this.setState({tabs:[...this.props.CONFIG.tabs]})}updatePostsVisual(){this.cardList=this.cardList.map((e,t)=>v.default.createElement(Pa,J(s({},e.props),{key:t.toString(),CONFIG:this.CONFIG}))),this.setState({cards:[...this.cardList]})}switchTo(e){this.CONFIG.activeTab=e.value,localStorage.setItem(hr,e.value),this.cardList=[],this.requestPage=0,this.setState({cards:[],rest:!1,endOfList:!1}),this.endOfList=!1,this.newRequest(k)}async loadPage(t,e){switch(this.CONFIG.activeTab){case"Extensions":var n=await Yr("spicetify-extensions",this.requestPage,this.BLACKLIST,e);for(const i of n.items){const s=await Qr(i.contents_url,i.default_branch,i.stargazers_count,this.CONFIG.visual.hideInstalled);if(1{Object.assign(e,{lastUpdated:i.pushed_at}),this.appendCard(e,"extension")})}var r=-1{e=S(e);if(1{Object.assign(e,{lastUpdated:u.pushed_at}),this.appendCard(e,"theme")})}n=-1{Object.assign(e,{lastUpdated:d.pushed_at}),this.appendCard(e,"app")})}a=-1this.appendCard(e,"snippet"))}}return this.setState({rest:!0,endOfList:!0}),this.endOfList=!0,0}async loadAmount(t,e=k,n){for(this.setState({rest:!1}),e+=this.cardList.length,this.requestPage=await this.loadPage(t,n);this.requestPage&&-1!==this.requestPage&&this.cardList.lengthe!==t):(this.requestQueue.shift(),this.setState({rest:!0}))}loadMore(){this.state.rest&&!this.endOfList&&this.loadAmount(this.requestQueue[0],k)}updateColourSchemes(e,t){console.log("updateColourSchemes",e,t),this.CONFIG.theme.schemes=e,(this.CONFIG.theme.activeScheme=t)&&(Spicetify.Config.color_scheme=t),e&&t&&e[t]?ar(this.CONFIG.theme.schemes[t]):ar(null);var n=S(E);const r=S(n);r?(r.activeScheme=t,console.log(r),localStorage.setItem(n,JSON.stringify(r))):console.log("No installed theme data"),this.setState({schemes:e,activeScheme:t})}async componentDidMount(){fetch("https://api.github.com/repos/spicetify/spicetify-marketplace/releases").then(e=>e.json()).then(e=>{this.setState({version:e[0].name});try{this.setState({newUpdate:Xn.default.gt(this.state.version,ur)})}catch(e){console.error(e)}},e=>{console.error("Failed to check for updates",e)}),Aa(),this.gridUpdateTabs=this.updateTabs.bind(this),this.gridUpdatePostsVisual=this.updatePostsVisual.bind(this);const e=document.querySelector(".os-viewport");this.checkScroll=this.isScrolledBottom.bind(this),e&&(e.addEventListener("scroll",this.checkScroll),this.cardList.length)?0=e.scrollHeight&&this.loadMore()}setActiveTheme(e){this.CONFIG.theme.activeThemeKey=e,this.setState({activeThemeKey:e})}getActiveScheme(){return this.state.activeScheme}handleSearch(e){"Enter"===e.key?(this.setState({endOfList:!1}),this.newRequest(k,this.state.searchValue.trim().toLowerCase()),this.searchRequested=!0):"Backspace"!==e.key&&"Delete"!==e.key||!this.searchRequested||""!==this.state.searchValue.trim()||(this.setState({endOfList:!1}),this.newRequest(k,this.state.searchValue.trim().toLowerCase()),this.searchRequested=!1)}render(){const n=this.props["t"];return v.default.createElement("section",{className:"contentSpacing"},v.default.createElement("div",{className:"marketplace-header"},v.default.createElement("div",{className:"marketplace-header__left"},v.default.createElement("h1",null,this.props.title),this.state.newUpdate?v.default.createElement("button",{type:"button",title:n("grid.newUpdate"),className:"marketplace-header-icon-button",id:"marketplace-update",onClick:()=>window.location.href="https://github.com/spicetify/spicetify-marketplace"},v.default.createElement(Ea,null)," ",this.state.version):null),v.default.createElement("div",{className:"marketplace-header__right"},this.CONFIG.visual.themeDevTools?v.default.createElement("button",{type:"button",title:n("devTools.title"),className:"marketplace-header-icon-button",onClick:()=>Jr("THEME_DEV_TOOLS")},v.default.createElement(ua,null)):null,this.state.activeScheme?v.default.createElement(ha,{onChange:e=>this.updateColourSchemes(this.state.schemes,e),sortBoxOptions:tr(this.state.schemes),sortBySelectedFn:e=>e.key===this.getActiveScheme()}):null,v.default.createElement("div",{className:"searchbar--bar__wrapper"},v.default.createElement("input",{className:"searchbar-bar",type:"text",placeholder:`${n("grid.search")} ${n("tabs."+this.CONFIG.activeTab)}...`,value:this.state.searchValue,onChange:e=>{this.setState({searchValue:e.target.value})},onKeyDown:this.handleSearch.bind(this)})),v.default.createElement("button",{type:"button",title:n("settings.title"),className:"marketplace-header-icon-button",id:"marketplace-settings-button",onClick:()=>Jr("SETTINGS",this.CONFIG,this.updateAppConfig)},v.default.createElement(la,null)))),[{handle:"extension",name:"Extensions"},{handle:"theme",name:"Themes"},{handle:"snippet",name:"Snippets"},{handle:"app",name:"Apps"}].map(t=>{var e=this.cardList.filter(e=>e.props.type===t.handle).filter(e=>{const t=this.state["searchValue"],{title:n,user:r}=e.props.item;if(""===t.trim()||n.toLowerCase().includes(t.trim().toLowerCase())||null!=r&&r.toLowerCase().includes(t.trim().toLowerCase()))return e}).map(e=>v.default.cloneElement(e,{activeThemeKey:this.state.activeThemeKey,key:lr(e.props)}));return e.length?v.default.createElement(v.default.Fragment,null,v.default.createElement("h2",{className:"marketplace-card-type-heading"},n("tabs."+t.name)),v.default.createElement("div",{className:"marketplace-grid main-gridContainer-gridContainer main-gridContainer-fixedWidth","data-tab":this.CONFIG.activeTab,"data-card-type":n("tabs."+t.name)},e)):null}),"Snippets"===this.CONFIG.activeTab?v.default.createElement(C,{classes:["marketplace-add-snippet-btn"],onClick:()=>Jr("ADD_SNIPPET")},"+ ",n("grid.addCSS")):null,v.default.createElement("footer",{className:"marketplace-footer"},!this.state.endOfList&&(this.state.rest?v.default.createElement(aa,{onClick:this.loadMore.bind(this)}):v.default.createElement(ia,null))),v.default.createElement(va,{switchCallback:this.switchTo.bind(this),links:this.CONFIG.tabs,activeLink:this.CONFIG.activeTab}))}},Da=jn()(_),A=t(y("react")),Be=class extends A.default.Component{constructor(){super(...arguments),this.state={isInstalled:this.props.data.isInstalled(),html:`

${this.props.t("readmePage.loading")}

`},this.getReadmeHTML=async()=>fetch(this.props.data.readmeURL).then(e=>{if(e.ok)return e.text();throw Spicetify.showNotification(`${this.props.t("readmePage.errorLoading")} (HTTP ${e.status})`,!0)}).then(e=>sr(e,this.props.data.user,this.props.data.repo)).then(e=>(e||Spicetify.Platform.History.goBack(),e)).catch(e=>(console.error(e),Spicetify.Platform.History.goBack(),null))}componentDidMount(){this.getReadmeHTML().then(e=>{null!=e&&this.setState({html:e})})}componentDidUpdate(){var e;const t=null==(e=document.querySelector("#marketplace-readme"))?void 0:e.closest("main");if(t){const n=setInterval(()=>{t.style.overflowY="visible",t.style.overflowY="auto",document.querySelector(".os-scrollbar-vertical.os-scrollbar-unusable")&&t||clearInterval(n)},1e3)}document.querySelectorAll("#marketplace-readme img").forEach(e=>{e.addEventListener("error",e=>{const t=e.target;e=t.getAttribute("src"),e=`https://raw.githubusercontent.com/${this.props.data.user}/${this.props.data.repo}/${this.props.data.branch}/`+e;t.setAttribute("src",e)},{once:!0})})}buttonContent(){return"app"===this.props.data.type?{icon:A.default.createElement(Oa,null),text:this.props.t("github")}:this.state.isInstalled?{icon:A.default.createElement(Sa,null),text:this.props.t("remove")}:{icon:A.default.createElement(Ea,null),text:this.props.t("install")}}render(){return A.default.createElement("section",{className:"contentSpacing"},A.default.createElement("div",{className:"marketplace-header"},A.default.createElement("div",{className:"marketplace-header__left"},A.default.createElement("h1",null,this.props.title)),A.default.createElement("div",{className:"marketplace-header__right"},A.default.createElement(C,{classes:["marketplace-header__button"],onClick:e=>{e.preventDefault(),this.props.data.install(),this.setState({isInstalled:!this.state.isInstalled})},label:this.buttonContent().text},this.buttonContent().icon," ",this.buttonContent().text))),"

Loading...

"===this.state.html?A.default.createElement("footer",{className:"marketplace-footer"},A.default.createElement(ia,null)):A.default.createElement("div",{id:"marketplace-readme",className:"marketplace-readme__container",dangerouslySetInnerHTML:{__html:this.state.html}}))}},$a=jn()(Be),Ue=(n.use(cn).use(Tn).init({resources:{en:{translation:{settings:{title:"Settings",optionsHeading:"Options",starCountLabel:"Stars count",tagsLabel:"Tags",devToolsLabel:"Theme developer tools",hideInstalledLabel:"Hide installed when browsing",colourShiftLabel:"Shift colours every minute",tabsHeading:"Tabs",resetHeading:"Reset",resetBtn:"$t(settings.resetHeading)",resetDescription:"Uninstall all extensions and themes, and reset preferences"},tabs:{Extensions:"Extensions",Themes:"Themes",Snippets:"Snippets",Apps:"Apps",Installed:"Installed"},snippets:{addTitle:"Add Snippet",editTitle:"Edit Snippet",viewTitle:"View Snippet",customCSS:"Custom CSS",customCSSPlaceholder:"Input your own custom CSS here! You can find them in the installed tab for management.",snippetName:"Snippet Name",snippetNamePlaceholder:"Enter a name for your custom snippet",snippetDesc:"Snippet Description",snippetDescPlaceholder:"Enter a description for your custom snippet",snippetPreview:"Snippet Preview",optional:"Optional",addImage:"Add image",changeImage:"Change image",saveCSS:"Save CSS"},reloadModal:{title:"Reload",description:"A page reload is required to complete this operation.",reloadNow:"Reload now",reloadLater:"Reload later"},devTools:{title:"Theme Dev Tools",noThemeInstalled:"Error: No marketplace theme installed",noThemeManifest:"Error: No theme manifest found",colorIniEditor:"Color.ini Editor",colorIniEditorPlaceholder:"[your-colour-scheme-name]",invalidCSS:"Invalid CSS"},grid:{spicetifyMarketplace:"Spicetify Marketplace",newUpdate:"New update",addCSS:"Add CSS",search:"Search",installed:"Installed",lastUpdated:"Last updated {{val, datetime}}",externalJS:"external JS",dark:"dark",light:"light"},readmePage:{title:"$t(grid.spicetifyMarketplace) - Readme",loading:"Loading...",errorLoading:"Error loading README"},github:"GitHub",install:"Install",remove:"Remove",save:"Save",colour_one:"colour",colour_other:"colours",favourite:"favourite"}},"en-US":{translation:{settings:{colourShiftLabel:"Shift colors every minute"},devTools:{colorIniEditorPlaceholder:"[your-color-scheme-name]"},colour_one:"color",colour_other:"colors",favourite:"favorite"}},fr:{translation:{settings:{title:"Réglages",optionsHeading:"Options",starCountLabel:"Nombres d’étoiles",tagsLabel:"Tags",devToolsLabel:"Outils pour les développeurs de thèmes",hideInstalledLabel:"Masquer ceux étant installés lors de la navigation",colourShiftLabel:"Changer de couleure chaque minutes",tabsHeading:"Onglets",resetHeading:"Réinitialiser",resetBtn:"$t(settings.resetHeading)",resetDescription:"Désinstaller toutes les extensions et tous les thèmes, ainsi que l’ensemble des réglages"},tabs:{Extensions:"Extensions",Themes:"Thèmes",Snippets:"Bribes",Apps:"Applications",Installed:"Installé(s)"},snippets:{addTitle:"Ajouter Bribe",editTitle:"Éditer Bribe",viewTitle:"Voir Bribe",customCSS:"CSS personnalisé",customCSSPlaceholder:"Insérez votre propre CSS personnalisé ici! Vous pouvez les retrouver dans l’onglet Installé pour les gérrer.",snippetName:"Nom de la bribe",snippetNamePlaceholder:"Entrer un nom pour votre bribe personnalisée",snippetDesc:"Description de la bribe",snippetDescPlaceholder:"Entrez une description pour votre bribe personnalisée",snippetPreview:"Prévisualiser la bribe",optional:"Optionnel",addImage:"Ajouter une image",changeImage:"Changer l’image",saveCSS:"Enregistrer le CSS"},reloadModal:{title:"Recharger",description:"Un rechargement de la page est requis pour finaliser cette opération.",reloadNow:"Recharger maintenant",reloadLater:"Recharger plus tard"},devTools:{title:"Outils de développeurs de thèmes",noThemeInstalled:"Erreur: Aucun thème du marché n’est installé",noThemeManifest:"Erreur: Aucun manifeste de thème trouvé",colorIniEditor:"Éditeur Color.ini",colorIniEditorPlaceholder:"[nom-de-votre-schéma-de-couleur]",invalidCSS:"CSS invalide"},grid:{spicetifyMarketplace:"Marché Spicetify",newUpdate:"Nouvelle mise à jour",addCSS:"Ajouter CSS",search:"Rechercher",installed:"Installé",lastUpdated:"Dernière mise à jour {{val, datetime}}",externalJS:"JS externe",dark:"sombre",light:"clair"},readmePage:{title:"$t(grid.spicetifyMarketplace) - Readme",loading:"Chargement…",errorLoading:"Erreur lors du chargement du README"},github:"GitHub",install:"Installer",remove:"Supprimer",save:"Enregistrer",colour_one:"couleure",colour_other:"couleures",favourite:"favoris"}},"zh-TW":{translation:{settings:{title:"設定",optionsHeading:"選項",starCountLabel:"收藏數",tagsLabel:"標籤",devToolsLabel:"主題開發者工具",hideInstalledLabel:"瀏覽時隱藏已安裝項目",colourShiftLabel:"每分鐘進行色調偏移",tabsHeading:"分頁",resetHeading:"重設",resetBtn:"$t(settings.resetHeading)",resetDescription:"解除安裝所有擴充套件和主題, 並重設偏好設定"},tabs:{Extensions:"擴充套件",Themes:"主題",Snippets:"微調片段",Apps:"功能模組",Installed:"已安裝項目"},snippets:{addTitle:"加入微調片段",editTitle:"編輯微調片段",viewTitle:"檢視微調片段",customCSS:"自訂 CSS",customCSSPlaceholder:"這裡可以輸入您的自訂 CSS!您可以在「已安裝項目」分頁中看到這些片段,進而進行管理。",snippetName:"微調片段名稱",snippetNamePlaceholder:"輸入自訂微調片段的名稱",snippetDesc:"微調片段描述",snippetDescPlaceholder:"輸入自訂微調片段的描述",snippetPreview:"微調片段預覽圖",optional:"非必須",addImage:"加入影像",changeImage:"更改影像",saveCSS:"儲存 CSS"},reloadModal:{title:"重新載入",description:"需要重新載入頁面,才能完成這個操作。",reloadNow:"立即重新載入",reloadLater:"稍後重新載入"},devTools:{title:"主題開發者工具",noThemeInstalled:"錯誤:未安裝商場主題",noThemeManifest:"錯誤:找不到主題資訊清單",colorIniEditor:"Color.ini 編輯器",colorIniEditorPlaceholder:"[您的色彩配置名稱]",invalidCSS:"CSS 無效"},grid:{spicetifyMarketplace:"Spicetify 商場",newUpdate:"有更新",addCSS:"加入 CSS",search:"搜尋",installed:"已經安裝",lastUpdated:"上次更新於 {{val, datetime}}",externalJS:"有外部 JS",dark:"暗色",light:"亮色"},readmePage:{title:"$t(grid.spicetifyMarketplace) – 說明",loading:"正在載入……",errorLoading:"載入 README 時發生錯誤"},github:"GitHub",install:"安裝",remove:"移除",save:"儲存",colour_one:"色彩",colour_other:"色彩",favourite:"收藏"}},"zh-CN":{translation:{settings:{title:"设置",optionsHeading:"选项",starCountLabel:"收藏数",tagsLabel:"标签",devToolsLabel:"主題开发者工具",hideInstalledLabel:"浏览时隐藏已安装项目",colourShiftLabel:"每分钟进行色调偏移",tabsHeading:"分页",resetHeading:"重置",resetBtn:"$t(settings.resetHeading)",resetDescription:"卸载所有扩展插件和主题,并重置设置"},tabs:{Extensions:"扩展插件",Themes:"主题",Snippets:"微调片段",Apps:"功能模组",Installed:"已安裝项目"},snippets:{addTitle:"加入微调片段",editTitle:"编辑微调片段",viewTitle:"检视微调片段",customCSS:"自定义 CSS",customCSSPlaceholder:"这里可以输入您的自定义 CSS!您可以在「已安裝项目」标签页中看到这些片段,进而进行管理。",snippetName:"微调片段名称",snippetNamePlaceholder:"输入自定义微调片段的名称",snippetDesc:"微调片段描述",snippetDescPlaceholder:"输入自定义微调片段的描述",snippetPreview:"微调片段预览图",optional:"非必要",addImage:"加入影像",changeImage:"更改影像",saveCSS:"保存 CSS"},reloadModal:{title:"重新加载",description:"需要重新加载页面,才能完成这个操作。",reloadNow:"立即重新加载",reloadLater:"稍后重新加载"},devTools:{title:"主題开发者工具",noThemeInstalled:"错误:未安装商场主题",noThemeManifest:"错误:找不到主题内容清单",colorIniEditor:"Color.ini 编辑器",colorIniEditorPlaceholder:"[您的色彩配置名称]",invalidCSS:"CSS 无效"},grid:{spicetifyMarketplace:"Spicetify 商场",newUpdate:"有更新",addCSS:"加入 CSS",search:"搜索",installed:"已安装",lastUpdated:"上次更新于 {{val, datetime}}",externalJS:"有外部 JS",dark:"暗色模式",light:"亮色模式"},readmePage:{title:"$t(grid.spicetifyMarketplace) – 说明",loading:"正在加载……",errorLoading:"加载 README 时发生错误"},github:"GitHub",install:"安裝",remove:"移除",save:"保存",colour_one:"色彩",colour_other:"色彩",favourite:"收藏"}}},detection:{order:["navigator","htmlTag"]},fallbackLng:"en",interpolation:{escapeValue:!1}}),class extends qe.default.Component{constructor(e){super(e),this.state={count:0,CONFIG:{}},this.updateConfig=e=>{this.CONFIG=s({},e),console.log("updated config",this.CONFIG),this.setState({CONFIG:s({},e)})};e=S(fr,null);let t=[];try{if(t=JSON.parse(e),!Array.isArray(t))throw new Error("Could not parse marketplace tabs key");if(0===t.length)throw new Error("Empty marketplace tabs key");if(0!e).length)throw new Error("Falsey marketplace tabs key")}catch(e){t=gr,localStorage.setItem(fr,JSON.stringify(t))}let n={},r=null;try{var a=S(E,null);if(a){var o=S(a,null);if(!o)throw new Error("No installed theme data");n=o.schemes,r=o.activeScheme}else console.log("No theme set as installed")}catch(e){console.error(e)}this.CONFIG={visual:{stars:JSON.parse(S("marketplace:stars",!0)),tags:JSON.parse(S("marketplace:tags",!0)),hideInstalled:JSON.parse(S("marketplace:hideInstalled",!1)),colorShift:JSON.parse(S("marketplace:colorShift",!1)),themeDevTools:JSON.parse(S("marketplace:themeDevTools",!1)),type:JSON.parse(S("marketplace:type",!1)),followers:JSON.parse(S("marketplace:followers",!1))},tabs:t,activeTab:S(hr,t[0]),theme:{activeThemeKey:S(E,null),schemes:n,activeScheme:r}},this.CONFIG.activeTab&&this.CONFIG.tabs.filter(e=>e.name===this.CONFIG.activeTab).length||(this.CONFIG.activeTab=this.CONFIG.tabs[0].name)}render(){var e=Spicetify.Platform.History["location"];return e.pathname===vr+"/readme"&&e.state.data?qe.default.createElement($a,{title:g("readmePage.title"),data:e.state.data}):qe.default.createElement(Da,{title:g("grid.spicetifyMarketplace"),CONFIG:this.CONFIG,updateAppConfig:this.updateConfig})}}),Fa=jn()(Ue),Ma=t(y("react"));return e=Ke,W(F({},"__esModule",{value:!0}),e)})();const render=()=>marketplace.default();