From f78c04e13fbbcae2db654dd69c314aa9101a7340 Mon Sep 17 00:00:00 2001 From: daksh2k Date: Sat, 29 Jun 2024 01:14:09 +0530 Subject: [PATCH] feat(full-screen): add mousetrap record poc --- Extensions/full-screen/dist/fullScreen.js | 97 ++++----- Extensions/full-screen/src/app.tsx | 8 + .../src/services/mousetrap-record.ts | 199 ++++++++++++++++++ shared/types/spicetify.d.ts | 1 + 4 files changed, 258 insertions(+), 47 deletions(-) create mode 100644 Extensions/full-screen/src/services/mousetrap-record.ts diff --git a/Extensions/full-screen/dist/fullScreen.js b/Extensions/full-screen/dist/fullScreen.js index 89af644..eb44b24 100644 --- a/Extensions/full-screen/dist/fullScreen.js +++ b/Extensions/full-screen/dist/fullScreen.js @@ -1,4 +1,4 @@ -!async function(){for(;!Spicetify.React||!Spicetify.ReactDOM;)await new Promise(e=>setTimeout(e,10));(()=>{var C=Object.create,E=Object.defineProperty,I=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,_=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty,e=(e,t)=>function(){return t||(0,e[L(e)[0]])((t={exports:{}}).exports,t),t.exports},t=(e,t,i)=>{i=null!=e?C(_(e)):{};var n=!t&&e&&e.__esModule?i:E(i,"default",{value:e,enumerable:!0}),a=e,r=void 0,o=void 0;if(a&&"object"==typeof a||"function"==typeof a)for(let e of L(a))M.call(n,e)||e===r||E(n,e,{get:()=>a[e],enumerable:!(o=I(a,e))||o.enumerable});return n},R=e({"external-global-plugin:react-dom"(e,t){t.exports=Spicetify.ReactDOM}}),P=e({"external-global-plugin:react"(e,t){t.exports=Spicetify.React}}),N=e({"../../node_modules/lodash.defaultsdeep/index.js"(e,t){var z="__lodash_hash_undefined__",B=9007199254740991,O="[object Arguments]",$="[object AsyncFunction]",V="[object Function]",H="[object GeneratorFunction]",j="[object Null]",q="[object Object]",F="[object Proxy]",G="[object Undefined]",U=/^\[object .+?Constructor\]$/,Y=/^(?:0|[1-9]\d*)$/,i={},n=(i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i[O]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i[V]=i["[object Map]"]=i["[object Number]"]=i[q]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,"object"==typeof global&&global&&global.Object===Object&&global),a="object"==typeof self&&self&&self.Object===Object&&self,a=n||a||Function("return this")(),e="object"==typeof e&&e&&!e.nodeType&&e,r=e&&"object"==typeof t&&t&&!t.nodeType&&t,e=r&&r.exports===e,o=e&&n.process,n=function(){try{var e=r&&r.require&&r.require("util").types;return e?e:o&&o.binding&&o.binding("util")}catch(e){}}(),n=n&&n.isTypedArray;function X(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)}var K,W,s=Array.prototype,l=Function.prototype,c=Object.prototype,d=a["__core-js_shared__"],k=l.toString,x=c.hasOwnProperty,Z=(l=/[^.]+$/.exec(d&&d.keys&&d.keys.IE_PROTO||""))?"Symbol(src)_1."+l:"",Q=c.toString,J=k.call(Object),ee=RegExp("^"+k.call(x).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),d=e?a.Buffer:void 0,l=a.Symbol,te=a.Uint8Array,ie=d?d.allocUnsafe:void 0,ne=(K=Object.getPrototypeOf,W=Object,function(e){return K(W(e))}),ae=Object.create,re=c.propertyIsEnumerable,oe=s.splice,u=l?l.toStringTag:void 0,p=function(){try{var e=E(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),e=d?d.isBuffer:void 0,se=Math.max,le=Date.now,ce=E(a,"Map"),g=E(Object,"create"),de=function(e){if(!N(e))return{};if(ae)return ae(e);m.prototype=e;e=new m;return m.prototype=void 0,e};function m(){}function f(e){var t=-1,i=null==e?0:e.length;for(this.clear();++tconsole.error("SEMVER",...e):()=>{};t.exports=i}}),z=e({"../../node_modules/semver/internal/constants.js"(e,t){var i=Number.MAX_SAFE_INTEGER||9007199254740991;t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:i,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}}),B=e({"../../node_modules/semver/internal/re.js"(e,t){var{MAX_SAFE_COMPONENT_LENGTH:i,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:a}=z(),r=D(),o=(e=t.exports={}).re=[],s=e.safeRe=[],l=e.src=[],c=e.t={},d=0,t="[a-zA-Z0-9-]",u=[["\\s",1],["\\d",a],[t,n]],a=(e,t,i)=>{var n=(e=>{for(var[t,i]of u)e=e.split(t+"*").join(`${t}{0,${i}}`).split(t+"+").join(`${t}{1,${i}}`);return e})(t),a=d++;r(e,a,t),c[e]=a,l[a]=t,o[a]=new RegExp(t,i?"g":void 0),s[a]=new RegExp(n,i?"g":void 0)};a("NUMERICIDENTIFIER","0|[1-9]\\d*"),a("NUMERICIDENTIFIERLOOSE","\\d+"),a("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${t}*`),a("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),a("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),a("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),a("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),a("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),a("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),a("BUILDIDENTIFIER",t+"+"),a("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),a("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),a("FULL",`^${l[c.FULLPLAIN]}$`),a("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),a("LOOSE",`^${l[c.LOOSEPLAIN]}$`),a("GTLT","((?:<|>)?=?)"),a("XRANGEIDENTIFIERLOOSE",l[c.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*"),a("XRANGEIDENTIFIER",l[c.NUMERICIDENTIFIER]+"|x|X|\\*"),a("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),a("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),a("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),a("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),a("COERCE",`(^|[^\\d])(\\d{1,${i}})(?:\\.(\\d{1,${i}}))?(?:\\.(\\d{1,${i}}))?(?:$|[^\\d])`),a("COERCERTL",l[c.COERCE],!0),a("LONETILDE","(?:~>?)"),a("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",a("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),a("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),a("LONECARET","(?:\\^)"),a("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",a("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),a("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),a("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),a("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),a("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",a("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),a("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),a("STAR","(<|>)?=?\\s*\\*"),a("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),a("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),O=e({"../../node_modules/semver/internal/parse-options.js"(e,t){var i=Object.freeze({loose:!0}),n=Object.freeze({});t.exports=e=>e?"object"!=typeof e?i:e:n}}),$=e({"../../node_modules/semver/internal/identifiers.js"(e,t){var a=/^[0-9]+$/,i=(e,t)=>{var i=a.test(e),n=a.test(t);return i&&n&&(e=+e,t=+t),e===t?0:i&&!n||(!n||i)&&ei(t,e)}}}),V=e({"../../node_modules/semver/classes/semver.js"(e,t){var a=D(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:n}=z(),{safeRe:r,t:o}=B(),s=O(),l=$()["compareIdentifiers"],c=class{constructor(e,t){if(t=s(t),e instanceof c){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>i)throw new TypeError(`version is longer than ${i} characters`);a("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;t=e.trim().match(t.loose?r[o.LOOSE]:r[o.FULL]);if(!t)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+t[1],this.minor=+t[2],this.patch=+t[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");t[4]?this.prerelease=t[4].split(".").map(e=>{if(/^[0-9]+$/.test(e)){var t=+e;if(0<=t&&tnew n(e,i).compare(new n(t,i))}}),j=e({"../../node_modules/semver/functions/gt.js"(e,t){var n=H();t.exports=(e,t,i)=>0',TV_MODE:'',INVERT_ACTIVE:'',INVERT_INACTIVE:'',LYRICS_ACTIVE:'',LYRICS_INACTIVE:'',MINUS:'',ALBUM:`${Spicetify.SVGIcons.album}`,ARTIST:` ${Spicetify.SVGIcons.artist}`,PLAYING_ICON:``,PAUSED_ICON:``,CTX_RADIO:'',CTX_TRACK:'',CTX_QUEUE:''},Le={tv:{lyricsDisplay:!0,lyricsAlignment:"right",autoHideLyrics:!0,animationTempo:.2,progressBarDisplay:"never",playerControls:"never",trimTitle:!0,trimTitleUpNext:!0,showAlbum:"date",showAllArtists:!0,icons:!0,titleMovingIcon:!1,enableFade:!0,enableFullscreen:!0,backgroundChoice:"artist_art",extraControls:"never",upnextDisplay:!0,contextDisplay:"always",volumeDisplay:"smart",themedButtons:!0,themedIcons:!0,invertColors:"never",backAnimationTime:.4,animationSpeed:.25,upNextAnim:"sp",upnextTimeToShow:45,coloredBackChoice:"DESATURATED",staticBackChoice:"#787878",blurSize:0,backgroundBrightness:.4,showRemainingTime:!1,verticalMonitorSupport:!1},def:{lyricsDisplay:!0,lyricsAlignment:"right",autoHideLyrics:!0,animationTempo:.2,progressBarDisplay:"always",playerControls:"always",trimTitle:!0,trimTitleUpNext:!0,showAlbum:"never",showAllArtists:!0,icons:!1,titleMovingIcon:!1,enableFade:!0,enableFullscreen:!0,backgroundChoice:"album_art",extraControls:"always",upnextDisplay:!0,contextDisplay:"mousemove",volumeDisplay:"smart",themedButtons:!0,themedIcons:!1,invertColors:"never",backAnimationTime:1,animationSpeed:.25,upNextAnim:"sp",upnextTimeToShow:30,coloredBackChoice:"DESATURATED",staticBackChoice:"#787878",blurSize:32,backgroundBrightness:.7,showRemainingTime:!1,verticalMonitorSupport:!0},tvMode:!1,locale:"en-US",fsHideOriginal:!1,autoLaunch:"never",activationTypes:"both",buttonActivation:"both",keyActivation:"both"},Be=["video","video-full-screen","video-full-window","video-full-screen--hide-ui","fsd-activated"],Oe=".main-topBar-historyButtons",$e=".main-nowPlayingBar-right",_e=i,a=[],n=class{static getToken(){return Spicetify.Platform.AuthorizationAPI._state.token.accessToken}static async getTrackInfo(e){return fetch("https://api.spotify.com/v1/tracks/"+e,{headers:{Authorization:"Bearer "+await n.getToken()}}).then(e=>e.json())}static async getAlbumInfo(e){return fetch("https://api.spotify.com/v1/albums/"+e,{headers:{Authorization:"Bearer "+await n.getToken()}}).then(e=>e.json())}static async getPlaylistInfo(e){return Spicetify.CosmosAsync.get("sp://core-playlist/v1/playlist/"+e)}static async getArtistInfo(e){return fetch(`https://api-partner.spotify.com/pathfinder/v1/query?operationName=queryArtistOverview&variables=%7B%22uri%22%3A%22spotify%3Aartist%3A${e}%22%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%22d66221ea13998b2f81883c5187d174c8646e4041d67f5b1e103bc262d447e3a0%22%7D%7D`,{headers:{Authorization:"Bearer "+await n.getToken()}}).then(e=>e.json()).then(e=>e.data.artist)}static async searchArt(e){return fetch(`https://api.spotify.com/v1/search?q="${e}"&type=artist&limit=2`,{headers:{Authorization:"Bearer "+await n.getToken()}}).then(e=>e.json())}static async colorExtractor(t){var e=a.filter(e=>e.uri===t);if(0!e)}static printNotExistings(e){e.forEach(e=>{console.error(e[0]+" not available. Report issue on GitHub or run Spicetify.test() to test."),Spicetify.showNotification(`Error initializing "fullscreen.js" extension. ${e[0]} not available. Report issue on GitHub.`,!0)}),console.log("Retries exceeded. Aborting.")}static fullScreenOn(){if(!document.fullscreenElement)return document.documentElement.requestFullscreen()}static fullScreenOff(){if(document.fullscreenElement)return document.exitFullscreen()}static fadeAnimation(e,t="fade-do"){e.classList.remove(t),e.classList.add(t),setTimeout(()=>{e.classList.remove(t)},800)}static addObserver(e,t,i){var n=document.querySelector(t);n?e.observe(n,i):setTimeout(()=>{l.addObserver(e,t,i)},2e3)}static hexToRgb(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,i,n){return t+t+i+i+n+n});e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return e?`${parseInt(e[1],16)},${parseInt(e[2],16)},`+parseInt(e[3],16):null}static trimTitle(e){var t=e.replace(/\(.+?\)/g,"").replace(/\[.+?\]/g,"").replace(/\s-\s.+?$/,"").trim();return t||e}static async getAlbumReleaseDate(e,t){var i,e=await Me.getAlbumInfo(e.replace("spotify:album:","")).catch(e=>console.error(e));return e?.release_date?(e=new Date(e.release_date),(i=new Date).setMonth(i.getMonth()-18)," • "+(t=e.toLocaleString(t,iconsole.error(e)),t=i?i.artists.items[0].id:"");var i=await Me.getArtistInfo(t).catch(e=>console.error(e));return i?.visuals?.headerImage?.sources[0].url??e.image_xlarge_url}static async getNextColor(e){let t="#444444";var i=await Me.colorExtractor(Spicetify.Player.data.item?.uri??"").catch(e=>console.warn(e));return t=i&&i[e]?i[e]:t}static revertPathHistory(e){Spicetify.Platform.History.push(e),Spicetify.Platform.History.entries.splice(Spicetify.Platform.History.entries.length-3,2),Spicetify.Platform.History.index=0 generic-modal > div");t&&(e?t.classList.add("transparent-bg"):t.classList.remove("transparent-bg"))}static getAvailableLanguages(e){var t={};for(const i in e)t[i]=e[i].langName;return t}static async getMainColor(e){let t,i=160;e=await Me.colorExtractor(e).catch(e=>console.warn(e)),"album_art"===Re.get("backgroundChoice")||"artist_art"===Re.get("backgroundChoice")?(t=e?.PROMINENT?l.hexToRgb(e.PROMINENT):"0,0,0",i=260-100*Re.get("backgroundBrightness")):"dynamic_color"===Re.get("backgroundChoice")?t=e&&e[Re.get("coloredBackChoice")]?l.hexToRgb(e[Re.get("coloredBackChoice")]):l.hexToRgb("#444444"):"static_color"===Re.get("backgroundChoice")&&(t=l.hexToRgb(Re.get("staticBackChoice"))),e=.299*Number(t?.split(",")[0])+.587*Number(t?.split(",")[1])+.114*Number(t?.split(",")[2])>i;return[e&&.3n=e.name+" • "+e.artists[0].name);break;case Spicetify.URI.Type.SEARCH:t=Spicetify.SVGIcons["search-active"],i=e.context.search,n=`"${a.query}" in `+e.context.searchDest;break;case Spicetify.URI.Type.COLLECTION:t=Spicetify.SVGIcons["heart-active"],i=e.context.collection,n=e.context.likedSongs;break;case Spicetify.URI.Type.PLAYLIST_V2:t=Spicetify.SVGIcons.playlist,i=e.context.playlist,n=Spicetify.Player.data.context?.metadata?.context_description||"";break;case Spicetify.URI.Type.STATION:case Spicetify.URI.Type.RADIO:switch(t=_e.CTX_RADIO,a.args[0]){case"album":i=e.context.albumRadio,await Me.getAlbumInfo(a.args[1]).then(e=>n=e.name);break;case"track":i=e.context.trackRadio,await Me.getTrackInfo(a.args[1]).then(e=>n=e.name+" • "+e.artists[0].name);break;case"artist":i=e.context.artistRadio,await Me.getArtistInfo(a.args[1]).then(e=>n=e?.profile?.name);break;case"playlist":case"playlist-v2":i=e.context.playlistRadio,t='',await Me.getPlaylistInfo("spotify:playlist:"+a.args[1]).then(e=>n=e.playlist.name);break;default:n=""}break;case Spicetify.URI.Type.PLAYLIST:t=Spicetify.SVGIcons[a.type],i=e.context.playlist,n=Spicetify.Player.data.context?.metadata.context_description||"";break;case Spicetify.URI.Type.ALBUM:t=Spicetify.SVGIcons[a.type],i=e.context.album,n=Spicetify.Player.data.context?.metadata.context_description||"";break;case Spicetify.URI.Type.ARTIST:t=Spicetify.SVGIcons[a.type],i=e.context.artist,n=Spicetify.Player.data.context?.metadata.context_description||"";break;case Spicetify.URI.Type.FOLDER:t=Spicetify.SVGIcons["playlist-folder"],i=e.context.playlistFolder;for(const r of(await Spicetify.CosmosAsync.get("sp://core-playlist/v1/rootlist",{policy:{folder:{rows:!0,link:!0,name:!0}}})).rows)if("folder"===r.type&&r.link===Spicetify.Player.data.context.uri){n=r.name;break}break;default:i=a.type,n=Spicetify.Player.data?.context?.metadata?.context_description||""}}return{ctxIcon:t,ctxSource:i,ctxName:n}}},Pe=l;function Ve(o,s,e,t=!1){const l=Re.get("backAnimationTime");var{innerWidth:i,innerHeight:n}=window;e.width=i,e.height=n;const c=e.getContext("2d");c.imageSmoothingEnabled=!1;e=Re.get("blurSize"),c.filter=`brightness(${Re.get("backgroundBrightness")}) blur(${e}px)`,i=function(e,t,i,n){i/=n,n=e/t;let a=e,r=t;i{var t,i=e-(a=void 0===a?e:a);n!==e&&(t=Math.min(i/(1e3*l),1),c.globalAlpha=1,c.drawImage(o,d,u,p,g),c.globalAlpha=Math.sin(Math.PI/2*t),c.drawImage(s,d,u,p,g),1===t)&&(r=!0),i<1e3*l&&(n=e,r||requestAnimationFrame(m))};requestAnimationFrame(m)}}var Y="#000000";async function He(o,e,t=!1){const s=Re.get("backAnimationTime"),{innerWidth:l,innerHeight:c}=window,d=(e.width=l,e.height=c,e.getContext("2d"));if(!Re.get("enableFade")||t)d.globalAlpha=1,d.fillStyle=o,d.fillRect(0,0,l,c);else{let n,a=!1,r;const u=e=>{var t,i=e-(r=void 0===r?e:r);n!==e&&(t=Math.min(i/(1e3*s),1),d.globalAlpha=1,d.fillStyle=Y,d.fillRect(0,0,l,c),d.globalAlpha=Math.sin(Math.PI/2*t),d.fillStyle=o,d.fillRect(0,0,l,c),1===t)&&(a=!0),i<1e3*s?(n=e,a||requestAnimationFrame(u)):Y=o};requestAnimationFrame(u)}}var je=!1,qe=e=>{je=e},Fe=Re.get("animationSpeed");performance.now(),document.createElement("canvas");function X(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var c=X();function K(e){c=e}var W=/[&<>"']/,Z=new RegExp(W.source,"g"),Q=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,J=new RegExp(Q.source,"g"),ee={"&":"&","<":"<",">":">",'"':""","'":"'"},te=e=>ee[e];function d(e,t){if(t){if(W.test(e))return e.replace(Z,te)}else if(Q.test(e))return e.replace(J,te);return e}var ie=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function ne(e){return e.replace(ie,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var ae=/(^|[^\[])\^/g;function u(i,e){i="string"==typeof i?i:i.source,e=e||"";const n={replace:(e,t)=>(t=(t="object"==typeof t&&"source"in t?t.source:t).replace(ae,"$1"),i=i.replace(e,t),n),getRegex:()=>new RegExp(i,e)};return n}function re(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch(e){return null}return e}i={exec:()=>null};function oe(e,t){var i=e.replace(/\|/g,(e,t,i)=>{let n=!1,a=t;for(;0<=--a&&"\\"===i[a];)n=!n;return n?"|":" |"}).split(/ \|/);let n=0;if(i[0].trim()||i.shift(),0t)i.splice(t);else for(;i.length{var t=e.match(/^\s+/);return null!==t&&([t]=t,t.length>=i.length)?e.slice(i.length):e}).join("\n")}var k=class{options;rules;lexer;constructor(e){this.options=e||c}space(e){e=this.rules.block.newline.exec(e);if(e&&0[ \t]?/gm,""),"\n"),i=this.lexer.state.top,this.lexer.state.top=!0,n=this.lexer.blockTokens(t),this.lexer.state.top=i,{type:"blockquote",raw:e[0],tokens:n,text:t}}list(d){let u=this.rules.block.list.exec(d);if(u){let e=u[1].trim();var t,i=1" ".repeat(3*e.length)),i=d.split("\n",1)[0],n=0,a=(this.options.pedantic?(n=2,l=t.trimStart()):(n=4<(n=u[2].search(/[^ ]/))?1:n,l=t.slice(n),n+=u[1].length),!1);if(!t&&/^ *$/.test(i)&&(s+=i+"\n",d=d.substring(i.length+1),e=!0),!e)for(var m=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),f=new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),h=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),y=new RegExp(`^ {0,${Math.min(3,n-1)}}#`);d;){var b=d.split("\n",1)[0];if(i=b,this.options.pedantic&&(i=i.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),h.test(i))break;if(y.test(i))break;if(m.test(i))break;if(f.test(d))break;if(i.search(/[^ ]/)>=n||!i.trim())l+="\n"+i.slice(n);else{if(a)break;if(4<=t.search(/[^ ]/))break;if(h.test(t))break;if(y.test(t))break;if(f.test(t))break;l+="\n"+i}a||i.trim()||(a=!0),s+=b+"\n",d=d.substring(b.length+1),t=i.slice(n)}p.loose||(c?p.loose=!0:/\n *\n *$/.test(s)&&(c=!0));let r=null,o;this.options.gfm&&(r=/^\[[ xX]\] /.exec(l))&&(o="[ ] "!==r[0],l=l.replace(/^\[[ xX]\] +/,"")),p.items.push({type:"list_item",raw:s,task:!!r,checked:o,loose:!1,text:l,tokens:[]}),p.raw+=s}p.items[p.items.length-1].raw=s.trimEnd(),p.items[p.items.length-1].text=l.trimEnd(),p.raw=p.raw.trimEnd();for(let e=0;e"space"===e.type)).length&&t.some(e=>/\n.*\n/.test(e.raw)),p.loose=t);if(p.loose)for(let e=0;e$/,"$1").replace(this.rules.inline._escapes,"$1"):"",n=e[3]&&e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"),{type:"def",tag:t,raw:e[0],href:i,title:n}}table(e){e=this.rules.block.table.exec(e);if(e&&/[:|]/.test(e[2])){var r={type:"table",raw:e[0],header:oe(e[1]).map(e=>({text:e,tokens:[]})),align:e[2].replace(/^\||\| *$/g,"").split("|"),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(r.header.length===r.align.length){let e=r.align.length,t,i,n,a;for(t=0;t({text:e,tokens:[]}));for(e=r.header.length,i=0;i/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(i){i=this.rules.inline.link.exec(i);if(i){var n=i[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var a=p(n.slice(0,-1),"\\");if((n.length-a.length)%2==0)return}else{var r,a=se(i[2],"()");-1$/.test(n)?e.slice(1):e.slice(1,-1):e)&&e.replace(this.rules.inline._escapes,"$1"),title:t&&t.replace(this.rules.inline._escapes,"$1")},i[0],this.lexer)}}reflink(t,i){let n;if(n=(n=this.rules.inline.reflink.exec(t))||this.rules.inline.nolink.exec(t)){let e=(n[2]||n[1]).replace(/\s+/g," ");return(e=i[e.toLowerCase()])?le(n,e,n[0],this.lexer):{type:"text",raw:t=n[0].charAt(0),text:t}}}emStrong(a,r,e=""){let o=this.rules.inline.emStrong.lDelim.exec(a);if(o&&((!o[3]||!e.match(/[\p{L}\p{N}]/u))&&(!(o[1]||o[2]||"")||!e||this.rules.inline.punctuation.exec(e)))){var s=[...o[0]].length-1;let e,t,i=s,n=0;var l,c,d="*"===o[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(d.lastIndex=0,r=r.slice(-1*a.length+s);null!=(o=d.exec(r));)if(e=o[1]||o[2]||o[3]||o[4]||o[5]||o[6])if(t=[...e].length,o[3]||o[4])i+=t;else if((o[5]||o[6])&&s%3&&!((s+t)%3))n+=t;else if(!(0<(i-=t)))return t=Math.min(t,t+i+n),l=[...o[0]][0].length,l=a.slice(0,s+o.index+l+t),Math.min(s,t)%2?(c=l.slice(1,-1),{type:"em",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}):(c=l.slice(2,-2),{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)})}}codespan(t){t=this.rules.inline.code.exec(t);if(t){let e=t[2].replace(/\n/g," ");var i=/[^ ]/.test(e),n=/^ /.test(e)&&/ $/.test(e);return e=d(e=i&&n?e.substring(1,e.length-1):e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}}del(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(i){i=this.rules.inline.autolink.exec(i);if(i){let e,t;return t="@"===i[2]?"mailto:"+(e=d(i[1])):e=d(i[1]),{type:"link",raw:i[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}url(e){var i,n;if(i=this.rules.inline.url.exec(e)){let e,t;if("@"===i[2])e=d(i[0]),t="mailto:"+e;else{for(;n=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0],n!==i[0];);e=d(i[0]),t="www."===i[1]?"http://"+i[0]:i[0]}return{type:"link",raw:i[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(t){t=this.rules.inline.text.exec(t);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:d(t[0]),{type:"text",raw:t[0],text:e}}}},g={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:i,lheading:/^(?!bull )((?:.|\n(?!\s*?\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/},m=(g.def=u(g.def).replace("label",g._label).replace("title",g._title).getRegex(),g.bullet=/(?:[*+-]|\d{1,9}[.)])/,g.listItemStart=u(/^( *)(bull) */).replace("bull",g.bullet).getRegex(),g.list=u(g.list).replace(/bull/g,g.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+g.def.source+")").getRegex(),g._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",g._comment=/|$)/,g.html=u(g.html,"i").replace("comment",g._comment).replace("tag",g._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),g.lheading=u(g.lheading).replace(/bull/g,g.bullet).getRegex(),g.paragraph=u(g._paragraph).replace("hr",g.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",g._tag).getRegex(),g.blockquote=u(g.blockquote).replace("paragraph",g.paragraph).getRegex(),g.normal={...g},g.gfm={...g.normal,table:"^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},g.gfm.table=u(g.gfm.table).replace("hr",g.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",g._tag).getRegex(),g.gfm.paragraph=u(g._paragraph).replace("hr",g.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",g.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",g._tag).getRegex(),g.pedantic={...g.normal,html:u(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",g._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:i,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:u(g.normal._paragraph).replace("hr",g.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",g.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()},{escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:i,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:i,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~"}),f=(m.punctuation=u(m.punctuation,"u").replace(/punctuation/g,m._punctuation).getRegex(),m.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,m.anyPunctuation=/\\[punct]/g,m._escapes=/\\([punct])/g,m._comment=u(g._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),m.emStrong.lDelim=u(m.emStrong.lDelim,"u").replace(/punct/g,m._punctuation).getRegex(),m.emStrong.rDelimAst=u(m.emStrong.rDelimAst,"gu").replace(/punct/g,m._punctuation).getRegex(),m.emStrong.rDelimUnd=u(m.emStrong.rDelimUnd,"gu").replace(/punct/g,m._punctuation).getRegex(),m.anyPunctuation=u(m.anyPunctuation,"gu").replace(/punct/g,m._punctuation).getRegex(),m._escapes=u(m._escapes,"gu").replace(/punct/g,m._punctuation).getRegex(),m._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,m._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,m.autolink=u(m.autolink).replace("scheme",m._scheme).replace("email",m._email).getRegex(),m._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,m.tag=u(m.tag).replace("comment",m._comment).replace("attribute",m._attribute).getRegex(),m._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,m._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,m._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,m.link=u(m.link).replace("label",m._label).replace("href",m._href).replace("title",m._title).getRegex(),m.reflink=u(m.reflink).replace("label",m._label).replace("ref",g._label).getRegex(),m.nolink=u(m.nolink).replace("ref",g._label).getRegex(),m.reflinkSearch=u(m.reflinkSearch,"g").replace("reflink",m.reflink).replace("nolink",m.nolink).getRegex(),m.normal={...m},m.pedantic={...m.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:u(/^!?\[(label)\]\((.*?)\)/).replace("label",m._label).getRegex(),reflink:u(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",m._label).getRegex()},m.gfm={...m.normal,escape:u(m.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(i.length));let i,e,a,r;for(;n;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(e=>!!(i=e.call({lexer:this},n,t))&&(n=n.substring(i.raw.length),t.push(i),!0))))if(i=this.tokenizer.space(n))n=n.substring(i.raw.length),1===i.raw.length&&0{"number"==typeof(i=e.call({lexer:this},s))&&0<=i&&(t=Math.min(t,i))}),t<1/0&&0<=t&&(a=n.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a)))e=t[t.length-1],r&&"paragraph"===e.type?(e.raw+="\n"+i.raw,e.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(i),r=a.length!==n.length,n=n.substring(i.raw.length);else if(i=this.tokenizer.text(n))n=n.substring(i.raw.length),(e=t[t.length-1])&&"text"===e.type?(e.raw+="\n"+i.raw,e.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(i);else if(n){var o="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(o);break}throw new Error(o)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(n,t=[]){let i,e,a,r=n,o,s,l;if(this.tokens.links){var c=Object.keys(this.tokens.links);if(0!!(i=e.call({lexer:this},n,t))&&(n=n.substring(i.raw.length),t.push(i),!0))))if(i=this.tokenizer.escape(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(n))n=n.substring(i.raw.length),(e=t[t.length-1])&&"text"===i.type&&"text"===e.type?(e.raw+=i.raw,e.text+=i.text):t.push(i);else if(i=this.tokenizer.link(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.reflink(n,this.tokens.links))n=n.substring(i.raw.length),(e=t[t.length-1])&&"text"===i.type&&"text"===e.type?(e.raw+=i.raw,e.text+=i.text):t.push(i);else if(i=this.tokenizer.emStrong(n,r,l))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.codespan(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.autolink(n))n=n.substring(i.raw.length),t.push(i);else if(!this.state.inLink&&(i=this.tokenizer.url(n)))n=n.substring(i.raw.length),t.push(i);else{if(a=n,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const u=n.slice(1);let i;this.options.extensions.startInline.forEach(e=>{"number"==typeof(i=e.call({lexer:this},u))&&0<=i&&(t=Math.min(t,i))}),t<1/0&&0<=t&&(a=n.substring(0,t+1))}if(i=this.tokenizer.inlineText(a))n=n.substring(i.raw.length),"_"!==i.raw.slice(-1)&&(l=i.raw.slice(-1)),s=!0,(e=t[t.length-1])&&"text"===e.type?(e.raw+=i.raw,e.text+=i.text):t.push(i);else if(n){var d="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}return t}}),x=class{options;constructor(e){this.options=e||c}code(e,t,i){t=(t||"").match(/^\S*/)?.[0];return e=e.replace(/\n$/,"")+"\n",t?'
'+(i?e:d(e,!0))+"
\n":"
"+(i?e:d(e,!0))+"
\n"}blockquote(e){return`
+!async function(){for(;!Spicetify.React||!Spicetify.ReactDOM;)await new Promise(e=>setTimeout(e,10));(()=>{var E=Object.create,I=Object.defineProperty,L=Object.getOwnPropertyDescriptor,_=Object.getOwnPropertyNames,M=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty,e=(e,t)=>function(){return t||(0,e[_(e)[0]])((t={exports:{}}).exports,t),t.exports},t=(e,t,i)=>{i=null!=e?E(M(e)):{};var n=!t&&e&&e.__esModule?i:I(i,"default",{value:e,enumerable:!0}),a=e,r=void 0,o=void 0;if(a&&"object"==typeof a||"function"==typeof a)for(let e of _(a))R.call(n,e)||e===r||I(n,e,{get:()=>a[e],enumerable:!(o=L(a,e))||o.enumerable});return n},P=e({"external-global-plugin:react-dom"(e,t){t.exports=Spicetify.ReactDOM}}),D=e({"external-global-plugin:react"(e,t){t.exports=Spicetify.React}}),N=e({"../../node_modules/lodash.defaultsdeep/index.js"(e,t){var z="__lodash_hash_undefined__",B=9007199254740991,O="[object Arguments]",$="[object AsyncFunction]",V="[object Function]",H="[object GeneratorFunction]",j="[object Null]",q="[object Object]",F="[object Proxy]",G="[object Undefined]",U=/^\[object .+?Constructor\]$/,X=/^(?:0|[1-9]\d*)$/,i={},n=(i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i[O]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i[V]=i["[object Map]"]=i["[object Number]"]=i[q]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,"object"==typeof global&&global&&global.Object===Object&&global),a="object"==typeof self&&self&&self.Object===Object&&self,a=n||a||Function("return this")(),e="object"==typeof e&&e&&!e.nodeType&&e,r=e&&"object"==typeof t&&t&&!t.nodeType&&t,e=r&&r.exports===e,o=e&&n.process,n=function(){try{var e=r&&r.require&&r.require("util").types;return e?e:o&&o.binding&&o.binding("util")}catch(e){}}(),n=n&&n.isTypedArray;function Y(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)}var K,W,s=Array.prototype,l=Function.prototype,c=Object.prototype,d=a["__core-js_shared__"],k=l.toString,x=c.hasOwnProperty,Z=(l=/[^.]+$/.exec(d&&d.keys&&d.keys.IE_PROTO||""))?"Symbol(src)_1."+l:"",Q=c.toString,J=k.call(Object),ee=RegExp("^"+k.call(x).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),d=e?a.Buffer:void 0,l=a.Symbol,te=a.Uint8Array,ie=d?d.allocUnsafe:void 0,ne=(K=Object.getPrototypeOf,W=Object,function(e){return K(W(e))}),ae=Object.create,re=c.propertyIsEnumerable,oe=s.splice,u=l?l.toStringTag:void 0,p=function(){try{var e=E(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),e=d?d.isBuffer:void 0,se=Math.max,le=Date.now,ce=E(a,"Map"),g=E(Object,"create"),de=function(e){if(!D(e))return{};if(ae)return ae(e);m.prototype=e;e=new m;return m.prototype=void 0,e};function m(){}function f(e){var t=-1,i=null==e?0:e.length;for(this.clear();++tconsole.error("SEMVER",...e):()=>{};t.exports=i}}),B=e({"../../node_modules/semver/internal/constants.js"(e,t){var i=Number.MAX_SAFE_INTEGER||9007199254740991;t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:i,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}}),O=e({"../../node_modules/semver/internal/re.js"(e,t){var{MAX_SAFE_COMPONENT_LENGTH:i,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:a}=B(),r=z(),o=(e=t.exports={}).re=[],s=e.safeRe=[],l=e.src=[],c=e.t={},d=0,t="[a-zA-Z0-9-]",u=[["\\s",1],["\\d",a],[t,n]],a=(e,t,i)=>{var n=(e=>{for(var[t,i]of u)e=e.split(t+"*").join(`${t}{0,${i}}`).split(t+"+").join(`${t}{1,${i}}`);return e})(t),a=d++;r(e,a,t),c[e]=a,l[a]=t,o[a]=new RegExp(t,i?"g":void 0),s[a]=new RegExp(n,i?"g":void 0)};a("NUMERICIDENTIFIER","0|[1-9]\\d*"),a("NUMERICIDENTIFIERLOOSE","\\d+"),a("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${t}*`),a("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),a("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),a("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),a("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),a("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),a("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),a("BUILDIDENTIFIER",t+"+"),a("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),a("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),a("FULL",`^${l[c.FULLPLAIN]}$`),a("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),a("LOOSE",`^${l[c.LOOSEPLAIN]}$`),a("GTLT","((?:<|>)?=?)"),a("XRANGEIDENTIFIERLOOSE",l[c.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*"),a("XRANGEIDENTIFIER",l[c.NUMERICIDENTIFIER]+"|x|X|\\*"),a("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),a("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),a("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),a("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),a("COERCE",`(^|[^\\d])(\\d{1,${i}})(?:\\.(\\d{1,${i}}))?(?:\\.(\\d{1,${i}}))?(?:$|[^\\d])`),a("COERCERTL",l[c.COERCE],!0),a("LONETILDE","(?:~>?)"),a("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",a("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),a("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),a("LONECARET","(?:\\^)"),a("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",a("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),a("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),a("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),a("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),a("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",a("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),a("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),a("STAR","(<|>)?=?\\s*\\*"),a("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),a("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),$=e({"../../node_modules/semver/internal/parse-options.js"(e,t){var i=Object.freeze({loose:!0}),n=Object.freeze({});t.exports=e=>e?"object"!=typeof e?i:e:n}}),V=e({"../../node_modules/semver/internal/identifiers.js"(e,t){var a=/^[0-9]+$/,i=(e,t)=>{var i=a.test(e),n=a.test(t);return i&&n&&(e=+e,t=+t),e===t?0:i&&!n||(!n||i)&&ei(t,e)}}}),H=e({"../../node_modules/semver/classes/semver.js"(e,t){var a=z(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:n}=B(),{safeRe:r,t:o}=O(),s=$(),l=V()["compareIdentifiers"],c=class{constructor(e,t){if(t=s(t),e instanceof c){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>i)throw new TypeError(`version is longer than ${i} characters`);a("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;t=e.trim().match(t.loose?r[o.LOOSE]:r[o.FULL]);if(!t)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+t[1],this.minor=+t[2],this.patch=+t[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");t[4]?this.prerelease=t[4].split(".").map(e=>{if(/^[0-9]+$/.test(e)){var t=+e;if(0<=t&&tnew n(e,i).compare(new n(t,i))}}),q=e({"../../node_modules/semver/functions/gt.js"(e,t){var n=j();t.exports=(e,t,i)=>0',TV_MODE:'',INVERT_ACTIVE:'',INVERT_INACTIVE:'',LYRICS_ACTIVE:'',LYRICS_INACTIVE:'',MINUS:'',ALBUM:`${Spicetify.SVGIcons.album}`,ARTIST:` ${Spicetify.SVGIcons.artist}`,PLAYING_ICON:``,PAUSED_ICON:``,CTX_RADIO:'',CTX_TRACK:'',CTX_QUEUE:''},Re={tv:{lyricsDisplay:!0,lyricsAlignment:"right",autoHideLyrics:!0,animationTempo:.2,progressBarDisplay:"never",playerControls:"never",trimTitle:!0,trimTitleUpNext:!0,showAlbum:"date",showAllArtists:!0,icons:!0,titleMovingIcon:!1,enableFade:!0,enableFullscreen:!0,backgroundChoice:"artist_art",extraControls:"never",upnextDisplay:!0,contextDisplay:"always",volumeDisplay:"smart",themedButtons:!0,themedIcons:!0,invertColors:"never",backAnimationTime:.4,animationSpeed:.25,upNextAnim:"sp",upnextTimeToShow:45,coloredBackChoice:"DESATURATED",staticBackChoice:"#787878",blurSize:0,backgroundBrightness:.4,showRemainingTime:!1,verticalMonitorSupport:!1},def:{lyricsDisplay:!0,lyricsAlignment:"right",autoHideLyrics:!0,animationTempo:.2,progressBarDisplay:"always",playerControls:"always",trimTitle:!0,trimTitleUpNext:!0,showAlbum:"never",showAllArtists:!0,icons:!1,titleMovingIcon:!1,enableFade:!0,enableFullscreen:!0,backgroundChoice:"album_art",extraControls:"always",upnextDisplay:!0,contextDisplay:"mousemove",volumeDisplay:"smart",themedButtons:!0,themedIcons:!1,invertColors:"never",backAnimationTime:1,animationSpeed:.25,upNextAnim:"sp",upnextTimeToShow:30,coloredBackChoice:"DESATURATED",staticBackChoice:"#787878",blurSize:32,backgroundBrightness:.7,showRemainingTime:!1,verticalMonitorSupport:!0},tvMode:!1,locale:"en-US",fsHideOriginal:!1,autoLaunch:"never",activationTypes:"both",buttonActivation:"both",keyActivation:"both"},Ve=["video","video-full-screen","video-full-window","video-full-screen--hide-ui","fsd-activated"],He=".main-topBar-historyButtons",je=".main-nowPlayingBar-right",G=".Root__right-sidebar",Pe=n,a=[],r=class{static getToken(){return Spicetify.Platform.AuthorizationAPI._state.token.accessToken}static async getTrackInfo(e){return fetch("https://api.spotify.com/v1/tracks/"+e,{headers:{Authorization:"Bearer "+await r.getToken()}}).then(e=>e.json())}static async getAlbumInfo(e){return fetch("https://api.spotify.com/v1/albums/"+e,{headers:{Authorization:"Bearer "+await r.getToken()}}).then(e=>e.json())}static async getPlaylistInfo(e){return Spicetify.CosmosAsync.get("sp://core-playlist/v1/playlist/"+e)}static async getArtistInfo(e){return fetch(`https://api-partner.spotify.com/pathfinder/v1/query?operationName=queryArtistOverview&variables=%7B%22uri%22%3A%22spotify%3Aartist%3A${e}%22%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%22d66221ea13998b2f81883c5187d174c8646e4041d67f5b1e103bc262d447e3a0%22%7D%7D`,{headers:{Authorization:"Bearer "+await r.getToken()}}).then(e=>e.json()).then(e=>e.data.artist)}static async searchArt(e){return fetch(`https://api.spotify.com/v1/search?q="${e}"&type=artist&limit=2`,{headers:{Authorization:"Bearer "+await r.getToken()}}).then(e=>e.json())}static async colorExtractor(t){var e=a.filter(e=>e.uri===t);if(0!e)}static printNotExistings(e){e.forEach(e=>{console.error(e[0]+" not available. Report issue on GitHub or run Spicetify.test() to test."),Spicetify.showNotification(`Error initializing "fullscreen.js" extension. ${e[0]} not available. Report issue on GitHub.`,!0)}),console.log("Retries exceeded. Aborting.")}static fullScreenOn(){if(!document.fullscreenElement)return document.documentElement.requestFullscreen()}static fullScreenOff(){if(document.fullscreenElement)return document.exitFullscreen()}static fadeAnimation(e,t="fade-do"){e.classList.remove(t),e.classList.add(t),setTimeout(()=>{e.classList.remove(t)},800)}static addObserver(e,t,i){var n=document.querySelector(t);n?e.observe(n,i):setTimeout(()=>{d.addObserver(e,t,i)},2e3)}static hexToRgb(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,i,n){return t+t+i+i+n+n});e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return e?`${parseInt(e[1],16)},${parseInt(e[2],16)},`+parseInt(e[3],16):null}static trimTitle(e){var t=e.replace(/\(.+?\)/g,"").replace(/\[.+?\]/g,"").replace(/\s-\s.+?$/,"").trim();return t||e}static async getAlbumReleaseDate(e,t){var i,e=await De.getAlbumInfo(e.replace("spotify:album:","")).catch(e=>console.error(e));return e?.release_date?(e=new Date(e.release_date),(i=new Date).setMonth(i.getMonth()-18)," • "+(t=e.toLocaleString(t,iconsole.error(e)),t=i?i.artists.items[0].id:"");var i=await De.getArtistInfo(t).catch(e=>console.error(e));return i?.visuals?.headerImage?.sources[0].url??e.image_xlarge_url}static async getNextColor(e){let t="#444444";var i=await De.colorExtractor(Spicetify.Player.data.item?.uri??"").catch(e=>console.warn(e));return t=i&&i[e]?i[e]:t}static revertPathHistory(e){Spicetify.Platform.History.push(e),Spicetify.Platform.History.entries.splice(Spicetify.Platform.History.entries.length-3,2),Spicetify.Platform.History.index=0 generic-modal > div");t&&(e?t.classList.add("transparent-bg"):t.classList.remove("transparent-bg"))}static getAvailableLanguages(e){var t={};for(const i in e)t[i]=e[i].langName;return t}static async getMainColor(e){let t,i=160;e=await De.colorExtractor(e).catch(e=>console.warn(e)),"album_art"===Ne.get("backgroundChoice")||"artist_art"===Ne.get("backgroundChoice")?(t=e?.PROMINENT?d.hexToRgb(e.PROMINENT):"0,0,0",i=260-100*Ne.get("backgroundBrightness")):"dynamic_color"===Ne.get("backgroundChoice")?t=e&&e[Ne.get("coloredBackChoice")]?d.hexToRgb(e[Ne.get("coloredBackChoice")]):d.hexToRgb("#444444"):"static_color"===Ne.get("backgroundChoice")&&(t=d.hexToRgb(Ne.get("staticBackChoice"))),e=.299*Number(t?.split(",")[0])+.587*Number(t?.split(",")[1])+.114*Number(t?.split(",")[2])>i;return[e&&.3n=e.name+" • "+e.artists[0].name);break;case Spicetify.URI.Type.SEARCH:t=Spicetify.SVGIcons["search-active"],i=e.context.search,n=`"${a.query}" in `+e.context.searchDest;break;case Spicetify.URI.Type.COLLECTION:t=Spicetify.SVGIcons["heart-active"],i=e.context.collection,n=e.context.likedSongs;break;case Spicetify.URI.Type.PLAYLIST_V2:t=Spicetify.SVGIcons.playlist,i=e.context.playlist,n=Spicetify.Player.data.context?.metadata?.context_description||"";break;case Spicetify.URI.Type.STATION:case Spicetify.URI.Type.RADIO:switch(t=Pe.CTX_RADIO,a.args[0]){case"album":i=e.context.albumRadio,await De.getAlbumInfo(a.args[1]).then(e=>n=e.name);break;case"track":i=e.context.trackRadio,await De.getTrackInfo(a.args[1]).then(e=>n=e.name+" • "+e.artists[0].name);break;case"artist":i=e.context.artistRadio,await De.getArtistInfo(a.args[1]).then(e=>n=e?.profile?.name);break;case"playlist":case"playlist-v2":i=e.context.playlistRadio,t='',await De.getPlaylistInfo("spotify:playlist:"+a.args[1]).then(e=>n=e.playlist.name);break;default:n=""}break;case Spicetify.URI.Type.PLAYLIST:t=Spicetify.SVGIcons[a.type],i=e.context.playlist,n=Spicetify.Player.data.context?.metadata.context_description||"";break;case Spicetify.URI.Type.ALBUM:t=Spicetify.SVGIcons[a.type],i=e.context.album,n=Spicetify.Player.data.context?.metadata.context_description||"";break;case Spicetify.URI.Type.ARTIST:t=Spicetify.SVGIcons[a.type],i=e.context.artist,n=Spicetify.Player.data.context?.metadata.context_description||"";break;case Spicetify.URI.Type.FOLDER:t=Spicetify.SVGIcons["playlist-folder"],i=e.context.playlistFolder;for(const r of(await Spicetify.CosmosAsync.get("sp://core-playlist/v1/rootlist",{policy:{folder:{rows:!0,link:!0,name:!0}}})).rows)if("folder"===r.type&&r.link===Spicetify.Player.data.context.uri){n=r.name;break}break;default:i=a.type,n=Spicetify.Player.data?.context?.metadata?.context_description||""}}return{ctxIcon:t,ctxSource:i,ctxName:n}}static toggleQueuePanel(e,t){const i=document.querySelector("div.main-nowPlayingBar-right > div > div.GlueDropTarget.GlueDropTarget--tracks.GlueDropTarget--local-tracks.GlueDropTarget--episodes > button"),n=document.querySelector(G);t?setTimeout(()=>{c=!!i?.classList.contains("main-genericButton-buttonActive")||(i?.click(),!1),setTimeout(()=>{n?.classList.add("fsd-queue-panel"),setTimeout(()=>{n?.classList.add("fsd-transform-animation")},100)},300)},600):(null==c||c||i?.click(),n?.style.setProperty("--queue-panel-x","1000px"),c=null,e?.classList.remove("button-active","dot-after"),n?.classList.remove("fsd-queue-panel","fsd-transform-animation"),document.body.classList.remove("fsd-queue-panel-active"))}static toggleQueue(e){var t=document.querySelector(G);document.body.classList.contains("fsd-queue-panel-active")?(t?.style.setProperty("--queue-panel-x","1000px"),e?.classList.remove("button-active","dot-after"),document.body.classList.remove("fsd-queue-panel-active")):(t?.style.setProperty("--queue-panel-x","0px"),e?.classList.add("button-active","dot-after"),document.body.classList.add("fsd-queue-panel-active"))}},ze=d;function qe(o,s,e,t=!1){const l=Ne.get("backAnimationTime");var{innerWidth:i,innerHeight:n}=window;e.width=i,e.height=n;const c=e.getContext("2d");c.imageSmoothingEnabled=!1;e=Ne.get("blurSize"),c.filter=`brightness(${Ne.get("backgroundBrightness")}) blur(${e}px)`,i=function(e,t,i,n){i/=n,n=e/t;let a=e,r=t;i{var t,i=e-(a=void 0===a?e:a);n!==e&&(t=Math.min(i/(1e3*l),1),c.globalAlpha=1,c.drawImage(o,d,u,p,g),c.globalAlpha=Math.sin(Math.PI/2*t),c.drawImage(s,d,u,p,g),1===t)&&(r=!0),i<1e3*l&&(n=e,r||requestAnimationFrame(m))};requestAnimationFrame(m)}}var K="#000000";async function Fe(o,e,t=!1){const s=Ne.get("backAnimationTime"),{innerWidth:l,innerHeight:c}=window,d=(e.width=l,e.height=c,e.getContext("2d"));if(!Ne.get("enableFade")||t)d.globalAlpha=1,d.fillStyle=o,d.fillRect(0,0,l,c);else{let n,a=!1,r;const u=e=>{var t,i=e-(r=void 0===r?e:r);n!==e&&(t=Math.min(i/(1e3*s),1),d.globalAlpha=1,d.fillStyle=K,d.fillRect(0,0,l,c),d.globalAlpha=Math.sin(Math.PI/2*t),d.fillStyle=o,d.fillRect(0,0,l,c),1===t)&&(a=!0),i<1e3*s?(n=e,a||requestAnimationFrame(u)):K=o};requestAnimationFrame(u)}}var Ge=!1,Ue=e=>{Ge=e},Xe=Ne.get("animationSpeed");performance.now(),document.createElement("canvas");function W(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var u=W();function Z(e){u=e}var Q=/[&<>"']/,J=new RegExp(Q.source,"g"),ee=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,te=new RegExp(ee.source,"g"),ie={"&":"&","<":"<",">":">",'"':""","'":"'"},ne=e=>ie[e];function p(e,t){if(t){if(Q.test(e))return e.replace(J,ne)}else if(ee.test(e))return e.replace(te,ne);return e}var ae=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function re(e){return e.replace(ae,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var oe=/(^|[^\[])\^/g;function g(i,e){i="string"==typeof i?i:i.source,e=e||"";const n={replace:(e,t)=>(t=(t="object"==typeof t&&"source"in t?t.source:t).replace(oe,"$1"),i=i.replace(e,t),n),getRegex:()=>new RegExp(i,e)};return n}function se(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch(e){return null}return e}n={exec:()=>null};function le(e,t){var i=e.replace(/\|/g,(e,t,i)=>{let n=!1,a=t;for(;0<=--a&&"\\"===i[a];)n=!n;return n?"|":" |"}).split(/ \|/);let n=0;if(i[0].trim()||i.shift(),0t)i.splice(t);else for(;i.length{var t=e.match(/^\s+/);return null!==t&&([t]=t,t.length>=i.length)?e.slice(i.length):e}).join("\n")}var k=class{options;rules;lexer;constructor(e){this.options=e||u}space(e){e=this.rules.block.newline.exec(e);if(e&&0[ \t]?/gm,""),"\n"),i=this.lexer.state.top,this.lexer.state.top=!0,n=this.lexer.blockTokens(t),this.lexer.state.top=i,{type:"blockquote",raw:e[0],tokens:n,text:t}}list(d){let u=this.rules.block.list.exec(d);if(u){let e=u[1].trim();var t,i=1" ".repeat(3*e.length)),i=d.split("\n",1)[0],n=0,a=(this.options.pedantic?(n=2,l=t.trimStart()):(n=4<(n=u[2].search(/[^ ]/))?1:n,l=t.slice(n),n+=u[1].length),!1);if(!t&&/^ *$/.test(i)&&(s+=i+"\n",d=d.substring(i.length+1),e=!0),!e)for(var m=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),f=new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),h=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),y=new RegExp(`^ {0,${Math.min(3,n-1)}}#`);d;){var b=d.split("\n",1)[0];if(i=b,this.options.pedantic&&(i=i.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),h.test(i))break;if(y.test(i))break;if(m.test(i))break;if(f.test(d))break;if(i.search(/[^ ]/)>=n||!i.trim())l+="\n"+i.slice(n);else{if(a)break;if(4<=t.search(/[^ ]/))break;if(h.test(t))break;if(y.test(t))break;if(f.test(t))break;l+="\n"+i}a||i.trim()||(a=!0),s+=b+"\n",d=d.substring(b.length+1),t=i.slice(n)}p.loose||(c?p.loose=!0:/\n *\n *$/.test(s)&&(c=!0));let r=null,o;this.options.gfm&&(r=/^\[[ xX]\] /.exec(l))&&(o="[ ] "!==r[0],l=l.replace(/^\[[ xX]\] +/,"")),p.items.push({type:"list_item",raw:s,task:!!r,checked:o,loose:!1,text:l,tokens:[]}),p.raw+=s}p.items[p.items.length-1].raw=s.trimEnd(),p.items[p.items.length-1].text=l.trimEnd(),p.raw=p.raw.trimEnd();for(let e=0;e"space"===e.type)).length&&t.some(e=>/\n.*\n/.test(e.raw)),p.loose=t);if(p.loose)for(let e=0;e$/,"$1").replace(this.rules.inline._escapes,"$1"):"",n=e[3]&&e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"),{type:"def",tag:t,raw:e[0],href:i,title:n}}table(e){e=this.rules.block.table.exec(e);if(e&&/[:|]/.test(e[2])){var r={type:"table",raw:e[0],header:le(e[1]).map(e=>({text:e,tokens:[]})),align:e[2].replace(/^\||\| *$/g,"").split("|"),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(r.header.length===r.align.length){let e=r.align.length,t,i,n,a;for(t=0;t({text:e,tokens:[]}));for(e=r.header.length,i=0;i/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(i){i=this.rules.inline.link.exec(i);if(i){var n=i[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var a=m(n.slice(0,-1),"\\");if((n.length-a.length)%2==0)return}else{var r,a=ce(i[2],"()");-1$/.test(n)?e.slice(1):e.slice(1,-1):e)&&e.replace(this.rules.inline._escapes,"$1"),title:t&&t.replace(this.rules.inline._escapes,"$1")},i[0],this.lexer)}}reflink(t,i){let n;if(n=(n=this.rules.inline.reflink.exec(t))||this.rules.inline.nolink.exec(t)){let e=(n[2]||n[1]).replace(/\s+/g," ");return(e=i[e.toLowerCase()])?de(n,e,n[0],this.lexer):{type:"text",raw:t=n[0].charAt(0),text:t}}}emStrong(a,r,e=""){let o=this.rules.inline.emStrong.lDelim.exec(a);if(o&&((!o[3]||!e.match(/[\p{L}\p{N}]/u))&&(!(o[1]||o[2]||"")||!e||this.rules.inline.punctuation.exec(e)))){var s=[...o[0]].length-1;let e,t,i=s,n=0;var l,c,d="*"===o[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(d.lastIndex=0,r=r.slice(-1*a.length+s);null!=(o=d.exec(r));)if(e=o[1]||o[2]||o[3]||o[4]||o[5]||o[6])if(t=[...e].length,o[3]||o[4])i+=t;else if((o[5]||o[6])&&s%3&&!((s+t)%3))n+=t;else if(!(0<(i-=t)))return t=Math.min(t,t+i+n),l=[...o[0]][0].length,l=a.slice(0,s+o.index+l+t),Math.min(s,t)%2?(c=l.slice(1,-1),{type:"em",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}):(c=l.slice(2,-2),{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)})}}codespan(t){t=this.rules.inline.code.exec(t);if(t){let e=t[2].replace(/\n/g," ");var i=/[^ ]/.test(e),n=/^ /.test(e)&&/ $/.test(e);return e=p(e=i&&n?e.substring(1,e.length-1):e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}}del(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(i){i=this.rules.inline.autolink.exec(i);if(i){let e,t;return t="@"===i[2]?"mailto:"+(e=p(i[1])):e=p(i[1]),{type:"link",raw:i[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}url(e){var i,n;if(i=this.rules.inline.url.exec(e)){let e,t;if("@"===i[2])e=p(i[0]),t="mailto:"+e;else{for(;n=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0],n!==i[0];);e=p(i[0]),t="www."===i[1]?"http://"+i[0]:i[0]}return{type:"link",raw:i[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(t){t=this.rules.inline.text.exec(t);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:p(t[0]),{type:"text",raw:t[0],text:e}}}},f={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:n,lheading:/^(?!bull )((?:.|\n(?!\s*?\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/},h=(f.def=g(f.def).replace("label",f._label).replace("title",f._title).getRegex(),f.bullet=/(?:[*+-]|\d{1,9}[.)])/,f.listItemStart=g(/^( *)(bull) */).replace("bull",f.bullet).getRegex(),f.list=g(f.list).replace(/bull/g,f.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+f.def.source+")").getRegex(),f._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",f._comment=/|$)/,f.html=g(f.html,"i").replace("comment",f._comment).replace("tag",f._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),f.lheading=g(f.lheading).replace(/bull/g,f.bullet).getRegex(),f.paragraph=g(f._paragraph).replace("hr",f.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",f._tag).getRegex(),f.blockquote=g(f.blockquote).replace("paragraph",f.paragraph).getRegex(),f.normal={...f},f.gfm={...f.normal,table:"^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},f.gfm.table=g(f.gfm.table).replace("hr",f.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",f._tag).getRegex(),f.gfm.paragraph=g(f._paragraph).replace("hr",f.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",f.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",f._tag).getRegex(),f.pedantic={...f.normal,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",f._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:n,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(f.normal._paragraph).replace("hr",f.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",f.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()},{escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:n,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:n,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~"}),y=(h.punctuation=g(h.punctuation,"u").replace(/punctuation/g,h._punctuation).getRegex(),h.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,h.anyPunctuation=/\\[punct]/g,h._escapes=/\\([punct])/g,h._comment=g(f._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),h.emStrong.lDelim=g(h.emStrong.lDelim,"u").replace(/punct/g,h._punctuation).getRegex(),h.emStrong.rDelimAst=g(h.emStrong.rDelimAst,"gu").replace(/punct/g,h._punctuation).getRegex(),h.emStrong.rDelimUnd=g(h.emStrong.rDelimUnd,"gu").replace(/punct/g,h._punctuation).getRegex(),h.anyPunctuation=g(h.anyPunctuation,"gu").replace(/punct/g,h._punctuation).getRegex(),h._escapes=g(h._escapes,"gu").replace(/punct/g,h._punctuation).getRegex(),h._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,h._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,h.autolink=g(h.autolink).replace("scheme",h._scheme).replace("email",h._email).getRegex(),h._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,h.tag=g(h.tag).replace("comment",h._comment).replace("attribute",h._attribute).getRegex(),h._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,h._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,h._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,h.link=g(h.link).replace("label",h._label).replace("href",h._href).replace("title",h._title).getRegex(),h.reflink=g(h.reflink).replace("label",h._label).replace("ref",f._label).getRegex(),h.nolink=g(h.nolink).replace("ref",f._label).getRegex(),h.reflinkSearch=g(h.reflinkSearch,"g").replace("reflink",h.reflink).replace("nolink",h.nolink).getRegex(),h.normal={...h},h.pedantic={...h.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",h._label).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",h._label).getRegex()},h.gfm={...h.normal,escape:g(h.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(i.length));let i,e,a,r;for(;n;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(e=>!!(i=e.call({lexer:this},n,t))&&(n=n.substring(i.raw.length),t.push(i),!0))))if(i=this.tokenizer.space(n))n=n.substring(i.raw.length),1===i.raw.length&&0{"number"==typeof(i=e.call({lexer:this},s))&&0<=i&&(t=Math.min(t,i))}),t<1/0&&0<=t&&(a=n.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a)))e=t[t.length-1],r&&"paragraph"===e.type?(e.raw+="\n"+i.raw,e.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(i),r=a.length!==n.length,n=n.substring(i.raw.length);else if(i=this.tokenizer.text(n))n=n.substring(i.raw.length),(e=t[t.length-1])&&"text"===e.type?(e.raw+="\n"+i.raw,e.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(i);else if(n){var o="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(o);break}throw new Error(o)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(n,t=[]){let i,e,a,r=n,o,s,l;if(this.tokens.links){var c=Object.keys(this.tokens.links);if(0!!(i=e.call({lexer:this},n,t))&&(n=n.substring(i.raw.length),t.push(i),!0))))if(i=this.tokenizer.escape(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(n))n=n.substring(i.raw.length),(e=t[t.length-1])&&"text"===i.type&&"text"===e.type?(e.raw+=i.raw,e.text+=i.text):t.push(i);else if(i=this.tokenizer.link(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.reflink(n,this.tokens.links))n=n.substring(i.raw.length),(e=t[t.length-1])&&"text"===i.type&&"text"===e.type?(e.raw+=i.raw,e.text+=i.text):t.push(i);else if(i=this.tokenizer.emStrong(n,r,l))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.codespan(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(n))n=n.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.autolink(n))n=n.substring(i.raw.length),t.push(i);else if(!this.state.inLink&&(i=this.tokenizer.url(n)))n=n.substring(i.raw.length),t.push(i);else{if(a=n,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const u=n.slice(1);let i;this.options.extensions.startInline.forEach(e=>{"number"==typeof(i=e.call({lexer:this},u))&&0<=i&&(t=Math.min(t,i))}),t<1/0&&0<=t&&(a=n.substring(0,t+1))}if(i=this.tokenizer.inlineText(a))n=n.substring(i.raw.length),"_"!==i.raw.slice(-1)&&(l=i.raw.slice(-1)),s=!0,(e=t[t.length-1])&&"text"===e.type?(e.raw+=i.raw,e.text+=i.text):t.push(i);else if(n){var d="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}return t}}),pe=class{options;constructor(e){this.options=e||u}code(e,t,i){t=(t||"").match(/^\S*/)?.[0];return e=e.replace(/\n$/,"")+"\n",t?'
'+(i?e:p(e,!0))+"
\n":"
"+(i?e:p(e,!0))+"
\n"}blockquote(e){return`
${e}
`}html(e,t){return e}heading(e,t,i){return`${e} `}hr(){return"
\n"}list(e,t,i){var n=t?"ol":"ul";return"<"+n+(t&&1!==i?' start="'+i+'"':"")+">\n"+e+"\n"}listitem(e,t,i){return`
  • ${e}
  • @@ -6,14 +6,14 @@ ${e}
    `}table(e,t){return"\n\n"+e+"\n"+(t=t&&`${t}`)+"
    \n"}tablerow(e){return` ${e} `}tablecell(e,t){var i=t.header?"th":"td";return(t.align?`<${i} align="${t.align}">`:`<${i}>`)+e+` -`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return"
    "}del(e){return`${e}`}link(e,t,i){var n=re(e);if(null===n)return i;let a='"}image(e,t,i){var n=re(e);if(null===n)return i;let a=`${i}{i=i.concat(this.walkTokens(l[e],t))}):l.tokens&&(i=i.concat(this.walkTokens(l.tokens,t)))}}return i}use(...e){const v=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{var t={...e};if(t.async=this.defaults.async||t.async||!1,e.extensions&&(e.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){const n=v.renderers[i.name];n?v.renderers[i.name]=function(...e){let t=i.renderer.apply(this,e);return t=!1===t?n.apply(this,e):t}:v.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||"block"!==i.level&&"inline"!==i.level)throw new Error("extension level must be 'block' or 'inline'");var e=v[i.level];e?e.unshift(i.tokenizer):v[i.level]=[i.tokenizer],i.start&&("block"===i.level?v.startBlock?v.startBlock.push(i.start):v.startBlock=[i.start]:"inline"===i.level&&(v.startInline?v.startInline.push(i.start):v.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(v.childTokens[i.name]=i.childTokens)}),t.extensions=v),e.renderer){const r=this.defaults.renderer||new x(this.defaults);for(const o in e.renderer){const s=e.renderer[o];var i=o;const l=r[i];r[i]=(...e)=>{let t=s.apply(r,e);return(t=!1===t?l.apply(r,e):t)||""}}t.renderer=r}if(e.tokenizer){const c=this.defaults.tokenizer||new k(this.defaults);for(const d in e.tokenizer){const u=e.tokenizer[d];var n=d;const p=c[n];c[n]=(...e)=>{let t=u.apply(c,e);return t=!1===t?p.apply(c,e):t}}t.tokenizer=c}if(e.hooks){const g=this.defaults.hooks||new w;for(const m in e.hooks){const f=e.hooks[m];var a=m;const h=g[a];w.passThroughHooks.has(m)?g[a]=e=>{return this.defaults.async?Promise.resolve(f.call(g,e)).then(e=>h.call(g,e)):(e=f.call(g,e),h.call(g,e))}:g[a]=(...e)=>{let t=f.apply(g,e);return t=!1===t?h.apply(g,e):t}}t.hooks=g}if(e.walkTokens){const y=this.defaults.walkTokens,b=e.walkTokens;t.walkTokens=function(e){let t=[];return t.push(b.call(this,e)),t=y?t.concat(y.call(this,e)):t}}this.defaults={...this.defaults,...t}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return f.lex(e,t??this.defaults)}parser(e,t){return h.parse(e,t??this.defaults)}#parseMarkdown(r,o){return(t,i)=>{i={...i};const n={...this.defaults,...i};!0===this.defaults.async&&!1===i.async&&(n.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),n.async=!0);i=this.#onError(!!n.silent,!!n.async);if(null==t)return i(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(n.hooks&&(n.hooks.options=n),n.async)return Promise.resolve(n.hooks?n.hooks.preprocess(t):t).then(e=>r(e,n)).then(e=>n.walkTokens?Promise.all(this.walkTokens(e,n.walkTokens)).then(()=>e):e).then(e=>o(e,n)).then(e=>n.hooks?n.hooks.postprocess(e):e).catch(i);try{n.hooks&&(t=n.hooks.preprocess(t));var a=r(t,n);n.walkTokens&&this.walkTokens(a,n.walkTokens);let e=o(a,n);return e=n.hooks?n.hooks.postprocess(e):e}catch(e){return i(e)}}}#onError(i,n){return e=>{var t;if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",i)return t="

    An error occurred:

    "+d(e.message+"",!0)+"
    ",n?Promise.resolve(t):t;if(n)return Promise.reject(e);throw e}}});function b(e,t){return y.parse(e,t)}b.options=b.setOptions=function(e){return y.setOptions(e),K(b.defaults=y.defaults),b},b.getDefaults=X,b.defaults=c,b.use=function(...e){return y.use(...e),K(b.defaults=y.defaults),b},b.walkTokens=function(e,t){return y.walkTokens(e,t)},b.parseInline=y.parseInline,b.Parser=h,b.parser=h.parse,b.Renderer=x,b.TextRenderer=de,b.Lexer=f,b.lexer=f.lex,b.Tokenizer=k,b.Hooks=w;b.parse=b,h.parse,f.lex;var Ge="2.6.0",ue=t(R()),i=`## General +`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return"
    "}del(e){return`${e}`}link(e,t,i){var n=se(e);if(null===n)return i;let a='
    "}image(e,t,i){var n=se(e);if(null===n)return i;let a=`${i}{i=i.concat(this.walkTokens(l[e],t))}):l.tokens&&(i=i.concat(this.walkTokens(l.tokens,t)))}}return i}use(...e){const v=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{var t={...e};if(t.async=this.defaults.async||t.async||!1,e.extensions&&(e.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){const n=v.renderers[i.name];n?v.renderers[i.name]=function(...e){let t=i.renderer.apply(this,e);return t=!1===t?n.apply(this,e):t}:v.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||"block"!==i.level&&"inline"!==i.level)throw new Error("extension level must be 'block' or 'inline'");var e=v[i.level];e?e.unshift(i.tokenizer):v[i.level]=[i.tokenizer],i.start&&("block"===i.level?v.startBlock?v.startBlock.push(i.start):v.startBlock=[i.start]:"inline"===i.level&&(v.startInline?v.startInline.push(i.start):v.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(v.childTokens[i.name]=i.childTokens)}),t.extensions=v),e.renderer){const r=this.defaults.renderer||new pe(this.defaults);for(const o in e.renderer){const s=e.renderer[o];var i=o;const l=r[i];r[i]=(...e)=>{let t=s.apply(r,e);return(t=!1===t?l.apply(r,e):t)||""}}t.renderer=r}if(e.tokenizer){const c=this.defaults.tokenizer||new k(this.defaults);for(const d in e.tokenizer){const u=e.tokenizer[d];var n=d;const p=c[n];c[n]=(...e)=>{let t=u.apply(c,e);return t=!1===t?p.apply(c,e):t}}t.tokenizer=c}if(e.hooks){const g=this.defaults.hooks||new x;for(const m in e.hooks){const f=e.hooks[m];var a=m;const h=g[a];x.passThroughHooks.has(m)?g[a]=e=>{return this.defaults.async?Promise.resolve(f.call(g,e)).then(e=>h.call(g,e)):(e=f.call(g,e),h.call(g,e))}:g[a]=(...e)=>{let t=f.apply(g,e);return t=!1===t?h.apply(g,e):t}}t.hooks=g}if(e.walkTokens){const y=this.defaults.walkTokens,b=e.walkTokens;t.walkTokens=function(e){let t=[];return t.push(b.call(this,e)),t=y?t.concat(y.call(this,e)):t}}this.defaults={...this.defaults,...t}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return y.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}#parseMarkdown(r,o){return(t,i)=>{i={...i};const n={...this.defaults,...i};!0===this.defaults.async&&!1===i.async&&(n.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),n.async=!0);i=this.#onError(!!n.silent,!!n.async);if(null==t)return i(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(n.hooks&&(n.hooks.options=n),n.async)return Promise.resolve(n.hooks?n.hooks.preprocess(t):t).then(e=>r(e,n)).then(e=>n.walkTokens?Promise.all(this.walkTokens(e,n.walkTokens)).then(()=>e):e).then(e=>o(e,n)).then(e=>n.hooks?n.hooks.postprocess(e):e).catch(i);try{n.hooks&&(t=n.hooks.preprocess(t));var a=r(t,n);n.walkTokens&&this.walkTokens(a,n.walkTokens);let e=o(a,n);return e=n.hooks?n.hooks.postprocess(e):e}catch(e){return i(e)}}}#onError(i,n){return e=>{var t;if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",i)return t="

    An error occurred:

    "+p(e.message+"",!0)+"
    ",n?Promise.resolve(t):t;if(n)return Promise.reject(e);throw e}}});function w(e,t){return v.parse(e,t)}w.options=w.setOptions=function(e){return v.setOptions(e),Z(w.defaults=v.defaults),w},w.getDefaults=W,w.defaults=u,w.use=function(...e){return v.use(...e),Z(w.defaults=v.defaults),w},w.walkTokens=function(e,t){return v.walkTokens(e,t)},w.parseInline=v.parseInline,w.Parser=b,w.parser=b.parse,w.Renderer=pe,w.TextRenderer=ge,w.Lexer=y,w.lexer=y.lex,w.Tokenizer=k,w.Hooks=x;w.parse=w,b.parse,y.lex;var Ye="2.6.0",me=t(P()),n=`## General - **Info** -: dynamic color theme and backgrounds is not working anymore in new Spotify - fix classnames library error(use own version) - fix wrong artist order when showing multiple artists - add brazilian translations (thanks to [@vinizent](https://github.com/vinizent)) - add chinese traditional translations (thanks to [@york9675](https://github.com/york9675)) ### P.S - update your spicetify if you are facing issues with lyrics - `,pe={"2.6.0":i,"2.5.0":`## General + `,fe={"2.6.0":n,"2.5.0":`## General - add new settings options for progress bar and controls to only show on mousemove - auto hide lyrics is more repsonsive now (should react faster) - add hyperlinks to title,artists and albums @@ -78,8 +78,8 @@ ${e} ## Settings menu - Complete UI Overhaul for Settings Menu - Descriptions for some common settings - - Added new options to fine tune the UI`},ge=i,me=t(j());function Ue(e=!1){var[t,i]=function(e=!1){let t,i;i=e||null===localStorage.getItem("whats-new_full-screen-version")?(t="New in Full Screen",b.parse(Object.entries(pe).map(([e,t])=>`# v${e} -`+t).join("\n\n"),{gfm:!0,breaks:!0})):(t="New in Full Screen v"+Ge,b.parse(ge,{gfm:!0,breaks:!0}));return[t,i]}(e);!async function(t,i,n,e=!1){for(;!Spicetify?.PopupModal||!Spicetify?.LocalStorage;)await new Promise(e=>setTimeout(e,100));var t=`whats-new_${t}-version`,a=Spicetify.LocalStorage.get(t)??"";try{(""===a||(0,me.default)(i,a)||e)&&(Spicetify.LocalStorage.set(t,i),function(){var e={...n,content:("string"==typeof n.content?function(e){var[t,i]=fe();return t.innerHTML=e,t.append(i),t}:function(e){var[t,i]=fe();return ue.default.render(e,t),t.appendChild(i),t})(n.content)};Spicetify.PopupModal.display(e)}())}catch(e){Spicetify.LocalStorage.set(t,i)}}("full-screen",Ge,{title:t,content:i,isLarge:!0},e)}function fe(){var e=document.createElement("div"),t=(e.setAttribute("id","whats-new-content-wrapper"),document.createElement("style"));return t.textContent=` + - Added new options to fine tune the UI`},he=n,ye=t(q());function Ke(e=!1){var[t,i]=function(e=!1){let t,i;i=e||null===localStorage.getItem("whats-new_full-screen-version")?(t="New in Full Screen",w.parse(Object.entries(fe).map(([e,t])=>`# v${e} +`+t).join("\n\n"),{gfm:!0,breaks:!0})):(t="New in Full Screen v"+Ye,w.parse(he,{gfm:!0,breaks:!0}));return[t,i]}(e);!async function(t,i,n,e=!1){for(;!Spicetify?.PopupModal||!Spicetify?.LocalStorage;)await new Promise(e=>setTimeout(e,100));var t=`whats-new_${t}-version`,a=Spicetify.LocalStorage.get(t)??"";try{(""===a||(0,ye.default)(i,a)||e)&&(Spicetify.LocalStorage.set(t,i),function(){var e={...n,content:("string"==typeof n.content?function(e){var[t,i]=be();return t.innerHTML=e,t.append(i),t}:function(e){var[t,i]=be();return me.default.render(e,t),t.appendChild(i),t})(n.content)};Spicetify.PopupModal.display(e)}())}catch(e){Spicetify.LocalStorage.set(t,i)}}("full-screen",Ye,{title:t,content:i,isLarge:!0},e)}function be(){var e=document.createElement("div"),t=(e.setAttribute("id","whats-new-content-wrapper"),document.createElement("style"));return t.textContent=` #whats-new-content-wrapper ul, #whats-new-content-wrapper ol { list-style: inherit; margin-left: 1.5em; @@ -102,17 +102,17 @@ ${e} border-radius: 6px; box-shadow: inset 0 -1px 0 rgba(110, 118, 129, 0.4); } - `,[e,t]}function Ne(e,t=""){var i=document.createElement("div"),n=(i.classList.add("setting-subhead"),document.createElement("h2"));return n.innerText=e,i.append(n),t&&((e=document.createElement("div")).classList.add("setting-subhead-description"),e.innerHTML=b.parse(t,{breaks:!0}),i.append(e)),i}function Ye(e,t,i,n=""){var a=document.createElement("div");return a.classList.add("setting-card"),a.setAttribute("setting-key",i),i in Le?a.setAttribute("setting-default",String(Re.getGlobal(i)===Le[i])):a.setAttribute("setting-default",String(Re.get(i)===Le[Re.getMode()][i])),a.innerHTML=` + `,[e,t]}function Be(e,t=""){var i=document.createElement("div"),n=(i.classList.add("setting-subhead"),document.createElement("h2"));return n.innerText=e,i.append(n),t&&((e=document.createElement("div")).classList.add("setting-subhead-description"),e.innerHTML=w.parse(t,{breaks:!0}),i.append(e)),i}function We(e,t,i,n=""){var a=document.createElement("div");return a.classList.add("setting-card"),a.setAttribute("setting-key",i),i in Re?a.setAttribute("setting-default",String(Ne.getGlobal(i)===Re[i])):a.setAttribute("setting-default",String(Ne.get(i)===Re[Ne.getMode()][i])),a.innerHTML=`
    ${e}
    -
    ${b.parse(n,{breaks:!0})}
    +
    ${w.parse(n,{breaks:!0})}
    - `,a}function De(e,t,i="",n,a,r,o,s,l=""){let c=n;function d(e){let t=Number(c)+e*a;to&&(t=o),c=Number(Number(t).toFixed(1<=a?0:2)),u.querySelector(".adjust-value").innerText=""+c+i,g&&g.classList.toggle("disabled",c===o),p&&p.classList.toggle("disabled",c===r),s(c)}const u=Ye(` + `,a}function Oe(e,t,i="",n,a,r,o,s,l=""){let c=n;function d(e){let t=Number(c)+e*a;to&&(t=o),c=Number(Number(t).toFixed(1<=a?0:2)),u.querySelector(".adjust-value").innerText=""+c+i,g&&g.classList.toggle("disabled",c===o),p&&p.classList.toggle("disabled",c===r),s(c)}const u=We(`

    ${c}${i}

    - `,e,t,l),p=u.querySelector(".minus"),g=u.querySelector(".plus");return p&&g&&(p.classList.toggle("disabled",c===r),g.classList.toggle("disabled",c===o),p.onclick=()=>d(-1),g.onclick=()=>d(1)),u}var v={langName:"English",context:{queue:"Playing from queue",track:"Playing track",album:"Playing from album",artist:"Playing from artist",playlist:"Playing from playlist",playlistFolder:"Playing from playlist folder",search:"Playing from search",searchDest:"Songs",collection:"Playing from collection",likedSongs:"Liked Songs",trackRadio:"Playing from track radio",artistRadio:"Playing from artist radio",albumRadio:"Playing from album radio",playlistRadio:"Playing from playlist radio"},upnext:"UP NEXT",unknownArtist:"Artist (Unavailable)",settings:{switchToTV:"Switch to TV Mode",switchToFullscreen:"Switch to Default Mode",tvModeConfig:"TV Mode Configuration",fullscreenConfig:"Full Screen Configuration",exit:"Exit",pluginSettings:"Plugin Settings",fsHideOriginal:"Hide Stock Button",fsHideOriginalDescription:"Hide the spotify's stock fullscreen button(available to **Premium** users)",language:"Language",autoLaunch:{setting:"Auto launch(on spotify startup)",description:"**Limitation:** The spotify window cannot go into fullscreen while automatically launching on startup.",never:"Never(Default)",default:"Open Default Mode",tvmode:"Open TV Mode",lastused:"Last Used Mode"},activationTypes:{setting:"Activation Methods",description:"Choose the methods you want to use to activate the plugin. F and T keys, or buttons on topbar and bottom bar.",both:"Buttons and Keyboard Shortcuts",btns:"Buttons Only",keys:"Keyboard Shortcuts Only"},buttonActivation:{setting:"Customize Activation Buttons",description:"Choose the buttons you want for activation, on topbar(*TV Mode*) and bottom bar(*Default Mode*).",both:"Buttons for both modes",tv:"Button only for TV Mode",def:"Button only for Default Mode"},keyActivation:{setting:"Customize Activation Keys",description:"Choose the keys you want for activation. F for *Default Mode* and T for *TV Mode*",both:"Keys for both modes",tv:"Key only for TV Mode",def:"Key only for Default Mode"},lyricsHeader:"Lyrics Settings",lyrics:"Lyrics",lyricsDescription:["**Note:** You need the [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) custom app to use this feature.","Follow the instructions in the link to install the custom app."],lyricsAlignment:{setting:"Lyrics Alignment",left:"Left",center:"Center",right:"Right"},autoHideLyrics:"Auto Hide Lyrics (when unavailable)",lyricsAnimationTempo:"Lyrics Animation Tempo",generalHeader:"General Settings",progressBar:"Progress Bar",playerControls:"Player Controls",trimTitle:"Trim Title",trimTitleUpNext:"Trim Title(Up Next)",showAlbum:{setting:"Show Album",never:"Never",always:"Always",date:"Show with Release Date"},showAllArtists:"Show All Artists",icons:"Icons",songChangeAnimation:"Song Change Animation",fullscreen:"Fullscreen",extraHeader:"Extra Functionality",backgroundChoice:{setting:"⭐ Background Choice",description:["**New:** Try out the **animated album art** option!","**Warning:** Looks beautiful but may be resource intensive, and is experimental."],dynamicColor:"Dynamic solid color",staticColor:"Static solid color",artwork:"Album art",animatedArt:"Animated Album Art (Experimental)",artist:"Artist artwork"},extraControls:"Extra Controls",upnextDisplay:"Upnext Display",contextDisplay:{setting:"Context Display",always:"Always",never:"Never",mouse:"On mouse movement"},volumeDisplay:{setting:"Volume Bar Display",description:["In `smart` mode the volume bar will be displayed when:"," - you move your mouse to the left side of the screen."," - when the volume is changed."],always:"Always",never:"Never",smart:"Smart"},appearanceHeader:"Advanced/Appearance",appearanceSubHeader:"*(Only change if you know what you are doing!)*",backgroundHeader:"Background Modifications",backgroundSubHeader:"Comes with reasonable defaults, *(Only change if you know what you are doing!)*",backgroundColor:{setting:"Color Choice (for dynamic colored background)",vibrant:"Vibrant",prominent:"Prominent",desaturated:"Desaturated (recommended)",lightVibrant:"Light Vibrant",darkVibrant:"Dark Vibrant",vibrantNonAlarming:"Vibrant Non Alarming"},staticColor:"Color Choice (for static colored background)",themedButtons:"Themed Buttons",themedIcons:"Themed Icons",invertColors:{setting:"Invert Colors",never:"Never",always:"Always",auto:"Automatic (Based on BG)"},verticalMonitorSupport:"Vertical Monitor Support",verticalMonitorSupportDescription:"Enable this if you have a vertical monitor setup. Lyrics will be shown in the bottom, when the window height is greater than the width.",backAnimationTime:"Background Animation Time (for image background)",animationSpeed:"⭐ Animation Speed (for animated background)",upnextScroll:{setting:"Upnext Scroll Animation",mq:"Marquee/Scrolling",sp:"Spotify/Translating"},upnextTime:"Upnext Time to Show",backgroundBlur:"Background Blur",backgroundBrightness:"Background Brightness",aboutHeader:"About",configReset:"Reset Config",reload:"Reload Client"},tvBtnDesc:"TV Mode Display",fullscreenBtnDesc:"Full Screen"},S=t(N()),ze={"en-US":v,"it-IT":(0,S.default)({langName:"Italiano",context:{queue:"Riproduzione coda",track:"Riproduzione brano",album:"Riproduzione album",artist:"Riproduzione artista",playlist:"Riproduzione playlist",playlistFolder:"Riproduzione da cartella di playlist",search:"Riproduzione da ricerca",searchDest:"Brani",collection:"Riproduzione dalla libreria",likedSongs:"Brani che ti piacciono",trackRadio:"Radio dal brano",artistRadio:"Radio da artista",albumRadio:"Radio da album",playlistRadio:"Radio da playlist"},upnext:"In coda",unknownArtist:"Artista sconosciuto",settings:{switchToTV:"Passa alla modalità TV",switchToFullscreen:"Passa alla modalità schermo intero",tvModeConfig:"Modalità TV",fullscreenConfig:"Modalità schermo intero",exit:"Esci",pluginSettings:"Impostazioni plugin",fsHideOriginal:"Nascondi pulsante Schermo Intero di Premium",fsHideOriginalDescription:"Nascondi il pulsante Schermo Intero degli utenti **Spotify Premium**. Richiede un riavvio.",language:"Lingua",autoLaunch:{setting:"Apri automaticamente (all'apertura di Spotify)",description:"**Limitazione:** La finestra di Spotify non può entrare in modalità schermo intero durante l'avvio all'accensione.",never:"Mai (Predefinito)",default:"Apri in modalità default",tvmode:"Apri in modalità TV",lastused:"Apri con l'ultima modalità usata"},lyricsHeader:"Impostazioni testo",lyrics:"Mostra testo",lyricsDescription:["**Nota:** Serve [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) per usare questa funzione.","Segui le instruzioni nel link per installare l'app."],lyricsAlignment:{setting:"Allineamento testo",left:"Sinistra",center:"Centro",right:"Destra"},lyricsAnimationTempo:"Durata animazione testo",generalHeader:"Impostazioni generali",progressBar:"Barra di avanzamento",playerControls:"Controlli player",trimTitle:"Accorcia titolo",trimTitleUpNext:"Accorcia titolo nel visualizzatore coda",showAlbum:{setting:"Mostra album",never:"Mai",always:"Sempre",date:"Con data di uscita"},showAllArtists:"Mostra tutti gli artisti",icons:"Icone",songChangeAnimation:"Animazione cambio brano",fullscreen:"Schermo intero",extraHeader:"Funzionalità aggiuntive",backgroundChoice:{setting:"Scelta sfondo",dynamicColor:"Tinta unita dinamica",staticColor:"Tinta unita fissa (scegli sotto)",artwork:"Immagine dell'album",artist:"Immagine dell'artista"},extraControls:"Controlli aggiuntivi",upnextDisplay:"Mostra il brano in coda",contextDisplay:{setting:"Mostra contesto",always:"Sempre",never:"Mai",mouse:"Al movimento del mouse"},volumeDisplay:{setting:"Mostra barra volume",description:["In modalità `smart` la barra del volume sarà mostrata quando:"," - muovi il mouse nella parte sinistra dello schermo."," - il volume viene cambiato."],always:"Sempre",never:"Mai",smart:"Smart"},appearanceHeader:"Avanzato/Aspetto",appearanceSubHeader:"Cambia solo se sai cosa stai facendo!",backgroundColor:{setting:"Colore su sfondo tinta unita",vibrant:"Vivace",prominent:"Evidente",desaturated:"Desaturato (raccomandato)",lightVibrant:"Vivace chiaro",darkVibrant:"Vivace scuro",vibrantNonAlarming:"Vivace delicato"},staticColor:"Scelta del colore per lo sfondo statico a tinta unita",themedButtons:"Pulsanti a tema",themedIcons:"Icone a tema",invertColors:{setting:"Inverti colori",never:"Mai",always:"Sempre",auto:"Automatico (basato su sfondo)"},backAnimationTime:"Durata animazione sfondo",upnextScroll:{setting:"Scorrimento Up next",mq:"Scorrimento",sp:"Traslazione"},upnextTime:"Tempo per mostrare Up next",backgroundBlur:"Sfocamento sfondo",backgroundBrightness:"Luminosità sfondo",aboutHeader:"A proposito",configReset:"Resetta configurazione",reload:"Ricarica client"},tvBtnDesc:"Modalità TV",fullscreenBtnDesc:"Schermo intero"},v),"zh-CN":(0,S.default)({langName:"简体中文",context:{queue:"正在从队列播放",track:"正在播放",album:"正在从专辑播放",artist:"正在从艺人播放",playlist:"正在从歌单播放",playlistFolder:"正在从歌单文件夹播放",search:"正在从搜索结果播放",searchDest:"歌曲",collection:"正在从合辑播放",likedSongs:"已点赞的歌曲",trackRadio:"正在从歌曲电台播放",artistRadio:"正在从艺人电台播放",albumRadio:"正在从专辑电台播放",playlistRadio:"正在从歌单电台播放"},upnext:"下一首",unknownArtist:"未知歌手",settings:{switchToTV:"切换至电视模式",switchToFullscreen:"切换至默认模式",tvModeConfig:"电视模式配置",fullscreenConfig:"全屏模式配置",exit:"退出",pluginSettings:"插件设置",fsHideOriginal:"隐藏切换至原版按钮 (Spotify Premium)",fsHideOriginalDescription:"隐藏原版的全屏按钮(仅对**Premium**用户有效). 需要重启",language:"语言",autoLaunch:{setting:"自动启动(当Spotify启动时)",description:"**限制:** 自动启动时Spotify窗口不能自动全屏",never:"从不(默认)",default:"进入默认模式",tvmode:"电视模式",lastused:"记忆上次使用状态"},activationTypes:{setting:"激活方式",description:"选择你要激活全屏的方式 FT 键, 或者顶栏和底栏的按钮. **需要重启**",both:"按钮和键盘快捷方式",btns:"仅按钮",keys:"仅键盘快捷方式"},buttonActivation:{setting:"自定义激活按钮",description:"选择你要激活全屏的按钮模式,顶栏(*电视模式*)和底栏(*默认模式) **需要重启**",both:"两者都要",tv:"仅电视模式",def:"仅普通模式"},keyActivation:{setting:"自定义激活快捷键",description:"选择激活全屏的快捷键模式 F 切换到*默认模式*, T 切换到*电视模式* **需要重启**",both:"两者都要",tv:"仅电视模式",def:"仅普通模式"},lyricsHeader:"歌词设置",lyrics:"歌词",lyricsDescription:["**注意:**你需要[lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus)插件来启用歌词","根据连接里的指示来安装这个插件"],lyricsAlignment:{setting:"歌词对齐方式",left:"靠左",center:"居中",right:"靠右"},lyricsAnimationTempo:"歌词动画速度",generalHeader:"通用设置",progressBar:"播放进度条",playerControls:"播放控制",trimTitle:"缩短标题",trimTitleUpNext:"缩短标题 (下一首提示)",showAlbum:{setting:"显示标题",never:"永不",always:"总是",date:"与发布日期一起显示"},showAllArtists:"显示所有艺人",icons:"显示图标",songChangeAnimation:"切歌动画",fullscreen:"全屏",extraHeader:"额外功能",backgroundChoice:{setting:"背景选择",description:["**最新最热:** 试一下**带动画的专辑图** 选项 [灵感](https://github.com/surfbryce/beautiful-lyrics)","**警告:** 很漂亮,但是这可能占用较多资源,而且这是实验性的"],dynamicColor:"动态纯色",staticColor:"静态纯色(从下面选择)",artwork:"专辑图",animatedArt:"带动画的专辑图(实验性)",artist:"艺人照片"},extraControls:"额外控件",upnextDisplay:"下一首提示",contextDisplay:{setting:"内容来源显示",always:"总是",never:"从不",mouse:"当鼠标移动时"},volumeDisplay:{setting:"音量显示",description:["自动模式下音量条将会在以下情况显示:"," - 鼠标移动到屏幕左侧"," - 音量有变化"],always:"总是",never:"从不",smart:"自动"},appearanceHeader:"高级/外观",appearanceSubHeader:"*(不要动除非你知道自己在做什么)*",backgroundColor:{setting:"纯色背景的颜色配置",vibrant:"Vibrant",prominent:"Prominent",desaturated:"Desaturated (推荐)",lightVibrant:"Light Vibrant",darkVibrant:"Dark Vibrant",vibrantNonAlarming:"Vibrant Non Alarming"},themedButtons:"主题色按钮",themedIcons:"主题色图标",invertColors:{setting:"反转颜色",never:"从不",always:"总是",auto:"自动(基于背景)"},backAnimationTime:"背景动画时间",upnextScroll:{setting:"下一首提示滚动",mq:"Marquee/滚动",sp:"Spotify/变换"},upnextTime:"下一首提示显示时间",backgroundBlur:"背景模糊",backgroundBrightness:"背景亮度",aboutHeader:"关于",configReset:"重置配置",reload:"重新载入应用"},tvBtnDesc:"电视模式显示",fullscreenBtnDesc:"全屏"},v),"de-DE":(0,S.default)({langName:"Deutsch",context:{queue:"Wiedergabe aus der Warteschlange",track:"Titel spielen",album:"Abspielen von Album",artist:"Abspielen von Künstler",playlist:"Abspielen von Playlist",playlistFolder:"Wiedergabe aus dem Playlist-Ordner",search:"Wiedergabe aus Suche",searchDest:"Lieder",collection:"Abspielen aus Sammlung",likedSongs:"Lieblingssongs",trackRadio:"Abspielen von Titel Radio",artistRadio:"Abspielen von Künstler Radio",albumRadio:"Abspielen von Alben Radio",playlistRadio:"Abspielen von Playlist Radio"},upnext:"ALS NÄCHSTES",unknownArtist:"Künstler (nicht verfügbar)",settings:{switchToTV:"Wechseln zu TV-Modus",switchToFullscreen:"Einstellungen des Vollbildmodis",tvModeConfig:"Konfiguration des TV-Modus",fullscreenConfig:"Vollbildmodus konfiguration",exit:"Exit",pluginSettings:"Plugin Einstellungen",fsHideOriginal:"Stock-Schaltfläche ausblenden (Spotify Premium)",language:"Sprache",lyricsHeader:"Ausrichtung des Liedtextes",lyrics:"Liedtext",lyricsAlignment:{setting:"Liedtext Ausrichtung",left:"Links",center:"Center",right:"Rechts"},lyricsAnimationTempo:"Liedtext Animationtempo",generalHeader:"Allgemeine Einstellungen",progressBar:"Fortschritt anzeige",playerControls:"Wiedegergabe steuerung",trimTitle:"Titel trimmen",trimTitleUpNext:"Trim Title(Up Next)",showAlbum:{setting:"Album anzeigen",never:"Niemals",always:"Immer",date:"Veröffentlichungsdatum anzeigen"},showAllArtists:"Alle Künstler anzeigen",icons:"Symbole",songChangeAnimation:"Songwechsel-Animation",fullscreen:"Vollbildmodus",extraHeader:"Zusätzliche Funktionalität",backgroundChoice:{setting:"Hintergrundauswahl",color:"Einfarbig",artwork:"Titelbild"},extraControls:"Zusätzliche Steuerelemente",upnextDisplay:"Nächste-titel Anzeige",contextDisplay:{setting:"Kontextanzeige",always:"Immer",never:"Niemals",mouse:"Bei Mausbewegung"},volumeDisplay:{setting:"Anzeige der Lautstärkenleiste",always:"Immer",never:"Niemals",mouse:"Bei Mausbewegung",volume:"Bei Lautstärkeänderung"},appearanceHeader:"Erweitert/Aussehen",appearanceSubHeader:"Achtung! Ändern diese Einstellungen, wenn Sie wissen, was Sie tun!",backgroundColor:{setting:"Farbwahl auf farbigem Hintergrund",vibrant:"Beschwingt",prominent:"Prominente",desaturated:"Entsättigt (empfohlen)",lightVibrant:"Hell lebendig",darkVibrant:"Dunkel lebendig",vibrantNonAlarming:"Lebhaft, nicht alarmierend"},themedButtons:"Themed Tasten",themedIcons:"Themed Symbole",invertColors:{setting:"Farben umkehren",never:"Niemals",always:"Immer",auto:"Automatisch (basierend auf Hintergrund)"},backAnimationTime:"Background Animation Time",upnextScroll:{setting:"Nächstes Lied Scroll-Animation",mq:"Marquee/Scrolling",sp:"Spotify/Translating"},upnextTime:"Nächster Titel Anzeigedauer",backgroundBlur:"Hintergrund Blur",backgroundBrightness:"Hintergrund Brightness",configReset:"Konfig zurücksetzen",reload:"Client neu laden"},tvBtnDesc:"TV Modus",fullscreenBtnDesc:"Vollbild"},v),"tr-TR":(0,S.default)({langName:"Turkish",context:{queue:"Çalma sırasından çalınıyor",track:"Parça çalınıyor",album:"Albümden oynatılıyor",artist:"Sanatçı'dan oynatılıyor",playlist:"Çalma Listesi'den oynatılıyor",playlistFolder:"Çalma Listesi Klasöründen oynatılıyor",search:"Arama'dan oynatılıyor",searchDest:"Parçalar",collection:"Koleksiyon'dan oynatılıyor",likedSongs:"Beğenilen şarkılar",trackRadio:"Parça Radyosu'ndan oynatılıyor",artistRadio:"Sanatçı Radyosu'ndan oynatılıyor",albumRadio:"Albüm Radyosu'ndan oynatılıyor",playlistRadio:"Çalma Listesi Radyosu'ndan oynatılıyor"},upnext:"SONRAKİ",unknownArtist:"Sanatçı (Mevcut değil)",settings:{switchToTV:"TV Moduna geç",switchToFullscreen:"Tam ekran moduna geç",tvModeConfig:"TV Modu ayarları",fullscreenConfig:"Tam ekran modu ayarları",exit:"Çık",pluginSettings:"Eklenti ayarları",fsHideOriginal:"Tam ekran tuşunu gizle(Spotify Premium kullanıcıları için)",language:"Dil",lyricsHeader:"Şarkı sözleri ayarları",lyrics:"Şarkı sözleri",lyricsAlignment:{setting:"Şarkı sözleri konumu",left:"Sol",center:"Orta",right:"Sağ"},lyricsAnimationTempo:"Şarkı sözleri animasyonu hızı",generalHeader:"Genel ayarlar",progressBar:"İlerleme çubuğu",playerControls:"Oynatıcı kontrolleri",trimTitle:"Başlığı kırp",trimTitleUpNext:"Başlığı kırp (Sonraki şarkı gösterimi)",showAlbum:{setting:"Albüm'ü göster",never:"Asla",always:"Her zaman",date:"Albüm'ün yayınlanma tarihini göster"},showAllArtists:"Şarkıya katkısı olan tüm sanatçıları göster",icons:"Simgeler",songChangeAnimation:"Şarkı değiştirme animasyonu",fullscreen:"Tam ekran",extraHeader:"Ekstra özellikler",backgroundChoice:{setting:"Arka plan özellikleri",color:"Tek renk",artwork:"Albüm kapağı"},extraControls:"Ekstra Kontroller",upnextDisplay:"Sonraki şarkıyı gösterme",contextDisplay:{setting:"Ayrıntıları gösterme",always:"Her zaman",never:"Asla",mouse:"Yalnızca mause hareketinde"},volumeDisplay:{setting:"Ses çubuğunu gösterme",always:"Her zaman",never:"Asla",mouse:"Yalnızca mause hareketinde",volume:"Yalnızca ses düzeyi değiştiği zaman"},appearanceHeader:"Gelişmiş/Görünüm",appearanceSubHeader:"Dikkat! Yalnızca ne yaptığını biliyorsan değiştir.",backgroundColor:{setting:"Arkaplan özel renk tercihi",vibrant:"Parlak",prominent:"Öne çıkan",desaturated:"Soluk (önerilir)",lightVibrant:"Açık parlak",darkVibrant:"Karanlık parlak",vibrantNonAlarming:"Göz almayan parlak"},themedButtons:"Albüm resminin renklerine göre tuşlar",themedIcons:"Albüm resminin renklerine göre simgeler",invertColors:{setting:"Renkleri ters çevir",never:"Asla",always:"Her zaman",auto:"Otomatik (Arka plana göre)"},backAnimationTime:"Arkaplan animasyon stili",upnextScroll:{setting:"Sonraki şarkı yazı animasyonu",mq:"Marquee/Kayan",sp:"Spotify/Sağa sola giden"},upnextTime:"Sonraki şarkı kaçıncı saniyeden sonra gösterilsin? ",backgroundBlur:"Arkaplan'ı bulanıklaştır",backgroundBrightness:"Arka plan parlaklığı",configReset:"Ayarları sıfırla",reload:"İstemciyi (Spotify) yenile (F5)"},tvBtnDesc:"TV Modu'nu göster",fullscreenBtnDesc:"Tam ekran"},v),"ru-RU":(0,S.default)({langName:"Русский",context:{queue:"Воспроизведение из очереди",track:"Воспроизведение трека",album:"Воспроизведение из альбома",artist:"Воспроизведение со страницы исполнителя",playlist:"Воспроизведение из плейлиста",playlistFolder:"Воспроизведение из папки плейлистов",search:"Воспроизведение из поиска",searchDest:"Треки",collection:"Воспроизведение из коллекции",likedSongs:"Любимые треки",trackRadio:"Воспроизведение из радио по треку",artistRadio:"Воспроизведение из радио по исполнителю",albumRadio:"Воспроизведение из радио по альбому",playlistRadio:"Воспроизведение из радио по плейлисту"},upnext:"СЛЕДУЮЩЕЕ",unknownArtist:"Исполнитель (Недоступен)",settings:{switchToTV:"Переключиться на ТВ-режим",switchToFullscreen:"Переключиться на режим По-умолчанию",tvModeConfig:"Настройки ТВ-режима",fullscreenConfig:"Настройки Полного экрана",exit:"Выход",pluginSettings:"Настройки плагина",fsHideOriginal:"Скрыть стоковую кнопку",fsHideOriginalDescription:"Скрывает кнопку Spotify для открытия стокового полноэкранного режима (доступна **Премиум** пользователям). Требуется перезагрузка.",language:"Язык",autoLaunch:{setting:"Авто-запуск (при запуске Spotify)",description:"**Ограничение:** Окно Spotify не может быть развернуто на весь экран при авто-запуске плагина.",never:"Никогда (по-умолчанию)",default:"Открыть режим По-умолчанию",tvmode:"Открыть ТВ-режим",lastused:"Последний использованный режим"},activationTypes:{setting:"Способы активации",description:"Выберите способы активации плагина. Клавиши F и T или кнопки на верхней и нижней панелях. **Требуется перезагрузка**",both:"Кнопки и сочетания клавиш",btns:"Только кнопки",keys:"Только сочетания клавиш"},buttonActivation:{setting:"Настройки кнопок активации",description:"Выберите кнопки активации плагина на верхней (*ТВ-режим*) и нижней (*режим По-умолчанию*) панелях. **Требуется перезагрузка**",both:"Кнопки обоих режимов",tv:"Кнопка только ТВ-режима",def:"Кнопка только режима По-умолчанию"},keyActivation:{setting:"Настройки клавиш активации",description:"Выберите клавиши для активации. F для *режима По-умолчанию* и T для *ТВ-режима* **Требуется перезагрузка**",both:"Клавиши для обоих режимов",tv:"Клавиша только для ТВ-режима",def:"Клавиша только для режима По-умолчанию"},lyricsHeader:"Настройки текста",lyrics:"Текст трека",lyricsDescription:["**Внимание:** Требуется приложение [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) для использования этой функции.","Следуйте инструкциям по ссылке для его установки."],lyricsAlignment:{setting:"Выравнивание текста",left:"По левому краю",center:"По центру",right:"По правому краю"},lyricsAnimationTempo:"Скорость анимации текста",generalHeader:"Основные настройки",progressBar:"Полоса воспроизведения",playerControls:"Элементы управления воспроизведением",trimTitle:"Обрезать название",trimTitleUpNext:"Обрезать название (следующего трека)",showAlbum:{setting:"Отображать альбом",never:"Никогда",always:"Всегда",date:"Отображать с датой релиза"},showAllArtists:"Отображать всех исполнителей",icons:"Иконки",songChangeAnimation:"Анимация переключения трека",fullscreen:"Полный экран",extraHeader:"Дополнительные настройки",backgroundChoice:{setting:"Задний фон",description:["**Новое:** Попробуйте настройку **анимированная обложка альбома**! [Вдохновение](https://github.com/surfbryce/beautiful-lyrics)","**Внимание:** Выглядит очень красиво, но потребляет больше ресурсов и является экспериментальной функцией."],dynamicColor:"Динамическая заливка сплошным цветом",staticColor:"Статическая заливка сплошным цветом (Выберите ниже)",artwork:"Обложка альбома",animatedArt:"Анимированная обложка альбома (Экспериментально)",artist:"Изображение артиста"},extraControls:"Дополнительные элементы управления",upnextDisplay:"Отображать следующий трек",contextDisplay:{setting:"Отображение контекста воспроизведения",always:"Всегда",never:"Никогда",mouse:"При движении мыши"},volumeDisplay:{setting:"Отображать полосу громкости",description:["В `умном` режиме полоса громкости будет отображена при:"," - движении мыши к левой части экрана."," - изменении громкости."],always:"Всегда",never:"Никогда",smart:"Умный режим"},appearanceHeader:"Расширенные настройки внешнего вида",appearanceSubHeader:"*(Изменяйте, только если знаете, что делаете!)*",backgroundColor:{setting:"Тип цвета динамической заливки заднего фона",vibrant:"Насыщенный",prominent:"Яркий",desaturated:"Приглушенный (рекомендуется)",lightVibrant:"Насыщенный светлый",darkVibrant:"Насыщенный темный",vibrantNonAlarming:"Насыщенный спокойный"},staticColor:"Цвет статичной заливки заднего фона",themedButtons:"Цветные кнопки",themedIcons:"Цветные иконки",invertColors:{setting:"Инвертировать цвета",never:"Никогда",always:"Всегда",auto:"Автоматически (на основе фона)"},backAnimationTime:"Длительность анимации смены фона",upnextScroll:{setting:"Анимация смены трека",mq:"Marquee/Прокрутка",sp:"Spotify/Переход"},upnextTime:"Время отображения следующего трека",backgroundBlur:"Размытие фона",backgroundBrightness:"Яркость фона",aboutHeader:"О расширении",configReset:"Сбросить настройки",reload:"Перезагрузить приложение"},tvBtnDesc:"ТВ-режим",fullscreenBtnDesc:"Полный экран"},v),"vi-VN":(0,S.default)({langName:"Tiếng Việt",context:{queue:"Đang phát từ hàng chờ",track:"Đang phát từ bài hát",album:"Đang phát từ album",artist:"Đang phát từ nghệ sĩ",playlist:"Đang phát từ danh sách phát",playlistFolder:"Đang phát từ thư mục danh sách phát",search:"Đang phát từ tìm kiếm",searchDest:"Bài hát",collection:"Đang phát từ bộ sưu tập",likedSongs:"Bài hát đã thích",trackRadio:"Đang phát từ đài phát của bài hát",artistRadio:"Đang phát từ đài phát của nghệ sĩ",albumRadio:"Đang phát từ đài phát của album",playlistRadio:"Đang phát từ đài phát của danh sách phát"},upnext:"TIẾP THEO",unknownArtist:"Nghệ sĩ (Không khả dụng)",settings:{switchToTV:"Chuyển sang chế độ TV",switchToFullscreen:"Chuyển sang chế độ mặc định",tvModeConfig:"Tùy chỉnh chế độ TV",fullscreenConfig:"Tùy chính chế độ toàn màn hình",exit:"Thoát",pluginSettings:"Cài đặt Plugin",fsHideOriginal:"Ẩn nút mặc định",fsHideOriginalDescription:"Ẩn nút toàn màn hình mặc định của Spotify (yêu cầu là người dùng **Premium**). Yêu cầu tải lại.",language:"Ngôn ngữ",autoLaunch:{setting:"Tự khởi động (khi Spotify khởi động)",description:"**Hạn chế:** Cửa sổ Spotify sẽ không thể mở toàn màn hình khi được tự động khởi chạy với hệ thống.",never:"Không bao giờ (Mặc định)",default:"Mở chế độ mặc định",tvmode:"Mở chế độ TV",lastused:"Chế độ dùng lần cuối"},activationTypes:{setting:"Phương thức kích hoạt",description:"Chọn phương thức bạn muốn để kích hoạt Plugin. Phím FT, hoặc là nút ở trên thanh điều hướng và thanh trình phát. **Yêu cầu tải lại**",both:"Nút và phím tắt",btns:"Chỉ nút",keys:"Chỉ phím tắt"},buttonActivation:{setting:"Tùy chính nút kích hoạt",description:"Chọn nút bạn muốn để kích hoạt, trên thanh điều hướng (*Chế độ TV*) và thanh trình phát (*Chế độ mặc định*). **Yêu cầu tải lại**",both:"Nút cho cả hai chế độ",tv:"Chỉ cho chế độ TV",def:"Chỉ cho chế độ mặc định"},keyActivation:{setting:"Tùy chỉnh phím kích hoạt",description:"Chọn phím bạn muốn để kích hoạt. F cho *Chế độ mặc định* và T cho *Chế độ TV* **Yêu cầu tải lại**",both:"Phím cho cả hai chế độ",tv:"Chỉ cho chế độ TV",def:"Chỉ cho chế độ mặc định"},lyricsHeader:"Cài đặt lời bài hát",lyrics:"Lời bài hát",lyricsDescription:["**Ghi chú:** Bạn sẽ cần ứng dụng [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) để dùng tính năng này.","Làm theo các bước trên chỉ dẫn để cài đặt ứng dụng."],lyricsAlignment:{setting:"Căn chỉnh lời bài hát",left:"Trái",center:"Giữa",right:"Phải"},lyricsAnimationTempo:"Nhịp điệu hoạt họa",generalHeader:"Cài đặt tổng quát",progressBar:"Thanh tiến trình",playerControls:"Điều khiển trình phát",trimTitle:"Lược bỏ tiêu đề",trimTitleUpNext:"Lược bỏ tiêu đề (Bài hát kế tiếp)",showAlbum:{setting:"Hiện album",never:"Không bao giờ",always:"Luôn hiện",date:"Hiện với ngày phát hành"},showAllArtists:"Hiện toàn bộ nghệ sĩ",icons:"Icon",songChangeAnimation:"Hoạt họa chuyển bài hát",fullscreen:"Toàn màn hình",extraHeader:"Tính năng bổ sung",backgroundChoice:{setting:"Tùy chọn hình nền",dynamicColor:"Hình nền màu động",staticColor:"Hình nền màu tĩnh (Chọn bên dưới)",artwork:"Ảnh bìa album",artist:"Ảnh bìa nghệ sĩ"},extraControls:"Điều khiển bổ sung",upnextDisplay:"Hiện bài hát tiếp theo",contextDisplay:{setting:"Hiện tùy chọn",always:"Luôn hiện",never:"Không bao giờ",mouse:"Khi chuột di chuyển"},volumeDisplay:{setting:"Hiển thị thanh âm lượng",description:["Trong chế độ `thông minh`, thanh âm lượng sẽ được hiển thị khi:"," - bạn di chuyển chuột về phía trái màn hình."," - âm lượng thay đổi."],always:"Luôn hiện",never:"Không bao giờ",smart:"Thông minh"},appearanceHeader:"Nâng cao/Giao diện",appearanceSubHeader:"*(Chỉ thay đổi nếu bạn biết bạn đang làm gì!)*",backgroundColor:{setting:"Tùy chọn màu cho hình nền màu động",vibrant:"Sống động",prominent:"Nổi bật",desaturated:"Khử bão hòa (được khuyến nghị)",lightVibrant:"Sống động (sáng)",darkVibrant:"Sống động (tối)",vibrantNonAlarming:"Không quá sống động"},staticColor:"Tùy chọn màu cho hình nền màu tĩnh",themedButtons:"Nút được chỉnh theo màu",themedIcons:"Icon được chỉnh theo màu",invertColors:{setting:"Đảo ngược màu",never:"Không bao giờ",always:"Luôn đảo ngược",auto:"Tự động (Dựa trên hình nền)"},backAnimationTime:"Thời gian hoạt họa của hình nền",upnextScroll:{setting:"Hoạt họa của bài hát tiếp theo",mq:"Marquee/Scrolling",sp:"Spotify/Translating"},upnextTime:"Thời gian hiện thông báo bài hát tiếp theo",backgroundBlur:"Làm mờ hình nền",backgroundBrightness:"Độ sáng hình nền",aboutHeader:"Thông tin",configReset:"Đặt lại cài đặt",reload:"Tải lại Client"},tvBtnDesc:"Chế độ TV",fullscreenBtnDesc:"Toàn màn hình"},v),"es-ES":(0,S.default)({langName:"Spanish",context:{queue:"Reproduciendo desde la cola",track:"Reproduciendo la pista",album:"Reproduciendo desde el álbum",artist:"Reproduciendo desde el artista",playlist:"Reproduciendo desde la lista de reproducción",playlistFolder:"Reproduciendo desde la carpeta de listas de reproducción",search:"Reproduciendo desde la búsqueda",searchDest:"Canciones",collection:"Reproduciendo desde la colección",likedSongs:"Canciones favoritas",trackRadio:"Reproduciendo desde la radio de la pista",artistRadio:"Reproduciendo desde la radio del artista",albumRadio:"Reproduciendo desde la radio del álbum",playlistRadio:"Reproduciendo desde la radio de la lista de reproducción"},upnext:"SIGUIENTE",unknownArtist:"Artista (No disponible)",settings:{switchToTV:"Cambiar a modo TV",switchToFullscreen:"Cambiar a modo pantalla completa",tvModeConfig:"Configuración del modo TV",fullscreenConfig:"Configuración de pantalla completa",exit:"Salir",pluginSettings:"Configuración del complemento",fsHideOriginal:"Ocultar el botón de pantalla completa de Spotify",fsHideOriginalDescription:"Oculta el botón de pantalla completa de Spotify (solo disponible para usuarios **Premium**)",language:"Idioma",autoLaunch:{setting:"Lanzamiento automático (al iniciar Spotify)",description:"**Limitación:** La ventana de Spotify no puede ir a pantalla completa al iniciarse automáticamente.",never:"Nunca (predeterminado)",default:"Abrir el modo predeterminado",tvmode:"Abrir el modo TV",lastused:"Último modo usado"},activationTypes:{setting:"Métodos de activación",description:"Elige los métodos que quieres usar para activar el complemento. Los atajos de teclado F y T, o los botones en la barra superior e inferior.",both:"Botones y atajos de teclado",btns:"Botones solo",keys:"Atajos de teclado solo"},buttonActivation:{setting:"Personalizar los botones de activación",description:"Elige los botones que quieres para la activación, en la barra superior (*Modo TV*) y en la barra inferior (*Modo predeterminado*).",both:"Botones para ambos modos",tv:"Botón solo para el modo TV",def:"Botón solo para el modo predeterminado"},keyActivation:{setting:"Personalizar los atajos de activación",description:"Elige los atajos que quieres para la activación. F para el *Modo predeterminado* y T para el *Modo TV*",both:"Atajos para ambos modos",tv:"Atajo solo para el modo TV",def:"Atajo solo para el modo predeterminado"},lyricsHeader:"Configuración de las letras",lyrics:"Letras",lyricsDescription:["**Nota:** Necesitas la aplicación personalizada [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) para usar esta función.","Sigue las instrucciones del enlace para instalar la aplicación personalizada."],lyricsAlignment:{setting:"Alineación de las letras",left:"Izquierda",center:"Centro",right:"Derecha"},autoHideLyrics:"Ocultar las letras automáticamente (cuando no estén disponibles)",lyricsAnimationTempo:"Tempo de la animación de las letras",generalHeader:"Configuración general",progressBar:"Barra de progreso",playerControls:"Controles del reproductor",trimTitle:"Recortar título",trimTitleUpNext:"Recortar título (Siguiente)",showAlbum:{setting:"Mostrar álbum",never:"Nunca",always:"Siempre",date:"Mostrar con fecha de lanzamiento"},showAllArtists:"Mostrar todos los artistas",icons:"Iconos",songChangeAnimation:"Animación de cambio de canción",fullscreen:"Pantalla completa",extraHeader:"Funcionalidad adicional",backgroundChoice:{setting:"⭐ Elección de fondo",description:["**Nuevo:** ¡Prueba la opción de **obra de arte del álbum animado**!","**Advertencia:** Se ve hermoso, pero puede ser intensivo en recursos y es experimental."],dynamicColor:"Color sólido dinámico",staticColor:"Color sólido estático",artwork:"Obra de arte del álbum",animatedArt:"Obra de arte del álbum animada (Experimental)",artist:"Obra de arte del artista"},extraControls:"Controles adicionales",upnextDisplay:"Visualización de la lista de reproducción",contextDisplay:{setting:"Visualización de contexto",always:"Siempre",never:"Nunca",mouse:"Al mover el mouse"},volumeDisplay:{setting:"Visualización de la barra de volumen",description:["En el modo `inteligente`, la barra de volumen se mostrará cuando:"," - mueves el mouse al lado izquierdo de la pantalla."," - cuando se cambia el volumen."],always:"Siempre",never:"Nunca",smart:"Inteligente"},appearanceHeader:"Apariencia avanzada/Apariencia",appearanceSubHeader:"*(Solo cambia si sabes lo que estás haciendo!)*",backgroundHeader:"Modificaciones de fondo",backgroundSubHeader:"Viene con valores predeterminados razonables, *(solo cambia si sabes lo que estás haciendo!)*",backgroundColor:{setting:"Elección de color (para fondo de color dinámico)",vibrant:"Vibrante",prominent:"Prominente",desaturated:"Desaturado (recomendado)",lightVibrant:"Vibrante claro",darkVibrant:"Vibrante oscuro",vibrantNonAlarming:"Vibrante sin alarma"},staticColor:"Elección de color (para fondo de color estático)",themedButtons:"Botones temáticos",themedIcons:"Iconos temáticos",invertColors:{setting:"Invertir colores",never:"Nunca",always:"Siempre",auto:"Automático (Basado en BG)"},backAnimationTime:"Tiempo de animación de fondo (para fondo de imagen)",animationSpeed:"⭐ Velocidad de animación (para fondo animado)",upnextScroll:{setting:"Animación de desplazamiento de la lista de reproducción",mq:"Marquesina/Desplazamiento",sp:"Spotify/Traducción"},upnextTime:"Tiempo de visualización de la lista de reproducción",backgroundBlur:"Desenfoque de fondo",backgroundBrightness:"Brillo de fondo",aboutHeader:"Acerca de",configReset:"Restablecer configuración",reload:"Recargar cliente"},tvBtnDesc:"Visualización del modo TV",fullscreenBtnDesc:"Pantalla completa"},v),"fr-FR":(0,S.default)({langName:"Français",context:{queue:"Lecture de la file d'attente",track:"Lecture de la piste",album:"Lecture de l'album",artist:"Lecture de l'artiste",playlist:"Lecture de la playlist",playlistFolder:"Lecture du dossier de playlist",search:"Lecture de la recherche",searchDest:"Chansons",collection:"Lecture de la collection",likedSongs:"Chansons aimées",trackRadio:"Lecture de la radio de la piste",artistRadio:"Lecture de la radio de l'artiste",albumRadio:"Lecture de la radio de l'album",playlistRadio:"Lecture de la radio de la playlist"},upnext:"À SUIVRE",unknownArtist:"Artiste (Indisponible)",settings:{switchToTV:"Passer en mode TV",switchToFullscreen:"Revenir au mode par défaut",tvModeConfig:"Configuration du mode TV",fullscreenConfig:"Configuration en plein écran",exit:"Quitter",pluginSettings:"Paramètres du plugin",fsHideOriginal:"Masquer le bouton d'origine",fsHideOriginalDescription:"Masquez le bouton de plein écran d'origine de Spotify (disponible pour les utilisateurs **Premium**)",language:"Langue",autoLaunch:{setting:"Lancement automatique (au démarrage de Spotify)",description:"**Limitation :** La fenêtre de Spotify ne peut pas passer en mode plein écran lors du démarrage automatique.",never:"Jamais (Par défaut)",default:"Ouvrir en mode par défaut",tvmode:"Ouvrir en mode TV",lastused:"Dernier mode utilisé"},activationTypes:{setting:"Méthodes d'activation",description:"Choisissez les méthodes que vous souhaitez utiliser pour activer le plugin. Touches F et T, ou boutons dans la barre supérieure et la barre inférieure.",both:"Boutons et raccourcis clavier",btns:"Boutons uniquement",keys:"Raccourcis clavier uniquement"},buttonActivation:{setting:"Personnaliser les boutons d'activation",description:"Choisissez les boutons que vous souhaitez utiliser pour l'activation, dans la barre supérieure (*Mode TV*) et la barre inférieure (*Mode par défaut*).",both:"Boutons pour les deux modes",tv:"Bouton uniquement pour le mode TV",def:"Bouton uniquement pour le mode par défaut"},keyActivation:{setting:"Personnaliser les touches d'activation",description:"Choisissez les touches que vous souhaitez utiliser pour l'activation. Touche F pour le *Mode par défaut* et T pour le *Mode TV*",both:"Touches pour les deux modes",tv:"Touche uniquement pour le mode TV",def:"Touche uniquement pour le mode par défaut"},lyricsHeader:"Paramètres des paroles",lyrics:"Paroles",lyricsDescription:["**Remarque :** Vous avez besoin de l'application personnalisée [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) pour utiliser cette fonctionnalité.","Suivez les instructions du lien pour installer l'application personnalisée."],lyricsAlignment:{setting:"Alignement des paroles",left:"Gauche",center:"Centre",right:"Droite"},autoHideLyrics:"Masquer automatiquement les paroles (lorsque pas disponibles)",lyricsAnimationTempo:"Tempo de l'animation des paroles",generalHeader:"Paramètres généraux",progressBar:"Barre de progression",playerControls:"Contrôles du lecteur",trimTitle:"Réduire le titre",trimTitleUpNext:"Réduire le titre (À suivre)",showAlbum:{setting:"Afficher l'album",never:"Jamais",always:"Toujours",date:"Afficher avec la date de sortie"},showAllArtists:"Afficher tous les artistes",icons:"Icônes",songChangeAnimation:"Animation de changement de chanson",fullscreen:"Plein écran",extraHeader:"Fonctionnalités supplémentaires",backgroundChoice:{setting:"⭐ Choix de l'arrière-plan",description:["**Nouveau :** Essayez l'option **image d'album animée** !","**Avertissement :** Cela peut être très beau, mais peut consommer des ressources et est expérimental."],dynamicColor:"Couleur solide dynamique",staticColor:"Couleur solide statique",artwork:"Image d'album",animatedArt:"Image d'album animée (Expérimental)",artist:"Image de l'artiste"},extraControls:"Contrôles supplémentaires",upnextDisplay:"Affichage À suivre",contextDisplay:{setting:"Affichage du contexte",always:"Toujours",never:"Jamais",mouse:"Lors du mouvement de la souris"},volumeDisplay:{setting:"Affichage de la barre de volume",description:["En mode `intelligent`, la barre de volume s'affichera lorsque :"," - vous déplacez votre souris vers le côté gauche de l'écran."," - lorsque le volume est modifié."],always:"Toujours",never:"Jamais",smart:"Intelligent"},appearanceHeader:"Paramètres avancés/Aspect",appearanceSubHeader:"*(À changer uniquement si vous savez ce que vous faites !)*",backgroundHeader:"Modifications de l'arrière-plan",backgroundSubHeader:"Fournit des valeurs par défaut raisonnables, *(À changer uniquement si vous savez ce que vous faites !)*",backgroundColor:{setting:"Choix de la couleur (pour un arrière-plan coloré dynamique)",vibrant:"Vibrante",prominent:"Prominente",desaturated:"Désaturée (recommandée)",lightVibrant:"Légèrement vibrante",darkVibrant:"Foncé vibrante",vibrantNonAlarming:"Vibrante non alarmante"},staticColor:"Choix de la couleur (pour un arrière-plan coloré statique)",themedButtons:"Boutons thématiques",themedIcons:"Icônes thématiques",invertColors:{setting:"Inverser les couleurs",never:"Jamais",always:"Toujours",auto:"Automatique (basé sur le fond)"},backAnimationTime:"Temps d'animation de l'arrière-plan (pour l'arrière-plan image)",animationSpeed:"⭐ Vitesse d'animation (pour l'arrière-plan animé)",upnextScroll:{setting:"Animation de défilement À suivre",mq:"Marquee/Defilement",sp:"Spotify/Translation"},upnextTime:"Temps pour afficher À suivre",backgroundBlur:"Flou de l'arrière-plan",backgroundBrightness:"Luminosité de l'arrière-plan",aboutHeader:"À propos",configReset:"Réinitialiser la configuration",reload:"Recharger le client"},tvBtnDesc:"Affichage du mode TV",fullscreenBtnDesc:"Plein écran"},v),"id-ID":(0,S.default)({langName:"Bahasa Indonesia",context:{queue:"Memutar dari antrian",track:"Memutar lagu",album:"Memutar dari album",artist:"Memutar dari artis",playlist:"Memutar dari playlist",playlistFolder:"Memutar dari folder playlist",search:"Memutar dari hasil pencarian",searchDest:"Lagu",collection:"Memutar dari koleksi",likedSongs:"Lagu yang disukai",trackRadio:"Memutar dari trek radio",artistRadio:"Memutar dari radio artis",albumRadio:"Memutar dari album radio",playlistRadio:"Memutar dari playlist radio"},upnext:"SELANJUTNYA",unknownArtist:"Artis (Tidak Tersedia)",settings:{switchToTV:"Beralih ke Mode TV",switchToFullscreen:"Beralih ke Mode Default",tvModeConfig:"Konfigurasi Mode TV",fullscreenConfig:"Konfigurasi Layar Penuh",exit:"Keluar",pluginSettings:"Pengaturan Plugin",fsHideOriginal:"Sembunyikan Tombol Default",fsHideOriginalDescription:"Sembunyikan tombol layar penuh bawaan Spotify (tersedia untuk pengguna **Premium**)",language:"Bahasa",autoLaunch:{setting:"Auto-launch (saat startup Spotify)",description:"**Batasan:** Jendela Spotify tidak dapat masuk ke mode layar penuh saat diluncurkan secara otomatis pada startup.",never:"Tidak Pernah (Default)",default:"Buka Mode Default",tvmode:"Buka Mode TV",lastused:"Mode Terakhir yang Digunakan"},activationTypes:{setting:"Metode Aktivasi",description:"Pilih metode yang ingin Anda gunakan untuk mengaktifkan plugin. Tombol F dan T, atau tombol di bilah atas dan bawah.",both:"Tombol dan Pintasan Keyboard",btns:"Hanya Tombol",keys:"Hanya Pintasan Keyboard"},buttonActivation:{setting:"Sesuaikan Tombol Aktivasi",description:"Pilih tombol yang ingin Anda gunakan untuk aktivasi, di bilah atas (*Mode TV*) dan bawah (*Mode Default*).",both:"Tombol untuk kedua mode",tv:"Tombol hanya untuk Mode TV",def:"Tombol hanya untuk Mode Default"},keyActivation:{setting:"Sesuaikan Tombol Aktivasi",description:"Pilih tombol yang ingin Anda gunakan untuk aktivasi. F untuk *Mode Default* dan T untuk *Mode TV*",both:"Tombol untuk kedua mode",tv:"Tombol hanya untuk Mode TV",def:"Tombol hanya untuk Mode Default"},lyricsHeader:"Pengaturan Lirik",lyrics:"Lirik",lyricsDescription:["**Catatan:** Anda memerlukan aplikasi kustom [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) untuk menggunakan fitur ini.","Ikuti petunjuk dalam tautan untuk menginstal aplikasi kustom tersebut."],lyricsAlignment:{setting:"Penjajaran Lirik",left:"Kiri",center:"Tengah",right:"Kanan"},autoHideLyrics:"Sembunyikan Lirik Secara Otomatis (saat tidak tersedia)",lyricsAnimationTempo:"Kecepatan Animasi Lirik",generalHeader:"Pengaturan Umum",progressBar:"Progress Bar",playerControls:"Kontrol Pemutar",trimTitle:"Potong Judul",trimTitleUpNext:"Potong Judul (Selanjutnya)",showAlbum:{setting:"Tampilkan Album",never:"Tidak Pernah",always:"Selalu",date:"Tampilkan dengan Tanggal Rilis"},showAllArtists:"Tampilkan Semua Artis",icons:"Ikon",songChangeAnimation:"Animasi Perubahan Lagu",fullscreen:"Layar Penuh",extraHeader:"Fungsionalitas Tambahan",backgroundChoice:{setting:"⭐ Pilihan Latar Belakang",description:["**Baru:** Cobalah opsi **album seni bergerak**!","**Peringatan:** Terlihat indah tetapi mungkin membutuhkan sumber daya yang tinggi, dan eksperimental."],dynamicColor:"Warna solid dinamis",staticColor:"Warna solid statis",artwork:"Seni Album",animatedArt:"Seni Album Bergerak (Eksperimental)",artist:"Seni Artis"},extraControls:"Kontrol Tambahan",upnextDisplay:"Tampilan Selanjutnya",contextDisplay:{setting:"Tampilan Konteks",always:"Selalu",never:"Tidak Pernah",mouse:"Pada pergerakan mouse"},volumeDisplay:{setting:"Tampilan Bar Volume",description:["Dalam mode `cerdas`, bar volume akan ditampilkan ketika:"," - Anda memindahkan mouse ke sisi kiri layar."," - ketika volume diubah."],always:"Selalu",never:"Tidak Pernah",smart:"Cerdas"},appearanceHeader:"Lanjutan/Penampilan",appearanceSubHeader:"*(Ubah hanya jika Anda tahu apa yang Anda lakukan!)*",backgroundHeader:"Modifikasi Latar Belakang",backgroundSubHeader:"Hadir dengan standar yang wajar, *(Ubah hanya jika Anda tahu apa yang Anda lakukan!)*",backgroundColor:{setting:"Pilihan Warna (untuk latar belakang berwarna dinamis)",vibrant:"Vibrant",prominent:"Prominent",desaturated:"Desaturated (disarankan)",lightVibrant:"Light Vibrant",darkVibrant:"Dark Vibrant",vibrantNonAlarming:"Vibrant Non Alarming"},staticColor:"Pilihan Warna (untuk latar belakang berwarna statis)",themedButtons:"Tombol Bertema",themedIcons:"Ikon Vertema",invertColors:{setting:"Balik Warna",never:"Tidak Pernah",always:"Selalu",auto:"Otomatis (Berdasarkan Latar)"},verticalMonitorSupport:"Dukungan Monitor Vertical",verticalMonitorSupportDescription:"Aktifkan ini jika Anda memiliki pengaturan monitor vertical. Lirik akan ditampilkan di bagian bawah, ketika tinggi jendela lebih besar dari lebar.",backAnimationTime:"Waktu Animasi Latar Belakang (untuk latar belakang gambar)",animationSpeed:"⭐ Kecepatan Animasi (untuk latar belakang bergerak)",upnextScroll:{setting:"Animasi Gulir Selanjutnya",mq:"Marquee/Gulir",sp:"Spotify/Translasi"},upnextTime:"Waktu Selanjutnya untuk Ditampilkan",backgroundBlur:"Blur Latar Belakang",backgroundBrightness:"Kecerahan Latar Belakang",aboutHeader:"Tentang",configReset:"Atur Ulang Konfigurasi",reload:"Muat Ulang Klien"},tvBtnDesc:"Tampilan Mode TV",fullscreenBtnDesc:"Layar Penuh"},v),"pt-BR":(0,S.default)({langName:"Português Brasileiro",context:{queue:"Reproduzindo da fila",track:"Reproduzindo faixa",album:"Reproduzindo do álbum",artist:"Reproduzindo do artista",playlist:"Reproduzindo da playlist",playlistFolder:"Reproduzindo de pasta de playlist",search:"Reproduzindo da pesquisa",searchDest:"Músicas",collection:"Reproduzindo da coleção",likedSongs:"Músicas Curtidas",trackRadio:"Reproduzindo do rádio da faixa",artistRadio:"Reproduzindo do rádio do artista",albumRadio:"Reproduzindo do rádio do álbum",playlistRadio:"Reproduzindo do rádio da playlist"},upnext:"A SEGUIR",unknownArtist:"Artista (Indisponível)",settings:{switchToTV:"Mudar para Modo TV",switchToFullscreen:"Mudar para Modo Padrão",tvModeConfig:"Configuração do Modo TV",fullscreenConfig:"Configuração de Tela Cheia",exit:"Sair",pluginSettings:"Configurações do Plugin",fsHideOriginal:"Ocultar Botão Padrão",fsHideOriginalDescription:"Oculta o botão de tela cheia padrão do Spotify (disponível para usuários **Premium**)",language:"Idioma",autoLaunch:{setting:"Inicialização automática (na inicialização do Spotify))",description:"**Limitação:** A janela do Spotify não pode ser maximizada automaticamente na inicialização.",never:"Nunca (Padrão)",default:"Modo Padrão",tvmode:"Modo TV",lastused:"Último Modo Utilizado"},activationTypes:{setting:"Métodos de Ativação",description:"Escolha os métodos que deseja usar para ativar o plugin. F e T keys, ou botões na barra superior e inferior.",both:"Botões e Atalhos de Teclado",btns:"Apenas Botões",keys:"Apenas Atalhos de Teclado"},buttonActivation:{setting:"Personalizar Botões de Ativação",description:"Escolha os botões desejados para ativação, na barra superior (*Modo TV*) e inferior (*Modo Padrão*).",both:"Modo Padrão e Modo TV",tv:"Modo TV",def:"Modo Padrão"},keyActivation:{setting:"Personalizar Teclas de Ativação",description:"Escolha as teclas desejadas para ativação. Tecla F para *Modo Padrão* e T para *Modo TV*",both:"Modo Padrão e Modo TV",tv:"Modo TV",def:"Modo Padrão"},lyricsHeader:"Configurações de Letras",lyrics:"Letras",lyricsDescription:["**Observação:** Você precisa do [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) aplicativo personalizado para usar esse recurso.","Siga as instruções no link para instalar o aplicativo personalizado."],lyricsAlignment:{setting:"Alinhamento de Letras",left:"Esquerda",center:"Centro",right:"Direita"},autoHideLyrics:"Ocultar Letras Automaticamente (Quando indisponíveis)",lyricsAnimationTempo:"Tempo de Animação das Letras",generalHeader:"Configurações Gerais",progressBar:"Barra de Progresso",playerControls:"Controles do Reprodutor",trimTitle:"Reduzir Título",trimTitleUpNext:"Reduzir Título (Em breve)",showAlbum:{setting:"Exibição do Álbum",never:"Nunca",always:"Sempre",date:"Exibir com Data de Lançamento"},showAllArtists:"Exibição de Todos os Artistas",icons:"Ícones",songChangeAnimation:"Animação de Troca de Música",fullscreen:"Tela Cheia",extraHeader:"Funcionalidades Extras",backgroundChoice:{setting:"⭐ Escolha de Fundo",description:["**Novidade:** Experimente a opção de **Arte do Álbum Animada**!","**Aviso:** Parece bonito, mas pode exigir muito desempenho e é experimental."],dynamicColor:"Cor sólida dinâmica",staticColor:"Cor sólida estática",artwork:"Arte do álbum",animatedArt:"Arte do Álbum Animada (Experimental))",artist:"Arte do Artista"},extraControls:"Controles Extras",upnextDisplay:"Exibição da Próxima Músuica",contextDisplay:{setting:"Exibição do Contexto",always:"Sempre",never:"Nunca",mouse:"Ao movimentar o mouse"},volumeDisplay:{setting:"Exibição da Barra de Volume",description:["No modo `inteligente`, a barra de volume será exibida quando:"," - você mover o mouse para o lado esquerdo da tela."," - quando o volume for alterado."],always:"Sempre",never:"Nunca",smart:"Inteligente"},appearanceHeader:"Avançado/Aparência",appearanceSubHeader:"**(Mude apenas se souber o que está fazendo!)*",backgroundHeader:"Modificações de Fundo",backgroundSubHeader:"Vem com padrões razoáveis, *(Mude apenas se souber o que está fazendo!)*",backgroundColor:{setting:"Escolha de Cor (Para fundo colorido dinâmico)",vibrant:"Vibrante",prominent:"Destaque",desaturated:"Desaturado (Recomendado)",lightVibrant:"Vibrante Claro",darkVibrant:"Vibrante Escuro",vibrantNonAlarming:"Vibrante Não Alarmante"},staticColor:"Escolha de Cor (Para fundo colorido dinâmico)",themedButtons:"Botões Temáticos",themedIcons:"Ícones Temáticos",invertColors:{setting:"Inverter Cores",never:"Nunca",always:"Sempre",auto:"Automático (Baseado no fundo)"},verticalMonitorSupport:"Suporte para Monitor Vertical",verticalMonitorSupportDescription:"Ative isso se tiver uma configuração de monitor vertical. As letras serão exibidas na parte inferior quando a altura da janela for maior que a largura.",backAnimationTime:"Tempo de Animação do Fundo (Para fundo de imagem)",animationSpeed:"⭐ Velocidade de Animação (Para fundo animado)",upnextScroll:{setting:"Animação de rolagem da faixa a seguir",mq:"Marcação/Rolagem",sp:"Spotify/Tradução"},upnextTime:"Tempo para exibição da faixa a seguir",backgroundBlur:"Desfoque do Fundo",backgroundBrightness:"Brilho do Fundo",aboutHeader:"Sobre",configReset:"Redefinir Configuração",reload:"Recarregar Cliente"},tvBtnDesc:"Exibição do Modo TV",fullscreenBtnDesc:"Tela Cheia"},v),"zh-TW":(0,S.default)({langName:"繁體中文",context:{queue:"正在從佇列播放",track:"正在播放",album:"正在從專輯播放",artist:"正在從藝人播放",playlist:"正在從歌單播放",playlistFolder:"正在從歌單資料夾播放",search:"正在從搜尋結果播放",searchDest:"歌曲",collection:"正在從合輯播放",likedSongs:"已按讚的歌曲",trackRadio:"正在從歌曲電台播放",artistRadio:"正在從藝人電台播放",albumRadio:"正在從專輯電台播放",playlistRadio:"正在從歌單電台播放"},upnext:"下一首",unknownArtist:"未知藝人",settings:{switchToTV:"切換至電視模式",switchToFullscreen:"切換至預設模式",tvModeConfig:"電視模式設定",fullscreenConfig:"全螢幕模式設定",exit:"退出",pluginSettings:"插件設定",fsHideOriginal:"隱藏原版按鈕",fsHideOriginalDescription:"隱藏Spotify原版的全螢幕按鈕 (只對**Premium**使用者有效)",language:"語言",autoLaunch:{setting:"自動啟動 (當Spotify啟動時)",description:"**限制:** Spotify 視窗在自動啟動時無法進入全螢幕模式",never:"永不 (預設)",default:"進入預設模式",tvmode:"電視模式",lastused:"上次使用的模式"},activationTypes:{setting:"開啟方式",description:"選擇你要開啟全螢幕的方式 FT 鍵,或者在頂部和底部欄的按鈕",both:"按鈕和鍵盤快捷鍵",btns:"僅限按鈕",keys:"僅限鍵盤快捷鍵"},buttonActivation:{setting:"自訂開啟按鈕",description:"選擇你要開啟全螢幕的方式,頂部(*電視模式*)和底部(*預設模式*)",both:"兩種模式的按鈕",tv:"僅限電視模式的按鈕",def:"僅限一般模式的按鈕"},keyActivation:{setting:"自訂開啟快捷鍵",description:"選擇你要開啟全螢幕的方式 F 切換到*預設模式*, T 切換到*電視模式*",both:"兩種模式的按鍵",tv:"僅限電視模式的按鍵",def:"僅限一般模式的按鍵"},lyricsHeader:"歌詞設定",lyrics:"歌詞",lyricsDescription:["**注意:**你需要先安裝[lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus)插件才能使用歌詞功能","請根據連結裡的指示安裝這個插件"],lyricsAlignment:{setting:"歌詞對齊方式",left:"靠左對齊",center:"置中",right:"靠右對齊"},autoHideLyrics:"自動隱藏歌詞 (當歌詞不可用時)",lyricsAnimationTempo:"歌詞動畫速度",generalHeader:"一般設定",progressBar:"播放進度條",playerControls:"播放控制",trimTitle:"縮短標題",trimTitleUpNext:"縮短下一首提示的標題",showAlbum:{setting:"顯示專輯標題",never:"永不顯示",always:"永遠顯示",date:"與發佈年分一起顯示"},showAllArtists:"顯示所有藝人",icons:"顯示圖示",songChangeAnimation:"歌曲切換動畫",fullscreen:"全螢幕",extraHeader:"額外功能設定",backgroundChoice:{setting:"背景設定",description:["**新功能:** 試試看 **動化專輯照** 選項!","**警告:** 很漂亮,但可能消耗更多電腦資源,而且這是實驗性的功能"],dynamicColor:"動態純色",staticColor:"靜態純色",artwork:"專輯照",animatedArt:"動化專輯照 (實驗性)",artist:"藝人封面"},extraControls:"額外控制",upnextDisplay:"下一首提示",contextDisplay:{setting:"播放來源顯示",always:"永遠顯示",never:"永不顯示",mouse:"當滑鼠移動時顯示"},volumeDisplay:{setting:"音量條顯示",description:["在自動模式下,音量條將會在以下情況顯示:"," - 滑鼠移動到螢幕左方"," - 音量有變化"],always:"永遠顯示",never:"永不顯示",smart:"自動模式"},appearanceHeader:"進階/外觀設定",appearanceSubHeader:"*(除非你知道你在幹嘛,不然不要改!)*",backgroundHeader:"背景修改",backgroundSubHeader:"有合理的預設,*除非你知道你在幹嘛,不然不要改!*",backgroundColor:{setting:"顏色選擇 (用於動態純色)",vibrant:"豐富多彩",prominent:"突出",desaturated:"去飽和度 (推薦)",lightVibrant:"明亮的活力",darkVibrant:"深色的活力",vibrantNonAlarming:"不引人注目的活力"},staticColor:"顏色選擇 (用於靜態純色)",themedButtons:"主題色按鈕",themedIcons:"主題色圖示",invertColors:{setting:"反轉顏色",never:"永不",always:"永遠",auto:"自動 (基於背景)"},verticalMonitorSupport:"垂直顯示器支援",verticalMonitorSupportDescription:"如果你有垂直顯示器,請啟用此功能。當視窗高度大於寬度時,歌詞將顯示在底部。",backAnimationTime:"背景動畫時間 (用於圖片背景)",animationSpeed:"⭐ 動畫速度 (用於動畫背景)",upnextScroll:{setting:"下一首提示動畫",mq:"跑馬燈/滾動",sp:"Spotify/變換"},upnextTime:"下一首提示顯示時間",backgroundBlur:"背景模糊",backgroundBrightness:"背景亮度",aboutHeader:"關於",configReset:"重設設定",reload:"重新載入插件"},tvBtnDesc:"電視模式",fullscreenBtnDesc:"全螢幕模式"},v)},A=t(P()),he=t(q()),Xe=({state:i})=>{const[t,n]=A.useState(Spicetify.Player.getProgress()),[a,r]=A.useState(Spicetify.Player.getDuration()),[e,o]=A.useState(Re.get("showRemainingTime")),[s,l]=A.useState({isChanging:!1,data:null}),c=A.useRef(null),[d,u]=A.useState(!0),p=A.useRef(null),g=e=>{var t;0==e.button&&(t=c.current?.getBoundingClientRect().width??480,t=(e={isChanging:!0,data:{begin:e.offsetX,positionCoord:e.offsetX,beginClient:e.clientX,sliderDimen:t}}).data.positionCoord/t,n(t*a),l(e))},m=e=>{var t;s.isChanging&&s.data&&(e=e.clientX-s.data.beginClient,t=s.data.sliderDimen,t=(e=Math.min(Math.max(s.data.begin+e,0),t))/t,n(t*a),l({isChanging:!0,data:{...s.data,positionCoord:e}})),"mousemove"===i&&h()},f=e=>{0==e.button&&s.isChanging&&(Spicetify.Player.seek(t),l({isChanging:!1,data:null}))},h=(e=3e3)=>{p.current&&clearTimeout(p.current),u(!0),p.current=setTimeout(()=>{u(!1)},e)},y=()=>{var e=Spicetify.Player.getProgress();s.isChanging||!Spicetify.Player.isPlaying()&&t===e||n(e)},b=e=>{n(0),r(e.data.duration)};return A.useEffect(()=>{"mousemove"===i&&h();const e=setInterval(y,500);return Spicetify.Player.addEventListener("songchange",b),c.current?.addEventListener("mousedown",g),document.addEventListener("mousemove",m),document.addEventListener("mouseup",f),()=>{clearInterval(e),Spicetify.Player.removeEventListener("songchange",b),c.current?.removeEventListener("mousedown",g),document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",f)}},[s,i]),A.createElement("div",{id:"fsd-progress-container",style:{opacity:d?1:0}},A.createElement("div",{className:"progress-number",id:"fsd-elapsed"},Spicetify.Player.formatTime(t)),A.createElement("div",{id:"fsd-progress-bar",ref:c,className:(0,he.default)({dragging:s.isChanging})},A.createElement("div",{id:"fsd-progress-bar-inner",style:{width:t/a*100+"%"}},A.createElement("div",{id:"progress-thumb"}))),A.createElement("div",{className:"progress-number",id:"fsd-duration",onClick:()=>{o(!e),Re.set("showRemainingTime",!e)}},e?" -"+Spicetify.Player.formatTime(a-t):Spicetify.Player.formatTime(a)))},T=t(P()),ye=t(e()),be=t(q()),ve=({volume:e})=>{return T.createElement("button",{className:"fs-button",id:"fsd-volume-icon",onClick:()=>document.querySelector("div.main-nowPlayingBar-volumeBar > button")?.click(),title:0==e?"Unmute":"Mute",dangerouslySetInnerHTML:{__html:"number"!=typeof e||60${Spicetify.SVGIcons.plus2px}`,e,t,l),p=u.querySelector(".minus"),g=u.querySelector(".plus");return p&&g&&(p.classList.toggle("disabled",c===r),g.classList.toggle("disabled",c===o),p.onclick=()=>d(-1),g.onclick=()=>d(1)),u}var S={langName:"English",context:{queue:"Playing from queue",track:"Playing track",album:"Playing from album",artist:"Playing from artist",playlist:"Playing from playlist",playlistFolder:"Playing from playlist folder",search:"Playing from search",searchDest:"Songs",collection:"Playing from collection",likedSongs:"Liked Songs",trackRadio:"Playing from track radio",artistRadio:"Playing from artist radio",albumRadio:"Playing from album radio",playlistRadio:"Playing from playlist radio"},upnext:"UP NEXT",unknownArtist:"Artist (Unavailable)",settings:{switchToTV:"Switch to TV Mode",switchToFullscreen:"Switch to Default Mode",tvModeConfig:"TV Mode Configuration",fullscreenConfig:"Full Screen Configuration",exit:"Exit",pluginSettings:"Plugin Settings",fsHideOriginal:"Hide Stock Button",fsHideOriginalDescription:"Hide the spotify's stock fullscreen button(available to **Premium** users)",language:"Language",autoLaunch:{setting:"Auto launch(on spotify startup)",description:"**Limitation:** The spotify window cannot go into fullscreen while automatically launching on startup.",never:"Never(Default)",default:"Open Default Mode",tvmode:"Open TV Mode",lastused:"Last Used Mode"},activationTypes:{setting:"Activation Methods",description:"Choose the methods you want to use to activate the plugin. F and T keys, or buttons on topbar and bottom bar.",both:"Buttons and Keyboard Shortcuts",btns:"Buttons Only",keys:"Keyboard Shortcuts Only"},buttonActivation:{setting:"Customize Activation Buttons",description:"Choose the buttons you want for activation, on topbar(*TV Mode*) and bottom bar(*Default Mode*).",both:"Buttons for both modes",tv:"Button only for TV Mode",def:"Button only for Default Mode"},keyActivation:{setting:"Customize Activation Keys",description:"Choose the keys you want for activation. F for *Default Mode* and T for *TV Mode*",both:"Keys for both modes",tv:"Key only for TV Mode",def:"Key only for Default Mode"},lyricsHeader:"Lyrics Settings",lyrics:"Lyrics",lyricsDescription:["**Note:** You need the [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) custom app to use this feature.","Follow the instructions in the link to install the custom app."],lyricsAlignment:{setting:"Lyrics Alignment",left:"Left",center:"Center",right:"Right"},autoHideLyrics:"Auto Hide Lyrics (when unavailable)",lyricsAnimationTempo:"Lyrics Animation Tempo",generalHeader:"General Settings",progressBar:"Progress Bar",playerControls:"Player Controls",trimTitle:"Trim Title",trimTitleUpNext:"Trim Title(Up Next)",showAlbum:{setting:"Show Album",never:"Never",always:"Always",date:"Show with Release Date"},showAllArtists:"Show All Artists",icons:"Icons",songChangeAnimation:"Song Change Animation",fullscreen:"Fullscreen",extraHeader:"Extra Functionality",backgroundChoice:{setting:"⭐ Background Choice",description:["**New:** Try out the **animated album art** option!","**Warning:** Looks beautiful but may be resource intensive, and is experimental."],dynamicColor:"Dynamic solid color",staticColor:"Static solid color",artwork:"Album art",animatedArt:"Animated Album Art (Experimental)",artist:"Artist artwork"},extraControls:"Extra Controls",upnextDisplay:"Upnext Display",contextDisplay:{setting:"Context Display",always:"Always",never:"Never",mouse:"On mouse movement"},volumeDisplay:{setting:"Volume Bar Display",description:["In `smart` mode the volume bar will be displayed when:"," - you move your mouse to the left side of the screen."," - when the volume is changed."],always:"Always",never:"Never",smart:"Smart"},appearanceHeader:"Advanced/Appearance",appearanceSubHeader:"*(Only change if you know what you are doing!)*",backgroundHeader:"Background Modifications",backgroundSubHeader:"Comes with reasonable defaults, *(Only change if you know what you are doing!)*",backgroundColor:{setting:"Color Choice (for dynamic colored background)",vibrant:"Vibrant",prominent:"Prominent",desaturated:"Desaturated (recommended)",lightVibrant:"Light Vibrant",darkVibrant:"Dark Vibrant",vibrantNonAlarming:"Vibrant Non Alarming"},staticColor:"Color Choice (for static colored background)",themedButtons:"Themed Buttons",themedIcons:"Themed Icons",invertColors:{setting:"Invert Colors",never:"Never",always:"Always",auto:"Automatic (Based on BG)"},verticalMonitorSupport:"Vertical Monitor Support",verticalMonitorSupportDescription:"Enable this if you have a vertical monitor setup. Lyrics will be shown in the bottom, when the window height is greater than the width.",backAnimationTime:"Background Animation Time (for image background)",animationSpeed:"⭐ Animation Speed (for animated background)",upnextScroll:{setting:"Upnext Scroll Animation",mq:"Marquee/Scrolling",sp:"Spotify/Translating"},upnextTime:"Upnext Time to Show",backgroundBlur:"Background Blur",backgroundBrightness:"Background Brightness",aboutHeader:"About",configReset:"Reset Config",reload:"Reload Client"},tvBtnDesc:"TV Mode Display",fullscreenBtnDesc:"Full Screen"},A=t(N()),$e={"en-US":S,"it-IT":(0,A.default)({langName:"Italiano",context:{queue:"Riproduzione coda",track:"Riproduzione brano",album:"Riproduzione album",artist:"Riproduzione artista",playlist:"Riproduzione playlist",playlistFolder:"Riproduzione da cartella di playlist",search:"Riproduzione da ricerca",searchDest:"Brani",collection:"Riproduzione dalla libreria",likedSongs:"Brani che ti piacciono",trackRadio:"Radio dal brano",artistRadio:"Radio da artista",albumRadio:"Radio da album",playlistRadio:"Radio da playlist"},upnext:"In coda",unknownArtist:"Artista sconosciuto",settings:{switchToTV:"Passa alla modalità TV",switchToFullscreen:"Passa alla modalità schermo intero",tvModeConfig:"Modalità TV",fullscreenConfig:"Modalità schermo intero",exit:"Esci",pluginSettings:"Impostazioni plugin",fsHideOriginal:"Nascondi pulsante Schermo Intero di Premium",fsHideOriginalDescription:"Nascondi il pulsante Schermo Intero degli utenti **Spotify Premium**. Richiede un riavvio.",language:"Lingua",autoLaunch:{setting:"Apri automaticamente (all'apertura di Spotify)",description:"**Limitazione:** La finestra di Spotify non può entrare in modalità schermo intero durante l'avvio all'accensione.",never:"Mai (Predefinito)",default:"Apri in modalità default",tvmode:"Apri in modalità TV",lastused:"Apri con l'ultima modalità usata"},lyricsHeader:"Impostazioni testo",lyrics:"Mostra testo",lyricsDescription:["**Nota:** Serve [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) per usare questa funzione.","Segui le instruzioni nel link per installare l'app."],lyricsAlignment:{setting:"Allineamento testo",left:"Sinistra",center:"Centro",right:"Destra"},lyricsAnimationTempo:"Durata animazione testo",generalHeader:"Impostazioni generali",progressBar:"Barra di avanzamento",playerControls:"Controlli player",trimTitle:"Accorcia titolo",trimTitleUpNext:"Accorcia titolo nel visualizzatore coda",showAlbum:{setting:"Mostra album",never:"Mai",always:"Sempre",date:"Con data di uscita"},showAllArtists:"Mostra tutti gli artisti",icons:"Icone",songChangeAnimation:"Animazione cambio brano",fullscreen:"Schermo intero",extraHeader:"Funzionalità aggiuntive",backgroundChoice:{setting:"Scelta sfondo",dynamicColor:"Tinta unita dinamica",staticColor:"Tinta unita fissa (scegli sotto)",artwork:"Immagine dell'album",artist:"Immagine dell'artista"},extraControls:"Controlli aggiuntivi",upnextDisplay:"Mostra il brano in coda",contextDisplay:{setting:"Mostra contesto",always:"Sempre",never:"Mai",mouse:"Al movimento del mouse"},volumeDisplay:{setting:"Mostra barra volume",description:["In modalità `smart` la barra del volume sarà mostrata quando:"," - muovi il mouse nella parte sinistra dello schermo."," - il volume viene cambiato."],always:"Sempre",never:"Mai",smart:"Smart"},appearanceHeader:"Avanzato/Aspetto",appearanceSubHeader:"Cambia solo se sai cosa stai facendo!",backgroundColor:{setting:"Colore su sfondo tinta unita",vibrant:"Vivace",prominent:"Evidente",desaturated:"Desaturato (raccomandato)",lightVibrant:"Vivace chiaro",darkVibrant:"Vivace scuro",vibrantNonAlarming:"Vivace delicato"},staticColor:"Scelta del colore per lo sfondo statico a tinta unita",themedButtons:"Pulsanti a tema",themedIcons:"Icone a tema",invertColors:{setting:"Inverti colori",never:"Mai",always:"Sempre",auto:"Automatico (basato su sfondo)"},backAnimationTime:"Durata animazione sfondo",upnextScroll:{setting:"Scorrimento Up next",mq:"Scorrimento",sp:"Traslazione"},upnextTime:"Tempo per mostrare Up next",backgroundBlur:"Sfocamento sfondo",backgroundBrightness:"Luminosità sfondo",aboutHeader:"A proposito",configReset:"Resetta configurazione",reload:"Ricarica client"},tvBtnDesc:"Modalità TV",fullscreenBtnDesc:"Schermo intero"},S),"zh-CN":(0,A.default)({langName:"简体中文",context:{queue:"正在从队列播放",track:"正在播放",album:"正在从专辑播放",artist:"正在从艺人播放",playlist:"正在从歌单播放",playlistFolder:"正在从歌单文件夹播放",search:"正在从搜索结果播放",searchDest:"歌曲",collection:"正在从合辑播放",likedSongs:"已点赞的歌曲",trackRadio:"正在从歌曲电台播放",artistRadio:"正在从艺人电台播放",albumRadio:"正在从专辑电台播放",playlistRadio:"正在从歌单电台播放"},upnext:"下一首",unknownArtist:"未知歌手",settings:{switchToTV:"切换至电视模式",switchToFullscreen:"切换至默认模式",tvModeConfig:"电视模式配置",fullscreenConfig:"全屏模式配置",exit:"退出",pluginSettings:"插件设置",fsHideOriginal:"隐藏切换至原版按钮 (Spotify Premium)",fsHideOriginalDescription:"隐藏原版的全屏按钮(仅对**Premium**用户有效). 需要重启",language:"语言",autoLaunch:{setting:"自动启动(当Spotify启动时)",description:"**限制:** 自动启动时Spotify窗口不能自动全屏",never:"从不(默认)",default:"进入默认模式",tvmode:"电视模式",lastused:"记忆上次使用状态"},activationTypes:{setting:"激活方式",description:"选择你要激活全屏的方式 FT 键, 或者顶栏和底栏的按钮. **需要重启**",both:"按钮和键盘快捷方式",btns:"仅按钮",keys:"仅键盘快捷方式"},buttonActivation:{setting:"自定义激活按钮",description:"选择你要激活全屏的按钮模式,顶栏(*电视模式*)和底栏(*默认模式) **需要重启**",both:"两者都要",tv:"仅电视模式",def:"仅普通模式"},keyActivation:{setting:"自定义激活快捷键",description:"选择激活全屏的快捷键模式 F 切换到*默认模式*, T 切换到*电视模式* **需要重启**",both:"两者都要",tv:"仅电视模式",def:"仅普通模式"},lyricsHeader:"歌词设置",lyrics:"歌词",lyricsDescription:["**注意:**你需要[lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus)插件来启用歌词","根据连接里的指示来安装这个插件"],lyricsAlignment:{setting:"歌词对齐方式",left:"靠左",center:"居中",right:"靠右"},lyricsAnimationTempo:"歌词动画速度",generalHeader:"通用设置",progressBar:"播放进度条",playerControls:"播放控制",trimTitle:"缩短标题",trimTitleUpNext:"缩短标题 (下一首提示)",showAlbum:{setting:"显示标题",never:"永不",always:"总是",date:"与发布日期一起显示"},showAllArtists:"显示所有艺人",icons:"显示图标",songChangeAnimation:"切歌动画",fullscreen:"全屏",extraHeader:"额外功能",backgroundChoice:{setting:"背景选择",description:["**最新最热:** 试一下**带动画的专辑图** 选项 [灵感](https://github.com/surfbryce/beautiful-lyrics)","**警告:** 很漂亮,但是这可能占用较多资源,而且这是实验性的"],dynamicColor:"动态纯色",staticColor:"静态纯色(从下面选择)",artwork:"专辑图",animatedArt:"带动画的专辑图(实验性)",artist:"艺人照片"},extraControls:"额外控件",upnextDisplay:"下一首提示",contextDisplay:{setting:"内容来源显示",always:"总是",never:"从不",mouse:"当鼠标移动时"},volumeDisplay:{setting:"音量显示",description:["自动模式下音量条将会在以下情况显示:"," - 鼠标移动到屏幕左侧"," - 音量有变化"],always:"总是",never:"从不",smart:"自动"},appearanceHeader:"高级/外观",appearanceSubHeader:"*(不要动除非你知道自己在做什么)*",backgroundColor:{setting:"纯色背景的颜色配置",vibrant:"Vibrant",prominent:"Prominent",desaturated:"Desaturated (推荐)",lightVibrant:"Light Vibrant",darkVibrant:"Dark Vibrant",vibrantNonAlarming:"Vibrant Non Alarming"},themedButtons:"主题色按钮",themedIcons:"主题色图标",invertColors:{setting:"反转颜色",never:"从不",always:"总是",auto:"自动(基于背景)"},backAnimationTime:"背景动画时间",upnextScroll:{setting:"下一首提示滚动",mq:"Marquee/滚动",sp:"Spotify/变换"},upnextTime:"下一首提示显示时间",backgroundBlur:"背景模糊",backgroundBrightness:"背景亮度",aboutHeader:"关于",configReset:"重置配置",reload:"重新载入应用"},tvBtnDesc:"电视模式显示",fullscreenBtnDesc:"全屏"},S),"de-DE":(0,A.default)({langName:"Deutsch",context:{queue:"Wiedergabe aus der Warteschlange",track:"Titel spielen",album:"Abspielen von Album",artist:"Abspielen von Künstler",playlist:"Abspielen von Playlist",playlistFolder:"Wiedergabe aus dem Playlist-Ordner",search:"Wiedergabe aus Suche",searchDest:"Lieder",collection:"Abspielen aus Sammlung",likedSongs:"Lieblingssongs",trackRadio:"Abspielen von Titel Radio",artistRadio:"Abspielen von Künstler Radio",albumRadio:"Abspielen von Alben Radio",playlistRadio:"Abspielen von Playlist Radio"},upnext:"ALS NÄCHSTES",unknownArtist:"Künstler (nicht verfügbar)",settings:{switchToTV:"Wechseln zu TV-Modus",switchToFullscreen:"Einstellungen des Vollbildmodis",tvModeConfig:"Konfiguration des TV-Modus",fullscreenConfig:"Vollbildmodus konfiguration",exit:"Exit",pluginSettings:"Plugin Einstellungen",fsHideOriginal:"Stock-Schaltfläche ausblenden (Spotify Premium)",language:"Sprache",lyricsHeader:"Ausrichtung des Liedtextes",lyrics:"Liedtext",lyricsAlignment:{setting:"Liedtext Ausrichtung",left:"Links",center:"Center",right:"Rechts"},lyricsAnimationTempo:"Liedtext Animationtempo",generalHeader:"Allgemeine Einstellungen",progressBar:"Fortschritt anzeige",playerControls:"Wiedegergabe steuerung",trimTitle:"Titel trimmen",trimTitleUpNext:"Trim Title(Up Next)",showAlbum:{setting:"Album anzeigen",never:"Niemals",always:"Immer",date:"Veröffentlichungsdatum anzeigen"},showAllArtists:"Alle Künstler anzeigen",icons:"Symbole",songChangeAnimation:"Songwechsel-Animation",fullscreen:"Vollbildmodus",extraHeader:"Zusätzliche Funktionalität",backgroundChoice:{setting:"Hintergrundauswahl",color:"Einfarbig",artwork:"Titelbild"},extraControls:"Zusätzliche Steuerelemente",upnextDisplay:"Nächste-titel Anzeige",contextDisplay:{setting:"Kontextanzeige",always:"Immer",never:"Niemals",mouse:"Bei Mausbewegung"},volumeDisplay:{setting:"Anzeige der Lautstärkenleiste",always:"Immer",never:"Niemals",mouse:"Bei Mausbewegung",volume:"Bei Lautstärkeänderung"},appearanceHeader:"Erweitert/Aussehen",appearanceSubHeader:"Achtung! Ändern diese Einstellungen, wenn Sie wissen, was Sie tun!",backgroundColor:{setting:"Farbwahl auf farbigem Hintergrund",vibrant:"Beschwingt",prominent:"Prominente",desaturated:"Entsättigt (empfohlen)",lightVibrant:"Hell lebendig",darkVibrant:"Dunkel lebendig",vibrantNonAlarming:"Lebhaft, nicht alarmierend"},themedButtons:"Themed Tasten",themedIcons:"Themed Symbole",invertColors:{setting:"Farben umkehren",never:"Niemals",always:"Immer",auto:"Automatisch (basierend auf Hintergrund)"},backAnimationTime:"Background Animation Time",upnextScroll:{setting:"Nächstes Lied Scroll-Animation",mq:"Marquee/Scrolling",sp:"Spotify/Translating"},upnextTime:"Nächster Titel Anzeigedauer",backgroundBlur:"Hintergrund Blur",backgroundBrightness:"Hintergrund Brightness",configReset:"Konfig zurücksetzen",reload:"Client neu laden"},tvBtnDesc:"TV Modus",fullscreenBtnDesc:"Vollbild"},S),"tr-TR":(0,A.default)({langName:"Turkish",context:{queue:"Çalma sırasından çalınıyor",track:"Parça çalınıyor",album:"Albümden oynatılıyor",artist:"Sanatçı'dan oynatılıyor",playlist:"Çalma Listesi'den oynatılıyor",playlistFolder:"Çalma Listesi Klasöründen oynatılıyor",search:"Arama'dan oynatılıyor",searchDest:"Parçalar",collection:"Koleksiyon'dan oynatılıyor",likedSongs:"Beğenilen şarkılar",trackRadio:"Parça Radyosu'ndan oynatılıyor",artistRadio:"Sanatçı Radyosu'ndan oynatılıyor",albumRadio:"Albüm Radyosu'ndan oynatılıyor",playlistRadio:"Çalma Listesi Radyosu'ndan oynatılıyor"},upnext:"SONRAKİ",unknownArtist:"Sanatçı (Mevcut değil)",settings:{switchToTV:"TV Moduna geç",switchToFullscreen:"Tam ekran moduna geç",tvModeConfig:"TV Modu ayarları",fullscreenConfig:"Tam ekran modu ayarları",exit:"Çık",pluginSettings:"Eklenti ayarları",fsHideOriginal:"Tam ekran tuşunu gizle(Spotify Premium kullanıcıları için)",language:"Dil",lyricsHeader:"Şarkı sözleri ayarları",lyrics:"Şarkı sözleri",lyricsAlignment:{setting:"Şarkı sözleri konumu",left:"Sol",center:"Orta",right:"Sağ"},lyricsAnimationTempo:"Şarkı sözleri animasyonu hızı",generalHeader:"Genel ayarlar",progressBar:"İlerleme çubuğu",playerControls:"Oynatıcı kontrolleri",trimTitle:"Başlığı kırp",trimTitleUpNext:"Başlığı kırp (Sonraki şarkı gösterimi)",showAlbum:{setting:"Albüm'ü göster",never:"Asla",always:"Her zaman",date:"Albüm'ün yayınlanma tarihini göster"},showAllArtists:"Şarkıya katkısı olan tüm sanatçıları göster",icons:"Simgeler",songChangeAnimation:"Şarkı değiştirme animasyonu",fullscreen:"Tam ekran",extraHeader:"Ekstra özellikler",backgroundChoice:{setting:"Arka plan özellikleri",color:"Tek renk",artwork:"Albüm kapağı"},extraControls:"Ekstra Kontroller",upnextDisplay:"Sonraki şarkıyı gösterme",contextDisplay:{setting:"Ayrıntıları gösterme",always:"Her zaman",never:"Asla",mouse:"Yalnızca mause hareketinde"},volumeDisplay:{setting:"Ses çubuğunu gösterme",always:"Her zaman",never:"Asla",mouse:"Yalnızca mause hareketinde",volume:"Yalnızca ses düzeyi değiştiği zaman"},appearanceHeader:"Gelişmiş/Görünüm",appearanceSubHeader:"Dikkat! Yalnızca ne yaptığını biliyorsan değiştir.",backgroundColor:{setting:"Arkaplan özel renk tercihi",vibrant:"Parlak",prominent:"Öne çıkan",desaturated:"Soluk (önerilir)",lightVibrant:"Açık parlak",darkVibrant:"Karanlık parlak",vibrantNonAlarming:"Göz almayan parlak"},themedButtons:"Albüm resminin renklerine göre tuşlar",themedIcons:"Albüm resminin renklerine göre simgeler",invertColors:{setting:"Renkleri ters çevir",never:"Asla",always:"Her zaman",auto:"Otomatik (Arka plana göre)"},backAnimationTime:"Arkaplan animasyon stili",upnextScroll:{setting:"Sonraki şarkı yazı animasyonu",mq:"Marquee/Kayan",sp:"Spotify/Sağa sola giden"},upnextTime:"Sonraki şarkı kaçıncı saniyeden sonra gösterilsin? ",backgroundBlur:"Arkaplan'ı bulanıklaştır",backgroundBrightness:"Arka plan parlaklığı",configReset:"Ayarları sıfırla",reload:"İstemciyi (Spotify) yenile (F5)"},tvBtnDesc:"TV Modu'nu göster",fullscreenBtnDesc:"Tam ekran"},S),"ru-RU":(0,A.default)({langName:"Русский",context:{queue:"Воспроизведение из очереди",track:"Воспроизведение трека",album:"Воспроизведение из альбома",artist:"Воспроизведение со страницы исполнителя",playlist:"Воспроизведение из плейлиста",playlistFolder:"Воспроизведение из папки плейлистов",search:"Воспроизведение из поиска",searchDest:"Треки",collection:"Воспроизведение из коллекции",likedSongs:"Любимые треки",trackRadio:"Воспроизведение из радио по треку",artistRadio:"Воспроизведение из радио по исполнителю",albumRadio:"Воспроизведение из радио по альбому",playlistRadio:"Воспроизведение из радио по плейлисту"},upnext:"СЛЕДУЮЩЕЕ",unknownArtist:"Исполнитель (Недоступен)",settings:{switchToTV:"Переключиться на ТВ-режим",switchToFullscreen:"Переключиться на режим По-умолчанию",tvModeConfig:"Настройки ТВ-режима",fullscreenConfig:"Настройки Полного экрана",exit:"Выход",pluginSettings:"Настройки плагина",fsHideOriginal:"Скрыть стоковую кнопку",fsHideOriginalDescription:"Скрывает кнопку Spotify для открытия стокового полноэкранного режима (доступна **Премиум** пользователям). Требуется перезагрузка.",language:"Язык",autoLaunch:{setting:"Авто-запуск (при запуске Spotify)",description:"**Ограничение:** Окно Spotify не может быть развернуто на весь экран при авто-запуске плагина.",never:"Никогда (по-умолчанию)",default:"Открыть режим По-умолчанию",tvmode:"Открыть ТВ-режим",lastused:"Последний использованный режим"},activationTypes:{setting:"Способы активации",description:"Выберите способы активации плагина. Клавиши F и T или кнопки на верхней и нижней панелях. **Требуется перезагрузка**",both:"Кнопки и сочетания клавиш",btns:"Только кнопки",keys:"Только сочетания клавиш"},buttonActivation:{setting:"Настройки кнопок активации",description:"Выберите кнопки активации плагина на верхней (*ТВ-режим*) и нижней (*режим По-умолчанию*) панелях. **Требуется перезагрузка**",both:"Кнопки обоих режимов",tv:"Кнопка только ТВ-режима",def:"Кнопка только режима По-умолчанию"},keyActivation:{setting:"Настройки клавиш активации",description:"Выберите клавиши для активации. F для *режима По-умолчанию* и T для *ТВ-режима* **Требуется перезагрузка**",both:"Клавиши для обоих режимов",tv:"Клавиша только для ТВ-режима",def:"Клавиша только для режима По-умолчанию"},lyricsHeader:"Настройки текста",lyrics:"Текст трека",lyricsDescription:["**Внимание:** Требуется приложение [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) для использования этой функции.","Следуйте инструкциям по ссылке для его установки."],lyricsAlignment:{setting:"Выравнивание текста",left:"По левому краю",center:"По центру",right:"По правому краю"},lyricsAnimationTempo:"Скорость анимации текста",generalHeader:"Основные настройки",progressBar:"Полоса воспроизведения",playerControls:"Элементы управления воспроизведением",trimTitle:"Обрезать название",trimTitleUpNext:"Обрезать название (следующего трека)",showAlbum:{setting:"Отображать альбом",never:"Никогда",always:"Всегда",date:"Отображать с датой релиза"},showAllArtists:"Отображать всех исполнителей",icons:"Иконки",songChangeAnimation:"Анимация переключения трека",fullscreen:"Полный экран",extraHeader:"Дополнительные настройки",backgroundChoice:{setting:"Задний фон",description:["**Новое:** Попробуйте настройку **анимированная обложка альбома**! [Вдохновение](https://github.com/surfbryce/beautiful-lyrics)","**Внимание:** Выглядит очень красиво, но потребляет больше ресурсов и является экспериментальной функцией."],dynamicColor:"Динамическая заливка сплошным цветом",staticColor:"Статическая заливка сплошным цветом (Выберите ниже)",artwork:"Обложка альбома",animatedArt:"Анимированная обложка альбома (Экспериментально)",artist:"Изображение артиста"},extraControls:"Дополнительные элементы управления",upnextDisplay:"Отображать следующий трек",contextDisplay:{setting:"Отображение контекста воспроизведения",always:"Всегда",never:"Никогда",mouse:"При движении мыши"},volumeDisplay:{setting:"Отображать полосу громкости",description:["В `умном` режиме полоса громкости будет отображена при:"," - движении мыши к левой части экрана."," - изменении громкости."],always:"Всегда",never:"Никогда",smart:"Умный режим"},appearanceHeader:"Расширенные настройки внешнего вида",appearanceSubHeader:"*(Изменяйте, только если знаете, что делаете!)*",backgroundColor:{setting:"Тип цвета динамической заливки заднего фона",vibrant:"Насыщенный",prominent:"Яркий",desaturated:"Приглушенный (рекомендуется)",lightVibrant:"Насыщенный светлый",darkVibrant:"Насыщенный темный",vibrantNonAlarming:"Насыщенный спокойный"},staticColor:"Цвет статичной заливки заднего фона",themedButtons:"Цветные кнопки",themedIcons:"Цветные иконки",invertColors:{setting:"Инвертировать цвета",never:"Никогда",always:"Всегда",auto:"Автоматически (на основе фона)"},backAnimationTime:"Длительность анимации смены фона",upnextScroll:{setting:"Анимация смены трека",mq:"Marquee/Прокрутка",sp:"Spotify/Переход"},upnextTime:"Время отображения следующего трека",backgroundBlur:"Размытие фона",backgroundBrightness:"Яркость фона",aboutHeader:"О расширении",configReset:"Сбросить настройки",reload:"Перезагрузить приложение"},tvBtnDesc:"ТВ-режим",fullscreenBtnDesc:"Полный экран"},S),"vi-VN":(0,A.default)({langName:"Tiếng Việt",context:{queue:"Đang phát từ hàng chờ",track:"Đang phát từ bài hát",album:"Đang phát từ album",artist:"Đang phát từ nghệ sĩ",playlist:"Đang phát từ danh sách phát",playlistFolder:"Đang phát từ thư mục danh sách phát",search:"Đang phát từ tìm kiếm",searchDest:"Bài hát",collection:"Đang phát từ bộ sưu tập",likedSongs:"Bài hát đã thích",trackRadio:"Đang phát từ đài phát của bài hát",artistRadio:"Đang phát từ đài phát của nghệ sĩ",albumRadio:"Đang phát từ đài phát của album",playlistRadio:"Đang phát từ đài phát của danh sách phát"},upnext:"TIẾP THEO",unknownArtist:"Nghệ sĩ (Không khả dụng)",settings:{switchToTV:"Chuyển sang chế độ TV",switchToFullscreen:"Chuyển sang chế độ mặc định",tvModeConfig:"Tùy chỉnh chế độ TV",fullscreenConfig:"Tùy chính chế độ toàn màn hình",exit:"Thoát",pluginSettings:"Cài đặt Plugin",fsHideOriginal:"Ẩn nút mặc định",fsHideOriginalDescription:"Ẩn nút toàn màn hình mặc định của Spotify (yêu cầu là người dùng **Premium**). Yêu cầu tải lại.",language:"Ngôn ngữ",autoLaunch:{setting:"Tự khởi động (khi Spotify khởi động)",description:"**Hạn chế:** Cửa sổ Spotify sẽ không thể mở toàn màn hình khi được tự động khởi chạy với hệ thống.",never:"Không bao giờ (Mặc định)",default:"Mở chế độ mặc định",tvmode:"Mở chế độ TV",lastused:"Chế độ dùng lần cuối"},activationTypes:{setting:"Phương thức kích hoạt",description:"Chọn phương thức bạn muốn để kích hoạt Plugin. Phím FT, hoặc là nút ở trên thanh điều hướng và thanh trình phát. **Yêu cầu tải lại**",both:"Nút và phím tắt",btns:"Chỉ nút",keys:"Chỉ phím tắt"},buttonActivation:{setting:"Tùy chính nút kích hoạt",description:"Chọn nút bạn muốn để kích hoạt, trên thanh điều hướng (*Chế độ TV*) và thanh trình phát (*Chế độ mặc định*). **Yêu cầu tải lại**",both:"Nút cho cả hai chế độ",tv:"Chỉ cho chế độ TV",def:"Chỉ cho chế độ mặc định"},keyActivation:{setting:"Tùy chỉnh phím kích hoạt",description:"Chọn phím bạn muốn để kích hoạt. F cho *Chế độ mặc định* và T cho *Chế độ TV* **Yêu cầu tải lại**",both:"Phím cho cả hai chế độ",tv:"Chỉ cho chế độ TV",def:"Chỉ cho chế độ mặc định"},lyricsHeader:"Cài đặt lời bài hát",lyrics:"Lời bài hát",lyricsDescription:["**Ghi chú:** Bạn sẽ cần ứng dụng [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) để dùng tính năng này.","Làm theo các bước trên chỉ dẫn để cài đặt ứng dụng."],lyricsAlignment:{setting:"Căn chỉnh lời bài hát",left:"Trái",center:"Giữa",right:"Phải"},lyricsAnimationTempo:"Nhịp điệu hoạt họa",generalHeader:"Cài đặt tổng quát",progressBar:"Thanh tiến trình",playerControls:"Điều khiển trình phát",trimTitle:"Lược bỏ tiêu đề",trimTitleUpNext:"Lược bỏ tiêu đề (Bài hát kế tiếp)",showAlbum:{setting:"Hiện album",never:"Không bao giờ",always:"Luôn hiện",date:"Hiện với ngày phát hành"},showAllArtists:"Hiện toàn bộ nghệ sĩ",icons:"Icon",songChangeAnimation:"Hoạt họa chuyển bài hát",fullscreen:"Toàn màn hình",extraHeader:"Tính năng bổ sung",backgroundChoice:{setting:"Tùy chọn hình nền",dynamicColor:"Hình nền màu động",staticColor:"Hình nền màu tĩnh (Chọn bên dưới)",artwork:"Ảnh bìa album",artist:"Ảnh bìa nghệ sĩ"},extraControls:"Điều khiển bổ sung",upnextDisplay:"Hiện bài hát tiếp theo",contextDisplay:{setting:"Hiện tùy chọn",always:"Luôn hiện",never:"Không bao giờ",mouse:"Khi chuột di chuyển"},volumeDisplay:{setting:"Hiển thị thanh âm lượng",description:["Trong chế độ `thông minh`, thanh âm lượng sẽ được hiển thị khi:"," - bạn di chuyển chuột về phía trái màn hình."," - âm lượng thay đổi."],always:"Luôn hiện",never:"Không bao giờ",smart:"Thông minh"},appearanceHeader:"Nâng cao/Giao diện",appearanceSubHeader:"*(Chỉ thay đổi nếu bạn biết bạn đang làm gì!)*",backgroundColor:{setting:"Tùy chọn màu cho hình nền màu động",vibrant:"Sống động",prominent:"Nổi bật",desaturated:"Khử bão hòa (được khuyến nghị)",lightVibrant:"Sống động (sáng)",darkVibrant:"Sống động (tối)",vibrantNonAlarming:"Không quá sống động"},staticColor:"Tùy chọn màu cho hình nền màu tĩnh",themedButtons:"Nút được chỉnh theo màu",themedIcons:"Icon được chỉnh theo màu",invertColors:{setting:"Đảo ngược màu",never:"Không bao giờ",always:"Luôn đảo ngược",auto:"Tự động (Dựa trên hình nền)"},backAnimationTime:"Thời gian hoạt họa của hình nền",upnextScroll:{setting:"Hoạt họa của bài hát tiếp theo",mq:"Marquee/Scrolling",sp:"Spotify/Translating"},upnextTime:"Thời gian hiện thông báo bài hát tiếp theo",backgroundBlur:"Làm mờ hình nền",backgroundBrightness:"Độ sáng hình nền",aboutHeader:"Thông tin",configReset:"Đặt lại cài đặt",reload:"Tải lại Client"},tvBtnDesc:"Chế độ TV",fullscreenBtnDesc:"Toàn màn hình"},S),"es-ES":(0,A.default)({langName:"Spanish",context:{queue:"Reproduciendo desde la cola",track:"Reproduciendo la pista",album:"Reproduciendo desde el álbum",artist:"Reproduciendo desde el artista",playlist:"Reproduciendo desde la lista de reproducción",playlistFolder:"Reproduciendo desde la carpeta de listas de reproducción",search:"Reproduciendo desde la búsqueda",searchDest:"Canciones",collection:"Reproduciendo desde la colección",likedSongs:"Canciones favoritas",trackRadio:"Reproduciendo desde la radio de la pista",artistRadio:"Reproduciendo desde la radio del artista",albumRadio:"Reproduciendo desde la radio del álbum",playlistRadio:"Reproduciendo desde la radio de la lista de reproducción"},upnext:"SIGUIENTE",unknownArtist:"Artista (No disponible)",settings:{switchToTV:"Cambiar a modo TV",switchToFullscreen:"Cambiar a modo pantalla completa",tvModeConfig:"Configuración del modo TV",fullscreenConfig:"Configuración de pantalla completa",exit:"Salir",pluginSettings:"Configuración del complemento",fsHideOriginal:"Ocultar el botón de pantalla completa de Spotify",fsHideOriginalDescription:"Oculta el botón de pantalla completa de Spotify (solo disponible para usuarios **Premium**)",language:"Idioma",autoLaunch:{setting:"Lanzamiento automático (al iniciar Spotify)",description:"**Limitación:** La ventana de Spotify no puede ir a pantalla completa al iniciarse automáticamente.",never:"Nunca (predeterminado)",default:"Abrir el modo predeterminado",tvmode:"Abrir el modo TV",lastused:"Último modo usado"},activationTypes:{setting:"Métodos de activación",description:"Elige los métodos que quieres usar para activar el complemento. Los atajos de teclado F y T, o los botones en la barra superior e inferior.",both:"Botones y atajos de teclado",btns:"Botones solo",keys:"Atajos de teclado solo"},buttonActivation:{setting:"Personalizar los botones de activación",description:"Elige los botones que quieres para la activación, en la barra superior (*Modo TV*) y en la barra inferior (*Modo predeterminado*).",both:"Botones para ambos modos",tv:"Botón solo para el modo TV",def:"Botón solo para el modo predeterminado"},keyActivation:{setting:"Personalizar los atajos de activación",description:"Elige los atajos que quieres para la activación. F para el *Modo predeterminado* y T para el *Modo TV*",both:"Atajos para ambos modos",tv:"Atajo solo para el modo TV",def:"Atajo solo para el modo predeterminado"},lyricsHeader:"Configuración de las letras",lyrics:"Letras",lyricsDescription:["**Nota:** Necesitas la aplicación personalizada [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) para usar esta función.","Sigue las instrucciones del enlace para instalar la aplicación personalizada."],lyricsAlignment:{setting:"Alineación de las letras",left:"Izquierda",center:"Centro",right:"Derecha"},autoHideLyrics:"Ocultar las letras automáticamente (cuando no estén disponibles)",lyricsAnimationTempo:"Tempo de la animación de las letras",generalHeader:"Configuración general",progressBar:"Barra de progreso",playerControls:"Controles del reproductor",trimTitle:"Recortar título",trimTitleUpNext:"Recortar título (Siguiente)",showAlbum:{setting:"Mostrar álbum",never:"Nunca",always:"Siempre",date:"Mostrar con fecha de lanzamiento"},showAllArtists:"Mostrar todos los artistas",icons:"Iconos",songChangeAnimation:"Animación de cambio de canción",fullscreen:"Pantalla completa",extraHeader:"Funcionalidad adicional",backgroundChoice:{setting:"⭐ Elección de fondo",description:["**Nuevo:** ¡Prueba la opción de **obra de arte del álbum animado**!","**Advertencia:** Se ve hermoso, pero puede ser intensivo en recursos y es experimental."],dynamicColor:"Color sólido dinámico",staticColor:"Color sólido estático",artwork:"Obra de arte del álbum",animatedArt:"Obra de arte del álbum animada (Experimental)",artist:"Obra de arte del artista"},extraControls:"Controles adicionales",upnextDisplay:"Visualización de la lista de reproducción",contextDisplay:{setting:"Visualización de contexto",always:"Siempre",never:"Nunca",mouse:"Al mover el mouse"},volumeDisplay:{setting:"Visualización de la barra de volumen",description:["En el modo `inteligente`, la barra de volumen se mostrará cuando:"," - mueves el mouse al lado izquierdo de la pantalla."," - cuando se cambia el volumen."],always:"Siempre",never:"Nunca",smart:"Inteligente"},appearanceHeader:"Apariencia avanzada/Apariencia",appearanceSubHeader:"*(Solo cambia si sabes lo que estás haciendo!)*",backgroundHeader:"Modificaciones de fondo",backgroundSubHeader:"Viene con valores predeterminados razonables, *(solo cambia si sabes lo que estás haciendo!)*",backgroundColor:{setting:"Elección de color (para fondo de color dinámico)",vibrant:"Vibrante",prominent:"Prominente",desaturated:"Desaturado (recomendado)",lightVibrant:"Vibrante claro",darkVibrant:"Vibrante oscuro",vibrantNonAlarming:"Vibrante sin alarma"},staticColor:"Elección de color (para fondo de color estático)",themedButtons:"Botones temáticos",themedIcons:"Iconos temáticos",invertColors:{setting:"Invertir colores",never:"Nunca",always:"Siempre",auto:"Automático (Basado en BG)"},backAnimationTime:"Tiempo de animación de fondo (para fondo de imagen)",animationSpeed:"⭐ Velocidad de animación (para fondo animado)",upnextScroll:{setting:"Animación de desplazamiento de la lista de reproducción",mq:"Marquesina/Desplazamiento",sp:"Spotify/Traducción"},upnextTime:"Tiempo de visualización de la lista de reproducción",backgroundBlur:"Desenfoque de fondo",backgroundBrightness:"Brillo de fondo",aboutHeader:"Acerca de",configReset:"Restablecer configuración",reload:"Recargar cliente"},tvBtnDesc:"Visualización del modo TV",fullscreenBtnDesc:"Pantalla completa"},S),"fr-FR":(0,A.default)({langName:"Français",context:{queue:"Lecture de la file d'attente",track:"Lecture de la piste",album:"Lecture de l'album",artist:"Lecture de l'artiste",playlist:"Lecture de la playlist",playlistFolder:"Lecture du dossier de playlist",search:"Lecture de la recherche",searchDest:"Chansons",collection:"Lecture de la collection",likedSongs:"Chansons aimées",trackRadio:"Lecture de la radio de la piste",artistRadio:"Lecture de la radio de l'artiste",albumRadio:"Lecture de la radio de l'album",playlistRadio:"Lecture de la radio de la playlist"},upnext:"À SUIVRE",unknownArtist:"Artiste (Indisponible)",settings:{switchToTV:"Passer en mode TV",switchToFullscreen:"Revenir au mode par défaut",tvModeConfig:"Configuration du mode TV",fullscreenConfig:"Configuration en plein écran",exit:"Quitter",pluginSettings:"Paramètres du plugin",fsHideOriginal:"Masquer le bouton d'origine",fsHideOriginalDescription:"Masquez le bouton de plein écran d'origine de Spotify (disponible pour les utilisateurs **Premium**)",language:"Langue",autoLaunch:{setting:"Lancement automatique (au démarrage de Spotify)",description:"**Limitation :** La fenêtre de Spotify ne peut pas passer en mode plein écran lors du démarrage automatique.",never:"Jamais (Par défaut)",default:"Ouvrir en mode par défaut",tvmode:"Ouvrir en mode TV",lastused:"Dernier mode utilisé"},activationTypes:{setting:"Méthodes d'activation",description:"Choisissez les méthodes que vous souhaitez utiliser pour activer le plugin. Touches F et T, ou boutons dans la barre supérieure et la barre inférieure.",both:"Boutons et raccourcis clavier",btns:"Boutons uniquement",keys:"Raccourcis clavier uniquement"},buttonActivation:{setting:"Personnaliser les boutons d'activation",description:"Choisissez les boutons que vous souhaitez utiliser pour l'activation, dans la barre supérieure (*Mode TV*) et la barre inférieure (*Mode par défaut*).",both:"Boutons pour les deux modes",tv:"Bouton uniquement pour le mode TV",def:"Bouton uniquement pour le mode par défaut"},keyActivation:{setting:"Personnaliser les touches d'activation",description:"Choisissez les touches que vous souhaitez utiliser pour l'activation. Touche F pour le *Mode par défaut* et T pour le *Mode TV*",both:"Touches pour les deux modes",tv:"Touche uniquement pour le mode TV",def:"Touche uniquement pour le mode par défaut"},lyricsHeader:"Paramètres des paroles",lyrics:"Paroles",lyricsDescription:["**Remarque :** Vous avez besoin de l'application personnalisée [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) pour utiliser cette fonctionnalité.","Suivez les instructions du lien pour installer l'application personnalisée."],lyricsAlignment:{setting:"Alignement des paroles",left:"Gauche",center:"Centre",right:"Droite"},autoHideLyrics:"Masquer automatiquement les paroles (lorsque pas disponibles)",lyricsAnimationTempo:"Tempo de l'animation des paroles",generalHeader:"Paramètres généraux",progressBar:"Barre de progression",playerControls:"Contrôles du lecteur",trimTitle:"Réduire le titre",trimTitleUpNext:"Réduire le titre (À suivre)",showAlbum:{setting:"Afficher l'album",never:"Jamais",always:"Toujours",date:"Afficher avec la date de sortie"},showAllArtists:"Afficher tous les artistes",icons:"Icônes",songChangeAnimation:"Animation de changement de chanson",fullscreen:"Plein écran",extraHeader:"Fonctionnalités supplémentaires",backgroundChoice:{setting:"⭐ Choix de l'arrière-plan",description:["**Nouveau :** Essayez l'option **image d'album animée** !","**Avertissement :** Cela peut être très beau, mais peut consommer des ressources et est expérimental."],dynamicColor:"Couleur solide dynamique",staticColor:"Couleur solide statique",artwork:"Image d'album",animatedArt:"Image d'album animée (Expérimental)",artist:"Image de l'artiste"},extraControls:"Contrôles supplémentaires",upnextDisplay:"Affichage À suivre",contextDisplay:{setting:"Affichage du contexte",always:"Toujours",never:"Jamais",mouse:"Lors du mouvement de la souris"},volumeDisplay:{setting:"Affichage de la barre de volume",description:["En mode `intelligent`, la barre de volume s'affichera lorsque :"," - vous déplacez votre souris vers le côté gauche de l'écran."," - lorsque le volume est modifié."],always:"Toujours",never:"Jamais",smart:"Intelligent"},appearanceHeader:"Paramètres avancés/Aspect",appearanceSubHeader:"*(À changer uniquement si vous savez ce que vous faites !)*",backgroundHeader:"Modifications de l'arrière-plan",backgroundSubHeader:"Fournit des valeurs par défaut raisonnables, *(À changer uniquement si vous savez ce que vous faites !)*",backgroundColor:{setting:"Choix de la couleur (pour un arrière-plan coloré dynamique)",vibrant:"Vibrante",prominent:"Prominente",desaturated:"Désaturée (recommandée)",lightVibrant:"Légèrement vibrante",darkVibrant:"Foncé vibrante",vibrantNonAlarming:"Vibrante non alarmante"},staticColor:"Choix de la couleur (pour un arrière-plan coloré statique)",themedButtons:"Boutons thématiques",themedIcons:"Icônes thématiques",invertColors:{setting:"Inverser les couleurs",never:"Jamais",always:"Toujours",auto:"Automatique (basé sur le fond)"},backAnimationTime:"Temps d'animation de l'arrière-plan (pour l'arrière-plan image)",animationSpeed:"⭐ Vitesse d'animation (pour l'arrière-plan animé)",upnextScroll:{setting:"Animation de défilement À suivre",mq:"Marquee/Defilement",sp:"Spotify/Translation"},upnextTime:"Temps pour afficher À suivre",backgroundBlur:"Flou de l'arrière-plan",backgroundBrightness:"Luminosité de l'arrière-plan",aboutHeader:"À propos",configReset:"Réinitialiser la configuration",reload:"Recharger le client"},tvBtnDesc:"Affichage du mode TV",fullscreenBtnDesc:"Plein écran"},S),"id-ID":(0,A.default)({langName:"Bahasa Indonesia",context:{queue:"Memutar dari antrian",track:"Memutar lagu",album:"Memutar dari album",artist:"Memutar dari artis",playlist:"Memutar dari playlist",playlistFolder:"Memutar dari folder playlist",search:"Memutar dari hasil pencarian",searchDest:"Lagu",collection:"Memutar dari koleksi",likedSongs:"Lagu yang disukai",trackRadio:"Memutar dari trek radio",artistRadio:"Memutar dari radio artis",albumRadio:"Memutar dari album radio",playlistRadio:"Memutar dari playlist radio"},upnext:"SELANJUTNYA",unknownArtist:"Artis (Tidak Tersedia)",settings:{switchToTV:"Beralih ke Mode TV",switchToFullscreen:"Beralih ke Mode Default",tvModeConfig:"Konfigurasi Mode TV",fullscreenConfig:"Konfigurasi Layar Penuh",exit:"Keluar",pluginSettings:"Pengaturan Plugin",fsHideOriginal:"Sembunyikan Tombol Default",fsHideOriginalDescription:"Sembunyikan tombol layar penuh bawaan Spotify (tersedia untuk pengguna **Premium**)",language:"Bahasa",autoLaunch:{setting:"Auto-launch (saat startup Spotify)",description:"**Batasan:** Jendela Spotify tidak dapat masuk ke mode layar penuh saat diluncurkan secara otomatis pada startup.",never:"Tidak Pernah (Default)",default:"Buka Mode Default",tvmode:"Buka Mode TV",lastused:"Mode Terakhir yang Digunakan"},activationTypes:{setting:"Metode Aktivasi",description:"Pilih metode yang ingin Anda gunakan untuk mengaktifkan plugin. Tombol F dan T, atau tombol di bilah atas dan bawah.",both:"Tombol dan Pintasan Keyboard",btns:"Hanya Tombol",keys:"Hanya Pintasan Keyboard"},buttonActivation:{setting:"Sesuaikan Tombol Aktivasi",description:"Pilih tombol yang ingin Anda gunakan untuk aktivasi, di bilah atas (*Mode TV*) dan bawah (*Mode Default*).",both:"Tombol untuk kedua mode",tv:"Tombol hanya untuk Mode TV",def:"Tombol hanya untuk Mode Default"},keyActivation:{setting:"Sesuaikan Tombol Aktivasi",description:"Pilih tombol yang ingin Anda gunakan untuk aktivasi. F untuk *Mode Default* dan T untuk *Mode TV*",both:"Tombol untuk kedua mode",tv:"Tombol hanya untuk Mode TV",def:"Tombol hanya untuk Mode Default"},lyricsHeader:"Pengaturan Lirik",lyrics:"Lirik",lyricsDescription:["**Catatan:** Anda memerlukan aplikasi kustom [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) untuk menggunakan fitur ini.","Ikuti petunjuk dalam tautan untuk menginstal aplikasi kustom tersebut."],lyricsAlignment:{setting:"Penjajaran Lirik",left:"Kiri",center:"Tengah",right:"Kanan"},autoHideLyrics:"Sembunyikan Lirik Secara Otomatis (saat tidak tersedia)",lyricsAnimationTempo:"Kecepatan Animasi Lirik",generalHeader:"Pengaturan Umum",progressBar:"Progress Bar",playerControls:"Kontrol Pemutar",trimTitle:"Potong Judul",trimTitleUpNext:"Potong Judul (Selanjutnya)",showAlbum:{setting:"Tampilkan Album",never:"Tidak Pernah",always:"Selalu",date:"Tampilkan dengan Tanggal Rilis"},showAllArtists:"Tampilkan Semua Artis",icons:"Ikon",songChangeAnimation:"Animasi Perubahan Lagu",fullscreen:"Layar Penuh",extraHeader:"Fungsionalitas Tambahan",backgroundChoice:{setting:"⭐ Pilihan Latar Belakang",description:["**Baru:** Cobalah opsi **album seni bergerak**!","**Peringatan:** Terlihat indah tetapi mungkin membutuhkan sumber daya yang tinggi, dan eksperimental."],dynamicColor:"Warna solid dinamis",staticColor:"Warna solid statis",artwork:"Seni Album",animatedArt:"Seni Album Bergerak (Eksperimental)",artist:"Seni Artis"},extraControls:"Kontrol Tambahan",upnextDisplay:"Tampilan Selanjutnya",contextDisplay:{setting:"Tampilan Konteks",always:"Selalu",never:"Tidak Pernah",mouse:"Pada pergerakan mouse"},volumeDisplay:{setting:"Tampilan Bar Volume",description:["Dalam mode `cerdas`, bar volume akan ditampilkan ketika:"," - Anda memindahkan mouse ke sisi kiri layar."," - ketika volume diubah."],always:"Selalu",never:"Tidak Pernah",smart:"Cerdas"},appearanceHeader:"Lanjutan/Penampilan",appearanceSubHeader:"*(Ubah hanya jika Anda tahu apa yang Anda lakukan!)*",backgroundHeader:"Modifikasi Latar Belakang",backgroundSubHeader:"Hadir dengan standar yang wajar, *(Ubah hanya jika Anda tahu apa yang Anda lakukan!)*",backgroundColor:{setting:"Pilihan Warna (untuk latar belakang berwarna dinamis)",vibrant:"Vibrant",prominent:"Prominent",desaturated:"Desaturated (disarankan)",lightVibrant:"Light Vibrant",darkVibrant:"Dark Vibrant",vibrantNonAlarming:"Vibrant Non Alarming"},staticColor:"Pilihan Warna (untuk latar belakang berwarna statis)",themedButtons:"Tombol Bertema",themedIcons:"Ikon Vertema",invertColors:{setting:"Balik Warna",never:"Tidak Pernah",always:"Selalu",auto:"Otomatis (Berdasarkan Latar)"},verticalMonitorSupport:"Dukungan Monitor Vertical",verticalMonitorSupportDescription:"Aktifkan ini jika Anda memiliki pengaturan monitor vertical. Lirik akan ditampilkan di bagian bawah, ketika tinggi jendela lebih besar dari lebar.",backAnimationTime:"Waktu Animasi Latar Belakang (untuk latar belakang gambar)",animationSpeed:"⭐ Kecepatan Animasi (untuk latar belakang bergerak)",upnextScroll:{setting:"Animasi Gulir Selanjutnya",mq:"Marquee/Gulir",sp:"Spotify/Translasi"},upnextTime:"Waktu Selanjutnya untuk Ditampilkan",backgroundBlur:"Blur Latar Belakang",backgroundBrightness:"Kecerahan Latar Belakang",aboutHeader:"Tentang",configReset:"Atur Ulang Konfigurasi",reload:"Muat Ulang Klien"},tvBtnDesc:"Tampilan Mode TV",fullscreenBtnDesc:"Layar Penuh"},S),"pt-BR":(0,A.default)({langName:"Português Brasileiro",context:{queue:"Reproduzindo da fila",track:"Reproduzindo faixa",album:"Reproduzindo do álbum",artist:"Reproduzindo do artista",playlist:"Reproduzindo da playlist",playlistFolder:"Reproduzindo de pasta de playlist",search:"Reproduzindo da pesquisa",searchDest:"Músicas",collection:"Reproduzindo da coleção",likedSongs:"Músicas Curtidas",trackRadio:"Reproduzindo do rádio da faixa",artistRadio:"Reproduzindo do rádio do artista",albumRadio:"Reproduzindo do rádio do álbum",playlistRadio:"Reproduzindo do rádio da playlist"},upnext:"A SEGUIR",unknownArtist:"Artista (Indisponível)",settings:{switchToTV:"Mudar para Modo TV",switchToFullscreen:"Mudar para Modo Padrão",tvModeConfig:"Configuração do Modo TV",fullscreenConfig:"Configuração de Tela Cheia",exit:"Sair",pluginSettings:"Configurações do Plugin",fsHideOriginal:"Ocultar Botão Padrão",fsHideOriginalDescription:"Oculta o botão de tela cheia padrão do Spotify (disponível para usuários **Premium**)",language:"Idioma",autoLaunch:{setting:"Inicialização automática (na inicialização do Spotify))",description:"**Limitação:** A janela do Spotify não pode ser maximizada automaticamente na inicialização.",never:"Nunca (Padrão)",default:"Modo Padrão",tvmode:"Modo TV",lastused:"Último Modo Utilizado"},activationTypes:{setting:"Métodos de Ativação",description:"Escolha os métodos que deseja usar para ativar o plugin. F e T keys, ou botões na barra superior e inferior.",both:"Botões e Atalhos de Teclado",btns:"Apenas Botões",keys:"Apenas Atalhos de Teclado"},buttonActivation:{setting:"Personalizar Botões de Ativação",description:"Escolha os botões desejados para ativação, na barra superior (*Modo TV*) e inferior (*Modo Padrão*).",both:"Modo Padrão e Modo TV",tv:"Modo TV",def:"Modo Padrão"},keyActivation:{setting:"Personalizar Teclas de Ativação",description:"Escolha as teclas desejadas para ativação. Tecla F para *Modo Padrão* e T para *Modo TV*",both:"Modo Padrão e Modo TV",tv:"Modo TV",def:"Modo Padrão"},lyricsHeader:"Configurações de Letras",lyrics:"Letras",lyricsDescription:["**Observação:** Você precisa do [lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus) aplicativo personalizado para usar esse recurso.","Siga as instruções no link para instalar o aplicativo personalizado."],lyricsAlignment:{setting:"Alinhamento de Letras",left:"Esquerda",center:"Centro",right:"Direita"},autoHideLyrics:"Ocultar Letras Automaticamente (Quando indisponíveis)",lyricsAnimationTempo:"Tempo de Animação das Letras",generalHeader:"Configurações Gerais",progressBar:"Barra de Progresso",playerControls:"Controles do Reprodutor",trimTitle:"Reduzir Título",trimTitleUpNext:"Reduzir Título (Em breve)",showAlbum:{setting:"Exibição do Álbum",never:"Nunca",always:"Sempre",date:"Exibir com Data de Lançamento"},showAllArtists:"Exibição de Todos os Artistas",icons:"Ícones",songChangeAnimation:"Animação de Troca de Música",fullscreen:"Tela Cheia",extraHeader:"Funcionalidades Extras",backgroundChoice:{setting:"⭐ Escolha de Fundo",description:["**Novidade:** Experimente a opção de **Arte do Álbum Animada**!","**Aviso:** Parece bonito, mas pode exigir muito desempenho e é experimental."],dynamicColor:"Cor sólida dinâmica",staticColor:"Cor sólida estática",artwork:"Arte do álbum",animatedArt:"Arte do Álbum Animada (Experimental))",artist:"Arte do Artista"},extraControls:"Controles Extras",upnextDisplay:"Exibição da Próxima Músuica",contextDisplay:{setting:"Exibição do Contexto",always:"Sempre",never:"Nunca",mouse:"Ao movimentar o mouse"},volumeDisplay:{setting:"Exibição da Barra de Volume",description:["No modo `inteligente`, a barra de volume será exibida quando:"," - você mover o mouse para o lado esquerdo da tela."," - quando o volume for alterado."],always:"Sempre",never:"Nunca",smart:"Inteligente"},appearanceHeader:"Avançado/Aparência",appearanceSubHeader:"**(Mude apenas se souber o que está fazendo!)*",backgroundHeader:"Modificações de Fundo",backgroundSubHeader:"Vem com padrões razoáveis, *(Mude apenas se souber o que está fazendo!)*",backgroundColor:{setting:"Escolha de Cor (Para fundo colorido dinâmico)",vibrant:"Vibrante",prominent:"Destaque",desaturated:"Desaturado (Recomendado)",lightVibrant:"Vibrante Claro",darkVibrant:"Vibrante Escuro",vibrantNonAlarming:"Vibrante Não Alarmante"},staticColor:"Escolha de Cor (Para fundo colorido dinâmico)",themedButtons:"Botões Temáticos",themedIcons:"Ícones Temáticos",invertColors:{setting:"Inverter Cores",never:"Nunca",always:"Sempre",auto:"Automático (Baseado no fundo)"},verticalMonitorSupport:"Suporte para Monitor Vertical",verticalMonitorSupportDescription:"Ative isso se tiver uma configuração de monitor vertical. As letras serão exibidas na parte inferior quando a altura da janela for maior que a largura.",backAnimationTime:"Tempo de Animação do Fundo (Para fundo de imagem)",animationSpeed:"⭐ Velocidade de Animação (Para fundo animado)",upnextScroll:{setting:"Animação de rolagem da faixa a seguir",mq:"Marcação/Rolagem",sp:"Spotify/Tradução"},upnextTime:"Tempo para exibição da faixa a seguir",backgroundBlur:"Desfoque do Fundo",backgroundBrightness:"Brilho do Fundo",aboutHeader:"Sobre",configReset:"Redefinir Configuração",reload:"Recarregar Cliente"},tvBtnDesc:"Exibição do Modo TV",fullscreenBtnDesc:"Tela Cheia"},S),"zh-TW":(0,A.default)({langName:"繁體中文",context:{queue:"正在從佇列播放",track:"正在播放",album:"正在從專輯播放",artist:"正在從藝人播放",playlist:"正在從歌單播放",playlistFolder:"正在從歌單資料夾播放",search:"正在從搜尋結果播放",searchDest:"歌曲",collection:"正在從合輯播放",likedSongs:"已按讚的歌曲",trackRadio:"正在從歌曲電台播放",artistRadio:"正在從藝人電台播放",albumRadio:"正在從專輯電台播放",playlistRadio:"正在從歌單電台播放"},upnext:"下一首",unknownArtist:"未知藝人",settings:{switchToTV:"切換至電視模式",switchToFullscreen:"切換至預設模式",tvModeConfig:"電視模式設定",fullscreenConfig:"全螢幕模式設定",exit:"退出",pluginSettings:"插件設定",fsHideOriginal:"隱藏原版按鈕",fsHideOriginalDescription:"隱藏Spotify原版的全螢幕按鈕 (只對**Premium**使用者有效)",language:"語言",autoLaunch:{setting:"自動啟動 (當Spotify啟動時)",description:"**限制:** Spotify 視窗在自動啟動時無法進入全螢幕模式",never:"永不 (預設)",default:"進入預設模式",tvmode:"電視模式",lastused:"上次使用的模式"},activationTypes:{setting:"開啟方式",description:"選擇你要開啟全螢幕的方式 FT 鍵,或者在頂部和底部欄的按鈕",both:"按鈕和鍵盤快捷鍵",btns:"僅限按鈕",keys:"僅限鍵盤快捷鍵"},buttonActivation:{setting:"自訂開啟按鈕",description:"選擇你要開啟全螢幕的方式,頂部(*電視模式*)和底部(*預設模式*)",both:"兩種模式的按鈕",tv:"僅限電視模式的按鈕",def:"僅限一般模式的按鈕"},keyActivation:{setting:"自訂開啟快捷鍵",description:"選擇你要開啟全螢幕的方式 F 切換到*預設模式*, T 切換到*電視模式*",both:"兩種模式的按鍵",tv:"僅限電視模式的按鍵",def:"僅限一般模式的按鍵"},lyricsHeader:"歌詞設定",lyrics:"歌詞",lyricsDescription:["**注意:**你需要先安裝[lyrics-plus](https://spicetify.app/docs/advanced-usage/custom-apps#lyrics-plus)插件才能使用歌詞功能","請根據連結裡的指示安裝這個插件"],lyricsAlignment:{setting:"歌詞對齊方式",left:"靠左對齊",center:"置中",right:"靠右對齊"},autoHideLyrics:"自動隱藏歌詞 (當歌詞不可用時)",lyricsAnimationTempo:"歌詞動畫速度",generalHeader:"一般設定",progressBar:"播放進度條",playerControls:"播放控制",trimTitle:"縮短標題",trimTitleUpNext:"縮短下一首提示的標題",showAlbum:{setting:"顯示專輯標題",never:"永不顯示",always:"永遠顯示",date:"與發佈年分一起顯示"},showAllArtists:"顯示所有藝人",icons:"顯示圖示",songChangeAnimation:"歌曲切換動畫",fullscreen:"全螢幕",extraHeader:"額外功能設定",backgroundChoice:{setting:"背景設定",description:["**新功能:** 試試看 **動化專輯照** 選項!","**警告:** 很漂亮,但可能消耗更多電腦資源,而且這是實驗性的功能"],dynamicColor:"動態純色",staticColor:"靜態純色",artwork:"專輯照",animatedArt:"動化專輯照 (實驗性)",artist:"藝人封面"},extraControls:"額外控制",upnextDisplay:"下一首提示",contextDisplay:{setting:"播放來源顯示",always:"永遠顯示",never:"永不顯示",mouse:"當滑鼠移動時顯示"},volumeDisplay:{setting:"音量條顯示",description:["在自動模式下,音量條將會在以下情況顯示:"," - 滑鼠移動到螢幕左方"," - 音量有變化"],always:"永遠顯示",never:"永不顯示",smart:"自動模式"},appearanceHeader:"進階/外觀設定",appearanceSubHeader:"*(除非你知道你在幹嘛,不然不要改!)*",backgroundHeader:"背景修改",backgroundSubHeader:"有合理的預設,*除非你知道你在幹嘛,不然不要改!*",backgroundColor:{setting:"顏色選擇 (用於動態純色)",vibrant:"豐富多彩",prominent:"突出",desaturated:"去飽和度 (推薦)",lightVibrant:"明亮的活力",darkVibrant:"深色的活力",vibrantNonAlarming:"不引人注目的活力"},staticColor:"顏色選擇 (用於靜態純色)",themedButtons:"主題色按鈕",themedIcons:"主題色圖示",invertColors:{setting:"反轉顏色",never:"永不",always:"永遠",auto:"自動 (基於背景)"},verticalMonitorSupport:"垂直顯示器支援",verticalMonitorSupportDescription:"如果你有垂直顯示器,請啟用此功能。當視窗高度大於寬度時,歌詞將顯示在底部。",backAnimationTime:"背景動畫時間 (用於圖片背景)",animationSpeed:"⭐ 動畫速度 (用於動畫背景)",upnextScroll:{setting:"下一首提示動畫",mq:"跑馬燈/滾動",sp:"Spotify/變換"},upnextTime:"下一首提示顯示時間",backgroundBlur:"背景模糊",backgroundBrightness:"背景亮度",aboutHeader:"關於",configReset:"重設設定",reload:"重新載入插件"},tvBtnDesc:"電視模式",fullscreenBtnDesc:"全螢幕模式"},S)};function Ze(e){var n=[],a=null,r=[],o=!1,t=null,s=e.prototype.handleKey;function l(e){for(var t=0;t{const[t,n]=T.useState(Spicetify.Player.getProgress()),[a,r]=T.useState(Spicetify.Player.getDuration()),[e,o]=T.useState(Ne.get("showRemainingTime")),[s,l]=T.useState({isChanging:!1,data:null}),c=T.useRef(null),[d,u]=T.useState(!0),p=T.useRef(null),g=e=>{var t;0==e.button&&(t=c.current?.getBoundingClientRect().width??480,t=(e={isChanging:!0,data:{begin:e.offsetX,positionCoord:e.offsetX,beginClient:e.clientX,sliderDimen:t}}).data.positionCoord/t,n(t*a),l(e))},m=e=>{var t;s.isChanging&&s.data&&(e=e.clientX-s.data.beginClient,t=s.data.sliderDimen,t=(e=Math.min(Math.max(s.data.begin+e,0),t))/t,n(t*a),l({isChanging:!0,data:{...s.data,positionCoord:e}})),"mousemove"===i&&h()},f=e=>{0==e.button&&s.isChanging&&(Spicetify.Player.seek(t),l({isChanging:!1,data:null}))},h=(e=3e3)=>{p.current&&clearTimeout(p.current),u(!0),p.current=setTimeout(()=>{u(!1)},e)},y=()=>{var e=Spicetify.Player.getProgress();s.isChanging||!Spicetify.Player.isPlaying()&&t===e||n(e)},b=e=>{n(0),r(e.data.duration)};return T.useEffect(()=>{"mousemove"===i&&h();const e=setInterval(y,500);return Spicetify.Player.addEventListener("songchange",b),c.current?.addEventListener("mousedown",g),document.addEventListener("mousemove",m),document.addEventListener("mouseup",f),()=>{clearInterval(e),Spicetify.Player.removeEventListener("songchange",b),c.current?.removeEventListener("mousedown",g),document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",f)}},[s,i]),T.createElement("div",{id:"fsd-progress-container",style:{opacity:d?1:0}},T.createElement("div",{className:"progress-number",id:"fsd-elapsed"},Spicetify.Player.formatTime(t)),T.createElement("div",{id:"fsd-progress-bar",ref:c,className:(0,ve.default)({dragging:s.isChanging})},T.createElement("div",{id:"fsd-progress-bar-inner",style:{width:t/a*100+"%"}},T.createElement("div",{id:"progress-thumb"}))),T.createElement("div",{className:"progress-number",id:"fsd-duration",onClick:()=>{o(!e),Ne.set("showRemainingTime",!e)}},e?" -"+Spicetify.Player.formatTime(a-t):Spicetify.Player.formatTime(a)))},C=t(D()),ke=t(e()),xe=t(F()),we=({volume:e})=>{return C.createElement("button",{className:"fs-button",id:"fsd-volume-icon",onClick:()=>document.querySelector("div.main-nowPlayingBar-volumeBar > button")?.click(),title:0==e?"Unmute":"Mute",dangerouslySetInnerHTML:{__html:"number"!=typeof e||60 ${Spicetify.SVGIcons.volume} @@ -128,16 +128,16 @@ ${e} ${Spicetify.SVGIcons["volume-off"]} - `}})},Ke=({state:a})=>{const[t,r]=T.useState(Spicetify.Platform?.PlaybackAPI?._isAvailable?Math.round(100*Spicetify.Player.getVolume()):-100),[o,s]=T.useState({isChanging:!1,data:null}),[e,i]=T.useState(!0),n=T.useRef(null),l=T.useRef(null),c=e=>{var t;0==e.button&&(e={isChanging:!0,data:{begin:(t=n.current?.getBoundingClientRect().height??250)-e.offsetY,positionCoord:t-e.offsetY,beginClient:e.clientY,sliderDimen:t}},t=Math.round(e.data.positionCoord/t*100),r(t),s(e))},d=e=>{if(o.isChanging&&o.data){var t=o.data.beginClient-e.clientY,i=o.data.sliderDimen,t=Math.min(Math.max(o.data.begin+t,0),i);const n=Math.round(t/i*100);r(n),(0,ye.default)(()=>Spicetify.Player.setVolume(n/100),20)(),s({isChanging:!0,data:{...o.data,positionCoord:t}})}"smart"===a&&.2{0==e.button&&o.isChanging&&(Spicetify.Player.setVolume(t/100),s({isChanging:!1,data:null}))},p=(e=2e3)=>{l.current&&clearTimeout(l.current),i(!0),l.current=setTimeout(()=>{i(!1)},e)},g=e=>{o.isChanging||(e=Math.round(100*e.data.volume))!==t&&(r(e),"smart"===a)&&p()};return T.useEffect(()=>("smart"===a&&p(3e3),Spicetify.Platform.PlaybackAPI._events.addListener("volume",g),n.current?.addEventListener("mousedown",c),document.addEventListener("mousemove",d),document.addEventListener("mouseup",u),()=>{Spicetify.Platform.PlaybackAPI._events.removeListener("volume",g),n.current?.removeEventListener("mousedown",c),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",u)}),[o,a,t]),T.createElement("div",{id:"fsd-volume-container",className:(0,be.default)({unavailable:-100===t,"v-hidden":"always"!==a&&!e,dragging:o.isChanging})},T.createElement("div",{id:"fsd-volume"},-100===t?"":t+"%"),T.createElement("div",{id:"fsd-volume-bar",ref:n,className:(0,be.default)({dragging:o.isChanging})},T.createElement("div",{id:"fsd-volume-bar-inner",style:{height:(-100===t?100:t)+"%"}},T.createElement("div",{id:"volume-thumb"}))),T.createElement(ve,{volume:t}))};var ke=async function(){let z=0,B=Pe.allNotExist();for(;0setTimeout(e,300)),B=Pe.allNotExist(),z+=1}function t(){(Pe.isModeActivated()&&Re.getGlobal("tvMode")&&"tv"===Re.getMode()?I:(Re.getGlobal("tvMode")&&"tv"===Re.getMode()||(Re.setGlobal("tvMode",!0),Re.setMode("tv"),x()),E))()}function i(){(!Pe.isModeActivated()||Re.getGlobal("tvMode")||"tv"===Re.getMode()?(!Re.getGlobal("tvMode")&&"tv"!==Re.getMode()||(Re.setGlobal("tvMode",!1),Re.setMode("def"),x()),E):I)()}Ue(),"btns"!==Re.getGlobal("activationTypes")&&("def"!==Re.getGlobal("keyActivation")&&Spicetify.Mousetrap.bind("t",t),"tv"!==Re.getGlobal("keyActivation"))&&Spicetify.Mousetrap.bind("f",i),null===localStorage.getItem("full-screen:inverted")&&localStorage.setItem("full-screen:inverted","{}");const a=JSON.parse(localStorage.getItem("full-screen:inverted")??"{}");let s=Re.getGlobal("locale");const O=document.createElement("style"),l=document.createElement("div");l.id="full-screen-display",l.classList.add("Video","VideoPlayer--fullscreen","VideoPlayer--landscape");let $,c,V,H,d,n,j,q,F,G,r,U,Y,X,o,u,p,g,m,K,W,f,h,y,b,v;const Z=new Image,k=new Image;function x(){var e;l.classList.toggle("lyrics-active",Boolean(Re.get("lyricsDisplay"))),l.classList.toggle("vertical-mode",Re.get("verticalMonitorSupport")&&window.innerWidth{const[t,r]=C.useState(Spicetify.Platform?.PlaybackAPI?._isAvailable?Math.round(100*Spicetify.Player.getVolume()):-100),[o,s]=C.useState({isChanging:!1,data:null}),[e,i]=C.useState(!0),n=C.useRef(null),l=C.useRef(null),c=e=>{var t;0==e.button&&(e={isChanging:!0,data:{begin:(t=n.current?.getBoundingClientRect().height??250)-e.offsetY,positionCoord:t-e.offsetY,beginClient:e.clientY,sliderDimen:t}},t=Math.round(e.data.positionCoord/t*100),r(t),s(e))},d=e=>{if(o.isChanging&&o.data){var t=o.data.beginClient-e.clientY,i=o.data.sliderDimen,t=Math.min(Math.max(o.data.begin+t,0),i);const n=Math.round(t/i*100);r(n),(0,ke.default)(()=>Spicetify.Player.setVolume(n/100),20)(),s({isChanging:!0,data:{...o.data,positionCoord:t}})}"smart"===a&&.2{0==e.button&&o.isChanging&&(Spicetify.Player.setVolume(t/100),s({isChanging:!1,data:null}))},p=(e=2e3)=>{l.current&&clearTimeout(l.current),i(!0),l.current=setTimeout(()=>{i(!1)},e)},g=e=>{o.isChanging||(e=Math.round(100*e.data.volume))!==t&&(r(e),"smart"===a)&&p()};return C.useEffect(()=>("smart"===a&&p(3e3),Spicetify.Platform.PlaybackAPI._events.addListener("volume",g),n.current?.addEventListener("mousedown",c),document.addEventListener("mousemove",d),document.addEventListener("mouseup",u),()=>{Spicetify.Platform.PlaybackAPI._events.removeListener("volume",g),n.current?.removeEventListener("mousedown",c),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",u)}),[o,a,t]),C.createElement("div",{id:"fsd-volume-container",className:(0,xe.default)({unavailable:-100===t,"v-hidden":"always"!==a&&!e,dragging:o.isChanging})},C.createElement("div",{id:"fsd-volume"},-100===t?"":t+"%"),C.createElement("div",{id:"fsd-volume-bar",ref:n,className:(0,xe.default)({dragging:o.isChanging})},C.createElement("div",{id:"fsd-volume-bar-inner",style:{height:(-100===t?100:t)+"%"}},C.createElement("div",{id:"volume-thumb"}))),C.createElement(we,{volume:t}))};var Se=async function(){let z=0,B=ze.allNotExist();for(;0setTimeout(e,300)),B=ze.allNotExist(),z+=1}function t(){(ze.isModeActivated()&&Ne.getGlobal("tvMode")&&"tv"===Ne.getMode()?I:(Ne.getGlobal("tvMode")&&"tv"===Ne.getMode()||(Ne.setGlobal("tvMode",!0),Ne.setMode("tv"),x()),E))()}function i(){(!ze.isModeActivated()||Ne.getGlobal("tvMode")||"tv"===Ne.getMode()?(!Ne.getGlobal("tvMode")&&"tv"!==Ne.getMode()||(Ne.setGlobal("tvMode",!1),Ne.setMode("def"),x()),E):I)()}Ke(),Ze(Spicetify.Mousetrap),"btns"!==Ne.getGlobal("activationTypes")&&("def"!==Ne.getGlobal("keyActivation")&&Spicetify.Mousetrap.bind("t",t),"tv"!==Ne.getGlobal("keyActivation"))&&Spicetify.Mousetrap.bind("f",i),null===localStorage.getItem("full-screen:inverted")&&localStorage.setItem("full-screen:inverted","{}");const a=JSON.parse(localStorage.getItem("full-screen:inverted")??"{}");let s=Ne.getGlobal("locale");const O=document.createElement("style"),l=document.createElement("div");l.id="full-screen-display",l.classList.add("Video","VideoPlayer--fullscreen","VideoPlayer--landscape");let $,c,V,H,d,n,j,q,F,G,r,U,X,Y,o,u,p,g,K,W,Z,m,f,h,y,b,v;const Q=new Image,k=new Image;function x(){var e;l.classList.toggle("lyrics-active",Boolean(Ne.get("lyricsDisplay"))),ze.toggleQueuePanel(y,!1),l.classList.toggle("vertical-mode",Ne.get("verticalMonitorSupport")&&window.innerWidth - ${"never"!==Re.get("contextDisplay")?` + ${"never"!==Ne.get("contextDisplay")?`
    @@ -145,7 +145,7 @@ ${e}
    `:""} - ${Re.get("upnextDisplay")?` + ${Ne.get("upnextDisplay")?`
    @@ -160,7 +160,7 @@ ${e}
    `:""}
    -${Re.get("lyricsDisplay")?'
    ':""} +${Ne.get("lyricsDisplay")?'
    ':""}
    @@ -169,20 +169,20 @@ ${Re.get("lyricsDisplay")?'
    ':""}
    - ${_e.PLAYING_ICON} - ${_e.PAUSED_ICON} + ${Pe.PLAYING_ICON} + ${Pe.PAUSED_ICON}
    - ${_e.ARTIST} + ${Pe.ARTIST}
    - ${"never"!==Re.get("showAlbum")?`
    - ${_e.ALBUM} + ${"never"!==Ne.get("showAlbum")?`
    + ${Pe.ALBUM}
    `:""} -
    - ${"never"!==Re.get("extraControls")?`
    +
    + ${"never"!==Ne.get("extraControls")?`
    @@ -190,7 +190,7 @@ ${Re.get("lyricsDisplay")?'
    ':""} ${Spicetify.SVGIcons.shuffle}
    `:""} - ${"never"!==Re.get("playerControls")?` + ${"never"!==Ne.get("playerControls")?`
    `:""} - ${"never"!==Re.get("extraControls")?`
    - ${"auto"===Re.get("invertColors")?``:""} + ${"never"!==Ne.get("extraControls")?`
    + ${"auto"===Ne.get("invertColors")?``:""} - ${Re.get("lyricsDisplay")?``:""} + ${Ne.get("lyricsDisplay")?``:""} +
    `:""} - ${!Re.getGlobal("tvMode")||"never"!==Re.get("playerControls")&&"never"!==Re.get("extraControls")?"":'
    '} + ${!Ne.getGlobal("tvMode")||"never"!==Ne.get("playerControls")&&"never"!==Ne.get("extraControls")?"":'
    '}
    - ${Re.getGlobal("tvMode")&&"never"!==Re.get("playerControls")&&"never"!==Re.get("extraControls")?'
    ':""} + ${Ne.getGlobal("tvMode")&&"never"!==Ne.get("playerControls")&&"never"!==Ne.get("extraControls")?'
    ':""}
    - ${Re.getGlobal("tvMode")?"":'
    '} -
    `),(c=l.querySelector("canvas")).width=window.innerWidth,c.height=window.innerHeight,$=l.querySelector("#fsd-art-image"),V=l.querySelector("#fsd-title span"),H=l.querySelector("#fsd-artist span"),d=l.querySelector("#fsd-album span"),"never"!==Re.get("contextDisplay")&&(j=l.querySelector("#fsd-ctx-container"),q=l.querySelector("#fsd-ctx-icon"),F=l.querySelector("#fsd-ctx-source"),G=l.querySelector("#fsd-ctx-name")),Re.get("upnextDisplay")&&((r=l.querySelector("#fsd-upnext-container")).onclick=Spicetify.Player.next,U=l.querySelector("#fsd_next_art_image"),Y=l.querySelector("#fsd_up_next_text"),X=l.querySelector("#fsd_next_tit_art"),o=l.querySelector("#fsd_next_tit_art_inner"),u=l.querySelector("#fsd_first_span"),p=l.querySelector("#fsd_second_span")),Re.get("icons")&&((g=l.querySelector("#playing-icon")).onclick=()=>{Re.set("titleMovingIcon",!1),g.classList.add("hidden"),m.classList.remove("hidden")},(m=l.querySelector("#paused-icon")).onclick=()=>{Re.set("titleMovingIcon",!0),g.classList.remove("hidden"),m.classList.add("hidden"),oe({data:{is_paused:!Spicetify.Player.isPlaying()}})}),"never"!==Re.get("playerControls")&&((n=l.querySelector("#fsd-play")).onclick=()=>{Pe.fadeAnimation(n),Spicetify.Player.togglePlay()},(K=l.querySelector("#fsd-next")).onclick=()=>{Pe.fadeAnimation(K,"fade-ri"),Spicetify.Player.next()},(W=l.querySelector("#fsd-back")).onclick=()=>{Pe.fadeAnimation(W,"fade-le"),Spicetify.Player.back()}),"never"!==Re.get("extraControls")&&(f=l.querySelector("#fsd-heart"),h=l.querySelector("#fsd-shuffle"),y=l.querySelector("#fsd-repeat"),f.onclick=()=>{Pe.fadeAnimation(f),Spicetify.Player.toggleHeart()},h.onclick=()=>{Pe.fadeAnimation(h),Spicetify.Player.toggleShuffle()},y.onclick=()=>{Pe.fadeAnimation(y),Spicetify.Player.toggleRepeat()},"auto"===Re.get("invertColors")&&((b=l.querySelector("#fsd-invert")).onclick=pe),Re.get("lyricsDisplay"))&&((v=l.querySelector("#fsd-lyrics")).onclick=()=>J())}let Q,w=!1;function J(){l.classList.toggle("lyrics-hide-force"),v&&(Pe.fadeAnimation(v),v.classList.toggle("button-active"),v.innerHTML=l.classList.contains("lyrics-unavailable")||l.classList.contains("lyrics-hide-force")?_e.LYRICS_ACTIVE:_e.LYRICS_INACTIVE)}function ee(){setTimeout(()=>{var e=Pe.getShowTime(Re.get("upnextTimeToShow"));Q&&clearTimeout(Q),e<10?(w&&"translateX(0px)"===r.style.transform||C(),w=!0):(r.style.transform="translateX(600px)",w=!1,Spicetify.Player.isPlaying()&&(Q=setTimeout(()=>{C(),w=!0},e)))},100)}function te(e){const t=e.replace("spotify","").replaceAll(":","/");I(),setTimeout(()=>{Spicetify.Platform.History.push(t)},500)}async function ie(){const i=Spicetify.Player.data.item?.metadata;"never"!==Re.get("contextDisplay")&&!async function(){var e=await Pe.getContext(ze[s]).catch(e=>console.error(e));F.classList.toggle("ctx-no-name",!e.ctxName),e.ctxIcon||(e.ctxIcon=Spicetify.SVGIcons.spotify);q.innerHTML=/^${e.ctxIcon}`:e.ctxIcon,F.innerText.toLowerCase()===(""+e.ctxSource).toLowerCase()&&G.innerText.toLowerCase()===e.ctxName.toLowerCase()||(F.innerText=""+e.ctxSource,G.innerText=e.ctxName,"mousemove"===Re.get("contextDisplay")&&be())}().catch(e=>console.error("Error getting context: ",e));let e=i?.title;Re.get("trimTitle")&&(e=Pe.trimTitle(e));let t;if(Re.get("showAllArtists")){var n=Object.keys(i).filter(e=>e.startsWith("artist_name")).sort();const o=Object.keys(i).filter(e=>e.startsWith("artist_uri")).sort();t=n.map((e,t)=>[i[e],i[o[t]]])}else t=[[i?.artist_name,i?.artist_uri]];let a,r=!1;"never"!==Re.get("showAlbum")&&(a=i?.album_title||"",(n=i?.album_uri)?.startsWith("spotify:album:"))&&"date"===Re.get("showAlbum")&&Pe.getAlbumReleaseDate(n,s).then(e=>{a+=e,r&&(d.innerText=a||"")}),S(i),Z.src=i?.image_xlarge_url,Z.onload=()=>{$.style.backgroundImage=`url("${Z.src}")`,V.innerText=e||"",V.setAttribute("uri",Spicetify.Player.data?.item?.uri||""),H.innerHTML=""+t.map(e=>`${e[0]}`).join(", "),H.querySelectorAll("span").forEach(e=>{e.onclick=()=>{te(e.getAttribute("uri"))}}),d&&(d.innerText=a||"",d.setAttribute("uri",i?.album_uri||""),r=!0),Re.get("lyricsDisplay")&&Re.get("autoHideLyrics")&&l.querySelector("#fad-lyrics-plus-container")&&ae()},Z.onerror=()=>{console.error("Check your Internet! Unable to load Image"),Z.src=_e.OFFLINE_SVG}}async function S(t,e=!1){const i=k.cloneNode();var n=Re.get("backgroundChoice");switch(c.classList.toggle("animated","animated_album"===n),qe("animated_album"===n),n){case"dynamic_color":var a=await Pe.getNextColor(Re.get("coloredBackChoice"));A(Spicetify.Player.data.item?.uri,t),ne(Spicetify.Player.data.item?.uri),He(a,c);break;case"static_color":A(Spicetify.Player.data.item?.uri,t),ne(Spicetify.Player.data.item?.uri),He(Re.get("staticBackChoice"),c);break;case"artist_art":k.src=await Pe.getImageAndLoad(t),A(k.src,t),ne(k.src),k.onload=()=>{Ve(i,k,c,e)};break;case"animated_album":k.src=t?.image_xlarge_url,k.onload=()=>{A(Spicetify.Player.data.item?.uri,t),ne(Spicetify.Player.data.item?.uri);{var i=c,n=k;const r=i.getContext("2d");i.width=window.innerWidth,i.height=window.innerHeight;var e=Math.max(Re.get("blurSize"),28),a=Math.min(Re.get("backgroundBrightness"),.7);r.filter=`saturate(2) brightness(${a}) blur(${e}px)`;const o=Math.min(i.width,i.height);let t=0;je=!0,function e(){r.clearRect(0,0,i.width,i.height),r.save(),r.translate(0,0),r.rotate(2*Math.PI/360*t),r.drawImage(n,-o,-o,2*o,2*o),r.restore(),r.save(),r.translate(i.width/2,0),r.rotate(2*Math.PI/360*t+Math.PI),r.drawImage(n,-o,-o,2*o,2*o),r.restore(),t+=Fe,je&&requestAnimationFrame(e)}()}};break;default:k.src=t?.image_xlarge_url,k.onload=()=>{A(Spicetify.Player.data.item?.uri,t),ne(Spicetify.Player.data.item?.uri),Ve(i,k,c,e)}}}async function A(i,n){switch(Re.get("invertColors")){case"always":l.style.setProperty("--main-color","0,0,0"),l.style.setProperty("--contrast-color","255,255,255");break;case"auto":{let e="255,255,255",t="0,0,0";"album_art"===Re.get("backgroundChoice")&&(n?.album_uri?.split(":")[2]??"")in a?e=a[n?.album_uri?.split(":")[2]??""]?"0,0,0":"255,255,255":[e,t]=await Pe.getMainColor(i),l.style.setProperty("--main-color",e),l.style.setProperty("--contrast-color",t),"never"!==Re.get("extraControls")&&(b.classList.remove("button-active"),b.innerHTML=_e.INVERT_INACTIVE);break}default:l.style.setProperty("--main-color","255,255,255"),l.style.setProperty("--contrast-color","0,0,0")}}async function ne(t){if("dynamic_color"==Re.get("backgroundChoice")&&"VIBRANT"==Re.get("coloredBackChoice")||!Re.get("themedButtons")&&!Re.get("themedIcons"))l.classList.remove("themed-buttons","themed-icons"),l.style.setProperty("--theme-color","175,175,175");else{l.classList.toggle("themed-buttons",Boolean(Re.get("themedButtons"))),l.classList.toggle("themed-icons",Boolean(Re.get("themedIcons")));let e;t=await Me.colorExtractor(t).catch(e=>console.warn(e));e=t?.VIBRANT?Pe.hexToRgb(t.VIBRANT):"175,175,175",l.style.setProperty("--theme-color",e)}}function T(e){e.detail.isLoading||(l.classList.toggle("lyrics-unavailable",!(e.detail.available&&1<(e.detail?.synced?.length??5))),"never"!==Re.get("extraControls")&&v.classList.toggle("hidden",l.classList.contains("lyrics-unavailable")))}function ae(){var e=l.querySelector("#fad-lyrics-plus-container");e.innerText?"(• _ • )"==e.innerText?T({detail:{isLoading:!1,available:!1}}):T({detail:{isLoading:!1,available:!0}}):(T({detail:{isLoading:!0,available:!1}}),setTimeout(ae,100))}function re(){Re.get("upnextDisplay")&&C(),S(Spicetify.Player.data.item?.metadata,!0),l.classList.toggle("vertical-mode",Re.get("verticalMonitorSupport")&&window.innerWidthe.startsWith("artist_name")).sort().map(e=>t[e]).join(", ");let i;i=n||ze[s].unknownArtist,(n=t.image_xlarge_url)?U.style.backgroundImage=`url("${n}")`:t.image_url?U.style.backgroundImage=`url("${t.image_url}")`:U.style.backgroundImage=`url("${_e.OFFLINE_SVG}")`,u.innerText=e+" • "+i,p.innerText=e+" • "+i}await 0,r.style.transform="translateX(0px)",w=!0;let e;p.offsetWidth>X.offsetWidth-2?"mq"===Re.get("upNextAnim")?(u.style.paddingRight="80px",e=u.offsetWidth/400*5e3,r.style.setProperty("--translate_width_fsd",`-${u.offsetWidth+3.5}px`),o.style.animation="fsd_cssmarquee "+e+"ms linear 800ms infinite"):(u.style.paddingRight="0px",p.innerText="",e=(u.offsetWidth-X.offsetWidth-2)/.05,r.style.setProperty("--translate_width_fsd",`-${u.offsetWidth-X.offsetWidth+5}px`),o.style.animation=`fsd_translate ${1500${Spicetify.SVGIcons.play}`:n.innerHTML=`${Spicetify.SVGIcons.pause}`}let le={shuffle:Spicetify.Platform?.PlayerAPI?._state?.shuffle,repeat:Spicetify.Platform?.PlayerAPI?._state?.repeat};function ce(e){e=e?.data??Spicetify.Player.data,ue(),le?.shuffle!==e?.shuffle&&Pe.fadeAnimation(h),le?.repeat!==e?.repeat&&Pe.fadeAnimation(y),le={shuffle:e?.shuffle,repeat:e?.repeat},y.classList.toggle("dot-after",0!==e?.repeat),y.classList.toggle("button-active",0!==e?.repeat),h.classList.toggle("dot-after",e?.shuffle),h.classList.toggle("button-active",e?.shuffle),2===e?.repeat?y.innerHTML=`${Spicetify.SVGIcons["repeat-once"]}`:y.innerHTML=`${Spicetify.SVGIcons.repeat}`,e?.restrictions&&(h.classList.toggle("unavailable",!e?.restrictions?.canToggleShuffle),y.classList.toggle("unavailable",!e?.restrictions?.canToggleRepeatTrack&&!e?.restrictions?.canToggleRepeatContext))}let de=Spicetify.Player?.data?.item?.metadata["collection.in_collection"];function ue(){setTimeout(()=>{var e=Spicetify.Player?.data?.item;f.classList.toggle("unavailable","true"!==e?.metadata["collection.can_add"]),de!==e?.metadata["collection.in_collection"]&&Pe.fadeAnimation(f),de=e?.metadata["collection.in_collection"],"true"===e?.metadata["collection.in_collection"]||Spicetify.Player.getHeart()?(f.innerHTML=`${Spicetify.SVGIcons["heart-active"]}`,f.classList.add("button-active")):(f.innerHTML=`${Spicetify.SVGIcons.heart}`,f.classList.remove("button-active"))},200)}function pe(){Pe.fadeAnimation(b),b.classList.contains("button-active")?b.innerHTML=_e.INVERT_ACTIVE:b.innerHTML=_e.INVERT_INACTIVE,b.classList.toggle("button-active"),getComputedStyle(l).getPropertyValue("--main-color").startsWith("0")?(l.style.setProperty("--main-color","255,255,255"),l.style.setProperty("--contrast-color","0,0,0"),Re.getGlobal("tvMode")||"album_art"!==Re.get("backgroundChoice")||(a[Spicetify.Player.data.item?.metadata?.album_uri?.split(":")[2]]=!1)):(l.style.setProperty("--main-color","0,0,0"),l.style.setProperty("--contrast-color","255,255,255"),Re.getGlobal("tvMode")||"album_art"!==Re.get("backgroundChoice")||(a[Spicetify.Player.data.item?.metadata?.album_uri?.split(":")[2]]=!0)),localStorage.setItem("full-screen:inverted",JSON.stringify(a))}let ge,me,fe,he;function ye(){ge&&clearTimeout(ge),l.style.cursor="default",ge=setTimeout(()=>l.style.cursor="none",2e3)}function be(){me&&clearTimeout(me),j.style.opacity="1",me=setTimeout(()=>j.style.opacity="0",3e3)}function ve(){fe&&clearTimeout(fe);const e=l.querySelectorAll(".extra-controls");e.forEach(e=>e.style.opacity="1"),fe=setTimeout(()=>{e.forEach(e=>e.style.opacity="0")},3e3)}function ke(){he&&clearTimeout(he);const e=l.querySelector(".fsd-controls-center");e.style.opacity="1",he=setTimeout(()=>e.style.opacity="0",3e3)}function xe(){l.removeEventListener("mousemove",ye),l.removeEventListener("mousemove",be),l.removeEventListener("mousemove",ve),l.removeEventListener("mousemove",ke),ge&&clearTimeout(ge),me&&clearTimeout(me),fe&&clearTimeout(fe),he&&clearTimeout(he)}let we;const Se=new MutationObserver(ue);async function E(){document.body.classList.add(...Be),Re.get("enableFullscreen")?await Pe.fullScreenOn()?.catch(e=>{}):await Pe.fullScreenOff()?.catch(e=>{}),setTimeout(()=>{ie(),window.addEventListener("resize",re),re(),l.querySelectorAll(".fsd-song-meta span").forEach(e=>{e.onclick=e=>{te(e.target?.getAttribute("uri")??"")}})},200),Spicetify.Player.addEventListener("songchange",ie),l.addEventListener("mousemove",ye),ye(),"mousemove"===Re.get("contextDisplay")&&(l.addEventListener("mousemove",be),be()),"mousemove"===Re.get("extraControls")&&(l.addEventListener("mousemove",ve),ve()),"mousemove"===Re.get("playerControls")&&(l.addEventListener("mousemove",ke),ke()),l.querySelector("#fsd-foreground").oncontextmenu=N,l.querySelector("#fsd-foreground").ondblclick=I,c.oncontextmenu=N,c.ondblclick=I,Re.get("upnextDisplay")&&(ee(),Spicetify.Platform.PlayerAPI._events.addListener("queue_update",C),Spicetify.Platform.PlayerAPI._events.addListener("update",ee)),"never"!==Re.get("volumeDisplay")&&Ee.default.render(Ie.default.createElement(Ke,{state:Re.get("volumeDisplay")}),l.querySelector("#fsd-volume-parent")),Re.get("enableFade")?$.classList.add("fsd-background-fade"):$.classList.remove("fsd-background-fade"),Re.get("icons")&&(oe({data:{is_paused:!Spicetify.Player.isPlaying()}}),Spicetify.Player.addEventListener("onplaypause",oe)),"never"!==Re.get("progressBarDisplay")&&Ee.default.render(Ie.default.createElement(Xe,{state:Re.get("progressBarDisplay")}),l.querySelector("#fsd-progress-parent")),"never"!==Re.get("playerControls")&&(se({data:{is_paused:!Spicetify.Player.isPlaying()}}),Spicetify.Player.addEventListener("onplaypause",se)),"never"!==Re.get("extraControls")&&(ce(null),Pe.addObserver(Se,".control-button-heart",{attributes:!0,attributeFilter:["aria-checked"]}),Spicetify.Platform.PlayerAPI._events.addListener("update",ce)),document.querySelector(".Root__top-container")?.append(O,l),Re.get("lyricsDisplay")&&(window.addEventListener("lyrics-plus-update",T),"/lyrics-plus"!==(we=Spicetify.Platform.History.location.pathname)&&Spicetify.Platform.History.push("/lyrics-plus"),window.dispatchEvent(new Event("fad-request"))),Spicetify.Mousetrap.bind("f11",Ae),Spicetify.Mousetrap.bind("esc",I),Re.get("lyricsDisplay")&&Spicetify.Mousetrap.bind("l",J)}async function I(){qe(!1),Spicetify.Player.removeEventListener("songchange",ie),xe(),window.removeEventListener("resize",re),Re.get("upnextDisplay")&&(w=!1,Spicetify.Platform.PlayerAPI._events.removeListener("queue_update",C),Spicetify.Platform.PlayerAPI._events.removeListener("update",ee)),Ee.default.unmountComponentAtNode(l.querySelector("#fsd-volume-parent")),Ee.default.unmountComponentAtNode(l.querySelector("#fsd-progress-parent")),Re.get("icons")&&Spicetify.Player.removeEventListener("onplaypause",oe),"never"!==Re.get("playerControls")&&Spicetify.Player.removeEventListener("onplaypause",se),"never"!==Re.get("extraControls")&&(Se.disconnect(),Spicetify.Platform.PlayerAPI._events.removeListener("update",ce)),document.body.classList.remove(...Be),w=!1,Re.get("enableFullscreen")&&await Pe.fullScreenOff()?.catch(e=>{});var e=document.querySelector("body > generic-modal");e&&e.remove(),O.remove(),l.remove(),Re.get("lyricsDisplay")&&(window.removeEventListener("lyrics-plus-update",T),"/lyrics-plus"!==we&&Pe.revertPathHistory(we),window.dispatchEvent(new Event("fad-request"))),Spicetify.Mousetrap.unbind("f11"),Spicetify.Mousetrap.unbind("esc"),Spicetify.Mousetrap.unbind("l")}function Ae(){Re.get("enableFullscreen")?Re.set("enableFullscreen",!1):Re.set("enableFullscreen",!0),x(),E()}function L(e,t){Re.set(e,t),x(),Pe.isModeActivated()&&E()}function _(e,t){Re.setGlobal(e,t),s=Re.getGlobal("locale"),x(),Pe.isModeActivated()&&E()}function M(e,t,i,n,a,r=""){e=Ye(` ${Object.keys(t).map(e=>``).join("\n")} - `,e,n,r),r=e.querySelector("select");return i in t||(n in Le[Re.getMode()]?L(n,i=Le[Re.getMode()][n]):n in Le&&_(n,i=Le[n])),r.value=i.toString(),r.onchange=e=>{a((e?.target).value)},e}function R(e,t,i=e=>L(t,e),n=""){e=Ye(``,e,t,a),e=i.querySelector("input");return e&&(t in Re?e.value=Ne.getGlobal(t):e.value=Ne.get(t),e.oninput=e=>n(e?.target?.value)),i}let Le,P;function D(e=null){e?.preventDefault(),(Le=document.createElement("div")).id="full-screen-config-container";var e=document.createElement("style");e.innerHTML=` .GenericModal ::-webkit-scrollbar{ width: 7px; } @@ -245,24 +248,24 @@ ${Re.get("lyricsDisplay")?'
    ':""} .transparent-bg { background-color: rgba(0, 0, 0, 0); } -`,Ce.append(e,Pe.isModeActivated()?((e=document.createElement("div")).innerHTML=` +`,Le.append(e,ze.isModeActivated()?((e=document.createElement("div")).innerHTML=`
    - + -
    `,e.querySelector("#mode-exit").onclick=I,e.querySelector("#mode-switch").onclick=()=>{(Re.getGlobal("tvMode")?i:t)(),document.querySelector("body > generic-modal")?.remove()},e):"",Ne(ze[s].settings.pluginSettings),M(ze[s].settings.language,Pe.getAvailableLanguages(ze),Re.getGlobal("locale"),"locale",e=>{_("locale",e),document.querySelector("body > generic-modal")?.remove(),N()}),R(ze[s].settings.fsHideOriginal,"fsHideOriginal",e=>{_("fsHideOriginal",e),location.reload()},ze[s].settings.fsHideOriginalDescription),M(ze[s].settings.autoLaunch.setting,{never:ze[s].settings.autoLaunch.never,default:ze[s].settings.autoLaunch.default,tvmode:ze[s].settings.autoLaunch.tvmode,lastused:ze[s].settings.autoLaunch.lastused},Re.getGlobal("autoLaunch"),"autoLaunch",e=>{_("autoLaunch",e)},ze[s].settings.autoLaunch.description),M(ze[s].settings.activationTypes.setting,{both:ze[s].settings.activationTypes.both,btns:ze[s].settings.activationTypes.btns,keys:ze[s].settings.activationTypes.keys},Re.getGlobal("activationTypes"),"activationTypes",e=>{_("activationTypes",e),location.reload()},ze[s].settings.activationTypes.description),M(ze[s].settings.buttonActivation.setting,{both:ze[s].settings.buttonActivation.both,tv:ze[s].settings.buttonActivation.tv,def:ze[s].settings.buttonActivation.def},Re.getGlobal("buttonActivation"),"buttonActivation",e=>{_("buttonActivation",e),location.reload()},ze[s].settings.buttonActivation.description),M(ze[s].settings.keyActivation.setting,{both:ze[s].settings.keyActivation.both,tv:ze[s].settings.keyActivation.tv,def:ze[s].settings.keyActivation.def},Re.getGlobal("keyActivation"),"keyActivation",e=>{_("keyActivation",e),location.reload()},ze[s].settings.keyActivation.description),Ne(ze[s].settings.lyricsHeader),R(ze[s].settings.lyrics,"lyricsDisplay",e=>{L("lyricsDisplay",e),l.classList.remove("lyrics-unavailable")},ze[s].settings.lyricsDescription.join("
    ")),R(ze[s].settings.autoHideLyrics,"autoHideLyrics"),M(ze[s].settings.lyricsAlignment.setting,{left:ze[s].settings.lyricsAlignment.left,center:ze[s].settings.lyricsAlignment.center,right:ze[s].settings.lyricsAlignment.right},Re.get("lyricsAlignment"),"lyricsAlignment",e=>L("lyricsAlignment",e)),De(ze[s].settings.lyricsAnimationTempo,"animationTempo","s",Re.get("animationTempo"),.1,0,1,e=>{Re.set("animationTempo",Number(e)),x(),Pe.isModeActivated()&&E()}),Ne(ze[s].settings.generalHeader),M(ze[s].settings.progressBar,{never:ze[s].settings.contextDisplay.never,mousemove:ze[s].settings.contextDisplay.mouse,always:ze[s].settings.contextDisplay.always},Re.get("progressBarDisplay"),"progressBarDisplay",e=>{Re.set("progressBarDisplay",e),"never"!==e?Ee.default.render(Ie.default.createElement(Xe,{state:e}),l.querySelector("#fsd-progress-parent")):Ee.default.unmountComponentAtNode(l.querySelector("#fsd-progress-parent"))}),M(ze[s].settings.playerControls,{never:ze[s].settings.contextDisplay.never,mousemove:ze[s].settings.contextDisplay.mouse,always:ze[s].settings.contextDisplay.always},Re.get("playerControls"),"playerControls",e=>L("playerControls",e)),M(ze[s].settings.showAlbum.setting,{never:ze[s].settings.showAlbum.never,always:ze[s].settings.showAlbum.always,date:ze[s].settings.showAlbum.date},Re.get("showAlbum"),"showAlbum",e=>L("showAlbum",e)),R(ze[s].settings.icons,"icons"),R(ze[s].settings.showAllArtists,"showAllArtists"),R(ze[s].settings.trimTitle,"trimTitle"),R(ze[s].settings.songChangeAnimation,"enableFade"),document.fullscreenEnabled?R(ze[s].settings.fullscreen,"enableFullscreen"):"",Ne(ze[s].settings.extraHeader),M(ze[s].settings.extraControls,{never:ze[s].settings.contextDisplay.never,mousemove:ze[s].settings.contextDisplay.mouse,always:ze[s].settings.contextDisplay.always},Re.get("extraControls"),"extraControls",e=>L("extraControls",e)),R(ze[s].settings.upnextDisplay,"upnextDisplay"),M(ze[s].settings.contextDisplay.setting,{never:ze[s].settings.contextDisplay.never,mousemove:ze[s].settings.contextDisplay.mouse,always:ze[s].settings.contextDisplay.always},Re.get("contextDisplay"),"contextDisplay",e=>L("contextDisplay",e)),M(ze[s].settings.volumeDisplay.setting,{always:ze[s].settings.volumeDisplay.always,never:ze[s].settings.volumeDisplay.never,smart:ze[s].settings.volumeDisplay.smart},Re.get("volumeDisplay"),"volumeDisplay",e=>{Re.set("volumeDisplay",e),"never"!==e?Ee.default.render(Ie.default.createElement(Ke,{state:e}),l.querySelector("#fsd-volume-parent")):Ee.default.unmountComponentAtNode(l.querySelector("#fsd-volume-parent"))},ze[s].settings.volumeDisplay.description.join("\n")),Ne(ze[s].settings.backgroundHeader,ze[s].settings.backgroundSubHeader),M(ze[s].settings.backgroundChoice.setting,{album_art:ze[s].settings.backgroundChoice.artwork,animated_album:ze[s].settings.backgroundChoice.animatedArt,dynamic_color:ze[s].settings.backgroundChoice.dynamicColor,static_color:ze[s].settings.backgroundChoice.staticColor,artist_art:ze[s].settings.backgroundChoice.artist},Re.get("backgroundChoice"),"backgroundChoice",e=>{Re.set("backgroundChoice",e),Pe.isModeActivated()&&S(Spicetify.Player.data.item?.metadata)},ze[s].settings.backgroundChoice.description.join("
    ")),De(ze[s].settings.animationSpeed,"animationSpeed","%",100*Re.get("animationSpeed"),5,5,150,e=>{Re.set("animationSpeed",Number(e)/100),e=Number(e)/100,Fe=e}),De(ze[s].settings.backAnimationTime,"backAnimationTime","s",Re.get("backAnimationTime"),.1,0,5,e=>{Re.set("backAnimationTime",Number(e)),l.style.setProperty("--fs-transition",e+"s")}),M(ze[s].settings.backgroundColor.setting,{VIBRANT:ze[s].settings.backgroundColor.vibrant,PROMINENT:ze[s].settings.backgroundColor.prominent,DESATURATED:ze[s].settings.backgroundColor.desaturated,LIGHT_VIBRANT:ze[s].settings.backgroundColor.lightVibrant,DARK_VIBRANT:ze[s].settings.backgroundColor.darkVibrant,VIBRANT_NON_ALARMING:ze[s].settings.backgroundColor.vibrantNonAlarming},Re.get("coloredBackChoice"),"coloredBackChoice",e=>{Re.set("coloredBackChoice",e),Pe.isModeActivated()&&S(Spicetify.Player.data.item?.metadata,!0)}),Te(ze[s].settings.staticColor,"staticBackChoice","color",e=>{Re.set("staticBackChoice",e),"static_color"===Re.get("backgroundChoice")&&Pe.isModeActivated()&&(Pe.overlayBack(),He(e,c,!0),A(Spicetify.Player.data.item?.uri,Spicetify.Player.data.item?.metadata),P&&clearTimeout(P),P=setTimeout(()=>{Pe.overlayBack(!1)},1500))}),De(ze[s].settings.backgroundBlur,"blurSize","px",Re.get("blurSize"),4,0,100,e=>{Re.set("blurSize",Number(e)),Pe.isModeActivated()&&(Pe.overlayBack(),S(Spicetify.Player.data.item?.metadata,!0),P&&clearTimeout(P),P=setTimeout(()=>{Pe.overlayBack(!1)},2e3))}),M(ze[s].settings.backgroundBrightness,{0:"0%",.1:"10%",.2:"20%",.3:"30%",.4:"40%",.5:"50%",.6:"60%",.7:"70%",.8:"80%",.9:"90%",1:"100%"},Re.get("backgroundBrightness"),"backgroundBrightness",e=>{Re.set("backgroundBrightness",e),Pe.isModeActivated()&&S(Spicetify.Player.data.item?.metadata,!0)}),Ne(ze[s].settings.appearanceHeader,ze[s].settings.appearanceSubHeader),R(ze[s].settings.themedButtons,"themedButtons"),R(ze[s].settings.themedIcons,"themedIcons"),M(ze[s].settings.invertColors.setting,{never:ze[s].settings.invertColors.never,always:ze[s].settings.invertColors.always,auto:ze[s].settings.invertColors.auto},Re.get("invertColors"),"invertColors",e=>L("invertColors",e)),R(ze[s].settings.verticalMonitorSupport,"verticalMonitorSupport",e=>L("verticalMonitorSupport",e),ze[s].settings.verticalMonitorSupportDescription),R(ze[s].settings.trimTitleUpNext,"trimTitleUpNext"),M(ze[s].settings.upnextScroll.setting,{mq:ze[s].settings.upnextScroll.mq,sp:ze[s].settings.upnextScroll.sp},Re.get("upNextAnim"),"upNextAnim",e=>L("upNextAnim",e)),De(ze[s].settings.upnextTime,"upnextTimeToShow","s",Re.get("upnextTimeToShow"),1,5,60,e=>{Re.set("upnextTimeToShow",Number(e)),ee()}),Ne(ze[s].settings.aboutHeader),((e=document.createElement("div")).classList.add("setting-card"),e.innerHTML=` +
    `,e.querySelector("#mode-exit").onclick=I,e.querySelector("#mode-switch").onclick=()=>{(Ne.getGlobal("tvMode")?i:t)(),document.querySelector("body > generic-modal")?.remove()},e):"",Be($e[s].settings.pluginSettings),M($e[s].settings.language,ze.getAvailableLanguages($e),Ne.getGlobal("locale"),"locale",e=>{_("locale",e),document.querySelector("body > generic-modal")?.remove(),D()}),R($e[s].settings.fsHideOriginal,"fsHideOriginal",e=>{_("fsHideOriginal",e),location.reload()},$e[s].settings.fsHideOriginalDescription),M($e[s].settings.autoLaunch.setting,{never:$e[s].settings.autoLaunch.never,default:$e[s].settings.autoLaunch.default,tvmode:$e[s].settings.autoLaunch.tvmode,lastused:$e[s].settings.autoLaunch.lastused},Ne.getGlobal("autoLaunch"),"autoLaunch",e=>{_("autoLaunch",e)},$e[s].settings.autoLaunch.description),M($e[s].settings.activationTypes.setting,{both:$e[s].settings.activationTypes.both,btns:$e[s].settings.activationTypes.btns,keys:$e[s].settings.activationTypes.keys},Ne.getGlobal("activationTypes"),"activationTypes",e=>{_("activationTypes",e),location.reload()},$e[s].settings.activationTypes.description),M($e[s].settings.buttonActivation.setting,{both:$e[s].settings.buttonActivation.both,tv:$e[s].settings.buttonActivation.tv,def:$e[s].settings.buttonActivation.def},Ne.getGlobal("buttonActivation"),"buttonActivation",e=>{_("buttonActivation",e),location.reload()},$e[s].settings.buttonActivation.description),M($e[s].settings.keyActivation.setting,{both:$e[s].settings.keyActivation.both,tv:$e[s].settings.keyActivation.tv,def:$e[s].settings.keyActivation.def},Ne.getGlobal("keyActivation"),"keyActivation",e=>{_("keyActivation",e),location.reload()},$e[s].settings.keyActivation.description),Be($e[s].settings.lyricsHeader),R($e[s].settings.lyrics,"lyricsDisplay",e=>{L("lyricsDisplay",e),l.classList.remove("lyrics-unavailable")},$e[s].settings.lyricsDescription.join("
    ")),R($e[s].settings.autoHideLyrics,"autoHideLyrics"),M($e[s].settings.lyricsAlignment.setting,{left:$e[s].settings.lyricsAlignment.left,center:$e[s].settings.lyricsAlignment.center,right:$e[s].settings.lyricsAlignment.right},Ne.get("lyricsAlignment"),"lyricsAlignment",e=>L("lyricsAlignment",e)),Oe($e[s].settings.lyricsAnimationTempo,"animationTempo","s",Ne.get("animationTempo"),.1,0,1,e=>{Ne.set("animationTempo",Number(e)),x(),ze.isModeActivated()&&E()}),Be($e[s].settings.generalHeader),M($e[s].settings.progressBar,{never:$e[s].settings.contextDisplay.never,mousemove:$e[s].settings.contextDisplay.mouse,always:$e[s].settings.contextDisplay.always},Ne.get("progressBarDisplay"),"progressBarDisplay",e=>{Ne.set("progressBarDisplay",e),"never"!==e?_e.default.render(Me.default.createElement(Qe,{state:e}),l.querySelector("#fsd-progress-parent")):_e.default.unmountComponentAtNode(l.querySelector("#fsd-progress-parent"))}),M($e[s].settings.playerControls,{never:$e[s].settings.contextDisplay.never,mousemove:$e[s].settings.contextDisplay.mouse,always:$e[s].settings.contextDisplay.always},Ne.get("playerControls"),"playerControls",e=>L("playerControls",e)),M($e[s].settings.showAlbum.setting,{never:$e[s].settings.showAlbum.never,always:$e[s].settings.showAlbum.always,date:$e[s].settings.showAlbum.date},Ne.get("showAlbum"),"showAlbum",e=>L("showAlbum",e)),R($e[s].settings.icons,"icons"),R($e[s].settings.showAllArtists,"showAllArtists"),R($e[s].settings.trimTitle,"trimTitle"),R($e[s].settings.songChangeAnimation,"enableFade"),document.fullscreenEnabled?R($e[s].settings.fullscreen,"enableFullscreen"):"",Be($e[s].settings.extraHeader),M($e[s].settings.extraControls,{never:$e[s].settings.contextDisplay.never,mousemove:$e[s].settings.contextDisplay.mouse,always:$e[s].settings.contextDisplay.always},Ne.get("extraControls"),"extraControls",e=>L("extraControls",e)),R($e[s].settings.upnextDisplay,"upnextDisplay"),M($e[s].settings.contextDisplay.setting,{never:$e[s].settings.contextDisplay.never,mousemove:$e[s].settings.contextDisplay.mouse,always:$e[s].settings.contextDisplay.always},Ne.get("contextDisplay"),"contextDisplay",e=>L("contextDisplay",e)),M($e[s].settings.volumeDisplay.setting,{always:$e[s].settings.volumeDisplay.always,never:$e[s].settings.volumeDisplay.never,smart:$e[s].settings.volumeDisplay.smart},Ne.get("volumeDisplay"),"volumeDisplay",e=>{Ne.set("volumeDisplay",e),"never"!==e?_e.default.render(Me.default.createElement(Je,{state:e}),l.querySelector("#fsd-volume-parent")):_e.default.unmountComponentAtNode(l.querySelector("#fsd-volume-parent"))},$e[s].settings.volumeDisplay.description.join("\n")),Be($e[s].settings.backgroundHeader,$e[s].settings.backgroundSubHeader),M($e[s].settings.backgroundChoice.setting,{album_art:$e[s].settings.backgroundChoice.artwork,animated_album:$e[s].settings.backgroundChoice.animatedArt,dynamic_color:$e[s].settings.backgroundChoice.dynamicColor,static_color:$e[s].settings.backgroundChoice.staticColor,artist_art:$e[s].settings.backgroundChoice.artist},Ne.get("backgroundChoice"),"backgroundChoice",e=>{Ne.set("backgroundChoice",e),ze.isModeActivated()&&S(Spicetify.Player.data.item?.metadata)},$e[s].settings.backgroundChoice.description.join("
    ")),Oe($e[s].settings.animationSpeed,"animationSpeed","%",100*Ne.get("animationSpeed"),5,5,150,e=>{Ne.set("animationSpeed",Number(e)/100),e=Number(e)/100,Xe=e}),Oe($e[s].settings.backAnimationTime,"backAnimationTime","s",Ne.get("backAnimationTime"),.1,0,5,e=>{Ne.set("backAnimationTime",Number(e)),l.style.setProperty("--fs-transition",e+"s")}),M($e[s].settings.backgroundColor.setting,{VIBRANT:$e[s].settings.backgroundColor.vibrant,PROMINENT:$e[s].settings.backgroundColor.prominent,DESATURATED:$e[s].settings.backgroundColor.desaturated,LIGHT_VIBRANT:$e[s].settings.backgroundColor.lightVibrant,DARK_VIBRANT:$e[s].settings.backgroundColor.darkVibrant,VIBRANT_NON_ALARMING:$e[s].settings.backgroundColor.vibrantNonAlarming},Ne.get("coloredBackChoice"),"coloredBackChoice",e=>{Ne.set("coloredBackChoice",e),ze.isModeActivated()&&S(Spicetify.Player.data.item?.metadata,!0)}),Ie($e[s].settings.staticColor,"staticBackChoice","color",e=>{Ne.set("staticBackChoice",e),"static_color"===Ne.get("backgroundChoice")&&ze.isModeActivated()&&(ze.overlayBack(),Fe(e,c,!0),A(Spicetify.Player.data.item?.uri,Spicetify.Player.data.item?.metadata),P&&clearTimeout(P),P=setTimeout(()=>{ze.overlayBack(!1)},1500))}),Oe($e[s].settings.backgroundBlur,"blurSize","px",Ne.get("blurSize"),4,0,100,e=>{Ne.set("blurSize",Number(e)),ze.isModeActivated()&&(ze.overlayBack(),S(Spicetify.Player.data.item?.metadata,!0),P&&clearTimeout(P),P=setTimeout(()=>{ze.overlayBack(!1)},2e3))}),M($e[s].settings.backgroundBrightness,{0:"0%",.1:"10%",.2:"20%",.3:"30%",.4:"40%",.5:"50%",.6:"60%",.7:"70%",.8:"80%",.9:"90%",1:"100%"},Ne.get("backgroundBrightness"),"backgroundBrightness",e=>{Ne.set("backgroundBrightness",e),ze.isModeActivated()&&S(Spicetify.Player.data.item?.metadata,!0)}),Be($e[s].settings.appearanceHeader,$e[s].settings.appearanceSubHeader),R($e[s].settings.themedButtons,"themedButtons"),R($e[s].settings.themedIcons,"themedIcons"),M($e[s].settings.invertColors.setting,{never:$e[s].settings.invertColors.never,always:$e[s].settings.invertColors.always,auto:$e[s].settings.invertColors.auto},Ne.get("invertColors"),"invertColors",e=>L("invertColors",e)),R($e[s].settings.verticalMonitorSupport,"verticalMonitorSupport",e=>L("verticalMonitorSupport",e),$e[s].settings.verticalMonitorSupportDescription),R($e[s].settings.trimTitleUpNext,"trimTitleUpNext"),M($e[s].settings.upnextScroll.setting,{mq:$e[s].settings.upnextScroll.mq,sp:$e[s].settings.upnextScroll.sp},Ne.get("upNextAnim"),"upNextAnim",e=>L("upNextAnim",e)),Oe($e[s].settings.upnextTime,"upnextTimeToShow","s",Ne.get("upnextTimeToShow"),1,5,60,e=>{Ne.set("upnextTimeToShow",Number(e)),ie()}),Be($e[s].settings.aboutHeader),((e=document.createElement("div")).classList.add("setting-card"),e.innerHTML=`
    - `,e.querySelector("#changelog").onclick=()=>{var e=document.querySelector("body > generic-modal");e&&e.remove(),setTimeout(()=>Ue(!0),100)},e),((e=document.createElement("div")).innerHTML=` + `,e.querySelector("#changelog").onclick=()=>{var e=document.querySelector("body > generic-modal");e&&e.remove(),setTimeout(()=>Ke(!0),100)},e),((e=document.createElement("div")).innerHTML=`
    - - -
    `,e.querySelector("#reset-switch").onclick=()=>{Pe.isModeActivated()?(Re.resetSettings(),x(),E(),Ce="",setTimeout(N,5)):(Re.resetSettings(null,!0),location.reload())},e.querySelector("#reload-switch").onclick=()=>{location.reload()},e)),Spicetify.PopupModal.display({title:"tv"===Re.getMode()?ze[s].settings.tvModeConfig:ze[s].settings.fullscreenConfig,content:Ce})}var e,D=document.querySelector($e)?.childNodes[0];switch(!Re.getGlobal("fsHideOriginal")||!D.lastChild.classList.contains("control-button")&&"Full screen"!=D.lastChild?.title||D?.lastChild?.remove(),"keys"!=Re.getGlobal("activationTypes")&&("tv"!==Re.getGlobal("buttonActivation")&&((e=document.createElement("button")).classList.add("button","fsd-button","control-button","InvalidDropTarget"),e.id="fs-button",e.setAttribute("title",ze[s].fullscreenBtnDesc),e.innerHTML=_e.FULLSCREEN,e.onclick=i,e.oncontextmenu=e=>{e.preventDefault(),Re.setMode("def"),N()},D?.append(e)),"def"!==Re.getGlobal("buttonActivation"))&&((D=document.createElement("button")).classList.add("button","tm-button","main-topBar-button","InvalidDropTarget"),D.innerHTML=_e.TV_MODE,D.id="TV-button",D.setAttribute("title",ze[s].tvBtnDesc),D.onclick=t,document.querySelector(Oe)?.append(D),D.oncontextmenu=e=>{e.preventDefault(),Re.setMode("tv"),N()}),x(),Re.getGlobal("autoLaunch")){case"default":i();break;case"tvmode":t();break;case"lastused":(Re.getGlobal("tvMode")?t:i)()}};(async()=>{await ke()})()})();(async()=>{var e;document.getElementById("fullScreen")||((e=document.createElement("style")).id="fullScreen",e.textContent=String.raw` - #fsd-progress-container{width:100%;display:flex;align-items:center;transition:opacity 1s ease-in-out}#fsd-progress-container #fsd-progress-bar{width:100%;height:6px;border-radius:4px;background:rgba(var(--main-color),.35);cursor:pointer;margin:10px auto;display:flex;align-items:center}#fsd-progress-container #fsd-progress-bar.dragging #fsd-progress-bar-inner,#fsd-progress-container #fsd-progress-bar.dragging #progress-thumb,#fsd-progress-container #fsd-progress-bar:hover #fsd-progress-bar-inner,#fsd-progress-container #fsd-progress-bar:hover #progress-thumb{background:var(--theme-main-color);filter:saturate(1.5) contrast(1.5)}#fsd-progress-container #fsd-progress-bar.dragging #progress-thumb,#fsd-progress-container #fsd-progress-bar:hover #progress-thumb{display:block}#fsd-progress-container #fsd-progress-bar.dragging #progress-thumb{transform:scale(1.4)}#fsd-progress-container #fsd-progress-bar-inner{height:100%;border-radius:4px;background:var(--primary-color)}#fsd-progress-container #progress-thumb{width:12px;height:12px;border-radius:50%;background:var(--primary-color);float:right;position:relative;left:7px;top:-3px;display:none;pointer-events:none}#fsd-progress-container .progress-number{min-width:40px;text-align:center}#fsd-progress-container #fsd-elapsed{margin-right:12px}#fsd-progress-container #fsd-duration{margin-left:12px}#fsd-volume-container{position:fixed;text-align:center;background-color:transparent;color:var(--primary-color);float:left;top:30%;left:30px;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:50;height:250px;max-height:33vh;transition:transform .6s var(--transition-function)}#fsd-volume-container.v-hidden{transform:translateX(-100px) scale(.1)}#fsd-volume-container.dragging,#fsd-volume-container:hover{transform:translateX(0) scale(1)}#fsd-volume-container #fsd-volume{width:50px;font-size:18px}#fsd-volume-container #fsd-volume-bar{margin:8px 0;border-radius:4px;background-color:rgba(var(--main-color),.35);width:8px;height:100%;display:flex;align-items:end}#fsd-volume-container #fsd-volume-bar.dragging #fsd-volume-bar-inner,#fsd-volume-container #fsd-volume-bar.dragging #volume-thumb,#fsd-volume-container #fsd-volume-bar:hover #fsd-volume-bar-inner,#fsd-volume-container #fsd-volume-bar:hover #volume-thumb{background:var(--theme-main-color);filter:saturate(1.5) contrast(1.5);transition:none}#fsd-volume-container #fsd-volume-bar.dragging #volume-thumb,#fsd-volume-container #fsd-volume-bar:hover #volume-thumb{display:block}#fsd-volume-container #fsd-volume-bar.dragging #volume-thumb{transform:scale(1.1)}#fsd-volume-container #fsd-volume-bar-inner{width:100%;border-radius:4px;background-color:var(--primary-color);pointer-events:none;transition:height .1s var(--transition-function)}#fsd-volume-container #fsd-volume-icon svg{fill:var(--primary-color)!important}#fsd-volume-container #volume-thumb{width:13px;height:13px;border-radius:50%;background:var(--primary-color);position:relative;left:-2px;top:-5px;display:none;pointer-events:none}#fsd-volume-container.unavailable #fsd-volume-bar{pointer-events:none}#fsd-volume-container.unavailable #fsd-volume-bar-inner{height:100%;background-color:var(--tertiary-color)}#full-screen-display{display:none;z-index:100;position:fixed;width:100%;height:100%;cursor:default;left:0;top:0;--transition-duration:0.8s;--transition-function:ease-in-out;--main-color:255,255,255;--contrast-color:0,0,0;--primary-color:rgba(var(--main-color), 1);--secondary-color:rgba(var(--main-color), 0.7);--tertiary-color:rgba(var(--main-color), 0.5);--theme-color:175,175,175;--theme-background-color:rgba(175, 175, 175, 0.6);--theme-hover-color:rgba(175, 175, 175, 0.3);--theme-main-color:rgba(var(--theme-color), 1)}#full-screen-display.themed-buttons{--theme-background-color:rgba(var(--theme-color), 0.6);--theme-hover-color:rgba(var(--theme-color), 0.3)}#full-screen-display #fsd-album svg,#full-screen-display #fsd-artist svg,#full-screen-display #fsd-title svg{transition:all var(--transition-duration) var(--transition-function);display:var(--icons-display)}#full-screen-display .fsd-artist-list span:hover,#full-screen-display .fsd-song-meta span:hover{cursor:pointer;text-decoration:underline}#full-screen-display .unavailable{color:var(--tertiary-color)!important;pointer-events:none!important;opacity:.5!important;background:0 0!important}@keyframes fadeUp{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeDo{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeRi{0%{opacity:0;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeLe{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}#full-screen-display .fade-do{animation:fadeDo .5s cubic-bezier(.3,0,0,1)}#full-screen-display .fade-up{animation:fadeUp .5s cubic-bezier(.3,0,0,1)}#full-screen-display .fade-ri{animation:fadeRi .5s cubic-bezier(.3,0,0,1)}#full-screen-display .fade-le{animation:fadeLe .5s cubic-bezier(.3,0,0,1)}#full-screen-display button.dot-after{padding-bottom:3px!important}#full-screen-display .dot-after:after{background-color:currentColor;border-radius:50%;bottom:3px;content:"";display:block;height:4px;left:50%;position:absolute;transform:translateX(-50%);width:4px}#full-screen-display #fsd-ctx-container{background-color:transparent;color:var(--secondary-color);position:fixed;float:left;top:30px;left:50px;display:flex;flex-direction:row;justify-content:center;align-items:center;text-align:left;z-index:50;transition:all 1s ease-in-out;opacity:1;max-width:40%}#full-screen-display #fsd-ctx-details{padding-left:18px;line-height:initial;font-size:18px;overflow:hidden}#full-screen-display #fsd-ctx-icon{width:48px;height:48px}#full-screen-display #fsd-progress-container{--theme-main-color:rgba(var(--main-color), 1)}#full-screen-display.themed-buttons #fsd-progress-container,#full-screen-display.themed-icons #fsd-progress-container{--theme-main-color:rgba(var(--theme-color), 1)}#full-screen-display #fsd-ctx-icon svg{fill:var(--primary-color)!important}#full-screen-display #fsd-ctx-source{text-transform:uppercase}#full-screen-display #fsd-ctx-name{font-weight:700;font-size:20px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}#full-screen-display .ctx-no-name{padding-bottom:2px;font-size:24px;font-weight:600}#full-screen-display #fsd-upnext-container{float:right;width:472px;height:102px;max-width:45%;position:fixed;top:45px;right:60px;display:flex;border:1px solid rgba(130,130,130,.7);border-radius:10px;background-color:#141414;flex-direction:row;text-align:left;z-index:50;transition:transform .8s ease-in-out;transform:translateX(600px)}#full-screen-display #fsd_next_art_image{background-size:cover;background-position:center;width:100px;height:100px;border-radius:9px 0 0 9px}#full-screen-display #fsd_next_details{padding-left:18px;padding-top:17px;line-height:initial;width:calc(100% - 115px);color:#fff;font-size:19px;overflow:hidden}#full-screen-display #fsd_next_tit_art{padding-top:9px;font-size:22px;font-weight:700;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes fsd_cssmarquee{0%{transform:translateX(0)}18%{transform:translateX(0)}100%{transform:translateX(var(--translate_width_fsd))}}@keyframes fsd_translate{0%,10%{transform:translateX(0)}50%,55%{transform:translateX(var(--translate_width_fsd))}100%{transform:translateX(0)}}#full-screen-display #fad-lyrics-plus-container{transition:transform var(--transition-duration) var(--transition-function);position:absolute;right:-50px;width:50%;top:7.5vh}#full-screen-display #fad-lyrics-plus-container .lyrics-lyricsContainer-LyricsContainer{--lyrics-color-active:var(--primary-color)!important;--lyrics-color-inactive:var(--tertiary-color)!important;--lyrics-highlight-background:rgba(var(--contrast-color), 0.7)!important;--lyrics-align-text:var(--lyrics-alignment)!important;--animation-tempo:var(--lyrics-animation-tempo)!important;height:85vh!important}#full-screen-display #fad-lyrics-plus-container .lyrics-config-button{margin-right:20px}#full-screen-display.lyrics-hide-force #fad-lyrics-plus-container,#full-screen-display.lyrics-unavailable #fad-lyrics-plus-container{transform:translateX(1000px) scale3d(.1,.1,.1) rotate(45deg)}#full-screen-display #fsd-foreground{position:relative;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--primary-color);transition:all var(--transition-duration) var(--transition-function)}#full-screen-display #fsd-art-image{position:relative;width:100%;height:100%;padding-bottom:100%;border-radius:8px;background-size:cover}#full-screen-display #fsd-art-inner{position:absolute;left:3%;bottom:0;width:94%;height:94%;z-index:-1;box-shadow:0 4px 12px rgba(0,0,0,.6)!important;transform:translateZ(0)}#full-screen-display #fsd-artist{font-weight:500;color:var(--secondary-color)}#full-screen-display #fsd-album{font-weight:400;color:var(--tertiary-color)}#full-screen-display .fsd-controls{display:flex;flex-direction:row;transition:opacity 1s ease-in-out;-moz-column-gap:10px;column-gap:10px}#full-screen-display #fsd-background{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:-2}#full-screen-display #fsd-background.animated{transform:scale(3,3.5);transform-origin:left top}#full-screen-display .fs-button{background:0 0;border:0;border-radius:8px;color:var(--primary-color);padding:3px 5px 0 5px;cursor:pointer;position:relative;transition:all .3s var(--transition-function),transform .1s var(--transition-function)}#full-screen-display .fs-button:hover{transform:scale(1.2);filter:saturate(1.5) contrast(1.5)!important;background:var(--theme-hover-color)}#full-screen-display .fs-button.button-active{background:var(--theme-background-color)!important;filter:saturate(1.5) contrast(1.5)!important}#full-screen-display #fsd-foreground svg{fill:var(--primary-color);transition:all .3s var(--transition-function)}#full-screen-display.themed-icons #fsd-foreground svg{fill:var(--theme-main-color);filter:saturate(1.5) contrast(1.5)}#full-screen-display.themed-icons.themed-buttons .fs-button.button-active svg{fill:var(--primary-color)!important}#full-screen-display .fsd-background-fade{transition:background-image var(--fs-transition) linear}body.fsd-activated #full-screen-display{display:block}.fsd-activated .Root__main-view,.fsd-activated .Root__nav-bar,.fsd-activated .Root__now-playing-bar,.fsd-activated .Root__top-bar{visibility:hidden;display:none}.fsd-activated .Root__main-view-overlay{z-index:1000}#full-screen-display[mode=tv] #fsd-foreground{flex-direction:row;text-align:left;justify-content:left;align-items:flex-end;position:absolute;top:auto;bottom:75px}#full-screen-display[mode=tv] #fad-lyrics-plus-container{width:45%}#full-screen-display[mode=tv].lyrics-active #fsd-foreground{width:-moz-max-content;width:max-content;max-width:60%}#full-screen-display[mode=tv] #fsd-art{width:calc(100vw - 840px);min-width:180px;max-width:220px;margin-left:65px}#full-screen-display[mode=tv] #fsd-progress-parent{width:100%;max-width:450px}#full-screen-display[mode=tv] .fsd-controls+#fsd-progress-parent{padding-left:10px}#full-screen-display[mode=tv] #fsd-details{padding-left:30px;line-height:initial;width:80%;color:var(--primary-color)}#full-screen-display[mode=tv] #fsd-album,#full-screen-display[mode=tv] #fsd-artist,#full-screen-display[mode=tv] #fsd-title{display:flex;justify-content:flex-start;align-items:baseline;gap:5px}#full-screen-display[mode=tv] #fsd-album span,#full-screen-display[mode=tv] #fsd-artist>span,#full-screen-display[mode=tv] #fsd-title span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}#full-screen-display[mode=tv] #fsd-title span{-webkit-line-clamp:3}#full-screen-display[mode=tv] #fsd-album svg,#full-screen-display[mode=tv] #fsd-artist svg,#full-screen-display[mode=tv] #fsd-title svg{flex:0 0 auto}#full-screen-display[mode=tv] #fsd-title{font-size:62px;font-weight:900}@media (max-width:900px),(max-height:800px){#full-screen-display[mode=tv] #fsd-title{font-size:40px;font-weight:600}#full-screen-display[mode=tv] #fsd-album,#full-screen-display[mode=tv] #fsd-artist{font-size:20px}}#full-screen-display[mode=tv] #fsd-album,#full-screen-display[mode=tv] #fsd-artist{font-size:28px}#full-screen-display[mode=tv] #fsd-title svg{width:35px;height:45px}#full-screen-display[mode=tv] #playing-icon{width:30px!important;height:40px!important;margin-right:5px}#full-screen-display[mode=tv] #fsd-album svg,#full-screen-display[mode=tv] #fsd-artist svg{margin-right:15px;width:22px;height:22px}#full-screen-display[mode=tv] #fsd-status{display:flex;flex-direction:row;min-width:450px;max-width:450px;align-items:center;justify-content:space-between}#full-screen-display[mode=tv] #fsd-status.active{-moz-column-gap:10px;column-gap:10px;margin:10px 0}#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:600px;--fsd-items-max-width:580px;--fsd-title-size:50px;--fsd-sec-size:28px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:500px;--fsd-items-max-width:480px;--fsd-title-size:40px;--fsd-sec-size:23px}#full-screen-display[mode=def].vertical-mode.lyrics-active{--lyrics-alignment:center}#full-screen-display[mode=def].vertical-mode.lyrics-active #fsd-foreground{width:100%;height:50%;margin-top:20px}#full-screen-display[mode=def].vertical-mode.lyrics-active #fsd-foreground #fsd-art{--fsd-art-max-width:350px}#full-screen-display[mode=def].vertical-mode.lyrics-active #fad-lyrics-plus-container{right:0;left:0;width:100%;top:50%;height:50%}#full-screen-display[mode=def].vertical-mode.lyrics-active #fad-lyrics-plus-container .lyrics-lyricsContainer-LyricsContainer{height:95%!important}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable{--fsd-foreground-transform:0%}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force #fsd-foreground,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable #fsd-foreground{width:100%;height:100%}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force #fsd-foreground #fsd-art,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable #fsd-foreground #fsd-art{--fsd-art-max-width:400px}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force #fad-lyrics-plus-container,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable #fad-lyrics-plus-container{transform:translateY(1000px) scale3d(.1,.1,.1)}@media (max-width:1400px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:550px;--fsd-items-max-width:530px;--fsd-title-size:45px;--fsd-sec-size:26px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:450px;--fsd-items-max-width:430px;--fsd-title-size:38px;--fsd-sec-size:20px}}@media (max-width:1200px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:500px;--fsd-items-max-width:480px;--fsd-title-size:40px;--fsd-sec-size:23px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:400px;--fsd-items-max-width:380px;--fsd-title-size:38px;--fsd-sec-size:20px}}@media (max-width:992px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:450px;--fsd-items-max-width:430px;--fsd-title-size:38px;--fsd-sec-size:21px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:350px;--fsd-items-max-width:330px;--fsd-title-size:36px;--fsd-sec-size:20px}}@media (max-width:768px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:400px;--fsd-items-max-width:380px;--fsd-title-size:40px;--fsd-sec-size:23px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:300px;--fsd-items-max-width:280px;--fsd-title-size:36px;--fsd-sec-size:20px}}#full-screen-display[mode=def] #fsd-art,#full-screen-display[mode=def] #fsd-details,#full-screen-display[mode=def] #fsd-progress-parent,#full-screen-display[mode=def] #fsd-status{transition:all var(--transition-duration) var(--transition-function)}#full-screen-display[mode=def] #fsd-foreground{transform:translateX(var(--fsd-foreground-transform));width:50%;flex-direction:column;text-align:center}#full-screen-display[mode=def] #fsd-art{width:calc(100vh - 300px);max-width:var(--fsd-art-max-width);min-width:300px}#full-screen-display[mode=def] #fsd-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}#full-screen-display[mode=def] #fsd-album,#full-screen-display[mode=def] #fsd-artist{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}#full-screen-display[mode=def] #fsd-progress-parent{width:28vw;max-width:var(--fsd-items-max-width)}#full-screen-display[mode=def] #fsd-details{padding-top:30px;line-height:initial;max-width:var(--fsd-items-max-width);color:var(--primary-color)}#full-screen-display[mode=def] #fsd-status{display:flex;width:28vw;max-width:var(--fsd-items-max-width);align-items:center;justify-content:space-between;flex-direction:row}#full-screen-display[mode=def] #fsd-status.active{margin:5px auto 0;gap:10px}#full-screen-display[mode=def] #fsd-title{font-size:var(--fsd-title-size);font-weight:900;transition:all var(--transition-duration) var(--transition-function)}#full-screen-display[mode=def] #fsd-album,#full-screen-display[mode=def] #fsd-artist{font-size:var(--fsd-sec-size);transition:all var(--transition-duration) var(--transition-function)}@media (max-width:900px),(max-height:900px){#full-screen-display[mode=def] #fsd-title{font-size:35px;font-weight:600}}#full-screen-display[mode=def] #fsd-title svg{width:35px;height:35px}#full-screen-display[mode=def].lyrics-active #fsd-title svg{width:30px;height:30px}#full-screen-display[mode=def].lyrics-active #playing-icon{margin-right:2px}#full-screen-display[mode=def].lyrics-hide-force #fsd-title svg,#full-screen-display[mode=def].lyrics-unavailable #fsd-title svg{width:35px;height:35px}#full-screen-display[mode=def].lyrics-hide-force #playing-icon,#full-screen-display[mode=def].lyrics-unavailable #playing-icon{margin-right:7px}#full-screen-display[mode=def] #playing-icon{width:28px!important;height:28px!important;margin-right:7px}#full-screen-display[mode=def] #fsd-album svg,#full-screen-display[mode=def] #fsd-artist svg{width:calc(var(--fsd-sec-size) - 6px);height:calc(var(--fsd-sec-size) - 6px);margin-right:5px}#full-screen-display[mode=def] .fsd-controls{margin-top:10px;margin-bottom:5px}#full-screen-display[mode=def] .fsd-controls-left{width:30%;justify-content:flex-start}#full-screen-display[mode=def] .fsd-controls-center{width:40%;justify-content:center;margin:10px auto 5px}#full-screen-display[mode=def] .fsd-controls-right{width:30%;justify-content:flex-end}#full-screen-config-container{--main-text-color:#ffffff;--secondary-text-color:#cdcdcd;--main-background-color:#121212;--secondary-background-color:#252525;--tertiary-background-color:#404040;--theme-color:var(--spice-button);color:var(--main-text-color)}#full-screen-config-container .setting-card{background-color:var(--secondary-background-color);border-radius:10px;margin:8px 0}#full-screen-config-container .setting-container{padding:12px 16px;display:flex;flex-direction:column}#full-screen-config-container .setting-item{display:flex;flex-direction:row;justify-content:space-between}#full-screen-config-container .setting-button-row{display:flex;align-items:center;justify-content:center}#full-screen-config-container .setting-button-row button{margin:5px 10px}#full-screen-config-container .setting-subhead{text-align:center;padding:5px 0}#full-screen-config-container .setting-subhead-description{color:var(--secondary-text-color)}#full-screen-config-container .setting-action,#full-screen-config-container .setting-title{display:flex;align-items:center;padding:8px 0}#full-screen-config-container .setting-title{padding-right:15px;font-weight:600}#full-screen-config-container .setting-action{text-align:right}#full-screen-config-container .setting-description{font-size:.9rem;color:var(--secondary-text-color)}#full-screen-config-container .setting-description code{background-color:var(--main-background-color)}#full-screen-config-container .setting-description a{color:var(--theme-color);text-decoration:underline}#full-screen-config-container .setting-description ol,#full-screen-config-container .setting-description ul{list-style:inherit;margin-left:1.5rem}#full-screen-config-container .setting-description kbd{display:inline-block;padding:3px 5px;margin:0 4px;font:12px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;color:#c9d1d9;vertical-align:middle;background-color:#16221b;border:solid 1px rgba(110,118,129,.4);border-radius:6px;box-shadow:inset 0 -1px 0 rgba(110,118,129,.4)}#full-screen-config-container .about{color:var(--theme-color);text-decoration:underline;padding:0 10px}#full-screen-config-container .setting-about{font-size:1.2rem;display:flex;flex-direction:row;justify-content:center;padding:5px 0}#full-screen-config-container .switch{position:relative;display:inline-block;width:44px;height:20px}#full-screen-config-container .switch input{opacity:0;width:0;height:0}#full-screen-config-container .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:rgba(150,150,150,.5);transition:all .3s ease-in-out;border-radius:34px}#full-screen-config-container .slider:before{position:absolute;content:"";height:24px;width:24px;left:-2px;bottom:-2px;background-color:var(--secondary-text-color);transition:all .3s ease-in-out;border-radius:50%}#full-screen-config-container input[type=color]{border:none!important;width:80px!important;height:35px!important;background:#000!important}#full-screen-config-container input:checked+.slider{background-color:var(--tertiary-background-color)}#full-screen-config-container input:focus+.slider{box-shadow:0 0 1px var(--tertiary-background-color)}#full-screen-config-container input:checked+.slider:before{transform:translateX(24px);background-color:var(--theme-color);filter:brightness(1.1) saturate(1.2)}#full-screen-config-container select{background:var(--tertiary-background-color);color:var(--main-text-color);border:none;height:32px}#full-screen-config-container option{background:var(--tertiary-background-color);color:var(--main-text-color)}#full-screen-config-container button.switch{align-items:center;border:0;border-radius:50%;background-color:var(--tertiary-background-color);cursor:pointer;margin-inline-start:12px;padding:10px;width:32px;height:32px}#full-screen-config-container button.switch.disabled,#full-screen-config-container button.switch[disabled]{color:var(--secondary-text-color);opacity:.5;pointer-events:none}#full-screen-config-container button.switch.disabled svg,#full-screen-config-container button.switch[disabled] svg{fill:var(--secondary-text-color)!important}#full-screen-config-container button.switch.small{width:22px;height:22px;padding:3px}#full-screen-config-container button.switch.small svg{fill:var(--theme-color)}#full-screen-config-container .adjust-value{margin-inline:12px;width:22px;text-align:center}#full-screen-config-container .main-buttons-button{border:2px solid transparent;border-radius:10px;cursor:pointer;display:inline-block;font-size:12px;font-weight:700;letter-spacing:1.76px;line-height:18px;padding:8px 34px;text-align:center;text-transform:uppercase;transition:all 33ms cubic-bezier(.3, 0, 0, 1);white-space:nowrap;will-change:transform}#full-screen-config-container .main-button-primary{background-color:var(--theme-color);color:var(--main-text-color)}#full-screen-config-container .main-button-secondary{background-color:transparent;color:var(--theme-color);border:2px solid var(--theme-color)} + + +
    `,e.querySelector("#reset-switch").onclick=()=>{ze.isModeActivated()?(Ne.resetSettings(),x(),E(),Le="",setTimeout(D,5)):(Ne.resetSettings(null,!0),location.reload())},e.querySelector("#reload-switch").onclick=()=>{location.reload()},e)),Spicetify.PopupModal.display({title:"tv"===Ne.getMode()?$e[s].settings.tvModeConfig:$e[s].settings.fullscreenConfig,content:Le})}var e,N=document.querySelector(je)?.childNodes[0];switch(!Ne.getGlobal("fsHideOriginal")||!N.lastChild.classList.contains("control-button")&&"Full screen"!=N.lastChild?.title||N?.lastChild?.remove(),"keys"!=Ne.getGlobal("activationTypes")&&("tv"!==Ne.getGlobal("buttonActivation")&&((e=document.createElement("button")).classList.add("button","fsd-button","control-button","InvalidDropTarget"),e.id="fs-button",e.setAttribute("title",$e[s].fullscreenBtnDesc),e.innerHTML=Pe.FULLSCREEN,e.onclick=i,e.oncontextmenu=e=>{e.preventDefault(),Ne.setMode("def"),D()},N?.append(e)),"def"!==Ne.getGlobal("buttonActivation"))&&((N=document.createElement("button")).classList.add("button","tm-button","main-topBar-button","InvalidDropTarget"),N.innerHTML=Pe.TV_MODE,N.id="TV-button",N.setAttribute("title",$e[s].tvBtnDesc),N.onclick=t,document.querySelector(He)?.append(N),N.oncontextmenu=e=>{e.preventDefault(),Ne.setMode("tv"),D()}),x(),Ne.getGlobal("autoLaunch")){case"default":i();break;case"tvmode":t();break;case"lastused":(Ne.getGlobal("tvMode")?t:i)()}};(async()=>{await Se()})()})();(async()=>{var e;document.getElementById("fullScreen")||((e=document.createElement("style")).id="fullScreen",e.textContent=String.raw` + #fsd-progress-container{width:100%;display:flex;align-items:center;transition:opacity 1s ease-in-out}#fsd-progress-container #fsd-progress-bar{width:100%;height:6px;border-radius:4px;background:rgba(var(--main-color),.35);cursor:pointer;margin:10px auto;display:flex;align-items:center}#fsd-progress-container #fsd-progress-bar.dragging #fsd-progress-bar-inner,#fsd-progress-container #fsd-progress-bar.dragging #progress-thumb,#fsd-progress-container #fsd-progress-bar:hover #fsd-progress-bar-inner,#fsd-progress-container #fsd-progress-bar:hover #progress-thumb{background:var(--theme-main-color);filter:saturate(1.5) contrast(1.5)}#fsd-progress-container #fsd-progress-bar.dragging #progress-thumb,#fsd-progress-container #fsd-progress-bar:hover #progress-thumb{display:block}#fsd-progress-container #fsd-progress-bar.dragging #progress-thumb{transform:scale(1.4)}#fsd-progress-container #fsd-progress-bar-inner{height:100%;border-radius:4px;background:var(--primary-color)}#fsd-progress-container #progress-thumb{width:12px;height:12px;border-radius:50%;background:var(--primary-color);float:right;position:relative;left:7px;top:-3px;display:none;pointer-events:none}#fsd-progress-container .progress-number{min-width:40px;text-align:center}#fsd-progress-container #fsd-elapsed{margin-right:12px}#fsd-progress-container #fsd-duration{margin-left:12px}#fsd-volume-container{position:fixed;text-align:center;background-color:transparent;color:var(--primary-color);float:left;top:30%;left:30px;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:50;height:250px;max-height:33vh;transition:transform .6s var(--transition-function)}#fsd-volume-container.v-hidden{transform:translateX(-100px) scale(.1)}#fsd-volume-container.dragging,#fsd-volume-container:hover{transform:translateX(0) scale(1)}#fsd-volume-container #fsd-volume{width:50px;font-size:18px}#fsd-volume-container #fsd-volume-bar{margin:8px 0;border-radius:4px;background-color:rgba(var(--main-color),.35);width:8px;height:100%;display:flex;align-items:end}#fsd-volume-container #fsd-volume-bar.dragging #fsd-volume-bar-inner,#fsd-volume-container #fsd-volume-bar.dragging #volume-thumb,#fsd-volume-container #fsd-volume-bar:hover #fsd-volume-bar-inner,#fsd-volume-container #fsd-volume-bar:hover #volume-thumb{background:var(--theme-main-color);filter:saturate(1.5) contrast(1.5);transition:none}#fsd-volume-container #fsd-volume-bar.dragging #volume-thumb,#fsd-volume-container #fsd-volume-bar:hover #volume-thumb{display:block}#fsd-volume-container #fsd-volume-bar.dragging #volume-thumb{transform:scale(1.1)}#fsd-volume-container #fsd-volume-bar-inner{width:100%;border-radius:4px;background-color:var(--primary-color);pointer-events:none;transition:height .1s var(--transition-function)}#fsd-volume-container #fsd-volume-icon svg{fill:var(--primary-color)!important}#fsd-volume-container #volume-thumb{width:13px;height:13px;border-radius:50%;background:var(--primary-color);position:relative;left:-2px;top:-5px;display:none;pointer-events:none}#fsd-volume-container.unavailable #fsd-volume-bar{pointer-events:none}#fsd-volume-container.unavailable #fsd-volume-bar-inner{height:100%;background-color:var(--tertiary-color)}#full-screen-display{display:none;z-index:100;position:fixed;width:100%;height:100%;cursor:default;left:0;top:0;--transition-duration:0.8s;--transition-function:ease-in-out;--main-color:255,255,255;--contrast-color:0,0,0;--primary-color:rgba(var(--main-color), 1);--secondary-color:rgba(var(--main-color), 0.7);--tertiary-color:rgba(var(--main-color), 0.5);--theme-color:175,175,175;--theme-background-color:rgba(175, 175, 175, 0.6);--theme-hover-color:rgba(175, 175, 175, 0.3);--theme-main-color:rgba(var(--theme-color), 1)}#full-screen-display.themed-buttons{--theme-background-color:rgba(var(--theme-color), 0.6);--theme-hover-color:rgba(var(--theme-color), 0.3)}#full-screen-display #fsd-album svg,#full-screen-display #fsd-artist svg,#full-screen-display #fsd-title svg{transition:all var(--transition-duration) var(--transition-function);display:var(--icons-display)}#full-screen-display .fsd-artist-list span:hover,#full-screen-display .fsd-song-meta span:hover{cursor:pointer;text-decoration:underline}#full-screen-display .unavailable{color:var(--tertiary-color)!important;pointer-events:none!important;opacity:.5!important;background:0 0!important}@keyframes fadeUp{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeDo{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeRi{0%{opacity:0;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeLe{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}#full-screen-display .fade-do{animation:fadeDo .5s cubic-bezier(.3,0,0,1)}#full-screen-display .fade-up{animation:fadeUp .5s cubic-bezier(.3,0,0,1)}#full-screen-display .fade-ri{animation:fadeRi .5s cubic-bezier(.3,0,0,1)}#full-screen-display .fade-le{animation:fadeLe .5s cubic-bezier(.3,0,0,1)}#full-screen-display button.dot-after{padding-bottom:3px!important}#full-screen-display .dot-after:after{background-color:currentColor;border-radius:50%;bottom:3px;content:"";display:block;height:4px;left:50%;position:absolute;transform:translateX(-50%);width:4px}#full-screen-display #fsd-ctx-container{background-color:transparent;color:var(--secondary-color);position:fixed;float:left;top:30px;left:50px;display:flex;flex-direction:row;justify-content:center;align-items:center;text-align:left;z-index:50;transition:all 1s ease-in-out;opacity:1;max-width:40%}#full-screen-display #fsd-ctx-details{padding-left:18px;line-height:initial;font-size:18px;overflow:hidden}#full-screen-display #fsd-ctx-icon{width:48px;height:48px}#full-screen-display #fsd-progress-container{--theme-main-color:rgba(var(--main-color), 1)}#full-screen-display.themed-buttons #fsd-progress-container,#full-screen-display.themed-icons #fsd-progress-container{--theme-main-color:rgba(var(--theme-color), 1)}#full-screen-display #fsd-ctx-icon svg{fill:var(--primary-color)!important}#full-screen-display #fsd-ctx-source{text-transform:uppercase}#full-screen-display #fsd-ctx-name{font-weight:700;font-size:20px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}#full-screen-display .ctx-no-name{padding-bottom:2px;font-size:24px;font-weight:600}#full-screen-display #fsd-upnext-container{float:right;width:472px;height:102px;max-width:45%;position:fixed;top:45px;right:60px;display:flex;border:1px solid rgba(130,130,130,.7);border-radius:10px;background-color:#141414;flex-direction:row;text-align:left;z-index:50;transition:transform .8s ease-in-out;transform:translateX(600px)}#full-screen-display #fsd_next_art_image{background-size:cover;background-position:center;width:100px;height:100px;border-radius:9px 0 0 9px}#full-screen-display #fsd_next_details{padding-left:18px;padding-top:17px;line-height:initial;width:calc(100% - 115px);color:#fff;font-size:19px;overflow:hidden}#full-screen-display #fsd_next_tit_art{padding-top:9px;font-size:22px;font-weight:700;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes fsd_cssmarquee{0%{transform:translateX(0)}18%{transform:translateX(0)}100%{transform:translateX(var(--translate_width_fsd))}}@keyframes fsd_translate{0%,10%{transform:translateX(0)}50%,55%{transform:translateX(var(--translate_width_fsd))}100%{transform:translateX(0)}}#full-screen-display #fad-lyrics-plus-container{transition:transform var(--transition-duration) var(--transition-function);position:absolute;right:-50px;width:50%;top:7.5vh}#full-screen-display #fad-lyrics-plus-container .lyrics-lyricsContainer-LyricsContainer{--lyrics-color-active:var(--primary-color)!important;--lyrics-color-inactive:var(--tertiary-color)!important;--lyrics-highlight-background:rgba(var(--contrast-color), 0.7)!important;--lyrics-align-text:var(--lyrics-alignment)!important;--animation-tempo:var(--lyrics-animation-tempo)!important;height:85vh!important}#full-screen-display #fad-lyrics-plus-container .lyrics-config-button{margin-right:20px}#full-screen-display.lyrics-hide-force #fad-lyrics-plus-container,#full-screen-display.lyrics-unavailable #fad-lyrics-plus-container{transform:translateX(1000px) scale3d(.1,.1,.1) rotate(45deg)}#full-screen-display #fsd-foreground{position:relative;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--primary-color);transition:all var(--transition-duration) var(--transition-function)}#full-screen-display #fsd-art-image{position:relative;width:100%;height:100%;padding-bottom:100%;border-radius:8px;background-size:cover}#full-screen-display #fsd-art-inner{position:absolute;left:3%;bottom:0;width:94%;height:94%;z-index:-1;box-shadow:0 4px 12px rgba(0,0,0,.6)!important;transform:translateZ(0)}#full-screen-display #fsd-artist{font-weight:500;color:var(--secondary-color)}#full-screen-display #fsd-album{font-weight:400;color:var(--tertiary-color)}#full-screen-display .fsd-controls{display:flex;flex-direction:row;transition:opacity 1s ease-in-out;-moz-column-gap:10px;column-gap:10px}#full-screen-display #fsd-background{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:-2}#full-screen-display #fsd-background.animated{transform:scale(3,3.5);transform-origin:left top}#full-screen-display .fs-button{background:0 0;border:0;border-radius:8px;color:var(--primary-color);padding:3px 5px 0 5px;cursor:pointer;position:relative;transition:all .3s var(--transition-function),transform .1s var(--transition-function)}#full-screen-display .fs-button:hover{transform:scale(1.2);filter:saturate(1.5) contrast(1.5)!important;background:var(--theme-hover-color)}#full-screen-display .fs-button.button-active{background:var(--theme-background-color)!important;filter:saturate(1.5) contrast(1.5)!important}#full-screen-display #fsd-foreground svg{fill:var(--primary-color);transition:all .3s var(--transition-function)}#full-screen-display.themed-icons #fsd-foreground svg{fill:var(--theme-main-color);filter:saturate(1.5) contrast(1.5)}#full-screen-display.themed-icons.themed-buttons .fs-button.button-active svg{fill:var(--primary-color)!important}#full-screen-display .fsd-background-fade{transition:background-image var(--fs-transition) linear}#full-screen-display #fsd-lyrics{display:none}body.fsd-activated #full-screen-display{display:block}.fsd-activated .Root__main-view,.fsd-activated .Root__nav-bar,.fsd-activated .Root__now-playing-bar,.fsd-activated .Root__top-bar{visibility:hidden;display:none}.fsd-activated .Root__top-container{overflow-x:hidden}.fsd-activated .fsd-transform-animation{transition:transform .4s ease-in-out}.fsd-activated .fsd-queue-panel{--queue-panel-x:1000px;z-index:101;transform:translateX(var(--queue-panel-x))}.fsd-activated .fsd-queue-panel .icNf66tgG3uxDMbCCIaN.XOSSUjLDKk9RRmiX_UWa,.fsd-activated .fsd-queue-panel .main-buddyFeed-actions.main-buddyFeed-closeContainer{display:none}.fsd-activated .fsd-queue-panel .XOawmCGZcQx4cesyNfVO{width:500px!important}.fsd-activated .fsd-queue-panel .ffFwfKcPDbmAPLXzxzKq,.fsd-activated .fsd-queue-panel .main-buddyFeed-container{background:0 0!important;-webkit-backdrop-filter:blur(10px) brightness(0.7);backdrop-filter:blur(10px) brightness(0.7)}.fsd-activated .Root__main-view-overlay{z-index:1000}#full-screen-display[mode=tv] #fsd-foreground{flex-direction:row;text-align:left;justify-content:left;align-items:flex-end;position:absolute;top:auto;bottom:75px}#full-screen-display[mode=tv] #fad-lyrics-plus-container{width:45%}#full-screen-display[mode=tv].lyrics-active #fsd-foreground{width:-moz-max-content;width:max-content;max-width:60%}#full-screen-display[mode=tv] #fsd-art{width:calc(100vw - 840px);min-width:180px;max-width:220px;margin-left:65px}#full-screen-display[mode=tv] #fsd-progress-parent{width:100%;max-width:450px}#full-screen-display[mode=tv] .fsd-controls+#fsd-progress-parent{padding-left:10px}#full-screen-display[mode=tv] #fsd-details{padding-left:30px;line-height:initial;width:80%;color:var(--primary-color)}#full-screen-display[mode=tv] #fsd-album,#full-screen-display[mode=tv] #fsd-artist,#full-screen-display[mode=tv] #fsd-title{display:flex;justify-content:flex-start;align-items:baseline;gap:5px}#full-screen-display[mode=tv] #fsd-album span,#full-screen-display[mode=tv] #fsd-artist>span,#full-screen-display[mode=tv] #fsd-title span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}#full-screen-display[mode=tv] #fsd-title span{-webkit-line-clamp:3}#full-screen-display[mode=tv] #fsd-album svg,#full-screen-display[mode=tv] #fsd-artist svg,#full-screen-display[mode=tv] #fsd-title svg{flex:0 0 auto}#full-screen-display[mode=tv] #fsd-title{font-size:62px;font-weight:900}@media (max-width:900px),(max-height:800px){#full-screen-display[mode=tv] #fsd-title{font-size:40px;font-weight:600}#full-screen-display[mode=tv] #fsd-album,#full-screen-display[mode=tv] #fsd-artist{font-size:20px}}#full-screen-display[mode=tv] #fsd-album,#full-screen-display[mode=tv] #fsd-artist{font-size:28px}#full-screen-display[mode=tv] #fsd-title svg{width:35px;height:45px}#full-screen-display[mode=tv] #playing-icon{width:30px!important;height:40px!important;margin-right:5px}#full-screen-display[mode=tv] #fsd-album svg,#full-screen-display[mode=tv] #fsd-artist svg{margin-right:15px;width:22px;height:22px}#full-screen-display[mode=tv] #fsd-status{display:flex;flex-direction:row;min-width:450px;max-width:450px;align-items:center;justify-content:space-between}#full-screen-display[mode=tv] #fsd-status.active{-moz-column-gap:10px;column-gap:10px;margin:10px 0}#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:600px;--fsd-items-max-width:580px;--fsd-title-size:50px;--fsd-sec-size:28px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:500px;--fsd-items-max-width:480px;--fsd-title-size:40px;--fsd-sec-size:23px}#full-screen-display[mode=def].vertical-mode.lyrics-active{--lyrics-alignment:center}#full-screen-display[mode=def].vertical-mode.lyrics-active #fsd-foreground{width:100%;height:50%;margin-top:20px}#full-screen-display[mode=def].vertical-mode.lyrics-active #fsd-foreground #fsd-art{--fsd-art-max-width:350px}#full-screen-display[mode=def].vertical-mode.lyrics-active #fad-lyrics-plus-container{right:0;left:0;width:100%;top:50%;height:50%}#full-screen-display[mode=def].vertical-mode.lyrics-active #fad-lyrics-plus-container .lyrics-lyricsContainer-LyricsContainer{height:95%!important}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable{--fsd-foreground-transform:0%}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force #fsd-foreground,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable #fsd-foreground{width:100%;height:100%}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force #fsd-foreground #fsd-art,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable #fsd-foreground #fsd-art{--fsd-art-max-width:400px}#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-hide-force #fad-lyrics-plus-container,#full-screen-display[mode=def].vertical-mode.lyrics-active.lyrics-unavailable #fad-lyrics-plus-container{transform:translateY(1000px) scale3d(.1,.1,.1)}@media (max-width:1400px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:550px;--fsd-items-max-width:530px;--fsd-title-size:45px;--fsd-sec-size:26px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:450px;--fsd-items-max-width:430px;--fsd-title-size:38px;--fsd-sec-size:20px}}@media (max-width:1200px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:500px;--fsd-items-max-width:480px;--fsd-title-size:40px;--fsd-sec-size:23px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:400px;--fsd-items-max-width:380px;--fsd-title-size:38px;--fsd-sec-size:20px}}@media (max-width:992px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:450px;--fsd-items-max-width:430px;--fsd-title-size:38px;--fsd-sec-size:21px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:350px;--fsd-items-max-width:330px;--fsd-title-size:36px;--fsd-sec-size:20px}}@media (max-width:768px){#full-screen-display[mode=def],#full-screen-display[mode=def].lyrics-hide-force,#full-screen-display[mode=def].lyrics-unavailable{--fsd-foreground-transform:50%;--fsd-art-max-width:400px;--fsd-items-max-width:380px;--fsd-title-size:40px;--fsd-sec-size:23px}#full-screen-display[mode=def].lyrics-active :not(#full-screen-display.lyrics-unavailable *,#full-screen-display.lyrics-hide-force *){--fsd-foreground-transform:0px;--fsd-art-max-width:300px;--fsd-items-max-width:280px;--fsd-title-size:36px;--fsd-sec-size:20px}}#full-screen-display[mode=def] #fsd-art,#full-screen-display[mode=def] #fsd-details,#full-screen-display[mode=def] #fsd-progress-parent,#full-screen-display[mode=def] #fsd-status{transition:all var(--transition-duration) var(--transition-function)}#full-screen-display[mode=def] #fsd-foreground{transform:translateX(var(--fsd-foreground-transform));width:50%;flex-direction:column;text-align:center}#full-screen-display[mode=def] #fsd-art{width:calc(100vh - 300px);max-width:var(--fsd-art-max-width);min-width:300px}#full-screen-display[mode=def] #fsd-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}#full-screen-display[mode=def] #fsd-album,#full-screen-display[mode=def] #fsd-artist{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}#full-screen-display[mode=def] #fsd-progress-parent{width:28vw;max-width:var(--fsd-items-max-width)}#full-screen-display[mode=def] #fsd-details{padding-top:30px;line-height:initial;max-width:var(--fsd-items-max-width);color:var(--primary-color)}#full-screen-display[mode=def] #fsd-status{display:flex;width:28vw;max-width:var(--fsd-items-max-width);align-items:center;justify-content:space-between;flex-direction:row}#full-screen-display[mode=def] #fsd-status.active{margin:5px auto 0;gap:10px}#full-screen-display[mode=def] #fsd-title{font-size:var(--fsd-title-size);font-weight:900;transition:all var(--transition-duration) var(--transition-function)}#full-screen-display[mode=def] #fsd-album,#full-screen-display[mode=def] #fsd-artist{font-size:var(--fsd-sec-size);transition:all var(--transition-duration) var(--transition-function)}@media (max-width:900px),(max-height:900px){#full-screen-display[mode=def] #fsd-title{font-size:35px;font-weight:600}}#full-screen-display[mode=def] #fsd-title svg{width:35px;height:35px}#full-screen-display[mode=def].lyrics-active #fsd-title svg{width:30px;height:30px}#full-screen-display[mode=def].lyrics-active #playing-icon{margin-right:2px}#full-screen-display[mode=def].lyrics-hide-force #fsd-title svg,#full-screen-display[mode=def].lyrics-unavailable #fsd-title svg{width:35px;height:35px}#full-screen-display[mode=def].lyrics-hide-force #playing-icon,#full-screen-display[mode=def].lyrics-unavailable #playing-icon{margin-right:7px}#full-screen-display[mode=def] #playing-icon{width:28px!important;height:28px!important;margin-right:7px}#full-screen-display[mode=def] #fsd-album svg,#full-screen-display[mode=def] #fsd-artist svg{width:calc(var(--fsd-sec-size) - 6px);height:calc(var(--fsd-sec-size) - 6px);margin-right:5px}#full-screen-display[mode=def] .fsd-controls{margin-top:10px;margin-bottom:5px}#full-screen-display[mode=def] .fsd-controls-left{width:30%;justify-content:flex-start}#full-screen-display[mode=def] .fsd-controls-center{width:40%;justify-content:center;margin:10px auto 5px}#full-screen-display[mode=def] .fsd-controls-right{width:30%;justify-content:flex-end}#full-screen-config-container{--main-text-color:#ffffff;--secondary-text-color:#cdcdcd;--main-background-color:#121212;--secondary-background-color:#252525;--tertiary-background-color:#404040;--theme-color:var(--spice-button);color:var(--main-text-color)}#full-screen-config-container .setting-card{background-color:var(--secondary-background-color);border-radius:10px;margin:8px 0}#full-screen-config-container .setting-container{padding:12px 16px;display:flex;flex-direction:column}#full-screen-config-container .setting-item{display:flex;flex-direction:row;justify-content:space-between}#full-screen-config-container .setting-button-row{display:flex;align-items:center;justify-content:center}#full-screen-config-container .setting-button-row button{margin:5px 10px}#full-screen-config-container .setting-subhead{text-align:center;padding:5px 0}#full-screen-config-container .setting-subhead-description{color:var(--secondary-text-color)}#full-screen-config-container .setting-action,#full-screen-config-container .setting-title{display:flex;align-items:center;padding:8px 0}#full-screen-config-container .setting-title{padding-right:15px;font-weight:600}#full-screen-config-container .setting-action{text-align:right}#full-screen-config-container .setting-description{font-size:.9rem;color:var(--secondary-text-color)}#full-screen-config-container .setting-description code{background-color:var(--main-background-color)}#full-screen-config-container .setting-description a{color:var(--theme-color);text-decoration:underline}#full-screen-config-container .setting-description ol,#full-screen-config-container .setting-description ul{list-style:inherit;margin-left:1.5rem}#full-screen-config-container .setting-description kbd{display:inline-block;padding:3px 5px;margin:0 4px;font:12px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;color:#c9d1d9;vertical-align:middle;background-color:#16221b;border:solid 1px rgba(110,118,129,.4);border-radius:6px;box-shadow:inset 0 -1px 0 rgba(110,118,129,.4)}#full-screen-config-container .about{color:var(--theme-color);text-decoration:underline;padding:0 10px}#full-screen-config-container .setting-about{font-size:1.2rem;display:flex;flex-direction:row;justify-content:center;padding:5px 0}#full-screen-config-container .switch{position:relative;display:inline-block;width:44px;height:20px}#full-screen-config-container .switch input{opacity:0;width:0;height:0}#full-screen-config-container .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:rgba(150,150,150,.5);transition:all .3s ease-in-out;border-radius:34px}#full-screen-config-container .slider:before{position:absolute;content:"";height:24px;width:24px;left:-2px;bottom:-2px;background-color:var(--secondary-text-color);transition:all .3s ease-in-out;border-radius:50%}#full-screen-config-container input[type=color]{border:none!important;width:80px!important;height:35px!important;background:#000!important}#full-screen-config-container input:checked+.slider{background-color:var(--tertiary-background-color)}#full-screen-config-container input:focus+.slider{box-shadow:0 0 1px var(--tertiary-background-color)}#full-screen-config-container input:checked+.slider:before{transform:translateX(24px);background-color:var(--theme-color);filter:brightness(1.1) saturate(1.2)}#full-screen-config-container select{background:var(--tertiary-background-color);color:var(--main-text-color);border:none;height:32px}#full-screen-config-container option{background:var(--tertiary-background-color);color:var(--main-text-color)}#full-screen-config-container button.switch{align-items:center;border:0;border-radius:50%;background-color:var(--tertiary-background-color);cursor:pointer;margin-inline-start:12px;padding:10px;width:32px;height:32px}#full-screen-config-container button.switch.disabled,#full-screen-config-container button.switch[disabled]{color:var(--secondary-text-color);opacity:.5;pointer-events:none}#full-screen-config-container button.switch.disabled svg,#full-screen-config-container button.switch[disabled] svg{fill:var(--secondary-text-color)!important}#full-screen-config-container button.switch.small{width:22px;height:22px;padding:3px}#full-screen-config-container button.switch.small svg{fill:var(--theme-color)}#full-screen-config-container .adjust-value{margin-inline:12px;width:22px;text-align:center}#full-screen-config-container .main-buttons-button{border:2px solid transparent;border-radius:10px;cursor:pointer;display:inline-block;font-size:12px;font-weight:700;letter-spacing:1.76px;line-height:18px;padding:8px 34px;text-align:center;text-transform:uppercase;transition:all 33ms cubic-bezier(.3, 0, 0, 1);white-space:nowrap;will-change:transform}#full-screen-config-container .main-button-primary{background-color:var(--theme-color);color:var(--main-text-color)}#full-screen-config-container .main-button-secondary{background-color:transparent;color:var(--theme-color);border:2px solid var(--theme-color)} `.trim(),document.head.appendChild(e))})()}(); \ No newline at end of file diff --git a/Extensions/full-screen/src/app.tsx b/Extensions/full-screen/src/app.tsx index e98156b..6204d70 100644 --- a/Extensions/full-screen/src/app.tsx +++ b/Extensions/full-screen/src/app.tsx @@ -21,6 +21,7 @@ import { Config, Settings } from "./types/fullscreen"; import WebAPI from "./services/web-api"; import showWhatsNew from "./services/whats-new"; import { getHtmlContent } from "./services/html-creator"; +import { initMoustrapRecord } from "./services/mousetrap-record"; import SeekableProgressBar from "./ui/components/ProgressBar/ProgressBar"; import SeekableVolumeBar from "./ui/components/VolumeBar/VolumeBar"; @@ -47,6 +48,7 @@ async function main() { // Start from here showWhatsNew(); + initMoustrapRecord(Spicetify.Mousetrap); if (CFM.getGlobal("activationTypes") !== "btns") { if (CFM.getGlobal("keyActivation") !== "def") Spicetify.Mousetrap.bind("t", openwithTV); @@ -259,6 +261,12 @@ async function main() { } } + function recordSequence() { + Spicetify.Mousetrap.record(function (sequence) { + // sequence is an array like ['ctrl+k', 'c'] + console.log("You pressed: " + sequence.join(" ")); + }); + } // Set the timeout to show upnext or hide when song ends let upnextTimer: NodeJS.Timeout, upNextShown = false; diff --git a/Extensions/full-screen/src/services/mousetrap-record.ts b/Extensions/full-screen/src/services/mousetrap-record.ts new file mode 100644 index 0000000..413adb4 --- /dev/null +++ b/Extensions/full-screen/src/services/mousetrap-record.ts @@ -0,0 +1,199 @@ +/** + * This extension allows you to record a sequence using Mousetrap. + * + * @author Dan Tao + */ +export function initMoustrapRecord(Mousetrap) { + /** + * the sequence currently being recorded + * + * @type {Array} + */ + var _recordedSequence = [], + /** + * a callback to invoke after recording a sequence + * + * @type {Function|null} + */ + _recordedSequenceCallback = null, + /** + * a list of all of the keys currently held down + * + * @type {Array} + */ + _currentRecordedKeys = [], + /** + * temporary state where we remember if we've already captured a + * character key in the current combo + * + * @type {boolean} + */ + _recordedCharacterKey = false, + /** + * a handle for the timer of the current recording + * + * @type {null|number} + */ + _recordTimer = null, + /** + * the original handleKey method to override when Mousetrap.record() is + * called + * + * @type {Function} + */ + _origHandleKey = Mousetrap.prototype.handleKey; + + /** + * handles a character key event + * + * @param {string} character + * @param {Array} modifiers + * @param {Event} e + * @returns void + */ + function _handleKey(character, modifiers, e) { + var self = this; + + if (!self.recording) { + _origHandleKey.apply(self, arguments); + return; + } + + // remember this character if we're currently recording a sequence + if (e.type == "keydown") { + if (character.length === 1 && _recordedCharacterKey) { + _recordCurrentCombo(); + } + + for (i = 0; i < modifiers.length; ++i) { + _recordKey(modifiers[i]); + } + _recordKey(character); + + // once a key is released, all keys that were held down at the time + // count as a keypress + } else if (e.type == "keyup" && _currentRecordedKeys.length > 0) { + _recordCurrentCombo(); + } + } + + /** + * marks a character key as held down while recording a sequence + * + * @param {string} key + * @returns void + */ + function _recordKey(key) { + var i; + + // one-off implementation of Array.indexOf, since IE6-9 don't support it + for (i = 0; i < _currentRecordedKeys.length; ++i) { + if (_currentRecordedKeys[i] === key) { + return; + } + } + + _currentRecordedKeys.push(key); + + if (key.length === 1) { + _recordedCharacterKey = true; + } + } + + /** + * marks whatever key combination that's been recorded so far as finished + * and gets ready for the next combo + * + * @returns void + */ + function _recordCurrentCombo() { + _recordedSequence.push(_currentRecordedKeys); + _currentRecordedKeys = []; + _recordedCharacterKey = false; + _restartRecordTimer(); + } + + /** + * ensures each combo in a sequence is in a predictable order and formats + * key combos to be '+'-delimited + * + * modifies the sequence in-place + * + * @param {Array} sequence + * @returns void + */ + function _normalizeSequence(sequence) { + var i; + + for (i = 0; i < sequence.length; ++i) { + sequence[i].sort(function (x, y) { + // modifier keys always come first, in alphabetical order + if (x.length > 1 && y.length === 1) { + return -1; + } else if (x.length === 1 && y.length > 1) { + return 1; + } + + // character keys come next (list should contain no duplicates, + // so no need for equality check) + return x > y ? 1 : -1; + }); + + sequence[i] = sequence[i].join("+"); + } + } + + /** + * finishes the current recording, passes the recorded sequence to the stored + * callback, and sets Mousetrap.handleKey back to its original function + * + * @returns void + */ + function _finishRecording() { + if (_recordedSequenceCallback) { + _normalizeSequence(_recordedSequence); + _recordedSequenceCallback(_recordedSequence); + } + + // reset all recorded state + _recordedSequence = []; + _recordedSequenceCallback = null; + _currentRecordedKeys = []; + } + + /** + * called to set a 1 second timeout on the current recording + * + * this is so after each key press in the sequence the recording will wait for + * 1 more second before executing the callback + * + * @returns void + */ + function _restartRecordTimer() { + clearTimeout(_recordTimer); + _recordTimer = setTimeout(_finishRecording, 1000); + } + + /** + * records the next sequence and passes it to a callback once it's + * completed + * + * @param {Function} callback + * @returns void + */ + Mousetrap.prototype.record = function (callback) { + var self = this; + self.recording = true; + _recordedSequenceCallback = function () { + self.recording = false; + callback.apply(self, arguments); + }; + }; + + Mousetrap.prototype.handleKey = function () { + var self = this; + _handleKey.apply(self, arguments); + }; + + Mousetrap.init(); +} diff --git a/shared/types/spicetify.d.ts b/shared/types/spicetify.d.ts index a53f0c7..fdfa8af 100644 --- a/shared/types/spicetify.d.ts +++ b/shared/types/spicetify.d.ts @@ -782,6 +782,7 @@ declare namespace Spicetify { * so new extension should use this library instead. */ const Mousetrap: { + record(arg0: (sequence: any) => void): unknown; bind: ( keys: string | string[], callback: (event: KeyboardEvent, combo: string) => void,