diff --git a/public/js/bundle.js b/public/js/bundle.js index cd010f9..742724f 100644 --- a/public/js/bundle.js +++ b/public/js/bundle.js @@ -2445,7 +2445,7 @@ a { */function applyMixin(e){var n=Number(e.version.split(".")[0]);if(n>=2)e.mixin({beforeCreate:r});else{var a=e.prototype._init;e.prototype._init=function(i){i===void 0&&(i={}),i.init=i.init?[r].concat(i.init):r,a.call(this,i)}}function r(){var i=this.$options;i.store?this.$store=typeof i.store=="function"?i.store():i.store:i.parent&&i.parent.$store&&(this.$store=i.parent.$store)}}var target$2=typeof window!="undefined"?window:typeof global!="undefined"?global:{},devtoolHook=target$2.__VUE_DEVTOOLS_GLOBAL_HOOK__;function devtoolPlugin(e){if(!devtoolHook)return;e._devtoolHook=devtoolHook,devtoolHook.emit("vuex:init",e),devtoolHook.on("vuex:travel-to-state",function(n){e.replaceState(n)}),e.subscribe(function(n,a){devtoolHook.emit("vuex:mutation",n,a)},{prepend:!0}),e.subscribeAction(function(n,a){devtoolHook.emit("vuex:action",n,a)},{prepend:!0})}function find(e,n){return e.filter(n)[0]}function deepCopy(e,n){if(n===void 0&&(n=[]),e===null||typeof e!="object")return e;var a=find(n,function(i){return i.original===e});if(a)return a.copy;var r=Array.isArray(e)?[]:{};return n.push({original:e,copy:r}),Object.keys(e).forEach(function(i){r[i]=deepCopy(e[i],n)}),r}function forEachValue(e,n){Object.keys(e).forEach(function(a){return n(e[a],a)})}function isObject$1(e){return e!==null&&typeof e=="object"}function isPromise$1(e){return e&&typeof e.then=="function"}function partial(e,n){return function(){return e(n)}}var Module=function(n,a){this.runtime=a,this._children=Object.create(null),this._rawModule=n;var r=n.state;this.state=(typeof r=="function"?r():r)||{}},prototypeAccessors$1={namespaced:{configurable:!0}};prototypeAccessors$1.namespaced.get=function(){return!!this._rawModule.namespaced},Module.prototype.addChild=function(n,a){this._children[n]=a},Module.prototype.removeChild=function(n){delete this._children[n]},Module.prototype.getChild=function(n){return this._children[n]},Module.prototype.hasChild=function(n){return n in this._children},Module.prototype.update=function(n){this._rawModule.namespaced=n.namespaced,n.actions&&(this._rawModule.actions=n.actions),n.mutations&&(this._rawModule.mutations=n.mutations),n.getters&&(this._rawModule.getters=n.getters)},Module.prototype.forEachChild=function(n){forEachValue(this._children,n)},Module.prototype.forEachGetter=function(n){this._rawModule.getters&&forEachValue(this._rawModule.getters,n)},Module.prototype.forEachAction=function(n){this._rawModule.actions&&forEachValue(this._rawModule.actions,n)},Module.prototype.forEachMutation=function(n){this._rawModule.mutations&&forEachValue(this._rawModule.mutations,n)},Object.defineProperties(Module.prototype,prototypeAccessors$1);var ModuleCollection=function(n){this.register([],n,!1)};ModuleCollection.prototype.get=function(n){return n.reduce(function(a,r){return a.getChild(r)},this.root)},ModuleCollection.prototype.getNamespace=function(n){var a=this.root;return n.reduce(function(r,i){return a=a.getChild(i),r+(a.namespaced?i+"/":"")},"")},ModuleCollection.prototype.update=function(n){update([],this.root,n)},ModuleCollection.prototype.register=function(n,a,r){var i=this;r===void 0&&(r=!0);var s=new Module(a,r);if(n.length===0)this.root=s;else{var l=this.get(n.slice(0,-1));l.addChild(n[n.length-1],s)}a.modules&&forEachValue(a.modules,function(c,o){i.register(n.concat(o),c,r)})},ModuleCollection.prototype.unregister=function(n){var a=this.get(n.slice(0,-1)),r=n[n.length-1],i=a.getChild(r);if(!i)return;if(!i.runtime)return;a.removeChild(r)},ModuleCollection.prototype.isRegistered=function(n){var a=this.get(n.slice(0,-1)),r=n[n.length-1];return a.hasChild(r)};function update(e,n,a){if(n.update(a),a.modules)for(var r in a.modules){if(!n.getChild(r))return;update(e.concat(r),n.getChild(r),a.modules[r])}}var Vue$1,Store=function(n){var a=this;n===void 0&&(n={}),!Vue$1&&typeof window!="undefined"&&window.Vue&&install(window.Vue);var r=n.plugins;r===void 0&&(r=[]);var i=n.strict;i===void 0&&(i=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new ModuleCollection(n),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new Vue$1,this._makeLocalGettersCache=Object.create(null);var s=this,l=this,c=l.dispatch,o=l.commit;this.dispatch=function(m,h){return c.call(s,m,h)},this.commit=function(m,h,b){return o.call(s,m,h,b)},this.strict=i;var u=this._modules.root.state;installModule(this,u,[],this._modules.root),resetStoreVM(this,u),r.forEach(function(f){return f(a)});var d=n.devtools!==void 0?n.devtools:Vue$1.config.devtools;d&&devtoolPlugin(this)},prototypeAccessors$1$1={state:{configurable:!0}};prototypeAccessors$1$1.state.get=function(){return this._vm._data.$$state},prototypeAccessors$1$1.state.set=function(e){},Store.prototype.commit=function(n,a,r){var i=this,s=unifyObjectStyle(n,a,r),l=s.type,c=s.payload,o={type:l,payload:c},u=this._mutations[l];if(!u)return;this._withCommit(function(){u.forEach(function(f){f(c)})}),this._subscribers.slice().forEach(function(d){return d(o,i.state)})},Store.prototype.dispatch=function(n,a){var r=this,i=unifyObjectStyle(n,a),s=i.type,l=i.payload,c={type:s,payload:l},o=this._actions[s];if(!o)return;try{this._actionSubscribers.slice().filter(function(d){return d.before}).forEach(function(d){return d.before(c,r.state)})}catch(d){}var u=o.length>1?Promise.all(o.map(function(d){return d(l)})):o[0](l);return new Promise(function(d,f){u.then(function(m){try{r._actionSubscribers.filter(function(h){return h.after}).forEach(function(h){return h.after(c,r.state)})}catch(h){}d(m)},function(m){try{r._actionSubscribers.filter(function(h){return h.error}).forEach(function(h){return h.error(c,r.state,m)})}catch(h){}f(m)})})},Store.prototype.subscribe=function(n,a){return genericSubscribe(n,this._subscribers,a)},Store.prototype.subscribeAction=function(n,a){var r=typeof n=="function"?{before:n}:n;return genericSubscribe(r,this._actionSubscribers,a)},Store.prototype.watch=function(n,a,r){var i=this;return this._watcherVM.$watch(function(){return n(i.state,i.getters)},a,r)},Store.prototype.replaceState=function(n){var a=this;this._withCommit(function(){a._vm._data.$$state=n})},Store.prototype.registerModule=function(n,a,r){r===void 0&&(r={}),typeof n=="string"&&(n=[n]),this._modules.register(n,a),installModule(this,this.state,n,this._modules.get(n),r.preserveState),resetStoreVM(this,this.state)},Store.prototype.unregisterModule=function(n){var a=this;typeof n=="string"&&(n=[n]),this._modules.unregister(n),this._withCommit(function(){var r=getNestedState(a.state,n.slice(0,-1));Vue$1.delete(r,n[n.length-1])}),resetStore(this)},Store.prototype.hasModule=function(n){return typeof n=="string"&&(n=[n]),this._modules.isRegistered(n)},Store.prototype.hotUpdate=function(n){this._modules.update(n),resetStore(this,!0)},Store.prototype._withCommit=function(n){var a=this._committing;this._committing=!0,n(),this._committing=a},Object.defineProperties(Store.prototype,prototypeAccessors$1$1);function genericSubscribe(e,n,a){return n.indexOf(e)<0&&(a&&a.prepend?n.unshift(e):n.push(e)),function(){var r=n.indexOf(e);r>-1&&n.splice(r,1)}}function resetStore(e,n){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var a=e.state;installModule(e,a,[],e._modules.root,!0),resetStoreVM(e,a,n)}function resetStoreVM(e,n,a){var r=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var i=e._wrappedGetters,s={};forEachValue(i,function(c,o){s[o]=partial(c,e),Object.defineProperty(e.getters,o,{get:function(){return e._vm[o]},enumerable:!0})});var l=Vue$1.config.silent;Vue$1.config.silent=!0,e._vm=new Vue$1({data:{$$state:n},computed:s}),Vue$1.config.silent=l,e.strict&&enableStrictMode(e),r&&(a&&e._withCommit(function(){r._data.$$state=null}),Vue$1.nextTick(function(){return r.$destroy()}))}function installModule(e,n,a,r,i){var s=!a.length,l=e._modules.getNamespace(a);if(r.namespaced&&(e._modulesNamespaceMap[l]&&!1&&console.error("[vuex] duplicate namespace "+l+" for the namespaced module "+a.join("/")),e._modulesNamespaceMap[l]=r),!s&&!i){var c=getNestedState(n,a.slice(0,-1)),o=a[a.length-1];e._withCommit(function(){Vue$1.set(c,o,r.state)})}var u=r.context=makeLocalContext(e,l,a);r.forEachMutation(function(d,f){var m=l+f;registerMutation(e,m,d,u)}),r.forEachAction(function(d,f){var m=d.root?f:l+f,h=d.handler||d;registerAction(e,m,h,u)}),r.forEachGetter(function(d,f){var m=l+f;registerGetter(e,m,d,u)}),r.forEachChild(function(d,f){installModule(e,n,a.concat(f),d,i)})}function makeLocalContext(e,n,a){var r=n==="",i={dispatch:r?e.dispatch:function(s,l,c){var o=unifyObjectStyle(s,l,c),u=o.payload,d=o.options,f=o.type;return(!d||!d.root)&&(f=n+f),e.dispatch(f,u)},commit:r?e.commit:function(s,l,c){var o=unifyObjectStyle(s,l,c),u=o.payload,d=o.options,f=o.type;(!d||!d.root)&&(f=n+f),e.commit(f,u,d)}};return Object.defineProperties(i,{getters:{get:r?function(){return e.getters}:function(){return makeLocalGetters(e,n)}},state:{get:function(){return getNestedState(e.state,a)}}}),i}function makeLocalGetters(e,n){if(!e._makeLocalGettersCache[n]){var a={},r=n.length;Object.keys(e.getters).forEach(function(i){if(i.slice(0,r)!==n)return;var s=i.slice(r);Object.defineProperty(a,s,{get:function(){return e.getters[i]},enumerable:!0})}),e._makeLocalGettersCache[n]=a}return e._makeLocalGettersCache[n]}function registerMutation(e,n,a,r){var i=e._mutations[n]||(e._mutations[n]=[]);i.push(function(l){a.call(e,r.state,l)})}function registerAction(e,n,a,r){var i=e._actions[n]||(e._actions[n]=[]);i.push(function(l){var c=a.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},l);return isPromise$1(c)||(c=Promise.resolve(c)),e._devtoolHook?c.catch(function(o){throw e._devtoolHook.emit("vuex:error",o),o}):c})}function registerGetter(e,n,a,r){if(e._wrappedGetters[n])return;e._wrappedGetters[n]=function(s){return a(r.state,r.getters,s.state,s.getters)}}function enableStrictMode(e){e._vm.$watch(function(){return this._data.$$state},function(){},{deep:!0,sync:!0})}function getNestedState(e,n){return n.reduce(function(a,r){return a[r]},e)}function unifyObjectStyle(e,n,a){return isObject$1(e)&&e.type&&(a=n,n=e,e=e.type),{type:e,payload:n,options:a}}function install(e){if(Vue$1&&e===Vue$1)return;Vue$1=e,applyMixin(Vue$1)}var mapState=normalizeNamespace(function(e,n){var a={};return normalizeMap(n).forEach(function(r){var i=r.key,s=r.val;a[i]=function(){var c=this.$store.state,o=this.$store.getters;if(e){var u=getModuleByNamespace(this.$store,"mapState",e);if(!u)return;c=u.context.state,o=u.context.getters}return typeof s=="function"?s.call(this,c,o):c[s]},a[i].vuex=!0}),a}),mapMutations=normalizeNamespace(function(e,n){var a={};return normalizeMap(n).forEach(function(r){var i=r.key,s=r.val;a[i]=function(){for(var c=[],o=arguments.length;o--;)c[o]=arguments[o];var u=this.$store.commit;if(e){var d=getModuleByNamespace(this.$store,"mapMutations",e);if(!d)return;u=d.context.commit}return typeof s=="function"?s.apply(this,[u].concat(c)):u.apply(this.$store,[s].concat(c))}}),a}),mapGetters=normalizeNamespace(function(e,n){var a={};return normalizeMap(n).forEach(function(r){var i=r.key,s=r.val;s=e+s,a[i]=function(){return e&&!getModuleByNamespace(this.$store,"mapGetters",e)?void 0:this.$store.getters[s]},a[i].vuex=!0}),a}),mapActions=normalizeNamespace(function(e,n){var a={};return normalizeMap(n).forEach(function(r){var i=r.key,s=r.val;a[i]=function(){for(var c=[],o=arguments.length;o--;)c[o]=arguments[o];var u=this.$store.dispatch;if(e){var d=getModuleByNamespace(this.$store,"mapActions",e);if(!d)return;u=d.context.dispatch}return typeof s=="function"?s.apply(this,[u].concat(c)):u.apply(this.$store,[s].concat(c))}}),a}),createNamespacedHelpers=function(e){return{mapState:mapState.bind(null,e),mapGetters:mapGetters.bind(null,e),mapMutations:mapMutations.bind(null,e),mapActions:mapActions.bind(null,e)}};function normalizeMap(e){return isValidMap(e)?Array.isArray(e)?e.map(function(n){return{key:n,val:n}}):Object.keys(e).map(function(n){return{key:n,val:e[n]}}):[]}function isValidMap(e){return Array.isArray(e)||isObject$1(e)}function normalizeNamespace(e){return function(n,a){return typeof n!="string"?(a=n,n=""):n.charAt(n.length-1)!=="/"&&(n+="/"),e(n,a)}}function getModuleByNamespace(e,n,a){var r=e._modulesNamespaceMap[a];return r}function createLogger(e){e===void 0&&(e={});var n=e.collapsed;n===void 0&&(n=!0);var a=e.filter;a===void 0&&(a=function(d,f,m){return!0});var r=e.transformer;r===void 0&&(r=function(d){return d});var i=e.mutationTransformer;i===void 0&&(i=function(d){return d});var s=e.actionFilter;s===void 0&&(s=function(d,f){return!0});var l=e.actionTransformer;l===void 0&&(l=function(d){return d});var c=e.logMutations;c===void 0&&(c=!0);var o=e.logActions;o===void 0&&(o=!0);var u=e.logger;return u===void 0&&(u=console),function(d){var f=deepCopy(d.state);if(typeof u=="undefined")return;c&&d.subscribe(function(m,h){var b=deepCopy(h);if(a(m,f,b)){var y=getFormattedTime(),w=i(m),k="mutation "+m.type+y;startMessage(u,k,n),u.log("%c prev state","color: #9E9E9E; font-weight: bold",r(f)),u.log("%c mutation","color: #03A9F4; font-weight: bold",w),u.log("%c next state","color: #4CAF50; font-weight: bold",r(b)),endMessage(u)}f=b}),o&&d.subscribeAction(function(m,h){if(s(m,h)){var b=getFormattedTime(),y=l(m),w="action "+m.type+b;startMessage(u,w,n),u.log("%c action","color: #03A9F4; font-weight: bold",y),endMessage(u)}})}}function startMessage(e,n,a){var r=a?e.groupCollapsed:e.group;try{r.call(e,n)}catch(i){e.log(n)}}function endMessage(e){try{e.groupEnd()}catch(n){e.log("\u2014\u2014 log end \u2014\u2014")}}function getFormattedTime(){var e=new Date;return" @ "+pad(e.getHours(),2)+":"+pad(e.getMinutes(),2)+":"+pad(e.getSeconds(),2)+"."+pad(e.getMilliseconds(),3)}function repeat(e,n){return new Array(n+1).join(e)}function pad(e,n){return repeat("0",n-e.toString().length)+e}var index$2={Store,install,version:"3.5.1",mapState,mapMutations,mapGetters,mapActions,createNamespacedHelpers,createLogger};let settingsData={},defaultSettingsData={},spotifyCredentials={};function getSettingsData(){return socket.emit("get_settings_data"),new Promise((e,n)=>{socket.on("init_settings",(a,r,i)=>{settingsData=a,defaultSettingsData=i,spotifyCredentials=r,socket.off("init_settings"),e({settingsData,defaultSettingsData,spotifyCredentials})})})}function getInitialPreviewVolume(){let e=parseInt(localStorage.getItem("previewVolume"));return isNaN(e)&&(e=80,localStorage.setItem("previewVolume",e.toString())),e}function checkInitialSlimDownloads(){return localStorage.getItem("slimDownloads")==="true"}function checkInitialSlimSidebar(){return localStorage.getItem("slimSidebar")==="true"}const state=()=>({currentCommit:null,latestCommit:null,updateAvailable:!1,deemixVersion:null,previewVolume:getInitialPreviewVolume(),hasSlimDownloads:checkInitialSlimDownloads(),hasSlimSidebar:checkInitialSlimSidebar()}),actions={setAppInfo({commit:e},n){e("SET_CURRENT_COMMIT",n.currentCommit),e("SET_LATEST_COMMIT",n.latestCommit),e("SET_UPDATE_AVAILABLE",n.updateAvailable),e("SET_DEEMIX_VERSION",n.deemixVersion)},setPreviewVolume({commit:e},n){e("SET_PREVIEW_VOLUME",n),localStorage.setItem("previewVolume",n.toString())},setSlimDownloads({commit:e},n){e("SET_SLIM_DOWNLOADS",n),localStorage.setItem("slimDownloads",n.toString())},setSlimSidebar({commit:e},n){e("SET_SLIM_SIDEBAR",n),localStorage.setItem("slimSidebar",n.toString()),Array.from(document.getElementsByClassName("toastify")).forEach(a=>{a.style.transform=`translate(${n?"3rem":"14rem"}, 0)`})}},getters={getAppInfo:e=>e,getPreviewVolume:e=>e.previewVolume,getSlimDownloads:e=>e.hasSlimDownloads,getSlimSidebar:e=>e.hasSlimSidebar},mutations={SET_CURRENT_COMMIT(e,n){e.currentCommit=n},SET_LATEST_COMMIT(e,n){e.latestCommit=n},SET_UPDATE_AVAILABLE(e,n){e.updateAvailable=n},SET_DEEMIX_VERSION(e,n){e.deemixVersion=n},SET_PREVIEW_VOLUME(e,n){e.previewVolume=n},SET_SLIM_DOWNLOADS(e,n){e.hasSlimDownloads=n},SET_SLIM_SIDEBAR(e,n){e.hasSlimSidebar=n}};var appInfo={state,getters,actions,mutations};const getDefaultState=()=>({arl:localStorage.getItem("arl")||"",status:null,user:{id:null,name:"",picture:""},clientMode:!1}),state$1=getDefaultState(),actions$1={login({commit:e,dispatch:n},a){const{arl:r,user:i,status:s}=a;n("setARL",{arl:r}),e("SET_USER",i),e("SET_STATUS",s)},logout({commit:e}){localStorage.removeItem("arl"),e("RESET_LOGIN")},setARL({commit:e},n){let{arl:a,saveOnLocalStorage:r}=n;r=typeof r=="undefined"?!0:r,e("SET_ARL",a),r&&localStorage.setItem("arl",a)},removeARL({commit:e}){e("SET_ARL",""),localStorage.removeItem("arl")},setUser({commit:e},n){e("SET_USER",n)},setClientMode({commit:e},n){e("SET_CLIENT_MODE",n)}},getters$1={getARL:e=>e.arl,getUser:e=>e.user,getClientMode:e=>e.clientMode,isLoggedIn:e=>!!e.arl},mutations$1={SET_ARL(e,n){e.arl=n},SET_STATUS(e,n){e.status=n},SET_USER(e,n){e.user=n},SET_CLIENT_MODE(e,n){e.clientMode=n},RESET_LOGIN(e){let n=e.clientMode;Object.assign(e,getDefaultState()),e.clientMode=n}};var login={state:state$1,getters:getters$1,actions:actions$1,mutations:mutations$1};const state$2=()=>({artist:"",bitrate:"",cover:"",downloaded:0,errors:[],failed:0,id:"",progress:0,silent:!0,size:0,title:"",type:"",uuid:""}),actions$2={setErrors({commit:e},n){e("SET_ERRORS",n)}},getters$2={getErrors:e=>e},mutations$2={SET_ERRORS(e,n){for(const a in e)if(e.hasOwnProperty(a)){const r=n[a];e[a]=r}}};var errors={state:state$2,getters:getters$2,actions:actions$2,mutations:mutations$2};Vue.use(index$2);var store=new index$2.Store({modules:{appInfo,login,errors},strict:!1});const socket=io.connect(window.location.href);socket.on("init_update",e=>{store.dispatch("setAppInfo",e)});var __vue_render__=function(e,n){var a=n._c;return a("div",{directives:[{name:"show",rawName:"v-show",value:!n.props.hidden,expression:"!props.hidden"}],staticClass:"flex justify-center items-center flex-col flex-1 h-full",class:n.props.additionalClasses},[a("span",{staticClass:"mb-5"},[n._v(n._s(n.props.text||"Loading..."))]),n._v(" "),n._m(0)])},__vue_staticRenderFns__=[function(e,n){var a=n._c;return a("div",{staticClass:"lds-ring"},[a("div"),n._v(" "),a("div"),n._v(" "),a("div"),n._v(" "),a("div")])}];const __vue_inject_styles__=function(e){if(!e)return;e("data-v-20045564_0",{source:".lds-ring[data-v-20045564]{display:inline-block;position:relative;width:80px;height:80px}.lds-ring div[data-v-20045564]{box-sizing:border-box;display:block;position:absolute;width:64px;height:64px;margin:8px;border:8px solid #fff;border-radius:50%;animation:lds-ring-data-v-20045564 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:#fff transparent transparent transparent}.lds-ring div[data-v-20045564]:nth-child(1){animation-delay:-.45s}.lds-ring div[data-v-20045564]:nth-child(2){animation-delay:-.3s}.lds-ring div[data-v-20045564]:nth-child(3){animation-delay:-.15s}@keyframes lds-ring-data-v-20045564{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}",map:void 0,media:void 0})},__vue_scope_id__="data-v-20045564",__vue_module_identifier__=void 0,__vue_is_functional_template__=!0;function __vue_normalize__(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};o.__file="BaseLoadingPlaceholder.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r;{let u;if(n&&(u=function(d){n.call(this,l(d))}),u!==void 0)if(o.functional){const d=o.render;o.render=function(m,h){return u.call(h),d(m,h)}}else{const d=o.beforeCreate;o.beforeCreate=d?[].concat(d,u):[u]}}return o}function __vue_create_injector__(){const e=document.head||document.getElementsByTagName("head")[0],n=__vue_create_injector__.styles||(__vue_create_injector__.styles={}),a=typeof navigator!="undefined"&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(i,s){if(document.querySelector('style[data-vue-ssr-id~="'+i+'"]'))return;const l=a?s.media||"default":i,c=n[l]||(n[l]={ids:[],parts:[],element:void 0});if(!c.ids.includes(i)){let o=s.source,u=c.ids.length;if(c.ids.push(i),s.map&&(o+=` /*# sourceURL=`+s.map.sources[0]+" */",o+=` /*# sourceMappingURL=data:application/json;base64,`+btoa(unescape(encodeURIComponent(JSON.stringify(s.map))))+" */"),a&&(c.element=c.element||document.querySelector("style[data-group="+l+"]")),!c.element){const d=c.element=document.createElement("style");d.type="text/css",s.media&&d.setAttribute("media",s.media),a&&(d.setAttribute("data-group",l),d.setAttribute("data-next-index","0")),e.appendChild(d)}if(a&&(u=parseInt(c.element.getAttribute("data-next-index")),c.element.setAttribute("data-next-index",u+1)),c.element.styleSheet)c.parts.push(o),c.element.styleSheet.cssText=c.parts.filter(Boolean).join(` -`);else{const d=document.createTextNode(o),f=c.element.childNodes;f[u]&&c.element.removeChild(f[u]),f.length?c.element.insertBefore(d,f[u]):c.element.appendChild(d)}}}}var BaseLoadingPlaceholder=__vue_normalize__({render:__vue_render__,staticRenderFns:__vue_staticRenderFns__},__vue_inject_styles__,{},__vue_scope_id__,__vue_is_functional_template__,__vue_module_identifier__,__vue_create_injector__);function sendAddToQueue(e,n=null){if(!e)throw new Error("No URL given to sendAddToQueue function!");socket.emit("addToQueue",{url:e,bitrate:n},()=>{})}function aggregateDownloadLinks(e){let n=[];return e.forEach(a=>{n.push(a.link)}),n.join(";")}var Downloads={sendAddToQueue};function generatePath(e){if(!e)throw new Error("No element passed to the generatePath function!");let n=[e];for(;(e=e.parentNode)&&e!==document;)n.push(e);return n}function isValidURL(e){let n=e.toLowerCase();if(n.startsWith("http")){if(n.indexOf("deezer.com")>=0||n.indexOf("deezer.page.link")>=0||n.indexOf("open.spotify.com")>=0||n.indexOf("link.tospotify.com")>=0)return!0}else if(n.startsWith("spotify:"))return!0;return!1}function convertDuration(e){let n,a;return n=Math.floor(e/60),a=e-n*60,a<10&&(a="0"+a),n+":"+a}function convertDurationSeparated(e){let n,a,r;return a=Math.floor(e/60),n=Math.floor(a/60),r=e-a*60,a-=n*60,[n,a,r]}function numberWithDots(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,".")}function debounce(e,n,a){var r;return function(){var i=this,s=arguments,l=function(){r=null,a||e.apply(i,s)},c=a&&!r;clearTimeout(r),r=setTimeout(l,n),c&&e.apply(i,s)}}function copyToClipboard(e){const n=document.createElement("input");document.body.appendChild(n),n.setAttribute("type","text"),n.setAttribute("value",e),n.select(),n.setSelectionRange(0,99999),document.execCommand("copy"),n.remove()}function getPropertyWithFallback(e,...n){for(const a of n){let r=/\./.test(a),i=r?a.split(".").reduce((s,l)=>{if(s)return s[l]},e):e[a];if(typeof i!="undefined")return i}return null}var Utils={isValidURL,convertDuration,convertDurationSeparated,numberWithDots,debounce};const downloadQualities=[{objName:"flac",label:"FLAC",value:9},{objName:"320kbps",label:"MP3 320kbps",value:3},{objName:"128kbps",label:"MP3 128kbps",value:1},{objName:"realityAudioHQ",label:"360 Reality Audio [HQ]",value:15},{objName:"realityAudioMQ",label:"360 Reality Audio [MQ]",value:14},{objName:"realityAudioLQ",label:"360 Reality Audio [LQ]",value:13}];var script={data(){return{menuOpen:!1,xPos:0,yPos:0,deezerHref:"",generalHref:"",imgSrc:""}},computed:{options(){const e={cut:{label:this.$t("globals.cut"),show:!1,position:1,action:()=>{document.execCommand("Cut")}},copy:{label:this.$t("globals.copy"),show:!1,position:2,action:()=>{document.execCommand("Copy")}},copyLink:{label:this.$t("globals.copyLink"),show:!1,position:3,action:()=>{copyToClipboard(this.generalHref)}},copyImageLink:{label:this.$t("globals.copyImageLink"),show:!1,position:4,action:()=>{copyToClipboard(this.imgSrc)}},copyDeezerLink:{label:this.$t("globals.copyDeezerLink"),show:!1,position:5,action:()=>{copyToClipboard(this.deezerHref)}},paste:{label:this.$t("globals.paste"),show:!1,position:6,action:()=>{clipboard in navigator?navigator.clipboard.readText().then(a=>{document.execCommand("insertText",void 0,a)}):document.execCommand("paste")}}};let n=Object.values(e).length+1;return downloadQualities.forEach((a,r)=>{e[a.objName]={label:`${this.$t("globals.download",{thing:a.label})}`,show:!1,position:n+r,action:sendAddToQueue.bind(null,this.deezerHref,a.value)}}),e},sortedOptions(){return Object.values(this.options).sort((e,n)=>e.position{this.menuOpen=!1,this.options.copyLink.show=!1,this.options.copyDeezerLink.show=!1,this.options.copyImageLink.show=!1,downloadQualities.forEach(e=>{this.options[e.objName].show=!1})}).catch(e=>{console.error(e)})},positionMenu(e,n){this.xPos=`${e}px`,this.yPos=`${n}px`,this.$nextTick().then(()=>{const{innerHeight:a,innerWidth:r}=window,i=e+this.$refs.contextMenu.getBoundingClientRect().width,s=n+this.$refs.contextMenu.getBoundingClientRect().height;if(i>r){const l=i-r+15;this.xPos=`${e-l}px`}if(s>a){const l=s-a+15;this.yPos=`${n-l}px`}})},showDeezerOptions(){this.options.copyDeezerLink.show=!0,downloadQualities.forEach(e=>{this.options[e.objName].show=!0})}}};const __vue_script__=script;var __vue_render__$1=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("div",{directives:[{name:"show",rawName:"v-show",value:e.menuOpen,expression:"menuOpen"}],ref:"contextMenu",staticClass:"context-menu",style:{top:e.yPos,left:e.xPos}},e._l(e.sortedOptions,function(r){return a("button",{directives:[{name:"show",rawName:"v-show",value:r.show,expression:"option.show"}],key:r.label,staticClass:"btn menu-option",on:{click:function(i){return i.preventDefault(),r.action(i)}}},[a("span",{staticClass:"menu-option__text"},[e._v(e._s(r.label))])])}),0)},__vue_staticRenderFns__$1=[];const __vue_inject_styles__$1=function(e){if(!e)return;e("data-v-b75ae3cc_0",{source:".context-menu[data-v-b75ae3cc]{position:absolute;top:0;left:0;min-width:100px;border-radius:7px;background:var(--secondary-background);box-shadow:4px 10px 18px 0 rgba(0,0,0,.15);overflow:hidden;z-index:10000}.menu-option[data-v-b75ae3cc]{display:flex;align-items:center;width:100%;height:40px;padding-left:10px;padding-right:10px;color:var(--foreground);cursor:pointer}.menu-option[data-v-b75ae3cc]:hover{background:var(--table-highlight);filter:brightness(150%)}.menu-option__text[data-v-b75ae3cc]{text-transform:capitalize}button[data-v-b75ae3cc]{color:var(--primary-text);color:unset;background-color:var(--primary-color);background-color:unset;min-width:unset;position:unset;border:unset;border-radius:unset;font-family:unset;font-weight:unset;font-size:unset;padding:unset;margin-right:unset;height:unset;text-transform:unset;cursor:unset;transition:unset}button[data-v-b75ae3cc]:focus{outline:0}button[data-v-b75ae3cc]:active{background-color:unset;transform:unset}button[data-v-b75ae3cc]:hover{background:unset;border:unset}",map:void 0,media:void 0})},__vue_scope_id__$1="data-v-b75ae3cc",__vue_module_identifier__$1=void 0,__vue_is_functional_template__$1=!1;function __vue_normalize__$1(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};o.__file="TheContextMenu.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r;{let u;if(n&&(u=function(d){n.call(this,l(d))}),u!==void 0)if(o.functional){const d=o.render;o.render=function(m,h){return u.call(h),d(m,h)}}else{const d=o.beforeCreate;o.beforeCreate=d?[].concat(d,u):[u]}}return o}function __vue_create_injector__$1(){const e=document.head||document.getElementsByTagName("head")[0],n=__vue_create_injector__$1.styles||(__vue_create_injector__$1.styles={}),a=typeof navigator!="undefined"&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(i,s){if(document.querySelector('style[data-vue-ssr-id~="'+i+'"]'))return;const l=a?s.media||"default":i,c=n[l]||(n[l]={ids:[],parts:[],element:void 0});if(!c.ids.includes(i)){let o=s.source,u=c.ids.length;if(c.ids.push(i),s.map&&(o+=` +`);else{const d=document.createTextNode(o),f=c.element.childNodes;f[u]&&c.element.removeChild(f[u]),f.length?c.element.insertBefore(d,f[u]):c.element.appendChild(d)}}}}var BaseLoadingPlaceholder=__vue_normalize__({render:__vue_render__,staticRenderFns:__vue_staticRenderFns__},__vue_inject_styles__,{},__vue_scope_id__,__vue_is_functional_template__,__vue_module_identifier__,__vue_create_injector__);function sendAddToQueue(e,n=null){if(!e)throw new Error("No URL given to sendAddToQueue function!");socket.emit("addToQueue",{url:e,bitrate:n},()=>{})}function aggregateDownloadLinks(e){let n=[];return e.forEach(a=>{n.push(a.link)}),n.join(";")}var Downloads={sendAddToQueue};function generatePath(e){if(!e)throw new Error("No element passed to the generatePath function!");let n=[e];for(;(e=e.parentNode)&&e!==document;)n.push(e);return n}function isValidURL(e){let n=e.toLowerCase();if(n.startsWith("http")){if(n.indexOf("deezer.com")>=0||n.indexOf("deezer.page.link")>=0||n.indexOf("open.spotify.com")>=0||n.indexOf("link.tospotify.com")>=0)return!0}else if(n.startsWith("spotify:"))return!0;return!1}function convertDuration(e){let n,a;return n=Math.floor(e/60),a=e-n*60,a<10&&(a="0"+a),n+":"+a}function convertDurationSeparated(e){let n,a,r;return a=Math.floor(e/60),n=Math.floor(a/60),r=e-a*60,a-=n*60,[n,a,r]}function numberWithDots(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,".")}function debounce(e,n,a){var r;return function(){var i=this,s=arguments,l=function(){r=null,a||e.apply(i,s)},c=a&&!r;clearTimeout(r),r=setTimeout(l,n),c&&e.apply(i,s)}}function copyToClipboard(e){const n=document.createElement("input");document.body.appendChild(n),n.setAttribute("type","text"),n.setAttribute("value",e),n.select(),n.setSelectionRange(0,99999),document.execCommand("copy"),n.remove()}function getPropertyWithFallback(e,...n){for(const a of n){let r=/\./.test(a),i=r?a.split(".").reduce((s,l)=>{if(s)return s[l]},e):e[a];if(typeof i!="undefined")return i}return null}var Utils={isValidURL,convertDuration,convertDurationSeparated,numberWithDots,debounce};const downloadQualities=[{objName:"flac",label:"FLAC",value:9},{objName:"320kbps",label:"MP3 320kbps",value:3},{objName:"128kbps",label:"MP3 128kbps",value:1},{objName:"realityAudioHQ",label:"360 Reality Audio [HQ]",value:15},{objName:"realityAudioMQ",label:"360 Reality Audio [MQ]",value:14},{objName:"realityAudioLQ",label:"360 Reality Audio [LQ]",value:13}];var script={data(){return{menuOpen:!1,xPos:0,yPos:0,deezerHref:"",generalHref:"",imgSrc:""}},computed:{options(){const e={cut:{label:this.$t("globals.cut"),show:!1,position:1,action:()=>{document.execCommand("Cut")}},copy:{label:this.$t("globals.copy"),show:!1,position:2,action:()=>{document.execCommand("Copy")}},copyLink:{label:this.$t("globals.copyLink"),show:!1,position:3,action:()=>{copyToClipboard(this.generalHref)}},copyImageLink:{label:this.$t("globals.copyImageLink"),show:!1,position:4,action:()=>{copyToClipboard(this.imgSrc)}},copyDeezerLink:{label:this.$t("globals.copyDeezerLink"),show:!1,position:5,action:()=>{copyToClipboard(this.deezerHref)}},paste:{label:this.$t("globals.paste"),show:!1,position:6,action:()=>{clipboard in navigator?navigator.clipboard.readText().then(a=>{document.execCommand("insertText",void 0,a)}):document.execCommand("paste")}}};let n=Object.values(e).length+1;return downloadQualities.forEach((a,r)=>{e[a.objName]={label:`${this.$t("globals.download",{thing:a.label})}`,show:!1,position:n+r,action:sendAddToQueue.bind(null,this.deezerHref,a.value)}}),e},sortedOptions(){return Object.values(this.options).sort((e,n)=>e.position{this.menuOpen=!1,this.options.copyLink.show=!1,this.options.copyDeezerLink.show=!1,this.options.copyImageLink.show=!1,downloadQualities.forEach(e=>{this.options[e.objName].show=!1})}).catch(e=>{console.error(e)})},positionMenu(e,n){this.xPos=`${e}px`,this.yPos=`${n}px`,this.$nextTick().then(()=>{const{innerHeight:a,innerWidth:r}=window,i=e+this.$refs.contextMenu.getBoundingClientRect().width,s=n+this.$refs.contextMenu.getBoundingClientRect().height;if(i>r){const l=i-r+15;this.xPos=`${e-l}px`}if(s>a){const l=s-a+15;this.yPos=`${n-l}px`}})},showDeezerOptions(){this.options.copyDeezerLink.show=!0,downloadQualities.forEach(e=>{this.options[e.objName].show=!0})}}};const __vue_script__=script;var __vue_render__$1=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("div",{directives:[{name:"show",rawName:"v-show",value:e.menuOpen,expression:"menuOpen"}],ref:"contextMenu",staticClass:"context-menu",style:{top:e.yPos,left:e.xPos}},e._l(e.sortedOptions,function(r){return a("button",{directives:[{name:"show",rawName:"v-show",value:r.show,expression:"option.show"}],key:r.label,staticClass:"btn menu-option",on:{click:function(i){return i.preventDefault(),r.action(i)}}},[a("span",{staticClass:"menu-option__text"},[e._v(e._s(r.label))])])}),0)},__vue_staticRenderFns__$1=[];const __vue_inject_styles__$1=function(e){if(!e)return;e("data-v-69d14104_0",{source:".context-menu[data-v-69d14104]{position:absolute;top:0;left:0;min-width:100px;border-radius:7px;background:var(--secondary-background);box-shadow:4px 10px 18px 0 rgba(0,0,0,.15);overflow:hidden;z-index:10000}.menu-option[data-v-69d14104]{display:flex;align-items:center;width:100%;height:40px;padding-left:10px;padding-right:10px;color:var(--foreground);cursor:pointer}.menu-option[data-v-69d14104]:hover{background:var(--table-highlight);filter:brightness(150%)}.menu-option__text[data-v-69d14104]{text-transform:capitalize}button[data-v-69d14104]{color:var(--primary-text);color:unset;background-color:var(--primary-color);background-color:unset;min-width:unset;position:unset;border:unset;border-radius:unset;font-family:unset;font-weight:unset;font-size:unset;padding:unset;margin-right:unset;height:unset;text-transform:unset;cursor:unset;transition:unset}button[data-v-69d14104]:focus{outline:0}button[data-v-69d14104]:active{background-color:unset;transform:unset}button[data-v-69d14104]:hover{background:unset;border:unset}",map:void 0,media:void 0})},__vue_scope_id__$1="data-v-69d14104",__vue_module_identifier__$1=void 0,__vue_is_functional_template__$1=!1;function __vue_normalize__$1(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};o.__file="TheContextMenu.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r;{let u;if(n&&(u=function(d){n.call(this,l(d))}),u!==void 0)if(o.functional){const d=o.render;o.render=function(m,h){return u.call(h),d(m,h)}}else{const d=o.beforeCreate;o.beforeCreate=d?[].concat(d,u):[u]}}return o}function __vue_create_injector__$1(){const e=document.head||document.getElementsByTagName("head")[0],n=__vue_create_injector__$1.styles||(__vue_create_injector__$1.styles={}),a=typeof navigator!="undefined"&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(i,s){if(document.querySelector('style[data-vue-ssr-id~="'+i+'"]'))return;const l=a?s.media||"default":i,c=n[l]||(n[l]={ids:[],parts:[],element:void 0});if(!c.ids.includes(i)){let o=s.source,u=c.ids.length;if(c.ids.push(i),s.map&&(o+=` /*# sourceURL=`+s.map.sources[0]+" */",o+=` /*# sourceMappingURL=data:application/json;base64,`+btoa(unescape(encodeURIComponent(JSON.stringify(s.map))))+" */"),a&&(c.element=c.element||document.querySelector("style[data-group="+l+"]")),!c.element){const d=c.element=document.createElement("style");d.type="text/css",s.media&&d.setAttribute("media",s.media),a&&(d.setAttribute("data-group",l),d.setAttribute("data-next-index","0")),e.appendChild(d)}if(a&&(u=parseInt(c.element.getAttribute("data-next-index")),c.element.setAttribute("data-next-index",u+1)),c.element.styleSheet)c.parts.push(o),c.element.styleSheet.cssText=c.parts.filter(Boolean).join(` `);else{const d=document.createTextNode(o),f=c.element.childNodes;f[u]&&c.element.removeChild(f[u]),f.length?c.element.insertBefore(d,f[u]):c.element.appendChild(d)}}}}var TheContextMenu=__vue_normalize__$1({render:__vue_render__$1,staticRenderFns:__vue_staticRenderFns__$1},__vue_inject_styles__$1,__vue_script__,__vue_scope_id__$1,__vue_is_functional_template__$1,__vue_module_identifier__$1,__vue_create_injector__$1),EventBus=new Vue;async function adjustVolume(e,n,{duration:a=1e3,easing:r=swing,interval:i=13}={}){const s=e.volume,l=n-s;if(!l||!a||!r||!i)return e.volume=n,Promise.resolve();const c=Math.floor(a/i);let o=1;return new Promise(u=>{const d=setInterval(()=>{e.volume=s+r(o/c)*l,++o===c&&(clearInterval(d),u())},i)})}function swing(e){return .5-Math.cos(e*Math.PI)/2}var script$1={data:()=>({previewStopped:!1}),computed:{...mapGetters({previewVolume:"getPreviewVolume"})},mounted(){this.$refs.preview.volume=1,this.$router.beforeEach((e,n,a)=>{this.stopStackedTabsPreview(),a()}),EventBus.$on("trackPreview:playPausePreview",this.playPausePreview),EventBus.$on("trackPreview:previewMouseEnter",this.previewMouseEnter),EventBus.$on("trackPreview:previewMouseLeave",this.previewMouseLeave)},methods:{async onCanPlay(){await this.$refs.preview.play(),this.previewStopped=!1,await adjustVolume(this.$refs.preview,this.previewVolume/100,{duration:500})},async onTimeUpdate(){if(isNaN(this.$refs.preview.duration))return;let e=this.$refs.preview.duration;if(isFinite(e)||(e=30),e-this.$refs.preview.currentTime>=1)return;if(this.previewStopped)return;await adjustVolume(this.$refs.preview,0,{duration:800}),this.previewStopped=!0,document.querySelectorAll("a[playing] > .preview_controls").forEach(n=>{n.style.opacity=0}),document.querySelectorAll("*").forEach(n=>{n.removeAttribute("playing")}),document.querySelectorAll(".preview_controls, .preview_playlist_controls").forEach(n=>{n.textContent="play_arrow"})},async playPausePreview(e){e.preventDefault(),e.stopPropagation();const{currentTarget:n}=e;var a=n.tagName=="I"?n:n.querySelector("i");n.hasAttribute("playing")?this.$refs.preview.paused?(this.$refs.preview.play(),this.previewStopped=!1,a.innerText="pause",await adjustVolume(this.$refs.preview,this.previewVolume/100,{duration:500})):(this.previewStopped=!0,a.innerText="play_arrow",await adjustVolume(this.$refs.preview,0,{duration:250}),this.$refs.preview.pause()):(document.querySelectorAll("*").forEach(r=>{r.removeAttribute("playing")}),n.setAttribute("playing",!0),document.querySelectorAll(".preview_controls, .preview_playlist_controls").forEach(r=>{r.textContent="play_arrow"}),document.querySelectorAll(".preview_controls").forEach(r=>{r.style.opacity=0}),a.innerText="pause",a.style.opacity=1,this.previewStopped=!1,await adjustVolume(this.$refs.preview,0,{duration:250}),this.$refs.preview.pause(),document.getElementById("preview-track_source").src=n.getAttribute("data-preview"),this.$refs.preview.load())},async stopStackedTabsPreview(){let e=Array.prototype.slice.call(document.querySelectorAll(".preview_playlist_controls[playing]"));if(e.length===0)return;await adjustVolume(this.$refs.preview,0,{duration:250}),this.$refs.preview.pause(),this.previewStopped=!0,e.forEach(n=>{n.removeAttribute("playing"),n.innerText="play_arrow"})},previewMouseEnter(e){e.currentTarget.style.opacity=1},previewMouseLeave(e){const{currentTarget:n}=e,a=n.parentElement.hasAttribute("playing");(a&&this.previewStopped||!a)&&(n.style.opacity=0)}}};const __vue_script__$1=script$1;var __vue_render__$2=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("audio",{ref:"preview",attrs:{id:"preview-track"},on:{canplay:e.onCanPlay,timeupdate:e.onTimeUpdate}},[a("source",{attrs:{id:"preview-track_source",src:"",type:"audio/mpeg"}})])},__vue_staticRenderFns__$2=[];const __vue_inject_styles__$2=void 0,__vue_scope_id__$2=void 0,__vue_is_functional_template__$2=!1;function __vue_normalize__$2(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};return o.__file="TheTrackPreview.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r,o}var TheTrackPreview=__vue_normalize__$2({render:__vue_render__$2,staticRenderFns:__vue_staticRenderFns__$2},__vue_inject_styles__$2,__vue_script__$1,__vue_scope_id__$2,__vue_is_functional_template__$2),script$2={data:()=>({open:!1,url:""}),mounted(){this.$root.$on("QualityModal:open",this.openModal),this.$refs.modal.addEventListener("webkitAnimationEnd",this.handleAnimationEnd)},methods:{tryToDownloadTrack(e){const{target:n}=e;if(this.$refs.modal.classList.add("animated","fadeOut"),!n.matches(".quality-button"))return;Downloads.sendAddToQueue(this.url,n.dataset.qualityValue)},openModal(e){this.url=e,this.open=!0,this.$refs.modal.classList.add("animated","fadeIn")},handleAnimationEnd(e){const{animationName:n}=e;if(this.$refs.modal.classList.remove("animated",n),n==="fadeIn")return;this.open=!1}}};const __vue_script__$2=script$2;var __vue_render__$3=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("div",{directives:[{name:"show",rawName:"v-show",value:e.open,expression:"open"}],ref:"modal",staticClass:"smallmodal",attrs:{id:"modal_quality"},on:{click:function(r){return e.tryToDownloadTrack(r)}}},[a("div",{staticClass:"smallmodal-content"},[a("button",{staticClass:"btn btn-primary quality-button",attrs:{"data-quality-value":"9"}},[e._v(` @@ -2725,15 +2725,13 @@ PERFORMANCE OF THIS SOFTWARE. `)]),e._v(" "),a("p",{staticClass:"mb-2 text-base"},[e._v("For security reasons you will need to provide your own Client ID and Secret")]),e._v(" "),a("h2",{staticClass:"mt-6 text-3xl"},[e._v("How do I get my Client ID and Secret?")]),e._v(" "),e._m(0),e._v(" "),e._m(1),e._v(" "),e._m(2),e._v(" "),e._m(3),e._v(" "),a("p",{staticClass:"mb-2 text-base"},[e._v("Now you can copy-paste those results in the appropriate fields in the settings.")]),e._v(" "),a("h2",{staticClass:"mt-6 text-3xl"},[e._v("How do I get my Spotify Username?")]),e._v(" "),e._m(4)])},__vue_staticRenderFns__$d=[function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("p",{staticClass:"mb-2 text-base"},[e._v("Connect to "),a("a",{attrs:{href:"https://developer.spotify.com/dashboard",target:"_blank"}},[e._v("Spotify for Developers's Dashboard")]),e._v(" and login with your Spotify account.")])},function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("p",{staticClass:"mb-2 text-base"},[e._v(` Click on "Create an App".`),a("br"),e._v(" "),a("img",{attrs:{src:"https://i.imgur.com/YFz7rHj.png",alt:"Create an App button on Spotify for Developers's Dashboard"}})])},function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("p",{staticClass:"mb-2 text-base"},[e._v(` Fill out the "App name" and "App description" fields and check both checkboxes. Then click on the "Create" button.`),a("br"),e._v(" "),a("img",{attrs:{src:"https://i.imgur.com/A9cvDkK.png",alt:"Create an app form"}})])},function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("p",{staticClass:"mb-2 text-base"},[e._v(` - Now you can see the Client ID. If you click on "Show Client Secret" the client secret will be revealed.`),a("br"),e._v(" "),a("img",{attrs:{src:"https://i.imgur.com/foEfIhO.png",alt:"Screen of client ID and Secret"}})])},function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("p",{staticClass:"mb-2 text-base"},[e._v("You can get your Spotify Username from the "),a("a",{attrs:{href:"https://www.spotify.com/it/account/overview/",target:"_blank"}},[e._v("Overview page on Spotify's Website")]),e._v(".")])}];const __vue_inject_styles__$d=void 0,__vue_scope_id__$d=void 0,__vue_is_functional_template__$d=!1;function __vue_normalize__$d(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};return o.__file="InfoSpotifyFeatures.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r,o}var InfoSpotifyFeatures=__vue_normalize__$d({render:__vue_render__$d,staticRenderFns:__vue_staticRenderFns__$d},__vue_inject_styles__$d,__vue_script__$b,__vue_scope_id__$d,__vue_is_functional_template__$d),freeGlobal=typeof global=="object"&&global&&global.Object===Object&&global,freeSelf=typeof self=="object"&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol$1=root.Symbol,objectProto=Object.prototype,hasOwnProperty$2=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol$1?Symbol$1.toStringTag:void 0;function getRawTag(e){var n=hasOwnProperty$2.call(e,symToStringTag),a=e[symToStringTag];try{e[symToStringTag]=void 0;var r=!0}catch(s){}var i=nativeObjectToString.call(e);return r&&(n?e[symToStringTag]=a:delete e[symToStringTag]),i}var objectProto$1=Object.prototype,nativeObjectToString$1=objectProto$1.toString;function objectToString(e){return nativeObjectToString$1.call(e)}var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag$1=Symbol$1?Symbol$1.toStringTag:void 0;function baseGetTag(e){return e==null?e===void 0?undefinedTag:nullTag:symToStringTag$1&&symToStringTag$1 in Object(e)?getRawTag(e):objectToString(e)}function isObjectLike(e){return e!=null&&typeof e=="object"}var symbolTag="[object Symbol]";function isSymbol(e){return typeof e=="symbol"||isObjectLike(e)&&baseGetTag(e)==symbolTag}function arrayMap(e,n){for(var a=-1,r=e==null?0:e.length,i=Array(r);++a-1&&e%1==0)&&e-1&&e%1==0&&e<=MAX_SAFE_INTEGER$1}function isArrayLike(e){return e!=null&&isLength(e.length)&&!isFunction$2(e)}var objectProto$3=Object.prototype;function isPrototype(e){var n=e&&e.constructor,a=typeof n=="function"&&n.prototype||objectProto$3;return e===a}function baseTimes(e,n){for(var a=-1,r=Array(e);++a-1}function listCacheSet(e,n){var a=this.__data__,r=assocIndexOf(a,e);return r<0?(++this.size,a.push([e,n])):a[r][1]=n,this}function ListCache(e){var n=-1,a=e==null?0:e.length;for(this.clear();++nc))return!1;var u=s.get(e);if(u&&s.get(n))return u==n;var d=-1,f=!0,m=a&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(s.set(e,n),s.set(n,e);++d=n||C<0||f&&I>=s}function k(){var z=now();if(w(z))return x(z);c=setTimeout(k,y(z))}function x(z){return c=void 0,m&&r?h(z):(r=i=void 0,l)}function A(){c!==void 0&&clearTimeout(c),u=0,r=o=i=c=void 0}function R(){return c===void 0?l:x(now())}function D(){var z=now(),C=w(z);if(r=arguments,i=this,o=z,C){if(c===void 0)return b(o);if(f)return clearTimeout(c),c=setTimeout(k,n),h(o)}return c===void 0&&(c=setTimeout(k,n)),l}return D.cancel=A,D.flush=R,D}function baseMap(e,n){var a=-1,r=isArrayLike(e)?Array(e.length):[];return baseEach(e,function(i,s,l){r[++a]=n(i,s,l)}),r}var mapTag$3="[object Map]",setTag$3="[object Set]",objectProto$c=Object.prototype,hasOwnProperty$b=objectProto$c.hasOwnProperty;function isEmpty(e){if(e==null)return!0;if(isArrayLike(e)&&(isArray$2(e)||typeof e=="string"||typeof e.splice=="function"||isBuffer(e)||isTypedArray(e)||isArguments(e)))return!e.length;var n=getTag$1(e);if(n==mapTag$3||n==setTag$3)return!e.size;if(isPrototype(e))return!baseKeys(e).length;for(var a in e)if(hasOwnProperty$b.call(e,a))return!1;return!0}function baseSortBy(e,n){var a=e.length;for(e.sort(n);a--;)e[a]=e[a].value;return e}function compareAscending(e,n){if(e!==n){var a=e!==void 0,r=e===null,i=e===e,s=isSymbol(e),l=n!==void 0,c=n===null,o=n===n,u=isSymbol(n);if(!c&&!u&&!s&&e>n||s&&l&&o&&!c&&!u||r&&l&&o||!a&&o||!i)return 1;if(!r&&!s&&!u&&e=c)return o;var u=a[r];return o*(u=="desc"?-1:1)}}return e.index-n.index}function baseOrderBy(e,n,a){var r=-1;n=arrayMap(n.length?n:[identity$1],baseUnary(baseIteratee));var i=baseMap(e,function(s,l,c){var o=arrayMap(n,function(u){return u(s)});return{criteria:o,index:++r,value:s}});return baseSortBy(i,function(s,l){return compareMultiple(s,l,a)})}function orderBy(e,n,a,r){return e==null?[]:(isArray$2(n)||(n=n==null?[]:[n]),a=r?void 0:a,isArray$2(a)||(a=a==null?[]:[a]),baseOrderBy(e,n,a))}const BaseTab=defineComponent({name:"BaseTab",functional:!0,render(e,n){return e("li",{class:[n.data.class,"section-tabs__tab","uppercase-first-letter"],on:n.data.on},n.slots().default)}}),BaseTabs=defineComponent({name:"BaseTabs",functional:!0,render(e,n){return e("ul",{class:[n.data.class,"my-8","section-tabs"],on:n.data.on},n.slots().default)}});function checkNewRelease(e){let n=new Date;return n.setHours(0,0,0,0),e=new Date(e),e.setDate(e.getDate()+3),n.getTime()<=e.getTime()}function formatArtistData(e){return{artistName:getPropertyWithFallback(e,"name"),artistPictureXL:getPropertyWithFallback(e,"picture_xl"),artistReleases:formatArtistReleases(getPropertyWithFallback(e,"releases"))}}function formatArtistReleases(e){let n={};for(const a in e)if(e.hasOwnProperty(a)){const r=e[a];n[a]=[];for(const i of r)n[a].push({releaseID:getPropertyWithFallback(i,"id"),releaseCover:getPropertyWithFallback(i,"cover_small"),releaseTitle:getPropertyWithFallback(i,"title"),releaseDate:getPropertyWithFallback(i,"release_date"),releaseTracksNumber:getPropertyWithFallback(i,"nb_song"),releaseLink:getPropertyWithFallback(i,"link"),isReleaseExplicit:getPropertyWithFallback(i,"explicit_lyrics")})}return n}function getArtistData(e){return socket.emit("getTracklist",{type:"artist",id:e}),new Promise((n,a)=>{socket.on("show_artist",r=>{socket.off("show_artist"),n(r)})})}function standardizeData(e,n){if(e.hasLoaded){const{data:a}=e,r=[];for(const i of a){let s=n(i);r.push(s)}return{data:r,hasLoaded:e.hasLoaded}}else return null}var script$c=defineComponent({components:{BaseTabs,BaseTab},setup(e,n){const a=reactive({currentTab:"",sortKey:"releaseDate",sortOrder:"desc",artistReleases:{},artistName:"",artistPicture:"",currentRelease:computed(()=>a.artistReleases[a.currentTab])}),r=computed(()=>n.root.$router.currentRoute.params.id),i=ref$2(!1);getArtistData(unref(r)).then(c=>{i.value=!0;const{data:[{artistName:o,artistPictureXL:u,artistReleases:d}]}=standardizeData({data:[c],hasLoaded:unref(i)},formatArtistData);Object.assign(a,{artistName:o,artistPicture:u,artistReleases:d,currentTab:Object.keys(d)[0]})}).catch(c=>console.error(c));const s=computed(()=>{if(!unref(i))return[];let c=a.sortKey;return c==="releaseTracksNumber"&&(c=o=>new Number(o.releaseTracksNumber)),orderBy(a.currentRelease,c,a.sortOrder)}),l=c=>{a.currentTab=c};return{...toRefs(a),downloadLink:computed(()=>`https://www.deezer.com/artist/${unref(r)}`),headerStyle:computed(()=>({backgroundImage:`linear-gradient(to bottom, transparent 0%, var(--main-background) 100%), url(${a.artistPicture})`})),sortedData:s,sendAddToQueue,checkNewRelease,changeTab:l}},data(){const e=this.$t.bind(this),n=this.$tc.bind(this);return{head:[{title:n("globals.listTabs.title",1),sortKey:"releaseTitle"},{title:e("globals.listTabs.releaseDate"),sortKey:"releaseDate"},{title:n("globals.listTabs.track",2),sortKey:"releaseTracksNumber"},{title:"",width:"32px"}]}},methods:{sortBy(e){e===this.sortKey?this.sortOrder=this.sortOrder==="asc"?"desc":"asc":(this.sortKey=e,this.sortOrder="asc")}}});const __vue_script__$c=script$c;var __vue_render__$e=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("div",{staticClass:"relative image-header"},[a("header",{staticClass:"flex items-center",style:e.headerStyle},[a("h1",{staticClass:"m-0"},[e._v(e._s(e.artistName))]),e._v(" "),a("div",{staticClass:"grid w-16 h-16 ml-auto rounded-full cursor-pointer bg-primary text-grayscale-870 place-items-center",attrs:{"aria-label":"download",role:"button"},on:{click:function(r){return r.stopPropagation(),e.sendAddToQueue(e.downloadLink)}}},[a("i",{staticClass:"text-4xl material-icons",attrs:{title:e.$t("globals.download_hint")}},[e._v("get_app")])])]),e._v(" "),a("BaseTabs",e._l(e.artistReleases,function(r,i){return a("BaseTab",{key:i,class:{active:e.currentTab===i},on:{click:function(s){return e.changeTab(i)}}},[e._v(` + Now you can see the Client ID. If you click on "Show Client Secret" the client secret will be revealed.`),a("br"),e._v(" "),a("img",{attrs:{src:"https://i.imgur.com/foEfIhO.png",alt:"Screen of client ID and Secret"}})])},function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("p",{staticClass:"mb-2 text-base"},[e._v("You can get your Spotify Username from the "),a("a",{attrs:{href:"https://www.spotify.com/it/account/overview/",target:"_blank"}},[e._v("Overview page on Spotify's Website")]),e._v(".")])}];const __vue_inject_styles__$d=void 0,__vue_scope_id__$d=void 0,__vue_is_functional_template__$d=!1;function __vue_normalize__$d(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};return o.__file="InfoSpotifyFeatures.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r,o}var InfoSpotifyFeatures=__vue_normalize__$d({render:__vue_render__$d,staticRenderFns:__vue_staticRenderFns__$d},__vue_inject_styles__$d,__vue_script__$b,__vue_scope_id__$d,__vue_is_functional_template__$d),freeGlobal=typeof global=="object"&&global&&global.Object===Object&&global,freeSelf=typeof self=="object"&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol$1=root.Symbol,objectProto=Object.prototype,hasOwnProperty$2=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol$1?Symbol$1.toStringTag:void 0;function getRawTag(e){var n=hasOwnProperty$2.call(e,symToStringTag),a=e[symToStringTag];try{e[symToStringTag]=void 0;var r=!0}catch(s){}var i=nativeObjectToString.call(e);return r&&(n?e[symToStringTag]=a:delete e[symToStringTag]),i}var objectProto$1=Object.prototype,nativeObjectToString$1=objectProto$1.toString;function objectToString(e){return nativeObjectToString$1.call(e)}var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag$1=Symbol$1?Symbol$1.toStringTag:void 0;function baseGetTag(e){return e==null?e===void 0?undefinedTag:nullTag:symToStringTag$1&&symToStringTag$1 in Object(e)?getRawTag(e):objectToString(e)}function isObjectLike(e){return e!=null&&typeof e=="object"}var symbolTag="[object Symbol]";function isSymbol(e){return typeof e=="symbol"||isObjectLike(e)&&baseGetTag(e)==symbolTag}function arrayMap(e,n){for(var a=-1,r=e==null?0:e.length,i=Array(r);++a-1&&e%1==0)&&e-1&&e%1==0&&e<=MAX_SAFE_INTEGER$1}function isArrayLike(e){return e!=null&&isLength(e.length)&&!isFunction$2(e)}var objectProto$3=Object.prototype;function isPrototype(e){var n=e&&e.constructor,a=typeof n=="function"&&n.prototype||objectProto$3;return e===a}function baseTimes(e,n){for(var a=-1,r=Array(e);++a-1}function listCacheSet(e,n){var a=this.__data__,r=assocIndexOf(a,e);return r<0?(++this.size,a.push([e,n])):a[r][1]=n,this}function ListCache(e){var n=-1,a=e==null?0:e.length;for(this.clear();++nc))return!1;var u=s.get(e);if(u&&s.get(n))return u==n;var d=-1,f=!0,m=a&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(s.set(e,n),s.set(n,e);++d=n||C<0||f&&I>=s}function k(){var z=now();if(w(z))return x(z);c=setTimeout(k,y(z))}function x(z){return c=void 0,m&&r?h(z):(r=i=void 0,l)}function A(){c!==void 0&&clearTimeout(c),u=0,r=o=i=c=void 0}function R(){return c===void 0?l:x(now())}function D(){var z=now(),C=w(z);if(r=arguments,i=this,o=z,C){if(c===void 0)return b(o);if(f)return clearTimeout(c),c=setTimeout(k,n),h(o)}return c===void 0&&(c=setTimeout(k,n)),l}return D.cancel=A,D.flush=R,D}function baseMap(e,n){var a=-1,r=isArrayLike(e)?Array(e.length):[];return baseEach(e,function(i,s,l){r[++a]=n(i,s,l)}),r}var mapTag$3="[object Map]",setTag$3="[object Set]",objectProto$c=Object.prototype,hasOwnProperty$b=objectProto$c.hasOwnProperty;function isEmpty(e){if(e==null)return!0;if(isArrayLike(e)&&(isArray$2(e)||typeof e=="string"||typeof e.splice=="function"||isBuffer(e)||isTypedArray(e)||isArguments(e)))return!e.length;var n=getTag$1(e);if(n==mapTag$3||n==setTag$3)return!e.size;if(isPrototype(e))return!baseKeys(e).length;for(var a in e)if(hasOwnProperty$b.call(e,a))return!1;return!0}function baseSortBy(e,n){var a=e.length;for(e.sort(n);a--;)e[a]=e[a].value;return e}function compareAscending(e,n){if(e!==n){var a=e!==void 0,r=e===null,i=e===e,s=isSymbol(e),l=n!==void 0,c=n===null,o=n===n,u=isSymbol(n);if(!c&&!u&&!s&&e>n||s&&l&&o&&!c&&!u||r&&l&&o||!a&&o||!i)return 1;if(!r&&!s&&!u&&e=c)return o;var u=a[r];return o*(u=="desc"?-1:1)}}return e.index-n.index}function baseOrderBy(e,n,a){var r=-1;n=arrayMap(n.length?n:[identity$1],baseUnary(baseIteratee));var i=baseMap(e,function(s,l,c){var o=arrayMap(n,function(u){return u(s)});return{criteria:o,index:++r,value:s}});return baseSortBy(i,function(s,l){return compareMultiple(s,l,a)})}function orderBy(e,n,a,r){return e==null?[]:(isArray$2(n)||(n=n==null?[]:[n]),a=r?void 0:a,isArray$2(a)||(a=a==null?[]:[a]),baseOrderBy(e,n,a))}const BaseTab=defineComponent({name:"BaseTab",functional:!0,render(e,n){return e("li",{class:[n.data.class,"section-tabs__tab","uppercase-first-letter"],on:n.data.on},n.slots().default)}}),BaseTabs=defineComponent({name:"BaseTabs",functional:!0,render(e,n){return e("ul",{class:[n.data.class,"my-8","section-tabs"],on:n.data.on},n.slots().default)}});function checkNewRelease(e){let n=new Date;return n.setHours(0,0,0,0),e=new Date(e),e.setDate(e.getDate()+3),n.getTime()<=e.getTime()}function formatArtistData(e){return{artistName:getPropertyWithFallback(e,"name"),artistPictureXL:getPropertyWithFallback(e,"picture_xl"),artistReleases:formatArtistReleases(getPropertyWithFallback(e,"releases"))}}function formatArtistReleases(e){let n={};for(const a in e)if(e.hasOwnProperty(a)){const r=e[a];n[a]=[];for(const i of r)n[a].push({releaseID:getPropertyWithFallback(i,"id"),releaseCover:getPropertyWithFallback(i,"cover_small"),releaseTitle:getPropertyWithFallback(i,"title"),releaseDate:getPropertyWithFallback(i,"release_date"),releaseTracksNumber:getPropertyWithFallback(i,"nb_song"),releaseLink:getPropertyWithFallback(i,"link"),isReleaseExplicit:getPropertyWithFallback(i,"explicit_lyrics")})}return n}function getArtistData(e){return socket.emit("getTracklist",{type:"artist",id:e}),new Promise((n,a)=>{socket.on("show_artist",r=>{socket.off("show_artist"),n(r)})})}function standardizeData(e,n){if(e.hasLoaded){const{data:a}=e,r=[];for(const i of a){let s=n(i);r.push(s)}return{data:r,hasLoaded:e.hasLoaded}}else return null}var script$c=defineComponent({components:{BaseTabs,BaseTab},setup(e,n){const a=reactive({currentTab:"",sortKey:"releaseDate",sortOrder:"desc",artistReleases:{},artistName:"",artistPicture:"",currentRelease:computed(()=>a.artistReleases[a.currentTab])}),r=computed(()=>n.root.$router.currentRoute.params.id),i=ref$2(!1);getArtistData(unref(r)).then(l=>{i.value=!0;const c={data:[l],hasLoaded:unref(i)},{data:[{artistName:o,artistPictureXL:u,artistReleases:d}]}=standardizeData(c,formatArtistData);Object.assign(a,{artistName:o,artistPicture:u,artistReleases:d,currentTab:Object.keys(d)[0]})}).catch(l=>console.error(l));const s=computed(()=>{if(!unref(i))return[];let l=a.sortKey;return l==="releaseTracksNumber"&&(l=c=>new Number(c.releaseTracksNumber)),orderBy(a.currentRelease,l,a.sortOrder)});return{...toRefs(a),downloadLink:computed(()=>`https://www.deezer.com/artist/${unref(r)}`),headerStyle:computed(()=>({backgroundImage:`linear-gradient(to bottom, transparent 0%, var(--main-background) 100%), url(${a.artistPicture})`})),sortedData:s,sendAddToQueue,checkNewRelease}},data(){const e=this.$t.bind(this),n=this.$tc.bind(this);return{head:[{title:n("globals.listTabs.title",1),sortKey:"releaseTitle"},{title:e("globals.listTabs.releaseDate"),sortKey:"releaseDate"},{title:n("globals.listTabs.track",2),sortKey:"releaseTracksNumber"},{title:"",width:null}]}},methods:{sortBy(e){e===this.sortKey?this.sortOrder=this.sortOrder==="asc"?"desc":"asc":(this.sortKey=e,this.sortOrder="asc")}}});const __vue_script__$c=script$c;var __vue_render__$e=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("div",{staticClass:"relative image-header"},[a("header",{staticClass:"flex items-center",style:e.headerStyle},[a("h1",{staticClass:"m-0"},[e._v(e._s(e.artistName))]),e._v(" "),a("div",{staticClass:"grid w-16 h-16 ml-auto rounded-full cursor-pointer bg-primary text-grayscale-870 place-items-center",attrs:{"aria-label":"download",role:"button"},on:{click:function(r){return r.stopPropagation(),e.sendAddToQueue(e.downloadLink)}}},[a("i",{staticClass:"text-4xl material-icons",attrs:{title:e.$t("globals.download_hint")}},[e._v("get_app")])])]),e._v(" "),a("BaseTabs",e._l(e.artistReleases,function(r,i){return a("BaseTab",{key:i,class:{active:e.currentTab===i},on:{click:function(s){e.currentTab=i}}},[e._v(` `+e._s(e.$tc("globals.listTabs."+i,2))+` - `)])}),1),e._v(" "),a("table",{staticClass:"table"},[a("thead",[a("tr",e._l(e.head,function(r){return a("th",{key:r.title,staticClass:"uppercase-first-letter",class:{"sort-asc":r.sortKey==e.sortKey&&e.sortOrder=="asc","sort-desc":r.sortKey==e.sortKey&&e.sortOrder=="desc",sortable:r.sortKey,clickable:r.sortKey},style:{width:r.width?r.width:"auto"},on:{click:function(i){r.sortKey&&e.sortBy(r.sortKey)}}},[e._v(` + `)])}),1),e._v(" "),a("table",{staticClass:"table"},[a("thead",[a("tr",e._l(e.head,function(r){return a("th",{key:r.title,staticClass:"uppercase-first-letter",class:{"sort-asc":r.sortKey===e.sortKey&&e.sortOrder=="asc","sort-desc":r.sortKey===e.sortKey&&e.sortOrder=="desc",sortable:r.sortKey,clickable:r.sortKey},style:{width:r.width?r.width:"auto"},on:{click:function(i){r.sortKey&&e.sortBy(r.sortKey)}}},[e._v(` `+e._s(r.title)+` - `)])}),0)]),e._v(" "),a("tbody",e._l(e.sortedData,function(r){return a("tr",{key:r.releaseID},[a("RouterLink",{staticClass:"flex items-center clickable",attrs:{tag:"td",to:{name:"Album",params:{id:r.releaseID}}}},[a("img",{staticClass:"rounded coverart",staticStyle:{"margin-right":"16px",width:"56px",height:"56px"},attrs:{src:r.releaseCover}}),e._v(" "),r.isReleaseExplicit?a("i",{staticClass:"material-icons title-icon title-icon--explicit"},[e._v("explicit")]):e._e(),e._v(` - `+e._s(r.releaseTitle)+` - `),e.checkNewRelease(r.releaseDate)?a("i",{staticClass:"material-icons title-icon title-icon--new title-icon--right"},[e._v(` + `)])}),0)]),e._v(" "),a("tbody",e._l(e.sortedData,function(r){return a("tr",{key:r.releaseID},[a("RouterLink",{staticClass:"flex items-center clickable",attrs:{tag:"td",to:{name:"Album",params:{id:r.releaseID}}}},[a("img",{staticClass:"mr-4 rounded coverart",staticStyle:{width:"56px",height:"56px"},attrs:{src:r.releaseCover}}),e._v(" "),r.isReleaseExplicit?a("i",{staticClass:"material-icons title-icon title-icon--explicit"},[e._v("explicit")]):e._e(),e._v(" "),a("span",{staticClass:"hover:text-primary"},[e._v(e._s(r.releaseTitle))]),e._v(" "),e.checkNewRelease(r.releaseDate)?a("i",{staticClass:"material-icons title-icon title-icon--right title-icon--new"},[e._v(` fiber_new - `)]):e._e()]),e._v(" "),a("td",{staticClass:"text-center"},[e._v(e._s(r.releaseDate))]),e._v(" "),a("td",{staticClass:"text-center"},[e._v(e._s(r.releaseTracksNumber))]),e._v(" "),a("td",{staticClass:"clickable",on:{click:function(i){return i.stopPropagation(),e.sendAddToQueue(r.releaseLink)}}},[a("i",{staticClass:"material-icons",attrs:{title:e.$t("globals.download_hint")}},[e._v(" file_download ")])])],1)}),0)])],1)},__vue_staticRenderFns__$e=[];const __vue_inject_styles__$e=void 0,__vue_scope_id__$e=void 0,__vue_is_functional_template__$e=!1;function __vue_normalize__$e(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};return o.__file="Artist.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r,o}var Artist=__vue_normalize__$e({render:__vue_render__$e,staticRenderFns:__vue_staticRenderFns__$e},__vue_inject_styles__$e,__vue_script__$c,__vue_scope_id__$e,__vue_is_functional_template__$e);let chartsData={},cached$1=!1;function getChartsData(){return cached$1?chartsData:(socket.emit("get_charts_data"),new Promise((e,n)=>{socket.on("init_charts",a=>{chartsData=a,cached$1=!0,socket.off("init_charts"),e(a)})}))}var script$d={methods:{previewMouseEnter(e){EventBus.$emit("trackPreview:previewMouseEnter",e)},previewMouseLeave(e){EventBus.$emit("trackPreview:previewMouseLeave",e)}}};const __vue_script__$d=script$d;var __vue_render__$f=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("i",{staticClass:"absolute top-0 right-0 flex items-center justify-center w-full h-full text-center text-white transition-opacity duration-200 ease-in-out bg-black bg-opacity-50 rounded opacity-0 material-icons preview_controls",attrs:{title:e.$t("globals.play_hint")},on:{mouseenter:e.previewMouseEnter,mouseleave:e.previewMouseLeave}},[e._v(` + `)]):e._e()]),e._v(" "),a("td",{staticClass:"text-center"},[e._v(e._s(r.releaseDate))]),e._v(" "),a("td",{staticClass:"text-center"},[e._v(e._s(r.releaseTracksNumber))]),e._v(" "),a("td",{staticClass:"w-8 cursor-pointer",attrs:{"data-cm-link":r.releaseLink},on:{click:function(i){return i.stopPropagation(),e.sendAddToQueue(r.releaseLink)}}},[a("i",{staticClass:"material-icons hover:text-primary",attrs:{title:e.$t("globals.download_hint")}},[e._v("file_download")])])],1)}),0)])],1)},__vue_staticRenderFns__$e=[];const __vue_inject_styles__$e=void 0,__vue_scope_id__$e=void 0,__vue_is_functional_template__$e=!1;function __vue_normalize__$e(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};return o.__file="Artist.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r,o}var Artist=__vue_normalize__$e({render:__vue_render__$e,staticRenderFns:__vue_staticRenderFns__$e},__vue_inject_styles__$e,__vue_script__$c,__vue_scope_id__$e,__vue_is_functional_template__$e);let chartsData={},cached$1=!1;function getChartsData(){return cached$1?chartsData:(socket.emit("get_charts_data"),new Promise((e,n)=>{socket.on("init_charts",a=>{chartsData=a,cached$1=!0,socket.off("init_charts"),e(a)})}))}var script$d={methods:{previewMouseEnter(e){EventBus.$emit("trackPreview:previewMouseEnter",e)},previewMouseLeave(e){EventBus.$emit("trackPreview:previewMouseLeave",e)}}};const __vue_script__$d=script$d;var __vue_render__$f=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("i",{staticClass:"absolute top-0 right-0 flex items-center justify-center w-full h-full text-center text-white transition-opacity duration-200 ease-in-out bg-black bg-opacity-50 rounded opacity-0 material-icons preview_controls",attrs:{title:e.$t("globals.play_hint")},on:{mouseenter:e.previewMouseEnter,mouseleave:e.previewMouseLeave}},[e._v(` play_arrow `)])},__vue_staticRenderFns__$f=[];const __vue_inject_styles__$f=void 0,__vue_scope_id__$f=void 0,__vue_is_functional_template__$f=!1;function __vue_normalize__$f(e,n,a,r,i,s,l,c){const o=(typeof a=="function"?a.options:a)||{};return o.__file="PreviewControls.vue",o.render||(o.render=e.render,o.staticRenderFns=e.staticRenderFns,o._compiled=!0,i&&(o.functional=!0)),o._scopeId=r,o}var PreviewControls=__vue_normalize__$f({render:__vue_render__$f,staticRenderFns:__vue_staticRenderFns__$f},__vue_inject_styles__$f,__vue_script__$d,__vue_scope_id__$f,__vue_is_functional_template__$f),script$e={components:{PreviewControls},data(){return{country:"",id:0,countries:[],chart:[]}},computed:{worldwideRelease(){let e=this.countries.filter(n=>n.title==="Worldwide");return e[0]}},async created(){socket.on("setChartTracks",this.setTracklist),this.$on("hook:destroyed",()=>{socket.off("setChartTracks")});let e=await getChartsData(),n;e=e.filter(a=>(a.title==="Worldwide"&&(n=a),a.title!=="Worldwide")),e.unshift(n),this.initCharts(e)},methods:{convertDuration,playPausePreview(e){EventBus.$emit("trackPreview:playPausePreview",e)},addToQueue(e){e.stopPropagation(),sendAddToQueue(e.currentTarget.dataset.link)},getTrackList(e){document.getElementById("content").scrollTo(0,0);const{currentTarget:{dataset:{title:n}},currentTarget:{dataset:{id:a}}}=e;this.country=n,localStorage.setItem("chart",this.country),this.id=a,socket.emit("getChartTracks",this.id)},setTracklist(e){this.chart=e},onChangeCountry(){this.country="",this.id=0},initCharts(e){if(this.countries=e,this.country=localStorage.getItem("chart")||"",!this.country)return;let n=0;for(;n {{ $tc(`globals.listTabs.${name}`, 2) }} @@ -34,8 +34,8 @@ :style="{ width: data.width ? data.width : 'auto' }" class="uppercase-first-letter" :class="{ - 'sort-asc': data.sortKey == sortKey && sortOrder == 'asc', - 'sort-desc': data.sortKey == sortKey && sortOrder == 'desc', + 'sort-asc': data.sortKey === sortKey && sortOrder == 'asc', + 'sort-desc': data.sortKey === sortKey && sortOrder == 'desc', sortable: data.sortKey, clickable: data.sortKey }" @@ -52,24 +52,24 @@ class="flex items-center clickable" :to="{ name: 'Album', params: { id: release.releaseID } }" > - + explicit - {{ release.releaseTitle }} + {{ release.releaseTitle }} fiber_new {{ release.releaseDate }} {{ release.releaseTracksNumber }} - - file_download + + file_download @@ -112,9 +112,13 @@ export default defineComponent({ .then(artistData => { hasDataLoaded.value = true + const rawData = { + data: [artistData], + hasLoaded: unref(hasDataLoaded) + } const { data: [{ artistName, artistPictureXL, artistReleases }] - } = standardizeData({ data: [artistData], hasLoaded: unref(hasDataLoaded) }, formatArtistData) + } = standardizeData(rawData, formatArtistData) Object.assign(state, { artistName, @@ -139,10 +143,6 @@ export default defineComponent({ return orderBy(state.currentRelease, sortKey, state.sortOrder) }) - const changeTab = newTab => { - state.currentTab = newTab - } - return { ...toRefs(state), downloadLink: computed(() => `https://www.deezer.com/artist/${unref(artistID)}`), @@ -151,8 +151,7 @@ export default defineComponent({ })), sortedData, sendAddToQueue, - checkNewRelease, - changeTab + checkNewRelease } }, data() { @@ -164,7 +163,8 @@ export default defineComponent({ { title: $tc('globals.listTabs.title', 1), sortKey: 'releaseTitle' }, { title: $t('globals.listTabs.releaseDate'), sortKey: 'releaseDate' }, { title: $tc('globals.listTabs.track', 2), sortKey: 'releaseTracksNumber' }, - { title: '', width: '32px' } + // { title: '', width: '32px' } + { title: '', width: null } ] } },