diff --git a/src/ui/dist/assets/Album-DBkve-Q-.js b/src/ui/dist/assets/Album-B7yuUYu_.js similarity index 94% rename from src/ui/dist/assets/Album-DBkve-Q-.js rename to src/ui/dist/assets/Album-B7yuUYu_.js index 5006d8aa..5136de37 100644 --- a/src/ui/dist/assets/Album-DBkve-Q-.js +++ b/src/ui/dist/assets/Album-B7yuUYu_.js @@ -1 +1 @@ -import{e as I,z as N,m as A,A as k,l as n,B as D,v as B,f as j,o as l,c as i,i as f,a6 as F,d as _,g as m,L,a,E as P,H as U,t as S,P as H,F as y,h as $,a1 as M,w as V,ak as z,N as R,af as q,ao as J,_ as O}from"./index-CTxjSbok.js";import{P as G}from"./PlaylistEntry-DrzB4VXk.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import"./playerInPicture-Dfp9IAsf.js";const K={key:1,class:"fill-page"},Q={key:2,class:"artist p-4"},T={class:"wrap"},W={class:"artist__data"},X={class:"upper"},Y={class:"track__info__details flex flex-col justify-end"},Z={class:"text-secondary my-0 text-2xl font-bold"},ee={key:0,class:"text-muted text-base ml-4 font-light"},se={class:"trac__info__details__normal"},ae={class:"flex flew-row items-center"},te={class:"font-black text-5xl"},le={class:"items"},oe={class:"items"},ne=I({__name:"Album",setup(ie){const h=N();A();const C=k(()=>h.params.hash),s=n(null),v=n([]),r=n(null),c=n(null),p=n("url"),b=n(!1),w=async()=>{const e=await(await fetch(`/api/albums/${C.value}`)).json();if(e.spotify=e.spotify?JSON.parse(e.spotify):null,e.spotify)try{e.spotify.releaseDate=new Date(e.spotify.releaseDate)}catch{e.spotify.releaseDate=null}s.value=e,r.value=null,c.value="",b.value=!1,s.value.spotify.url.length&&(c.value=s.value.spotify.url,E(s.value.spotify.id),b.value=!0),p.value="link"},E=async t=>{const e=await fetch(`/api/spotify/albums/${t}`);if(!e){R.addError("Failed to fetch album from Spotify",await e.text(),3e3);return}v.value=await e.json()};D(c,()=>{var t,e;if(((e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.id)==J(c.value,"album")){p.value="link";return}p.value="save"});const x=k(()=>{var t,e,d;return((d=(e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.releaseDate)==null?void 0:d.toLocaleDateString())??""});return B(w),D(()=>h.params.name,()=>{s.value=null,w()}),(t,e)=>{var g;const d=j("Card");return l(),i(y,null,[s.value?(l(),f(F,{key:0,src:s.value.image,class:"-z-10"},null,8,["src"])):_("",!0),s.value?(l(),i("div",Q,[a("div",T,[a("div",W,[a("div",X,[m(P,{src:s.value.image,class:"max-w-sm rounded-xl",placeholder:"library_music",name:s.value.name},null,8,["src","name"]),a("div",Y,[a("h3",Z,[m(U,{artist:s.value.artists.join(", "),class:"inline"},null,8,["artist"]),x.value?(l(),i("span",ee,S(x.value),1)):_("",!0)]),a("div",se,[a("div",ae,[a("h1",te,S(s.value.name),1)])])])]),m(H,{class:"hideIfMobile mt-8","with-more":""}),e[3]||(e[3]=a("hr",{class:"mb-4"},null,-1)),a("div",le,[(l(!0),i(y,null,$(s.value.songs,o=>M((l(),f(G,{index:s.value.songs.findIndex(u=>u.source==o.source),selected:r.value==o.id,song:o,"playlist-id":"album","with-cover":"","with-more":"",album:s.value.id,onClick:u=>r.value==o.id?r.value=-1:r.value=o.id,onUpdate:e[0]||(e[0]=u=>t.$emit("update"))},null,8,["index","selected","song","album","onClick"])),[[q,!0]])),256))]),(g=v.value)!=null&&g.length?(l(),f(d,{key:0,class:"p-4"},{default:V(()=>[e[2]||(e[2]=a("h2",null,"All songs from this album",-1)),a("div",oe,[(l(!0),i(y,null,$(v.value,(o,u)=>(l(),f(z,{index:u,song:o,"can-import":"","cannot-add":"","with-cover":"","with-more":"",onUpdate:e[1]||(e[1]=re=>t.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):_("",!0)])])])):(l(),i("div",K,[m(L)]))],64)}}}),me=O(ne,[["__scopeId","data-v-4203b278"]]);export{me as default}; +import{e as I,z as N,m as A,A as k,l as n,B as D,v as B,f as j,o as l,c as i,i as f,a6 as F,d as _,g as m,L,a,E as P,H as U,t as S,P as H,F as y,h as $,a1 as M,w as V,ak as z,N as R,af as q,ao as J,_ as O}from"./index-NeVG6T13.js";import{P as G}from"./PlaylistEntry-CFWDnKVM.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import"./playerInPicture-Dfp9IAsf.js";const K={key:1,class:"fill-page"},Q={key:2,class:"artist p-4"},T={class:"wrap"},W={class:"artist__data"},X={class:"upper"},Y={class:"track__info__details flex flex-col justify-end"},Z={class:"text-secondary my-0 text-2xl font-bold"},ee={key:0,class:"text-muted text-base ml-4 font-light"},se={class:"trac__info__details__normal"},ae={class:"flex flew-row items-center"},te={class:"font-black text-5xl"},le={class:"items"},oe={class:"items"},ne=I({__name:"Album",setup(ie){const h=N();A();const C=k(()=>h.params.hash),s=n(null),v=n([]),r=n(null),c=n(null),p=n("url"),b=n(!1),w=async()=>{const e=await(await fetch(`/api/albums/${C.value}`)).json();if(e.spotify=e.spotify?JSON.parse(e.spotify):null,e.spotify)try{e.spotify.releaseDate=new Date(e.spotify.releaseDate)}catch{e.spotify.releaseDate=null}s.value=e,r.value=null,c.value="",b.value=!1,s.value.spotify.url.length&&(c.value=s.value.spotify.url,E(s.value.spotify.id),b.value=!0),p.value="link"},E=async t=>{const e=await fetch(`/api/spotify/albums/${t}`);if(!e){R.addError("Failed to fetch album from Spotify",await e.text(),3e3);return}v.value=await e.json()};D(c,()=>{var t,e;if(((e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.id)==J(c.value,"album")){p.value="link";return}p.value="save"});const x=k(()=>{var t,e,d;return((d=(e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.releaseDate)==null?void 0:d.toLocaleDateString())??""});return B(w),D(()=>h.params.name,()=>{s.value=null,w()}),(t,e)=>{var g;const d=j("Card");return l(),i(y,null,[s.value?(l(),f(F,{key:0,src:s.value.image,class:"-z-10"},null,8,["src"])):_("",!0),s.value?(l(),i("div",Q,[a("div",T,[a("div",W,[a("div",X,[m(P,{src:s.value.image,class:"max-w-sm rounded-xl",placeholder:"library_music",name:s.value.name},null,8,["src","name"]),a("div",Y,[a("h3",Z,[m(U,{artist:s.value.artists.join(", "),class:"inline"},null,8,["artist"]),x.value?(l(),i("span",ee,S(x.value),1)):_("",!0)]),a("div",se,[a("div",ae,[a("h1",te,S(s.value.name),1)])])])]),m(H,{class:"hideIfMobile mt-8","with-more":""}),e[3]||(e[3]=a("hr",{class:"mb-4"},null,-1)),a("div",le,[(l(!0),i(y,null,$(s.value.songs,o=>M((l(),f(G,{index:s.value.songs.findIndex(u=>u.source==o.source),selected:r.value==o.id,song:o,"playlist-id":"album","with-cover":"","with-more":"",album:s.value.id,onClick:u=>r.value==o.id?r.value=-1:r.value=o.id,onUpdate:e[0]||(e[0]=u=>t.$emit("update"))},null,8,["index","selected","song","album","onClick"])),[[q,!0]])),256))]),(g=v.value)!=null&&g.length?(l(),f(d,{key:0,class:"p-4"},{default:V(()=>[e[2]||(e[2]=a("h2",null,"All songs from this album",-1)),a("div",oe,[(l(!0),i(y,null,$(v.value,(o,u)=>(l(),f(z,{index:u,song:o,"can-import":"","cannot-add":"","with-cover":"","with-more":"",onUpdate:e[1]||(e[1]=re=>t.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):_("",!0)])])])):(l(),i("div",K,[m(L)]))],64)}}}),me=O(ne,[["__scopeId","data-v-4203b278"]]);export{me as default}; diff --git a/src/ui/dist/assets/Album-B7yuUYu_.js.gz b/src/ui/dist/assets/Album-B7yuUYu_.js.gz new file mode 100644 index 00000000..960762dd Binary files /dev/null and b/src/ui/dist/assets/Album-B7yuUYu_.js.gz differ diff --git a/src/ui/dist/assets/Album-DBkve-Q-.js.gz b/src/ui/dist/assets/Album-DBkve-Q-.js.gz deleted file mode 100644 index a87d0237..00000000 Binary files a/src/ui/dist/assets/Album-DBkve-Q-.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Artist-BqEsBai3.js b/src/ui/dist/assets/Artist-B3KwwJol.js similarity index 95% rename from src/ui/dist/assets/Artist-BqEsBai3.js rename to src/ui/dist/assets/Artist-B3KwwJol.js index d30d2c85..63e7552b 100644 --- a/src/ui/dist/assets/Artist-BqEsBai3.js +++ b/src/ui/dist/assets/Artist-B3KwwJol.js @@ -1 +1 @@ -import{e as F,o as a,i as r,w,b as A,t as p,C as x,_ as L,z as j,m as z,A as H,l as _,B as N,v as R,c as o,a6 as D,d as i,g as y,L as M,a as s,E as U,K as V,F as v,h,u as Y,Y as q,P as J,a1 as K,ak as O,ap as W,ao as B,af as G}from"./index-CTxjSbok.js";import{F as E}from"./FactCard-CcCpkYQW.js";import{P as Q}from"./PlaylistEntry-DrzB4VXk.js";import{s as X}from"./spotify-LGVF5Rtn.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import"./playerInPicture-Dfp9IAsf.js";const Z=F({__name:"Tag",props:{tag:{type:String,required:!0},withHash:{type:Boolean,default:!1}},setup(g){return(k,b)=>(a(),r(x,{class:"tag px-4 py-2 cursor-pointer","with-hover":""},{default:w(()=>[A(p(g.withHash?"#":"")+p(g.tag),1)]),_:1}))}}),ee=L(Z,[["__scopeId","data-v-2712639d"]]),ae={key:1,class:"fill-page"},te={key:2,class:"artist p-4"},se={class:"wrap"},le={class:"artist__data"},oe={class:"upper"},re={class:"trac__info__details__normal"},ne={key:0,class:"mt-0 mb-2 flex flex-row gap-2"},ie={class:"flex flew-row items-center"},ue={class:"font-black text-5xl ml-4"},de={class:"features flex flex-row gap-4 mt-4 overflow-x-auto"},ce={class:"spotify-infos pt-4 pb-2"},ve={class:"meta items-center"},pe={key:0,class:"flex flex-row align-items"},me={class:"font-bold"},fe={class:"items"},_e={key:0,class:"spotify-suggestions mt-4"},ye={class:"items"},he={class:"flex flex-row items-center gap-4"},we={class:"flex flex-col"},xe={class:"font-bold"},ge=F({__name:"Artist",setup(g){const k=j();z();const b=H(()=>k.params.name),e=_(null),m=_(null),u=_(null),f=_("url"),d=_(!1),C=async()=>{const n=await fetch(`/api/artists/${b.value}`);e.value=await n.json(),m.value=null,u.value="",d.value=!1,e.value.metadata.id.length==22&&(u.value="https://open.spotify.com/artist/"+e.value.metadata.id,d.value=!0),f.value="link"},$=async n=>{await fetch(`/api/artists/${b.value}`,{method:"PUT",body:JSON.stringify({spotifyId:n})}),e.value=null,await C()};N(u,()=>{var n,t;if(((t=(n=e.value)==null?void 0:n.metadata)==null?void 0:t.id)==B(u.value,"artist")){f.value="link";return}f.value="save"});const P=()=>{if(f.value=="link"){W(u.value);return}$(B(u.value,"artist"))};return R(C),N(()=>k.params.name,()=>{e.value=null,C()}),(n,t)=>{var I,T,S;return a(),o(v,null,[e.value?(a(),r(D,{key:0,src:e.value.cover,class:"-z-10"},null,8,["src"])):i("",!0),e.value?(a(),o("div",te,[s("div",se,[s("div",le,[s("div",oe,[y(U,{src:e.value.cover,class:"max-w-sm rounded-xl",placeholder:"person"},null,8,["src"]),s("div",{class:V([{"justify-end":e.value.metadata,"justify-center":!e.value.metadata},"track__info__details flex flex-col"])},[s("div",re,[(I=e.value.metadata)!=null&&I.genres?(a(),o("div",ne,[(a(!0),o(v,null,h(e.value.metadata.genres,l=>(a(),r(ee,{tag:l,"with-hash":""},null,8,["tag"]))),256))])):i("",!0),s("div",ie,[s("h1",ue,p(e.value.name),1)])]),e.value.metadata?(a(),o(v,{key:0},[s("div",de,[e.value.metadata.followers?(a(),r(E,{key:0,"primary-text":e.value.metadata.followers.toLocaleString(),class:"w-full","secondary-text":"Followers"},null,8,["primary-text"])):i("",!0),e.value.songs.length?(a(),r(E,{key:1,"primary-text":e.value.songs.length,class:"w-full","secondary-text":"Tracks in Your Library"},null,8,["primary-text"])):i("",!0)]),s("div",ce,[s("div",ve,[e.value.metadata.popularity?(a(),o("span",pe,[t[5]||(t[5]=s("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),s("span",me,p(e.value.metadata.popularity),1)])):i("",!0)]),y(Y(X),{class:V([{enabled:d.value},"spotify-enable"]),onClick:t[0]||(t[0]=l=>d.value=!d.value)},null,8,["class"]),d.value?(a(),r(q,{key:0,modelValue:u.value,"onUpdate:modelValue":t[1]||(t[1]=l=>u.value=l),icon:f.value,onClick:P},null,8,["modelValue","icon"])):i("",!0),s("span",{class:"material-symbols-rounded cursor-pointer",onClick:t[2]||(t[2]=l=>d.value?$(!1):$(!0))},p(d.value?"delete":"search"),1)])],64)):i("",!0)],2)]),y(J,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),t[8]||(t[8]=s("hr",{class:"mb-4"},null,-1)),s("div",fe,[(a(!0),o(v,null,h(e.value.songs,l=>K((a(),r(Q,{index:e.value.songs.findIndex(c=>c.source==l.source),selected:m.value==l.id,song:l,"playlist-id":"artist","with-album":"","with-cover":"","with-more":"",artist:e.value.name,onClick:c=>m.value==l.id?m.value=-1:m.value=l.id,onUpdate:t[3]||(t[3]=c=>n.$emit("update"))},null,8,["index","selected","song","artist","onClick"])),[[G,!0]])),256))]),e.value.metadata?(a(),o("div",_e,[(T=e.value.metadata.topTracks)!=null&&T.length?(a(),r(x,{key:0,class:"p-4"},{default:w(()=>[t[6]||(t[6]=s("h2",null,"Top Tracks",-1)),s("div",ye,[(a(!0),o(v,null,h(e.value.metadata.topTracks,(l,c)=>(a(),r(O,{index:c,song:l,"can-import":"","cannot-add":"","with-album":"","with-cover":"","with-more":"",onUpdate:t[4]||(t[4]=ke=>n.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):i("",!0),(S=e.value.metadata.related)!=null&&S.length?(a(),r(x,{key:1,class:"p-4 flex flex-col gap-2 related overflow-y-auto"},{default:w(()=>[t[7]||(t[7]=s("h2",null,"Related Artists",-1)),(a(!0),o(v,null,h(e.value.metadata.related,l=>(a(),r(x,{class:"cursor-pointer px-4 py-2","with-hover":"",onClick:c=>n.$router.push(`/artist/${l.name}`)},{default:w(()=>[s("div",he,[y(U,{src:l.cover,class:"w-8 h-8 rounded-xl",placeholder:"person"},null,8,["src"]),s("div",we,[s("h3",xe,p(l.name),1)])])]),_:2},1032,["onClick"]))),256))]),_:1})):i("",!0)])):i("",!0)])])])):(a(),o("div",ae,[y(M)]))],64)}}}),Ne=L(ge,[["__scopeId","data-v-13b2922c"]]);export{Ne as default}; +import{e as F,o as a,i as r,w,b as A,t as p,C as x,_ as L,z as j,m as z,A as H,l as _,B as N,v as R,c as o,a6 as D,d as i,g as y,L as M,a as s,E as U,K as V,F as v,h,u as Y,Y as q,P as J,a1 as K,ak as O,ap as W,ao as B,af as G}from"./index-NeVG6T13.js";import{F as E}from"./FactCard-DRGvrYjY.js";import{P as Q}from"./PlaylistEntry-CFWDnKVM.js";import{s as X}from"./spotify-ArIR8QxX.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import"./playerInPicture-Dfp9IAsf.js";const Z=F({__name:"Tag",props:{tag:{type:String,required:!0},withHash:{type:Boolean,default:!1}},setup(g){return(k,b)=>(a(),r(x,{class:"tag px-4 py-2 cursor-pointer","with-hover":""},{default:w(()=>[A(p(g.withHash?"#":"")+p(g.tag),1)]),_:1}))}}),ee=L(Z,[["__scopeId","data-v-2712639d"]]),ae={key:1,class:"fill-page"},te={key:2,class:"artist p-4"},se={class:"wrap"},le={class:"artist__data"},oe={class:"upper"},re={class:"trac__info__details__normal"},ne={key:0,class:"mt-0 mb-2 flex flex-row gap-2"},ie={class:"flex flew-row items-center"},ue={class:"font-black text-5xl ml-4"},de={class:"features flex flex-row gap-4 mt-4 overflow-x-auto"},ce={class:"spotify-infos pt-4 pb-2"},ve={class:"meta items-center"},pe={key:0,class:"flex flex-row align-items"},me={class:"font-bold"},fe={class:"items"},_e={key:0,class:"spotify-suggestions mt-4"},ye={class:"items"},he={class:"flex flex-row items-center gap-4"},we={class:"flex flex-col"},xe={class:"font-bold"},ge=F({__name:"Artist",setup(g){const k=j();z();const b=H(()=>k.params.name),e=_(null),m=_(null),u=_(null),f=_("url"),d=_(!1),C=async()=>{const n=await fetch(`/api/artists/${b.value}`);e.value=await n.json(),m.value=null,u.value="",d.value=!1,e.value.metadata.id.length==22&&(u.value="https://open.spotify.com/artist/"+e.value.metadata.id,d.value=!0),f.value="link"},$=async n=>{await fetch(`/api/artists/${b.value}`,{method:"PUT",body:JSON.stringify({spotifyId:n})}),e.value=null,await C()};N(u,()=>{var n,t;if(((t=(n=e.value)==null?void 0:n.metadata)==null?void 0:t.id)==B(u.value,"artist")){f.value="link";return}f.value="save"});const P=()=>{if(f.value=="link"){W(u.value);return}$(B(u.value,"artist"))};return R(C),N(()=>k.params.name,()=>{e.value=null,C()}),(n,t)=>{var I,T,S;return a(),o(v,null,[e.value?(a(),r(D,{key:0,src:e.value.cover,class:"-z-10"},null,8,["src"])):i("",!0),e.value?(a(),o("div",te,[s("div",se,[s("div",le,[s("div",oe,[y(U,{src:e.value.cover,class:"max-w-sm rounded-xl",placeholder:"person"},null,8,["src"]),s("div",{class:V([{"justify-end":e.value.metadata,"justify-center":!e.value.metadata},"track__info__details flex flex-col"])},[s("div",re,[(I=e.value.metadata)!=null&&I.genres?(a(),o("div",ne,[(a(!0),o(v,null,h(e.value.metadata.genres,l=>(a(),r(ee,{tag:l,"with-hash":""},null,8,["tag"]))),256))])):i("",!0),s("div",ie,[s("h1",ue,p(e.value.name),1)])]),e.value.metadata?(a(),o(v,{key:0},[s("div",de,[e.value.metadata.followers?(a(),r(E,{key:0,"primary-text":e.value.metadata.followers.toLocaleString(),class:"w-full","secondary-text":"Followers"},null,8,["primary-text"])):i("",!0),e.value.songs.length?(a(),r(E,{key:1,"primary-text":e.value.songs.length,class:"w-full","secondary-text":"Tracks in Your Library"},null,8,["primary-text"])):i("",!0)]),s("div",ce,[s("div",ve,[e.value.metadata.popularity?(a(),o("span",pe,[t[5]||(t[5]=s("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),s("span",me,p(e.value.metadata.popularity),1)])):i("",!0)]),y(Y(X),{class:V([{enabled:d.value},"spotify-enable"]),onClick:t[0]||(t[0]=l=>d.value=!d.value)},null,8,["class"]),d.value?(a(),r(q,{key:0,modelValue:u.value,"onUpdate:modelValue":t[1]||(t[1]=l=>u.value=l),icon:f.value,onClick:P},null,8,["modelValue","icon"])):i("",!0),s("span",{class:"material-symbols-rounded cursor-pointer",onClick:t[2]||(t[2]=l=>d.value?$(!1):$(!0))},p(d.value?"delete":"search"),1)])],64)):i("",!0)],2)]),y(J,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),t[8]||(t[8]=s("hr",{class:"mb-4"},null,-1)),s("div",fe,[(a(!0),o(v,null,h(e.value.songs,l=>K((a(),r(Q,{index:e.value.songs.findIndex(c=>c.source==l.source),selected:m.value==l.id,song:l,"playlist-id":"artist","with-album":"","with-cover":"","with-more":"",artist:e.value.name,onClick:c=>m.value==l.id?m.value=-1:m.value=l.id,onUpdate:t[3]||(t[3]=c=>n.$emit("update"))},null,8,["index","selected","song","artist","onClick"])),[[G,!0]])),256))]),e.value.metadata?(a(),o("div",_e,[(T=e.value.metadata.topTracks)!=null&&T.length?(a(),r(x,{key:0,class:"p-4"},{default:w(()=>[t[6]||(t[6]=s("h2",null,"Top Tracks",-1)),s("div",ye,[(a(!0),o(v,null,h(e.value.metadata.topTracks,(l,c)=>(a(),r(O,{index:c,song:l,"can-import":"","cannot-add":"","with-album":"","with-cover":"","with-more":"",onUpdate:t[4]||(t[4]=ke=>n.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):i("",!0),(S=e.value.metadata.related)!=null&&S.length?(a(),r(x,{key:1,class:"p-4 flex flex-col gap-2 related overflow-y-auto"},{default:w(()=>[t[7]||(t[7]=s("h2",null,"Related Artists",-1)),(a(!0),o(v,null,h(e.value.metadata.related,l=>(a(),r(x,{class:"cursor-pointer px-4 py-2","with-hover":"",onClick:c=>n.$router.push(`/artist/${l.name}`)},{default:w(()=>[s("div",he,[y(U,{src:l.cover,class:"w-8 h-8 rounded-xl",placeholder:"person"},null,8,["src"]),s("div",we,[s("h3",xe,p(l.name),1)])])]),_:2},1032,["onClick"]))),256))]),_:1})):i("",!0)])):i("",!0)])])])):(a(),o("div",ae,[y(M)]))],64)}}}),Ne=L(ge,[["__scopeId","data-v-13b2922c"]]);export{Ne as default}; diff --git a/src/ui/dist/assets/Artist-B3KwwJol.js.gz b/src/ui/dist/assets/Artist-B3KwwJol.js.gz new file mode 100644 index 00000000..f32621d9 Binary files /dev/null and b/src/ui/dist/assets/Artist-B3KwwJol.js.gz differ diff --git a/src/ui/dist/assets/Artist-BqEsBai3.js.gz b/src/ui/dist/assets/Artist-BqEsBai3.js.gz deleted file mode 100644 index a128b9b6..00000000 Binary files a/src/ui/dist/assets/Artist-BqEsBai3.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Breaking-BbN_kr20.js b/src/ui/dist/assets/Breaking-BbN_kr20.js new file mode 100644 index 00000000..2a085c38 --- /dev/null +++ b/src/ui/dist/assets/Breaking-BbN_kr20.js @@ -0,0 +1 @@ +import{T as r}from"./Template-DPpn6WCj.js";import{i as o,o as t}from"./index-NeVG6T13.js";import"./PlaylistEntry-CFWDnKVM.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-4SxXvN8G.js";import"./FactCard-DRGvrYjY.js";import"./gistClient-DE35pGas.js";import"./Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js";const l={__name:"Breaking",setup(e){return(i,p)=>(t(),o(r,{id:"breaking","cover-icon":"trending_up"}))}};export{l as default}; diff --git a/src/ui/dist/assets/Breaking-CGEJyAMd.js b/src/ui/dist/assets/Breaking-CGEJyAMd.js deleted file mode 100644 index aa2c6b66..00000000 --- a/src/ui/dist/assets/Breaking-CGEJyAMd.js +++ /dev/null @@ -1 +0,0 @@ -import{T as r}from"./Template-B3y8aqn2.js";import{i as o,o as t}from"./index-CTxjSbok.js";import"./PlaylistEntry-DrzB4VXk.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-pw-5IPtN.js";import"./FactCard-CcCpkYQW.js";import"./gistClient-DbxNDpvo.js";import"./Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js";const l={__name:"Breaking",setup(e){return(i,p)=>(t(),o(r,{id:"breaking","cover-icon":"trending_up"}))}};export{l as default}; diff --git a/src/ui/dist/assets/Create-CWyRZu9j.js.gz b/src/ui/dist/assets/Create-CWyRZu9j.js.gz deleted file mode 100644 index eb2e635e..00000000 Binary files a/src/ui/dist/assets/Create-CWyRZu9j.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Create-CWyRZu9j.js b/src/ui/dist/assets/Create-Od9vU4ho.js similarity index 94% rename from src/ui/dist/assets/Create-CWyRZu9j.js rename to src/ui/dist/assets/Create-Od9vU4ho.js index 90e6fb28..c41c9ca9 100644 --- a/src/ui/dist/assets/Create-CWyRZu9j.js +++ b/src/ui/dist/assets/Create-Od9vU4ho.js @@ -1 +1 @@ -import{e as c,m as d,z as p,v as y,o as m,c as f,a as e,g as o,w as r,C as n,R as x,_}from"./index-CTxjSbok.js";const v={class:"flex h-full w-full items-center justify-center"},C={class:"types"},w=c({__name:"Create",setup(b){const i=d(),a=p(),s=async l=>{const t=await x(l);i.push(t)};return y(()=>{a.query.type&&s(a.query.type)}),(l,t)=>(m(),f("div",v,[e("div",C,[o(n,{"with-hover":"",class:"cursor-pointer",onClick:t[0]||(t[0]=u=>s("classic"))},{default:r(()=>t[2]||(t[2]=[e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"library_music")],-1),e("h4",null,"Classic Playlist",-1),e("p",{class:"text-sm text-muted"},"Manage your playlist manually",-1)])),_:1}),o(n,{"with-hover":"",class:"cursor-pointer",onClick:t[1]||(t[1]=u=>s("smart"))},{default:r(()=>t[3]||(t[3]=[e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"bolt")],-1),e("h4",null,"Smart Playlist",-1),e("p",{class:"text-sm text-muted"}," Define rules to automatically update your playlist ",-1)])),_:1})])]))}}),k=_(w,[["__scopeId","data-v-ebdf2322"]]);export{k as default}; +import{e as c,m as d,z as p,v as y,o as m,c as f,a as e,g as o,w as r,C as n,R as x,_}from"./index-NeVG6T13.js";const v={class:"flex h-full w-full items-center justify-center"},C={class:"types"},w=c({__name:"Create",setup(b){const i=d(),a=p(),s=async l=>{const t=await x(l);i.push(t)};return y(()=>{a.query.type&&s(a.query.type)}),(l,t)=>(m(),f("div",v,[e("div",C,[o(n,{"with-hover":"",class:"cursor-pointer",onClick:t[0]||(t[0]=u=>s("classic"))},{default:r(()=>t[2]||(t[2]=[e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"library_music")],-1),e("h4",null,"Classic Playlist",-1),e("p",{class:"text-sm text-muted"},"Manage your playlist manually",-1)])),_:1}),o(n,{"with-hover":"",class:"cursor-pointer",onClick:t[1]||(t[1]=u=>s("smart"))},{default:r(()=>t[3]||(t[3]=[e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"bolt")],-1),e("h4",null,"Smart Playlist",-1),e("p",{class:"text-sm text-muted"}," Define rules to automatically update your playlist ",-1)])),_:1})])]))}}),k=_(w,[["__scopeId","data-v-ebdf2322"]]);export{k as default}; diff --git a/src/ui/dist/assets/Create-Od9vU4ho.js.gz b/src/ui/dist/assets/Create-Od9vU4ho.js.gz new file mode 100644 index 00000000..67bdb518 Binary files /dev/null and b/src/ui/dist/assets/Create-Od9vU4ho.js.gz differ diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js similarity index 96% rename from src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js rename to src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js index 7bf99d00..05dffc24 100644 --- a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js +++ b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js @@ -1 +1 @@ -import{e as b,l as u,B as y,o as w,i as _,w as h,g as x,q as S,a8 as k,bg as q,N as F}from"./index-CTxjSbok.js";const O=b({__name:"EditSong",props:{song:{type:Object,required:!0}},emits:["close","update"],setup(p,{expose:m,emit:d}){const a=p,v=d,r=async(t,e)=>{const o=new FormData,i="."+e.name.split(".").pop();var n=e.slice(0,e.size,e.type),f=new File([n],a.song.id+i,{type:e.type});return o.append("file",f),await(await fetch(t,{method:"POST",body:o})).text()},s=u([{name:"source",type:"upload",icon:"music_note",accept:"audio/mp3",required:!0,onUpload:t=>{r("/api/config/tracks",t).then(e=>s.value.find(o=>o.name=="source").value=e)},value:a.song.source},{name:"title",type:"text",icon:"title",required:!0,value:a.song.title},{name:"artist",type:"text",icon:"person",required:!0,value:a.song.artist},{name:"album",type:"text",icon:"album",value:a.song.album.name},{name:"cover",type:"upload",icon:"art_track",accept:"image/*",imagePreview:!0,value:a.song.cover,onUpload:t=>{r("/api/config/images",t).then(e=>s.value.find(o=>o.name=="cover").value=e)}}]),g=async()=>{const t=c.value.toObject();await q({...a.song,...t}),v("update"),F.addSuccess(t.title,"Updated",3e3)},l=u(null),c=u(null);return m({show:()=>{l.value.show()}}),y(a,()=>{var t,e,o;for(const i of s.value.map(n=>n.name)){if(i=="album"){s.value.find(n=>n.name==i).value=(e=(t=a.song)==null?void 0:t.album)==null?void 0:e.name;continue}s.value.find(n=>n.name==i).value=(o=a.song)==null?void 0:o[i]}},{deep:!0}),(t,e)=>(w(),_(k,{ref_key:"modal",ref:l,submit:{label:"Save",icon:"save"},name:"Edit Song",onClose:e[0]||(e[0]=o=>t.$emit("close")),onSubmit:g},{default:h(()=>[x(S,{ref_key:"form",ref:c,options:s.value},null,8,["options"])]),_:1},512))}});export{O as _}; +import{e as b,l as u,B as y,o as w,i as _,w as h,g as x,q as S,a8 as k,bg as q,N as F}from"./index-NeVG6T13.js";const O=b({__name:"EditSong",props:{song:{type:Object,required:!0}},emits:["close","update"],setup(p,{expose:m,emit:d}){const a=p,v=d,r=async(t,e)=>{const o=new FormData,i="."+e.name.split(".").pop();var n=e.slice(0,e.size,e.type),f=new File([n],a.song.id+i,{type:e.type});return o.append("file",f),await(await fetch(t,{method:"POST",body:o})).text()},s=u([{name:"source",type:"upload",icon:"music_note",accept:"audio/mp3",required:!0,onUpload:t=>{r("/api/config/tracks",t).then(e=>s.value.find(o=>o.name=="source").value=e)},value:a.song.source},{name:"title",type:"text",icon:"title",required:!0,value:a.song.title},{name:"artist",type:"text",icon:"person",required:!0,value:a.song.artist},{name:"album",type:"text",icon:"album",value:a.song.album.name},{name:"cover",type:"upload",icon:"art_track",accept:"image/*",imagePreview:!0,value:a.song.cover,onUpload:t=>{r("/api/config/images",t).then(e=>s.value.find(o=>o.name=="cover").value=e)}}]),g=async()=>{const t=c.value.toObject();await q({...a.song,...t}),v("update"),F.addSuccess(t.title,"Updated",3e3)},l=u(null),c=u(null);return m({show:()=>{l.value.show()}}),y(a,()=>{var t,e,o;for(const i of s.value.map(n=>n.name)){if(i=="album"){s.value.find(n=>n.name==i).value=(e=(t=a.song)==null?void 0:t.album)==null?void 0:e.name;continue}s.value.find(n=>n.name==i).value=(o=a.song)==null?void 0:o[i]}},{deep:!0}),(t,e)=>(w(),_(k,{ref_key:"modal",ref:l,submit:{label:"Save",icon:"save"},name:"Edit Song",onClose:e[0]||(e[0]=o=>t.$emit("close")),onSubmit:g},{default:h(()=>[x(S,{ref_key:"form",ref:c,options:s.value},null,8,["options"])]),_:1},512))}});export{O as _}; diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js.gz b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js.gz new file mode 100644 index 00000000..61e4e394 Binary files /dev/null and b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js.gz differ diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js.gz b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js.gz deleted file mode 100644 index 8acd2b20..00000000 Binary files a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Editor-Bsw-vrY4.js.gz b/src/ui/dist/assets/Editor-Bsw-vrY4.js.gz deleted file mode 100644 index ed829c73..00000000 Binary files a/src/ui/dist/assets/Editor-Bsw-vrY4.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Editor-Bsw-vrY4.js b/src/ui/dist/assets/Editor-CoYi3uHx.js similarity index 89% rename from src/ui/dist/assets/Editor-Bsw-vrY4.js rename to src/ui/dist/assets/Editor-CoYi3uHx.js index 5ed7e09c..517fc231 100644 --- a/src/ui/dist/assets/Editor-Bsw-vrY4.js +++ b/src/ui/dist/assets/Editor-CoYi3uHx.js @@ -1 +1 @@ -import{e as D,z as I,m as x,A as B,j as U,l as _,B as $,U as A,V as E,v as F,W as R,o as i,c as n,a as l,g as s,I as c,X as L,t as f,Y as y,F as b,h,w as M,C as N,Z as O,$ as T,_ as W}from"./index-CTxjSbok.js";import{_ as j}from"./Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js";import"./PlaylistEntry-DrzB4VXk.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-pw-5IPtN.js";const z={class:"playlist-editor"},X={class:"editor"},Y={class:"sort my-2"},Z={class:"filters"},q={class:"uppercase mt-0"},G={class:"items"},H={class:"item"},J=["onClick"],K={class:"preview"},Q=D({__name:"Editor",setup(ee){const w=I(),V=x(),r=B(()=>w.params.id),d=U(),e=_({direction:"asc",sort:"id",limit:25,filter:{title:[],artist:[],album:[],duration:{}}}),m=_();$([()=>e.value.sort,()=>e.value.filter,()=>e.value.direction],A.debounce(async()=>{m.value=await E(e.value)},3*1e3),{deep:!0});const C=[{value:"title",label:"Title",icon:"title"},{value:"artist",label:"Artist",icon:"person"},{value:"album",label:"Album",icon:"album"},{value:"duration",label:"Duration",icon:"timer"},{value:"id",label:"Added",icon:"date_range"}],p=["title","artist","album"],k={title:"title",artist:"person",album:"album"};F(async()=>{e.value=await R(r.value),e.value.filter||(e.value.filter={title:[],artist:[],album:[],duration:{}});const o=e.value.filter;for(const a of p)o[a]||(o[a]=[]);e.value.filter=o});const P=async()=>{await O(r.value,e.value),d.fetchPlaylists()},S=async()=>{await T(r.value),d.fetchPlaylists(),V.push("/")};return(o,a)=>(i(),n("div",z,[l("div",X,[l("div",Y,[s(c,{label:"Save",icon:"save",type:"success",class:"!mt-0",onClick:P}),s(c,{label:"Delete",icon:"delete",type:"danger",class:"!mt-0",onClick:S}),s(L,{modelValue:e.value.sort,"onUpdate:modelValue":a[0]||(a[0]=t=>e.value.sort=t),options:C,icon:"filter_list"},null,8,["modelValue"]),l("span",{class:"cursor-pointer material-symbols-rounded ms-wght-100 text-5xl",onClick:a[1]||(a[1]=t=>e.value.direction=e.value.direction=="asc"?"desc":"asc")},f(e.value.direction=="asc"?"arrow_drop_up":"arrow_drop_down"),1),s(y,{modelValue:e.value.limit,"onUpdate:modelValue":a[2]||(a[2]=t=>e.value.limit=t),type:"number",placeholder:"Limit...",icon:"123"},null,8,["modelValue"])]),l("div",Z,[(i(),n(b,null,h(p,t=>s(N,{class:"filter"},{default:M(()=>[l("h4",q,f(t),1),l("div",G,[(i(!0),n(b,null,h(e.value.filter[t],(g,u)=>(i(),n("div",H,[s(y,{modelValue:e.value.filter[t][u],"onUpdate:modelValue":v=>e.value.filter[t][u]=v,icon:k[t]},null,8,["modelValue","onUpdate:modelValue","icon"]),l("span",{class:"material-symbols-rounded",onClick:v=>e.value.filter[t].splice(u,1)}," delete ",8,J)]))),256)),s(c,{label:"OR",icon:"add",onClick:g=>e.value.filter[t].push("")},null,8,["onClick"])])]),_:2},1024)),64))])]),l("div",K,[s(j,{playlist:m.value},null,8,["playlist"])])]))}}),ne=W(Q,[["__scopeId","data-v-1509e325"]]);export{ne as default}; +import{e as D,z as I,m as x,A as B,j as U,l as _,B as $,U as A,V as E,v as F,W as R,o as i,c as n,a as l,g as s,I as c,X as L,t as f,Y as y,F as b,h,w as M,C as N,Z as O,$ as T,_ as W}from"./index-NeVG6T13.js";import{_ as j}from"./Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js";import"./PlaylistEntry-CFWDnKVM.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-4SxXvN8G.js";const z={class:"playlist-editor"},X={class:"editor"},Y={class:"sort my-2"},Z={class:"filters"},q={class:"uppercase mt-0"},G={class:"items"},H={class:"item"},J=["onClick"],K={class:"preview"},Q=D({__name:"Editor",setup(ee){const w=I(),V=x(),r=B(()=>w.params.id),d=U(),e=_({direction:"asc",sort:"id",limit:25,filter:{title:[],artist:[],album:[],duration:{}}}),m=_();$([()=>e.value.sort,()=>e.value.filter,()=>e.value.direction],A.debounce(async()=>{m.value=await E(e.value)},3*1e3),{deep:!0});const C=[{value:"title",label:"Title",icon:"title"},{value:"artist",label:"Artist",icon:"person"},{value:"album",label:"Album",icon:"album"},{value:"duration",label:"Duration",icon:"timer"},{value:"id",label:"Added",icon:"date_range"}],p=["title","artist","album"],k={title:"title",artist:"person",album:"album"};F(async()=>{e.value=await R(r.value),e.value.filter||(e.value.filter={title:[],artist:[],album:[],duration:{}});const o=e.value.filter;for(const a of p)o[a]||(o[a]=[]);e.value.filter=o});const P=async()=>{await O(r.value,e.value),d.fetchPlaylists()},S=async()=>{await T(r.value),d.fetchPlaylists(),V.push("/")};return(o,a)=>(i(),n("div",z,[l("div",X,[l("div",Y,[s(c,{label:"Save",icon:"save",type:"success",class:"!mt-0",onClick:P}),s(c,{label:"Delete",icon:"delete",type:"danger",class:"!mt-0",onClick:S}),s(L,{modelValue:e.value.sort,"onUpdate:modelValue":a[0]||(a[0]=t=>e.value.sort=t),options:C,icon:"filter_list"},null,8,["modelValue"]),l("span",{class:"cursor-pointer material-symbols-rounded ms-wght-100 text-5xl",onClick:a[1]||(a[1]=t=>e.value.direction=e.value.direction=="asc"?"desc":"asc")},f(e.value.direction=="asc"?"arrow_drop_up":"arrow_drop_down"),1),s(y,{modelValue:e.value.limit,"onUpdate:modelValue":a[2]||(a[2]=t=>e.value.limit=t),type:"number",placeholder:"Limit...",icon:"123"},null,8,["modelValue"])]),l("div",Z,[(i(),n(b,null,h(p,t=>s(N,{class:"filter"},{default:M(()=>[l("h4",q,f(t),1),l("div",G,[(i(!0),n(b,null,h(e.value.filter[t],(g,u)=>(i(),n("div",H,[s(y,{modelValue:e.value.filter[t][u],"onUpdate:modelValue":v=>e.value.filter[t][u]=v,icon:k[t]},null,8,["modelValue","onUpdate:modelValue","icon"]),l("span",{class:"material-symbols-rounded",onClick:v=>e.value.filter[t].splice(u,1)}," delete ",8,J)]))),256)),s(c,{label:"OR",icon:"add",onClick:g=>e.value.filter[t].push("")},null,8,["onClick"])])]),_:2},1024)),64))])]),l("div",K,[s(j,{playlist:m.value},null,8,["playlist"])])]))}}),ne=W(Q,[["__scopeId","data-v-1509e325"]]);export{ne as default}; diff --git a/src/ui/dist/assets/Editor-CoYi3uHx.js.gz b/src/ui/dist/assets/Editor-CoYi3uHx.js.gz new file mode 100644 index 00000000..5d32e27b Binary files /dev/null and b/src/ui/dist/assets/Editor-CoYi3uHx.js.gz differ diff --git a/src/ui/dist/assets/Error-CQEMgMn-.js b/src/ui/dist/assets/Error-B3yvsR5K.js similarity index 78% rename from src/ui/dist/assets/Error-CQEMgMn-.js rename to src/ui/dist/assets/Error-B3yvsR5K.js index 5e2f6871..ccaeb70a 100644 --- a/src/ui/dist/assets/Error-CQEMgMn-.js +++ b/src/ui/dist/assets/Error-B3yvsR5K.js @@ -1 +1 @@ -import{e as r,o,c as s,a as t,_ as n}from"./index-CTxjSbok.js";const a={class:"error"},c=["innerHTML"],_=r({__name:"Error",props:{msg:{type:String,required:!0}},setup(e){return(i,p)=>(o(),s("div",a,[t("h1",{innerHTML:e.msg},null,8,c)]))}}),m=n(_,[["__scopeId","data-v-03ad8ef0"]]);export{m as E}; +import{e as r,o,c as s,a as t,_ as n}from"./index-NeVG6T13.js";const a={class:"error"},c=["innerHTML"],_=r({__name:"Error",props:{msg:{type:String,required:!0}},setup(e){return(i,p)=>(o(),s("div",a,[t("h1",{innerHTML:e.msg},null,8,c)]))}}),m=n(_,[["__scopeId","data-v-03ad8ef0"]]);export{m as E}; diff --git a/src/ui/dist/assets/Explore-BUXrNSQM.js b/src/ui/dist/assets/Explore-BDgVo6I-.js similarity index 96% rename from src/ui/dist/assets/Explore-BUXrNSQM.js rename to src/ui/dist/assets/Explore-BDgVo6I-.js index 9a47766f..7124d31d 100644 --- a/src/ui/dist/assets/Explore-BUXrNSQM.js +++ b/src/ui/dist/assets/Explore-BDgVo6I-.js @@ -1 +1 @@ -import{_ as p,o as r,c as i,a,r as h,x as _,F as f,h as m,p as u,y,f as k,g as l,w as c,M as d,u as v}from"./index-CTxjSbok.js";const g={props:{src:String}},$={class:"info"};function S(s,e,o,n,t,P){return r(),i("div",{class:"image",style:_({backgroundImage:"url("+o.src+")"})},[e[0]||(e[0]=a("div",{class:"filter"},null,-1)),a("div",$,[h(s.$slots,"default",{},void 0,!0)])],4)}const x=p(g,[["render",S],["__scopeId","data-v-0c755b69"]]),C={class:"songContent"},b={class:"play"},O=["onClick"],H={class:"info"},I={data(){return fetch("/api/playlists").then(async s=>{this.playlists=await s.json(),this.pick()}),{playlists:[],picks:[]}},mounted(){},methods:{parseCover:u,pick(){this.songs=this.playlists.map(s=>s.songs).flat();for(let s=0;s<4;s++)this.picks.push(this.songs[Math.floor(Math.random()*this.songs.length)])},onScroll(){this.$refs.container.clientHeight+this.$refs.container.scrollTop>=this.$refs.container.scrollHeight-100&&this.pick()},href(s){return`/track/${y(s.id)}`},loadPlaylist(s){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:s,type:"track"})})}}},M=Object.assign(I,{__name:"Explore",setup(s){return(e,o)=>{const n=k("router-link");return r(),i("div",{ref:"container",class:"explore",onScroll:o[0]||(o[0]=(...t)=>e.onScroll&&e.onScroll(...t))},[(r(!0),i(f,null,m(e.picks,t=>(r(),i("div",{key:t.name,class:"item"},[l(x,{src:v(u)(t.cover)},{default:c(()=>[a("div",C,[a("div",b,[a("span",{id:"loadPlaylist",class:"material-symbols-rounded play",onClick:()=>e.loadPlaylist(t.id)},"play_circle",8,O)]),a("div",H,[l(n,{to:e.href(t),class:"linkOnHover"},{default:c(()=>[a("h1",null,[l(d,{text:t.title},null,8,["text"])])]),_:2},1032,["to"]),l(n,{to:`/search/${t.artist}`,class:"linkOnHover"},{default:c(()=>[a("p",null,[l(d,{text:t.artist},null,8,["text"])])]),_:2},1032,["to"])])])]),_:2},1032,["src"])]))),128))],544)}}}),B=p(M,[["__scopeId","data-v-51105a59"]]);export{B as default}; +import{_ as p,o as r,c as i,a,r as h,x as _,F as f,h as m,p as u,y,f as k,g as l,w as c,M as d,u as v}from"./index-NeVG6T13.js";const g={props:{src:String}},$={class:"info"};function S(s,e,o,n,t,P){return r(),i("div",{class:"image",style:_({backgroundImage:"url("+o.src+")"})},[e[0]||(e[0]=a("div",{class:"filter"},null,-1)),a("div",$,[h(s.$slots,"default",{},void 0,!0)])],4)}const x=p(g,[["render",S],["__scopeId","data-v-0c755b69"]]),C={class:"songContent"},b={class:"play"},O=["onClick"],H={class:"info"},I={data(){return fetch("/api/playlists").then(async s=>{this.playlists=await s.json(),this.pick()}),{playlists:[],picks:[]}},mounted(){},methods:{parseCover:u,pick(){this.songs=this.playlists.map(s=>s.songs).flat();for(let s=0;s<4;s++)this.picks.push(this.songs[Math.floor(Math.random()*this.songs.length)])},onScroll(){this.$refs.container.clientHeight+this.$refs.container.scrollTop>=this.$refs.container.scrollHeight-100&&this.pick()},href(s){return`/track/${y(s.id)}`},loadPlaylist(s){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:s,type:"track"})})}}},M=Object.assign(I,{__name:"Explore",setup(s){return(e,o)=>{const n=k("router-link");return r(),i("div",{ref:"container",class:"explore",onScroll:o[0]||(o[0]=(...t)=>e.onScroll&&e.onScroll(...t))},[(r(!0),i(f,null,m(e.picks,t=>(r(),i("div",{key:t.name,class:"item"},[l(x,{src:v(u)(t.cover)},{default:c(()=>[a("div",C,[a("div",b,[a("span",{id:"loadPlaylist",class:"material-symbols-rounded play",onClick:()=>e.loadPlaylist(t.id)},"play_circle",8,O)]),a("div",H,[l(n,{to:e.href(t),class:"linkOnHover"},{default:c(()=>[a("h1",null,[l(d,{text:t.title},null,8,["text"])])]),_:2},1032,["to"]),l(n,{to:`/search/${t.artist}`,class:"linkOnHover"},{default:c(()=>[a("p",null,[l(d,{text:t.artist},null,8,["text"])])]),_:2},1032,["to"])])])]),_:2},1032,["src"])]))),128))],544)}}}),B=p(M,[["__scopeId","data-v-51105a59"]]);export{B as default}; diff --git a/src/ui/dist/assets/Explore-BDgVo6I-.js.gz b/src/ui/dist/assets/Explore-BDgVo6I-.js.gz new file mode 100644 index 00000000..8a40f8e8 Binary files /dev/null and b/src/ui/dist/assets/Explore-BDgVo6I-.js.gz differ diff --git a/src/ui/dist/assets/Explore-BUXrNSQM.js.gz b/src/ui/dist/assets/Explore-BUXrNSQM.js.gz deleted file mode 100644 index 7ce66644..00000000 Binary files a/src/ui/dist/assets/Explore-BUXrNSQM.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Export-DL4N6BXD.js.gz b/src/ui/dist/assets/Export-DL4N6BXD.js.gz deleted file mode 100644 index a7be3c17..00000000 Binary files a/src/ui/dist/assets/Export-DL4N6BXD.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Export-DL4N6BXD.js b/src/ui/dist/assets/Export-rSE5tdFQ.js similarity index 99% rename from src/ui/dist/assets/Export-DL4N6BXD.js rename to src/ui/dist/assets/Export-rSE5tdFQ.js index 1df70e61..da6e972b 100644 --- a/src/ui/dist/assets/Export-DL4N6BXD.js +++ b/src/ui/dist/assets/Export-rSE5tdFQ.js @@ -1,4 +1,4 @@ -import{E as Gt,C as qt,p as jt,aa as Vt,_ as gt,i as mt,f as z,o as G,w as Yt,a as k,g as X,c as J,t as O,d as v,b as yt,F as Et,aA as dt,ad as Jt,j as Wt,I as Ht,h as Xt}from"./index-CTxjSbok.js";import{G as tt}from"./gistClient-DbxNDpvo.js";var rt={},Y={},wt;function zt(){if(wt)return Y;wt=1,Y.byteLength=o,Y.toByteArray=P,Y.fromByteArray=N;for(var c=[],l=[],y=typeof Uint8Array<"u"?Uint8Array:Array,w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=0,x=w.length;f0)throw new Error("Invalid string. Length must be a multiple of 4");var B=a.indexOf("=");B===-1&&(B=d);var T=B===d?0:4-B%4;return[B,T]}function o(a){var d=h(a),B=d[0],T=d[1];return(B+T)*3/4-T}function R(a,d,B){return(d+B)*3/4-B}function P(a){var d,B=h(a),T=B[0],S=B[1],_=new y(R(a,T,S)),b=0,$=S>0?T-4:T,F;for(F=0;F<$;F+=4)d=l[a.charCodeAt(F)]<<18|l[a.charCodeAt(F+1)]<<12|l[a.charCodeAt(F+2)]<<6|l[a.charCodeAt(F+3)],_[b++]=d>>16&255,_[b++]=d>>8&255,_[b++]=d&255;return S===2&&(d=l[a.charCodeAt(F)]<<2|l[a.charCodeAt(F+1)]>>4,_[b++]=d&255),S===1&&(d=l[a.charCodeAt(F)]<<10|l[a.charCodeAt(F+1)]<<4|l[a.charCodeAt(F+2)]>>2,_[b++]=d>>8&255,_[b++]=d&255),_}function A(a){return c[a>>18&63]+c[a>>12&63]+c[a>>6&63]+c[a&63]}function U(a,d,B){for(var T,S=[],_=d;_$?$:b+_));return T===1?(d=a[B-1],S.push(c[d>>2]+c[d<<4&63]+"==")):T===2&&(d=(a[B-2]<<8)+a[B-1],S.push(c[d>>10]+c[d>>4&63]+c[d<<2&63]+"=")),S.join("")}return Y}var H={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */var xt;function Kt(){return xt||(xt=1,H.read=function(c,l,y,w,f){var x,h,o=f*8-w-1,R=(1<>1,A=-7,U=y?f-1:0,N=y?-1:1,a=c[l+U];for(U+=N,x=a&(1<<-A)-1,a>>=-A,A+=o;A>0;x=x*256+c[l+U],U+=N,A-=8);for(h=x&(1<<-A)-1,x>>=-A,A+=w;A>0;h=h*256+c[l+U],U+=N,A-=8);if(x===0)x=1-P;else{if(x===R)return h?NaN:(a?-1:1)*(1/0);h=h+Math.pow(2,w),x=x-P}return(a?-1:1)*h*Math.pow(2,x-w)},H.write=function(c,l,y,w,f,x){var h,o,R,P=x*8-f-1,A=(1<>1,N=f===23?Math.pow(2,-24)-Math.pow(2,-77):0,a=w?0:x-1,d=w?1:-1,B=l<0||l===0&&1/l<0?1:0;for(l=Math.abs(l),isNaN(l)||l===1/0?(o=isNaN(l)?1:0,h=A):(h=Math.floor(Math.log(l)/Math.LN2),l*(R=Math.pow(2,-h))<1&&(h--,R*=2),h+U>=1?l+=N/R:l+=N*Math.pow(2,1-U),l*R>=2&&(h++,R/=2),h+U>=A?(o=0,h=A):h+U>=1?(o=(l*R-1)*Math.pow(2,f),h=h+U):(o=l*Math.pow(2,U-1)*Math.pow(2,f),h=0));f>=8;c[y+a]=o&255,a+=d,o/=256,f-=8);for(h=h<0;c[y+a]=h&255,a+=d,h/=256,P-=8);c[y+a-d]|=B*128}),H}/*! +import{E as Gt,C as qt,p as jt,aa as Vt,_ as gt,i as mt,f as z,o as G,w as Yt,a as k,g as X,c as J,t as O,d as v,b as yt,F as Et,aA as dt,ad as Jt,j as Wt,I as Ht,h as Xt}from"./index-NeVG6T13.js";import{G as tt}from"./gistClient-DE35pGas.js";var rt={},Y={},wt;function zt(){if(wt)return Y;wt=1,Y.byteLength=o,Y.toByteArray=P,Y.fromByteArray=N;for(var c=[],l=[],y=typeof Uint8Array<"u"?Uint8Array:Array,w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=0,x=w.length;f0)throw new Error("Invalid string. Length must be a multiple of 4");var B=a.indexOf("=");B===-1&&(B=d);var T=B===d?0:4-B%4;return[B,T]}function o(a){var d=h(a),B=d[0],T=d[1];return(B+T)*3/4-T}function R(a,d,B){return(d+B)*3/4-B}function P(a){var d,B=h(a),T=B[0],S=B[1],_=new y(R(a,T,S)),b=0,$=S>0?T-4:T,F;for(F=0;F<$;F+=4)d=l[a.charCodeAt(F)]<<18|l[a.charCodeAt(F+1)]<<12|l[a.charCodeAt(F+2)]<<6|l[a.charCodeAt(F+3)],_[b++]=d>>16&255,_[b++]=d>>8&255,_[b++]=d&255;return S===2&&(d=l[a.charCodeAt(F)]<<2|l[a.charCodeAt(F+1)]>>4,_[b++]=d&255),S===1&&(d=l[a.charCodeAt(F)]<<10|l[a.charCodeAt(F+1)]<<4|l[a.charCodeAt(F+2)]>>2,_[b++]=d>>8&255,_[b++]=d&255),_}function A(a){return c[a>>18&63]+c[a>>12&63]+c[a>>6&63]+c[a&63]}function U(a,d,B){for(var T,S=[],_=d;_$?$:b+_));return T===1?(d=a[B-1],S.push(c[d>>2]+c[d<<4&63]+"==")):T===2&&(d=(a[B-2]<<8)+a[B-1],S.push(c[d>>10]+c[d>>4&63]+c[d<<2&63]+"=")),S.join("")}return Y}var H={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */var xt;function Kt(){return xt||(xt=1,H.read=function(c,l,y,w,f){var x,h,o=f*8-w-1,R=(1<>1,A=-7,U=y?f-1:0,N=y?-1:1,a=c[l+U];for(U+=N,x=a&(1<<-A)-1,a>>=-A,A+=o;A>0;x=x*256+c[l+U],U+=N,A-=8);for(h=x&(1<<-A)-1,x>>=-A,A+=w;A>0;h=h*256+c[l+U],U+=N,A-=8);if(x===0)x=1-P;else{if(x===R)return h?NaN:(a?-1:1)*(1/0);h=h+Math.pow(2,w),x=x-P}return(a?-1:1)*h*Math.pow(2,x-w)},H.write=function(c,l,y,w,f,x){var h,o,R,P=x*8-f-1,A=(1<>1,N=f===23?Math.pow(2,-24)-Math.pow(2,-77):0,a=w?0:x-1,d=w?1:-1,B=l<0||l===0&&1/l<0?1:0;for(l=Math.abs(l),isNaN(l)||l===1/0?(o=isNaN(l)?1:0,h=A):(h=Math.floor(Math.log(l)/Math.LN2),l*(R=Math.pow(2,-h))<1&&(h--,R*=2),h+U>=1?l+=N/R:l+=N*Math.pow(2,1-U),l*R>=2&&(h++,R/=2),h+U>=A?(o=0,h=A):h+U>=1?(o=(l*R-1)*Math.pow(2,f),h=h+U):(o=l*Math.pow(2,U-1)*Math.pow(2,f),h=0));f>=8;c[y+a]=o&255,a+=d,o/=256,f-=8);for(h=h<0;c[y+a]=h&255,a+=d,h/=256,P-=8);c[y+a-d]|=B*128}),H}/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh diff --git a/src/ui/dist/assets/Export-rSE5tdFQ.js.gz b/src/ui/dist/assets/Export-rSE5tdFQ.js.gz new file mode 100644 index 00000000..f3b95bba Binary files /dev/null and b/src/ui/dist/assets/Export-rSE5tdFQ.js.gz differ diff --git a/src/ui/dist/assets/FactCard-CcCpkYQW.js b/src/ui/dist/assets/FactCard-DRGvrYjY.js similarity index 88% rename from src/ui/dist/assets/FactCard-CcCpkYQW.js rename to src/ui/dist/assets/FactCard-DRGvrYjY.js index 71c3253d..e2d2e77e 100644 --- a/src/ui/dist/assets/FactCard-CcCpkYQW.js +++ b/src/ui/dist/assets/FactCard-DRGvrYjY.js @@ -1 +1 @@ -import{e as s,o as t,i as r,w as o,a as c,t as a,c as d,d as n,C as i,_ as l}from"./index-CTxjSbok.js";const m={class:"mx-4"},h={key:0,class:"my-0 text-muted"},p=s({__name:"FactCard",props:{withHover:{type:Boolean,default:!1},primaryText:{type:null,default:""},secondaryText:{type:String,default:"",required:!1}},setup(e){return(u,x)=>(t(),r(i,{"with-hover":e.withHover,class:"card p-4"},{default:o(()=>[c("h2",m,a(e.primaryText),1),e.secondaryText?(t(),d("p",h,a(e.secondaryText),1)):n("",!0)]),_:1},8,["with-hover"]))}}),f=l(p,[["__scopeId","data-v-23b147ec"]]);export{f as F}; +import{e as s,o as t,i as r,w as o,a as c,t as a,c as d,d as n,C as i,_ as l}from"./index-NeVG6T13.js";const m={class:"mx-4"},h={key:0,class:"my-0 text-muted"},p=s({__name:"FactCard",props:{withHover:{type:Boolean,default:!1},primaryText:{type:null,default:""},secondaryText:{type:String,default:"",required:!1}},setup(e){return(u,x)=>(t(),r(i,{"with-hover":e.withHover,class:"card p-4"},{default:o(()=>[c("h2",m,a(e.primaryText),1),e.secondaryText?(t(),d("p",h,a(e.secondaryText),1)):n("",!0)]),_:1},8,["with-hover"]))}}),f=l(p,[["__scopeId","data-v-23b147ec"]]);export{f as F}; diff --git a/src/ui/dist/assets/FullShelf-WiVa8WAT.js b/src/ui/dist/assets/FullShelf-DGzkcAo_.js similarity index 87% rename from src/ui/dist/assets/FullShelf-WiVa8WAT.js rename to src/ui/dist/assets/FullShelf-DGzkcAo_.js index c7f47d2e..d5fbf838 100644 --- a/src/ui/dist/assets/FullShelf-WiVa8WAT.js +++ b/src/ui/dist/assets/FullShelf-DGzkcAo_.js @@ -1 +1 @@ -import{_ as c,o as t,c as a,a as s,b as i,t as o,d,r}from"./index-CTxjSbok.js";const l={name:"FullShelf",props:{heading:String,icon:String}},_={class:"shelf"},h={class:"header"},u={key:0,class:"icon material-icons-outlined"},f={class:"items"};function m(n,p,e,S,g,v){return t(),a("div",_,[s("div",h,[s("h2",null,[i(o(e.heading),1),e.icon?(t(),a("span",u,o(e.icon),1)):d("",!0)])]),s("div",f,[r(n.$slots,"default",{},void 0,!0)])])}const x=c(l,[["render",m],["__scopeId","data-v-9502e6e9"]]);export{x as F}; +import{_ as c,o as t,c as a,a as s,b as i,t as o,d,r}from"./index-NeVG6T13.js";const l={name:"FullShelf",props:{heading:String,icon:String}},_={class:"shelf"},h={class:"header"},u={key:0,class:"icon material-icons-outlined"},f={class:"items"};function m(n,p,e,S,g,v){return t(),a("div",_,[s("div",h,[s("h2",null,[i(o(e.heading),1),e.icon?(t(),a("span",u,o(e.icon),1)):d("",!0)])]),s("div",f,[r(n.$slots,"default",{},void 0,!0)])])}const x=c(l,[["render",m],["__scopeId","data-v-9502e6e9"]]);export{x as F}; diff --git a/src/ui/dist/assets/Import-BjxBPYQC.js.gz b/src/ui/dist/assets/Import-BjxBPYQC.js.gz deleted file mode 100644 index 06eeca09..00000000 Binary files a/src/ui/dist/assets/Import-BjxBPYQC.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Import-BjxBPYQC.js b/src/ui/dist/assets/Import-DgtSATZa.js similarity index 98% rename from src/ui/dist/assets/Import-BjxBPYQC.js rename to src/ui/dist/assets/Import-DgtSATZa.js index b6d3c6b4..1997c263 100644 --- a/src/ui/dist/assets/Import-BjxBPYQC.js +++ b/src/ui/dist/assets/Import-DgtSATZa.js @@ -1,4 +1,4 @@ -import{e as F,A as G,o as d,c as v,g as E,E as V,a as u,M as z,H,t as S,F as O,h as D,K as N,d as h,_ as L,i as $,w as T,b as q,C as I,l as P,j as K,B as W,v as Z,I as Q,L as R,aA as U,s as X,Z as Y,$ as ee,aB as te,aC as se,aD as le}from"./index-CTxjSbok.js";import{G as J}from"./gistClient-DbxNDpvo.js";const ae=(e,r)=>{const t={source:e.source,id:e.id,changed:{}},l=t.changed,o=["id","href","duration","plays","artists"];for(const a of Object.keys(e))if(!o.includes(a)){if(a==="metadata"){const y=e.metadata,m=r.metadata;if(y&&m){if(!y.spotify&&!m.spotify)continue;if(!y.spotify&&m.spotify){l.metadata={from:y,to:m};continue}if(y.spotify&&!m.spotify){l.metadata={from:y,to:m};continue}y.spotify.id!==m.spotify.id&&(l.metadata={from:y,to:m})}else(y||m)&&(l.metadata={from:y,to:m});continue}a!=="id"&&e[a]!==r[a]&&(l[a]={from:e[a],to:r[a]})}return Object.keys(l).length?t:null},ne=(e,r)=>{const t={name:e.playlist.name,id:e.playlist.id,added:[],removed:[],modified:[]};if(e.playlist.type!==r.playlist.type)return null;if(e.playlist.type==="smart"){const l=e.playlist,o=r.playlist;return JSON.stringify(l.definition)!==JSON.stringify(o.definition)?t:null}if(r.playlist.type!=="smart"){for(const l of e.playlist.songs){const o=r.playlist.songs.find(a=>a.source===l.source);if(o){const a=ae(l,o);a&&t.modified.push(a)}else t.removed.push(l)}for(const l of r.playlist.songs)e.playlist.songs.find(a=>a.source===l.source)||t.added.push(l);return t.added.length||t.removed.length||t.modified.length?t:null}},ie=(e,r)=>{const t={added:[],removed:[],modified:[]};for(const l of e.collection){const o=r.collection.find(a=>a.playlist.name===l.playlist.name);if(o){const a=ne(l,o);a&&t.modified.push(a)}else t.removed.push(l)}for(const l of r.collection)e.collection.find(a=>a.playlist.name===l.playlist.name)||t.added.push(l);return t},oe={class:"overflow-hidden"},de={class:"title my-0"},ce={key:0,class:"info"},re={class:"key"},ue={class:"value"},fe=F({__name:"SongDiff",props:{song:{type:Object,required:!0},diff:{type:Object,required:!0},isBase:{type:Boolean,required:!1},expanded:{type:Object,required:!1}},emits:["exclude","toggle-expanded"],setup(e,{emit:r}){const t=e,l=G(()=>t.diff.removed.some(i=>i.source===t.song.source)?"removed":t.diff.modified.some(i=>i.source===t.song.source)?"modified":t.isBase?"base":t.diff.added.some(i=>i.source===t.song.source)?"added":"base"),o=r,a=()=>{o("toggle-expanded",t.song)},y=["title","artist","album","source","cover","favourite","metadata"],m=i=>{var b,k,w;const f=(k=(b=t.diff.modified.find(C=>C.source===t.song.source))==null?void 0:b.changed)==null?void 0:k[i],x=t.isBase?"from":"to",g=(f==null?void 0:f[x])??t.song[i];return i=="metadata"?(w=g==null?void 0:g.spotify)==null?void 0:w.id:g};return(i,f)=>{var x,g;return!e.isBase&&l.value=="removed"?h("",!0):(d(),v("div",{key:0,class:N([l.value,"song px-4 py-2"])},[E(V,{src:e.song.cover,class:"rounded-md"},null,8,["src"]),u("div",oe,[u("p",de,[E(z,{text:e.song.title},null,8,["text"])]),E(H,{artist:e.song.artist,class:"artist text-muted"},null,8,["artist"])]),u("span",{class:"material-symbols-rounded cursor-pointer",onClick:a},S(((x=e.expanded)==null?void 0:x.source)==e.song.source?"expand_less":"expand_more"),1),((g=e.expanded)==null?void 0:g.source)==e.song.source?(d(),v("div",ce,[(d(),v(O,null,D(y,b=>{var k,w;return u("div",{key:b,class:N([{modified:(w=(k=e.diff.modified.find(C=>C.source===e.song.source))==null?void 0:k.changed)==null?void 0:w[b]},"info__table"])},[u("span",re,S(b),1),u("span",ue,S(m(b)),1)],2)}),64))])):h("",!0)],2))}}}),pe=L(fe,[["__scopeId","data-v-1805c709"]]),ye={class:"info"},me={class:"title"},ge={key:0,class:"material-symbols-rounded"},ve={key:0,class:"text-muted"},xe={class:"flex flex-row justify-between items-center"},he={key:0,class:"text-very-muted"},be={key:0},ke=F({__name:"PlaylistDiff",props:{playlist:{type:Object,required:!0},diff:{type:Object,required:!0},isBase:{type:Boolean,required:!1},expanded:{type:Boolean,required:!1},expandedSong:{type:Object,required:!1}},emits:["exclude","toggle-expanded","toggle-expanded-song"],setup(e,{emit:r}){const t=e,l=G(()=>t.diff.removed.some(i=>i.playlist.name===t.playlist.name)?"removed":t.diff.modified.some(i=>i.name===t.playlist.name)?"modified":t.isBase?"base":t.diff.added.some(i=>i.playlist.name===t.playlist.name)?"added":"base"),o=r,a=()=>{o("toggle-expanded",t.playlist)},y=i=>{o("toggle-expanded-song",i)},m=i=>{const f=t.diff.modified.find(x=>x.name===i.name);return f||{name:i.name,added:[],removed:[],modified:[]}};return(i,f)=>(d(),$(I,{class:N([l.value,"playlist p-4 rounded-xl relative"])},{default:T(()=>{var x;return[E(V,{src:e.playlist.cover,class:"rounded-xl self-start"},null,8,["src"]),u("div",ye,[u("div",me,[e.playlist.type!="classic"?(d(),v("span",ge,S(e.playlist.type=="smart"?"neurology":"bolt"),1)):h("",!0),u("h2",null,S(e.playlist.name),1)]),e.playlist.description?(d(),v("p",ve,S(e.playlist.description),1)):h("",!0),u("div",xe,[e.playlist.type==="classic"?(d(),v("p",he,[u("strong",null,S((x=e.playlist.songs)==null?void 0:x.length),1),f[1]||(f[1]=q(" tracks "))])):h("",!0),u("span",{class:"material-symbols-rounded cursor-pointer",title:"Expand",onClick:a},S(e.expanded?"expand_less":"expand_more"),1)])]),e.expanded?(d(),$(I,{key:0,class:"col-span-2 flex flex-col gap-2 z-10 p-4"},{default:T(()=>[e.playlist.type==="classic"?(d(!0),v(O,{key:0},D(e.playlist.songs,g=>(d(),$(pe,{key:g.source,diff:m(e.playlist),expanded:e.expandedSong,"is-base":e.isBase,song:g,onToggleExpanded:y},null,8,["diff","expanded","is-base","song"]))),128)):h("",!0),u("pre",null,[f[2]||(f[2]=q(" ")),e.playlist.type==="smart"?(d(),v("code",be,` +import{e as F,A as G,o as d,c as v,g as E,E as V,a as u,M as z,H,t as S,F as O,h as D,K as N,d as h,_ as L,i as $,w as T,b as q,C as I,l as P,j as K,B as W,v as Z,I as Q,L as R,aA as U,s as X,Z as Y,$ as ee,aB as te,aC as se,aD as le}from"./index-NeVG6T13.js";import{G as J}from"./gistClient-DE35pGas.js";const ae=(e,r)=>{const t={source:e.source,id:e.id,changed:{}},l=t.changed,o=["id","href","duration","plays","artists"];for(const a of Object.keys(e))if(!o.includes(a)){if(a==="metadata"){const y=e.metadata,m=r.metadata;if(y&&m){if(!y.spotify&&!m.spotify)continue;if(!y.spotify&&m.spotify){l.metadata={from:y,to:m};continue}if(y.spotify&&!m.spotify){l.metadata={from:y,to:m};continue}y.spotify.id!==m.spotify.id&&(l.metadata={from:y,to:m})}else(y||m)&&(l.metadata={from:y,to:m});continue}a!=="id"&&e[a]!==r[a]&&(l[a]={from:e[a],to:r[a]})}return Object.keys(l).length?t:null},ne=(e,r)=>{const t={name:e.playlist.name,id:e.playlist.id,added:[],removed:[],modified:[]};if(e.playlist.type!==r.playlist.type)return null;if(e.playlist.type==="smart"){const l=e.playlist,o=r.playlist;return JSON.stringify(l.definition)!==JSON.stringify(o.definition)?t:null}if(r.playlist.type!=="smart"){for(const l of e.playlist.songs){const o=r.playlist.songs.find(a=>a.source===l.source);if(o){const a=ae(l,o);a&&t.modified.push(a)}else t.removed.push(l)}for(const l of r.playlist.songs)e.playlist.songs.find(a=>a.source===l.source)||t.added.push(l);return t.added.length||t.removed.length||t.modified.length?t:null}},ie=(e,r)=>{const t={added:[],removed:[],modified:[]};for(const l of e.collection){const o=r.collection.find(a=>a.playlist.name===l.playlist.name);if(o){const a=ne(l,o);a&&t.modified.push(a)}else t.removed.push(l)}for(const l of r.collection)e.collection.find(a=>a.playlist.name===l.playlist.name)||t.added.push(l);return t},oe={class:"overflow-hidden"},de={class:"title my-0"},ce={key:0,class:"info"},re={class:"key"},ue={class:"value"},fe=F({__name:"SongDiff",props:{song:{type:Object,required:!0},diff:{type:Object,required:!0},isBase:{type:Boolean,required:!1},expanded:{type:Object,required:!1}},emits:["exclude","toggle-expanded"],setup(e,{emit:r}){const t=e,l=G(()=>t.diff.removed.some(i=>i.source===t.song.source)?"removed":t.diff.modified.some(i=>i.source===t.song.source)?"modified":t.isBase?"base":t.diff.added.some(i=>i.source===t.song.source)?"added":"base"),o=r,a=()=>{o("toggle-expanded",t.song)},y=["title","artist","album","source","cover","favourite","metadata"],m=i=>{var b,k,w;const f=(k=(b=t.diff.modified.find(C=>C.source===t.song.source))==null?void 0:b.changed)==null?void 0:k[i],x=t.isBase?"from":"to",g=(f==null?void 0:f[x])??t.song[i];return i=="metadata"?(w=g==null?void 0:g.spotify)==null?void 0:w.id:g};return(i,f)=>{var x,g;return!e.isBase&&l.value=="removed"?h("",!0):(d(),v("div",{key:0,class:N([l.value,"song px-4 py-2"])},[E(V,{src:e.song.cover,class:"rounded-md"},null,8,["src"]),u("div",oe,[u("p",de,[E(z,{text:e.song.title},null,8,["text"])]),E(H,{artist:e.song.artist,class:"artist text-muted"},null,8,["artist"])]),u("span",{class:"material-symbols-rounded cursor-pointer",onClick:a},S(((x=e.expanded)==null?void 0:x.source)==e.song.source?"expand_less":"expand_more"),1),((g=e.expanded)==null?void 0:g.source)==e.song.source?(d(),v("div",ce,[(d(),v(O,null,D(y,b=>{var k,w;return u("div",{key:b,class:N([{modified:(w=(k=e.diff.modified.find(C=>C.source===e.song.source))==null?void 0:k.changed)==null?void 0:w[b]},"info__table"])},[u("span",re,S(b),1),u("span",ue,S(m(b)),1)],2)}),64))])):h("",!0)],2))}}}),pe=L(fe,[["__scopeId","data-v-1805c709"]]),ye={class:"info"},me={class:"title"},ge={key:0,class:"material-symbols-rounded"},ve={key:0,class:"text-muted"},xe={class:"flex flex-row justify-between items-center"},he={key:0,class:"text-very-muted"},be={key:0},ke=F({__name:"PlaylistDiff",props:{playlist:{type:Object,required:!0},diff:{type:Object,required:!0},isBase:{type:Boolean,required:!1},expanded:{type:Boolean,required:!1},expandedSong:{type:Object,required:!1}},emits:["exclude","toggle-expanded","toggle-expanded-song"],setup(e,{emit:r}){const t=e,l=G(()=>t.diff.removed.some(i=>i.playlist.name===t.playlist.name)?"removed":t.diff.modified.some(i=>i.name===t.playlist.name)?"modified":t.isBase?"base":t.diff.added.some(i=>i.playlist.name===t.playlist.name)?"added":"base"),o=r,a=()=>{o("toggle-expanded",t.playlist)},y=i=>{o("toggle-expanded-song",i)},m=i=>{const f=t.diff.modified.find(x=>x.name===i.name);return f||{name:i.name,added:[],removed:[],modified:[]}};return(i,f)=>(d(),$(I,{class:N([l.value,"playlist p-4 rounded-xl relative"])},{default:T(()=>{var x;return[E(V,{src:e.playlist.cover,class:"rounded-xl self-start"},null,8,["src"]),u("div",ye,[u("div",me,[e.playlist.type!="classic"?(d(),v("span",ge,S(e.playlist.type=="smart"?"neurology":"bolt"),1)):h("",!0),u("h2",null,S(e.playlist.name),1)]),e.playlist.description?(d(),v("p",ve,S(e.playlist.description),1)):h("",!0),u("div",xe,[e.playlist.type==="classic"?(d(),v("p",he,[u("strong",null,S((x=e.playlist.songs)==null?void 0:x.length),1),f[1]||(f[1]=q(" tracks "))])):h("",!0),u("span",{class:"material-symbols-rounded cursor-pointer",title:"Expand",onClick:a},S(e.expanded?"expand_less":"expand_more"),1)])]),e.expanded?(d(),$(I,{key:0,class:"col-span-2 flex flex-col gap-2 z-10 p-4"},{default:T(()=>[e.playlist.type==="classic"?(d(!0),v(O,{key:0},D(e.playlist.songs,g=>(d(),$(pe,{key:g.source,diff:m(e.playlist),expanded:e.expandedSong,"is-base":e.isBase,song:g,onToggleExpanded:y},null,8,["diff","expanded","is-base","song"]))),128)):h("",!0),u("pre",null,[f[2]||(f[2]=q(" ")),e.playlist.type==="smart"?(d(),v("code",be,` `+S(JSON.stringify(e.playlist.definition,null,4))+` `,1)):h("",!0),f[3]||(f[3]=q(` `))])]),_:1})):h("",!0),l.value!="base"?(d(),v("span",{key:1,class:"material-symbols-rounded exclude",title:"Exclude",onClick:f[0]||(f[0]=g=>i.$emit("exclude",e.playlist))}," block ")):h("",!0)]}),_:1},8,["class"]))}}),M=L(ke,[["__scopeId","data-v-51b40518"]]),Se={class:"pb-4 pr-4 flex flex-col gap-4 h-full"},Pe={class:"flex flex-row justify-end"},Ee={key:1,class:"fill-page"},we={key:1,class:"fill-page !grid !grid-cols-2 gap-4"},Be=F({__name:"Import",setup(e){const r=P(!1),t=P(null),l=P({}),o=P({}),a=G(()=>ie(l.value,o.value)),y=K();let m=!1;const i=async()=>{var c;if(r.value||m)return;m=!0;const n=[];for(const s of(c=y.playlists)==null?void 0:c.filter(p=>p.type!="special")){const p=Object.assign({},s);n.push(p)}l.value=await U(n),m=!1};W(()=>y.playlists,i),Z(i);const f=n=>{l.value.collection=l.value.collection.filter(c=>c.playlist.name!==n.name),o.value.collection=o.value.collection.filter(c=>c.playlist.name!==n.name)},x=P(null),g=P(null),b=n=>{var c;((c=x.value)==null?void 0:c.name)===n.name?x.value=null:x.value=n},k=n=>{var c;((c=g.value)==null?void 0:c.id)===n.id?g.value=null:g.value=n},w=async()=>{r.value=!0;const n=[],c=s=>{n.push(te(s.id,s.added));for(const p of s.removed)n.push(se(s.id,p.id));for(const p of s.modified)for(const B of Object.keys(p.changed))n.push(le(p.id,B,p.changed[B].to))};for(const s of a.value.added)s.playlist.type!=="special"&&(l.value.collection.push(s),n.push(X(s.playlist.type,s.playlist.name,s.playlist.description,s.playlist.cover).then(p=>{s.playlist.id=p,s.playlist.type==="classic"?c({id:s.playlist.id,name:s.playlist.name,added:s.playlist.songs,removed:[],modified:[]}):s.playlist.type==="smart"&&n.push(Y(s.playlist.id,s.playlist.definition))})));for(const s of a.value.modified)c(s);for(const s of a.value.removed)n.push(ee(s.playlist.id));await Promise.all(n),window.setTimeout(async()=>{await y.fetchPlaylists(),r.value=!1,await i()},1e3)},C=P(!1);J.connected().then(n=>C.value=n);const _=async()=>{const n=document.createElement("input");n.type="file",n.accept=".one.*",n.name="my.one.collection",n.onchange=async()=>{if(!n.files)return;const s=await n.files[0].text(),p=JSON.parse(s);o.value=p,t.value="file"},n.click()},A=async()=>{o.value=await J.getContent(),t.value="gist"};return P(null),(n,c)=>(d(),v("div",Se,[u("div",Pe,[E(Q,{icon:"merge",label:"Merge",onClick:w})]),t.value?(d(),v(O,{key:0},[r.value?(d(),v("div",Ee,[E(R)])):(d(),v(O,{key:0},[c[0]||(c[0]=u("div",{class:"grid grid-cols-2 gap-4"},[u("h1",null,"Local"),u("h1",null,"Incoming")],-1)),(d(!0),v(O,null,D(l.value.collection,s=>{var p,B;return d(),v("div",{key:s.playlist.name,class:"grid grid-cols-2 gap-4"},[l.value.collection.some(j=>j.playlist.name===s.playlist.name)?(d(),$(M,{key:0,diff:a.value,expanded:((p=x.value)==null?void 0:p.name)===s.playlist.name,"expanded-song":g.value,playlist:s.playlist,class:"grid-1","is-base":"",onExclude:f,onToggleExpanded:b,onToggleExpandedSong:k},null,8,["diff","expanded","expanded-song","playlist"])):h("",!0),o.value.collection.some(j=>j.playlist.name===s.playlist.name)?(d(),$(M,{key:1,diff:a.value,expanded:((B=x.value)==null?void 0:B.name)===s.playlist.name,"expanded-song":g.value,playlist:o.value.collection.find(j=>j.playlist.name===s.playlist.name).playlist,class:"grid-2",onExclude:f,onToggleExpanded:b,onToggleExpandedSong:k},null,8,["diff","expanded","expanded-song","playlist"])):h("",!0)])}),128)),(d(!0),v(O,null,D(a.value.added,s=>{var p;return d(),v("div",{key:s.playlist.name,class:"grid grid-cols-2 gap-4"},[o.value.collection.some(B=>B.playlist.name===s.playlist.name)?(d(),$(M,{key:0,diff:a.value,expanded:((p=x.value)==null?void 0:p.name)===s.playlist.name,"expanded-song":g.value,playlist:s.playlist,class:"grid-2",onExclude:f,onToggleExpanded:b,onToggleExpandedSong:k},null,8,["diff","expanded","expanded-song","playlist"])):h("",!0)])}),128))],64))],64)):(d(),v("div",we,[E(I,{"with-hover":"",class:"cursor-pointer",onClick:_},{default:T(()=>c[1]||(c[1]=[u("h2",null,[u("span",{class:"material-symbols-rounded"},"file_upload"),q(" From File ")],-1)])),_:1}),E(I,{disabled:!C.value,"with-hover":"",class:"cursor-pointer",onClick:A},{default:T(()=>c[2]||(c[2]=[u("h2",null,[u("span",{class:"material-symbols-rounded"},"cloud_download"),q(" GitHub Gist ")],-1)])),_:1},8,["disabled"])]))]))}}),$e=L(Be,[["__scopeId","data-v-3e5b815e"]]);export{$e as default}; diff --git a/src/ui/dist/assets/Import-DgtSATZa.js.gz b/src/ui/dist/assets/Import-DgtSATZa.js.gz new file mode 100644 index 00000000..55d5c24c Binary files /dev/null and b/src/ui/dist/assets/Import-DgtSATZa.js.gz differ diff --git a/src/ui/dist/assets/ImportLink-BtDFD4Om.js.gz b/src/ui/dist/assets/ImportLink-BtDFD4Om.js.gz deleted file mode 100644 index cc879bbb..00000000 Binary files a/src/ui/dist/assets/ImportLink-BtDFD4Om.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/ImportLink-BtDFD4Om.js b/src/ui/dist/assets/ImportLink-Bua7Xd9q.js similarity index 95% rename from src/ui/dist/assets/ImportLink-BtDFD4Om.js rename to src/ui/dist/assets/ImportLink-Bua7Xd9q.js index e28d362c..a44b37df 100644 --- a/src/ui/dist/assets/ImportLink-BtDFD4Om.js +++ b/src/ui/dist/assets/ImportLink-Bua7Xd9q.js @@ -1 +1 @@ -import{e as w,z as b,m as C,l as d,v as B,o,c as n,a,t as c,b as _,i as I,w as $,F as j,h as N,g as m,I as f,u as L,C as R,aE as V,_ as E}from"./index-CTxjSbok.js";const F={class:"max-w-[60ch] w-full h-full flex items-center justify-center"},S={class:"flex-col"},z={key:0,class:"text-muted italic text-sm"},A={class:"ml-0"},D={class:"flex gap-2 items-center"},M={class:"text-muted uppercase text-sm"},O=["onClick"],T={class:"buttons flex gap-2"},q=w({__name:"ImportLink",setup(G){const h=b(),l=C(),r=d(""),t=d([]);B(async()=>{const i=h.params.id,s=atob(i),[e,...u]=s.split(":");if(e==="gist"){const[p,v,g]=u,y=`https://gist.githubusercontent.com/${p}/${v}/raw/${g}`,k=await(await fetch(y)).json();t.value=[k],r.value=p}});const x=async()=>{await V(t.value),l.push("/")};return(i,s)=>(o(),n("div",F,[a("div",S,[a("strong",null,c(r.value),1),s[1]||(s[1]=_(" wants to share: ")),t.value.length==0?(o(),n("span",z,"Nothing")):(o(),I(R,{key:1,class:"p-4 mt-4 w-max flex flex-col gap-4"},{default:$(()=>[a("ul",A,[(o(!0),n(j,null,N(t.value,e=>(o(),n("li",D,[a("span",M,c(e.type),1),_(" "+c(e.playlist.name)+" ",1),a("span",{class:"material-symbols-rounded cursor-pointer",onClick:u=>t.value.splice(t.value.indexOf(e),1)}," delete ",8,O)]))),256))]),a("div",T,[m(f,{type:"success",icon:"check",label:"Accept",onClick:x}),m(f,{type:"danger",icon:"close",label:"Reject",onClick:s[0]||(s[0]=e=>L(l).push("/"))})])]),_:1}))])]))}}),K=E(q,[["__scopeId","data-v-608ea9fa"]]);export{K as default}; +import{e as w,z as b,m as C,l as d,v as B,o,c as n,a,t as c,b as _,i as I,w as $,F as j,h as N,g as m,I as f,u as L,C as R,aE as V,_ as E}from"./index-NeVG6T13.js";const F={class:"max-w-[60ch] w-full h-full flex items-center justify-center"},S={class:"flex-col"},z={key:0,class:"text-muted italic text-sm"},A={class:"ml-0"},D={class:"flex gap-2 items-center"},M={class:"text-muted uppercase text-sm"},O=["onClick"],T={class:"buttons flex gap-2"},q=w({__name:"ImportLink",setup(G){const h=b(),l=C(),r=d(""),t=d([]);B(async()=>{const i=h.params.id,s=atob(i),[e,...u]=s.split(":");if(e==="gist"){const[p,v,g]=u,y=`https://gist.githubusercontent.com/${p}/${v}/raw/${g}`,k=await(await fetch(y)).json();t.value=[k],r.value=p}});const x=async()=>{await V(t.value),l.push("/")};return(i,s)=>(o(),n("div",F,[a("div",S,[a("strong",null,c(r.value),1),s[1]||(s[1]=_(" wants to share: ")),t.value.length==0?(o(),n("span",z,"Nothing")):(o(),I(R,{key:1,class:"p-4 mt-4 w-max flex flex-col gap-4"},{default:$(()=>[a("ul",A,[(o(!0),n(j,null,N(t.value,e=>(o(),n("li",D,[a("span",M,c(e.type),1),_(" "+c(e.playlist.name)+" ",1),a("span",{class:"material-symbols-rounded cursor-pointer",onClick:u=>t.value.splice(t.value.indexOf(e),1)}," delete ",8,O)]))),256))]),a("div",T,[m(f,{type:"success",icon:"check",label:"Accept",onClick:x}),m(f,{type:"danger",icon:"close",label:"Reject",onClick:s[0]||(s[0]=e=>L(l).push("/"))})])]),_:1}))])]))}}),K=E(q,[["__scopeId","data-v-608ea9fa"]]);export{K as default}; diff --git a/src/ui/dist/assets/ImportLink-Bua7Xd9q.js.gz b/src/ui/dist/assets/ImportLink-Bua7Xd9q.js.gz new file mode 100644 index 00000000..0bce9e8d Binary files /dev/null and b/src/ui/dist/assets/ImportLink-Bua7Xd9q.js.gz differ diff --git a/src/ui/dist/assets/Insight-D-5GEXTO.js b/src/ui/dist/assets/Insight-8n5os3vM.js similarity index 99% rename from src/ui/dist/assets/Insight-D-5GEXTO.js rename to src/ui/dist/assets/Insight-8n5os3vM.js index 98fbcdc9..a7db7b53 100644 --- a/src/ui/dist/assets/Insight-D-5GEXTO.js +++ b/src/ui/dist/assets/Insight-8n5os3vM.js @@ -1,4 +1,4 @@ -var Nn=Object.defineProperty;var jn=(i,t,e)=>t in i?Nn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>jn(i,typeof t!="symbol"?t+"":t,e);import{e as $n,l as Kt,a5 as Yn,aI as Un,v as Xn,o as Kn,c as qn,g as xt,u as yt,a6 as Gn,a as F,w as zt,C as Bt,t as Ge,F as Zn,_ as Qn}from"./index-CTxjSbok.js";/*! +var Nn=Object.defineProperty;var jn=(i,t,e)=>t in i?Nn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>jn(i,typeof t!="symbol"?t+"":t,e);import{e as $n,l as Kt,a5 as Yn,aI as Un,v as Xn,o as Kn,c as qn,g as xt,u as yt,a6 as Gn,a as F,w as zt,C as Bt,t as Ge,F as Zn,_ as Qn}from"./index-NeVG6T13.js";/*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela diff --git a/src/ui/dist/assets/Insight-8n5os3vM.js.gz b/src/ui/dist/assets/Insight-8n5os3vM.js.gz new file mode 100644 index 00000000..86dfbdee Binary files /dev/null and b/src/ui/dist/assets/Insight-8n5os3vM.js.gz differ diff --git a/src/ui/dist/assets/Insight-D-5GEXTO.js.gz b/src/ui/dist/assets/Insight-D-5GEXTO.js.gz deleted file mode 100644 index 697cfb3b..00000000 Binary files a/src/ui/dist/assets/Insight-D-5GEXTO.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Liked-B_zgztvz.js b/src/ui/dist/assets/Liked-B_zgztvz.js new file mode 100644 index 00000000..733ff926 --- /dev/null +++ b/src/ui/dist/assets/Liked-B_zgztvz.js @@ -0,0 +1 @@ +import{T as o}from"./Template-DPpn6WCj.js";import{i as r,o as t}from"./index-NeVG6T13.js";import"./PlaylistEntry-CFWDnKVM.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-4SxXvN8G.js";import"./FactCard-DRGvrYjY.js";import"./gistClient-DE35pGas.js";import"./Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js";const k={__name:"Liked",setup(p){return(e,i)=>(t(),r(o,{id:"liked"}))}};export{k as default}; diff --git a/src/ui/dist/assets/Liked-CWhd73l6.js b/src/ui/dist/assets/Liked-CWhd73l6.js deleted file mode 100644 index ab26c3ed..00000000 --- a/src/ui/dist/assets/Liked-CWhd73l6.js +++ /dev/null @@ -1 +0,0 @@ -import{T as o}from"./Template-B3y8aqn2.js";import{i as r,o as t}from"./index-CTxjSbok.js";import"./PlaylistEntry-DrzB4VXk.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-pw-5IPtN.js";import"./FactCard-CcCpkYQW.js";import"./gistClient-DbxNDpvo.js";import"./Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js";const k={__name:"Liked",setup(p){return(e,i)=>(t(),r(o,{id:"liked"}))}};export{k as default}; diff --git a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js.gz b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js.gz deleted file mode 100644 index 4528a14e..00000000 Binary files a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js similarity index 99% rename from src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js rename to src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js index d41a4531..7d6799f1 100644 --- a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js +++ b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js @@ -1,4 +1,4 @@ -import{ay as Ve,az as Ze,e as Ge,l as We,o as Je,i as Qe,w as Ye,a as Ke,u as Xe,a8 as nr}from"./index-CTxjSbok.js";var K={};const tr="Á",er="á",rr="Ă",or="ă",sr="∾",cr="∿",ir="∾̳",ur="Â",ar="â",lr="´",fr="А",hr="а",pr="Æ",dr="æ",_r="⁡",mr="𝔄",gr="𝔞",kr="À",xr="à",vr="ℵ",br="ℵ",Cr="Α",yr="α",Ar="Ā",qr="ā",Dr="⨿",Er="&",wr="&",Fr="⩕",Sr="⩓",Rr="∧",Tr="⩜",Lr="⩘",zr="⩚",Ir="∠",Mr="⦤",Pr="∠",Br="⦨",Or="⦩",Nr="⦪",Ur="⦫",jr="⦬",$r="⦭",Hr="⦮",Vr="⦯",Zr="∡",Gr="∟",Wr="⊾",Jr="⦝",Qr="∢",Yr="Å",Kr="⍼",Xr="Ą",no="ą",to="𝔸",eo="𝕒",ro="⩯",oo="≈",so="⩰",co="≊",io="≋",uo="'",ao="⁡",lo="≈",fo="≊",ho="Å",po="å",_o="𝒜",mo="𝒶",go="≔",ko="*",xo="≈",vo="≍",bo="Ã",Co="ã",yo="Ä",Ao="ä",qo="∳",Do="⨑",Eo="≌",wo="϶",Fo="‵",So="∽",Ro="⋍",To="∖",Lo="⫧",zo="⊽",Io="⌅",Mo="⌆",Po="⌅",Bo="⎵",Oo="⎶",No="≌",Uo="Б",jo="б",$o="„",Ho="∵",Vo="∵",Zo="∵",Go="⦰",Wo="϶",Jo="ℬ",Qo="ℬ",Yo="Β",Ko="β",Xo="ℶ",ns="≬",ts="𝔅",es="𝔟",rs="⋂",os="◯",ss="⋃",cs="⨀",is="⨁",us="⨂",as="⨆",ls="★",fs="▽",hs="△",ps="⨄",ds="⋁",_s="⋀",ms="⤍",gs="⧫",ks="▪",xs="▴",vs="▾",bs="◂",Cs="▸",ys="␣",As="▒",qs="░",Ds="▓",Es="█",ws="=⃥",Fs="≡⃥",Ss="⫭",Rs="⌐",Ts="𝔹",Ls="𝕓",zs="⊥",Is="⊥",Ms="⋈",Ps="⧉",Bs="┐",Os="╕",Ns="╖",Us="╗",js="┌",$s="╒",Hs="╓",Vs="╔",Zs="─",Gs="═",Ws="┬",Js="╤",Qs="╥",Ys="╦",Ks="┴",Xs="╧",nc="╨",tc="╩",ec="⊟",rc="⊞",oc="⊠",sc="┘",cc="╛",ic="╜",uc="╝",ac="└",lc="╘",fc="╙",hc="╚",pc="│",dc="║",_c="┼",mc="╪",gc="╫",kc="╬",xc="┤",vc="╡",bc="╢",Cc="╣",yc="├",Ac="╞",qc="╟",Dc="╠",Ec="‵",wc="˘",Fc="˘",Sc="¦",Rc="𝒷",Tc="ℬ",Lc="⁏",zc="∽",Ic="⋍",Mc="⧅",Pc="\\",Bc="⟈",Oc="•",Nc="•",Uc="≎",jc="⪮",$c="≏",Hc="≎",Vc="≏",Zc="Ć",Gc="ć",Wc="⩄",Jc="⩉",Qc="⩋",Yc="∩",Kc="⋒",Xc="⩇",ni="⩀",ti="ⅅ",ei="∩︀",ri="⁁",oi="ˇ",si="ℭ",ci="⩍",ii="Č",ui="č",ai="Ç",li="ç",fi="Ĉ",hi="ĉ",pi="∰",di="⩌",_i="⩐",mi="Ċ",gi="ċ",ki="¸",xi="¸",vi="⦲",bi="¢",Ci="·",yi="·",Ai="𝔠",qi="ℭ",Di="Ч",Ei="ч",wi="✓",Fi="✓",Si="Χ",Ri="χ",Ti="ˆ",Li="≗",zi="↺",Ii="↻",Mi="⊛",Pi="⊚",Bi="⊝",Oi="⊙",Ni="®",Ui="Ⓢ",ji="⊖",$i="⊕",Hi="⊗",Vi="○",Zi="⧃",Gi="≗",Wi="⨐",Ji="⫯",Qi="⧂",Yi="∲",Ki="”",Xi="’",nu="♣",tu="♣",eu=":",ru="∷",ou="⩴",su="≔",cu="≔",iu=",",uu="@",au="∁",lu="∘",fu="∁",hu="ℂ",pu="≅",du="⩭",_u="≡",mu="∮",gu="∯",ku="∮",xu="𝕔",vu="ℂ",bu="∐",Cu="∐",yu="©",Au="©",qu="℗",Du="∳",Eu="↵",wu="✗",Fu="⨯",Su="𝒞",Ru="𝒸",Tu="⫏",Lu="⫑",zu="⫐",Iu="⫒",Mu="⋯",Pu="⤸",Bu="⤵",Ou="⋞",Nu="⋟",Uu="↶",ju="⤽",$u="⩈",Hu="⩆",Vu="≍",Zu="∪",Gu="⋓",Wu="⩊",Ju="⊍",Qu="⩅",Yu="∪︀",Ku="↷",Xu="⤼",na="⋞",ta="⋟",ea="⋎",ra="⋏",oa="¤",sa="↶",ca="↷",ia="⋎",ua="⋏",aa="∲",la="∱",fa="⌭",ha="†",pa="‡",da="ℸ",_a="↓",ma="↡",ga="⇓",ka="‐",xa="⫤",va="⊣",ba="⤏",Ca="˝",ya="Ď",Aa="ď",qa="Д",Da="д",Ea="‡",wa="⇊",Fa="ⅅ",Sa="ⅆ",Ra="⤑",Ta="⩷",La="°",za="∇",Ia="Δ",Ma="δ",Pa="⦱",Ba="⥿",Oa="𝔇",Na="𝔡",Ua="⥥",ja="⇃",$a="⇂",Ha="´",Va="˙",Za="˝",Ga="`",Wa="˜",Ja="⋄",Qa="⋄",Ya="⋄",Ka="♦",Xa="♦",nl="¨",tl="ⅆ",el="ϝ",rl="⋲",ol="÷",sl="÷",cl="⋇",il="⋇",ul="Ђ",al="ђ",ll="⌞",fl="⌍",hl="$",pl="𝔻",dl="𝕕",_l="¨",ml="˙",gl="⃜",kl="≐",xl="≑",vl="≐",bl="∸",Cl="∔",yl="⊡",Al="⌆",ql="∯",Dl="¨",El="⇓",wl="⇐",Fl="⇔",Sl="⫤",Rl="⟸",Tl="⟺",Ll="⟹",zl="⇒",Il="⊨",Ml="⇑",Pl="⇕",Bl="∥",Ol="⤓",Nl="↓",Ul="↓",jl="⇓",$l="⇵",Hl="̑",Vl="⇊",Zl="⇃",Gl="⇂",Wl="⥐",Jl="⥞",Ql="⥖",Yl="↽",Kl="⥟",Xl="⥗",nf="⇁",tf="↧",ef="⊤",rf="⤐",of="⌟",sf="⌌",cf="𝒟",uf="𝒹",af="Ѕ",lf="ѕ",ff="⧶",hf="Đ",pf="đ",df="⋱",_f="▿",mf="▾",gf="⇵",kf="⥯",xf="⦦",vf="Џ",bf="џ",Cf="⟿",yf="É",Af="é",qf="⩮",Df="Ě",Ef="ě",wf="Ê",Ff="ê",Sf="≖",Rf="≕",Tf="Э",Lf="э",zf="⩷",If="Ė",Mf="ė",Pf="≑",Bf="ⅇ",Of="≒",Nf="𝔈",Uf="𝔢",jf="⪚",$f="È",Hf="è",Vf="⪖",Zf="⪘",Gf="⪙",Wf="∈",Jf="⏧",Qf="ℓ",Yf="⪕",Kf="⪗",Xf="Ē",nh="ē",th="∅",eh="∅",rh="◻",oh="∅",sh="▫",ch=" ",ih=" ",uh=" ",ah="Ŋ",lh="ŋ",fh=" ",hh="Ę",ph="ę",dh="𝔼",_h="𝕖",mh="⋕",gh="⧣",kh="⩱",xh="ε",vh="Ε",bh="ε",Ch="ϵ",yh="≖",Ah="≕",qh="≂",Dh="⪖",Eh="⪕",wh="⩵",Fh="=",Sh="≂",Rh="≟",Th="⇌",Lh="≡",zh="⩸",Ih="⧥",Mh="⥱",Ph="≓",Bh="ℯ",Oh="ℰ",Nh="≐",Uh="⩳",jh="≂",$h="Η",Hh="η",Vh="Ð",Zh="ð",Gh="Ë",Wh="ë",Jh="€",Qh="!",Yh="∃",Kh="∃",Xh="ℰ",np="ⅇ",tp="ⅇ",ep="≒",rp="Ф",op="ф",sp="♀",cp="ffi",ip="ff",up="ffl",ap="𝔉",lp="𝔣",fp="fi",hp="◼",pp="▪",dp="fj",_p="♭",mp="fl",gp="▱",kp="ƒ",xp="𝔽",vp="𝕗",bp="∀",Cp="∀",yp="⋔",Ap="⫙",qp="ℱ",Dp="⨍",Ep="½",wp="⅓",Fp="¼",Sp="⅕",Rp="⅙",Tp="⅛",Lp="⅔",zp="⅖",Ip="¾",Mp="⅗",Pp="⅜",Bp="⅘",Op="⅚",Np="⅝",Up="⅞",jp="⁄",$p="⌢",Hp="𝒻",Vp="ℱ",Zp="ǵ",Gp="Γ",Wp="γ",Jp="Ϝ",Qp="ϝ",Yp="⪆",Kp="Ğ",Xp="ğ",nd="Ģ",td="Ĝ",ed="ĝ",rd="Г",od="г",sd="Ġ",cd="ġ",id="≥",ud="≧",ad="⪌",ld="⋛",fd="≥",hd="≧",pd="⩾",dd="⪩",_d="⩾",md="⪀",gd="⪂",kd="⪄",xd="⋛︀",vd="⪔",bd="𝔊",Cd="𝔤",yd="≫",Ad="⋙",qd="⋙",Dd="ℷ",Ed="Ѓ",wd="ѓ",Fd="⪥",Sd="≷",Rd="⪒",Td="⪤",Ld="⪊",zd="⪊",Id="⪈",Md="≩",Pd="⪈",Bd="≩",Od="⋧",Nd="𝔾",Ud="𝕘",jd="`",$d="≥",Hd="⋛",Vd="≧",Zd="⪢",Gd="≷",Wd="⩾",Jd="≳",Qd="𝒢",Yd="ℊ",Kd="≳",Xd="⪎",n0="⪐",t0="⪧",e0="⩺",r0=">",o0=">",s0="≫",c0="⋗",i0="⦕",u0="⩼",a0="⪆",l0="⥸",f0="⋗",h0="⋛",p0="⪌",d0="≷",_0="≳",m0="≩︀",g0="≩︀",k0="ˇ",x0=" ",v0="½",b0="ℋ",C0="Ъ",y0="ъ",A0="⥈",q0="↔",D0="⇔",E0="↭",w0="^",F0="ℏ",S0="Ĥ",R0="ĥ",T0="♥",L0="♥",z0="…",I0="⊹",M0="𝔥",P0="ℌ",B0="ℋ",O0="⤥",N0="⤦",U0="⇿",j0="∻",$0="↩",H0="↪",V0="𝕙",Z0="ℍ",G0="―",W0="─",J0="𝒽",Q0="ℋ",Y0="ℏ",K0="Ħ",X0="ħ",n_="≎",t_="≏",e_="⁃",r_="‐",o_="Í",s_="í",c_="⁣",i_="Î",u_="î",a_="И",l_="и",f_="İ",h_="Е",p_="е",d_="¡",__="⇔",m_="𝔦",g_="ℑ",k_="Ì",x_="ì",v_="ⅈ",b_="⨌",C_="∭",y_="⧜",A_="℩",q_="IJ",D_="ij",E_="Ī",w_="ī",F_="ℑ",S_="ⅈ",R_="ℐ",T_="ℑ",L_="ı",z_="ℑ",I_="⊷",M_="Ƶ",P_="⇒",B_="℅",O_="∞",N_="⧝",U_="ı",j_="⊺",$_="∫",H_="∬",V_="ℤ",Z_="∫",G_="⊺",W_="⋂",J_="⨗",Q_="⨼",Y_="⁣",K_="⁢",X_="Ё",nm="ё",tm="Į",em="į",rm="𝕀",om="𝕚",sm="Ι",cm="ι",im="⨼",um="¿",am="𝒾",lm="ℐ",fm="∈",hm="⋵",pm="⋹",dm="⋴",_m="⋳",mm="∈",gm="⁢",km="Ĩ",xm="ĩ",vm="І",bm="і",Cm="Ï",ym="ï",Am="Ĵ",qm="ĵ",Dm="Й",Em="й",wm="𝔍",Fm="𝔧",Sm="ȷ",Rm="𝕁",Tm="𝕛",Lm="𝒥",zm="𝒿",Im="Ј",Mm="ј",Pm="Є",Bm="є",Om="Κ",Nm="κ",Um="ϰ",jm="Ķ",$m="ķ",Hm="К",Vm="к",Zm="𝔎",Gm="𝔨",Wm="ĸ",Jm="Х",Qm="х",Ym="Ќ",Km="ќ",Xm="𝕂",ng="𝕜",tg="𝒦",eg="𝓀",rg="⇚",og="Ĺ",sg="ĺ",cg="⦴",ig="ℒ",ug="Λ",ag="λ",lg="⟨",fg="⟪",hg="⦑",pg="⟨",dg="⪅",_g="ℒ",mg="«",gg="⇤",kg="⤟",xg="←",vg="↞",bg="⇐",Cg="⤝",yg="↩",Ag="↫",qg="⤹",Dg="⥳",Eg="↢",wg="⤙",Fg="⤛",Sg="⪫",Rg="⪭",Tg="⪭︀",Lg="⤌",zg="⤎",Ig="❲",Mg="{",Pg="[",Bg="⦋",Og="⦏",Ng="⦍",Ug="Ľ",jg="ľ",$g="Ļ",Hg="ļ",Vg="⌈",Zg="{",Gg="Л",Wg="л",Jg="⤶",Qg="“",Yg="„",Kg="⥧",Xg="⥋",nk="↲",tk="≤",ek="≦",rk="⟨",ok="⇤",sk="←",ck="←",ik="⇐",uk="⇆",ak="↢",lk="⌈",fk="⟦",hk="⥡",pk="⥙",dk="⇃",_k="⌊",mk="↽",gk="↼",kk="⇇",xk="↔",vk="↔",bk="⇔",Ck="⇆",yk="⇋",Ak="↭",qk="⥎",Dk="↤",Ek="⊣",wk="⥚",Fk="⋋",Sk="⧏",Rk="⊲",Tk="⊴",Lk="⥑",zk="⥠",Ik="⥘",Mk="↿",Pk="⥒",Bk="↼",Ok="⪋",Nk="⋚",Uk="≤",jk="≦",$k="⩽",Hk="⪨",Vk="⩽",Zk="⩿",Gk="⪁",Wk="⪃",Jk="⋚︀",Qk="⪓",Yk="⪅",Kk="⋖",Xk="⋚",nx="⪋",tx="⋚",ex="≦",rx="≶",ox="≶",sx="⪡",cx="≲",ix="⩽",ux="≲",ax="⥼",lx="⌊",fx="𝔏",hx="𝔩",px="≶",dx="⪑",_x="⥢",mx="↽",gx="↼",kx="⥪",xx="▄",vx="Љ",bx="љ",Cx="⇇",yx="≪",Ax="⋘",qx="⌞",Dx="⇚",Ex="⥫",wx="◺",Fx="Ŀ",Sx="ŀ",Rx="⎰",Tx="⎰",Lx="⪉",zx="⪉",Ix="⪇",Mx="≨",Px="⪇",Bx="≨",Ox="⋦",Nx="⟬",Ux="⇽",jx="⟦",$x="⟵",Hx="⟵",Vx="⟸",Zx="⟷",Gx="⟷",Wx="⟺",Jx="⟼",Qx="⟶",Yx="⟶",Kx="⟹",Xx="↫",nv="↬",tv="⦅",ev="𝕃",rv="𝕝",ov="⨭",sv="⨴",cv="∗",iv="_",uv="↙",av="↘",lv="◊",fv="◊",hv="⧫",pv="(",dv="⦓",_v="⇆",mv="⌟",gv="⇋",kv="⥭",xv="‎",vv="⊿",bv="‹",Cv="𝓁",yv="ℒ",Av="↰",qv="↰",Dv="≲",Ev="⪍",wv="⪏",Fv="[",Sv="‘",Rv="‚",Tv="Ł",Lv="ł",zv="⪦",Iv="⩹",Mv="<",Pv="<",Bv="≪",Ov="⋖",Nv="⋋",Uv="⋉",jv="⥶",$v="⩻",Hv="◃",Vv="⊴",Zv="◂",Gv="⦖",Wv="⥊",Jv="⥦",Qv="≨︀",Yv="≨︀",Kv="¯",Xv="♂",nb="✠",tb="✠",eb="↦",rb="↦",ob="↧",sb="↤",cb="↥",ib="▮",ub="⨩",ab="М",lb="м",fb="—",hb="∺",pb="∡",db=" ",_b="ℳ",mb="𝔐",gb="𝔪",kb="℧",xb="µ",vb="*",bb="⫰",Cb="∣",yb="·",Ab="⊟",qb="−",Db="∸",Eb="⨪",wb="∓",Fb="⫛",Sb="…",Rb="∓",Tb="⊧",Lb="𝕄",zb="𝕞",Ib="∓",Mb="𝓂",Pb="ℳ",Bb="∾",Ob="Μ",Nb="μ",Ub="⊸",jb="⊸",$b="∇",Hb="Ń",Vb="ń",Zb="∠⃒",Gb="≉",Wb="⩰̸",Jb="≋̸",Qb="ʼn",Yb="≉",Kb="♮",Xb="ℕ",n1="♮",t1=" ",e1="≎̸",r1="≏̸",o1="⩃",s1="Ň",c1="ň",i1="Ņ",u1="ņ",a1="≇",l1="⩭̸",f1="⩂",h1="Н",p1="н",d1="–",_1="⤤",m1="↗",g1="⇗",k1="↗",x1="≠",v1="≐̸",b1="​",C1="​",y1="​",A1="​",q1="≢",D1="⤨",E1="≂̸",w1="≫",F1="≪",S1=` +import{ay as Ve,az as Ze,e as Ge,l as We,o as Je,i as Qe,w as Ye,a as Ke,u as Xe,a8 as nr}from"./index-NeVG6T13.js";var K={};const tr="Á",er="á",rr="Ă",or="ă",sr="∾",cr="∿",ir="∾̳",ur="Â",ar="â",lr="´",fr="А",hr="а",pr="Æ",dr="æ",_r="⁡",mr="𝔄",gr="𝔞",kr="À",xr="à",vr="ℵ",br="ℵ",Cr="Α",yr="α",Ar="Ā",qr="ā",Dr="⨿",Er="&",wr="&",Fr="⩕",Sr="⩓",Rr="∧",Tr="⩜",Lr="⩘",zr="⩚",Ir="∠",Mr="⦤",Pr="∠",Br="⦨",Or="⦩",Nr="⦪",Ur="⦫",jr="⦬",$r="⦭",Hr="⦮",Vr="⦯",Zr="∡",Gr="∟",Wr="⊾",Jr="⦝",Qr="∢",Yr="Å",Kr="⍼",Xr="Ą",no="ą",to="𝔸",eo="𝕒",ro="⩯",oo="≈",so="⩰",co="≊",io="≋",uo="'",ao="⁡",lo="≈",fo="≊",ho="Å",po="å",_o="𝒜",mo="𝒶",go="≔",ko="*",xo="≈",vo="≍",bo="Ã",Co="ã",yo="Ä",Ao="ä",qo="∳",Do="⨑",Eo="≌",wo="϶",Fo="‵",So="∽",Ro="⋍",To="∖",Lo="⫧",zo="⊽",Io="⌅",Mo="⌆",Po="⌅",Bo="⎵",Oo="⎶",No="≌",Uo="Б",jo="б",$o="„",Ho="∵",Vo="∵",Zo="∵",Go="⦰",Wo="϶",Jo="ℬ",Qo="ℬ",Yo="Β",Ko="β",Xo="ℶ",ns="≬",ts="𝔅",es="𝔟",rs="⋂",os="◯",ss="⋃",cs="⨀",is="⨁",us="⨂",as="⨆",ls="★",fs="▽",hs="△",ps="⨄",ds="⋁",_s="⋀",ms="⤍",gs="⧫",ks="▪",xs="▴",vs="▾",bs="◂",Cs="▸",ys="␣",As="▒",qs="░",Ds="▓",Es="█",ws="=⃥",Fs="≡⃥",Ss="⫭",Rs="⌐",Ts="𝔹",Ls="𝕓",zs="⊥",Is="⊥",Ms="⋈",Ps="⧉",Bs="┐",Os="╕",Ns="╖",Us="╗",js="┌",$s="╒",Hs="╓",Vs="╔",Zs="─",Gs="═",Ws="┬",Js="╤",Qs="╥",Ys="╦",Ks="┴",Xs="╧",nc="╨",tc="╩",ec="⊟",rc="⊞",oc="⊠",sc="┘",cc="╛",ic="╜",uc="╝",ac="└",lc="╘",fc="╙",hc="╚",pc="│",dc="║",_c="┼",mc="╪",gc="╫",kc="╬",xc="┤",vc="╡",bc="╢",Cc="╣",yc="├",Ac="╞",qc="╟",Dc="╠",Ec="‵",wc="˘",Fc="˘",Sc="¦",Rc="𝒷",Tc="ℬ",Lc="⁏",zc="∽",Ic="⋍",Mc="⧅",Pc="\\",Bc="⟈",Oc="•",Nc="•",Uc="≎",jc="⪮",$c="≏",Hc="≎",Vc="≏",Zc="Ć",Gc="ć",Wc="⩄",Jc="⩉",Qc="⩋",Yc="∩",Kc="⋒",Xc="⩇",ni="⩀",ti="ⅅ",ei="∩︀",ri="⁁",oi="ˇ",si="ℭ",ci="⩍",ii="Č",ui="č",ai="Ç",li="ç",fi="Ĉ",hi="ĉ",pi="∰",di="⩌",_i="⩐",mi="Ċ",gi="ċ",ki="¸",xi="¸",vi="⦲",bi="¢",Ci="·",yi="·",Ai="𝔠",qi="ℭ",Di="Ч",Ei="ч",wi="✓",Fi="✓",Si="Χ",Ri="χ",Ti="ˆ",Li="≗",zi="↺",Ii="↻",Mi="⊛",Pi="⊚",Bi="⊝",Oi="⊙",Ni="®",Ui="Ⓢ",ji="⊖",$i="⊕",Hi="⊗",Vi="○",Zi="⧃",Gi="≗",Wi="⨐",Ji="⫯",Qi="⧂",Yi="∲",Ki="”",Xi="’",nu="♣",tu="♣",eu=":",ru="∷",ou="⩴",su="≔",cu="≔",iu=",",uu="@",au="∁",lu="∘",fu="∁",hu="ℂ",pu="≅",du="⩭",_u="≡",mu="∮",gu="∯",ku="∮",xu="𝕔",vu="ℂ",bu="∐",Cu="∐",yu="©",Au="©",qu="℗",Du="∳",Eu="↵",wu="✗",Fu="⨯",Su="𝒞",Ru="𝒸",Tu="⫏",Lu="⫑",zu="⫐",Iu="⫒",Mu="⋯",Pu="⤸",Bu="⤵",Ou="⋞",Nu="⋟",Uu="↶",ju="⤽",$u="⩈",Hu="⩆",Vu="≍",Zu="∪",Gu="⋓",Wu="⩊",Ju="⊍",Qu="⩅",Yu="∪︀",Ku="↷",Xu="⤼",na="⋞",ta="⋟",ea="⋎",ra="⋏",oa="¤",sa="↶",ca="↷",ia="⋎",ua="⋏",aa="∲",la="∱",fa="⌭",ha="†",pa="‡",da="ℸ",_a="↓",ma="↡",ga="⇓",ka="‐",xa="⫤",va="⊣",ba="⤏",Ca="˝",ya="Ď",Aa="ď",qa="Д",Da="д",Ea="‡",wa="⇊",Fa="ⅅ",Sa="ⅆ",Ra="⤑",Ta="⩷",La="°",za="∇",Ia="Δ",Ma="δ",Pa="⦱",Ba="⥿",Oa="𝔇",Na="𝔡",Ua="⥥",ja="⇃",$a="⇂",Ha="´",Va="˙",Za="˝",Ga="`",Wa="˜",Ja="⋄",Qa="⋄",Ya="⋄",Ka="♦",Xa="♦",nl="¨",tl="ⅆ",el="ϝ",rl="⋲",ol="÷",sl="÷",cl="⋇",il="⋇",ul="Ђ",al="ђ",ll="⌞",fl="⌍",hl="$",pl="𝔻",dl="𝕕",_l="¨",ml="˙",gl="⃜",kl="≐",xl="≑",vl="≐",bl="∸",Cl="∔",yl="⊡",Al="⌆",ql="∯",Dl="¨",El="⇓",wl="⇐",Fl="⇔",Sl="⫤",Rl="⟸",Tl="⟺",Ll="⟹",zl="⇒",Il="⊨",Ml="⇑",Pl="⇕",Bl="∥",Ol="⤓",Nl="↓",Ul="↓",jl="⇓",$l="⇵",Hl="̑",Vl="⇊",Zl="⇃",Gl="⇂",Wl="⥐",Jl="⥞",Ql="⥖",Yl="↽",Kl="⥟",Xl="⥗",nf="⇁",tf="↧",ef="⊤",rf="⤐",of="⌟",sf="⌌",cf="𝒟",uf="𝒹",af="Ѕ",lf="ѕ",ff="⧶",hf="Đ",pf="đ",df="⋱",_f="▿",mf="▾",gf="⇵",kf="⥯",xf="⦦",vf="Џ",bf="џ",Cf="⟿",yf="É",Af="é",qf="⩮",Df="Ě",Ef="ě",wf="Ê",Ff="ê",Sf="≖",Rf="≕",Tf="Э",Lf="э",zf="⩷",If="Ė",Mf="ė",Pf="≑",Bf="ⅇ",Of="≒",Nf="𝔈",Uf="𝔢",jf="⪚",$f="È",Hf="è",Vf="⪖",Zf="⪘",Gf="⪙",Wf="∈",Jf="⏧",Qf="ℓ",Yf="⪕",Kf="⪗",Xf="Ē",nh="ē",th="∅",eh="∅",rh="◻",oh="∅",sh="▫",ch=" ",ih=" ",uh=" ",ah="Ŋ",lh="ŋ",fh=" ",hh="Ę",ph="ę",dh="𝔼",_h="𝕖",mh="⋕",gh="⧣",kh="⩱",xh="ε",vh="Ε",bh="ε",Ch="ϵ",yh="≖",Ah="≕",qh="≂",Dh="⪖",Eh="⪕",wh="⩵",Fh="=",Sh="≂",Rh="≟",Th="⇌",Lh="≡",zh="⩸",Ih="⧥",Mh="⥱",Ph="≓",Bh="ℯ",Oh="ℰ",Nh="≐",Uh="⩳",jh="≂",$h="Η",Hh="η",Vh="Ð",Zh="ð",Gh="Ë",Wh="ë",Jh="€",Qh="!",Yh="∃",Kh="∃",Xh="ℰ",np="ⅇ",tp="ⅇ",ep="≒",rp="Ф",op="ф",sp="♀",cp="ffi",ip="ff",up="ffl",ap="𝔉",lp="𝔣",fp="fi",hp="◼",pp="▪",dp="fj",_p="♭",mp="fl",gp="▱",kp="ƒ",xp="𝔽",vp="𝕗",bp="∀",Cp="∀",yp="⋔",Ap="⫙",qp="ℱ",Dp="⨍",Ep="½",wp="⅓",Fp="¼",Sp="⅕",Rp="⅙",Tp="⅛",Lp="⅔",zp="⅖",Ip="¾",Mp="⅗",Pp="⅜",Bp="⅘",Op="⅚",Np="⅝",Up="⅞",jp="⁄",$p="⌢",Hp="𝒻",Vp="ℱ",Zp="ǵ",Gp="Γ",Wp="γ",Jp="Ϝ",Qp="ϝ",Yp="⪆",Kp="Ğ",Xp="ğ",nd="Ģ",td="Ĝ",ed="ĝ",rd="Г",od="г",sd="Ġ",cd="ġ",id="≥",ud="≧",ad="⪌",ld="⋛",fd="≥",hd="≧",pd="⩾",dd="⪩",_d="⩾",md="⪀",gd="⪂",kd="⪄",xd="⋛︀",vd="⪔",bd="𝔊",Cd="𝔤",yd="≫",Ad="⋙",qd="⋙",Dd="ℷ",Ed="Ѓ",wd="ѓ",Fd="⪥",Sd="≷",Rd="⪒",Td="⪤",Ld="⪊",zd="⪊",Id="⪈",Md="≩",Pd="⪈",Bd="≩",Od="⋧",Nd="𝔾",Ud="𝕘",jd="`",$d="≥",Hd="⋛",Vd="≧",Zd="⪢",Gd="≷",Wd="⩾",Jd="≳",Qd="𝒢",Yd="ℊ",Kd="≳",Xd="⪎",n0="⪐",t0="⪧",e0="⩺",r0=">",o0=">",s0="≫",c0="⋗",i0="⦕",u0="⩼",a0="⪆",l0="⥸",f0="⋗",h0="⋛",p0="⪌",d0="≷",_0="≳",m0="≩︀",g0="≩︀",k0="ˇ",x0=" ",v0="½",b0="ℋ",C0="Ъ",y0="ъ",A0="⥈",q0="↔",D0="⇔",E0="↭",w0="^",F0="ℏ",S0="Ĥ",R0="ĥ",T0="♥",L0="♥",z0="…",I0="⊹",M0="𝔥",P0="ℌ",B0="ℋ",O0="⤥",N0="⤦",U0="⇿",j0="∻",$0="↩",H0="↪",V0="𝕙",Z0="ℍ",G0="―",W0="─",J0="𝒽",Q0="ℋ",Y0="ℏ",K0="Ħ",X0="ħ",n_="≎",t_="≏",e_="⁃",r_="‐",o_="Í",s_="í",c_="⁣",i_="Î",u_="î",a_="И",l_="и",f_="İ",h_="Е",p_="е",d_="¡",__="⇔",m_="𝔦",g_="ℑ",k_="Ì",x_="ì",v_="ⅈ",b_="⨌",C_="∭",y_="⧜",A_="℩",q_="IJ",D_="ij",E_="Ī",w_="ī",F_="ℑ",S_="ⅈ",R_="ℐ",T_="ℑ",L_="ı",z_="ℑ",I_="⊷",M_="Ƶ",P_="⇒",B_="℅",O_="∞",N_="⧝",U_="ı",j_="⊺",$_="∫",H_="∬",V_="ℤ",Z_="∫",G_="⊺",W_="⋂",J_="⨗",Q_="⨼",Y_="⁣",K_="⁢",X_="Ё",nm="ё",tm="Į",em="į",rm="𝕀",om="𝕚",sm="Ι",cm="ι",im="⨼",um="¿",am="𝒾",lm="ℐ",fm="∈",hm="⋵",pm="⋹",dm="⋴",_m="⋳",mm="∈",gm="⁢",km="Ĩ",xm="ĩ",vm="І",bm="і",Cm="Ï",ym="ï",Am="Ĵ",qm="ĵ",Dm="Й",Em="й",wm="𝔍",Fm="𝔧",Sm="ȷ",Rm="𝕁",Tm="𝕛",Lm="𝒥",zm="𝒿",Im="Ј",Mm="ј",Pm="Є",Bm="є",Om="Κ",Nm="κ",Um="ϰ",jm="Ķ",$m="ķ",Hm="К",Vm="к",Zm="𝔎",Gm="𝔨",Wm="ĸ",Jm="Х",Qm="х",Ym="Ќ",Km="ќ",Xm="𝕂",ng="𝕜",tg="𝒦",eg="𝓀",rg="⇚",og="Ĺ",sg="ĺ",cg="⦴",ig="ℒ",ug="Λ",ag="λ",lg="⟨",fg="⟪",hg="⦑",pg="⟨",dg="⪅",_g="ℒ",mg="«",gg="⇤",kg="⤟",xg="←",vg="↞",bg="⇐",Cg="⤝",yg="↩",Ag="↫",qg="⤹",Dg="⥳",Eg="↢",wg="⤙",Fg="⤛",Sg="⪫",Rg="⪭",Tg="⪭︀",Lg="⤌",zg="⤎",Ig="❲",Mg="{",Pg="[",Bg="⦋",Og="⦏",Ng="⦍",Ug="Ľ",jg="ľ",$g="Ļ",Hg="ļ",Vg="⌈",Zg="{",Gg="Л",Wg="л",Jg="⤶",Qg="“",Yg="„",Kg="⥧",Xg="⥋",nk="↲",tk="≤",ek="≦",rk="⟨",ok="⇤",sk="←",ck="←",ik="⇐",uk="⇆",ak="↢",lk="⌈",fk="⟦",hk="⥡",pk="⥙",dk="⇃",_k="⌊",mk="↽",gk="↼",kk="⇇",xk="↔",vk="↔",bk="⇔",Ck="⇆",yk="⇋",Ak="↭",qk="⥎",Dk="↤",Ek="⊣",wk="⥚",Fk="⋋",Sk="⧏",Rk="⊲",Tk="⊴",Lk="⥑",zk="⥠",Ik="⥘",Mk="↿",Pk="⥒",Bk="↼",Ok="⪋",Nk="⋚",Uk="≤",jk="≦",$k="⩽",Hk="⪨",Vk="⩽",Zk="⩿",Gk="⪁",Wk="⪃",Jk="⋚︀",Qk="⪓",Yk="⪅",Kk="⋖",Xk="⋚",nx="⪋",tx="⋚",ex="≦",rx="≶",ox="≶",sx="⪡",cx="≲",ix="⩽",ux="≲",ax="⥼",lx="⌊",fx="𝔏",hx="𝔩",px="≶",dx="⪑",_x="⥢",mx="↽",gx="↼",kx="⥪",xx="▄",vx="Љ",bx="љ",Cx="⇇",yx="≪",Ax="⋘",qx="⌞",Dx="⇚",Ex="⥫",wx="◺",Fx="Ŀ",Sx="ŀ",Rx="⎰",Tx="⎰",Lx="⪉",zx="⪉",Ix="⪇",Mx="≨",Px="⪇",Bx="≨",Ox="⋦",Nx="⟬",Ux="⇽",jx="⟦",$x="⟵",Hx="⟵",Vx="⟸",Zx="⟷",Gx="⟷",Wx="⟺",Jx="⟼",Qx="⟶",Yx="⟶",Kx="⟹",Xx="↫",nv="↬",tv="⦅",ev="𝕃",rv="𝕝",ov="⨭",sv="⨴",cv="∗",iv="_",uv="↙",av="↘",lv="◊",fv="◊",hv="⧫",pv="(",dv="⦓",_v="⇆",mv="⌟",gv="⇋",kv="⥭",xv="‎",vv="⊿",bv="‹",Cv="𝓁",yv="ℒ",Av="↰",qv="↰",Dv="≲",Ev="⪍",wv="⪏",Fv="[",Sv="‘",Rv="‚",Tv="Ł",Lv="ł",zv="⪦",Iv="⩹",Mv="<",Pv="<",Bv="≪",Ov="⋖",Nv="⋋",Uv="⋉",jv="⥶",$v="⩻",Hv="◃",Vv="⊴",Zv="◂",Gv="⦖",Wv="⥊",Jv="⥦",Qv="≨︀",Yv="≨︀",Kv="¯",Xv="♂",nb="✠",tb="✠",eb="↦",rb="↦",ob="↧",sb="↤",cb="↥",ib="▮",ub="⨩",ab="М",lb="м",fb="—",hb="∺",pb="∡",db=" ",_b="ℳ",mb="𝔐",gb="𝔪",kb="℧",xb="µ",vb="*",bb="⫰",Cb="∣",yb="·",Ab="⊟",qb="−",Db="∸",Eb="⨪",wb="∓",Fb="⫛",Sb="…",Rb="∓",Tb="⊧",Lb="𝕄",zb="𝕞",Ib="∓",Mb="𝓂",Pb="ℳ",Bb="∾",Ob="Μ",Nb="μ",Ub="⊸",jb="⊸",$b="∇",Hb="Ń",Vb="ń",Zb="∠⃒",Gb="≉",Wb="⩰̸",Jb="≋̸",Qb="ʼn",Yb="≉",Kb="♮",Xb="ℕ",n1="♮",t1=" ",e1="≎̸",r1="≏̸",o1="⩃",s1="Ň",c1="ň",i1="Ņ",u1="ņ",a1="≇",l1="⩭̸",f1="⩂",h1="Н",p1="н",d1="–",_1="⤤",m1="↗",g1="⇗",k1="↗",x1="≠",v1="≐̸",b1="​",C1="​",y1="​",A1="​",q1="≢",D1="⤨",E1="≂̸",w1="≫",F1="≪",S1=` `,R1="∄",T1="∄",L1="𝔑",z1="𝔫",I1="≧̸",M1="≱",P1="≱",B1="≧̸",O1="⩾̸",N1="⩾̸",U1="⋙̸",j1="≵",$1="≫⃒",H1="≯",V1="≯",Z1="≫̸",G1="↮",W1="⇎",J1="⫲",Q1="∋",Y1="⋼",K1="⋺",X1="∋",nC="Њ",tC="њ",eC="↚",rC="⇍",oC="‥",sC="≦̸",cC="≰",iC="↚",uC="⇍",aC="↮",lC="⇎",fC="≰",hC="≦̸",pC="⩽̸",dC="⩽̸",_C="≮",mC="⋘̸",gC="≴",kC="≪⃒",xC="≮",vC="⋪",bC="⋬",CC="≪̸",yC="∤",AC="⁠",qC=" ",DC="𝕟",EC="ℕ",wC="⫬",FC="¬",SC="≢",RC="≭",TC="∦",LC="∉",zC="≠",IC="≂̸",MC="∄",PC="≯",BC="≱",OC="≧̸",NC="≫̸",UC="≹",jC="⩾̸",$C="≵",HC="≎̸",VC="≏̸",ZC="∉",GC="⋵̸",WC="⋹̸",JC="∉",QC="⋷",YC="⋶",KC="⧏̸",XC="⋪",ny="⋬",ty="≮",ey="≰",ry="≸",oy="≪̸",sy="⩽̸",cy="≴",iy="⪢̸",uy="⪡̸",ay="∌",ly="∌",fy="⋾",hy="⋽",py="⊀",dy="⪯̸",_y="⋠",my="∌",gy="⧐̸",ky="⋫",xy="⋭",vy="⊏̸",by="⋢",Cy="⊐̸",yy="⋣",Ay="⊂⃒",qy="⊈",Dy="⊁",Ey="⪰̸",wy="⋡",Fy="≿̸",Sy="⊃⃒",Ry="⊉",Ty="≁",Ly="≄",zy="≇",Iy="≉",My="∤",Py="∦",By="∦",Oy="⫽⃥",Ny="∂̸",Uy="⨔",jy="⊀",$y="⋠",Hy="⊀",Vy="⪯̸",Zy="⪯̸",Gy="⤳̸",Wy="↛",Jy="⇏",Qy="↝̸",Yy="↛",Ky="⇏",Xy="⋫",nA="⋭",tA="⊁",eA="⋡",rA="⪰̸",oA="𝒩",sA="𝓃",cA="∤",iA="∦",uA="≁",aA="≄",lA="≄",fA="∤",hA="∦",pA="⋢",dA="⋣",_A="⊄",mA="⫅̸",gA="⊈",kA="⊂⃒",xA="⊈",vA="⫅̸",bA="⊁",CA="⪰̸",yA="⊅",AA="⫆̸",qA="⊉",DA="⊃⃒",EA="⊉",wA="⫆̸",FA="≹",SA="Ñ",RA="ñ",TA="≸",LA="⋪",zA="⋬",IA="⋫",MA="⋭",PA="Ν",BA="ν",OA="#",NA="№",UA=" ",jA="≍⃒",$A="⊬",HA="⊭",VA="⊮",ZA="⊯",GA="≥⃒",WA=">⃒",JA="⤄",QA="⧞",YA="⤂",KA="≤⃒",XA="<⃒",nq="⊴⃒",tq="⤃",eq="⊵⃒",rq="∼⃒",oq="⤣",sq="↖",cq="⇖",iq="↖",uq="⤧",aq="Ó",lq="ó",fq="⊛",hq="Ô",pq="ô",dq="⊚",_q="О",mq="о",gq="⊝",kq="Ő",xq="ő",vq="⨸",bq="⊙",Cq="⦼",yq="Œ",Aq="œ",qq="⦿",Dq="𝔒",Eq="𝔬",wq="˛",Fq="Ò",Sq="ò",Rq="⧁",Tq="⦵",Lq="Ω",zq="∮",Iq="↺",Mq="⦾",Pq="⦻",Bq="‾",Oq="⧀",Nq="Ō",Uq="ō",jq="Ω",$q="ω",Hq="Ο",Vq="ο",Zq="⦶",Gq="⊖",Wq="𝕆",Jq="𝕠",Qq="⦷",Yq="“",Kq="‘",Xq="⦹",nD="⊕",tD="↻",eD="⩔",rD="∨",oD="⩝",sD="ℴ",cD="ℴ",iD="ª",uD="º",aD="⊶",lD="⩖",fD="⩗",hD="⩛",pD="Ⓢ",dD="𝒪",_D="ℴ",mD="Ø",gD="ø",kD="⊘",xD="Õ",vD="õ",bD="⨶",CD="⨷",yD="⊗",AD="Ö",qD="ö",DD="⌽",ED="‾",wD="⏞",FD="⎴",SD="⏜",RD="¶",TD="∥",LD="∥",zD="⫳",ID="⫽",MD="∂",PD="∂",BD="П",OD="п",ND="%",UD=".",jD="‰",$D="⊥",HD="‱",VD="𝔓",ZD="𝔭",GD="Φ",WD="φ",JD="ϕ",QD="ℳ",YD="☎",KD="Π",XD="π",nE="⋔",tE="ϖ",eE="ℏ",rE="ℎ",oE="ℏ",sE="⨣",cE="⊞",iE="⨢",uE="+",aE="∔",lE="⨥",fE="⩲",hE="±",pE="±",dE="⨦",_E="⨧",mE="±",gE="ℌ",kE="⨕",xE="𝕡",vE="ℙ",bE="£",CE="⪷",yE="⪻",AE="≺",qE="≼",DE="⪷",EE="≺",wE="≼",FE="≺",SE="⪯",RE="≼",TE="≾",LE="⪯",zE="⪹",IE="⪵",ME="⋨",PE="⪯",BE="⪳",OE="≾",NE="′",UE="″",jE="ℙ",$E="⪹",HE="⪵",VE="⋨",ZE="∏",GE="∏",WE="⌮",JE="⌒",QE="⌓",YE="∝",KE="∝",XE="∷",nw="∝",tw="≾",ew="⊰",rw="𝒫",ow="𝓅",sw="Ψ",cw="ψ",iw=" ",uw="𝔔",aw="𝔮",lw="⨌",fw="𝕢",hw="ℚ",pw="⁗",dw="𝒬",_w="𝓆",mw="ℍ",gw="⨖",kw="?",xw="≟",vw='"',bw='"',Cw="⇛",yw="∽̱",Aw="Ŕ",qw="ŕ",Dw="√",Ew="⦳",ww="⟩",Fw="⟫",Sw="⦒",Rw="⦥",Tw="⟩",Lw="»",zw="⥵",Iw="⇥",Mw="⤠",Pw="⤳",Bw="→",Ow="↠",Nw="⇒",Uw="⤞",jw="↪",$w="↬",Hw="⥅",Vw="⥴",Zw="⤖",Gw="↣",Ww="↝",Jw="⤚",Qw="⤜",Yw="∶",Kw="ℚ",Xw="⤍",nF="⤏",tF="⤐",eF="❳",rF="}",oF="]",sF="⦌",cF="⦎",iF="⦐",uF="Ř",aF="ř",lF="Ŗ",fF="ŗ",hF="⌉",pF="}",dF="Р",_F="р",mF="⤷",gF="⥩",kF="”",xF="”",vF="↳",bF="ℜ",CF="ℛ",yF="ℜ",AF="ℝ",qF="ℜ",DF="▭",EF="®",wF="®",FF="∋",SF="⇋",RF="⥯",TF="⥽",LF="⌋",zF="𝔯",IF="ℜ",MF="⥤",PF="⇁",BF="⇀",OF="⥬",NF="Ρ",UF="ρ",jF="ϱ",$F="⟩",HF="⇥",VF="→",ZF="→",GF="⇒",WF="⇄",JF="↣",QF="⌉",YF="⟧",KF="⥝",XF="⥕",nS="⇂",tS="⌋",eS="⇁",rS="⇀",oS="⇄",sS="⇌",cS="⇉",iS="↝",uS="↦",aS="⊢",lS="⥛",fS="⋌",hS="⧐",pS="⊳",dS="⊵",_S="⥏",mS="⥜",gS="⥔",kS="↾",xS="⥓",vS="⇀",bS="˚",CS="≓",yS="⇄",AS="⇌",qS="‏",DS="⎱",ES="⎱",wS="⫮",FS="⟭",SS="⇾",RS="⟧",TS="⦆",LS="𝕣",zS="ℝ",IS="⨮",MS="⨵",PS="⥰",BS=")",OS="⦔",NS="⨒",US="⇉",jS="⇛",$S="›",HS="𝓇",VS="ℛ",ZS="↱",GS="↱",WS="]",JS="’",QS="’",YS="⋌",KS="⋊",XS="▹",n2="⊵",t2="▸",e2="⧎",r2="⧴",o2="⥨",s2="℞",c2="Ś",i2="ś",u2="‚",a2="⪸",l2="Š",f2="š",h2="⪼",p2="≻",d2="≽",_2="⪰",m2="⪴",g2="Ş",k2="ş",x2="Ŝ",v2="ŝ",b2="⪺",C2="⪶",y2="⋩",A2="⨓",q2="≿",D2="С",E2="с",w2="⊡",F2="⋅",S2="⩦",R2="⤥",T2="↘",L2="⇘",z2="↘",I2="§",M2=";",P2="⤩",B2="∖",O2="∖",N2="✶",U2="𝔖",j2="𝔰",$2="⌢",H2="♯",V2="Щ",Z2="щ",G2="Ш",W2="ш",J2="↓",Q2="←",Y2="∣",K2="∥",X2="→",nR="↑",tR="­",eR="Σ",rR="σ",oR="ς",sR="ς",cR="∼",iR="⩪",uR="≃",aR="≃",lR="⪞",fR="⪠",hR="⪝",pR="⪟",dR="≆",_R="⨤",mR="⥲",gR="←",kR="∘",xR="∖",vR="⨳",bR="⧤",CR="∣",yR="⌣",AR="⪪",qR="⪬",DR="⪬︀",ER="Ь",wR="ь",FR="⌿",SR="⧄",RR="/",TR="𝕊",LR="𝕤",zR="♠",IR="♠",MR="∥",PR="⊓",BR="⊓︀",OR="⊔",NR="⊔︀",UR="√",jR="⊏",$R="⊑",HR="⊏",VR="⊑",ZR="⊐",GR="⊒",WR="⊐",JR="⊒",QR="□",YR="□",KR="⊓",XR="⊏",nT="⊑",tT="⊐",eT="⊒",rT="⊔",oT="▪",sT="□",cT="▪",iT="→",uT="𝒮",aT="𝓈",lT="∖",fT="⌣",hT="⋆",pT="⋆",dT="☆",_T="★",mT="ϵ",gT="ϕ",kT="¯",xT="⊂",vT="⋐",bT="⪽",CT="⫅",yT="⊆",AT="⫃",qT="⫁",DT="⫋",ET="⊊",wT="⪿",FT="⥹",ST="⊂",RT="⋐",TT="⊆",LT="⫅",zT="⊆",IT="⊊",MT="⫋",PT="⫇",BT="⫕",OT="⫓",NT="⪸",UT="≻",jT="≽",$T="≻",HT="⪰",VT="≽",ZT="≿",GT="⪰",WT="⪺",JT="⪶",QT="⋩",YT="≿",KT="∋",XT="∑",nL="∑",tL="♪",eL="¹",rL="²",oL="³",sL="⊃",cL="⋑",iL="⪾",uL="⫘",aL="⫆",lL="⊇",fL="⫄",hL="⊃",pL="⊇",dL="⟉",_L="⫗",mL="⥻",gL="⫂",kL="⫌",xL="⊋",vL="⫀",bL="⊃",CL="⋑",yL="⊇",AL="⫆",qL="⊋",DL="⫌",EL="⫈",wL="⫔",FL="⫖",SL="⤦",RL="↙",TL="⇙",LL="↙",zL="⤪",IL="ß",ML=" ",PL="⌖",BL="Τ",OL="τ",NL="⎴",UL="Ť",jL="ť",$L="Ţ",HL="ţ",VL="Т",ZL="т",GL="⃛",WL="⌕",JL="𝔗",QL="𝔱",YL="∴",KL="∴",XL="∴",nz="Θ",tz="θ",ez="ϑ",rz="ϑ",oz="≈",sz="∼",cz="  ",iz=" ",uz=" ",az="≈",lz="∼",fz="Þ",hz="þ",pz="˜",dz="∼",_z="≃",mz="≅",gz="≈",kz="⨱",xz="⊠",vz="×",bz="⨰",Cz="∭",yz="⤨",Az="⌶",qz="⫱",Dz="⊤",Ez="𝕋",wz="𝕥",Fz="⫚",Sz="⤩",Rz="‴",Tz="™",Lz="™",zz="▵",Iz="▿",Mz="◃",Pz="⊴",Bz="≜",Oz="▹",Nz="⊵",Uz="◬",jz="≜",$z="⨺",Hz="⃛",Vz="⨹",Zz="⧍",Gz="⨻",Wz="⏢",Jz="𝒯",Qz="𝓉",Yz="Ц",Kz="ц",Xz="Ћ",n3="ћ",t3="Ŧ",e3="ŧ",r3="≬",o3="↞",s3="↠",c3="Ú",i3="ú",u3="↑",a3="↟",l3="⇑",f3="⥉",h3="Ў",p3="ў",d3="Ŭ",_3="ŭ",m3="Û",g3="û",k3="У",x3="у",v3="⇅",b3="Ű",C3="ű",y3="⥮",A3="⥾",q3="𝔘",D3="𝔲",E3="Ù",w3="ù",F3="⥣",S3="↿",R3="↾",T3="▀",L3="⌜",z3="⌜",I3="⌏",M3="◸",P3="Ū",B3="ū",O3="¨",N3="_",U3="⏟",j3="⎵",$3="⏝",H3="⋃",V3="⊎",Z3="Ų",G3="ų",W3="𝕌",J3="𝕦",Q3="⤒",Y3="↑",K3="↑",X3="⇑",nI="⇅",tI="↕",eI="↕",rI="⇕",oI="⥮",sI="↿",cI="↾",iI="⊎",uI="↖",aI="↗",lI="υ",fI="ϒ",hI="ϒ",pI="Υ",dI="υ",_I="↥",mI="⊥",gI="⇈",kI="⌝",xI="⌝",vI="⌎",bI="Ů",CI="ů",yI="◹",AI="𝒰",qI="𝓊",DI="⋰",EI="Ũ",wI="ũ",FI="▵",SI="▴",RI="⇈",TI="Ü",LI="ü",zI="⦧",II="⦜",MI="ϵ",PI="ϰ",BI="∅",OI="ϕ",NI="ϖ",UI="∝",jI="↕",$I="⇕",HI="ϱ",VI="ς",ZI="⊊︀",GI="⫋︀",WI="⊋︀",JI="⫌︀",QI="ϑ",YI="⊲",KI="⊳",XI="⫨",nM="⫫",tM="⫩",eM="В",rM="в",oM="⊢",sM="⊨",cM="⊩",iM="⊫",uM="⫦",aM="⊻",lM="∨",fM="⋁",hM="≚",pM="⋮",dM="|",_M="‖",mM="|",gM="‖",kM="∣",xM="|",vM="❘",bM="≀",CM=" ",yM="𝔙",AM="𝔳",qM="⊲",DM="⊂⃒",EM="⊃⃒",wM="𝕍",FM="𝕧",SM="∝",RM="⊳",TM="𝒱",LM="𝓋",zM="⫋︀",IM="⊊︀",MM="⫌︀",PM="⊋︀",BM="⊪",OM="⦚",NM="Ŵ",UM="ŵ",jM="⩟",$M="∧",HM="⋀",VM="≙",ZM="℘",GM="𝔚",WM="𝔴",JM="𝕎",QM="𝕨",YM="℘",KM="≀",XM="≀",nP="𝒲",tP="𝓌",eP="⋂",rP="◯",oP="⋃",sP="▽",cP="𝔛",iP="𝔵",uP="⟷",aP="⟺",lP="Ξ",fP="ξ",hP="⟵",pP="⟸",dP="⟼",_P="⋻",mP="⨀",gP="𝕏",kP="𝕩",xP="⨁",vP="⨂",bP="⟶",CP="⟹",yP="𝒳",AP="𝓍",qP="⨆",DP="⨄",EP="△",wP="⋁",FP="⋀",SP="Ý",RP="ý",TP="Я",LP="я",zP="Ŷ",IP="ŷ",MP="Ы",PP="ы",BP="¥",OP="𝔜",NP="𝔶",UP="Ї",jP="ї",$P="𝕐",HP="𝕪",VP="𝒴",ZP="𝓎",GP="Ю",WP="ю",JP="ÿ",QP="Ÿ",YP="Ź",KP="ź",XP="Ž",nB="ž",tB="З",eB="з",rB="Ż",oB="ż",sB="ℨ",cB="​",iB="Ζ",uB="ζ",aB="𝔷",lB="ℨ",fB="Ж",hB="ж",pB="⇝",dB="𝕫",_B="ℤ",mB="𝒵",gB="𝓏",kB="‍",xB="‌",vB={Aacute:tr,aacute:er,Abreve:rr,abreve:or,ac:sr,acd:cr,acE:ir,Acirc:ur,acirc:ar,acute:lr,Acy:fr,acy:hr,AElig:pr,aelig:dr,af:_r,Afr:mr,afr:gr,Agrave:kr,agrave:xr,alefsym:vr,aleph:br,Alpha:Cr,alpha:yr,Amacr:Ar,amacr:qr,amalg:Dr,amp:Er,AMP:wr,andand:Fr,And:Sr,and:Rr,andd:Tr,andslope:Lr,andv:zr,ang:Ir,ange:Mr,angle:Pr,angmsdaa:Br,angmsdab:Or,angmsdac:Nr,angmsdad:Ur,angmsdae:jr,angmsdaf:$r,angmsdag:Hr,angmsdah:Vr,angmsd:Zr,angrt:Gr,angrtvb:Wr,angrtvbd:Jr,angsph:Qr,angst:Yr,angzarr:Kr,Aogon:Xr,aogon:no,Aopf:to,aopf:eo,apacir:ro,ap:oo,apE:so,ape:co,apid:io,apos:uo,ApplyFunction:ao,approx:lo,approxeq:fo,Aring:ho,aring:po,Ascr:_o,ascr:mo,Assign:go,ast:ko,asymp:xo,asympeq:vo,Atilde:bo,atilde:Co,Auml:yo,auml:Ao,awconint:qo,awint:Do,backcong:Eo,backepsilon:wo,backprime:Fo,backsim:So,backsimeq:Ro,Backslash:To,Barv:Lo,barvee:zo,barwed:Io,Barwed:Mo,barwedge:Po,bbrk:Bo,bbrktbrk:Oo,bcong:No,Bcy:Uo,bcy:jo,bdquo:$o,becaus:Ho,because:Vo,Because:Zo,bemptyv:Go,bepsi:Wo,bernou:Jo,Bernoullis:Qo,Beta:Yo,beta:Ko,beth:Xo,between:ns,Bfr:ts,bfr:es,bigcap:rs,bigcirc:os,bigcup:ss,bigodot:cs,bigoplus:is,bigotimes:us,bigsqcup:as,bigstar:ls,bigtriangledown:fs,bigtriangleup:hs,biguplus:ps,bigvee:ds,bigwedge:_s,bkarow:ms,blacklozenge:gs,blacksquare:ks,blacktriangle:xs,blacktriangledown:vs,blacktriangleleft:bs,blacktriangleright:Cs,blank:ys,blk12:As,blk14:qs,blk34:Ds,block:Es,bne:ws,bnequiv:Fs,bNot:Ss,bnot:Rs,Bopf:Ts,bopf:Ls,bot:zs,bottom:Is,bowtie:Ms,boxbox:Ps,boxdl:Bs,boxdL:Os,boxDl:Ns,boxDL:Us,boxdr:js,boxdR:$s,boxDr:Hs,boxDR:Vs,boxh:Zs,boxH:Gs,boxhd:Ws,boxHd:Js,boxhD:Qs,boxHD:Ys,boxhu:Ks,boxHu:Xs,boxhU:nc,boxHU:tc,boxminus:ec,boxplus:rc,boxtimes:oc,boxul:sc,boxuL:cc,boxUl:ic,boxUL:uc,boxur:ac,boxuR:lc,boxUr:fc,boxUR:hc,boxv:pc,boxV:dc,boxvh:_c,boxvH:mc,boxVh:gc,boxVH:kc,boxvl:xc,boxvL:vc,boxVl:bc,boxVL:Cc,boxvr:yc,boxvR:Ac,boxVr:qc,boxVR:Dc,bprime:Ec,breve:wc,Breve:Fc,brvbar:Sc,bscr:Rc,Bscr:Tc,bsemi:Lc,bsim:zc,bsime:Ic,bsolb:Mc,bsol:Pc,bsolhsub:Bc,bull:Oc,bullet:Nc,bump:Uc,bumpE:jc,bumpe:$c,Bumpeq:Hc,bumpeq:Vc,Cacute:Zc,cacute:Gc,capand:Wc,capbrcup:Jc,capcap:Qc,cap:Yc,Cap:Kc,capcup:Xc,capdot:ni,CapitalDifferentialD:ti,caps:ei,caret:ri,caron:oi,Cayleys:si,ccaps:ci,Ccaron:ii,ccaron:ui,Ccedil:ai,ccedil:li,Ccirc:fi,ccirc:hi,Cconint:pi,ccups:di,ccupssm:_i,Cdot:mi,cdot:gi,cedil:ki,Cedilla:xi,cemptyv:vi,cent:bi,centerdot:Ci,CenterDot:yi,cfr:Ai,Cfr:qi,CHcy:Di,chcy:Ei,check:wi,checkmark:Fi,Chi:Si,chi:Ri,circ:Ti,circeq:Li,circlearrowleft:zi,circlearrowright:Ii,circledast:Mi,circledcirc:Pi,circleddash:Bi,CircleDot:Oi,circledR:Ni,circledS:Ui,CircleMinus:ji,CirclePlus:$i,CircleTimes:Hi,cir:Vi,cirE:Zi,cire:Gi,cirfnint:Wi,cirmid:Ji,cirscir:Qi,ClockwiseContourIntegral:Yi,CloseCurlyDoubleQuote:Ki,CloseCurlyQuote:Xi,clubs:nu,clubsuit:tu,colon:eu,Colon:ru,Colone:ou,colone:su,coloneq:cu,comma:iu,commat:uu,comp:au,compfn:lu,complement:fu,complexes:hu,cong:pu,congdot:du,Congruent:_u,conint:mu,Conint:gu,ContourIntegral:ku,copf:xu,Copf:vu,coprod:bu,Coproduct:Cu,copy:yu,COPY:Au,copysr:qu,CounterClockwiseContourIntegral:Du,crarr:Eu,cross:wu,Cross:Fu,Cscr:Su,cscr:Ru,csub:Tu,csube:Lu,csup:zu,csupe:Iu,ctdot:Mu,cudarrl:Pu,cudarrr:Bu,cuepr:Ou,cuesc:Nu,cularr:Uu,cularrp:ju,cupbrcap:$u,cupcap:Hu,CupCap:Vu,cup:Zu,Cup:Gu,cupcup:Wu,cupdot:Ju,cupor:Qu,cups:Yu,curarr:Ku,curarrm:Xu,curlyeqprec:na,curlyeqsucc:ta,curlyvee:ea,curlywedge:ra,curren:oa,curvearrowleft:sa,curvearrowright:ca,cuvee:ia,cuwed:ua,cwconint:aa,cwint:la,cylcty:fa,dagger:ha,Dagger:pa,daleth:da,darr:_a,Darr:ma,dArr:ga,dash:ka,Dashv:xa,dashv:va,dbkarow:ba,dblac:Ca,Dcaron:ya,dcaron:Aa,Dcy:qa,dcy:Da,ddagger:Ea,ddarr:wa,DD:Fa,dd:Sa,DDotrahd:Ra,ddotseq:Ta,deg:La,Del:za,Delta:Ia,delta:Ma,demptyv:Pa,dfisht:Ba,Dfr:Oa,dfr:Na,dHar:Ua,dharl:ja,dharr:$a,DiacriticalAcute:Ha,DiacriticalDot:Va,DiacriticalDoubleAcute:Za,DiacriticalGrave:Ga,DiacriticalTilde:Wa,diam:Ja,diamond:Qa,Diamond:Ya,diamondsuit:Ka,diams:Xa,die:nl,DifferentialD:tl,digamma:el,disin:rl,div:ol,divide:sl,divideontimes:cl,divonx:il,DJcy:ul,djcy:al,dlcorn:ll,dlcrop:fl,dollar:hl,Dopf:pl,dopf:dl,Dot:_l,dot:ml,DotDot:gl,doteq:kl,doteqdot:xl,DotEqual:vl,dotminus:bl,dotplus:Cl,dotsquare:yl,doublebarwedge:Al,DoubleContourIntegral:ql,DoubleDot:Dl,DoubleDownArrow:El,DoubleLeftArrow:wl,DoubleLeftRightArrow:Fl,DoubleLeftTee:Sl,DoubleLongLeftArrow:Rl,DoubleLongLeftRightArrow:Tl,DoubleLongRightArrow:Ll,DoubleRightArrow:zl,DoubleRightTee:Il,DoubleUpArrow:Ml,DoubleUpDownArrow:Pl,DoubleVerticalBar:Bl,DownArrowBar:Ol,downarrow:Nl,DownArrow:Ul,Downarrow:jl,DownArrowUpArrow:$l,DownBreve:Hl,downdownarrows:Vl,downharpoonleft:Zl,downharpoonright:Gl,DownLeftRightVector:Wl,DownLeftTeeVector:Jl,DownLeftVectorBar:Ql,DownLeftVector:Yl,DownRightTeeVector:Kl,DownRightVectorBar:Xl,DownRightVector:nf,DownTeeArrow:tf,DownTee:ef,drbkarow:rf,drcorn:of,drcrop:sf,Dscr:cf,dscr:uf,DScy:af,dscy:lf,dsol:ff,Dstrok:hf,dstrok:pf,dtdot:df,dtri:_f,dtrif:mf,duarr:gf,duhar:kf,dwangle:xf,DZcy:vf,dzcy:bf,dzigrarr:Cf,Eacute:yf,eacute:Af,easter:qf,Ecaron:Df,ecaron:Ef,Ecirc:wf,ecirc:Ff,ecir:Sf,ecolon:Rf,Ecy:Tf,ecy:Lf,eDDot:zf,Edot:If,edot:Mf,eDot:Pf,ee:Bf,efDot:Of,Efr:Nf,efr:Uf,eg:jf,Egrave:$f,egrave:Hf,egs:Vf,egsdot:Zf,el:Gf,Element:Wf,elinters:Jf,ell:Qf,els:Yf,elsdot:Kf,Emacr:Xf,emacr:nh,empty:th,emptyset:eh,EmptySmallSquare:rh,emptyv:oh,EmptyVerySmallSquare:sh,emsp13:ch,emsp14:ih,emsp:uh,ENG:ah,eng:lh,ensp:fh,Eogon:hh,eogon:ph,Eopf:dh,eopf:_h,epar:mh,eparsl:gh,eplus:kh,epsi:xh,Epsilon:vh,epsilon:bh,epsiv:Ch,eqcirc:yh,eqcolon:Ah,eqsim:qh,eqslantgtr:Dh,eqslantless:Eh,Equal:wh,equals:Fh,EqualTilde:Sh,equest:Rh,Equilibrium:Th,equiv:Lh,equivDD:zh,eqvparsl:Ih,erarr:Mh,erDot:Ph,escr:Bh,Escr:Oh,esdot:Nh,Esim:Uh,esim:jh,Eta:$h,eta:Hh,ETH:Vh,eth:Zh,Euml:Gh,euml:Wh,euro:Jh,excl:Qh,exist:Yh,Exists:Kh,expectation:Xh,exponentiale:np,ExponentialE:tp,fallingdotseq:ep,Fcy:rp,fcy:op,female:sp,ffilig:cp,fflig:ip,ffllig:up,Ffr:ap,ffr:lp,filig:fp,FilledSmallSquare:hp,FilledVerySmallSquare:pp,fjlig:dp,flat:_p,fllig:mp,fltns:gp,fnof:kp,Fopf:xp,fopf:vp,forall:bp,ForAll:Cp,fork:yp,forkv:Ap,Fouriertrf:qp,fpartint:Dp,frac12:Ep,frac13:wp,frac14:Fp,frac15:Sp,frac16:Rp,frac18:Tp,frac23:Lp,frac25:zp,frac34:Ip,frac35:Mp,frac38:Pp,frac45:Bp,frac56:Op,frac58:Np,frac78:Up,frasl:jp,frown:$p,fscr:Hp,Fscr:Vp,gacute:Zp,Gamma:Gp,gamma:Wp,Gammad:Jp,gammad:Qp,gap:Yp,Gbreve:Kp,gbreve:Xp,Gcedil:nd,Gcirc:td,gcirc:ed,Gcy:rd,gcy:od,Gdot:sd,gdot:cd,ge:id,gE:ud,gEl:ad,gel:ld,geq:fd,geqq:hd,geqslant:pd,gescc:dd,ges:_d,gesdot:md,gesdoto:gd,gesdotol:kd,gesl:xd,gesles:vd,Gfr:bd,gfr:Cd,gg:yd,Gg:Ad,ggg:qd,gimel:Dd,GJcy:Ed,gjcy:wd,gla:Fd,gl:Sd,glE:Rd,glj:Td,gnap:Ld,gnapprox:zd,gne:Id,gnE:Md,gneq:Pd,gneqq:Bd,gnsim:Od,Gopf:Nd,gopf:Ud,grave:jd,GreaterEqual:$d,GreaterEqualLess:Hd,GreaterFullEqual:Vd,GreaterGreater:Zd,GreaterLess:Gd,GreaterSlantEqual:Wd,GreaterTilde:Jd,Gscr:Qd,gscr:Yd,gsim:Kd,gsime:Xd,gsiml:n0,gtcc:t0,gtcir:e0,gt:r0,GT:o0,Gt:s0,gtdot:c0,gtlPar:i0,gtquest:u0,gtrapprox:a0,gtrarr:l0,gtrdot:f0,gtreqless:h0,gtreqqless:p0,gtrless:d0,gtrsim:_0,gvertneqq:m0,gvnE:g0,Hacek:k0,hairsp:x0,half:v0,hamilt:b0,HARDcy:C0,hardcy:y0,harrcir:A0,harr:q0,hArr:D0,harrw:E0,Hat:w0,hbar:F0,Hcirc:S0,hcirc:R0,hearts:T0,heartsuit:L0,hellip:z0,hercon:I0,hfr:M0,Hfr:P0,HilbertSpace:B0,hksearow:O0,hkswarow:N0,hoarr:U0,homtht:j0,hookleftarrow:$0,hookrightarrow:H0,hopf:V0,Hopf:Z0,horbar:G0,HorizontalLine:W0,hscr:J0,Hscr:Q0,hslash:Y0,Hstrok:K0,hstrok:X0,HumpDownHump:n_,HumpEqual:t_,hybull:e_,hyphen:r_,Iacute:o_,iacute:s_,ic:c_,Icirc:i_,icirc:u_,Icy:a_,icy:l_,Idot:f_,IEcy:h_,iecy:p_,iexcl:d_,iff:__,ifr:m_,Ifr:g_,Igrave:k_,igrave:x_,ii:v_,iiiint:b_,iiint:C_,iinfin:y_,iiota:A_,IJlig:q_,ijlig:D_,Imacr:E_,imacr:w_,image:F_,ImaginaryI:S_,imagline:R_,imagpart:T_,imath:L_,Im:z_,imof:I_,imped:M_,Implies:P_,incare:B_,in:"∈",infin:O_,infintie:N_,inodot:U_,intcal:j_,int:$_,Int:H_,integers:V_,Integral:Z_,intercal:G_,Intersection:W_,intlarhk:J_,intprod:Q_,InvisibleComma:Y_,InvisibleTimes:K_,IOcy:X_,iocy:nm,Iogon:tm,iogon:em,Iopf:rm,iopf:om,Iota:sm,iota:cm,iprod:im,iquest:um,iscr:am,Iscr:lm,isin:fm,isindot:hm,isinE:pm,isins:dm,isinsv:_m,isinv:mm,it:gm,Itilde:km,itilde:xm,Iukcy:vm,iukcy:bm,Iuml:Cm,iuml:ym,Jcirc:Am,jcirc:qm,Jcy:Dm,jcy:Em,Jfr:wm,jfr:Fm,jmath:Sm,Jopf:Rm,jopf:Tm,Jscr:Lm,jscr:zm,Jsercy:Im,jsercy:Mm,Jukcy:Pm,jukcy:Bm,Kappa:Om,kappa:Nm,kappav:Um,Kcedil:jm,kcedil:$m,Kcy:Hm,kcy:Vm,Kfr:Zm,kfr:Gm,kgreen:Wm,KHcy:Jm,khcy:Qm,KJcy:Ym,kjcy:Km,Kopf:Xm,kopf:ng,Kscr:tg,kscr:eg,lAarr:rg,Lacute:og,lacute:sg,laemptyv:cg,lagran:ig,Lambda:ug,lambda:ag,lang:lg,Lang:fg,langd:hg,langle:pg,lap:dg,Laplacetrf:_g,laquo:mg,larrb:gg,larrbfs:kg,larr:xg,Larr:vg,lArr:bg,larrfs:Cg,larrhk:yg,larrlp:Ag,larrpl:qg,larrsim:Dg,larrtl:Eg,latail:wg,lAtail:Fg,lat:Sg,late:Rg,lates:Tg,lbarr:Lg,lBarr:zg,lbbrk:Ig,lbrace:Mg,lbrack:Pg,lbrke:Bg,lbrksld:Og,lbrkslu:Ng,Lcaron:Ug,lcaron:jg,Lcedil:$g,lcedil:Hg,lceil:Vg,lcub:Zg,Lcy:Gg,lcy:Wg,ldca:Jg,ldquo:Qg,ldquor:Yg,ldrdhar:Kg,ldrushar:Xg,ldsh:nk,le:tk,lE:ek,LeftAngleBracket:rk,LeftArrowBar:ok,leftarrow:sk,LeftArrow:ck,Leftarrow:ik,LeftArrowRightArrow:uk,leftarrowtail:ak,LeftCeiling:lk,LeftDoubleBracket:fk,LeftDownTeeVector:hk,LeftDownVectorBar:pk,LeftDownVector:dk,LeftFloor:_k,leftharpoondown:mk,leftharpoonup:gk,leftleftarrows:kk,leftrightarrow:xk,LeftRightArrow:vk,Leftrightarrow:bk,leftrightarrows:Ck,leftrightharpoons:yk,leftrightsquigarrow:Ak,LeftRightVector:qk,LeftTeeArrow:Dk,LeftTee:Ek,LeftTeeVector:wk,leftthreetimes:Fk,LeftTriangleBar:Sk,LeftTriangle:Rk,LeftTriangleEqual:Tk,LeftUpDownVector:Lk,LeftUpTeeVector:zk,LeftUpVectorBar:Ik,LeftUpVector:Mk,LeftVectorBar:Pk,LeftVector:Bk,lEg:Ok,leg:Nk,leq:Uk,leqq:jk,leqslant:$k,lescc:Hk,les:Vk,lesdot:Zk,lesdoto:Gk,lesdotor:Wk,lesg:Jk,lesges:Qk,lessapprox:Yk,lessdot:Kk,lesseqgtr:Xk,lesseqqgtr:nx,LessEqualGreater:tx,LessFullEqual:ex,LessGreater:rx,lessgtr:ox,LessLess:sx,lesssim:cx,LessSlantEqual:ix,LessTilde:ux,lfisht:ax,lfloor:lx,Lfr:fx,lfr:hx,lg:px,lgE:dx,lHar:_x,lhard:mx,lharu:gx,lharul:kx,lhblk:xx,LJcy:vx,ljcy:bx,llarr:Cx,ll:yx,Ll:Ax,llcorner:qx,Lleftarrow:Dx,llhard:Ex,lltri:wx,Lmidot:Fx,lmidot:Sx,lmoustache:Rx,lmoust:Tx,lnap:Lx,lnapprox:zx,lne:Ix,lnE:Mx,lneq:Px,lneqq:Bx,lnsim:Ox,loang:Nx,loarr:Ux,lobrk:jx,longleftarrow:$x,LongLeftArrow:Hx,Longleftarrow:Vx,longleftrightarrow:Zx,LongLeftRightArrow:Gx,Longleftrightarrow:Wx,longmapsto:Jx,longrightarrow:Qx,LongRightArrow:Yx,Longrightarrow:Kx,looparrowleft:Xx,looparrowright:nv,lopar:tv,Lopf:ev,lopf:rv,loplus:ov,lotimes:sv,lowast:cv,lowbar:iv,LowerLeftArrow:uv,LowerRightArrow:av,loz:lv,lozenge:fv,lozf:hv,lpar:pv,lparlt:dv,lrarr:_v,lrcorner:mv,lrhar:gv,lrhard:kv,lrm:xv,lrtri:vv,lsaquo:bv,lscr:Cv,Lscr:yv,lsh:Av,Lsh:qv,lsim:Dv,lsime:Ev,lsimg:wv,lsqb:Fv,lsquo:Sv,lsquor:Rv,Lstrok:Tv,lstrok:Lv,ltcc:zv,ltcir:Iv,lt:Mv,LT:Pv,Lt:Bv,ltdot:Ov,lthree:Nv,ltimes:Uv,ltlarr:jv,ltquest:$v,ltri:Hv,ltrie:Vv,ltrif:Zv,ltrPar:Gv,lurdshar:Wv,luruhar:Jv,lvertneqq:Qv,lvnE:Yv,macr:Kv,male:Xv,malt:nb,maltese:tb,Map:"⤅",map:eb,mapsto:rb,mapstodown:ob,mapstoleft:sb,mapstoup:cb,marker:ib,mcomma:ub,Mcy:ab,mcy:lb,mdash:fb,mDDot:hb,measuredangle:pb,MediumSpace:db,Mellintrf:_b,Mfr:mb,mfr:gb,mho:kb,micro:xb,midast:vb,midcir:bb,mid:Cb,middot:yb,minusb:Ab,minus:qb,minusd:Db,minusdu:Eb,MinusPlus:wb,mlcp:Fb,mldr:Sb,mnplus:Rb,models:Tb,Mopf:Lb,mopf:zb,mp:Ib,mscr:Mb,Mscr:Pb,mstpos:Bb,Mu:Ob,mu:Nb,multimap:Ub,mumap:jb,nabla:$b,Nacute:Hb,nacute:Vb,nang:Zb,nap:Gb,napE:Wb,napid:Jb,napos:Qb,napprox:Yb,natural:Kb,naturals:Xb,natur:n1,nbsp:t1,nbump:e1,nbumpe:r1,ncap:o1,Ncaron:s1,ncaron:c1,Ncedil:i1,ncedil:u1,ncong:a1,ncongdot:l1,ncup:f1,Ncy:h1,ncy:p1,ndash:d1,nearhk:_1,nearr:m1,neArr:g1,nearrow:k1,ne:x1,nedot:v1,NegativeMediumSpace:b1,NegativeThickSpace:C1,NegativeThinSpace:y1,NegativeVeryThinSpace:A1,nequiv:q1,nesear:D1,nesim:E1,NestedGreaterGreater:w1,NestedLessLess:F1,NewLine:S1,nexist:R1,nexists:T1,Nfr:L1,nfr:z1,ngE:I1,nge:M1,ngeq:P1,ngeqq:B1,ngeqslant:O1,nges:N1,nGg:U1,ngsim:j1,nGt:$1,ngt:H1,ngtr:V1,nGtv:Z1,nharr:G1,nhArr:W1,nhpar:J1,ni:Q1,nis:Y1,nisd:K1,niv:X1,NJcy:nC,njcy:tC,nlarr:eC,nlArr:rC,nldr:oC,nlE:sC,nle:cC,nleftarrow:iC,nLeftarrow:uC,nleftrightarrow:aC,nLeftrightarrow:lC,nleq:fC,nleqq:hC,nleqslant:pC,nles:dC,nless:_C,nLl:mC,nlsim:gC,nLt:kC,nlt:xC,nltri:vC,nltrie:bC,nLtv:CC,nmid:yC,NoBreak:AC,NonBreakingSpace:qC,nopf:DC,Nopf:EC,Not:wC,not:FC,NotCongruent:SC,NotCupCap:RC,NotDoubleVerticalBar:TC,NotElement:LC,NotEqual:zC,NotEqualTilde:IC,NotExists:MC,NotGreater:PC,NotGreaterEqual:BC,NotGreaterFullEqual:OC,NotGreaterGreater:NC,NotGreaterLess:UC,NotGreaterSlantEqual:jC,NotGreaterTilde:$C,NotHumpDownHump:HC,NotHumpEqual:VC,notin:ZC,notindot:GC,notinE:WC,notinva:JC,notinvb:QC,notinvc:YC,NotLeftTriangleBar:KC,NotLeftTriangle:XC,NotLeftTriangleEqual:ny,NotLess:ty,NotLessEqual:ey,NotLessGreater:ry,NotLessLess:oy,NotLessSlantEqual:sy,NotLessTilde:cy,NotNestedGreaterGreater:iy,NotNestedLessLess:uy,notni:ay,notniva:ly,notnivb:fy,notnivc:hy,NotPrecedes:py,NotPrecedesEqual:dy,NotPrecedesSlantEqual:_y,NotReverseElement:my,NotRightTriangleBar:gy,NotRightTriangle:ky,NotRightTriangleEqual:xy,NotSquareSubset:vy,NotSquareSubsetEqual:by,NotSquareSuperset:Cy,NotSquareSupersetEqual:yy,NotSubset:Ay,NotSubsetEqual:qy,NotSucceeds:Dy,NotSucceedsEqual:Ey,NotSucceedsSlantEqual:wy,NotSucceedsTilde:Fy,NotSuperset:Sy,NotSupersetEqual:Ry,NotTilde:Ty,NotTildeEqual:Ly,NotTildeFullEqual:zy,NotTildeTilde:Iy,NotVerticalBar:My,nparallel:Py,npar:By,nparsl:Oy,npart:Ny,npolint:Uy,npr:jy,nprcue:$y,nprec:Hy,npreceq:Vy,npre:Zy,nrarrc:Gy,nrarr:Wy,nrArr:Jy,nrarrw:Qy,nrightarrow:Yy,nRightarrow:Ky,nrtri:Xy,nrtrie:nA,nsc:tA,nsccue:eA,nsce:rA,Nscr:oA,nscr:sA,nshortmid:cA,nshortparallel:iA,nsim:uA,nsime:aA,nsimeq:lA,nsmid:fA,nspar:hA,nsqsube:pA,nsqsupe:dA,nsub:_A,nsubE:mA,nsube:gA,nsubset:kA,nsubseteq:xA,nsubseteqq:vA,nsucc:bA,nsucceq:CA,nsup:yA,nsupE:AA,nsupe:qA,nsupset:DA,nsupseteq:EA,nsupseteqq:wA,ntgl:FA,Ntilde:SA,ntilde:RA,ntlg:TA,ntriangleleft:LA,ntrianglelefteq:zA,ntriangleright:IA,ntrianglerighteq:MA,Nu:PA,nu:BA,num:OA,numero:NA,numsp:UA,nvap:jA,nvdash:$A,nvDash:HA,nVdash:VA,nVDash:ZA,nvge:GA,nvgt:WA,nvHarr:JA,nvinfin:QA,nvlArr:YA,nvle:KA,nvlt:XA,nvltrie:nq,nvrArr:tq,nvrtrie:eq,nvsim:rq,nwarhk:oq,nwarr:sq,nwArr:cq,nwarrow:iq,nwnear:uq,Oacute:aq,oacute:lq,oast:fq,Ocirc:hq,ocirc:pq,ocir:dq,Ocy:_q,ocy:mq,odash:gq,Odblac:kq,odblac:xq,odiv:vq,odot:bq,odsold:Cq,OElig:yq,oelig:Aq,ofcir:qq,Ofr:Dq,ofr:Eq,ogon:wq,Ograve:Fq,ograve:Sq,ogt:Rq,ohbar:Tq,ohm:Lq,oint:zq,olarr:Iq,olcir:Mq,olcross:Pq,oline:Bq,olt:Oq,Omacr:Nq,omacr:Uq,Omega:jq,omega:$q,Omicron:Hq,omicron:Vq,omid:Zq,ominus:Gq,Oopf:Wq,oopf:Jq,opar:Qq,OpenCurlyDoubleQuote:Yq,OpenCurlyQuote:Kq,operp:Xq,oplus:nD,orarr:tD,Or:eD,or:rD,ord:oD,order:sD,orderof:cD,ordf:iD,ordm:uD,origof:aD,oror:lD,orslope:fD,orv:hD,oS:pD,Oscr:dD,oscr:_D,Oslash:mD,oslash:gD,osol:kD,Otilde:xD,otilde:vD,otimesas:bD,Otimes:CD,otimes:yD,Ouml:AD,ouml:qD,ovbar:DD,OverBar:ED,OverBrace:wD,OverBracket:FD,OverParenthesis:SD,para:RD,parallel:TD,par:LD,parsim:zD,parsl:ID,part:MD,PartialD:PD,Pcy:BD,pcy:OD,percnt:ND,period:UD,permil:jD,perp:$D,pertenk:HD,Pfr:VD,pfr:ZD,Phi:GD,phi:WD,phiv:JD,phmmat:QD,phone:YD,Pi:KD,pi:XD,pitchfork:nE,piv:tE,planck:eE,planckh:rE,plankv:oE,plusacir:sE,plusb:cE,pluscir:iE,plus:uE,plusdo:aE,plusdu:lE,pluse:fE,PlusMinus:hE,plusmn:pE,plussim:dE,plustwo:_E,pm:mE,Poincareplane:gE,pointint:kE,popf:xE,Popf:vE,pound:bE,prap:CE,Pr:yE,pr:AE,prcue:qE,precapprox:DE,prec:EE,preccurlyeq:wE,Precedes:FE,PrecedesEqual:SE,PrecedesSlantEqual:RE,PrecedesTilde:TE,preceq:LE,precnapprox:zE,precneqq:IE,precnsim:ME,pre:PE,prE:BE,precsim:OE,prime:NE,Prime:UE,primes:jE,prnap:$E,prnE:HE,prnsim:VE,prod:ZE,Product:GE,profalar:WE,profline:JE,profsurf:QE,prop:YE,Proportional:KE,Proportion:XE,propto:nw,prsim:tw,prurel:ew,Pscr:rw,pscr:ow,Psi:sw,psi:cw,puncsp:iw,Qfr:uw,qfr:aw,qint:lw,qopf:fw,Qopf:hw,qprime:pw,Qscr:dw,qscr:_w,quaternions:mw,quatint:gw,quest:kw,questeq:xw,quot:vw,QUOT:bw,rAarr:Cw,race:yw,Racute:Aw,racute:qw,radic:Dw,raemptyv:Ew,rang:ww,Rang:Fw,rangd:Sw,range:Rw,rangle:Tw,raquo:Lw,rarrap:zw,rarrb:Iw,rarrbfs:Mw,rarrc:Pw,rarr:Bw,Rarr:Ow,rArr:Nw,rarrfs:Uw,rarrhk:jw,rarrlp:$w,rarrpl:Hw,rarrsim:Vw,Rarrtl:Zw,rarrtl:Gw,rarrw:Ww,ratail:Jw,rAtail:Qw,ratio:Yw,rationals:Kw,rbarr:Xw,rBarr:nF,RBarr:tF,rbbrk:eF,rbrace:rF,rbrack:oF,rbrke:sF,rbrksld:cF,rbrkslu:iF,Rcaron:uF,rcaron:aF,Rcedil:lF,rcedil:fF,rceil:hF,rcub:pF,Rcy:dF,rcy:_F,rdca:mF,rdldhar:gF,rdquo:kF,rdquor:xF,rdsh:vF,real:bF,realine:CF,realpart:yF,reals:AF,Re:qF,rect:DF,reg:EF,REG:wF,ReverseElement:FF,ReverseEquilibrium:SF,ReverseUpEquilibrium:RF,rfisht:TF,rfloor:LF,rfr:zF,Rfr:IF,rHar:MF,rhard:PF,rharu:BF,rharul:OF,Rho:NF,rho:UF,rhov:jF,RightAngleBracket:$F,RightArrowBar:HF,rightarrow:VF,RightArrow:ZF,Rightarrow:GF,RightArrowLeftArrow:WF,rightarrowtail:JF,RightCeiling:QF,RightDoubleBracket:YF,RightDownTeeVector:KF,RightDownVectorBar:XF,RightDownVector:nS,RightFloor:tS,rightharpoondown:eS,rightharpoonup:rS,rightleftarrows:oS,rightleftharpoons:sS,rightrightarrows:cS,rightsquigarrow:iS,RightTeeArrow:uS,RightTee:aS,RightTeeVector:lS,rightthreetimes:fS,RightTriangleBar:hS,RightTriangle:pS,RightTriangleEqual:dS,RightUpDownVector:_S,RightUpTeeVector:mS,RightUpVectorBar:gS,RightUpVector:kS,RightVectorBar:xS,RightVector:vS,ring:bS,risingdotseq:CS,rlarr:yS,rlhar:AS,rlm:qS,rmoustache:DS,rmoust:ES,rnmid:wS,roang:FS,roarr:SS,robrk:RS,ropar:TS,ropf:LS,Ropf:zS,roplus:IS,rotimes:MS,RoundImplies:PS,rpar:BS,rpargt:OS,rppolint:NS,rrarr:US,Rrightarrow:jS,rsaquo:$S,rscr:HS,Rscr:VS,rsh:ZS,Rsh:GS,rsqb:WS,rsquo:JS,rsquor:QS,rthree:YS,rtimes:KS,rtri:XS,rtrie:n2,rtrif:t2,rtriltri:e2,RuleDelayed:r2,ruluhar:o2,rx:s2,Sacute:c2,sacute:i2,sbquo:u2,scap:a2,Scaron:l2,scaron:f2,Sc:h2,sc:p2,sccue:d2,sce:_2,scE:m2,Scedil:g2,scedil:k2,Scirc:x2,scirc:v2,scnap:b2,scnE:C2,scnsim:y2,scpolint:A2,scsim:q2,Scy:D2,scy:E2,sdotb:w2,sdot:F2,sdote:S2,searhk:R2,searr:T2,seArr:L2,searrow:z2,sect:I2,semi:M2,seswar:P2,setminus:B2,setmn:O2,sext:N2,Sfr:U2,sfr:j2,sfrown:$2,sharp:H2,SHCHcy:V2,shchcy:Z2,SHcy:G2,shcy:W2,ShortDownArrow:J2,ShortLeftArrow:Q2,shortmid:Y2,shortparallel:K2,ShortRightArrow:X2,ShortUpArrow:nR,shy:tR,Sigma:eR,sigma:rR,sigmaf:oR,sigmav:sR,sim:cR,simdot:iR,sime:uR,simeq:aR,simg:lR,simgE:fR,siml:hR,simlE:pR,simne:dR,simplus:_R,simrarr:mR,slarr:gR,SmallCircle:kR,smallsetminus:xR,smashp:vR,smeparsl:bR,smid:CR,smile:yR,smt:AR,smte:qR,smtes:DR,SOFTcy:ER,softcy:wR,solbar:FR,solb:SR,sol:RR,Sopf:TR,sopf:LR,spades:zR,spadesuit:IR,spar:MR,sqcap:PR,sqcaps:BR,sqcup:OR,sqcups:NR,Sqrt:UR,sqsub:jR,sqsube:$R,sqsubset:HR,sqsubseteq:VR,sqsup:ZR,sqsupe:GR,sqsupset:WR,sqsupseteq:JR,square:QR,Square:YR,SquareIntersection:KR,SquareSubset:XR,SquareSubsetEqual:nT,SquareSuperset:tT,SquareSupersetEqual:eT,SquareUnion:rT,squarf:oT,squ:sT,squf:cT,srarr:iT,Sscr:uT,sscr:aT,ssetmn:lT,ssmile:fT,sstarf:hT,Star:pT,star:dT,starf:_T,straightepsilon:mT,straightphi:gT,strns:kT,sub:xT,Sub:vT,subdot:bT,subE:CT,sube:yT,subedot:AT,submult:qT,subnE:DT,subne:ET,subplus:wT,subrarr:FT,subset:ST,Subset:RT,subseteq:TT,subseteqq:LT,SubsetEqual:zT,subsetneq:IT,subsetneqq:MT,subsim:PT,subsub:BT,subsup:OT,succapprox:NT,succ:UT,succcurlyeq:jT,Succeeds:$T,SucceedsEqual:HT,SucceedsSlantEqual:VT,SucceedsTilde:ZT,succeq:GT,succnapprox:WT,succneqq:JT,succnsim:QT,succsim:YT,SuchThat:KT,sum:XT,Sum:nL,sung:tL,sup1:eL,sup2:rL,sup3:oL,sup:sL,Sup:cL,supdot:iL,supdsub:uL,supE:aL,supe:lL,supedot:fL,Superset:hL,SupersetEqual:pL,suphsol:dL,suphsub:_L,suplarr:mL,supmult:gL,supnE:kL,supne:xL,supplus:vL,supset:bL,Supset:CL,supseteq:yL,supseteqq:AL,supsetneq:qL,supsetneqq:DL,supsim:EL,supsub:wL,supsup:FL,swarhk:SL,swarr:RL,swArr:TL,swarrow:LL,swnwar:zL,szlig:IL,Tab:ML,target:PL,Tau:BL,tau:OL,tbrk:NL,Tcaron:UL,tcaron:jL,Tcedil:$L,tcedil:HL,Tcy:VL,tcy:ZL,tdot:GL,telrec:WL,Tfr:JL,tfr:QL,there4:YL,therefore:KL,Therefore:XL,Theta:nz,theta:tz,thetasym:ez,thetav:rz,thickapprox:oz,thicksim:sz,ThickSpace:cz,ThinSpace:iz,thinsp:uz,thkap:az,thksim:lz,THORN:fz,thorn:hz,tilde:pz,Tilde:dz,TildeEqual:_z,TildeFullEqual:mz,TildeTilde:gz,timesbar:kz,timesb:xz,times:vz,timesd:bz,tint:Cz,toea:yz,topbot:Az,topcir:qz,top:Dz,Topf:Ez,topf:wz,topfork:Fz,tosa:Sz,tprime:Rz,trade:Tz,TRADE:Lz,triangle:zz,triangledown:Iz,triangleleft:Mz,trianglelefteq:Pz,triangleq:Bz,triangleright:Oz,trianglerighteq:Nz,tridot:Uz,trie:jz,triminus:$z,TripleDot:Hz,triplus:Vz,trisb:Zz,tritime:Gz,trpezium:Wz,Tscr:Jz,tscr:Qz,TScy:Yz,tscy:Kz,TSHcy:Xz,tshcy:n3,Tstrok:t3,tstrok:e3,twixt:r3,twoheadleftarrow:o3,twoheadrightarrow:s3,Uacute:c3,uacute:i3,uarr:u3,Uarr:a3,uArr:l3,Uarrocir:f3,Ubrcy:h3,ubrcy:p3,Ubreve:d3,ubreve:_3,Ucirc:m3,ucirc:g3,Ucy:k3,ucy:x3,udarr:v3,Udblac:b3,udblac:C3,udhar:y3,ufisht:A3,Ufr:q3,ufr:D3,Ugrave:E3,ugrave:w3,uHar:F3,uharl:S3,uharr:R3,uhblk:T3,ulcorn:L3,ulcorner:z3,ulcrop:I3,ultri:M3,Umacr:P3,umacr:B3,uml:O3,UnderBar:N3,UnderBrace:U3,UnderBracket:j3,UnderParenthesis:$3,Union:H3,UnionPlus:V3,Uogon:Z3,uogon:G3,Uopf:W3,uopf:J3,UpArrowBar:Q3,uparrow:Y3,UpArrow:K3,Uparrow:X3,UpArrowDownArrow:nI,updownarrow:tI,UpDownArrow:eI,Updownarrow:rI,UpEquilibrium:oI,upharpoonleft:sI,upharpoonright:cI,uplus:iI,UpperLeftArrow:uI,UpperRightArrow:aI,upsi:lI,Upsi:fI,upsih:hI,Upsilon:pI,upsilon:dI,UpTeeArrow:_I,UpTee:mI,upuparrows:gI,urcorn:kI,urcorner:xI,urcrop:vI,Uring:bI,uring:CI,urtri:yI,Uscr:AI,uscr:qI,utdot:DI,Utilde:EI,utilde:wI,utri:FI,utrif:SI,uuarr:RI,Uuml:TI,uuml:LI,uwangle:zI,vangrt:II,varepsilon:MI,varkappa:PI,varnothing:BI,varphi:OI,varpi:NI,varpropto:UI,varr:jI,vArr:$I,varrho:HI,varsigma:VI,varsubsetneq:ZI,varsubsetneqq:GI,varsupsetneq:WI,varsupsetneqq:JI,vartheta:QI,vartriangleleft:YI,vartriangleright:KI,vBar:XI,Vbar:nM,vBarv:tM,Vcy:eM,vcy:rM,vdash:oM,vDash:sM,Vdash:cM,VDash:iM,Vdashl:uM,veebar:aM,vee:lM,Vee:fM,veeeq:hM,vellip:pM,verbar:dM,Verbar:_M,vert:mM,Vert:gM,VerticalBar:kM,VerticalLine:xM,VerticalSeparator:vM,VerticalTilde:bM,VeryThinSpace:CM,Vfr:yM,vfr:AM,vltri:qM,vnsub:DM,vnsup:EM,Vopf:wM,vopf:FM,vprop:SM,vrtri:RM,Vscr:TM,vscr:LM,vsubnE:zM,vsubne:IM,vsupnE:MM,vsupne:PM,Vvdash:BM,vzigzag:OM,Wcirc:NM,wcirc:UM,wedbar:jM,wedge:$M,Wedge:HM,wedgeq:VM,weierp:ZM,Wfr:GM,wfr:WM,Wopf:JM,wopf:QM,wp:YM,wr:KM,wreath:XM,Wscr:nP,wscr:tP,xcap:eP,xcirc:rP,xcup:oP,xdtri:sP,Xfr:cP,xfr:iP,xharr:uP,xhArr:aP,Xi:lP,xi:fP,xlarr:hP,xlArr:pP,xmap:dP,xnis:_P,xodot:mP,Xopf:gP,xopf:kP,xoplus:xP,xotime:vP,xrarr:bP,xrArr:CP,Xscr:yP,xscr:AP,xsqcup:qP,xuplus:DP,xutri:EP,xvee:wP,xwedge:FP,Yacute:SP,yacute:RP,YAcy:TP,yacy:LP,Ycirc:zP,ycirc:IP,Ycy:MP,ycy:PP,yen:BP,Yfr:OP,yfr:NP,YIcy:UP,yicy:jP,Yopf:$P,yopf:HP,Yscr:VP,yscr:ZP,YUcy:GP,yucy:WP,yuml:JP,Yuml:QP,Zacute:YP,zacute:KP,Zcaron:XP,zcaron:nB,Zcy:tB,zcy:eB,Zdot:rB,zdot:oB,zeetrf:sB,ZeroWidthSpace:cB,Zeta:iB,zeta:uB,zfr:aB,Zfr:lB,ZHcy:fB,zhcy:hB,zigrarr:pB,zopf:dB,Zopf:_B,Zscr:mB,zscr:gB,zwj:kB,zwnj:xB};var X,_t;function Re(){return _t||(_t=1,X=vB),X}var nn,mt;function ut(){return mt||(mt=1,nn=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/),nn}var $={},tn,gt;function bB(){if(gt)return tn;gt=1;var f={};function r(t){var n,e,c=f[t];if(c)return c;for(c=f[t]=[],n=0;n<128;n++)e=String.fromCharCode(n),/^[0-9a-z]$/i.test(e)?c.push(e):c.push("%"+("0"+n.toString(16).toUpperCase()).slice(-2));for(n=0;n"u"&&(e=!0),l=r(n),c=0,s=t.length;c=55296&&i<=57343){if(i>=55296&&i<=56319&&c+1=56320&&u<=57343)){a+=encodeURIComponent(t[c]+t[c+1]),c++;continue}a+="%EF%BF%BD";continue}a+=encodeURIComponent(t[c])}return a}return o.defaultChars=";/?:@&=+$,-_.!~*'()#",o.componentChars="-_.!~*'()",tn=o,tn}var en,kt;function CB(){if(kt)return en;kt=1;var f={};function r(t){var n,e,c=f[t];if(c)return c;for(c=f[t]=[],n=0;n<128;n++)e=String.fromCharCode(n),c.push(e);for(n=0;n=55296&&h<=57343?g+="���":g+=String.fromCharCode(h),s+=6;continue}if((u&248)===240&&s+91114111?g+="����":(h-=65536,g+=String.fromCharCode(55296+(h>>10),56320+(h&1023))),s+=9;continue}g+="�"}return g})}return o.defaultChars=";/?:@&=+$,#",o.componentChars="",en=o,en}var rn,xt;function yB(){return xt||(xt=1,rn=function(r){var o="";return o+=r.protocol||"",o+=r.slashes?"//":"",o+=r.auth?r.auth+"@":"",r.hostname&&r.hostname.indexOf(":")!==-1?o+="["+r.hostname+"]":o+=r.hostname||"",o+=r.port?":"+r.port:"",o+=r.pathname||"",o+=r.search||"",o+=r.hash||"",o}),rn}var on,vt;function AB(){if(vt)return on;vt=1;function f(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var r=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,t=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,n=["<",">",'"',"`"," ","\r",` `," "],e=["{","}","|","\\","^","`"].concat(n),c=["'"].concat(e),s=["%","/","?",";","#"].concat(c),i=["/","?","#"],u=255,l=/^[+a-z0-9A-Z_-]{0,63}$/,a=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},h={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function g(C,b){if(C&&C instanceof f)return C;var _=new f;return _.parse(C,b),_}return f.prototype.parse=function(C,b){var _,x,p,d,k,v=C;if(v=v.trim(),!b&&C.split("#").length===1){var E=t.exec(v);if(E)return this.pathname=E[1],E[2]&&(this.search=E[2]),this}var A=r.exec(v);if(A&&(A=A[0],p=A.toLowerCase(),this.protocol=A,v=v.substr(A.length)),(b||A||v.match(/^\/\/[^@\/]+@[^@\/]+/))&&(k=v.substr(0,2)==="//",k&&!(A&&m[A])&&(v=v.substr(2),this.slashes=!0)),!m[A]&&(k||A&&!h[A])){var D=-1;for(_=0;_127?L+="x":L+=T[M];if(!L.match(l)){var I=y.slice(0,_),F=y.slice(_+1),N=T.match(a);N&&(I.push(N[1]),F.unshift(N[2])),F.length&&(v=F.join(".")+v),this.hostname=I.join(".");break}}}}this.hostname.length>u&&(this.hostname=""),z&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var j=v.indexOf("#");j!==-1&&(this.hash=v.substr(j),v=v.slice(0,j));var Y=v.indexOf("?");return Y!==-1&&(this.search=v.substr(Y),v=v.slice(0,Y)),v&&(this.pathname=v),h[p]&&this.hostname&&!this.pathname&&(this.pathname=""),this},f.prototype.parseHost=function(C){var b=o.exec(C);b&&(b=b[0],b!==":"&&(this.port=b.substr(1)),C=C.substr(0,C.length-b.length)),C&&(this.hostname=C)},on=g,on}var bt;function Te(){return bt||(bt=1,$.encode=bB(),$.decode=CB(),$.format=yB(),$.parse=AB()),$}var U={},sn,Ct;function Le(){return Ct||(Ct=1,sn=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/),sn}var cn,yt;function ze(){return yt||(yt=1,cn=/[\0-\x1F\x7F-\x9F]/),cn}var un,At;function qB(){return At||(At=1,un=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/),un}var an,qt;function Ie(){return qt||(qt=1,an=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/),an}var Dt;function DB(){return Dt||(Dt=1,U.Any=Le(),U.Cc=ze(),U.Cf=qB(),U.P=ut(),U.Z=Ie()),U}var Et;function R(){return Et||(Et=1,function(f){function r(y){return Object.prototype.toString.call(y)}function o(y){return r(y)==="[object String]"}var t=Object.prototype.hasOwnProperty;function n(y,T){return t.call(y,T)}function e(y){var T=Array.prototype.slice.call(arguments,1);return T.forEach(function(L){if(L){if(typeof L!="object")throw new TypeError(L+"must be object");Object.keys(L).forEach(function(M){y[M]=L[M]})}}),y}function c(y,T,L){return[].concat(y.slice(0,T),L,y.slice(T+1))}function s(y){return!(y>=55296&&y<=57343||y>=64976&&y<=65007||(y&65535)===65535||(y&65535)===65534||y>=0&&y<=8||y===11||y>=14&&y<=31||y>=127&&y<=159||y>1114111)}function i(y){if(y>65535){y-=65536;var T=55296+(y>>10),L=56320+(y&1023);return String.fromCharCode(T,L)}return String.fromCharCode(y)}var u=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=/&([a-z#][a-z0-9]{1,31});/gi,a=new RegExp(u.source+"|"+l.source,"gi"),m=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i,h=Re();function g(y,T){var L;return n(h,T)?h[T]:T.charCodeAt(0)===35&&m.test(T)&&(L=T[1].toLowerCase()==="x"?parseInt(T.slice(2),16):parseInt(T.slice(1),10),s(L))?i(L):y}function C(y){return y.indexOf("\\")<0?y:y.replace(u,"$1")}function b(y){return y.indexOf("\\")<0&&y.indexOf("&")<0?y:y.replace(a,function(T,L,M){return L||g(T,M)})}var _=/[&<>"]/,x=/[&<>"]/g,p={"&":"&","<":"<",">":">",'"':"""};function d(y){return p[y]}function k(y){return _.test(y)?y.replace(x,d):y}var v=/[.?*+^$[\]\\(){}|-]/g;function E(y){return y.replace(v,"\\$&")}function A(y){switch(y){case 9:case 32:return!0}return!1}function D(y){if(y>=8192&&y<=8202)return!0;switch(y){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}var q=ut();function w(y){return q.test(y)}function S(y){switch(y){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function z(y){return y=y.trim().replace(/\s+/g," "),"ẞ".toLowerCase()==="Ṿ"&&(y=y.replace(/ẞ/g,"ß")),y.toLowerCase().toUpperCase()}f.lib={},f.lib.mdurl=Te(),f.lib.ucmicro=DB(),f.assign=e,f.isString=o,f.has=n,f.unescapeMd=C,f.unescapeAll=b,f.isValidEntityCode=s,f.fromCodePoint=i,f.escapeHtml=k,f.arrayReplaceAt=c,f.isSpace=A,f.isWhiteSpace=D,f.isMdAsciiPunct=S,f.isPunctChar=w,f.escapeRE=E,f.normalizeReference=z}(K)),K}var Z={},ln,wt;function EB(){return wt||(wt=1,ln=function(r,o,t){var n,e,c,s,i=-1,u=r.posMax,l=r.pos;for(r.pos=o+1,n=1;r.pos32))return i;if(e===41){if(c===0)break;c--}s++}return t===s||c!==0||(i.str=f(o.slice(t,s)),i.pos=s,i.ok=!0),i},fn}var hn,St;function FB(){if(St)return hn;St=1;var f=R().unescapeAll;return hn=function(o,t,n){var e,c,s=0,i=t,u={ok:!1,pos:0,lines:0,str:""};if(i>=n||(c=o.charCodeAt(i),c!==34&&c!==39&&c!==40))return u;for(i++,c===40&&(c=41);i"+o(l.content)+""},t.code_block=function(e,c,s,i,u){var l=e[c];return""+o(e[c].content)+` `},t.fence=function(e,c,s,i,u){var l=e[c],a=l.info?r(l.info).trim():"",m="",h="",g,C,b,_,x;return a&&(b=a.split(/(\s+)/g),m=b[0],h=b.slice(2).join("")),s.highlight?g=s.highlight(l.content,m,h)||o(l.content):g=o(l.content),g.indexOf("[t.image?(n(),a("img",{key:0,src:t.image},null,8,v)):C("",!0),o("h4",null,h(t.title),1),o("p",{class:"newsSummary",innerHTML:t.summary},null,8,F),o("p",L,h(`${d.updatedTimestamp}, ${t.source}`),1)]),_:1},8,["onClick"])}const B=f(M,[["render",x],["__scopeId","data-v-ad954c34"]]),D={components:{Loader:k,FullShelf:T,NewsItemBig:B},name:"News",data(){return{news:[]}},mounted(){fetch("/api/news/articles").then(e=>e.json()).then(e=>{this.news.length=0;for(const s of e){const t=this.news.findIndex(i=>i.source==s.source);t>=0?this.news[t].items.push(s):this.news.push({source:s.source,items:[s]})}})}},U={class:"padding-20"},I={class:"news"},b={key:0,class:"fillPage"};function H(e,s,t,i,u,d){const l=c("Loader"),y=c("news-item-big"),S=c("full-shelf");return n(),a("div",U,[o("div",I,[s[0]||(s[0]=o("h1",null,"News",-1)),u.news.length?C("",!0):(n(),a("div",b,[N(l)])),(n(!0),a(p,null,g(u.news,m=>(n(),_(S,{key:m.source,heading:m.source,class:"mt-10"},{default:w(()=>[(n(!0),a(p,null,g(m.items,r=>(n(),_(y,{key:r.url,href:r.link,image:r.image,source:r.source,summary:r.summary,title:r.title,updated:r.updated},null,8,["href","image","source","summary","title","updated"]))),128))]),_:2},1032,["heading"]))),128))])])}const V=f(D,[["render",H],["__scopeId","data-v-a520cb40"]]);export{V as default}; +import{F as T}from"./FullShelf-DGzkcAo_.js";import{_ as f,C as $,f as c,o as n,i as _,w,c as a,d as C,a as o,t as h,L as k,g as N,F as p,h as g}from"./index-NeVG6T13.js";const M={name:"NewsItemBig",components:{Card:$},methods:{redirect(){this.$router.push(this.href)}},computed:{updatedTimestamp(){const e=new Date(this.updated),s=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return`${s[e.getUTCDay()]} ${e.getUTCDate()} ${t[e.getUTCMonth()]} ${e.getUTCFullYear()} ${e.getUTCHours()}.${e.getUTCMinutes()} GMT`}},props:{image:String,title:String,summary:String,href:String,updated:String,source:String}},v=["src"],F=["innerHTML"],L={class:"small"};function x(e,s,t,i,u,d){const l=c("Card");return n(),_(l,{class:"p-4 col-span-2 cursor-pointer","with-hover":"",onClick:d.redirect},{default:w(()=>[t.image?(n(),a("img",{key:0,src:t.image},null,8,v)):C("",!0),o("h4",null,h(t.title),1),o("p",{class:"newsSummary",innerHTML:t.summary},null,8,F),o("p",L,h(`${d.updatedTimestamp}, ${t.source}`),1)]),_:1},8,["onClick"])}const B=f(M,[["render",x],["__scopeId","data-v-ad954c34"]]),D={components:{Loader:k,FullShelf:T,NewsItemBig:B},name:"News",data(){return{news:[]}},mounted(){fetch("/api/news/articles").then(e=>e.json()).then(e=>{this.news.length=0;for(const s of e){const t=this.news.findIndex(i=>i.source==s.source);t>=0?this.news[t].items.push(s):this.news.push({source:s.source,items:[s]})}})}},U={class:"padding-20"},I={class:"news"},b={key:0,class:"fillPage"};function H(e,s,t,i,u,d){const l=c("Loader"),y=c("news-item-big"),S=c("full-shelf");return n(),a("div",U,[o("div",I,[s[0]||(s[0]=o("h1",null,"News",-1)),u.news.length?C("",!0):(n(),a("div",b,[N(l)])),(n(!0),a(p,null,g(u.news,m=>(n(),_(S,{key:m.source,heading:m.source,class:"mt-10"},{default:w(()=>[(n(!0),a(p,null,g(m.items,r=>(n(),_(y,{key:r.url,href:r.link,image:r.image,source:r.source,summary:r.summary,title:r.title,updated:r.updated},null,8,["href","image","source","summary","title","updated"]))),128))]),_:2},1032,["heading"]))),128))])])}const V=f(D,[["render",H],["__scopeId","data-v-a520cb40"]]);export{V as default}; diff --git a/src/ui/dist/assets/News-dyEReFDN.js.gz b/src/ui/dist/assets/News-dyEReFDN.js.gz new file mode 100644 index 00000000..ae014443 Binary files /dev/null and b/src/ui/dist/assets/News-dyEReFDN.js.gz differ diff --git a/src/ui/dist/assets/NewsArticle-BCsM1dbj.js.gz b/src/ui/dist/assets/NewsArticle-BCsM1dbj.js.gz deleted file mode 100644 index a299088d..00000000 Binary files a/src/ui/dist/assets/NewsArticle-BCsM1dbj.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/NewsArticle-BCsM1dbj.js b/src/ui/dist/assets/NewsArticle-ttqbaNaN.js similarity index 94% rename from src/ui/dist/assets/NewsArticle-BCsM1dbj.js rename to src/ui/dist/assets/NewsArticle-ttqbaNaN.js index 4c59de0c..85182229 100644 --- a/src/ui/dist/assets/NewsArticle-BCsM1dbj.js +++ b/src/ui/dist/assets/NewsArticle-ttqbaNaN.js @@ -1 +1 @@ -import{_,L as m,i as d,c,a as i,t as o,b as y,d as p,K as w,f as u,o as n}from"./index-CTxjSbok.js";import{E as k}from"./Error-CQEMgMn-.js";const L={name:"NewsArticle",components:{Loader:m,Error:k},data(){return{error:"",article:{},fullWidth:!1}},methods:{updateData(){fetch(`/api/news/articles/${this.$route.params.url}`).then(async s=>{if(s.status==404){this.error="This wouldn't have happened if you had clicked on the links we provided!
ヽ(ಠ_ಠ)ノ",setTimeout(this.updateData,1e3);return}if(s.status==400){window.open(await s.text()),this.$router.push("/news");return}if(s.status==200){if(this.article=await s.json(),this.article.headline==="N/A"){window.open(this.article.href),this.$router.push("/news");return}let t=this.article.body.split(" ").filter(e=>e.includes('href="/'));t=t.map(e=>e.split('href="')[1].split('"')[0]);const h=this.article.href.split("/")[2],l=t.map(e=>"https://"+h+e);for(const e in t){let a=l[e];fetch("/api/news/articles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:l[e]})}).then(async r=>{r.status==200?a=await r.text():console.error(await r.text()),this.article.body=this.article.body.replaceAll(t[e],a)})}return}this.error=s.statusText})}},mounted(){this.updateData()}},b={key:2,class:"padding-20 newsArticle"},T=["innerHTML"],g={class:"leading-tight headline"},x=["innerHTML"],v={key:0,class:"date"},N=["href"],H={key:1,class:"my-4"},M=["innerHTML"];function W(s,t,h,l,e,a){const r=u("Error"),f=u("Loader");return e.error?(n(),d(r,{key:0,msg:e.error},null,8,["msg"])):e.article.headline?(n(),c("div",b,[i("span",{class:"toggleWidth material-icons-round",onClick:t[0]||(t[0]=A=>e.fullWidth=!e.fullWidth)},o(e.fullWidth?"close_fullscreen":"open_in_full"),1),i("div",{class:w([{slim:!e.fullWidth},"wrapper"])},[i("h6",{class:"accentLink topic",innerHTML:e.article.topic},null,8,T),i("h1",g,o(e.article.headline),1),i("h4",{class:"standfirst",innerHTML:e.article.standfirst},null,8,x),e.article.date?(n(),c("h6",v,[y(o(e.article.date)+", ",1),i("a",{href:e.article.href},o(e.article.href),9,N)])):p("",!0),e.article.body?(n(),c("hr",H)):p("",!0),i("div",{class:"body leading-relaxed text-md",innerHTML:e.article.body},null,8,M)],2)])):(n(),d(f,{key:1}))}const B=_(L,[["render",W],["__scopeId","data-v-32bc12c0"]]);export{B as default}; +import{_,L as m,i as d,c,a as i,t as o,b as y,d as p,K as w,f as u,o as n}from"./index-NeVG6T13.js";import{E as k}from"./Error-B3yvsR5K.js";const L={name:"NewsArticle",components:{Loader:m,Error:k},data(){return{error:"",article:{},fullWidth:!1}},methods:{updateData(){fetch(`/api/news/articles/${this.$route.params.url}`).then(async s=>{if(s.status==404){this.error="This wouldn't have happened if you had clicked on the links we provided!
ヽ(ಠ_ಠ)ノ",setTimeout(this.updateData,1e3);return}if(s.status==400){window.open(await s.text()),this.$router.push("/news");return}if(s.status==200){if(this.article=await s.json(),this.article.headline==="N/A"){window.open(this.article.href),this.$router.push("/news");return}let t=this.article.body.split(" ").filter(e=>e.includes('href="/'));t=t.map(e=>e.split('href="')[1].split('"')[0]);const h=this.article.href.split("/")[2],l=t.map(e=>"https://"+h+e);for(const e in t){let a=l[e];fetch("/api/news/articles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:l[e]})}).then(async r=>{r.status==200?a=await r.text():console.error(await r.text()),this.article.body=this.article.body.replaceAll(t[e],a)})}return}this.error=s.statusText})}},mounted(){this.updateData()}},b={key:2,class:"padding-20 newsArticle"},T=["innerHTML"],g={class:"leading-tight headline"},x=["innerHTML"],v={key:0,class:"date"},N=["href"],H={key:1,class:"my-4"},M=["innerHTML"];function W(s,t,h,l,e,a){const r=u("Error"),f=u("Loader");return e.error?(n(),d(r,{key:0,msg:e.error},null,8,["msg"])):e.article.headline?(n(),c("div",b,[i("span",{class:"toggleWidth material-icons-round",onClick:t[0]||(t[0]=A=>e.fullWidth=!e.fullWidth)},o(e.fullWidth?"close_fullscreen":"open_in_full"),1),i("div",{class:w([{slim:!e.fullWidth},"wrapper"])},[i("h6",{class:"accentLink topic",innerHTML:e.article.topic},null,8,T),i("h1",g,o(e.article.headline),1),i("h4",{class:"standfirst",innerHTML:e.article.standfirst},null,8,x),e.article.date?(n(),c("h6",v,[y(o(e.article.date)+", ",1),i("a",{href:e.article.href},o(e.article.href),9,N)])):p("",!0),e.article.body?(n(),c("hr",H)):p("",!0),i("div",{class:"body leading-relaxed text-md",innerHTML:e.article.body},null,8,M)],2)])):(n(),d(f,{key:1}))}const B=_(L,[["render",W],["__scopeId","data-v-32bc12c0"]]);export{B as default}; diff --git a/src/ui/dist/assets/NewsArticle-ttqbaNaN.js.gz b/src/ui/dist/assets/NewsArticle-ttqbaNaN.js.gz new file mode 100644 index 00000000..28c64ac2 Binary files /dev/null and b/src/ui/dist/assets/NewsArticle-ttqbaNaN.js.gz differ diff --git a/src/ui/dist/assets/Normal-BavQeIJj.js b/src/ui/dist/assets/Normal-BavQeIJj.js new file mode 100644 index 00000000..78870215 --- /dev/null +++ b/src/ui/dist/assets/Normal-BavQeIJj.js @@ -0,0 +1 @@ +import{e as i,z as n,j as p,A as m,o as c,i as l}from"./index-NeVG6T13.js";import{T as d}from"./Template-DPpn6WCj.js";import"./PlaylistEntry-CFWDnKVM.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-4SxXvN8G.js";import"./FactCard-DRGvrYjY.js";import"./gistClient-DE35pGas.js";import"./Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js";const P=i({__name:"Normal",setup(u){const e=n(),r=p(),t=m(()=>e.params.id),s=async(a,o)=>{await fetch(`/api/playlists/${t.value}/tracks`,{method:"PUT",body:JSON.stringify({songOldIndex:a,songNewIndex:o})}),await r.fetchPlaylists()};return(a,o)=>(c(),l(d,{id:t.value,onRearrange:s},null,8,["id"]))}});export{P as default}; diff --git a/src/ui/dist/assets/Normal-FL2a59AI.js b/src/ui/dist/assets/Normal-FL2a59AI.js deleted file mode 100644 index 937cc5d4..00000000 --- a/src/ui/dist/assets/Normal-FL2a59AI.js +++ /dev/null @@ -1 +0,0 @@ -import{e as i,z as n,j as p,A as m,o as c,i as l}from"./index-CTxjSbok.js";import{T as d}from"./Template-B3y8aqn2.js";import"./PlaylistEntry-DrzB4VXk.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-pw-5IPtN.js";import"./FactCard-CcCpkYQW.js";import"./gistClient-DbxNDpvo.js";import"./Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js";const P=i({__name:"Normal",setup(u){const e=n(),r=p(),t=m(()=>e.params.id),s=async(a,o)=>{await fetch(`/api/playlists/${t.value}/tracks`,{method:"PUT",body:JSON.stringify({songOldIndex:a,songNewIndex:o})}),await r.fetchPlaylists()};return(a,o)=>(c(),l(d,{id:t.value,onRearrange:s},null,8,["id"]))}});export{P as default}; diff --git a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js.gz b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js.gz deleted file mode 100644 index a20667a7..00000000 Binary files a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js similarity index 86% rename from src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js rename to src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js index 5d75b41a..e29d568b 100644 --- a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js +++ b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js @@ -1 +1 @@ -import{e as b,l as r,v as x,B as n,o as d,c as B,g as c,P as q,w as C,i as P,u as p,J as w,d as Q}from"./index-CTxjSbok.js";import{P as I}from"./PlaylistEntry-DrzB4VXk.js";import{d as y}from"./vuedraggable.umd-pw-5IPtN.js";const _=b({__name:"Playlist",props:{playlist:{type:Object,required:!1},useQueue:{type:Boolean,required:!1,default:!1},draggable:{type:Boolean,required:!1,default:!1}},emits:["rearrange"],setup(u,{expose:f,emit:m}){const i=r(null),s=u,t=r(-1),o=r([]);x(()=>{o.value=s.useQueue?s.playlist.queue:s.playlist.songs}),n(()=>s.playlist,a=>{o.value=s.useQueue?a.queue:a.songs}),n(()=>s.useQueue,()=>{o.value=s.useQueue?s.playlist.queue:s.playlist.songs}),f({scrollToSong:a=>{var l;const e=(l=document.getElementById(`bplayer-entry-${a}`))==null?void 0:l.offsetTop;e>=150&&(i.value.scrollTop=e-150)}});const g=m,v=a=>{const e=a.moved;e&&g("rearrange",e.oldIndex,e.newIndex)};return(a,e)=>u.playlist?(d(),B("div",{key:0,ref_key:"playlistScroll",ref:i,class:"playlist"},[c(q),c(p(y),{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=l=>o.value=l),disabled:!p(y),"item-key":"id",onChange:v,onDragover:e[1]||(e[1]=w(()=>{},["stop"]))},{item:C(({element:l,index:k})=>[(d(),P(I,{id:"bplayer-entry-"+l.id,key:l.source,index:k,selected:t.value==l.id,song:l,"with-cover":"",onClick:S=>t.value==l.id?t.value=-1:t.value=l.id},null,8,["id","index","selected","song","onClick"]))]),_:1},8,["modelValue","disabled"])],512)):Q("",!0)}});export{_}; +import{e as b,l as r,v as x,B as n,o as d,c as B,g as c,P as q,w as C,i as P,u as p,J as w,d as Q}from"./index-NeVG6T13.js";import{P as I}from"./PlaylistEntry-CFWDnKVM.js";import{d as y}from"./vuedraggable.umd-4SxXvN8G.js";const _=b({__name:"Playlist",props:{playlist:{type:Object,required:!1},useQueue:{type:Boolean,required:!1,default:!1},draggable:{type:Boolean,required:!1,default:!1}},emits:["rearrange"],setup(u,{expose:f,emit:m}){const i=r(null),s=u,t=r(-1),o=r([]);x(()=>{o.value=s.useQueue?s.playlist.queue:s.playlist.songs}),n(()=>s.playlist,a=>{o.value=s.useQueue?a.queue:a.songs}),n(()=>s.useQueue,()=>{o.value=s.useQueue?s.playlist.queue:s.playlist.songs}),f({scrollToSong:a=>{var l;const e=(l=document.getElementById(`bplayer-entry-${a}`))==null?void 0:l.offsetTop;e>=150&&(i.value.scrollTop=e-150)}});const g=m,v=a=>{const e=a.moved;e&&g("rearrange",e.oldIndex,e.newIndex)};return(a,e)=>u.playlist?(d(),B("div",{key:0,ref_key:"playlistScroll",ref:i,class:"playlist"},[c(q),c(p(y),{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=l=>o.value=l),disabled:!p(y),"item-key":"id",onChange:v,onDragover:e[1]||(e[1]=w(()=>{},["stop"]))},{item:C(({element:l,index:k})=>[(d(),P(I,{id:"bplayer-entry-"+l.id,key:l.source,index:k,selected:t.value==l.id,song:l,"with-cover":"",onClick:S=>t.value==l.id?t.value=-1:t.value=l.id},null,8,["id","index","selected","song","onClick"]))]),_:1},8,["modelValue","disabled"])],512)):Q("",!0)}});export{_}; diff --git a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js.gz b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js.gz new file mode 100644 index 00000000..4ff134f1 Binary files /dev/null and b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js.gz differ diff --git a/src/ui/dist/assets/PlaylistCard-wbTFFeyA.js b/src/ui/dist/assets/PlaylistCard-BpEr8q46.js similarity index 97% rename from src/ui/dist/assets/PlaylistCard-wbTFFeyA.js rename to src/ui/dist/assets/PlaylistCard-BpEr8q46.js index 40228c87..96e370bf 100644 --- a/src/ui/dist/assets/PlaylistCard-wbTFFeyA.js +++ b/src/ui/dist/assets/PlaylistCard-BpEr8q46.js @@ -1 +1 @@ -import{e as b,j as A,l as y,o as f,i as w,w as h,g as d,u as I,ap as j,aL as O,q as $,a as u,aM as B,a8 as D,aa as q,s as N,a5 as x,A as E,f as M,d as g,E as T,J as V,t as v,c as F,C as J,_ as L}from"./index-CTxjSbok.js";import{p as C}from"./playerInPicture-Dfp9IAsf.js";const W=b({__name:"ImportSpotifyPlaylist",props:{playlist:{type:Object,required:!0}},setup(t,{expose:o}){const i=A(),e=t,n=y([{name:"playlist",type:"dropdown",required:!0,value:null,options:i.playlistsAsDropdown}]),r=y(null),p=y(null),s=y([]),c=async()=>{if(r.value.load(),s.value.length==0){const l=e.playlist.id==="liked"?"/api/spotify/tracks":`/api/spotify/playlists/${e.playlist.id}`,a=await fetch(l);s.value=await a.json()}r.value.show()},m=()=>{C("Spotify Playlist",e.playlist.name,e.playlist.href)},P=async l=>{if(l==="new"){const a=await N("classic",e.playlist.name,e.playlist.description,e.playlist.cover);return n.value[0].options=i.playlistsAsDropdown,n.value[0].value=a,a}return l},k=async(l,a=null)=>{s.value[l].added||(a??(a=p.value.toObject().playlist),a=await P(a),await q(a,s.value[l]),s.value[l].added=!0)},_=async()=>{let l=p.value.toObject().playlist;l=await P(l),s.value.forEach((a,S)=>{k(S,l)})};return o({show:c}),(l,a)=>(f(),w(D,{ref_key:"modal",ref:r,submit:{label:"Add All",icon:"add"},name:"Import Playlist",onClose:a[0]||(a[0]=S=>l.$emit("close")),onSubmit:_},{default:h(()=>[d(O,{cover:t.playlist.cover,icons:[{name:"share",onClick:()=>I(j)(t.playlist.href)},{name:"play_arrow",onClick:m}],title:t.playlist.name},null,8,["cover","icons","title"]),d($,{ref_key:"form",ref:p,options:n.value},null,8,["options"]),a[1]||(a[1]=u("br",null,null,-1)),d(B,{songs:s.value,onAdd:k},null,8,["songs"])]),_:1},512))}}),z={class:"relative"},G={class:"title"},H={key:0,class:"material-symbols-rounded"},K=b({__name:"PlaylistCard",props:{playlist:{type:Object,required:!0},isSpotify:{type:Boolean,default:!1}},setup(t){const o=t,i=x(),e=y(),n=E(()=>i.playlistPlayOrPauseIcon(o.playlist.id)),r=()=>{if(o.isSpotify){C(o.playlist.name,"Spotify",o.playlist.href);return}i.playlistId==o.playlist.id?i.playPause():i.loadPlaylist(o.playlist.id)},p=s=>{var c;console.log(o.isSpotify),o.isSpotify&&(s.preventDefault(),s.stopPropagation(),(c=e.value)==null||c.show(),console.log("showing",e.value))};return(s,c)=>{const m=M("router-link");return f(),w(m,{to:t.playlist.href,class:"no-underline"},{default:h(()=>[t.isSpotify?(f(),w(W,{key:0,ref_key:"importSpotify",ref:e,playlist:t.playlist},null,8,["playlist"])):g("",!0),d(J,{class:"home-playlist drop-shadow-md","with-hover":"",onClick:p},{default:h(()=>[u("div",z,[d(T,{src:t.playlist.cover,type:"playlist",name:t.playlist.name},null,8,["src","name"]),u("span",{class:"material-symbols-rounded ms-fill play",onClick:V(r,["stop","prevent"])},v(n.value),1)]),u("div",G,[t.playlist.type!="classic"?(f(),F("span",H,v(t.playlist.type=="smart"?"neurology":"bolt"),1)):g("",!0),u("h4",null,v(t.playlist.name),1)])]),_:1})]),_:1},8,["to"])}}}),U=L(K,[["__scopeId","data-v-d1d701cc"]]);export{U as P}; +import{e as b,j as A,l as y,o as f,i as w,w as h,g as d,u as I,ap as j,aL as O,q as $,a as u,aM as B,a8 as D,aa as q,s as N,a5 as x,A as E,f as M,d as g,E as T,J as V,t as v,c as F,C as J,_ as L}from"./index-NeVG6T13.js";import{p as C}from"./playerInPicture-Dfp9IAsf.js";const W=b({__name:"ImportSpotifyPlaylist",props:{playlist:{type:Object,required:!0}},setup(t,{expose:o}){const i=A(),e=t,n=y([{name:"playlist",type:"dropdown",required:!0,value:null,options:i.playlistsAsDropdown}]),r=y(null),p=y(null),s=y([]),c=async()=>{if(r.value.load(),s.value.length==0){const l=e.playlist.id==="liked"?"/api/spotify/tracks":`/api/spotify/playlists/${e.playlist.id}`,a=await fetch(l);s.value=await a.json()}r.value.show()},m=()=>{C("Spotify Playlist",e.playlist.name,e.playlist.href)},P=async l=>{if(l==="new"){const a=await N("classic",e.playlist.name,e.playlist.description,e.playlist.cover);return n.value[0].options=i.playlistsAsDropdown,n.value[0].value=a,a}return l},k=async(l,a=null)=>{s.value[l].added||(a??(a=p.value.toObject().playlist),a=await P(a),await q(a,s.value[l]),s.value[l].added=!0)},_=async()=>{let l=p.value.toObject().playlist;l=await P(l),s.value.forEach((a,S)=>{k(S,l)})};return o({show:c}),(l,a)=>(f(),w(D,{ref_key:"modal",ref:r,submit:{label:"Add All",icon:"add"},name:"Import Playlist",onClose:a[0]||(a[0]=S=>l.$emit("close")),onSubmit:_},{default:h(()=>[d(O,{cover:t.playlist.cover,icons:[{name:"share",onClick:()=>I(j)(t.playlist.href)},{name:"play_arrow",onClick:m}],title:t.playlist.name},null,8,["cover","icons","title"]),d($,{ref_key:"form",ref:p,options:n.value},null,8,["options"]),a[1]||(a[1]=u("br",null,null,-1)),d(B,{songs:s.value,onAdd:k},null,8,["songs"])]),_:1},512))}}),z={class:"relative"},G={class:"title"},H={key:0,class:"material-symbols-rounded"},K=b({__name:"PlaylistCard",props:{playlist:{type:Object,required:!0},isSpotify:{type:Boolean,default:!1}},setup(t){const o=t,i=x(),e=y(),n=E(()=>i.playlistPlayOrPauseIcon(o.playlist.id)),r=()=>{if(o.isSpotify){C(o.playlist.name,"Spotify",o.playlist.href);return}i.playlistId==o.playlist.id?i.playPause():i.loadPlaylist(o.playlist.id)},p=s=>{var c;console.log(o.isSpotify),o.isSpotify&&(s.preventDefault(),s.stopPropagation(),(c=e.value)==null||c.show(),console.log("showing",e.value))};return(s,c)=>{const m=M("router-link");return f(),w(m,{to:t.playlist.href,class:"no-underline"},{default:h(()=>[t.isSpotify?(f(),w(W,{key:0,ref_key:"importSpotify",ref:e,playlist:t.playlist},null,8,["playlist"])):g("",!0),d(J,{class:"home-playlist drop-shadow-md","with-hover":"",onClick:p},{default:h(()=>[u("div",z,[d(T,{src:t.playlist.cover,type:"playlist",name:t.playlist.name},null,8,["src","name"]),u("span",{class:"material-symbols-rounded ms-fill play",onClick:V(r,["stop","prevent"])},v(n.value),1)]),u("div",G,[t.playlist.type!="classic"?(f(),F("span",H,v(t.playlist.type=="smart"?"neurology":"bolt"),1)):g("",!0),u("h4",null,v(t.playlist.name),1)])]),_:1})]),_:1},8,["to"])}}}),U=L(K,[["__scopeId","data-v-d1d701cc"]]);export{U as P}; diff --git a/src/ui/dist/assets/PlaylistCard-BpEr8q46.js.gz b/src/ui/dist/assets/PlaylistCard-BpEr8q46.js.gz new file mode 100644 index 00000000..58420f12 Binary files /dev/null and b/src/ui/dist/assets/PlaylistCard-BpEr8q46.js.gz differ diff --git a/src/ui/dist/assets/PlaylistCard-wbTFFeyA.js.gz b/src/ui/dist/assets/PlaylistCard-wbTFFeyA.js.gz deleted file mode 100644 index 68ee7edb..00000000 Binary files a/src/ui/dist/assets/PlaylistCard-wbTFFeyA.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/PlaylistEntry-DrzB4VXk.js b/src/ui/dist/assets/PlaylistEntry-CFWDnKVM.js similarity index 98% rename from src/ui/dist/assets/PlaylistEntry-DrzB4VXk.js rename to src/ui/dist/assets/PlaylistEntry-CFWDnKVM.js index f0c2205a..92913230 100644 --- a/src/ui/dist/assets/PlaylistEntry-DrzB4VXk.js +++ b/src/ui/dist/assets/PlaylistEntry-CFWDnKVM.js @@ -1 +1 @@ -import{e as H,j as X,A as S,l as F,f as k,ab as G,a1 as J,o as r,c as g,r as Q,g as s,w as n,a as d,b as u,F as L,h as V,i as I,t as P,u as p,b8 as Z,b9 as tt,ba as et,d as B,ai as st,bb as ot,aa as nt,N as at,s as lt,aC as it,bc as dt,ad as ut,aF as rt,a5 as ct,bd as mt,K as j,E as ft,M as _,y as vt,H as yt,be as gt,ah as pt,bf as bt,_ as wt}from"./index-CTxjSbok.js";import{_ as xt}from"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import{p as kt}from"./playerInPicture-Dfp9IAsf.js";const St=H({__name:"SongContext",props:{song:{type:Object,required:!0},playlistId:{type:String,required:!1,default:""}},emits:["update","edit"],setup(o,{expose:E,emit:O}){const i=X(),C=S(()=>i.playlists.filter(a=>a.type==="classic")),e=o,b=O,f=()=>{kt(e.song.artist,e.song.title,e.song.source)},A=S(()=>{var a;return((a=i.playlists.find(t=>t.id===e.playlistId))==null?void 0:a.type)!=="classic"}),v=async a=>{var t,l;await nt(a,e.song),at.addSuccess(e.song.title,`Added to ${(t=C.value.find(y=>y.id==a))==null?void 0:t.name}`,3e3,void 0,(l=C.value.find(y=>y.id==a))==null?void 0:l.href),b("update")},M=async()=>{const a=await lt("classic",e.song.title,e.song.artist,e.song.cover);await v(a),b("update")},N=async()=>{await it(e.playlistId,e.song.id),b("update")},D=F(null),w=F(null),T=()=>{w.value.visible?h():m()},h=()=>{w.value.hide()},m=()=>{const a=D.value.getBoundingClientRect(),t={top:a.height+a.top+window.scrollY,left:a.width+a.left+window.scrollX};w.value.show(t)};E({show:m,toggle:T,hide:h});const $=S(()=>({Soundcloud:`https://soundcloud.com/search?q=${e.song.artist} ${e.song.title}`,Audius:`https://audius.co/search/${e.song.artist} ${e.song.title}`,"Youtube Music":`https://music.youtube.com/search?q=${e.song.artist} ${e.song.title}`,Spotify:`https://open.spotify.com/search/${e.song.artist} ${e.song.title}`})),q=()=>{b("edit")},U=a=>{window.open($.value[a]),q()},R=()=>{const a=dt(e.song);ut(a,`${e.song.artist} - ${e.song.title}`)};return(a,t)=>{const l=k("v-contextmenu-item"),y=k("v-contextmenu-submenu"),x=k("v-contextmenu-divider"),Y=k("v-context-menu-divider"),z=k("v-contextmenu"),K=G("contextmenu");return J((r(),g("div",{ref_key:"box",ref:D},[Q(a.$slots,"default"),s(z,{ref_key:"contextmenu",ref:w},{default:n(()=>[s(l,{onClick:f},{default:n(()=>t[6]||(t[6]=[d("span",{class:"material-symbols-rounded"},"preview",-1),u(" Preview ")])),_:1}),s(l,null,{default:n(()=>[t[7]||(t[7]=d("span",{class:"material-symbols-rounded"},"search",-1)),s(y,{title:"Find source"},{default:n(()=>[(r(!0),g(L,null,V(Object.keys($.value),c=>(r(),I(l,{key:c,onClick:W=>U(c)},{default:n(()=>[u(P(c),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),s(x),s(l,null,{default:n(()=>[t[11]||(t[11]=d("span",{class:"material-symbols-rounded"},"queue_music",-1)),s(y,{title:"Add to queue"},{default:n(()=>[s(l,{onClick:t[0]||(t[0]=()=>p(Z)(e.song.id))},{default:n(()=>t[8]||(t[8]=[d("span",{class:"material-symbols-rounded"}," play_arrow ",-1),u(" Play Now ")])),_:1}),s(l,{onClick:t[1]||(t[1]=()=>p(tt)(e.song.id))},{default:n(()=>t[9]||(t[9]=[d("span",{class:"material-symbols-rounded"}," add_to_queue ",-1),u(" Play Next ")])),_:1}),s(l,{onClick:t[2]||(t[2]=()=>p(et)(e.song.id))},{default:n(()=>t[10]||(t[10]=[d("span",{class:"material-symbols-rounded"}," queue_play_next ",-1),u(" Play Last ")])),_:1})]),_:1})]),_:1}),s(x),s(Y),A.value?B("",!0):(r(),I(l,{key:0,onClick:N},{default:n(()=>t[12]||(t[12]=[d("span",{class:"material-symbols-rounded"},"delete",-1),u(" Remove from this playlist ")])),_:1})),s(l,null,{default:n(()=>[t[14]||(t[14]=d("span",{class:"material-symbols-rounded"},"playlist_add",-1)),s(y,{title:"Add to playlist"},{default:n(()=>[s(l,{onClick:M},{default:n(()=>t[13]||(t[13]=[u(" Add to new playlist ")])),_:1}),s(x),(r(!0),g(L,null,V(C.value,c=>(r(),I(l,{key:c.id,onClick:W=>v(c.id)},{default:n(()=>[u(P(c.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),s(x),s(l,{onClick:q},{default:n(()=>t[15]||(t[15]=[d("span",{class:"material-symbols-rounded"},"edit",-1),u(" Edit ")])),_:1}),s(x),s(l,{onClick:t[3]||(t[3]=c=>p(st)(o.song.id))},{default:n(()=>t[16]||(t[16]=[d("span",{class:"material-symbols-rounded"},"file_download",-1),u(" Download ")])),_:1}),s(l,{onClick:t[4]||(t[4]=c=>p(ot)(o.song.id))},{default:n(()=>t[17]||(t[17]=[d("span",{class:"material-symbols-rounded"},"replay",-1),u(" Uncache ")])),_:1}),s(x),s(l,null,{default:n(()=>[t[19]||(t[19]=d("span",{class:"material-symbols-rounded"},"share",-1)),s(y,{title:"Export..."},{default:n(()=>[s(l,{onClick:t[5]||(t[5]=c=>R())},{default:n(()=>t[18]||(t[18]=[u(" to file ")])),_:1})]),_:1})]),_:1})]),_:1},512)])),[[K,void 0,"contextmenu"]])}}}),Ct={key:0,class:"index text-right downloading"},$t={key:2,class:"cover"},qt={class:"artist-title"},Pt={class:"title"},At={class:"artist"},Mt={key:3,class:"album"},Nt={class:"duration text-center"},Dt=H({__name:"PlaylistEntry",props:{song:{type:Object,required:!0},index:{type:Number,required:!0},withCover:{type:Boolean,required:!1,default:!1},withAlbum:{type:Boolean,required:!1,default:!1},withMore:{type:Boolean,required:!1,default:!1},selected:{type:Boolean,required:!1,default:!1},playlistId:{type:String,required:!1,default:null},artist:{type:String,required:!1,default:null},album:{type:String,required:!1,default:null}},emits:["update"],setup(o,{emit:E}){const O=rt(),i=o,C=E,e=ct(),b=S(()=>i.song.id==e.song.id),f=F(!1),A=()=>{i.song.favourite=!i.song.favourite,bt(i.song.id,i.song.favourite)},v=S(()=>i.playlistId==null?e.playlist.id:i.playlistId),M=async()=>{if(v.value=="track"){e.loadPlaylist("track",i.song.id);return}if(v.value=="artist"){await e.loadPlaylist("artist",i.artist),e.loadSong(null,i.index);return}if(v.value=="album"){await e.loadPlaylist("album",i.album),e.loadSong(null,i.index);return}e.loadSong(v.value,i.index)},N=F(null),D=()=>{N.value.show()},w=()=>{C("update")},T=S(()=>O.isSongDownloading(i.song.id));return(h,m)=>{const $=k("router-link");return r(),I(St,{ref:"ctxMenu",liked:o.song.favourite,playlistId:v.value,song:o.song,onEdit:D,onLike:A,onUpdate:w},{default:n(()=>[s(xt,{ref_key:"updatePopup",ref:N,song:o.song,onUpdate:m[0]||(m[0]=q=>h.$emit("update"))},null,8,["song"]),d("div",{class:j([{playing:b.value,selected:o.selected,hovering:f.value,withCover:o.withCover,withAlbum:o.withAlbum,withMore:o.withMore},"playlist-entry"]),onDblclick:M,onMouseenter:m[1]||(m[1]=q=>f.value=!0),onMouseleave:m[2]||(m[2]=q=>f.value=!1)},[T.value?(r(),g("div",Ct,[s(mt)])):(r(),g("div",{key:1,class:j([{"material-symbols-rounded":f.value},"index text-right"]),onClick:M},P(f.value?"play_arrow":o.index+1),3)),o.withCover?(r(),g("div",$t,[s(ft,{src:o.song.cover,type:"track"},null,8,["src"])])):B("",!0),d("div",qt,[d("span",Pt,[s($,{to:`/track/${p(vt)(o.song.id)}`,class:"linkOnHover"},{default:n(()=>[s(_,{text:o.song.title},null,8,["text"])]),_:1},8,["to"])]),d("span",At,[s(yt,{artist:o.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),o.withAlbum&&!p(gt)?(r(),g("div",Mt,[s($,{to:o.song.album.href,class:"linkOnHover"},{default:n(()=>[s(_,{text:o.song.album.name},null,8,["text"])]),_:1},8,["to"])])):B("",!0),o.selected||f.value||o.song.favourite?(r(),g("div",{key:4,class:j([{favourite:o.song.favourite},"favourite-icon icon text-right material-symbols-rounded"]),onClick:A},P(o.song.favourite?"favorite":"heart_plus"),3)):B("",!0),d("div",Nt,P(p(pt)(o.song.duration)),1)],34)]),_:1},8,["liked","playlistId","song"])}}}),Ft=wt(Dt,[["__scopeId","data-v-67cfb148"]]);export{Ft as P}; +import{e as H,j as X,A as S,l as F,f as k,ab as G,a1 as J,o as r,c as g,r as Q,g as s,w as n,a as d,b as u,F as L,h as V,i as I,t as P,u as p,b8 as Z,b9 as tt,ba as et,d as B,ai as st,bb as ot,aa as nt,N as at,s as lt,aC as it,bc as dt,ad as ut,aF as rt,a5 as ct,bd as mt,K as j,E as ft,M as _,y as vt,H as yt,be as gt,ah as pt,bf as bt,_ as wt}from"./index-NeVG6T13.js";import{_ as xt}from"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import{p as kt}from"./playerInPicture-Dfp9IAsf.js";const St=H({__name:"SongContext",props:{song:{type:Object,required:!0},playlistId:{type:String,required:!1,default:""}},emits:["update","edit"],setup(o,{expose:E,emit:O}){const i=X(),C=S(()=>i.playlists.filter(a=>a.type==="classic")),e=o,b=O,f=()=>{kt(e.song.artist,e.song.title,e.song.source)},A=S(()=>{var a;return((a=i.playlists.find(t=>t.id===e.playlistId))==null?void 0:a.type)!=="classic"}),v=async a=>{var t,l;await nt(a,e.song),at.addSuccess(e.song.title,`Added to ${(t=C.value.find(y=>y.id==a))==null?void 0:t.name}`,3e3,void 0,(l=C.value.find(y=>y.id==a))==null?void 0:l.href),b("update")},M=async()=>{const a=await lt("classic",e.song.title,e.song.artist,e.song.cover);await v(a),b("update")},N=async()=>{await it(e.playlistId,e.song.id),b("update")},D=F(null),w=F(null),T=()=>{w.value.visible?h():m()},h=()=>{w.value.hide()},m=()=>{const a=D.value.getBoundingClientRect(),t={top:a.height+a.top+window.scrollY,left:a.width+a.left+window.scrollX};w.value.show(t)};E({show:m,toggle:T,hide:h});const $=S(()=>({Soundcloud:`https://soundcloud.com/search?q=${e.song.artist} ${e.song.title}`,Audius:`https://audius.co/search/${e.song.artist} ${e.song.title}`,"Youtube Music":`https://music.youtube.com/search?q=${e.song.artist} ${e.song.title}`,Spotify:`https://open.spotify.com/search/${e.song.artist} ${e.song.title}`})),q=()=>{b("edit")},U=a=>{window.open($.value[a]),q()},R=()=>{const a=dt(e.song);ut(a,`${e.song.artist} - ${e.song.title}`)};return(a,t)=>{const l=k("v-contextmenu-item"),y=k("v-contextmenu-submenu"),x=k("v-contextmenu-divider"),Y=k("v-context-menu-divider"),z=k("v-contextmenu"),K=G("contextmenu");return J((r(),g("div",{ref_key:"box",ref:D},[Q(a.$slots,"default"),s(z,{ref_key:"contextmenu",ref:w},{default:n(()=>[s(l,{onClick:f},{default:n(()=>t[6]||(t[6]=[d("span",{class:"material-symbols-rounded"},"preview",-1),u(" Preview ")])),_:1}),s(l,null,{default:n(()=>[t[7]||(t[7]=d("span",{class:"material-symbols-rounded"},"search",-1)),s(y,{title:"Find source"},{default:n(()=>[(r(!0),g(L,null,V(Object.keys($.value),c=>(r(),I(l,{key:c,onClick:W=>U(c)},{default:n(()=>[u(P(c),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),s(x),s(l,null,{default:n(()=>[t[11]||(t[11]=d("span",{class:"material-symbols-rounded"},"queue_music",-1)),s(y,{title:"Add to queue"},{default:n(()=>[s(l,{onClick:t[0]||(t[0]=()=>p(Z)(e.song.id))},{default:n(()=>t[8]||(t[8]=[d("span",{class:"material-symbols-rounded"}," play_arrow ",-1),u(" Play Now ")])),_:1}),s(l,{onClick:t[1]||(t[1]=()=>p(tt)(e.song.id))},{default:n(()=>t[9]||(t[9]=[d("span",{class:"material-symbols-rounded"}," add_to_queue ",-1),u(" Play Next ")])),_:1}),s(l,{onClick:t[2]||(t[2]=()=>p(et)(e.song.id))},{default:n(()=>t[10]||(t[10]=[d("span",{class:"material-symbols-rounded"}," queue_play_next ",-1),u(" Play Last ")])),_:1})]),_:1})]),_:1}),s(x),s(Y),A.value?B("",!0):(r(),I(l,{key:0,onClick:N},{default:n(()=>t[12]||(t[12]=[d("span",{class:"material-symbols-rounded"},"delete",-1),u(" Remove from this playlist ")])),_:1})),s(l,null,{default:n(()=>[t[14]||(t[14]=d("span",{class:"material-symbols-rounded"},"playlist_add",-1)),s(y,{title:"Add to playlist"},{default:n(()=>[s(l,{onClick:M},{default:n(()=>t[13]||(t[13]=[u(" Add to new playlist ")])),_:1}),s(x),(r(!0),g(L,null,V(C.value,c=>(r(),I(l,{key:c.id,onClick:W=>v(c.id)},{default:n(()=>[u(P(c.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),s(x),s(l,{onClick:q},{default:n(()=>t[15]||(t[15]=[d("span",{class:"material-symbols-rounded"},"edit",-1),u(" Edit ")])),_:1}),s(x),s(l,{onClick:t[3]||(t[3]=c=>p(st)(o.song.id))},{default:n(()=>t[16]||(t[16]=[d("span",{class:"material-symbols-rounded"},"file_download",-1),u(" Download ")])),_:1}),s(l,{onClick:t[4]||(t[4]=c=>p(ot)(o.song.id))},{default:n(()=>t[17]||(t[17]=[d("span",{class:"material-symbols-rounded"},"replay",-1),u(" Uncache ")])),_:1}),s(x),s(l,null,{default:n(()=>[t[19]||(t[19]=d("span",{class:"material-symbols-rounded"},"share",-1)),s(y,{title:"Export..."},{default:n(()=>[s(l,{onClick:t[5]||(t[5]=c=>R())},{default:n(()=>t[18]||(t[18]=[u(" to file ")])),_:1})]),_:1})]),_:1})]),_:1},512)])),[[K,void 0,"contextmenu"]])}}}),Ct={key:0,class:"index text-right downloading"},$t={key:2,class:"cover"},qt={class:"artist-title"},Pt={class:"title"},At={class:"artist"},Mt={key:3,class:"album"},Nt={class:"duration text-center"},Dt=H({__name:"PlaylistEntry",props:{song:{type:Object,required:!0},index:{type:Number,required:!0},withCover:{type:Boolean,required:!1,default:!1},withAlbum:{type:Boolean,required:!1,default:!1},withMore:{type:Boolean,required:!1,default:!1},selected:{type:Boolean,required:!1,default:!1},playlistId:{type:String,required:!1,default:null},artist:{type:String,required:!1,default:null},album:{type:String,required:!1,default:null}},emits:["update"],setup(o,{emit:E}){const O=rt(),i=o,C=E,e=ct(),b=S(()=>i.song.id==e.song.id),f=F(!1),A=()=>{i.song.favourite=!i.song.favourite,bt(i.song.id,i.song.favourite)},v=S(()=>i.playlistId==null?e.playlist.id:i.playlistId),M=async()=>{if(v.value=="track"){e.loadPlaylist("track",i.song.id);return}if(v.value=="artist"){await e.loadPlaylist("artist",i.artist),e.loadSong(null,i.index);return}if(v.value=="album"){await e.loadPlaylist("album",i.album),e.loadSong(null,i.index);return}e.loadSong(v.value,i.index)},N=F(null),D=()=>{N.value.show()},w=()=>{C("update")},T=S(()=>O.isSongDownloading(i.song.id));return(h,m)=>{const $=k("router-link");return r(),I(St,{ref:"ctxMenu",liked:o.song.favourite,playlistId:v.value,song:o.song,onEdit:D,onLike:A,onUpdate:w},{default:n(()=>[s(xt,{ref_key:"updatePopup",ref:N,song:o.song,onUpdate:m[0]||(m[0]=q=>h.$emit("update"))},null,8,["song"]),d("div",{class:j([{playing:b.value,selected:o.selected,hovering:f.value,withCover:o.withCover,withAlbum:o.withAlbum,withMore:o.withMore},"playlist-entry"]),onDblclick:M,onMouseenter:m[1]||(m[1]=q=>f.value=!0),onMouseleave:m[2]||(m[2]=q=>f.value=!1)},[T.value?(r(),g("div",Ct,[s(mt)])):(r(),g("div",{key:1,class:j([{"material-symbols-rounded":f.value},"index text-right"]),onClick:M},P(f.value?"play_arrow":o.index+1),3)),o.withCover?(r(),g("div",$t,[s(ft,{src:o.song.cover,type:"track"},null,8,["src"])])):B("",!0),d("div",qt,[d("span",Pt,[s($,{to:`/track/${p(vt)(o.song.id)}`,class:"linkOnHover"},{default:n(()=>[s(_,{text:o.song.title},null,8,["text"])]),_:1},8,["to"])]),d("span",At,[s(yt,{artist:o.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),o.withAlbum&&!p(gt)?(r(),g("div",Mt,[s($,{to:o.song.album.href,class:"linkOnHover"},{default:n(()=>[s(_,{text:o.song.album.name},null,8,["text"])]),_:1},8,["to"])])):B("",!0),o.selected||f.value||o.song.favourite?(r(),g("div",{key:4,class:j([{favourite:o.song.favourite},"favourite-icon icon text-right material-symbols-rounded"]),onClick:A},P(o.song.favourite?"favorite":"heart_plus"),3)):B("",!0),d("div",Nt,P(p(pt)(o.song.duration)),1)],34)]),_:1},8,["liked","playlistId","song"])}}}),Ft=wt(Dt,[["__scopeId","data-v-67cfb148"]]);export{Ft as P}; diff --git a/src/ui/dist/assets/PlaylistEntry-CFWDnKVM.js.gz b/src/ui/dist/assets/PlaylistEntry-CFWDnKVM.js.gz new file mode 100644 index 00000000..9f757f54 Binary files /dev/null and b/src/ui/dist/assets/PlaylistEntry-CFWDnKVM.js.gz differ diff --git a/src/ui/dist/assets/PlaylistEntry-DrzB4VXk.js.gz b/src/ui/dist/assets/PlaylistEntry-DrzB4VXk.js.gz deleted file mode 100644 index db877ab0..00000000 Binary files a/src/ui/dist/assets/PlaylistEntry-DrzB4VXk.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Sports-J0i4HuLb.js.gz b/src/ui/dist/assets/Sports-J0i4HuLb.js.gz deleted file mode 100644 index 1b43b0de..00000000 Binary files a/src/ui/dist/assets/Sports-J0i4HuLb.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Sports-J0i4HuLb.js b/src/ui/dist/assets/Sports-ZUA8m5m_.js similarity index 97% rename from src/ui/dist/assets/Sports-J0i4HuLb.js rename to src/ui/dist/assets/Sports-ZUA8m5m_.js index a22fb718..9d29a4a9 100644 --- a/src/ui/dist/assets/Sports-J0i4HuLb.js +++ b/src/ui/dist/assets/Sports-ZUA8m5m_.js @@ -1 +1 @@ -import{F as C}from"./FullShelf-WiVa8WAT.js";import{_ as k,C as D,f as _,o as p,i as v,w as M,a as r,t as f,K as x,Y as A,N,c as m,g as F,F as S,h as y,d as V}from"./index-CTxjSbok.js";const B={name:"FootballItem",components:{Card:D},methods:{redirect(){window.open(this.oref)},remove(s){s.stopPropagation(),this.$emit("remove")}},props:{result:String,date:String,competition:String,href:String,oref:String,team1:String,team2:String,progress:String}},O={class:"wrapper topalign"},j={class:"wrapper"},H=["innerHTML"],L=["innerHTML"],b=["innerHTML"],J={class:"wrapper bottomalign"},P={class:"small"};function U(s,e,t,l,c,o){const h=_("Card");return p(),v(h,{class:"itemBig","with-hover":""},{default:M(()=>{var u;return[r("div",{class:"item",onClick:e[1]||(e[1]=(...i)=>o.redirect&&o.redirect(...i))},[r("div",O,[r("p",null,f(t.competition),1),r("p",{class:x([{accent:(u=t.progress)==null?void 0:u.includes("'")},"right progress"])},f(t.progress),3)]),r("div",j,[r("p",{class:"team",innerHTML:t.team1},null,8,H),r("h4",{class:"result",innerHTML:t.result},null,8,L),r("p",{class:"team",innerHTML:t.team2},null,8,b)]),r("div",J,[r("p",P,f(t.date)+", "+f(t.href),1),r("span",{class:"deleteIcon small material-icons-round",onClick:e[0]||(e[0]=(...i)=>o.remove&&o.remove(...i))},"clear")])])]}),_:1})}const W=k(B,[["render",U],["__scopeId","data-v-51368764"]]),K={components:{TextInputWithIcon:A,FullShelf:C,FootballItem:W},name:"Sports",data(){return{sports:[],watchMatches:[],sourceToAdd:"",supportedSources:["https://onefootball.com/en/team/","https://onefootball.com/en/match/","https://onefootball.com/en/competition/","https://www.cev.eu/match-centres/","https://championsleague.cev.eu/en/match-centres/","https://www.cev.eu/calendar/","https://cev-nex.tk/#/match/","https://cevnex.tk/#/match/"]}},mounted(){this.watchMatches=JSON.parse(window.localStorage.getItem("sports.watchMatches"))||[],this.updateMatches()},computed:{volleyMatches(){return this.watchMatches.filter(s=>s.includes("cev")).map(s=>{let e=s;return s.includes("nex.tk")&&(e=s.split("/match/")[1]),{src:e,ref:s}})},notVolleyMatches(){return this.watchMatches.filter(s=>!s.includes("cev"))}},methods:{removeSource(s,e,t){this.watchMatches.splice(this.watchMatches.indexOf(s),1),this.sports[e].items.splice(t,1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},removeSourceD(s){this.watchMatches.splice(this.watchMatches.indexOf(s),1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},tryAddSource(){for(const s of this.supportedSources)if(this.sourceToAdd.startsWith(s)){this.addSource();return}N.addError("unsupported source")},addSource(){this.watchMatches.push(this.sourceToAdd),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches)),this.sourceToAdd=""},updateMatches(){(this.$route.path=="/sports"||this.$route.path=="/sports/")&&(fetch("/api/sports",{method:"POST",body:JSON.stringify({urls:this.notVolleyMatches})}).then(s=>s.json()).then(s=>{this.sports=[];for(const e of s){const t=this.sports.findIndex(l=>l.sport==e.sport);t>=0?this.sports[t].items.push(e):this.sports.push({sport:e.sport,icon:e.sportIcon,items:[e]})}for(const e of this.sports)e.items.sort((t,l)=>{if(t.progress=t.progress.replace("Half time","45'"),l.progress=l.progress.replace("Half time","45'"),(t.progress.includes("Pens")||t.progress.includes("N/A"))&&(t.progress="Full time"),(l.progress.includes("Pens")||l.progress.includes("N/A"))&&(l.progress="Full time"),t.progress.includes("'")&&!l.progress.includes("'"))return-1;if(!t.progress.includes("'")&&l.progress.includes("'"))return 1;if(t.progress.includes("'")&&l.progress.includes("'")){const w=Number(t.progress.replace("'","").replace("+","")),I=Number(l.progress.replace("'","").replace("+",""));return ww.toISOString().split("T")[0];c=c.replace("Today",a(i)).split("/").reverse().join("-"),c=c.replace("Tomorrow",a(n)).split("/").reverse().join("-"),c=c.replace("Yesterday",a(d)).split("/").reverse().join("-"),o=o.replace("Today",a(i)).split("/").reverse().join("-"),o=o.replace("Tomorrow",a(n)).split("/").reverse().join("-"),o=o.replace("Yesterday",a(d)).split("/").reverse().join("-");let g=new Date(`${c}T${h}`.replace(" ","")),T=new Date(`${o}T${u}`.replace(" ",""));return g>T?-1:g==T?0:1})}),setTimeout(this.updateMatches,1e3*45))}}},Y={class:"news"},E={class:"padding-20"},R={class:"small"},$={class:"addWrapper"},z=["src"],q=["onClick"];function G(s,e,t,l,c,o){const h=_("TextInputWithIcon"),u=_("football-item"),i=_("full-shelf");return p(),m("div",Y,[e[3]||(e[3]=r("div",{class:"padding-20"},[r("h1",null,"Sports")],-1)),e[4]||(e[4]=r("hr",null,null,-1)),r("div",E,[r("p",R," Supported urls: "+f(c.supportedSources.join("*, ")),1),r("div",$,[F(h,{modelValue:c.sourceToAdd,"onUpdate:modelValue":e[0]||(e[0]=n=>c.sourceToAdd=n),icon:"link",onKeyup:s.enterText},null,8,["modelValue","onKeyup"]),r("span",{id:"addToPlaylist",class:"material-icons-outlined",onClick:e[1]||(e[1]=(...n)=>o.tryAddSource&&o.tryAddSource(...n))},"add_circle")]),e[2]||(e[2]=r("hr",null,null,-1)),(p(!0),m(S,null,y(c.sports,(n,d)=>(p(),v(i,{key:n.sport,heading:n.sport,icon:n.icon},{default:M(()=>[(p(!0),m(S,null,y(n.items,(a,g)=>(p(),v(u,{key:a.href,competition:a.competition,date:a.date,href:a.href,oref:a.oref,progress:a.progress,result:a.result,team1:a.team1,team2:a.team2,onRemove:()=>o.removeSource(a.sref,d,g)},null,8,["competition","date","href","oref","progress","result","team1","team2","onRemove"]))),128))]),_:2},1032,["heading","icon"]))),128)),o.volleyMatches.length?(p(),v(i,{key:0,heading:"Volleyball",icon:"sports_volleyball"},{default:M(()=>[(p(!0),m(S,null,y(o.volleyMatches,(n,d)=>(p(),m("div",{key:d,class:"wrapIframe"},[r("iframe",{src:`https://cev-nex.tk/#/embed?match=${n.src}`},null,8,z),r("span",{class:"deleteIcon small material-symbols-rounded",onClick:()=>o.removeSourceD(n.ref)},"clear",8,q)]))),128))]),_:1})):V("",!0)])])}const Z=k(K,[["render",G],["__scopeId","data-v-e7921c74"]]);export{Z as default}; +import{F as C}from"./FullShelf-DGzkcAo_.js";import{_ as k,C as D,f as _,o as p,i as v,w as M,a as r,t as f,K as x,Y as A,N,c as m,g as F,F as S,h as y,d as V}from"./index-NeVG6T13.js";const B={name:"FootballItem",components:{Card:D},methods:{redirect(){window.open(this.oref)},remove(s){s.stopPropagation(),this.$emit("remove")}},props:{result:String,date:String,competition:String,href:String,oref:String,team1:String,team2:String,progress:String}},O={class:"wrapper topalign"},j={class:"wrapper"},H=["innerHTML"],L=["innerHTML"],b=["innerHTML"],J={class:"wrapper bottomalign"},P={class:"small"};function U(s,e,t,l,c,o){const h=_("Card");return p(),v(h,{class:"itemBig","with-hover":""},{default:M(()=>{var u;return[r("div",{class:"item",onClick:e[1]||(e[1]=(...i)=>o.redirect&&o.redirect(...i))},[r("div",O,[r("p",null,f(t.competition),1),r("p",{class:x([{accent:(u=t.progress)==null?void 0:u.includes("'")},"right progress"])},f(t.progress),3)]),r("div",j,[r("p",{class:"team",innerHTML:t.team1},null,8,H),r("h4",{class:"result",innerHTML:t.result},null,8,L),r("p",{class:"team",innerHTML:t.team2},null,8,b)]),r("div",J,[r("p",P,f(t.date)+", "+f(t.href),1),r("span",{class:"deleteIcon small material-icons-round",onClick:e[0]||(e[0]=(...i)=>o.remove&&o.remove(...i))},"clear")])])]}),_:1})}const W=k(B,[["render",U],["__scopeId","data-v-51368764"]]),K={components:{TextInputWithIcon:A,FullShelf:C,FootballItem:W},name:"Sports",data(){return{sports:[],watchMatches:[],sourceToAdd:"",supportedSources:["https://onefootball.com/en/team/","https://onefootball.com/en/match/","https://onefootball.com/en/competition/","https://www.cev.eu/match-centres/","https://championsleague.cev.eu/en/match-centres/","https://www.cev.eu/calendar/","https://cev-nex.tk/#/match/","https://cevnex.tk/#/match/"]}},mounted(){this.watchMatches=JSON.parse(window.localStorage.getItem("sports.watchMatches"))||[],this.updateMatches()},computed:{volleyMatches(){return this.watchMatches.filter(s=>s.includes("cev")).map(s=>{let e=s;return s.includes("nex.tk")&&(e=s.split("/match/")[1]),{src:e,ref:s}})},notVolleyMatches(){return this.watchMatches.filter(s=>!s.includes("cev"))}},methods:{removeSource(s,e,t){this.watchMatches.splice(this.watchMatches.indexOf(s),1),this.sports[e].items.splice(t,1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},removeSourceD(s){this.watchMatches.splice(this.watchMatches.indexOf(s),1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},tryAddSource(){for(const s of this.supportedSources)if(this.sourceToAdd.startsWith(s)){this.addSource();return}N.addError("unsupported source")},addSource(){this.watchMatches.push(this.sourceToAdd),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches)),this.sourceToAdd=""},updateMatches(){(this.$route.path=="/sports"||this.$route.path=="/sports/")&&(fetch("/api/sports",{method:"POST",body:JSON.stringify({urls:this.notVolleyMatches})}).then(s=>s.json()).then(s=>{this.sports=[];for(const e of s){const t=this.sports.findIndex(l=>l.sport==e.sport);t>=0?this.sports[t].items.push(e):this.sports.push({sport:e.sport,icon:e.sportIcon,items:[e]})}for(const e of this.sports)e.items.sort((t,l)=>{if(t.progress=t.progress.replace("Half time","45'"),l.progress=l.progress.replace("Half time","45'"),(t.progress.includes("Pens")||t.progress.includes("N/A"))&&(t.progress="Full time"),(l.progress.includes("Pens")||l.progress.includes("N/A"))&&(l.progress="Full time"),t.progress.includes("'")&&!l.progress.includes("'"))return-1;if(!t.progress.includes("'")&&l.progress.includes("'"))return 1;if(t.progress.includes("'")&&l.progress.includes("'")){const w=Number(t.progress.replace("'","").replace("+","")),I=Number(l.progress.replace("'","").replace("+",""));return ww.toISOString().split("T")[0];c=c.replace("Today",a(i)).split("/").reverse().join("-"),c=c.replace("Tomorrow",a(n)).split("/").reverse().join("-"),c=c.replace("Yesterday",a(d)).split("/").reverse().join("-"),o=o.replace("Today",a(i)).split("/").reverse().join("-"),o=o.replace("Tomorrow",a(n)).split("/").reverse().join("-"),o=o.replace("Yesterday",a(d)).split("/").reverse().join("-");let g=new Date(`${c}T${h}`.replace(" ","")),T=new Date(`${o}T${u}`.replace(" ",""));return g>T?-1:g==T?0:1})}),setTimeout(this.updateMatches,1e3*45))}}},Y={class:"news"},E={class:"padding-20"},R={class:"small"},$={class:"addWrapper"},z=["src"],q=["onClick"];function G(s,e,t,l,c,o){const h=_("TextInputWithIcon"),u=_("football-item"),i=_("full-shelf");return p(),m("div",Y,[e[3]||(e[3]=r("div",{class:"padding-20"},[r("h1",null,"Sports")],-1)),e[4]||(e[4]=r("hr",null,null,-1)),r("div",E,[r("p",R," Supported urls: "+f(c.supportedSources.join("*, ")),1),r("div",$,[F(h,{modelValue:c.sourceToAdd,"onUpdate:modelValue":e[0]||(e[0]=n=>c.sourceToAdd=n),icon:"link",onKeyup:s.enterText},null,8,["modelValue","onKeyup"]),r("span",{id:"addToPlaylist",class:"material-icons-outlined",onClick:e[1]||(e[1]=(...n)=>o.tryAddSource&&o.tryAddSource(...n))},"add_circle")]),e[2]||(e[2]=r("hr",null,null,-1)),(p(!0),m(S,null,y(c.sports,(n,d)=>(p(),v(i,{key:n.sport,heading:n.sport,icon:n.icon},{default:M(()=>[(p(!0),m(S,null,y(n.items,(a,g)=>(p(),v(u,{key:a.href,competition:a.competition,date:a.date,href:a.href,oref:a.oref,progress:a.progress,result:a.result,team1:a.team1,team2:a.team2,onRemove:()=>o.removeSource(a.sref,d,g)},null,8,["competition","date","href","oref","progress","result","team1","team2","onRemove"]))),128))]),_:2},1032,["heading","icon"]))),128)),o.volleyMatches.length?(p(),v(i,{key:0,heading:"Volleyball",icon:"sports_volleyball"},{default:M(()=>[(p(!0),m(S,null,y(o.volleyMatches,(n,d)=>(p(),m("div",{key:d,class:"wrapIframe"},[r("iframe",{src:`https://cev-nex.tk/#/embed?match=${n.src}`},null,8,z),r("span",{class:"deleteIcon small material-symbols-rounded",onClick:()=>o.removeSourceD(n.ref)},"clear",8,q)]))),128))]),_:1})):V("",!0)])])}const Z=k(K,[["render",G],["__scopeId","data-v-e7921c74"]]);export{Z as default}; diff --git a/src/ui/dist/assets/Sports-ZUA8m5m_.js.gz b/src/ui/dist/assets/Sports-ZUA8m5m_.js.gz new file mode 100644 index 00000000..1c85d9bb Binary files /dev/null and b/src/ui/dist/assets/Sports-ZUA8m5m_.js.gz differ diff --git a/src/ui/dist/assets/Template-B3y8aqn2.js.gz b/src/ui/dist/assets/Template-B3y8aqn2.js.gz deleted file mode 100644 index ece751c8..00000000 Binary files a/src/ui/dist/assets/Template-B3y8aqn2.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Template-B3y8aqn2.js b/src/ui/dist/assets/Template-DPpn6WCj.js similarity index 98% rename from src/ui/dist/assets/Template-B3y8aqn2.js rename to src/ui/dist/assets/Template-DPpn6WCj.js index c43bb845..bd10833a 100644 --- a/src/ui/dist/assets/Template-B3y8aqn2.js +++ b/src/ui/dist/assets/Template-DPpn6WCj.js @@ -1 +1 @@ -import{e as E,l as x,B as N,A as F,v as ee,a0 as we,o as m,c as $,r as ue,a1 as K,a2 as xe,J as j,a3 as le,K as G,O as de,_ as Y,a as p,t as O,d as S,F as W,h as ae,b as H,i as A,a4 as he,a5 as ce,a6 as pe,g as h,P as ve,x as be,z as _e,a7 as ke,w as I,q as $e,a8 as me,y as Ce,a9 as Pe,aa as Ve,u as L,I as se,j as te,m as ye,f as J,ab as fe,$ as Se,ac as oe,ad as Ie,E as Me,C as ne,Y as Te,X as Oe,ae as ie,af as qe}from"./index-CTxjSbok.js";import{P as Fe}from"./PlaylistEntry-DrzB4VXk.js";import{d as Ae}from"./vuedraggable.umd-pw-5IPtN.js";import{F as Q}from"./FactCard-CcCpkYQW.js";import{G as Be}from"./gistClient-DbxNDpvo.js";import{M as De,_ as Ue}from"./Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js";const Ee=a=>{const{search:f,artist:l,title:i,album:e,order:y,sort:r}=a;return(f==null?void 0:f.length)||(l==null?void 0:l.length)||(i==null?void 0:i.length)||(e==null?void 0:e.length)||y!="asc"||r!="index"},He=(a,f)=>{const{search:l,artist:i,title:e,album:y,sort:r}=f;return a.map(w=>{const s=l!=null&&l.length?w.title.toLowerCase().includes(l.toLowerCase())||w.artist.toLowerCase().includes(l.toLowerCase()):!0,g=i!=null&&i.length?i.includes(w.artist):!0,d=e!=null&&e.length?e.includes(w.title):!0,t=y!=null&&y.length?y.includes(w.album.name):!0;return{...w,show:s&&g&&d&&t,index:a.indexOf(w)}}).sort((w,s)=>{const g=w[r],d=s[r];return gd?1:0})},Le=a=>a.map(f=>({label:f.title,value:f.title})),Ne=a=>a.map(f=>({label:f.album.name,value:f.album.name})),Re=a=>{const f=new Set;for(const l of a)for(const i of l.artist.split(", "))f.add(i);return Array.from(f).sort().map(l=>({label:l,value:l}))},je=["placeholder"],ze=E({__name:"EditableText",props:{modelValue:{type:String,required:!0},locked:{type:Boolean,default:!1},noOutline:{type:Boolean,default:!1},placeholder:{type:String,default:"Click to edit"}},emits:["update:modelValue","change"],setup(a,{emit:f}){const l=a,i=x(l.modelValue);N(()=>l.modelValue,t=>i.value=t);const e=x(!1),y=f,r=x(null),w=()=>{l.locked||(e.value=!0,de(()=>{r.value&&r.value.focus()}))},s=F(()=>l.locked?!0:e.value?!1:i.value),g=t=>{i.value=t,y("change",t),y("update:modelValue",t)},d=()=>{r.value&&(r.value.style.height="auto",r.value.style.height=r.value.scrollHeight+"px")};return ee(()=>d()),we(()=>{e.value&&d()}),(t,o)=>(m(),$("div",{class:G(["editable-text",{outlined:!a.noOutline&&e.value}]),onDblclick:j(w,["stop"])},[s.value?ue(t.$slots,"default",{key:0},void 0,!0):K((m(),$("textarea",{key:1,ref_key:"area",ref:r,rows:"1","onUpdate:modelValue":o[0]||(o[0]=u=>i.value=u),onChange:o[1]||(o[1]=u=>g(u.target.value)),onInput:o[2]||(o[2]=u=>d()),onClick:o[3]||(o[3]=j(u=>e.value=!0,["stop"])),onKeydown:[o[4]||(o[4]=le(u=>e.value=!1,["enter"])),o[5]||(o[5]=le(u=>e.value=!1,["esc"]))],onBlur:o[6]||(o[6]=u=>e.value=!1),placeholder:a.placeholder},null,40,je)),[[xe,i.value]])],34))}}),re=Y(ze,[["__scopeId","data-v-f05f8e35"]]),Ge={class:"flex flex-row gap-2 items-center overflow-hidden"},Ye={key:0,class:"material-symbols-rounded ms-wght-200"},We={class:"selected-labels"},Ke=["onClick"],Xe={class:"material-symbols-rounded"},Je=["onClick"],Qe={class:"material-symbols-rounded"},Ze={key:0,class:"material-symbols-rounded"},et=E({__name:"MultiSelect",props:{modelValue:{type:Array,required:!0},options:{type:Array,required:!0},icon:{type:String,required:!1}},emits:["update:modelValue"],setup(a,{emit:f}){const l=a,i=x(l.modelValue),e=x(!1),y=f;N(l,d=>{i.value=d.modelValue},{deep:!0});const r=d=>{i.value.includes(d)?i.value=i.value.filter(t=>t!=d):i.value.push(d),y("update:modelValue",i.value),e.value=!1},w=F(()=>{const d=[];for(const t of i.value){const o=l.options.find(u=>u.value==t);o&&d.push(o.label)}return d}),s=x(null),g=x(null);return N(e,d=>{de(()=>{if(d){const t=s.value.getBoundingClientRect(),o=g.value.getBoundingClientRect(),u=o.top,c=o.bottom,v=window.innerHeight-c,_=o.width;s.value.style.width=_+"px",s.value.style.left=o.left+"px",v>t.height?(s.value.style.top=c+"px",s.value.style.bottom="auto"):(s.value.style.top="auto",s.value.style.bottom=u-t.height+"px")}})}),window.addEventListener("click",()=>{e.value=!1}),(d,t)=>(m(),$("div",{ref_key:"container",ref:g,class:"dropdown"},[p("div",{class:G([{expanded:e.value},"dropdown__selected"]),onClick:t[0]||(t[0]=j(o=>e.value=!e.value,["stop"]))},[p("div",Ge,[a.icon?(m(),$("span",Ye,O(a.icon),1)):S("",!0),p("div",We,[(m(!0),$(W,null,ae(w.value,o=>(m(),$("span",{key:o,class:"selected-label"},[H(O(o)+" ",1),p("i",{class:"material-symbols-rounded",onClick:u=>r(o)}," close ",8,Ke)]))),128))])]),p("i",Xe,O(e.value?"expand_less":"expand_more"),1)],2),(m(),A(he,{to:"#dropdown-target"},[e.value?(m(),$("div",{key:0,ref_key:"trueDropdown",ref:s,class:"dropdown__options"},[(m(!0),$(W,null,ae(a.options,o=>(m(),$("div",{key:o.value,class:"dropdown__option",onClick:j(u=>r(o.value),["stop"])},[p("span",Qe,O(o.icon),1),p("span",null,O(o.label),1),i.value.includes(o.value)?(m(),$("span",Ze,"check")):S("",!0)],8,Je))),128))],512)):S("",!0)]))],512))}}),Z=Y(et,[["__scopeId","data-v-8ec711b9"]]),tt={class:"upperWrapper"},lt={class:"font-black"},at={class:"padding-20 darkback"},st=E({__name:"FixedPlaylistHeader",props:{accentColour:{type:String},playlist:{type:Object,required:!0}},setup(a){const f=ce(),l=a,i=F(()=>f.playlistPlayOrPauseIcon(l.playlist.id));return(e,y)=>(m(),$("div",{class:"fixedPlaylistHeader",style:be({"--colour":a.accentColour})},[a.playlist.cover?(m(),A(pe,{key:0,src:a.playlist.cover},null,8,["src"])):S("",!0),p("div",tt,[p("span",{id:"loadPlaylist",class:"material-symbols-rounded hideIfMobile ms-fill",onClick:y[0]||(y[0]=r=>this.$emit("loadPlaylist"))},O(i.value),1),p("h3",lt,O(a.playlist.name),1)]),p("div",at,[h(ve,{class:"fixedHeader hideIfMobile","with-album":"","with-more":""})])],4))}}),ot=Y(st,[["__scopeId","data-v-34ec84ab"]]),nt=E({__name:"AddNewSong",emits:["update","close"],setup(a,{expose:f,emit:l}){const i=_e(),e=l,y={title:"",artist:"",artists:[],album:"",cover:"",source:"",href:""},r=async(u,c)=>{const v=Ce(String(new Date().getTime())),_=new FormData,D="."+c.name.split(".").pop();var V=c.slice(0,c.size,c.type),C=new File([V],v+D,{type:c.type});return _.append("file",C),await(await fetch(u,{method:"POST",body:_})).text()},w=x(null),s=x([{name:"source",type:"upload",accept:"audio/mp3",required:!0,onUpload:u=>{r("/api/config/tracks",u).then(c=>s.value.find(v=>v.name=="source").value=c)},onChange:async u=>{const c=await ke(u);s.value.find(v=>v.name==="title").value=c.title,s.value.find(v=>v.name==="artist").value=c.artist,s.value.find(v=>v.name==="album").value=c.album,s.value.find(v=>v.name==="cover").value=c.cover,s.value.find(v=>v.name==="source").value=c.source,w.value=c.track.metadata},value:y.source},{name:"title",type:"text",icon:"title",required:!0,value:y.title},{name:"artist",type:"text",icon:"person",required:!0,value:y.artist},{name:"album",type:"text",icon:"album",value:y.album},{name:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:y.cover,onUpload:u=>{r("/api/config/images",u).then(c=>s.value.find(v=>v.name=="cover").value=c)}}]),g=x(null),d=x(null),t=async()=>{if(g.value.show(),!navigator.clipboard)return;const u=await navigator.clipboard.readText();if(!Pe(u))return;const c=s.value.find(v=>v.name==="source");c.value=u,c.onChange(u)},o=async u=>{const c=i.params.id;await Ve(c,{...d.value.toObject(),metadata:w.value}),e("update")};return f({show:t,options:s}),(u,c)=>(m(),A(me,{ref_key:"modal",ref:g,submit:{label:"Add",icon:"add"},name:"Add Song",onClose:c[0]||(c[0]=v=>u.$emit("close")),onSubmit:o},{default:I(()=>[h($e,{ref_key:"form",ref:d,options:s.value},null,8,["options"])]),_:1},512))}}),it=["innerHTML"],rt={class:"buttons w-full justify-end flex gap-2"},ut=E({__name:"Confirmation",props:{title:{type:String,required:!0},question:{type:String,required:!0},closeOnNo:{type:Boolean,required:!1,default:!0}},emits:["close","update","yes","no"],setup(a,{expose:f,emit:l}){const i=a,e=l,y=x(null),r=new De;f({show:()=>{y.value.show()}});const s=()=>{i.closeOnNo&&y.value.hide(),e("no")};return(g,d)=>(m(),A(me,{ref_key:"modal",ref:y,name:a.title,onClose:d[1]||(d[1]=t=>g.$emit("close"))},{default:I(()=>[p("div",{class:"overflow-hidden",innerHTML:L(r).render(a.question)},null,8,it),p("div",rt,[h(se,{type:"success",icon:"check",label:"Yes",onClick:d[0]||(d[0]=t=>g.$emit("yes"))}),h(se,{type:"danger",icon:"close",label:"No",onClick:s})])]),_:1},8,["name"]))}}),dt=E({__name:"PlaylistContext",props:{playlist:{type:Object,required:!0},canEdit:{type:Boolean,required:!1,default:!1}},setup(a,{expose:f}){const l=a,i=te(),e=ye(),y=x(null),r=x(null),w=x(""),s=x(null),g=x(null),d=x(""),t=x(""),o=(C=null)=>{r.value.visible?u():c(C)},u=()=>{r.value.hide()},c=(C=null)=>{const k=y.value.getBoundingClientRect();if(C){r.value.show({top:C.clientY,left:C.clientX});return}const M={top:k.height+k.top+window.scrollY,left:k.width+k.left+window.scrollX};r.value.show(M)};f({show:c,toggle:o,hide:u});const v=()=>{e.push(`/playlist/${l.playlist.id}/edit`)},_=async()=>{await Se(l.playlist.id),await i.fetchPlaylists(),e.push("/")},D=async()=>{const C=await oe(l.playlist);Ie(C,l.playlist.name)},V=async()=>{const C=await oe(l.playlist),k=`${l.playlist.name}.one.playlist`,M=await Be.save({[k]:C},l.playlist.name,!0),R=M.files[k].raw_url,P=M.id,n=M.owner.login,B=R.split("/raw/")[1].split("/")[0],q=`gist:${n}:${P}:${B}`,T=btoa(q);w.value=`http://localhost:1234/import/${T}`,t.value=`Share this URL to import this playlist on another device: [${w.value}](${w.value})`,d.value="Share "+l.playlist.name,s.value.show()};return ee(()=>{document.addEventListener("click",u)}),(C,k)=>{const M=J("v-contextmenu-item"),z=J("v-contextmenu-submenu"),R=J("v-contextmenu"),P=fe("contextmenu");return K((m(),$("div",{ref_key:"box",ref:y},[ue(C.$slots,"default"),h(Ue,{ref_key:"markdownRef",ref:s,title:d.value,content:t.value,onClose:u},null,8,["title","content"]),h(ut,{ref_key:"confirmation",ref:g,title:"Delete Playlist",question:"Are you sure you want to delete this playlist?",onYes:_,onNo:u,"close-on-no":""},null,512),h(R,{ref_key:"contextmenu",ref:r},{default:I(()=>[a.canEdit?(m(),A(M,{key:0,onClick:v},{default:I(()=>k[1]||(k[1]=[p("span",{class:"material-symbols-rounded"},"edit",-1),H(" Edit ")])),_:1})):S("",!0),h(M,{onClick:k[0]||(k[0]=n=>g.value.show())},{default:I(()=>k[2]||(k[2]=[p("span",{class:"material-symbols-rounded"},"delete",-1),H(" Delete ")])),_:1}),h(M,null,{default:I(()=>[k[5]||(k[5]=p("span",{class:"material-symbols-rounded"},"share",-1)),h(z,{title:"Export..."},{default:I(()=>[h(M,{onClick:D},{default:I(()=>k[3]||(k[3]=[H(" to file ")])),_:1}),h(M,{onClick:V},{default:I(()=>k[4]||(k[4]=[H(" to GitHub Gists ")])),_:1})]),_:1})]),_:1})]),_:1},512)])),[[P,void 0,"contextmenu"]])}}}),ct={class:"upper relative"},pt={class:"track__info__details"},vt={class:"trac__info__details__normal"},mt={key:0,class:"flex flex-row items-center gap-2 playlist-type"},yt={class:"material-symbols-rounded"},ft={class:"flex flew-row items-center"},gt={class:"font-black text-5xl ml-4 w-full flex-1"},wt={class:"text-muted"},xt={class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},ht={key:0,class:"filters relative overflow-clip"},bt=E({__name:"PlaylistMeta",props:{playlist:{type:Object,required:!1},coverIcon:{type:String,required:!0}},setup(a,{expose:f}){var z,R;const l=a,i=x(),e=F(()=>l.playlist),y=x(!0);ye();const r=ce(),w=te(),s=x(((z=e.value)==null?void 0:z.name.trim())??""),g=x(((R=e.value)==null?void 0:R.description.trim())??""),d=()=>({sort:"index",order:"asc",search:"",title:[],artist:[],album:[]}),t=x(null),o=()=>{t.value={...d()}};o(),f({songFilters:t}),N(()=>e.value,()=>{var P,n;s.value=((P=e.value)==null?void 0:P.name.trim())??"",g.value=((n=e.value)==null?void 0:n.description.trim())??""}),N([s,g],()=>{var n,B;if(s.value===((n=e.value)==null?void 0:n.name)&&g.value===((B=e.value)==null?void 0:B.description))return;const P={...e.value,name:s.value,description:g.value};ie(P),w.fetchPlaylists(e.value.id)});const u=(P,n)=>{y.value=P},c=F(()=>e.value.type==="classic"),v=F(()=>["smart"].includes(e.value.type)),_=[{value:"title",label:"Title",icon:"title"},{value:"artist",label:"Artist",icon:"person"},{value:"album",label:"Album",icon:"album"},{value:"duration",label:"Duration",icon:"timer"},{value:"index",label:"Added",icon:"date_range"}],D=F(()=>{let P=0,n=!1;if(!e.value.songs.length)return"N/A";for(const U of e.value.songs){n=n||U.duration<=0;const X=U.duration<=0?3*60:U.duration;P+=X}const B=P,q=Math.floor(B/60),T=Math.floor(q/60),b=n?"about ":"";return T?b+`${T} hr ${q-T*60} min`:q?b+`${q} min ${B-q*60} sec`:b+P+" sec"}),V=x(null),C=async P=>{const B=await(async(q,T)=>{const b=new FormData,U="."+T.name.split(".").pop();var X=T.slice(0,T.size,T.type),ge=new File([X],l.playlist.name+U,{type:T.type});return b.append("file",ge),await(await fetch(q,{method:"POST",body:b})).text()})("/api/config/images",V.value.files[0]);ie({...e.value,cover:B})},k=F(()=>r.playlistPlayOrPauseIcon(e.value.id)),M=()=>{r.playlistId===e.value.id?r.playPause():r.loadPlaylist(e.value.id)};return(P,n)=>{const B=fe("observe-visibility");return m(),A(dt,{ref_key:"contextmenu",ref:i,playlist:e.value,"can-edit":v.value},{default:I(()=>{var q,T;return[e.value?(m(),A(ot,{key:0,ref:"fixedHeading",class:G({hidden:y.value}),playlist:e.value,onLoadPlaylist:M},null,8,["class","playlist"])):S("",!0),h(nt,{ref:"addSongPopup"},null,512),K((m(),$("div",ct,[h(Me,{placeholder:a.coverIcon,src:e.value.cover,class:G(["cover rounded-xl",{"animate-size":e.value.songs.length>7}]),type:"playlist",name:e.value.name,onClick:n[0]||(n[0]=b=>{var U;return(U=V.value)==null?void 0:U.click()})},null,8,["placeholder","src","name","class"]),v.value?S("",!0):(m(),$("input",{key:0,ref_key:"imgUpload",ref:V,type:"file",accept:"image/*",class:"hidden",onChange:C},null,544)),p("div",pt,[p("div",vt,[e.value.type!="classic"?(m(),$("div",mt,[p("span",yt,O(e.value.type=="smart"?"neurology":"bolt"),1),p("span",null,O(e.value.type)+" Playlist",1)])):S("",!0),p("div",ft,[p("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:M},O(k.value),1),p("h1",gt,[h(re,{modelValue:s.value,"onUpdate:modelValue":n[1]||(n[1]=b=>s.value=b)},{default:I(()=>[H(O(e.value.name),1)]),_:1},8,["modelValue"])])]),p("p",wt,[h(re,{modelValue:g.value,"onUpdate:modelValue":n[2]||(n[2]=b=>g.value=b),placeholder:"No description"},{default:I(()=>[H(O(e.value.description),1)]),_:1},8,["modelValue"])])]),p("div",xt,[h(Q,{"primary-text":(q=e.value.songs)==null?void 0:q.length,"secondary-text":((T=e.value.songs)==null?void 0:T.length)===1?"Song":"Songs",class:"w-full"},null,8,["primary-text","secondary-text"]),h(Q,{"primary-text":D.value,class:"w-full","secondary-text":"Total Duration"},null,8,["primary-text"]),e.value.plays?(m(),A(Q,{key:0,"primary-text":e.value.plays,class:"w-full","secondary-text":"Plays"},null,8,["primary-text"])):S("",!0),c.value?(m(),A(ne,{key:1,class:"p-4 w-1/2 flex flex-col items-center justify-center"},{default:I(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:n[3]||(n[3]=b=>P.$refs.addSongPopup.show())}," add_circle "),n[11]||(n[11]=p("span",{class:"text-muted"},"Add a song",-1))]),_:1})):S("",!0),e.value.type!="special"?(m(),A(ne,{key:2,class:"p-4 w-1/2 flex flex-col items-center justify-center"},{default:I(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:n[4]||(n[4]=j(b=>i.value.toggle(b),["prevent","stop"]))}," more_horiz "),n[12]||(n[12]=p("span",{class:"text-muted"},"More...",-1))]),_:1})):S("",!0)]),e.value.songs?(m(),$("div",ht,[h(Te,{modelValue:t.value.search,"onUpdate:modelValue":n[5]||(n[5]=b=>t.value.search=b),icon:"search",placeholder:"Search"},null,8,["modelValue"]),h(Z,{modelValue:t.value.title,"onUpdate:modelValue":n[6]||(n[6]=b=>t.value.title=b),options:L(Le)(e.value.songs),class:"multiselect",icon:"title",placeholder:"Title"},null,8,["modelValue","options"]),h(Z,{modelValue:t.value.artist,"onUpdate:modelValue":n[7]||(n[7]=b=>t.value.artist=b),options:L(Re)(e.value.songs),class:"multiselect",icon:"person",placeholder:"Artist"},null,8,["modelValue","options"]),h(Z,{modelValue:t.value.album,"onUpdate:modelValue":n[8]||(n[8]=b=>t.value.album=b),options:L(Ne)(e.value.songs),class:"multiselect",icon:"album",placeholder:"Album"},null,8,["modelValue","options"]),h(Oe,{modelValue:t.value.sort,"onUpdate:modelValue":n[9]||(n[9]=b=>t.value.sort=b),options:_,icon:"filter_list"},null,8,["modelValue"]),p("span",{class:"cursor-pointer material-symbols-rounded ms-wght-100 text-5xl",onClick:n[10]||(n[10]=b=>t.value.order=t.value.order=="asc"?"desc":"asc")},O(t.value.order=="asc"?"arrow_drop_up":"arrow_drop_down"),1),p("span",{class:"cursor-pointer material-symbols-rounded ms-wght-300 text-3xl mr-2",onClick:o}," delete_sweep ")])):S("",!0)])])),[[B,u]])]}),_:1},8,["playlist","can-edit"])}}}),_t=Y(bt,[["__scopeId","data-v-81204978"]]),kt={class:"playlist relative p-4"},$t={key:0,class:"fill-page"},Ct={key:1,class:"wrap"},Pt={class:"track__data"},Vt={key:1,class:"items"},St={key:2,class:"text-muted italic text-sm text-center mt-10"},It=E({__name:"Template",props:{id:{type:String,required:!0},coverIcon:{type:String,required:!1}},emits:["rearrange"],setup(a,{emit:f}){var c;const l=a,i=te(),e=F(()=>i.getPlaylistById(l.id)),y=x(),r=x(((c=e.value)==null?void 0:c.songs)??[]),w=x(null),s=F(()=>{var v;return((v=y.value)==null?void 0:v.songFilters)??{}});N([s,e],()=>{e.value&&g()},{deep:!0});const g=()=>{var v;r.value=He(((v=e.value)==null?void 0:v.songs)??[],s.value)};ee(()=>{g()}),N(e,()=>{g()});const d=F(()=>e.value.type==="classic"&&document.body.clientWidth>950),t=F(()=>e.value.type==="classic"),o=f,u=v=>{const _=v.moved;_&&o("rearrange",_.oldIndex,_.newIndex)};return(v,_)=>{var D;return m(),$(W,null,[(D=e.value)!=null&&D.cover?(m(),A(pe,{key:0,placeholder:a.coverIcon,src:e.value.cover},null,8,["placeholder","src"])):S("",!0),p("div",kt,[e.value?(m(),$("div",Ct,[p("div",Pt,[h(_t,{ref_key:"playlistMeta",ref:y,playlist:e.value,coverIcon:a.coverIcon},null,8,["playlist","coverIcon"]),r.value.length?(m(),$(W,{key:0},[h(ve,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),_[4]||(_[4]=p("hr",{class:"mb-4"},null,-1))],64)):S("",!0),r.value.length?(m(),$("div",Vt,[r.value.length?(m(),A(L(Ae),{key:a.id,modelValue:r.value,"onUpdate:modelValue":_[1]||(_[1]=V=>r.value=V),class:G([s.value.order=="asc"?"flex-col":"flex-col-reverse","flex"]),disabled:L(Ee)(s.value)||!d.value,"item-key":"id",onChange:u,onDragover:_[2]||(_[2]=j(()=>{},["stop"]))},{item:I(({element:V})=>[K(h(Fe,{index:e.value.songs.findIndex(C=>C.source==V.source),"playlist-id":a.id,selected:w.value==V.id,song:V,"with-album":"","with-cover":"","with-more":"",onClick:C=>w.value==V.id?w.value=-1:w.value=V.id,onUpdate:_[0]||(_[0]=C=>L(i).fetchPlaylists())},null,8,["index","playlist-id","selected","song","onClick"]),[[qe,V.show]])]),_:1},8,["modelValue","class","disabled"])):S("",!0)])):t.value?(m(),$("p",St," No songs. Add some! ")):S("",!0)])])):(m(),$("div",$t,_[3]||(_[3]=[p("h2",{class:"text-2xl text-center error"},"Playlist not found",-1)])))])],64)}}}),Dt=Y(It,[["__scopeId","data-v-8e9c3532"]]);export{Dt as T}; +import{e as E,l as x,B as N,A as F,v as ee,a0 as we,o as m,c as $,r as ue,a1 as K,a2 as xe,J as j,a3 as le,K as G,O as de,_ as Y,a as p,t as O,d as S,F as W,h as ae,b as H,i as A,a4 as he,a5 as ce,a6 as pe,g as h,P as ve,x as be,z as _e,a7 as ke,w as I,q as $e,a8 as me,y as Ce,a9 as Pe,aa as Ve,u as L,I as se,j as te,m as ye,f as J,ab as fe,$ as Se,ac as oe,ad as Ie,E as Me,C as ne,Y as Te,X as Oe,ae as ie,af as qe}from"./index-NeVG6T13.js";import{P as Fe}from"./PlaylistEntry-CFWDnKVM.js";import{d as Ae}from"./vuedraggable.umd-4SxXvN8G.js";import{F as Q}from"./FactCard-DRGvrYjY.js";import{G as Be}from"./gistClient-DE35pGas.js";import{M as De,_ as Ue}from"./Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js";const Ee=a=>{const{search:f,artist:l,title:i,album:e,order:y,sort:r}=a;return(f==null?void 0:f.length)||(l==null?void 0:l.length)||(i==null?void 0:i.length)||(e==null?void 0:e.length)||y!="asc"||r!="index"},He=(a,f)=>{const{search:l,artist:i,title:e,album:y,sort:r}=f;return a.map(w=>{const s=l!=null&&l.length?w.title.toLowerCase().includes(l.toLowerCase())||w.artist.toLowerCase().includes(l.toLowerCase()):!0,g=i!=null&&i.length?i.includes(w.artist):!0,d=e!=null&&e.length?e.includes(w.title):!0,t=y!=null&&y.length?y.includes(w.album.name):!0;return{...w,show:s&&g&&d&&t,index:a.indexOf(w)}}).sort((w,s)=>{const g=w[r],d=s[r];return gd?1:0})},Le=a=>a.map(f=>({label:f.title,value:f.title})),Ne=a=>a.map(f=>({label:f.album.name,value:f.album.name})),Re=a=>{const f=new Set;for(const l of a)for(const i of l.artist.split(", "))f.add(i);return Array.from(f).sort().map(l=>({label:l,value:l}))},je=["placeholder"],ze=E({__name:"EditableText",props:{modelValue:{type:String,required:!0},locked:{type:Boolean,default:!1},noOutline:{type:Boolean,default:!1},placeholder:{type:String,default:"Click to edit"}},emits:["update:modelValue","change"],setup(a,{emit:f}){const l=a,i=x(l.modelValue);N(()=>l.modelValue,t=>i.value=t);const e=x(!1),y=f,r=x(null),w=()=>{l.locked||(e.value=!0,de(()=>{r.value&&r.value.focus()}))},s=F(()=>l.locked?!0:e.value?!1:i.value),g=t=>{i.value=t,y("change",t),y("update:modelValue",t)},d=()=>{r.value&&(r.value.style.height="auto",r.value.style.height=r.value.scrollHeight+"px")};return ee(()=>d()),we(()=>{e.value&&d()}),(t,o)=>(m(),$("div",{class:G(["editable-text",{outlined:!a.noOutline&&e.value}]),onDblclick:j(w,["stop"])},[s.value?ue(t.$slots,"default",{key:0},void 0,!0):K((m(),$("textarea",{key:1,ref_key:"area",ref:r,rows:"1","onUpdate:modelValue":o[0]||(o[0]=u=>i.value=u),onChange:o[1]||(o[1]=u=>g(u.target.value)),onInput:o[2]||(o[2]=u=>d()),onClick:o[3]||(o[3]=j(u=>e.value=!0,["stop"])),onKeydown:[o[4]||(o[4]=le(u=>e.value=!1,["enter"])),o[5]||(o[5]=le(u=>e.value=!1,["esc"]))],onBlur:o[6]||(o[6]=u=>e.value=!1),placeholder:a.placeholder},null,40,je)),[[xe,i.value]])],34))}}),re=Y(ze,[["__scopeId","data-v-f05f8e35"]]),Ge={class:"flex flex-row gap-2 items-center overflow-hidden"},Ye={key:0,class:"material-symbols-rounded ms-wght-200"},We={class:"selected-labels"},Ke=["onClick"],Xe={class:"material-symbols-rounded"},Je=["onClick"],Qe={class:"material-symbols-rounded"},Ze={key:0,class:"material-symbols-rounded"},et=E({__name:"MultiSelect",props:{modelValue:{type:Array,required:!0},options:{type:Array,required:!0},icon:{type:String,required:!1}},emits:["update:modelValue"],setup(a,{emit:f}){const l=a,i=x(l.modelValue),e=x(!1),y=f;N(l,d=>{i.value=d.modelValue},{deep:!0});const r=d=>{i.value.includes(d)?i.value=i.value.filter(t=>t!=d):i.value.push(d),y("update:modelValue",i.value),e.value=!1},w=F(()=>{const d=[];for(const t of i.value){const o=l.options.find(u=>u.value==t);o&&d.push(o.label)}return d}),s=x(null),g=x(null);return N(e,d=>{de(()=>{if(d){const t=s.value.getBoundingClientRect(),o=g.value.getBoundingClientRect(),u=o.top,c=o.bottom,v=window.innerHeight-c,_=o.width;s.value.style.width=_+"px",s.value.style.left=o.left+"px",v>t.height?(s.value.style.top=c+"px",s.value.style.bottom="auto"):(s.value.style.top="auto",s.value.style.bottom=u-t.height+"px")}})}),window.addEventListener("click",()=>{e.value=!1}),(d,t)=>(m(),$("div",{ref_key:"container",ref:g,class:"dropdown"},[p("div",{class:G([{expanded:e.value},"dropdown__selected"]),onClick:t[0]||(t[0]=j(o=>e.value=!e.value,["stop"]))},[p("div",Ge,[a.icon?(m(),$("span",Ye,O(a.icon),1)):S("",!0),p("div",We,[(m(!0),$(W,null,ae(w.value,o=>(m(),$("span",{key:o,class:"selected-label"},[H(O(o)+" ",1),p("i",{class:"material-symbols-rounded",onClick:u=>r(o)}," close ",8,Ke)]))),128))])]),p("i",Xe,O(e.value?"expand_less":"expand_more"),1)],2),(m(),A(he,{to:"#dropdown-target"},[e.value?(m(),$("div",{key:0,ref_key:"trueDropdown",ref:s,class:"dropdown__options"},[(m(!0),$(W,null,ae(a.options,o=>(m(),$("div",{key:o.value,class:"dropdown__option",onClick:j(u=>r(o.value),["stop"])},[p("span",Qe,O(o.icon),1),p("span",null,O(o.label),1),i.value.includes(o.value)?(m(),$("span",Ze,"check")):S("",!0)],8,Je))),128))],512)):S("",!0)]))],512))}}),Z=Y(et,[["__scopeId","data-v-8ec711b9"]]),tt={class:"upperWrapper"},lt={class:"font-black"},at={class:"padding-20 darkback"},st=E({__name:"FixedPlaylistHeader",props:{accentColour:{type:String},playlist:{type:Object,required:!0}},setup(a){const f=ce(),l=a,i=F(()=>f.playlistPlayOrPauseIcon(l.playlist.id));return(e,y)=>(m(),$("div",{class:"fixedPlaylistHeader",style:be({"--colour":a.accentColour})},[a.playlist.cover?(m(),A(pe,{key:0,src:a.playlist.cover},null,8,["src"])):S("",!0),p("div",tt,[p("span",{id:"loadPlaylist",class:"material-symbols-rounded hideIfMobile ms-fill",onClick:y[0]||(y[0]=r=>this.$emit("loadPlaylist"))},O(i.value),1),p("h3",lt,O(a.playlist.name),1)]),p("div",at,[h(ve,{class:"fixedHeader hideIfMobile","with-album":"","with-more":""})])],4))}}),ot=Y(st,[["__scopeId","data-v-34ec84ab"]]),nt=E({__name:"AddNewSong",emits:["update","close"],setup(a,{expose:f,emit:l}){const i=_e(),e=l,y={title:"",artist:"",artists:[],album:"",cover:"",source:"",href:""},r=async(u,c)=>{const v=Ce(String(new Date().getTime())),_=new FormData,D="."+c.name.split(".").pop();var V=c.slice(0,c.size,c.type),C=new File([V],v+D,{type:c.type});return _.append("file",C),await(await fetch(u,{method:"POST",body:_})).text()},w=x(null),s=x([{name:"source",type:"upload",accept:"audio/mp3",required:!0,onUpload:u=>{r("/api/config/tracks",u).then(c=>s.value.find(v=>v.name=="source").value=c)},onChange:async u=>{const c=await ke(u);s.value.find(v=>v.name==="title").value=c.title,s.value.find(v=>v.name==="artist").value=c.artist,s.value.find(v=>v.name==="album").value=c.album,s.value.find(v=>v.name==="cover").value=c.cover,s.value.find(v=>v.name==="source").value=c.source,w.value=c.track.metadata},value:y.source},{name:"title",type:"text",icon:"title",required:!0,value:y.title},{name:"artist",type:"text",icon:"person",required:!0,value:y.artist},{name:"album",type:"text",icon:"album",value:y.album},{name:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:y.cover,onUpload:u=>{r("/api/config/images",u).then(c=>s.value.find(v=>v.name=="cover").value=c)}}]),g=x(null),d=x(null),t=async()=>{if(g.value.show(),!navigator.clipboard)return;const u=await navigator.clipboard.readText();if(!Pe(u))return;const c=s.value.find(v=>v.name==="source");c.value=u,c.onChange(u)},o=async u=>{const c=i.params.id;await Ve(c,{...d.value.toObject(),metadata:w.value}),e("update")};return f({show:t,options:s}),(u,c)=>(m(),A(me,{ref_key:"modal",ref:g,submit:{label:"Add",icon:"add"},name:"Add Song",onClose:c[0]||(c[0]=v=>u.$emit("close")),onSubmit:o},{default:I(()=>[h($e,{ref_key:"form",ref:d,options:s.value},null,8,["options"])]),_:1},512))}}),it=["innerHTML"],rt={class:"buttons w-full justify-end flex gap-2"},ut=E({__name:"Confirmation",props:{title:{type:String,required:!0},question:{type:String,required:!0},closeOnNo:{type:Boolean,required:!1,default:!0}},emits:["close","update","yes","no"],setup(a,{expose:f,emit:l}){const i=a,e=l,y=x(null),r=new De;f({show:()=>{y.value.show()}});const s=()=>{i.closeOnNo&&y.value.hide(),e("no")};return(g,d)=>(m(),A(me,{ref_key:"modal",ref:y,name:a.title,onClose:d[1]||(d[1]=t=>g.$emit("close"))},{default:I(()=>[p("div",{class:"overflow-hidden",innerHTML:L(r).render(a.question)},null,8,it),p("div",rt,[h(se,{type:"success",icon:"check",label:"Yes",onClick:d[0]||(d[0]=t=>g.$emit("yes"))}),h(se,{type:"danger",icon:"close",label:"No",onClick:s})])]),_:1},8,["name"]))}}),dt=E({__name:"PlaylistContext",props:{playlist:{type:Object,required:!0},canEdit:{type:Boolean,required:!1,default:!1}},setup(a,{expose:f}){const l=a,i=te(),e=ye(),y=x(null),r=x(null),w=x(""),s=x(null),g=x(null),d=x(""),t=x(""),o=(C=null)=>{r.value.visible?u():c(C)},u=()=>{r.value.hide()},c=(C=null)=>{const k=y.value.getBoundingClientRect();if(C){r.value.show({top:C.clientY,left:C.clientX});return}const M={top:k.height+k.top+window.scrollY,left:k.width+k.left+window.scrollX};r.value.show(M)};f({show:c,toggle:o,hide:u});const v=()=>{e.push(`/playlist/${l.playlist.id}/edit`)},_=async()=>{await Se(l.playlist.id),await i.fetchPlaylists(),e.push("/")},D=async()=>{const C=await oe(l.playlist);Ie(C,l.playlist.name)},V=async()=>{const C=await oe(l.playlist),k=`${l.playlist.name}.one.playlist`,M=await Be.save({[k]:C},l.playlist.name,!0),R=M.files[k].raw_url,P=M.id,n=M.owner.login,B=R.split("/raw/")[1].split("/")[0],q=`gist:${n}:${P}:${B}`,T=btoa(q);w.value=`http://localhost:1234/import/${T}`,t.value=`Share this URL to import this playlist on another device: [${w.value}](${w.value})`,d.value="Share "+l.playlist.name,s.value.show()};return ee(()=>{document.addEventListener("click",u)}),(C,k)=>{const M=J("v-contextmenu-item"),z=J("v-contextmenu-submenu"),R=J("v-contextmenu"),P=fe("contextmenu");return K((m(),$("div",{ref_key:"box",ref:y},[ue(C.$slots,"default"),h(Ue,{ref_key:"markdownRef",ref:s,title:d.value,content:t.value,onClose:u},null,8,["title","content"]),h(ut,{ref_key:"confirmation",ref:g,title:"Delete Playlist",question:"Are you sure you want to delete this playlist?",onYes:_,onNo:u,"close-on-no":""},null,512),h(R,{ref_key:"contextmenu",ref:r},{default:I(()=>[a.canEdit?(m(),A(M,{key:0,onClick:v},{default:I(()=>k[1]||(k[1]=[p("span",{class:"material-symbols-rounded"},"edit",-1),H(" Edit ")])),_:1})):S("",!0),h(M,{onClick:k[0]||(k[0]=n=>g.value.show())},{default:I(()=>k[2]||(k[2]=[p("span",{class:"material-symbols-rounded"},"delete",-1),H(" Delete ")])),_:1}),h(M,null,{default:I(()=>[k[5]||(k[5]=p("span",{class:"material-symbols-rounded"},"share",-1)),h(z,{title:"Export..."},{default:I(()=>[h(M,{onClick:D},{default:I(()=>k[3]||(k[3]=[H(" to file ")])),_:1}),h(M,{onClick:V},{default:I(()=>k[4]||(k[4]=[H(" to GitHub Gists ")])),_:1})]),_:1})]),_:1})]),_:1},512)])),[[P,void 0,"contextmenu"]])}}}),ct={class:"upper relative"},pt={class:"track__info__details"},vt={class:"trac__info__details__normal"},mt={key:0,class:"flex flex-row items-center gap-2 playlist-type"},yt={class:"material-symbols-rounded"},ft={class:"flex flew-row items-center"},gt={class:"font-black text-5xl ml-4 w-full flex-1"},wt={class:"text-muted"},xt={class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},ht={key:0,class:"filters relative overflow-clip"},bt=E({__name:"PlaylistMeta",props:{playlist:{type:Object,required:!1},coverIcon:{type:String,required:!0}},setup(a,{expose:f}){var z,R;const l=a,i=x(),e=F(()=>l.playlist),y=x(!0);ye();const r=ce(),w=te(),s=x(((z=e.value)==null?void 0:z.name.trim())??""),g=x(((R=e.value)==null?void 0:R.description.trim())??""),d=()=>({sort:"index",order:"asc",search:"",title:[],artist:[],album:[]}),t=x(null),o=()=>{t.value={...d()}};o(),f({songFilters:t}),N(()=>e.value,()=>{var P,n;s.value=((P=e.value)==null?void 0:P.name.trim())??"",g.value=((n=e.value)==null?void 0:n.description.trim())??""}),N([s,g],()=>{var n,B;if(s.value===((n=e.value)==null?void 0:n.name)&&g.value===((B=e.value)==null?void 0:B.description))return;const P={...e.value,name:s.value,description:g.value};ie(P),w.fetchPlaylists(e.value.id)});const u=(P,n)=>{y.value=P},c=F(()=>e.value.type==="classic"),v=F(()=>["smart"].includes(e.value.type)),_=[{value:"title",label:"Title",icon:"title"},{value:"artist",label:"Artist",icon:"person"},{value:"album",label:"Album",icon:"album"},{value:"duration",label:"Duration",icon:"timer"},{value:"index",label:"Added",icon:"date_range"}],D=F(()=>{let P=0,n=!1;if(!e.value.songs.length)return"N/A";for(const U of e.value.songs){n=n||U.duration<=0;const X=U.duration<=0?3*60:U.duration;P+=X}const B=P,q=Math.floor(B/60),T=Math.floor(q/60),b=n?"about ":"";return T?b+`${T} hr ${q-T*60} min`:q?b+`${q} min ${B-q*60} sec`:b+P+" sec"}),V=x(null),C=async P=>{const B=await(async(q,T)=>{const b=new FormData,U="."+T.name.split(".").pop();var X=T.slice(0,T.size,T.type),ge=new File([X],l.playlist.name+U,{type:T.type});return b.append("file",ge),await(await fetch(q,{method:"POST",body:b})).text()})("/api/config/images",V.value.files[0]);ie({...e.value,cover:B})},k=F(()=>r.playlistPlayOrPauseIcon(e.value.id)),M=()=>{r.playlistId===e.value.id?r.playPause():r.loadPlaylist(e.value.id)};return(P,n)=>{const B=fe("observe-visibility");return m(),A(dt,{ref_key:"contextmenu",ref:i,playlist:e.value,"can-edit":v.value},{default:I(()=>{var q,T;return[e.value?(m(),A(ot,{key:0,ref:"fixedHeading",class:G({hidden:y.value}),playlist:e.value,onLoadPlaylist:M},null,8,["class","playlist"])):S("",!0),h(nt,{ref:"addSongPopup"},null,512),K((m(),$("div",ct,[h(Me,{placeholder:a.coverIcon,src:e.value.cover,class:G(["cover rounded-xl",{"animate-size":e.value.songs.length>7}]),type:"playlist",name:e.value.name,onClick:n[0]||(n[0]=b=>{var U;return(U=V.value)==null?void 0:U.click()})},null,8,["placeholder","src","name","class"]),v.value?S("",!0):(m(),$("input",{key:0,ref_key:"imgUpload",ref:V,type:"file",accept:"image/*",class:"hidden",onChange:C},null,544)),p("div",pt,[p("div",vt,[e.value.type!="classic"?(m(),$("div",mt,[p("span",yt,O(e.value.type=="smart"?"neurology":"bolt"),1),p("span",null,O(e.value.type)+" Playlist",1)])):S("",!0),p("div",ft,[p("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:M},O(k.value),1),p("h1",gt,[h(re,{modelValue:s.value,"onUpdate:modelValue":n[1]||(n[1]=b=>s.value=b)},{default:I(()=>[H(O(e.value.name),1)]),_:1},8,["modelValue"])])]),p("p",wt,[h(re,{modelValue:g.value,"onUpdate:modelValue":n[2]||(n[2]=b=>g.value=b),placeholder:"No description"},{default:I(()=>[H(O(e.value.description),1)]),_:1},8,["modelValue"])])]),p("div",xt,[h(Q,{"primary-text":(q=e.value.songs)==null?void 0:q.length,"secondary-text":((T=e.value.songs)==null?void 0:T.length)===1?"Song":"Songs",class:"w-full"},null,8,["primary-text","secondary-text"]),h(Q,{"primary-text":D.value,class:"w-full","secondary-text":"Total Duration"},null,8,["primary-text"]),e.value.plays?(m(),A(Q,{key:0,"primary-text":e.value.plays,class:"w-full","secondary-text":"Plays"},null,8,["primary-text"])):S("",!0),c.value?(m(),A(ne,{key:1,class:"p-4 w-1/2 flex flex-col items-center justify-center"},{default:I(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:n[3]||(n[3]=b=>P.$refs.addSongPopup.show())}," add_circle "),n[11]||(n[11]=p("span",{class:"text-muted"},"Add a song",-1))]),_:1})):S("",!0),e.value.type!="special"?(m(),A(ne,{key:2,class:"p-4 w-1/2 flex flex-col items-center justify-center"},{default:I(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:n[4]||(n[4]=j(b=>i.value.toggle(b),["prevent","stop"]))}," more_horiz "),n[12]||(n[12]=p("span",{class:"text-muted"},"More...",-1))]),_:1})):S("",!0)]),e.value.songs?(m(),$("div",ht,[h(Te,{modelValue:t.value.search,"onUpdate:modelValue":n[5]||(n[5]=b=>t.value.search=b),icon:"search",placeholder:"Search"},null,8,["modelValue"]),h(Z,{modelValue:t.value.title,"onUpdate:modelValue":n[6]||(n[6]=b=>t.value.title=b),options:L(Le)(e.value.songs),class:"multiselect",icon:"title",placeholder:"Title"},null,8,["modelValue","options"]),h(Z,{modelValue:t.value.artist,"onUpdate:modelValue":n[7]||(n[7]=b=>t.value.artist=b),options:L(Re)(e.value.songs),class:"multiselect",icon:"person",placeholder:"Artist"},null,8,["modelValue","options"]),h(Z,{modelValue:t.value.album,"onUpdate:modelValue":n[8]||(n[8]=b=>t.value.album=b),options:L(Ne)(e.value.songs),class:"multiselect",icon:"album",placeholder:"Album"},null,8,["modelValue","options"]),h(Oe,{modelValue:t.value.sort,"onUpdate:modelValue":n[9]||(n[9]=b=>t.value.sort=b),options:_,icon:"filter_list"},null,8,["modelValue"]),p("span",{class:"cursor-pointer material-symbols-rounded ms-wght-100 text-5xl",onClick:n[10]||(n[10]=b=>t.value.order=t.value.order=="asc"?"desc":"asc")},O(t.value.order=="asc"?"arrow_drop_up":"arrow_drop_down"),1),p("span",{class:"cursor-pointer material-symbols-rounded ms-wght-300 text-3xl mr-2",onClick:o}," delete_sweep ")])):S("",!0)])])),[[B,u]])]}),_:1},8,["playlist","can-edit"])}}}),_t=Y(bt,[["__scopeId","data-v-81204978"]]),kt={class:"playlist relative p-4"},$t={key:0,class:"fill-page"},Ct={key:1,class:"wrap"},Pt={class:"track__data"},Vt={key:1,class:"items"},St={key:2,class:"text-muted italic text-sm text-center mt-10"},It=E({__name:"Template",props:{id:{type:String,required:!0},coverIcon:{type:String,required:!1}},emits:["rearrange"],setup(a,{emit:f}){var c;const l=a,i=te(),e=F(()=>i.getPlaylistById(l.id)),y=x(),r=x(((c=e.value)==null?void 0:c.songs)??[]),w=x(null),s=F(()=>{var v;return((v=y.value)==null?void 0:v.songFilters)??{}});N([s,e],()=>{e.value&&g()},{deep:!0});const g=()=>{var v;r.value=He(((v=e.value)==null?void 0:v.songs)??[],s.value)};ee(()=>{g()}),N(e,()=>{g()});const d=F(()=>e.value.type==="classic"&&document.body.clientWidth>950),t=F(()=>e.value.type==="classic"),o=f,u=v=>{const _=v.moved;_&&o("rearrange",_.oldIndex,_.newIndex)};return(v,_)=>{var D;return m(),$(W,null,[(D=e.value)!=null&&D.cover?(m(),A(pe,{key:0,placeholder:a.coverIcon,src:e.value.cover},null,8,["placeholder","src"])):S("",!0),p("div",kt,[e.value?(m(),$("div",Ct,[p("div",Pt,[h(_t,{ref_key:"playlistMeta",ref:y,playlist:e.value,coverIcon:a.coverIcon},null,8,["playlist","coverIcon"]),r.value.length?(m(),$(W,{key:0},[h(ve,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),_[4]||(_[4]=p("hr",{class:"mb-4"},null,-1))],64)):S("",!0),r.value.length?(m(),$("div",Vt,[r.value.length?(m(),A(L(Ae),{key:a.id,modelValue:r.value,"onUpdate:modelValue":_[1]||(_[1]=V=>r.value=V),class:G([s.value.order=="asc"?"flex-col":"flex-col-reverse","flex"]),disabled:L(Ee)(s.value)||!d.value,"item-key":"id",onChange:u,onDragover:_[2]||(_[2]=j(()=>{},["stop"]))},{item:I(({element:V})=>[K(h(Fe,{index:e.value.songs.findIndex(C=>C.source==V.source),"playlist-id":a.id,selected:w.value==V.id,song:V,"with-album":"","with-cover":"","with-more":"",onClick:C=>w.value==V.id?w.value=-1:w.value=V.id,onUpdate:_[0]||(_[0]=C=>L(i).fetchPlaylists())},null,8,["index","playlist-id","selected","song","onClick"]),[[qe,V.show]])]),_:1},8,["modelValue","class","disabled"])):S("",!0)])):t.value?(m(),$("p",St," No songs. Add some! ")):S("",!0)])])):(m(),$("div",$t,_[3]||(_[3]=[p("h2",{class:"text-2xl text-center error"},"Playlist not found",-1)])))])],64)}}}),Dt=Y(It,[["__scopeId","data-v-8e9c3532"]]);export{Dt as T}; diff --git a/src/ui/dist/assets/Template-DPpn6WCj.js.gz b/src/ui/dist/assets/Template-DPpn6WCj.js.gz new file mode 100644 index 00000000..f853770c Binary files /dev/null and b/src/ui/dist/assets/Template-DPpn6WCj.js.gz differ diff --git a/src/ui/dist/assets/Track-CjVZRaly.js b/src/ui/dist/assets/Track-BZee2-_m.js similarity index 96% rename from src/ui/dist/assets/Track-CjVZRaly.js rename to src/ui/dist/assets/Track-BZee2-_m.js index 4e107c3c..beaeeb23 100644 --- a/src/ui/dist/assets/Track-CjVZRaly.js +++ b/src/ui/dist/assets/Track-BZee2-_m.js @@ -1 +1 @@ -import{e as M,l as f,B,v as T,o as a,c as p,_ as E,i as n,w as P,a as l,t as y,d as u,C as U,z as A,a5 as F,A as R,f as K,a6 as O,g as _,E as W,K as I,H as Y,b as L,u as h,F as $,ag as G,ah as J,ai as Q,aj as X,Y as Z,h as N,ak as ee,al as ae,am as te,an as se,ao as j,ap as le,L as oe}from"./index-CTxjSbok.js";import{F as b}from"./FactCard-CcCpkYQW.js";import{_ as ne}from"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import{s as ue}from"./spotify-LGVF5Rtn.js";const re=["aria-valuemax","aria-valuenow"],ie=M({__name:"ProgressCircle",props:{max:{type:Number,required:!1,default:100},modelValue:{type:Number,required:!1,default:0},displayValue:{type:String,required:!0}},setup(m){const v=m,r=f(null),w=()=>{if(r.value){const i=v.modelValue/v.max*100;r.value.style.setProperty("--progress",`${i}%`),r.value.innerHTML=v.displayValue}};B(v,w,{deep:!0});const o=()=>{r.value&&(r.value.style.height=r.value.offsetWidth+"px")};return T(()=>{o(),w()}),window.addEventListener("resize",o),(i,x)=>(a(),p("div",{ref_key:"radialProgress",ref:r,"aria-valuemax":m.max,"aria-valuenow":m.modelValue,"aria-valuemin":"0",class:"radialProgress",role:"progressbar"},null,8,re))}}),q=E(ie,[["__scopeId","data-v-6e1a8d6b"]]),de={class:"material-symbols-rounded ms-fill"},ce={key:0,class:"text-muted"},pe=M({__name:"ButtonCard",props:{icon:{type:String,required:!0},label:{type:String,required:!1}},setup(m){return(v,r)=>(a(),n(U,{class:"p-4 flex flex-col w-full items-center justify-center"},{default:P(()=>[l("span",de,y(m.icon),1),m.label?(a(),p("span",ce,y(m.label),1)):u("",!0)]),_:1}))}}),D=E(pe,[["__scopeId","data-v-98bfdf17"]]),me={class:"track p-4"},ve={key:2},fe={class:"track__data"},ye={class:"upper"},_e={class:"trac__info__details__normal"},xe={class:"text-secondary my-0 text-2xl font-bold"},ke={class:"text-muted text-base ml-4 font-light"},he={class:"flex flew-row items-center"},ge={class:"font-black text-5xl ml-4"},be={key:0,class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},we={class:"spotify-infos mt-4"},Ce={class:"meta items-center"},Ve={class:"text-muted"},$e={key:0,class:"material-symbols-rounded ms-fill"},Pe={class:"flex flex-row align-items"},Se={class:"font-bold"},Be={class:"relative w-full mt-4"},Ue={class:"spotify__features__circles"},Me={class:"text-muted mb-0 text-center text-sm capitalize flex justify-center"},Ee={class:"material-symbols-rounded mr-2"},Ie=M({__name:"Track",setup(m){const v=A(),r=F(),w=R(()=>v.params.hash),o=f(null),i=f(null),x=f("url"),e=f(null),C=f([]),S=f([]),g=f(!1),z={acousticness:"piano",danceability:"nightlife",energy:"electric_bolt",happiness:"mood",instrumentalness:"mic_off",liveness:"groups_2",speechiness:"mic",loudness:"volume_up"},V=async(d=null)=>{var t;o.value=null,e.value=null,C.value=[],o.value=await ae(w.value),window.document.title=`${o.value.title} - reAudioPlayer One`,e.value=await te(o.value.id,!!d,d),i.value=`https://open.spotify.com/track/${e.value.spotify.id}`,x.value="link",g.value=((t=e.value.spotify.id)==null?void 0:t.length)==22,C.value=await se(o.value.id),S.value=[];for(let[c,s]of Object.entries(e.value.spotify.features))["key","mode","tempo","duration_ms","time_signature"].includes(c)||typeof s=="number"&&(c=c.replaceAll("_"," "),c=c.replace("valence","happiness"),c==="loudness"&&(s=60+s),S.value.push({key:c,value:s,icon:z[c]}))};T(V),B(v,()=>V(),{deep:!0}),B(i,()=>{var d,t;if(((t=(d=e.value)==null?void 0:d.spotify)==null?void 0:t.id)==j(i.value,"track")){x.value="link";return}x.value="save"});const H=()=>{if(x.value==="save"){const d=j(i.value,"track");if(!d)return;V(d);return}le(i.value)};return(d,t)=>{const c=K("RouterLink");return a(),p($,null,[o.value?(a(),n(O,{key:0,src:o.value.cover,class:"-z-10"},null,8,["src"])):u("",!0),l("div",me,[o.value?(a(),n(ne,{key:0,ref:"updatePopup",song:o.value,onUpdate:t[0]||(t[0]=()=>V())},null,8,["song"])):u("",!0),o.value?(a(),p("div",ve,[l("div",fe,[l("div",ye,[_(W,{src:o.value.cover,class:"max-w-sm rounded-xl"},null,8,["src"]),l("div",{class:I([{"justify-end":e.value,"justify-center":!e.value},"track__info__details flex flex-col"])},[l("div",_e,[l("h3",xe,[_(Y,{artist:o.value.artist,class:"inline"},null,8,["artist"]),l("span",ke,[_(c,{to:o.value.album.href,class:"linkOnHover"},{default:P(()=>[L(y(o.value.album.name),1)]),_:1},8,["to"])])]),l("div",he,[l("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:t[1]||(t[1]=s=>h(r).loadPlaylist("track",o.value.id))}," play_circle "),l("h1",ge,y(o.value.title),1)])]),e.value&&e.value.spotify.features?(a(),p($,{key:0},[e.value&&e.value.spotify.features?(a(),p("div",be,[e.value?(a(),n(b,{key:0,"primary-text":e.value.spotify.features.key+" "+e.value.spotify.features.mode,class:"w-full","secondary-text":"Key"},null,8,["primary-text"])):u("",!0),e.value?(a(),n(b,{key:1,"primary-text":h(G)(e.value),class:"w-full","secondary-text":"Camelot"},null,8,["primary-text"])):u("",!0),e.value?(a(),n(b,{key:2,"primary-text":Math.round(e.value.spotify.features.tempo),class:"w-full","secondary-text":"BPM"},null,8,["primary-text"])):u("",!0),_(b,{"primary-text":h(J)(o.value.duration),class:"w-full","secondary-text":"Duration"},null,8,["primary-text"]),e.value?(a(),n(b,{key:3,"primary-text":e.value.plays,class:"w-full","secondary-text":"Plays"},null,8,["primary-text"])):u("",!0),_(D,{icon:"edit",label:"Edit",onClick:t[2]||(t[2]=s=>d.$refs.updatePopup.show())}),_(D,{icon:"download",label:"Download",onClick:t[3]||(t[3]=s=>h(Q)(o.value.id))})])):u("",!0),l("div",we,[l("div",Ce,[l("span",Ve,y(h(X)(e.value.spotify.releaseDate)),1),e.value.spotify.explicit?(a(),p("span",$e,"explicit")):u("",!0),l("span",Pe,[t[6]||(t[6]=l("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),l("span",Se,y(e.value.spotify.popularity),1)])]),_(h(ue),{class:I([{enabled:g.value},"spotify-enable"]),onClick:t[4]||(t[4]=s=>g.value=!g.value)},null,8,["class"]),g.value?(a(),n(Z,{key:0,modelValue:i.value,"onUpdate:modelValue":t[5]||(t[5]=s=>i.value=s),icon:x.value,onClick:H},null,8,["modelValue","icon"])):u("",!0)])],64)):u("",!0)],2)])]),l("div",Be,[l("div",Ue,[(a(!0),p($,null,N(S.value,s=>(a(),n(U,{class:"p-2"},{default:P(()=>[s.key==="loudness"?(a(),n(q,{key:0,modelValue:s.value,"onUpdate:modelValue":k=>s.value=k,"display-value":Math.round(-60+s.value)+"dB",class:"circle",max:60},null,8,["modelValue","onUpdate:modelValue","display-value"])):(a(),n(q,{key:1,modelValue:s.value,"onUpdate:modelValue":k=>s.value=k,"display-value":Math.round(s.value*100)+"%",class:"circle",max:1},null,8,["modelValue","onUpdate:modelValue","display-value"])),l("p",Me,[l("span",Ee,y(s.icon),1),L(" "+y(s.key),1)])]),_:2},1024))),256))])]),C.value.length?(a(),n(U,{key:0,class:"p-4 mt-4"},{default:P(()=>[t[7]||(t[7]=l("h2",{class:"!text-left"},"Similar Songs",-1)),(a(!0),p($,null,N(C.value,(s,k)=>(a(),n(ee,{key:k,index:k,song:s,"can-import":"","cannot-add":"","with-album":"","with-cover":""},null,8,["index","song"]))),128))]),_:1})):u("",!0)])):(a(),n(oe,{key:1}))])],64)}}}),De=E(Ie,[["__scopeId","data-v-4d592b47"]]);export{De as default}; +import{e as M,l as f,B,v as T,o as a,c as p,_ as E,i as n,w as P,a as l,t as y,d as u,C as U,z as A,a5 as F,A as R,f as K,a6 as O,g as _,E as W,K as I,H as Y,b as L,u as h,F as $,ag as G,ah as J,ai as Q,aj as X,Y as Z,h as N,ak as ee,al as ae,am as te,an as se,ao as j,ap as le,L as oe}from"./index-NeVG6T13.js";import{F as b}from"./FactCard-DRGvrYjY.js";import{_ as ne}from"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import{s as ue}from"./spotify-ArIR8QxX.js";const re=["aria-valuemax","aria-valuenow"],ie=M({__name:"ProgressCircle",props:{max:{type:Number,required:!1,default:100},modelValue:{type:Number,required:!1,default:0},displayValue:{type:String,required:!0}},setup(m){const v=m,r=f(null),w=()=>{if(r.value){const i=v.modelValue/v.max*100;r.value.style.setProperty("--progress",`${i}%`),r.value.innerHTML=v.displayValue}};B(v,w,{deep:!0});const o=()=>{r.value&&(r.value.style.height=r.value.offsetWidth+"px")};return T(()=>{o(),w()}),window.addEventListener("resize",o),(i,x)=>(a(),p("div",{ref_key:"radialProgress",ref:r,"aria-valuemax":m.max,"aria-valuenow":m.modelValue,"aria-valuemin":"0",class:"radialProgress",role:"progressbar"},null,8,re))}}),q=E(ie,[["__scopeId","data-v-6e1a8d6b"]]),de={class:"material-symbols-rounded ms-fill"},ce={key:0,class:"text-muted"},pe=M({__name:"ButtonCard",props:{icon:{type:String,required:!0},label:{type:String,required:!1}},setup(m){return(v,r)=>(a(),n(U,{class:"p-4 flex flex-col w-full items-center justify-center"},{default:P(()=>[l("span",de,y(m.icon),1),m.label?(a(),p("span",ce,y(m.label),1)):u("",!0)]),_:1}))}}),D=E(pe,[["__scopeId","data-v-98bfdf17"]]),me={class:"track p-4"},ve={key:2},fe={class:"track__data"},ye={class:"upper"},_e={class:"trac__info__details__normal"},xe={class:"text-secondary my-0 text-2xl font-bold"},ke={class:"text-muted text-base ml-4 font-light"},he={class:"flex flew-row items-center"},ge={class:"font-black text-5xl ml-4"},be={key:0,class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},we={class:"spotify-infos mt-4"},Ce={class:"meta items-center"},Ve={class:"text-muted"},$e={key:0,class:"material-symbols-rounded ms-fill"},Pe={class:"flex flex-row align-items"},Se={class:"font-bold"},Be={class:"relative w-full mt-4"},Ue={class:"spotify__features__circles"},Me={class:"text-muted mb-0 text-center text-sm capitalize flex justify-center"},Ee={class:"material-symbols-rounded mr-2"},Ie=M({__name:"Track",setup(m){const v=A(),r=F(),w=R(()=>v.params.hash),o=f(null),i=f(null),x=f("url"),e=f(null),C=f([]),S=f([]),g=f(!1),z={acousticness:"piano",danceability:"nightlife",energy:"electric_bolt",happiness:"mood",instrumentalness:"mic_off",liveness:"groups_2",speechiness:"mic",loudness:"volume_up"},V=async(d=null)=>{var t;o.value=null,e.value=null,C.value=[],o.value=await ae(w.value),window.document.title=`${o.value.title} - reAudioPlayer One`,e.value=await te(o.value.id,!!d,d),i.value=`https://open.spotify.com/track/${e.value.spotify.id}`,x.value="link",g.value=((t=e.value.spotify.id)==null?void 0:t.length)==22,C.value=await se(o.value.id),S.value=[];for(let[c,s]of Object.entries(e.value.spotify.features))["key","mode","tempo","duration_ms","time_signature"].includes(c)||typeof s=="number"&&(c=c.replaceAll("_"," "),c=c.replace("valence","happiness"),c==="loudness"&&(s=60+s),S.value.push({key:c,value:s,icon:z[c]}))};T(V),B(v,()=>V(),{deep:!0}),B(i,()=>{var d,t;if(((t=(d=e.value)==null?void 0:d.spotify)==null?void 0:t.id)==j(i.value,"track")){x.value="link";return}x.value="save"});const H=()=>{if(x.value==="save"){const d=j(i.value,"track");if(!d)return;V(d);return}le(i.value)};return(d,t)=>{const c=K("RouterLink");return a(),p($,null,[o.value?(a(),n(O,{key:0,src:o.value.cover,class:"-z-10"},null,8,["src"])):u("",!0),l("div",me,[o.value?(a(),n(ne,{key:0,ref:"updatePopup",song:o.value,onUpdate:t[0]||(t[0]=()=>V())},null,8,["song"])):u("",!0),o.value?(a(),p("div",ve,[l("div",fe,[l("div",ye,[_(W,{src:o.value.cover,class:"max-w-sm rounded-xl"},null,8,["src"]),l("div",{class:I([{"justify-end":e.value,"justify-center":!e.value},"track__info__details flex flex-col"])},[l("div",_e,[l("h3",xe,[_(Y,{artist:o.value.artist,class:"inline"},null,8,["artist"]),l("span",ke,[_(c,{to:o.value.album.href,class:"linkOnHover"},{default:P(()=>[L(y(o.value.album.name),1)]),_:1},8,["to"])])]),l("div",he,[l("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:t[1]||(t[1]=s=>h(r).loadPlaylist("track",o.value.id))}," play_circle "),l("h1",ge,y(o.value.title),1)])]),e.value&&e.value.spotify.features?(a(),p($,{key:0},[e.value&&e.value.spotify.features?(a(),p("div",be,[e.value?(a(),n(b,{key:0,"primary-text":e.value.spotify.features.key+" "+e.value.spotify.features.mode,class:"w-full","secondary-text":"Key"},null,8,["primary-text"])):u("",!0),e.value?(a(),n(b,{key:1,"primary-text":h(G)(e.value),class:"w-full","secondary-text":"Camelot"},null,8,["primary-text"])):u("",!0),e.value?(a(),n(b,{key:2,"primary-text":Math.round(e.value.spotify.features.tempo),class:"w-full","secondary-text":"BPM"},null,8,["primary-text"])):u("",!0),_(b,{"primary-text":h(J)(o.value.duration),class:"w-full","secondary-text":"Duration"},null,8,["primary-text"]),e.value?(a(),n(b,{key:3,"primary-text":e.value.plays,class:"w-full","secondary-text":"Plays"},null,8,["primary-text"])):u("",!0),_(D,{icon:"edit",label:"Edit",onClick:t[2]||(t[2]=s=>d.$refs.updatePopup.show())}),_(D,{icon:"download",label:"Download",onClick:t[3]||(t[3]=s=>h(Q)(o.value.id))})])):u("",!0),l("div",we,[l("div",Ce,[l("span",Ve,y(h(X)(e.value.spotify.releaseDate)),1),e.value.spotify.explicit?(a(),p("span",$e,"explicit")):u("",!0),l("span",Pe,[t[6]||(t[6]=l("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),l("span",Se,y(e.value.spotify.popularity),1)])]),_(h(ue),{class:I([{enabled:g.value},"spotify-enable"]),onClick:t[4]||(t[4]=s=>g.value=!g.value)},null,8,["class"]),g.value?(a(),n(Z,{key:0,modelValue:i.value,"onUpdate:modelValue":t[5]||(t[5]=s=>i.value=s),icon:x.value,onClick:H},null,8,["modelValue","icon"])):u("",!0)])],64)):u("",!0)],2)])]),l("div",Be,[l("div",Ue,[(a(!0),p($,null,N(S.value,s=>(a(),n(U,{class:"p-2"},{default:P(()=>[s.key==="loudness"?(a(),n(q,{key:0,modelValue:s.value,"onUpdate:modelValue":k=>s.value=k,"display-value":Math.round(-60+s.value)+"dB",class:"circle",max:60},null,8,["modelValue","onUpdate:modelValue","display-value"])):(a(),n(q,{key:1,modelValue:s.value,"onUpdate:modelValue":k=>s.value=k,"display-value":Math.round(s.value*100)+"%",class:"circle",max:1},null,8,["modelValue","onUpdate:modelValue","display-value"])),l("p",Me,[l("span",Ee,y(s.icon),1),L(" "+y(s.key),1)])]),_:2},1024))),256))])]),C.value.length?(a(),n(U,{key:0,class:"p-4 mt-4"},{default:P(()=>[t[7]||(t[7]=l("h2",{class:"!text-left"},"Similar Songs",-1)),(a(!0),p($,null,N(C.value,(s,k)=>(a(),n(ee,{key:k,index:k,song:s,"can-import":"","cannot-add":"","with-album":"","with-cover":""},null,8,["index","song"]))),128))]),_:1})):u("",!0)])):(a(),n(oe,{key:1}))])],64)}}}),De=E(Ie,[["__scopeId","data-v-4d592b47"]]);export{De as default}; diff --git a/src/ui/dist/assets/Track-BZee2-_m.js.gz b/src/ui/dist/assets/Track-BZee2-_m.js.gz new file mode 100644 index 00000000..2026a07b Binary files /dev/null and b/src/ui/dist/assets/Track-BZee2-_m.js.gz differ diff --git a/src/ui/dist/assets/Track-CjVZRaly.js.gz b/src/ui/dist/assets/Track-CjVZRaly.js.gz deleted file mode 100644 index 4bd28766..00000000 Binary files a/src/ui/dist/assets/Track-CjVZRaly.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/TrackCompact--_V4px52.js.gz b/src/ui/dist/assets/TrackCompact--_V4px52.js.gz deleted file mode 100644 index 2a2fa44f..00000000 Binary files a/src/ui/dist/assets/TrackCompact--_V4px52.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/TrackCompact--_V4px52.js b/src/ui/dist/assets/TrackCompact-ze8RovN8.js similarity index 97% rename from src/ui/dist/assets/TrackCompact--_V4px52.js rename to src/ui/dist/assets/TrackCompact-ze8RovN8.js index eda92afd..4e94f8ab 100644 --- a/src/ui/dist/assets/TrackCompact--_V4px52.js +++ b/src/ui/dist/assets/TrackCompact-ze8RovN8.js @@ -1 +1 @@ -import{_ as I,m as N,y as T,l as n,B as D,A as M,aw as i,f as O,o,c as x,i as u,G as R,d as C,ax as V,g as c,w as d,a as s,x as A,u as b,M as w,t as E,C as q}from"./index-CTxjSbok.js";const z={class:"home-track-compact-wrapper"},G=["src"],P={class:"info"},j={class:"title"},F=["href"],J={class:"artist"},K={__name:"TrackCompact",props:{title:String,artist:String,cover:String,id:Number,href:String},emits:["play"],setup(e,{emit:S}){const t=e,$=S,p=N(),f=`/track/${T(String(t.id))}`,m=n(null),h=n(null),B=l=>{l.stopPropagation(),$("play")},H=()=>{var l,a;if(!((l=t==null?void 0:t.href)!=null&&l.includes("spotify.com"))){p.push(f);return}if((a=t==null?void 0:t.href)!=null&&a.includes("spotify.com/album/")){h.value.show();return}m.value.show()},r=n(t.cover);D(()=>t.cover,()=>{r.value=t.cover});const v=M(()=>i(r.value));return(l,a)=>{var y,g;const k=O("router-link");return o(),x("div",z,[(y=e.href)!=null&&y.includes("spotify.com/album/")?(o(),u(R,{key:0,ref_key:"addRelease",ref:h,album:{cover:v.value,name:e.title,artist:e.artist,id:e.href.replace("https://open.spotify.com/album/",""),href:e.href,releaseDate:null}},null,8,["album"])):C("",!0),(g=e.href)!=null&&g.includes("spotify.com/track/")?(o(),u(V,{key:1,ref_key:"addSong",ref:m,song:{cover:v.value,title:e.title,artist:e.artist,id:e.href.replace("https://open.spotify.com/track/",""),href:e.href,releaseDate:null}},null,8,["song"])):C("",!0),c(q,{class:"home-track-compact","with-hover":"",onClick:H},{default:d(()=>[s("div",{style:A({backgroundImage:`url(${b(i)(r.value)})`}),class:"cover",onClick:B},[s("img",{src:b(i)(r.value),class:"hidden",onError:a[0]||(a[0]=Q=>r.value=null)},null,40,G),a[1]||(a[1]=s("div",{class:"play"},[s("span",{class:"material-symbols-rounded"},"play_arrow")],-1))],4),s("div",P,[s("span",j,[e.href?(o(),x("a",{key:1,href:e.href,class:"linkOnHover"},[c(w,{text:e.title},null,8,["text"])],8,F)):(o(),u(k,{key:0,to:f,class:"linkOnHover"},{default:d(()=>[c(w,{text:e.title},null,8,["text"])]),_:1}))]),c(k,{to:`/search/artist:${e.artist}`,class:"linkOnHover"},{default:d(()=>[s("span",J,E(e.artist),1)]),_:1},8,["to"])])]),_:1})])}}},W=I(K,[["__scopeId","data-v-4c18b720"]]);export{W as T}; +import{_ as I,m as N,y as T,l as n,B as D,A as M,aw as i,f as O,o,c as x,i as u,G as R,d as C,ax as V,g as c,w as d,a as s,x as A,u as b,M as w,t as E,C as q}from"./index-NeVG6T13.js";const z={class:"home-track-compact-wrapper"},G=["src"],P={class:"info"},j={class:"title"},F=["href"],J={class:"artist"},K={__name:"TrackCompact",props:{title:String,artist:String,cover:String,id:Number,href:String},emits:["play"],setup(e,{emit:S}){const t=e,$=S,p=N(),f=`/track/${T(String(t.id))}`,m=n(null),h=n(null),B=l=>{l.stopPropagation(),$("play")},H=()=>{var l,a;if(!((l=t==null?void 0:t.href)!=null&&l.includes("spotify.com"))){p.push(f);return}if((a=t==null?void 0:t.href)!=null&&a.includes("spotify.com/album/")){h.value.show();return}m.value.show()},r=n(t.cover);D(()=>t.cover,()=>{r.value=t.cover});const v=M(()=>i(r.value));return(l,a)=>{var y,g;const k=O("router-link");return o(),x("div",z,[(y=e.href)!=null&&y.includes("spotify.com/album/")?(o(),u(R,{key:0,ref_key:"addRelease",ref:h,album:{cover:v.value,name:e.title,artist:e.artist,id:e.href.replace("https://open.spotify.com/album/",""),href:e.href,releaseDate:null}},null,8,["album"])):C("",!0),(g=e.href)!=null&&g.includes("spotify.com/track/")?(o(),u(V,{key:1,ref_key:"addSong",ref:m,song:{cover:v.value,title:e.title,artist:e.artist,id:e.href.replace("https://open.spotify.com/track/",""),href:e.href,releaseDate:null}},null,8,["song"])):C("",!0),c(q,{class:"home-track-compact","with-hover":"",onClick:H},{default:d(()=>[s("div",{style:A({backgroundImage:`url(${b(i)(r.value)})`}),class:"cover",onClick:B},[s("img",{src:b(i)(r.value),class:"hidden",onError:a[0]||(a[0]=Q=>r.value=null)},null,40,G),a[1]||(a[1]=s("div",{class:"play"},[s("span",{class:"material-symbols-rounded"},"play_arrow")],-1))],4),s("div",P,[s("span",j,[e.href?(o(),x("a",{key:1,href:e.href,class:"linkOnHover"},[c(w,{text:e.title},null,8,["text"])],8,F)):(o(),u(k,{key:0,to:f,class:"linkOnHover"},{default:d(()=>[c(w,{text:e.title},null,8,["text"])]),_:1}))]),c(k,{to:`/search/artist:${e.artist}`,class:"linkOnHover"},{default:d(()=>[s("span",J,E(e.artist),1)]),_:1},8,["to"])])]),_:1})])}}},W=I(K,[["__scopeId","data-v-4c18b720"]]);export{W as T}; diff --git a/src/ui/dist/assets/TrackCompact-ze8RovN8.js.gz b/src/ui/dist/assets/TrackCompact-ze8RovN8.js.gz new file mode 100644 index 00000000..0c2dc461 Binary files /dev/null and b/src/ui/dist/assets/TrackCompact-ze8RovN8.js.gz differ diff --git a/src/ui/dist/assets/Welcome-DKD9_kGv.js b/src/ui/dist/assets/Welcome-DD0oKJ1K.js similarity index 98% rename from src/ui/dist/assets/Welcome-DKD9_kGv.js rename to src/ui/dist/assets/Welcome-DD0oKJ1K.js index f95bb6c9..7775dff1 100644 --- a/src/ui/dist/assets/Welcome-DKD9_kGv.js +++ b/src/ui/dist/assets/Welcome-DD0oKJ1K.js @@ -1 +1 @@ -import{_ as f,au as d,o as n,c as i,a as t,K as C,aG as v,n as g,aH as T,F as S,h as k,b as a,a1 as m,a2 as p,d as b,f as w,i as R}from"./index-CTxjSbok.js";const I={name:"ThemeSmall",props:{name:String},methods:{selected(){return d.getCurrentTheme()==this.name},select(){d.setTheme(this.name),this.$emit("selected")}}},x=["src"];function A(r,e,c,y,s,l){return n(),i("div",{onClick:e[0]||(e[0]=(...u)=>l.select&&l.select(...u)),class:"wrapper"},[t("img",{src:`/assets/img/themes/${this.name}.svg`,class:C({selected:l.selected()})},null,10,x)])}const E=f(I,[["render",A],["__scopeId","data-v-321833b6"]]),B={components:{ThemeSmall:E},methods:{updateThemes(){this.mode++},redirect(r){d.open(r)},finalRedirectRestricted(){this.spotifyClientId||this.spotifyClientSecret||fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:"restricted",secret:"restricted"})}).then(r=>{r.status==200&&(setTimeout(()=>fetch("/api/releases"),1e3),this.mode++,setTimeout(()=>{this.$router.push("/")},6*1e3))})},async finalRedirect(){!this.spotifyClientId||!this.spotifyClientSecret||(await v(this.spotifyClientId,this.spotifyClientSecret),setTimeout(()=>fetch("/api/releases"),1e3),setTimeout(()=>fetch("/api/news/articles"),1e3),this.mode++,setTimeout(async()=>{await g(),this.$router.push("/")},6*1e3))}},data(){setInterval(()=>{if(this.mode<3){this.mode++;return}},7*1e3);const r=["dynamic","dark","light"],e=d.getCurrentTheme();return{mode:0,themes:r,themeSelected:e,spotifyClientId:"",spotifyClientSecret:""}},async mounted(){await T()||this.$router.push("/")}},N={class:"welcome bouncy centred-column"},V={key:0,class:"first centred-column"},Y={key:1,class:"first centred-column"},O={key:2,class:"first centred-column"},D={key:3,class:"permanent centred-column"},F={class:"centred-column appear-delayed"},H={key:4,class:"permanent centred-column"},L={class:"centred-column appear-delayed"},P={class:"wrapTogether"},U={class:"wrapTogether"},G={class:"wrapTogether spaceBetween"},M={key:5,class:"centred-column"};function W(r,e,c,y,s,l){const u=w("theme-small");return n(),i("div",N,[s.mode==0?(n(),i("div",V,e[5]||(e[5]=[t("p",null,"Welcome to",-1),t("h1",null,"reAudioPlayer ONE",-1)]))):s.mode==1?(n(),i("div",Y,e[6]||(e[6]=[t("p",null,"The free audio player with the most extensive catalogue",-1),t("h1",null,"ARE YOU READY?",-1)]))):s.mode==2?(n(),i("div",O,e[7]||(e[7]=[t("h1",null,"Almost There",-1),t("p",null,"After a few configurations you're ready to go",-1)]))):s.mode==3?(n(),i("div",D,[e[8]||(e[8]=t("h1",null,"Pick a Theme",-1)),e[9]||(e[9]=t("p",null,"You'll be able to change the theme at any point later on",-1)),e[10]||(e[10]=t("br",null,null,-1)),t("div",F,[(n(),i("div",{class:"themes",key:s.themeSelected},[(n(!0),i(S,null,k(s.themes,(o,h)=>(n(),R(u,{onSelected:l.updateThemes,key:h,name:o},null,8,["onSelected","name"]))),128))]))])])):s.mode==4?(n(),i("div",H,[e[19]||(e[19]=t("h1",null,"Let's integrate Spotify then!",-1)),e[20]||(e[20]=t("p",null,"You'll be able to change the tokens at any point later on",-1)),e[21]||(e[21]=t("br",null,null,-1)),t("div",L,[t("p",null,[e[11]||(e[11]=a("1) Head over to the ")),t("a",{onClick:e[0]||(e[0]=()=>l.redirect("https://developer.spotify.com/dashboard/applications"))},"spotify developer dashboard")]),e[14]||(e[14]=t("p",null,"2) Create An App",-1)),e[15]||(e[15]=t("p",null,"3) Enter any name and any description",-1)),e[16]||(e[16]=t("p",null,[a("4) Edit the settings: set the redirect url to "),t("a",{href:"http://reap.ml/"},"http://reap.ml/")],-1)),e[17]||(e[17]=t("p",null,"5) Copy and enter the client id and secret into the corresponding input field",-1)),e[18]||(e[18]=t("br",null,null,-1)),t("div",P,[e[12]||(e[12]=t("p",null,"Client ID: ",-1)),m(t("input",{type:"text","onUpdate:modelValue":e[1]||(e[1]=o=>s.spotifyClientId=o)},null,512),[[p,s.spotifyClientId]])]),t("div",U,[e[13]||(e[13]=t("p",null,"Client Secret: ",-1)),m(t("input",{type:"text","onUpdate:modelValue":e[2]||(e[2]=o=>s.spotifyClientSecret=o)},null,512),[[p,s.spotifyClientSecret]])]),t("div",G,[t("button",{onClick:e[3]||(e[3]=(...o)=>l.finalRedirect&&l.finalRedirect(...o))},"continue"),t("button",{onClick:e[4]||(e[4]=(...o)=>l.finalRedirectRestricted&&l.finalRedirectRestricted(...o)),class:"restrictedMode"},"enter restricted mode")])])])):s.mode==5?(n(),i("div",M,e[22]||(e[22]=[t("h1",null,"ALRIGHT!",-1),t("p",null,"You're ready to go",-1)]))):b("",!0)])}const J=f(B,[["render",W],["__scopeId","data-v-9aa97202"]]);export{J as default}; +import{_ as f,au as d,o as n,c as i,a as t,K as C,aG as v,n as g,aH as T,F as S,h as k,b as a,a1 as m,a2 as p,d as b,f as w,i as R}from"./index-NeVG6T13.js";const I={name:"ThemeSmall",props:{name:String},methods:{selected(){return d.getCurrentTheme()==this.name},select(){d.setTheme(this.name),this.$emit("selected")}}},x=["src"];function A(r,e,c,y,s,l){return n(),i("div",{onClick:e[0]||(e[0]=(...u)=>l.select&&l.select(...u)),class:"wrapper"},[t("img",{src:`/assets/img/themes/${this.name}.svg`,class:C({selected:l.selected()})},null,10,x)])}const E=f(I,[["render",A],["__scopeId","data-v-321833b6"]]),B={components:{ThemeSmall:E},methods:{updateThemes(){this.mode++},redirect(r){d.open(r)},finalRedirectRestricted(){this.spotifyClientId||this.spotifyClientSecret||fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:"restricted",secret:"restricted"})}).then(r=>{r.status==200&&(setTimeout(()=>fetch("/api/releases"),1e3),this.mode++,setTimeout(()=>{this.$router.push("/")},6*1e3))})},async finalRedirect(){!this.spotifyClientId||!this.spotifyClientSecret||(await v(this.spotifyClientId,this.spotifyClientSecret),setTimeout(()=>fetch("/api/releases"),1e3),setTimeout(()=>fetch("/api/news/articles"),1e3),this.mode++,setTimeout(async()=>{await g(),this.$router.push("/")},6*1e3))}},data(){setInterval(()=>{if(this.mode<3){this.mode++;return}},7*1e3);const r=["dynamic","dark","light"],e=d.getCurrentTheme();return{mode:0,themes:r,themeSelected:e,spotifyClientId:"",spotifyClientSecret:""}},async mounted(){await T()||this.$router.push("/")}},N={class:"welcome bouncy centred-column"},V={key:0,class:"first centred-column"},Y={key:1,class:"first centred-column"},O={key:2,class:"first centred-column"},D={key:3,class:"permanent centred-column"},F={class:"centred-column appear-delayed"},H={key:4,class:"permanent centred-column"},L={class:"centred-column appear-delayed"},P={class:"wrapTogether"},U={class:"wrapTogether"},G={class:"wrapTogether spaceBetween"},M={key:5,class:"centred-column"};function W(r,e,c,y,s,l){const u=w("theme-small");return n(),i("div",N,[s.mode==0?(n(),i("div",V,e[5]||(e[5]=[t("p",null,"Welcome to",-1),t("h1",null,"reAudioPlayer ONE",-1)]))):s.mode==1?(n(),i("div",Y,e[6]||(e[6]=[t("p",null,"The free audio player with the most extensive catalogue",-1),t("h1",null,"ARE YOU READY?",-1)]))):s.mode==2?(n(),i("div",O,e[7]||(e[7]=[t("h1",null,"Almost There",-1),t("p",null,"After a few configurations you're ready to go",-1)]))):s.mode==3?(n(),i("div",D,[e[8]||(e[8]=t("h1",null,"Pick a Theme",-1)),e[9]||(e[9]=t("p",null,"You'll be able to change the theme at any point later on",-1)),e[10]||(e[10]=t("br",null,null,-1)),t("div",F,[(n(),i("div",{class:"themes",key:s.themeSelected},[(n(!0),i(S,null,k(s.themes,(o,h)=>(n(),R(u,{onSelected:l.updateThemes,key:h,name:o},null,8,["onSelected","name"]))),128))]))])])):s.mode==4?(n(),i("div",H,[e[19]||(e[19]=t("h1",null,"Let's integrate Spotify then!",-1)),e[20]||(e[20]=t("p",null,"You'll be able to change the tokens at any point later on",-1)),e[21]||(e[21]=t("br",null,null,-1)),t("div",L,[t("p",null,[e[11]||(e[11]=a("1) Head over to the ")),t("a",{onClick:e[0]||(e[0]=()=>l.redirect("https://developer.spotify.com/dashboard/applications"))},"spotify developer dashboard")]),e[14]||(e[14]=t("p",null,"2) Create An App",-1)),e[15]||(e[15]=t("p",null,"3) Enter any name and any description",-1)),e[16]||(e[16]=t("p",null,[a("4) Edit the settings: set the redirect url to "),t("a",{href:"http://reap.ml/"},"http://reap.ml/")],-1)),e[17]||(e[17]=t("p",null,"5) Copy and enter the client id and secret into the corresponding input field",-1)),e[18]||(e[18]=t("br",null,null,-1)),t("div",P,[e[12]||(e[12]=t("p",null,"Client ID: ",-1)),m(t("input",{type:"text","onUpdate:modelValue":e[1]||(e[1]=o=>s.spotifyClientId=o)},null,512),[[p,s.spotifyClientId]])]),t("div",U,[e[13]||(e[13]=t("p",null,"Client Secret: ",-1)),m(t("input",{type:"text","onUpdate:modelValue":e[2]||(e[2]=o=>s.spotifyClientSecret=o)},null,512),[[p,s.spotifyClientSecret]])]),t("div",G,[t("button",{onClick:e[3]||(e[3]=(...o)=>l.finalRedirect&&l.finalRedirect(...o))},"continue"),t("button",{onClick:e[4]||(e[4]=(...o)=>l.finalRedirectRestricted&&l.finalRedirectRestricted(...o)),class:"restrictedMode"},"enter restricted mode")])])])):s.mode==5?(n(),i("div",M,e[22]||(e[22]=[t("h1",null,"ALRIGHT!",-1),t("p",null,"You're ready to go",-1)]))):b("",!0)])}const J=f(B,[["render",W],["__scopeId","data-v-9aa97202"]]);export{J as default}; diff --git a/src/ui/dist/assets/Welcome-DD0oKJ1K.js.gz b/src/ui/dist/assets/Welcome-DD0oKJ1K.js.gz new file mode 100644 index 00000000..fc02cabd Binary files /dev/null and b/src/ui/dist/assets/Welcome-DD0oKJ1K.js.gz differ diff --git a/src/ui/dist/assets/Welcome-DKD9_kGv.js.gz b/src/ui/dist/assets/Welcome-DKD9_kGv.js.gz deleted file mode 100644 index 504884b3..00000000 Binary files a/src/ui/dist/assets/Welcome-DKD9_kGv.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/gistClient-DbxNDpvo.js b/src/ui/dist/assets/gistClient-DE35pGas.js similarity index 97% rename from src/ui/dist/assets/gistClient-DbxNDpvo.js rename to src/ui/dist/assets/gistClient-DE35pGas.js index f00b9e15..2661b3b1 100644 --- a/src/ui/dist/assets/gistClient-DbxNDpvo.js +++ b/src/ui/dist/assets/gistClient-DE35pGas.js @@ -1,4 +1,4 @@ -import{ar as w,N as d}from"./index-CTxjSbok.js";const r=async(t=null)=>{const a=await w(),n=t??a.github.githubPat;if(!n)throw new Error("No GitHub PAT found");return{Authorization:"Bearer "+n}},y=(t,a="reAudioPlayer One",n="Fully managed with reAudioPlayer One",e=!1)=>{const s={public:e,description:n,files:{[`_${a}.md`]:{content:`# reAudioPlayer One +import{ar as w,N as d}from"./index-NeVG6T13.js";const r=async(t=null)=>{const a=await w(),n=t??a.github.githubPat;if(!n)throw new Error("No GitHub PAT found");return{Authorization:"Bearer "+n}},y=(t,a="reAudioPlayer One",n="Fully managed with reAudioPlayer One",e=!1)=>{const s={public:e,description:n,files:{[`_${a}.md`]:{content:`# reAudioPlayer One This gist was created with reAudioPlayer One diff --git a/src/ui/dist/assets/gistClient-DE35pGas.js.gz b/src/ui/dist/assets/gistClient-DE35pGas.js.gz new file mode 100644 index 00000000..81776594 Binary files /dev/null and b/src/ui/dist/assets/gistClient-DE35pGas.js.gz differ diff --git a/src/ui/dist/assets/gistClient-DbxNDpvo.js.gz b/src/ui/dist/assets/gistClient-DbxNDpvo.js.gz deleted file mode 100644 index 03819cfc..00000000 Binary files a/src/ui/dist/assets/gistClient-DbxNDpvo.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-BYAiHr26.js b/src/ui/dist/assets/index-6egCEB7H.js similarity index 94% rename from src/ui/dist/assets/index-BYAiHr26.js rename to src/ui/dist/assets/index-6egCEB7H.js index 232ecd38..1947238d 100644 --- a/src/ui/dist/assets/index-BYAiHr26.js +++ b/src/ui/dist/assets/index-6egCEB7H.js @@ -1 +1 @@ -import{e as q,a5 as L,j as A,A as u,l as c,B,U as z,o as v,i as S,a as l,x as D,g as f,u as s,K as E,E as F,t as r,aJ as M,a4 as K,d as R,aK as O,_ as T,v as j,f as J,c as $,F as N,w as Q,h as G}from"./index-CTxjSbok.js";import{_ as H}from"./Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js";import{P as W}from"./PlaylistCard-wbTFFeyA.js";import"./PlaylistEntry-DrzB4VXk.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-pw-5IPtN.js";const X={class:"fullscreen"},Y={class:"now"},Z={class:"details"},ee={class:"playlist"},se={class:"title text-6xl mb-4"},le={class:"artist text-3xl"},te={class:"progress"},oe={class:"text-xs text-muted text-right cursor-pointer"},ae={class:"text-xs text-muted text-left"},ne={class:"lower"},ie={class:"actions"},re={class:"volume"},ue=q({__name:"BiggerPlayer",emits:["close"],setup(U,{expose:I,emit:a}){const e=L(),C=A(),_=u(()=>e.playing),h=u(()=>e.song.cover),g=u(()=>e.loaded?`${e.song.title} • ${e.song.artist}`:"reAudioPlayer One");u(()=>C.playlists);const w=u(()=>{var p;return(p=e.playlist)==null?void 0:p.name}),x=c(!1),d=c(!1),k=c(0),V=c(null);document.title=g.value,B(g,p=>{document.title=p}),B(()=>e.song.cover,async()=>{V.value=await O(e.song.cover,g.value,1e3)}),B(()=>e.progressPercent,p=>{k.value=p});const y=a,m=()=>{x.value=!0,document.addEventListener("fullscreenchange",b),document.addEventListener("mousemove",P),document.fullscreenEnabled&&document.documentElement.requestFullscreen()},n=()=>{console.log("hiding..."),x.value=!1,document.addEventListener("fullscreenchange",b),document.removeEventListener("mousemove",P),y("close")};I({show:m,hide:n});const i=z.debounce(()=>{d.value=!1},1e3),P=()=>{d.value=!0,i()},b=()=>{document.fullscreenElement||n()};return(p,t)=>x.value?(v(),S(K,{key:0,to:"#fullscreen-target"},[l("div",X,[l("div",{class:"bg-img",style:D({backgroundImage:`url(${h.value})`})},null,4),l("div",Y,[f(F,{name:s(e).song.title,src:h.value,alt:g.value,class:E(["cover",{playing:_.value}])},null,8,["name","src","alt","class"]),l("div",Z,[l("p",ee," playing from "+r(w.value),1),l("h1",se,r(s(e).song.title),1),l("h3",le,r(s(e).song.artist),1)])]),l("div",{class:E(["controls",{showControls:d.value||!_.value}])},[l("div",te,[l("span",oe,r(s(e).displayProgress),1),f(M,{modelValue:k.value,"onUpdate:modelValue":t[0]||(t[0]=o=>k.value=o),max:1e3,onChange:t[1]||(t[1]=o=>s(e).seekPercent(o/10))},null,8,["modelValue"]),l("span",ae,r(s(e).displayDuration),1)]),l("div",ne,[t[10]||(t[10]=l("div",null,null,-1)),l("div",ie,[l("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:t[2]||(t[2]=(...o)=>s(e).toggleShuffle&&s(e).toggleShuffle(...o))},r(s(e).shuffleIcon),1),l("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:t[3]||(t[3]=(...o)=>s(e).previous&&s(e).previous(...o))}," skip_previous "),l("span",{class:"cursor-pointer material-symbols-rounded ms-fill text-5xl",onClick:t[4]||(t[4]=(...o)=>s(e).playPause&&s(e).playPause(...o))},r(s(e).playing?"pause_circle":"play_circle"),1),l("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:t[5]||(t[5]=(...o)=>s(e).next&&s(e).next(...o))}," skip_next "),l("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:t[6]||(t[6]=(...o)=>s(e).toggleRepeat&&s(e).toggleRepeat(...o))},r(s(e).repeat),1)]),l("div",re,[l("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill select-none",onClick:t[7]||(t[7]=(...o)=>s(e).toggleMute&&s(e).toggleMute(...o))},r(s(e).muteIcon),1),f(M,{modelValue:s(e).volume,"onUpdate:modelValue":t[8]||(t[8]=o=>s(e).volume=o),max:100,onChange:t[9]||(t[9]=o=>s(e).setVolume(o))},null,8,["modelValue"])])])],2)])])):R("",!0)}}),ce=T(ue,[["__scopeId","data-v-4dbd10b1"]]),de={class:"bigPlayer"},me={class:"upNow"},pe={class:"settings"},ve={key:1,class:"no-playlist-selected"},ge={class:"wrapper"},ye={class:"playlists"},fe=q({__name:"index",emits:["maximise"],setup(U,{emit:I}){const a=L(),e=A(),C=c(),_=u(()=>a.playing),h=u(()=>a.song.cover),g=u(()=>a.song.id),w=u(()=>a.loaded?`${a.song.title} • ${a.song.artist}`:"reAudioPlayer One"),x=u(()=>e.playlists),d=c(null);document.title=w.value,B(w,n=>{document.title=n}),j(()=>{window.setTimeout(()=>{var n;(n=d.value)!=null&&n.scrollTop||d.value.scrollToSong(g.value)},1e3)});let k=c(!1);const V=()=>{var n;(n=C.value)==null||n.show()},y=c(!1),m=c(!1);return(n,i)=>{const P=J("Card");return v(),$("div",de,[f(ce,{ref_key:"biggerPlayer",ref:C},null,512),s(a).loaded?(v(),$(N,{key:0},[l("div",me,[f(F,{class:E([{playing:_.value,animate:m.value},"drop-shadow-2xl"]),src:h.value,type:"track","with-ambient":"",name:s(a).song.title},null,8,["class","src","name"]),l("div",{class:E([{playing:_.value,animate:m.value},"blocks"])},i[3]||(i[3]=[l("div",{style:{"animation-delay":"0s"},class:"block"},null,-1),l("div",{style:{"animation-delay":".25s"},class:"block"},null,-1),l("div",{style:{"animation-delay":".5s"},class:"block"},null,-1)]),2)]),s(a).queue&&s(a).playlist&&!y.value?(v(),S(P,{class:"playlist-overflow drop-shadow-2xl relative",key:s(a).playlist.id},{default:Q(()=>[f(H,{ref_key:"playlistScroll",ref:d,playlist:{...s(a).playlist,queue:s(a).queue},"use-queue":"",draggable:"",onRearrange:s(a).rearrangeQueue},null,8,["playlist","onRearrange"])]),_:1})):R("",!0),l("div",pe,[l("span",{class:"iconButton material-symbols-rounded",onClick:V},r(s(k)?"fullscreen_exit":"fullscreen"),1),l("span",{style:D({transform:`rotate(${y.value?0:180}deg)`}),class:"iconButton material-symbols-rounded",onClick:i[0]||(i[0]=()=>y.value=!y.value)},"menu_open",4),l("span",{class:"iconButton material-symbols-rounded",onClick:i[1]||(i[1]=()=>m.value=!m.value)},r(m.value?"motion_photos_off":"animation"),1),l("span",{class:"iconButton material-symbols-rounded",onClick:i[2]||(i[2]=b=>n.$router.push("/player/insights"))}," insights ")])],64)):(v(),$("div",ve,[l("div",ge,[i[4]||(i[4]=l("h2",null,"Nothing playing yet...",-1)),l("div",ye,[(v(!0),$(N,null,G(x.value,b=>(v(),S(W,{playlist:b},null,8,["playlist"]))),256))])])]))])}}}),Pe=T(fe,[["__scopeId","data-v-40f8527c"]]);export{Pe as default}; +import{e as q,a5 as L,j as A,A as u,l as c,B,U as z,o as v,i as S,a as l,x as D,g as f,u as s,K as E,E as F,t as r,aJ as M,a4 as K,d as R,aK as O,_ as T,v as j,f as J,c as $,F as N,w as Q,h as G}from"./index-NeVG6T13.js";import{_ as H}from"./Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js";import{P as W}from"./PlaylistCard-BpEr8q46.js";import"./PlaylistEntry-CFWDnKVM.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";import"./playerInPicture-Dfp9IAsf.js";import"./vuedraggable.umd-4SxXvN8G.js";const X={class:"fullscreen"},Y={class:"now"},Z={class:"details"},ee={class:"playlist"},se={class:"title text-6xl mb-4"},le={class:"artist text-3xl"},te={class:"progress"},oe={class:"text-xs text-muted text-right cursor-pointer"},ae={class:"text-xs text-muted text-left"},ne={class:"lower"},ie={class:"actions"},re={class:"volume"},ue=q({__name:"BiggerPlayer",emits:["close"],setup(U,{expose:I,emit:a}){const e=L(),C=A(),_=u(()=>e.playing),h=u(()=>e.song.cover),g=u(()=>e.loaded?`${e.song.title} • ${e.song.artist}`:"reAudioPlayer One");u(()=>C.playlists);const w=u(()=>{var p;return(p=e.playlist)==null?void 0:p.name}),x=c(!1),d=c(!1),k=c(0),V=c(null);document.title=g.value,B(g,p=>{document.title=p}),B(()=>e.song.cover,async()=>{V.value=await O(e.song.cover,g.value,1e3)}),B(()=>e.progressPercent,p=>{k.value=p});const y=a,m=()=>{x.value=!0,document.addEventListener("fullscreenchange",b),document.addEventListener("mousemove",P),document.fullscreenEnabled&&document.documentElement.requestFullscreen()},n=()=>{console.log("hiding..."),x.value=!1,document.addEventListener("fullscreenchange",b),document.removeEventListener("mousemove",P),y("close")};I({show:m,hide:n});const i=z.debounce(()=>{d.value=!1},1e3),P=()=>{d.value=!0,i()},b=()=>{document.fullscreenElement||n()};return(p,t)=>x.value?(v(),S(K,{key:0,to:"#fullscreen-target"},[l("div",X,[l("div",{class:"bg-img",style:D({backgroundImage:`url(${h.value})`})},null,4),l("div",Y,[f(F,{name:s(e).song.title,src:h.value,alt:g.value,class:E(["cover",{playing:_.value}])},null,8,["name","src","alt","class"]),l("div",Z,[l("p",ee," playing from "+r(w.value),1),l("h1",se,r(s(e).song.title),1),l("h3",le,r(s(e).song.artist),1)])]),l("div",{class:E(["controls",{showControls:d.value||!_.value}])},[l("div",te,[l("span",oe,r(s(e).displayProgress),1),f(M,{modelValue:k.value,"onUpdate:modelValue":t[0]||(t[0]=o=>k.value=o),max:1e3,onChange:t[1]||(t[1]=o=>s(e).seekPercent(o/10))},null,8,["modelValue"]),l("span",ae,r(s(e).displayDuration),1)]),l("div",ne,[t[10]||(t[10]=l("div",null,null,-1)),l("div",ie,[l("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:t[2]||(t[2]=(...o)=>s(e).toggleShuffle&&s(e).toggleShuffle(...o))},r(s(e).shuffleIcon),1),l("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:t[3]||(t[3]=(...o)=>s(e).previous&&s(e).previous(...o))}," skip_previous "),l("span",{class:"cursor-pointer material-symbols-rounded ms-fill text-5xl",onClick:t[4]||(t[4]=(...o)=>s(e).playPause&&s(e).playPause(...o))},r(s(e).playing?"pause_circle":"play_circle"),1),l("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:t[5]||(t[5]=(...o)=>s(e).next&&s(e).next(...o))}," skip_next "),l("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:t[6]||(t[6]=(...o)=>s(e).toggleRepeat&&s(e).toggleRepeat(...o))},r(s(e).repeat),1)]),l("div",re,[l("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill select-none",onClick:t[7]||(t[7]=(...o)=>s(e).toggleMute&&s(e).toggleMute(...o))},r(s(e).muteIcon),1),f(M,{modelValue:s(e).volume,"onUpdate:modelValue":t[8]||(t[8]=o=>s(e).volume=o),max:100,onChange:t[9]||(t[9]=o=>s(e).setVolume(o))},null,8,["modelValue"])])])],2)])])):R("",!0)}}),ce=T(ue,[["__scopeId","data-v-4dbd10b1"]]),de={class:"bigPlayer"},me={class:"upNow"},pe={class:"settings"},ve={key:1,class:"no-playlist-selected"},ge={class:"wrapper"},ye={class:"playlists"},fe=q({__name:"index",emits:["maximise"],setup(U,{emit:I}){const a=L(),e=A(),C=c(),_=u(()=>a.playing),h=u(()=>a.song.cover),g=u(()=>a.song.id),w=u(()=>a.loaded?`${a.song.title} • ${a.song.artist}`:"reAudioPlayer One"),x=u(()=>e.playlists),d=c(null);document.title=w.value,B(w,n=>{document.title=n}),j(()=>{window.setTimeout(()=>{var n;(n=d.value)!=null&&n.scrollTop||d.value.scrollToSong(g.value)},1e3)});let k=c(!1);const V=()=>{var n;(n=C.value)==null||n.show()},y=c(!1),m=c(!1);return(n,i)=>{const P=J("Card");return v(),$("div",de,[f(ce,{ref_key:"biggerPlayer",ref:C},null,512),s(a).loaded?(v(),$(N,{key:0},[l("div",me,[f(F,{class:E([{playing:_.value,animate:m.value},"drop-shadow-2xl"]),src:h.value,type:"track","with-ambient":"",name:s(a).song.title},null,8,["class","src","name"]),l("div",{class:E([{playing:_.value,animate:m.value},"blocks"])},i[3]||(i[3]=[l("div",{style:{"animation-delay":"0s"},class:"block"},null,-1),l("div",{style:{"animation-delay":".25s"},class:"block"},null,-1),l("div",{style:{"animation-delay":".5s"},class:"block"},null,-1)]),2)]),s(a).queue&&s(a).playlist&&!y.value?(v(),S(P,{class:"playlist-overflow drop-shadow-2xl relative",key:s(a).playlist.id},{default:Q(()=>[f(H,{ref_key:"playlistScroll",ref:d,playlist:{...s(a).playlist,queue:s(a).queue},"use-queue":"",draggable:"",onRearrange:s(a).rearrangeQueue},null,8,["playlist","onRearrange"])]),_:1})):R("",!0),l("div",pe,[l("span",{class:"iconButton material-symbols-rounded",onClick:V},r(s(k)?"fullscreen_exit":"fullscreen"),1),l("span",{style:D({transform:`rotate(${y.value?0:180}deg)`}),class:"iconButton material-symbols-rounded",onClick:i[0]||(i[0]=()=>y.value=!y.value)},"menu_open",4),l("span",{class:"iconButton material-symbols-rounded",onClick:i[1]||(i[1]=()=>m.value=!m.value)},r(m.value?"motion_photos_off":"animation"),1),l("span",{class:"iconButton material-symbols-rounded",onClick:i[2]||(i[2]=b=>n.$router.push("/player/insights"))}," insights ")])],64)):(v(),$("div",ve,[l("div",ge,[i[4]||(i[4]=l("h2",null,"Nothing playing yet...",-1)),l("div",ye,[(v(!0),$(N,null,G(x.value,b=>(v(),S(W,{playlist:b},null,8,["playlist"]))),256))])])]))])}}}),Pe=T(fe,[["__scopeId","data-v-40f8527c"]]);export{Pe as default}; diff --git a/src/ui/dist/assets/index-6egCEB7H.js.gz b/src/ui/dist/assets/index-6egCEB7H.js.gz new file mode 100644 index 00000000..75d7b693 Binary files /dev/null and b/src/ui/dist/assets/index-6egCEB7H.js.gz differ diff --git a/src/ui/dist/assets/index-BL89kDiO.js.gz b/src/ui/dist/assets/index-BL89kDiO.js.gz deleted file mode 100644 index f099e9cd..00000000 Binary files a/src/ui/dist/assets/index-BL89kDiO.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-D3xaJuij.js b/src/ui/dist/assets/index-BQ4QfHJY.js similarity index 98% rename from src/ui/dist/assets/index-D3xaJuij.js rename to src/ui/dist/assets/index-BQ4QfHJY.js index 5d4c8a81..b32fa628 100644 --- a/src/ui/dist/assets/index-D3xaJuij.js +++ b/src/ui/dist/assets/index-BQ4QfHJY.js @@ -1 +1 @@ -import{e as S,o as n,c,t as w,K as B,_ as A,l as b,v as W,A as N,i as k,d as P,a as l,b as D,F as C,a5 as Y,g as p,I as x,h as $,w as E,E as z,M as L,C as O,aq as K,ar as R,as as J,at as H,au as G,av as U,u as _,B as F,Y as T,N as Q,z as X,m as Z,Q as ee}from"./index-CTxjSbok.js";import{_ as te}from"./Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js";import{T as j}from"./TrackCompact--_V4px52.js";import{G as le}from"./gistClient-DbxNDpvo.js";const ae=S({__name:"TabButton",props:{name:{type:String,required:!0},active:{type:Boolean,default:!1}},setup(v){return(e,o)=>(n(),c("button",{class:B(["btn",{active:v.active}])},w(v.name),3))}}),se=A(ae,[["__scopeId","data-v-3f038910"]]),oe="1.1.5",ne={class:"flex flex-col"},ie={key:0,class:"text-sm flex items-center gap-2 latest"},re={key:1,class:"text-sm flex items-center gap-2 update"},q="1.1.0",ue=S({__name:"About",setup(v){const e=b(""),o=b("");W(async()=>{const i=await(await fetch("https://api.github.com/repos/reAudioPlayer/one/releases/latest")).json();e.value=i.tag_name,o.value=i.body});const m=N(()=>e.value===q),s=N(()=>oe.split(".").pop()),d=b(null);return(a,i)=>(n(),c("div",ne,[o.value?(n(),k(te,{key:0,content:o.value,title:"What's new in "+e.value,ref_key:"changelog",ref:d,onClose:i[0]||(i[0]=()=>o.value="")},null,8,["content","title"])):P("",!0),l("span",null,[l("strong",null,"v"+w(q)),D(" (Build "+w(s.value)+") ",1)]),e.value?(n(),c(C,{key:1},[m.value?(n(),c("span",ie,[i[3]||(i[3]=l("span",{class:"material-symbols-rounded"},"check",-1)),i[4]||(i[4]=D(" You're on the latest version ")),l("a",{class:"cursor-pointer",onClick:i[1]||(i[1]=h=>{var u;return(u=d.value)==null?void 0:u.show()})}," What's changed? ")])):(n(),c("span",re,[i[5]||(i[5]=l("span",{class:"material-symbols-rounded"},"update",-1)),D(" Update available: "+w(e.value)+" ",1),l("a",{class:"cursor-pointer",onClick:i[2]||(i[2]=h=>{var u;return(u=d.value)==null?void 0:u.show()})}," What's changed? ")]))],64)):P("",!0)]))}}),de=A(ue,[["__scopeId","data-v-5c362a3b"]]),ce={class:"wrap"},pe={class:"flex gap-4 mb-4"},me={class:"covers mb-2"},ve={key:0,class:"items gap-4"},fe={class:"flex justify-between w-full mb-4"},ye={class:"overflow-hidden"},be=["onClick"],he={key:1,class:"text-muted italic"},ge={class:"tracks"},_e={key:0,class:"items gap-4"},ke={class:"flex justify-between w-full mb-4"},we={class:"overflow-hidden"},Ce=["onClick"],xe={class:"flex justify-center w-full mb-4"},Se=["src"],Ve={key:1,class:"text-muted italic"},$e={__name:"LocalData",setup(v){const e=b([]),o=b([]),m=Y(),s=()=>{fetch("/api/config/images").then(u=>u.json()).then(u=>e.value=u),fetch("/api/config/tracks").then(u=>u.json()).then(u=>o.value=u)},d=async u=>{await fetch("/api/config/images",{method:"DELETE",body:JSON.stringify({name:u})}),s()},a=async u=>{fetch("/api/config/tracks",{method:"DELETE",body:JSON.stringify({name:u})}),s()},i=u=>{m.loadPlaylist("track",u)};s();const h=()=>{localStorage.clear(),sessionStorage.clear(),window.location.reload()};return(u,y)=>(n(),c("div",ce,[y[4]||(y[4]=l("h3",null,"Browser Data",-1)),p(x,{class:"mb-4",icon:"delete",label:"Clean browser settings",onClick:h}),y[5]||(y[5]=l("h3",null,"Import / Export",-1)),l("div",pe,[p(x,{icon:"backup",label:"Back up / Export",onClick:y[0]||(y[0]=f=>u.$router.push("/export"))}),p(x,{icon:"cloud_download",label:"Import",onClick:y[1]||(y[1]=f=>u.$router.push("/import"))})]),l("div",me,[y[2]||(y[2]=l("h3",null,"Local covers",-1)),e.value.length?(n(),c("div",ve,[(n(!0),c(C,null,$(e.value,(f,V)=>(n(),k(O,{key:V,class:"cover-wrapper p-4"},{default:E(()=>[p(z,{src:f.name,class:"rounded-xl mb-4"},null,8,["src"]),l("div",fe,[l("p",ye,[p(L,{text:f.name},null,8,["text"])]),l("span",{class:"ml-2 material-symbols-rounded cursor-pointer",onClick:r=>d(f.name)},"delete",8,be)]),(n(!0),c(C,null,$(f.songs,(r,t)=>(n(),k(j,{id:r.id,key:t,artist:r.artist,cover:r.cover,title:r.title,onPlay:g=>i(r.id)},null,8,["id","artist","cover","title","onPlay"]))),128))]),_:2},1024))),128))])):(n(),c("span",he,"No local covers"))]),l("div",ge,[y[3]||(y[3]=l("h3",null,"Local tracks",-1)),o.value.length?(n(),c("div",_e,[(n(!0),c(C,null,$(o.value,(f,V)=>(n(),k(O,{key:V,class:"track p-4"},{default:E(()=>[l("div",ke,[l("p",we,[p(L,{text:f.name},null,8,["text"])]),l("span",{class:"material-symbols-rounded cursor-pointer",onClick:r=>a(f.name)},"delete",8,Ce)]),l("div",xe,[l("audio",{src:"/api/"+f.name.replace("local:","/src/tracks/"),controls:""},null,8,Se)]),(n(!0),c(C,null,$(f.songs,(r,t)=>(n(),k(j,{id:r.id,key:t,artist:r.artist,cover:r.cover,title:r.title,onPlay:g=>i(r.id)},null,8,["id","artist","cover","title","onPlay"]))),128))]),_:2},1024))),128))])):(n(),c("span",Ve,"No local tracks"))])]))}},Pe=A($e,[["__scopeId","data-v-4062735d"]]),Ie={class:"markdown-body"},Ae={__name:"Privacy",setup(v,{expose:e}){return e({frontmatter:{}}),(m,s)=>(n(),c("div",Ie,s[0]||(s[0]=[K("

By default, reAudioPlayer does not share any data with third parties.

Optionally, when entering your Spotify credentials, reAudioPlayer can access your Spotify data to offer the following features:

  • Display your Spotify playlists and offer importing them
  • Search songs on Spotify without leaving reAudioPlayer and adding them to your playlists
  • Display song information (BPM, key, etc.) from Spotify
  • Search artists on Spotify without leaving reAudioPlayer to display their information and follow them on Spotify
  • Display artist information (genres, popularity, etc.) from Spotify
  • Provide the release radar

Optionally, when entering your GitHub credentials, reAudioPlayer can access your GitHub data to offer the following features:

  • Storing your library in a GitHub Gist
  • Importing your library from a GitHub Gist

All data stays between your device and Spotify or Github, respectively.

Depending on the cache policy, reAudioPlayer stores songs locally to improve performance and reduce network traffic. The browser additionally stores the following user preferences in local storage:

  • Theme
  • Selected audio player
  • Volume
  • Repeat mode
  • Picture in Picture mode
  • pre-rendered placeholder images

You can manage your local data, that you manually uploaded to reAudioPlayer, in section “Local Data”. None of this data left or will leave your device.

",9)])))}},Ne={class:"material-symbols-rounded ms-wght-300 cursor-pointer"},De={class:"checkbox__label"},Te={class:"checkbox__label__title"},Be={class:"checkbox__label__sublabel italic"},Ue=S({__name:"Checkbox",props:{modelValue:{type:Boolean,required:!0},label:{type:String,required:!1,default:""},disabled:{type:Boolean,required:!1,default:!1},sublabel:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(v,{emit:e}){const o=v,m=e,s=a=>m("update:modelValue",a),d=()=>{o.disabled||s(!o.modelValue)};return(a,i)=>(n(),c("div",{class:B([{"opacity-50":v.disabled},"checkbox"]),onClick:d},[l("span",Ne,w(v.modelValue?"check_box":"check_box_outline_blank"),1),l("div",De,[l("div",Te,w(v.label),1),l("div",Be,w(v.sublabel),1)])],2))}}),I=A(Ue,[["__scopeId","data-v-be9fa887"]]),Ee={class:"relative"},Oe=S({__name:"Cache",setup(v){const e=b(null),o=b("");R().then(d=>{e.value=d,o.value=JSON.stringify(d)});const m=N(()=>e.value?JSON.stringify(e.value)!==o.value:!1),s=async()=>{m.value&&(await H(e.value),o.value=JSON.stringify(e.value))};return(d,a)=>(n(),c("div",Ee,[e.value?(n(),k(I,{key:0,modelValue:e.value.cache.preserve,"onUpdate:modelValue":a[0]||(a[0]=i=>e.value.cache.preserve=i),label:"Preserve cache"},null,8,["modelValue"])):P("",!0),e.value?(n(),k(I,{key:1,modelValue:e.value.cache.preserveInSession,"onUpdate:modelValue":a[1]||(a[1]=i=>e.value.cache.preserveInSession=i),disabled:e.value.cache.preserve,label:"Preserve cache in session"},null,8,["modelValue","disabled"])):P("",!0),e.value?(n(),k(J,{key:2,modelValue:e.value.cache.strategy,"onUpdate:modelValue":a[2]||(a[2]=i=>e.value.cache.strategy=i),options:[{value:"all",label:"All Songs"},{value:"playlist",label:"Current Playlist"},{value:"currentNext",label:"Current + Next Song "},{value:"current",label:"Current Song Only"}],icon:"cached"},null,8,["modelValue"])):P("",!0),p(x,{disabled:!e.value||!m.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:s},null,8,["disabled"])]))}}),Le={name:"Theme",props:{name:String},methods:{selected(){return G.getCurrentTheme()==this.name},select(){G.setTheme(this.name),this.$emit("selected")}}},Ge=["src"];function je(v,e,o,m,s,d){return n(),c("div",{onClick:e[0]||(e[0]=(...a)=>d.select&&d.select(...a)),class:"wrapper"},[l("p",{class:B(["mb-4",{selected:d.selected()}])},w(o.name),3),l("img",{src:`/assets/img/themes/${this.name}.svg`,class:B({selected:d.selected()})},null,10,Ge)])}const qe=A(Le,[["render",je],["__scopeId","data-v-74855c2d"]]),Re={class:"themes"},Je=S({__name:"Appearance",setup(v){const e=U(),o=["dynamic","light","dark"];return(m,s)=>(n(),c(C,null,[s[3]||(s[3]=l("h3",{class:"mt-[10px]"},"Theme",-1)),p(I,{modelValue:_(e).ambient,"onUpdate:modelValue":s[0]||(s[0]=d=>_(e).ambient=d),disabled:!_(e).themeSupportsAmbient,label:"Ambient"},null,8,["modelValue","disabled"]),l("div",Re,[(n(),c(C,null,$(o,(d,a)=>p(qe,{key:a,name:d},null,8,["name"])),64))]),s[4]||(s[4]=l("h3",{class:"mt-[10px]"},"Sidebar",-1)),p(I,{modelValue:_(e).sidebar.news,"onUpdate:modelValue":s[1]||(s[1]=d=>_(e).sidebar.news=d),label:"Show 'News' Tab"},null,8,["modelValue"]),p(I,{modelValue:_(e).sidebar.sports,"onUpdate:modelValue":s[2]||(s[2]=d=>_(e).sidebar.sports=d),label:"Show 'Sports' Tab"},null,8,["modelValue"])],64))}}),He=A(Je,[["__scopeId","data-v-5cc6477c"]]),Fe={class:"relative"},Me=S({__name:"Player",setup(v){const e=U();return(o,m)=>(n(),c("div",Fe,[p(I,{modelValue:_(e).player.pictureInPicture,"onUpdate:modelValue":m[0]||(m[0]=s=>_(e).player.pictureInPicture=s),label:"Support Picture in Picture",sublabel:"this will slightly reduce performance"},null,8,["modelValue"]),p(J,{modelValue:_(e).player.type,"onUpdate:modelValue":m[1]||(m[1]=s=>_(e).player.type=s),options:[{value:"web",label:"Native player",icon:"horizontal_rule"},{value:"web/wave",label:"Wave player",icon:"graphic_eq"}],icon:"music_note"},null,8,["modelValue"])]))}}),M="reAudioPlayer One",We=`https://audius.co/oauth/auth?scope=read&app_name=${M}&redirect_uri=`,Ye="/audius/callback",ze=()=>{const v=encodeURIComponent(`${window.location.origin}${Ye}`),e=`${We}${v}`;window.open(e,M,"width=500,height=800")},Ke={class:"flex gap-4 justify-end mt-4"},Qe=S({__name:"Integration",setup(v){const e=b(!1),o=b({id:"",secret:""}),m=N(()=>e.value?Object.values(o.value).some(r=>r==="")?!1:o.value.id!==s.value.id||o.value.secret!==s.value.secret||e.value!==s.value.enabled:s.value.enabled),s=b({id:"",secret:"",enabled:!1});fetch("/api/config/spotify").then(async r=>{let t={id:"",secret:"",enabled:!1};if(r.status==200)t=await r.json();else if([204,401].includes(r.status))t={id:"restricted",secret:"restricted",enabled:!1};else throw new Error("Failed to fetch spotify config");s.value=t,s.value.enabled=![t.id,t.secret].includes("restricted"),e.value=s.value.enabled,o.value.id=t.id.replace("restricted",""),o.value.secret=t.secret.replace("restricted","")});const d=async()=>{if(!m.value)return;let r=o.value.id,t=o.value.secret;e.value||(t=r="restricted"),(await fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:r,secret:t})})).ok&&(s.value={id:r,secret:t,enabled:e.value})},a=b(null),i=b("");R().then(r=>{a.value=r,i.value=JSON.stringify(r)});const h=N(()=>a.value?JSON.stringify(a.value)!==i.value:!1),u=async()=>{h.value&&(await H(a.value),i.value=JSON.stringify(a.value))},f=`http://${window.location.host}/api/spotify/callback`,V=async()=>{var r,t;(t=(r=a.value)==null?void 0:r.github)!=null&&t.githubPat&&(a.value.github.gistId||(a.value.github.gistId=await le.search(a.value.github.githubPat),a.value.github.gistId||Q.addError("Failed to find gist","You can start syncing directly in 'Local Data' (a Gist will be created for you) or enter the gist id manually")))};return F(()=>{var r,t;return(t=(r=a.value)==null?void 0:r.github)==null?void 0:t.githubPat},V),(r,t)=>(n(),c(C,null,[p(I,{modelValue:e.value,"onUpdate:modelValue":t[0]||(t[0]=g=>e.value=g),class:"h3 mb-2",label:"Spotify"},null,8,["modelValue"]),l("details",null,[t[6]||(t[6]=l("summary",{class:"cursor-pointer"},"How to",-1)),t[7]||(t[7]=l("p",null,[D(" 1) Head over to the "),l("a",{href:"https://developer.spotify.com/dashboard/applications",target:"_blank"},"spotify developer dashboard")],-1)),t[8]||(t[8]=l("p",null,"2) Create An App",-1)),t[9]||(t[9]=l("p",null,"3) Enter any name and any description",-1)),l("p",null,[t[5]||(t[5]=D(" 4) Edit the settings: set the redirect url to ")),l("a",{href:f},w(f))]),t[10]||(t[10]=l("p",null," 5) Copy and enter the client id and secret into the corresponding input field ",-1))]),t[11]||(t[11]=l("hr",{class:"my-4"},null,-1)),t[12]||(t[12]=l("h5",null,"Client ID:",-1)),p(T,{modelValue:o.value.id,"onUpdate:modelValue":t[1]||(t[1]=g=>o.value.id=g),disabled:!e.value,type:"password",icon:"token"},null,8,["modelValue","disabled"]),t[13]||(t[13]=l("h5",{class:"mt-4"},"Client Secret:",-1)),p(T,{modelValue:o.value.secret,"onUpdate:modelValue":t[2]||(t[2]=g=>o.value.secret=g),disabled:!e.value,type:"password",icon:"lock"},null,8,["modelValue","disabled"]),p(x,{disabled:!m.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:d},null,8,["disabled"]),t[14]||(t[14]=l("h3",{class:"mt-[10px]"},"Github",-1)),t[15]||(t[15]=l("h5",{class:"mt-4"},"PAT:",-1)),a.value?(n(),k(T,{key:0,modelValue:a.value.github.githubPat,"onUpdate:modelValue":t[3]||(t[3]=g=>a.value.github.githubPat=g),icon:"lock",type:"password"},null,8,["modelValue"])):P("",!0),t[16]||(t[16]=l("h5",{class:"mt-4"},"Gist ID:",-1)),a.value?(n(),k(T,{key:1,modelValue:a.value.github.gistId,"onUpdate:modelValue":t[4]||(t[4]=g=>a.value.github.gistId=g),icon:"numbers"},null,8,["modelValue"])):P("",!0),l("div",Ke,[p(x,{disabled:!a.value||!a.value.github.githubPat||!!a.value.github.gistId,icon:"search",label:"Search",onClick:V},null,8,["disabled"]),p(x,{disabled:!a.value||!h.value,icon:"save",label:"Save",onClick:u},null,8,["disabled"])]),t[17]||(t[17]=l("h3",{class:"mt-[10px]"},"Audius",-1)),p(x,{icon:"link",label:"Connect",onClick:_(ze)},null,8,["onClick"])],64))}}),Xe={class:"flex items-center gap-2"},Ze=S({__name:"Developer",setup(v){U();const e=()=>{fetch("/api/system/kill")},o=()=>{fetch("/api/system/restart/nginx")};return(m,s)=>(n(),c("div",Xe,[p(x,{icon:"refresh",label:"Restart",onClick:e,type:"danger"}),p(x,{icon:"refresh",label:"Restart Nginx",onClick:o})]))}}),et={class:"p-[10px] preferences"},tt={class:"wrapper"},lt={class:"sections flex flex-col"},at={class:"section p-2"},st={class:"h5 text-sm"},ot=S({__name:"index",setup(v){const e=U(),o={About:de,Privacy:Ae,"Local Data":Pe,Integrations:Qe,"Cache Policy":Oe,Appearance:He,Player:Me,Developer:Ze},m=N(()=>{const h=[{name:"General",items:["About"]},{name:"My Data",items:["Privacy","Local Data","Integrations"]},{name:"Player",items:["Player","Cache Policy"]},{name:"Appearance",items:["Appearance"]}];return e.mode.dev&&h.push({name:"Developer",items:["Developer"]}),h}),s=X(),d=Z();let a=s.query.tab;const i=b("About");return Object.keys(o).includes(a)&&(i.value=a),F(i,h=>{const u={tab:h};d.replace({query:u})}),(h,u)=>(n(),c("div",et,[u[0]||(u[0]=l("h1",{class:"w-full"},"Preferences",-1)),l("div",tt,[l("div",lt,[(n(!0),c(C,null,$(m.value,y=>(n(),c("div",at,[l("span",st,w(y.name),1),(n(!0),c(C,null,$(y.items,f=>(n(),k(se,{key:f,name:f,active:i.value===f,onClick:V=>i.value=f},null,8,["name","active","onClick"]))),128))]))),256))]),p(O,{class:"content h-max p-4 pt-0"},{default:E(()=>[l("h2",null,w(i.value),1),(n(),k(ee(o[i.value])))]),_:1})])]))}}),dt=A(ot,[["__scopeId","data-v-2a5c5e34"]]);export{dt as default}; +import{e as S,o as n,c,t as w,K as B,_ as A,l as b,v as W,A as N,i as k,d as P,a as l,b as D,F as C,a5 as Y,g as p,I as x,h as $,w as E,E as z,M as L,C as O,aq as K,ar as R,as as J,at as H,au as G,av as U,u as _,B as F,Y as T,N as Q,z as X,m as Z,Q as ee}from"./index-NeVG6T13.js";import{_ as te}from"./Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js";import{T as j}from"./TrackCompact-ze8RovN8.js";import{G as le}from"./gistClient-DE35pGas.js";const ae=S({__name:"TabButton",props:{name:{type:String,required:!0},active:{type:Boolean,default:!1}},setup(v){return(e,o)=>(n(),c("button",{class:B(["btn",{active:v.active}])},w(v.name),3))}}),se=A(ae,[["__scopeId","data-v-3f038910"]]),oe="1.1.6",ne={class:"flex flex-col"},ie={key:0,class:"text-sm flex items-center gap-2 latest"},re={key:1,class:"text-sm flex items-center gap-2 update"},q="1.1.0",ue=S({__name:"About",setup(v){const e=b(""),o=b("");W(async()=>{const i=await(await fetch("https://api.github.com/repos/reAudioPlayer/one/releases/latest")).json();e.value=i.tag_name,o.value=i.body});const m=N(()=>e.value===q),s=N(()=>oe.split(".").pop()),d=b(null);return(a,i)=>(n(),c("div",ne,[o.value?(n(),k(te,{key:0,content:o.value,title:"What's new in "+e.value,ref_key:"changelog",ref:d,onClose:i[0]||(i[0]=()=>o.value="")},null,8,["content","title"])):P("",!0),l("span",null,[l("strong",null,"v"+w(q)),D(" (Build "+w(s.value)+") ",1)]),e.value?(n(),c(C,{key:1},[m.value?(n(),c("span",ie,[i[3]||(i[3]=l("span",{class:"material-symbols-rounded"},"check",-1)),i[4]||(i[4]=D(" You're on the latest version ")),l("a",{class:"cursor-pointer",onClick:i[1]||(i[1]=h=>{var u;return(u=d.value)==null?void 0:u.show()})}," What's changed? ")])):(n(),c("span",re,[i[5]||(i[5]=l("span",{class:"material-symbols-rounded"},"update",-1)),D(" Update available: "+w(e.value)+" ",1),l("a",{class:"cursor-pointer",onClick:i[2]||(i[2]=h=>{var u;return(u=d.value)==null?void 0:u.show()})}," What's changed? ")]))],64)):P("",!0)]))}}),de=A(ue,[["__scopeId","data-v-5c362a3b"]]),ce={class:"wrap"},pe={class:"flex gap-4 mb-4"},me={class:"covers mb-2"},ve={key:0,class:"items gap-4"},fe={class:"flex justify-between w-full mb-4"},ye={class:"overflow-hidden"},be=["onClick"],he={key:1,class:"text-muted italic"},ge={class:"tracks"},_e={key:0,class:"items gap-4"},ke={class:"flex justify-between w-full mb-4"},we={class:"overflow-hidden"},Ce=["onClick"],xe={class:"flex justify-center w-full mb-4"},Se=["src"],Ve={key:1,class:"text-muted italic"},$e={__name:"LocalData",setup(v){const e=b([]),o=b([]),m=Y(),s=()=>{fetch("/api/config/images").then(u=>u.json()).then(u=>e.value=u),fetch("/api/config/tracks").then(u=>u.json()).then(u=>o.value=u)},d=async u=>{await fetch("/api/config/images",{method:"DELETE",body:JSON.stringify({name:u})}),s()},a=async u=>{fetch("/api/config/tracks",{method:"DELETE",body:JSON.stringify({name:u})}),s()},i=u=>{m.loadPlaylist("track",u)};s();const h=()=>{localStorage.clear(),sessionStorage.clear(),window.location.reload()};return(u,y)=>(n(),c("div",ce,[y[4]||(y[4]=l("h3",null,"Browser Data",-1)),p(x,{class:"mb-4",icon:"delete",label:"Clean browser settings",onClick:h}),y[5]||(y[5]=l("h3",null,"Import / Export",-1)),l("div",pe,[p(x,{icon:"backup",label:"Back up / Export",onClick:y[0]||(y[0]=f=>u.$router.push("/export"))}),p(x,{icon:"cloud_download",label:"Import",onClick:y[1]||(y[1]=f=>u.$router.push("/import"))})]),l("div",me,[y[2]||(y[2]=l("h3",null,"Local covers",-1)),e.value.length?(n(),c("div",ve,[(n(!0),c(C,null,$(e.value,(f,V)=>(n(),k(O,{key:V,class:"cover-wrapper p-4"},{default:E(()=>[p(z,{src:f.name,class:"rounded-xl mb-4"},null,8,["src"]),l("div",fe,[l("p",ye,[p(L,{text:f.name},null,8,["text"])]),l("span",{class:"ml-2 material-symbols-rounded cursor-pointer",onClick:r=>d(f.name)},"delete",8,be)]),(n(!0),c(C,null,$(f.songs,(r,t)=>(n(),k(j,{id:r.id,key:t,artist:r.artist,cover:r.cover,title:r.title,onPlay:g=>i(r.id)},null,8,["id","artist","cover","title","onPlay"]))),128))]),_:2},1024))),128))])):(n(),c("span",he,"No local covers"))]),l("div",ge,[y[3]||(y[3]=l("h3",null,"Local tracks",-1)),o.value.length?(n(),c("div",_e,[(n(!0),c(C,null,$(o.value,(f,V)=>(n(),k(O,{key:V,class:"track p-4"},{default:E(()=>[l("div",ke,[l("p",we,[p(L,{text:f.name},null,8,["text"])]),l("span",{class:"material-symbols-rounded cursor-pointer",onClick:r=>a(f.name)},"delete",8,Ce)]),l("div",xe,[l("audio",{src:"/api/"+f.name.replace("local:","/src/tracks/"),controls:""},null,8,Se)]),(n(!0),c(C,null,$(f.songs,(r,t)=>(n(),k(j,{id:r.id,key:t,artist:r.artist,cover:r.cover,title:r.title,onPlay:g=>i(r.id)},null,8,["id","artist","cover","title","onPlay"]))),128))]),_:2},1024))),128))])):(n(),c("span",Ve,"No local tracks"))])]))}},Pe=A($e,[["__scopeId","data-v-4062735d"]]),Ie={class:"markdown-body"},Ae={__name:"Privacy",setup(v,{expose:e}){return e({frontmatter:{}}),(m,s)=>(n(),c("div",Ie,s[0]||(s[0]=[K("

By default, reAudioPlayer does not share any data with third parties.

Optionally, when entering your Spotify credentials, reAudioPlayer can access your Spotify data to offer the following features:

  • Display your Spotify playlists and offer importing them
  • Search songs on Spotify without leaving reAudioPlayer and adding them to your playlists
  • Display song information (BPM, key, etc.) from Spotify
  • Search artists on Spotify without leaving reAudioPlayer to display their information and follow them on Spotify
  • Display artist information (genres, popularity, etc.) from Spotify
  • Provide the release radar

Optionally, when entering your GitHub credentials, reAudioPlayer can access your GitHub data to offer the following features:

  • Storing your library in a GitHub Gist
  • Importing your library from a GitHub Gist

All data stays between your device and Spotify or Github, respectively.

Depending on the cache policy, reAudioPlayer stores songs locally to improve performance and reduce network traffic. The browser additionally stores the following user preferences in local storage:

  • Theme
  • Selected audio player
  • Volume
  • Repeat mode
  • Picture in Picture mode
  • pre-rendered placeholder images

You can manage your local data, that you manually uploaded to reAudioPlayer, in section “Local Data”. None of this data left or will leave your device.

",9)])))}},Ne={class:"material-symbols-rounded ms-wght-300 cursor-pointer"},De={class:"checkbox__label"},Te={class:"checkbox__label__title"},Be={class:"checkbox__label__sublabel italic"},Ue=S({__name:"Checkbox",props:{modelValue:{type:Boolean,required:!0},label:{type:String,required:!1,default:""},disabled:{type:Boolean,required:!1,default:!1},sublabel:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(v,{emit:e}){const o=v,m=e,s=a=>m("update:modelValue",a),d=()=>{o.disabled||s(!o.modelValue)};return(a,i)=>(n(),c("div",{class:B([{"opacity-50":v.disabled},"checkbox"]),onClick:d},[l("span",Ne,w(v.modelValue?"check_box":"check_box_outline_blank"),1),l("div",De,[l("div",Te,w(v.label),1),l("div",Be,w(v.sublabel),1)])],2))}}),I=A(Ue,[["__scopeId","data-v-be9fa887"]]),Ee={class:"relative"},Oe=S({__name:"Cache",setup(v){const e=b(null),o=b("");R().then(d=>{e.value=d,o.value=JSON.stringify(d)});const m=N(()=>e.value?JSON.stringify(e.value)!==o.value:!1),s=async()=>{m.value&&(await H(e.value),o.value=JSON.stringify(e.value))};return(d,a)=>(n(),c("div",Ee,[e.value?(n(),k(I,{key:0,modelValue:e.value.cache.preserve,"onUpdate:modelValue":a[0]||(a[0]=i=>e.value.cache.preserve=i),label:"Preserve cache"},null,8,["modelValue"])):P("",!0),e.value?(n(),k(I,{key:1,modelValue:e.value.cache.preserveInSession,"onUpdate:modelValue":a[1]||(a[1]=i=>e.value.cache.preserveInSession=i),disabled:e.value.cache.preserve,label:"Preserve cache in session"},null,8,["modelValue","disabled"])):P("",!0),e.value?(n(),k(J,{key:2,modelValue:e.value.cache.strategy,"onUpdate:modelValue":a[2]||(a[2]=i=>e.value.cache.strategy=i),options:[{value:"all",label:"All Songs"},{value:"playlist",label:"Current Playlist"},{value:"currentNext",label:"Current + Next Song "},{value:"current",label:"Current Song Only"}],icon:"cached"},null,8,["modelValue"])):P("",!0),p(x,{disabled:!e.value||!m.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:s},null,8,["disabled"])]))}}),Le={name:"Theme",props:{name:String},methods:{selected(){return G.getCurrentTheme()==this.name},select(){G.setTheme(this.name),this.$emit("selected")}}},Ge=["src"];function je(v,e,o,m,s,d){return n(),c("div",{onClick:e[0]||(e[0]=(...a)=>d.select&&d.select(...a)),class:"wrapper"},[l("p",{class:B(["mb-4",{selected:d.selected()}])},w(o.name),3),l("img",{src:`/assets/img/themes/${this.name}.svg`,class:B({selected:d.selected()})},null,10,Ge)])}const qe=A(Le,[["render",je],["__scopeId","data-v-74855c2d"]]),Re={class:"themes"},Je=S({__name:"Appearance",setup(v){const e=U(),o=["dynamic","light","dark"];return(m,s)=>(n(),c(C,null,[s[3]||(s[3]=l("h3",{class:"mt-[10px]"},"Theme",-1)),p(I,{modelValue:_(e).ambient,"onUpdate:modelValue":s[0]||(s[0]=d=>_(e).ambient=d),disabled:!_(e).themeSupportsAmbient,label:"Ambient"},null,8,["modelValue","disabled"]),l("div",Re,[(n(),c(C,null,$(o,(d,a)=>p(qe,{key:a,name:d},null,8,["name"])),64))]),s[4]||(s[4]=l("h3",{class:"mt-[10px]"},"Sidebar",-1)),p(I,{modelValue:_(e).sidebar.news,"onUpdate:modelValue":s[1]||(s[1]=d=>_(e).sidebar.news=d),label:"Show 'News' Tab"},null,8,["modelValue"]),p(I,{modelValue:_(e).sidebar.sports,"onUpdate:modelValue":s[2]||(s[2]=d=>_(e).sidebar.sports=d),label:"Show 'Sports' Tab"},null,8,["modelValue"])],64))}}),He=A(Je,[["__scopeId","data-v-5cc6477c"]]),Fe={class:"relative"},Me=S({__name:"Player",setup(v){const e=U();return(o,m)=>(n(),c("div",Fe,[p(I,{modelValue:_(e).player.pictureInPicture,"onUpdate:modelValue":m[0]||(m[0]=s=>_(e).player.pictureInPicture=s),label:"Support Picture in Picture",sublabel:"this will slightly reduce performance"},null,8,["modelValue"]),p(J,{modelValue:_(e).player.type,"onUpdate:modelValue":m[1]||(m[1]=s=>_(e).player.type=s),options:[{value:"web",label:"Native player",icon:"horizontal_rule"},{value:"web/wave",label:"Wave player",icon:"graphic_eq"}],icon:"music_note"},null,8,["modelValue"])]))}}),M="reAudioPlayer One",We=`https://audius.co/oauth/auth?scope=read&app_name=${M}&redirect_uri=`,Ye="/audius/callback",ze=()=>{const v=encodeURIComponent(`${window.location.origin}${Ye}`),e=`${We}${v}`;window.open(e,M,"width=500,height=800")},Ke={class:"flex gap-4 justify-end mt-4"},Qe=S({__name:"Integration",setup(v){const e=b(!1),o=b({id:"",secret:""}),m=N(()=>e.value?Object.values(o.value).some(r=>r==="")?!1:o.value.id!==s.value.id||o.value.secret!==s.value.secret||e.value!==s.value.enabled:s.value.enabled),s=b({id:"",secret:"",enabled:!1});fetch("/api/config/spotify").then(async r=>{let t={id:"",secret:"",enabled:!1};if(r.status==200)t=await r.json();else if([204,401].includes(r.status))t={id:"restricted",secret:"restricted",enabled:!1};else throw new Error("Failed to fetch spotify config");s.value=t,s.value.enabled=![t.id,t.secret].includes("restricted"),e.value=s.value.enabled,o.value.id=t.id.replace("restricted",""),o.value.secret=t.secret.replace("restricted","")});const d=async()=>{if(!m.value)return;let r=o.value.id,t=o.value.secret;e.value||(t=r="restricted"),(await fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:r,secret:t})})).ok&&(s.value={id:r,secret:t,enabled:e.value})},a=b(null),i=b("");R().then(r=>{a.value=r,i.value=JSON.stringify(r)});const h=N(()=>a.value?JSON.stringify(a.value)!==i.value:!1),u=async()=>{h.value&&(await H(a.value),i.value=JSON.stringify(a.value))},f=`http://${window.location.host}/api/spotify/callback`,V=async()=>{var r,t;(t=(r=a.value)==null?void 0:r.github)!=null&&t.githubPat&&(a.value.github.gistId||(a.value.github.gistId=await le.search(a.value.github.githubPat),a.value.github.gistId||Q.addError("Failed to find gist","You can start syncing directly in 'Local Data' (a Gist will be created for you) or enter the gist id manually")))};return F(()=>{var r,t;return(t=(r=a.value)==null?void 0:r.github)==null?void 0:t.githubPat},V),(r,t)=>(n(),c(C,null,[p(I,{modelValue:e.value,"onUpdate:modelValue":t[0]||(t[0]=g=>e.value=g),class:"h3 mb-2",label:"Spotify"},null,8,["modelValue"]),l("details",null,[t[6]||(t[6]=l("summary",{class:"cursor-pointer"},"How to",-1)),t[7]||(t[7]=l("p",null,[D(" 1) Head over to the "),l("a",{href:"https://developer.spotify.com/dashboard/applications",target:"_blank"},"spotify developer dashboard")],-1)),t[8]||(t[8]=l("p",null,"2) Create An App",-1)),t[9]||(t[9]=l("p",null,"3) Enter any name and any description",-1)),l("p",null,[t[5]||(t[5]=D(" 4) Edit the settings: set the redirect url to ")),l("a",{href:f},w(f))]),t[10]||(t[10]=l("p",null," 5) Copy and enter the client id and secret into the corresponding input field ",-1))]),t[11]||(t[11]=l("hr",{class:"my-4"},null,-1)),t[12]||(t[12]=l("h5",null,"Client ID:",-1)),p(T,{modelValue:o.value.id,"onUpdate:modelValue":t[1]||(t[1]=g=>o.value.id=g),disabled:!e.value,type:"password",icon:"token"},null,8,["modelValue","disabled"]),t[13]||(t[13]=l("h5",{class:"mt-4"},"Client Secret:",-1)),p(T,{modelValue:o.value.secret,"onUpdate:modelValue":t[2]||(t[2]=g=>o.value.secret=g),disabled:!e.value,type:"password",icon:"lock"},null,8,["modelValue","disabled"]),p(x,{disabled:!m.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:d},null,8,["disabled"]),t[14]||(t[14]=l("h3",{class:"mt-[10px]"},"Github",-1)),t[15]||(t[15]=l("h5",{class:"mt-4"},"PAT:",-1)),a.value?(n(),k(T,{key:0,modelValue:a.value.github.githubPat,"onUpdate:modelValue":t[3]||(t[3]=g=>a.value.github.githubPat=g),icon:"lock",type:"password"},null,8,["modelValue"])):P("",!0),t[16]||(t[16]=l("h5",{class:"mt-4"},"Gist ID:",-1)),a.value?(n(),k(T,{key:1,modelValue:a.value.github.gistId,"onUpdate:modelValue":t[4]||(t[4]=g=>a.value.github.gistId=g),icon:"numbers"},null,8,["modelValue"])):P("",!0),l("div",Ke,[p(x,{disabled:!a.value||!a.value.github.githubPat||!!a.value.github.gistId,icon:"search",label:"Search",onClick:V},null,8,["disabled"]),p(x,{disabled:!a.value||!h.value,icon:"save",label:"Save",onClick:u},null,8,["disabled"])]),t[17]||(t[17]=l("h3",{class:"mt-[10px]"},"Audius",-1)),p(x,{icon:"link",label:"Connect",onClick:_(ze)},null,8,["onClick"])],64))}}),Xe={class:"flex items-center gap-2"},Ze=S({__name:"Developer",setup(v){U();const e=()=>{fetch("/api/system/kill")},o=()=>{fetch("/api/system/restart/nginx")};return(m,s)=>(n(),c("div",Xe,[p(x,{icon:"refresh",label:"Restart",onClick:e,type:"danger"}),p(x,{icon:"refresh",label:"Restart Nginx",onClick:o})]))}}),et={class:"p-[10px] preferences"},tt={class:"wrapper"},lt={class:"sections flex flex-col"},at={class:"section p-2"},st={class:"h5 text-sm"},ot=S({__name:"index",setup(v){const e=U(),o={About:de,Privacy:Ae,"Local Data":Pe,Integrations:Qe,"Cache Policy":Oe,Appearance:He,Player:Me,Developer:Ze},m=N(()=>{const h=[{name:"General",items:["About"]},{name:"My Data",items:["Privacy","Local Data","Integrations"]},{name:"Player",items:["Player","Cache Policy"]},{name:"Appearance",items:["Appearance"]}];return e.mode.dev&&h.push({name:"Developer",items:["Developer"]}),h}),s=X(),d=Z();let a=s.query.tab;const i=b("About");return Object.keys(o).includes(a)&&(i.value=a),F(i,h=>{const u={tab:h};d.replace({query:u})}),(h,u)=>(n(),c("div",et,[u[0]||(u[0]=l("h1",{class:"w-full"},"Preferences",-1)),l("div",tt,[l("div",lt,[(n(!0),c(C,null,$(m.value,y=>(n(),c("div",at,[l("span",st,w(y.name),1),(n(!0),c(C,null,$(y.items,f=>(n(),k(se,{key:f,name:f,active:i.value===f,onClick:V=>i.value=f},null,8,["name","active","onClick"]))),128))]))),256))]),p(O,{class:"content h-max p-4 pt-0"},{default:E(()=>[l("h2",null,w(i.value),1),(n(),k(ee(o[i.value])))]),_:1})])]))}}),dt=A(ot,[["__scopeId","data-v-2a5c5e34"]]);export{dt as default}; diff --git a/src/ui/dist/assets/index-BQ4QfHJY.js.gz b/src/ui/dist/assets/index-BQ4QfHJY.js.gz new file mode 100644 index 00000000..5c10df24 Binary files /dev/null and b/src/ui/dist/assets/index-BQ4QfHJY.js.gz differ diff --git a/src/ui/dist/assets/index-BYAiHr26.js.gz b/src/ui/dist/assets/index-BYAiHr26.js.gz deleted file mode 100644 index 3db0f844..00000000 Binary files a/src/ui/dist/assets/index-BYAiHr26.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-DHSwU4cI.js b/src/ui/dist/assets/index-BgnDGhPq.js similarity index 94% rename from src/ui/dist/assets/index-DHSwU4cI.js rename to src/ui/dist/assets/index-BgnDGhPq.js index 3e03e9ca..08800faa 100644 --- a/src/ui/dist/assets/index-DHSwU4cI.js +++ b/src/ui/dist/assets/index-BgnDGhPq.js @@ -1 +1 @@ -import{_ as b,o as n,c as o,a as t,b as x,t as S,d as m,r as F,e as C,f as I,g as r,w as c,F as f,h as y,i as p,P as w,u as P,p as T,j as D,N as B,k,l as v,m as H,n as E,q as j,I as R,C as $,s as q,v as M}from"./index-CTxjSbok.js";import{P as N}from"./PlaylistCard-wbTFFeyA.js";import{T as g}from"./TrackCompact--_V4px52.js";import{P as O}from"./PlaylistEntry-DrzB4VXk.js";import{s as V}from"./spotify-LGVF5Rtn.js";import"./playerInPicture-Dfp9IAsf.js";import"./EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js";const G={name:"FlexShelf",props:{heading:String,icon:String}},L={class:"shelf"},J={class:"header"},W={key:0},z={key:0,class:"icon material-symbols-round"},A={class:"items"};function K(l,e,i,d,s,a){return n(),o("div",L,[t("div",J,[i.heading||i.icon?(n(),o("h2",W,[x(S(i.heading),1),i.icon?(n(),o("span",z,S(i.icon),1)):m("",!0)])):m("",!0)]),t("div",A,[F(l.$slots,"default",{},void 0,!0)])])}const h=b(G,[["render",K],["__scopeId","data-v-27a92662"]]),Q={class:"home"},U={class:"main"},X={key:0,class:"playlists"},Y={key:1,class:"breaking"},Z={key:2,class:"liked"},ee={class:"side"},te={key:0,class:"releases"},se={key:1,class:"disovery"},le={key:2,class:"recommendations"},ne={name:"Home",data(){const l=new Date;return{greeting:l.getHours()<12?"Good morning":l.getHours()<18?"Good afternoon":"Good evening",releases:[],picks:[],songs:[],recommendations:[],data:D()}},mounted(){fetch("/api/releases").then(l=>l.json()).then(l=>{this.releases=l.slice(0,3);const e=l.filter(i=>new Date(i.releaseDate).toDateString()===new Date().toDateString());e.length&&B.addInfo("New releases",`There are ${e.length} new releases today`,5e3,void 0,"/collection/releases")}),this.pick()},computed:{playlists(){return this.data.playlists},liked(){return k("liked").songs.slice(0,3)},breaking(){return k("breaking").songs.slice(0,3)}},methods:{playDiscover(l){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:l.id,type:"track"})})},playRecommendation(l){const e=new CustomEvent("player.play",{detail:{artist:l.artist,title:l.title,source:l.source||l.url||l.href}});window.dispatchEvent(e)},async pick(){if(!this.data.playlists.length){setTimeout(()=>this.pick(),2e3);return}if(this.songs=this.playlists.map(l=>{var e;return((e=k(l.id))==null?void 0:e.songs)||[]}).flat(),!(this.songs.length<3)){for(let l=0;l<3;l++)this.picks.push(this.songs[Math.floor(Math.random()*this.songs.length)]);fetch("/api/spotify/recommendations",{method:"POST",body:JSON.stringify({query:`${this.picks[0].artist} ${this.picks[0].title}`})}).then(l=>l.json()).then(l=>{this.recommendations=l.slice(0,3)})}}}},ie=C({...ne,setup(l){return(e,i)=>{const d=I("router-link");return n(),o("div",Q,[t("div",U,[e.playlists.length?(n(),o("div",X,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/playlists"},{default:c(()=>i[0]||(i[0]=[t("span",{class:"material-symbols-rounded ms-fill"}," library_music ",-1),t("span",{class:"hover:underline"}," Playlists ",-1)])),_:1})]),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.playlists,s=>(n(),p(N,{playlist:s},null,8,["playlist"]))),256))]),_:1})])):m("",!0),e.breaking.length?(n(),o("div",Y,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks/breaking"},{default:c(()=>i[1]||(i[1]=[t("span",{class:"material-symbols-rounded ms-fill"}," trending_up ",-1),t("span",{class:"hover:underline"}," Breaking Songs ",-1)])),_:1})]),r(w),(n(!0),o(f,null,y(e.breaking,(s,a)=>(n(),p(O,{key:a,index:a,"playlist-id":"breaking",song:s,"with-cover":""},null,8,["index","song"]))),128))])):m("",!0),e.liked.length?(n(),o("div",Z,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks"},{default:c(()=>i[2]||(i[2]=[t("span",{class:"material-symbols-rounded ms-fill"}," favorite ",-1),t("span",{class:"hover:underline"}," Liked Songs ",-1)])),_:1})]),r(w),(n(!0),o(f,null,y(e.liked,(s,a)=>(n(),p(O,{key:a,index:a,"playlist-id":"liked",song:s,"with-cover":""},null,8,["index","song"]))),128))])):m("",!0)]),t("div",ee,[e.releases.length?(n(),o("div",te,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/releases"},{default:c(()=>i[3]||(i[3]=[t("span",{class:"material-symbols-rounded ms-fill"}," radar ",-1),t("span",{class:"hover:underline"}," Out now ",-1)])),_:1})]),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.releases,(s,a)=>(n(),p(g,{key:a,artist:s.artist,cover:s.cover,href:s.url,title:s.title,onPlay:()=>e.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):m("",!0),e.picks.length?(n(),o("div",se,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/discover"},{default:c(()=>i[4]||(i[4]=[t("span",{class:"material-symbols-rounded ms-fill"}," explore ",-1),t("span",{class:"hover:underline"}," Discover ",-1)])),_:1})]),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.picks,(s,a)=>(n(),p(g,{id:s.id,key:a,artist:s.artist,cover:P(T)(s.cover),href:s.href,title:s.title,onPlay:()=>e.playDiscover(s)},null,8,["id","artist","cover","href","title","onPlay"]))),128))]),_:1})])):m("",!0),e.recommendations.length?(n(),o("div",le,[i[5]||(i[5]=t("h2",{class:"flex items-center gap-2"},[t("span",{class:"material-symbols-rounded ms-fill"}," recommend "),x(" Suggested ")],-1)),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.recommendations,(s,a)=>(n(),p(g,{key:a,artist:s.artist,cover:s.cover,href:s.href,title:s.title,onPlay:()=>e.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):m("",!0)])])}}}),ae=b(ie,[["__scopeId","data-v-b9b4d097"]]),oe={class:"onboarding p-4"},re={class:"grid grid-cols-2 gap-4 mt-8"},de={class:"flex flex-row justify-end w-full"},ce={class:"flex flex-row items-center"},ue={class:"spotify-playlists"},pe=C({__name:"Onboarding",setup(l){const e=v([]),i=v(!1),d=v(null);H(),E().then(a=>{i.value=a}),fetch("/api/spotify/playlists").then(a=>a.json()).then(a=>{e.value=a});const s={fields:[{name:"name",placeholder:"Playlist name",icon:"title",type:"text",required:!0},{name:"description",placeholder:"Playlist description",icon:"description",type:"text",required:!1}],submit:{label:"Create",action:async()=>{const a=d.value.toObject();await q(a.name,a.description)}}};return(a,u)=>(n(),o("div",oe,[u[3]||(u[3]=t("h1",null,"So nice to meet you!",-1)),u[4]||(u[4]=t("p",null,"Let's get you set up",-1)),t("div",re,[r($,{class:"p-4"},{default:c(()=>[u[1]||(u[1]=t("div",{class:"flex flex-row items-center"},[t("span",{class:"material-symbols-rounded ms-wght-700 text-4xl mr-4"},"add"),t("h2",null,"Create your first playlist")],-1)),r(j,{ref_key:"createForm",ref:d,options:s.fields},null,8,["options"]),t("div",de,[r(R,{onClick:u[0]||(u[0]=_=>s.submit.action()),icon:"add",label:s.submit.label},null,8,["label"])])]),_:1}),e.value.length?(n(),p($,{key:0,class:"p-4"},{default:c(()=>[t("div",ce,[r(P(V),{class:"spotify mr-4"}),u[2]||(u[2]=t("h2",null,"Import from Spotify",-1))]),t("div",ue,[(n(!0),o(f,null,y(e.value,_=>(n(),p(N,{playlist:{..._,type:"classic",plays:0,href:`https://open.spotify.com/playlist/${_.id}`},"is-spotify":""},null,8,["playlist"]))),256))])]),_:1})):m("",!0)])]))}}),me=b(pe,[["__scopeId","data-v-2c465748"]]),be={__name:"index",setup(l){const e=D(),i=v(!1),d=H();return M(()=>{document.body.clientWidth<768&&(i.value=!0,d.push("/collection/playlist"))}),(s,a)=>P(e).notEmpty||i.value?(n(),p(ae,{key:0})):(n(),p(me,{key:1}))}};export{be as default}; +import{_ as b,o as n,c as o,a as t,b as x,t as S,d as m,r as F,e as C,f as I,g as r,w as c,F as f,h as y,i as p,P as w,u as P,p as T,j as D,N as B,k,l as v,m as H,n as E,q as j,I as R,C as $,s as q,v as M}from"./index-NeVG6T13.js";import{P as N}from"./PlaylistCard-BpEr8q46.js";import{T as g}from"./TrackCompact-ze8RovN8.js";import{P as O}from"./PlaylistEntry-CFWDnKVM.js";import{s as V}from"./spotify-ArIR8QxX.js";import"./playerInPicture-Dfp9IAsf.js";import"./EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js";const G={name:"FlexShelf",props:{heading:String,icon:String}},L={class:"shelf"},J={class:"header"},W={key:0},z={key:0,class:"icon material-symbols-round"},A={class:"items"};function K(l,e,i,d,s,a){return n(),o("div",L,[t("div",J,[i.heading||i.icon?(n(),o("h2",W,[x(S(i.heading),1),i.icon?(n(),o("span",z,S(i.icon),1)):m("",!0)])):m("",!0)]),t("div",A,[F(l.$slots,"default",{},void 0,!0)])])}const h=b(G,[["render",K],["__scopeId","data-v-27a92662"]]),Q={class:"home"},U={class:"main"},X={key:0,class:"playlists"},Y={key:1,class:"breaking"},Z={key:2,class:"liked"},ee={class:"side"},te={key:0,class:"releases"},se={key:1,class:"disovery"},le={key:2,class:"recommendations"},ne={name:"Home",data(){const l=new Date;return{greeting:l.getHours()<12?"Good morning":l.getHours()<18?"Good afternoon":"Good evening",releases:[],picks:[],songs:[],recommendations:[],data:D()}},mounted(){fetch("/api/releases").then(l=>l.json()).then(l=>{this.releases=l.slice(0,3);const e=l.filter(i=>new Date(i.releaseDate).toDateString()===new Date().toDateString());e.length&&B.addInfo("New releases",`There are ${e.length} new releases today`,5e3,void 0,"/collection/releases")}),this.pick()},computed:{playlists(){return this.data.playlists},liked(){return k("liked").songs.slice(0,3)},breaking(){return k("breaking").songs.slice(0,3)}},methods:{playDiscover(l){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:l.id,type:"track"})})},playRecommendation(l){const e=new CustomEvent("player.play",{detail:{artist:l.artist,title:l.title,source:l.source||l.url||l.href}});window.dispatchEvent(e)},async pick(){if(!this.data.playlists.length){setTimeout(()=>this.pick(),2e3);return}if(this.songs=this.playlists.map(l=>{var e;return((e=k(l.id))==null?void 0:e.songs)||[]}).flat(),!(this.songs.length<3)){for(let l=0;l<3;l++)this.picks.push(this.songs[Math.floor(Math.random()*this.songs.length)]);fetch("/api/spotify/recommendations",{method:"POST",body:JSON.stringify({query:`${this.picks[0].artist} ${this.picks[0].title}`})}).then(l=>l.json()).then(l=>{this.recommendations=l.slice(0,3)})}}}},ie=C({...ne,setup(l){return(e,i)=>{const d=I("router-link");return n(),o("div",Q,[t("div",U,[e.playlists.length?(n(),o("div",X,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/playlists"},{default:c(()=>i[0]||(i[0]=[t("span",{class:"material-symbols-rounded ms-fill"}," library_music ",-1),t("span",{class:"hover:underline"}," Playlists ",-1)])),_:1})]),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.playlists,s=>(n(),p(N,{playlist:s},null,8,["playlist"]))),256))]),_:1})])):m("",!0),e.breaking.length?(n(),o("div",Y,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks/breaking"},{default:c(()=>i[1]||(i[1]=[t("span",{class:"material-symbols-rounded ms-fill"}," trending_up ",-1),t("span",{class:"hover:underline"}," Breaking Songs ",-1)])),_:1})]),r(w),(n(!0),o(f,null,y(e.breaking,(s,a)=>(n(),p(O,{key:a,index:a,"playlist-id":"breaking",song:s,"with-cover":""},null,8,["index","song"]))),128))])):m("",!0),e.liked.length?(n(),o("div",Z,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks"},{default:c(()=>i[2]||(i[2]=[t("span",{class:"material-symbols-rounded ms-fill"}," favorite ",-1),t("span",{class:"hover:underline"}," Liked Songs ",-1)])),_:1})]),r(w),(n(!0),o(f,null,y(e.liked,(s,a)=>(n(),p(O,{key:a,index:a,"playlist-id":"liked",song:s,"with-cover":""},null,8,["index","song"]))),128))])):m("",!0)]),t("div",ee,[e.releases.length?(n(),o("div",te,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/releases"},{default:c(()=>i[3]||(i[3]=[t("span",{class:"material-symbols-rounded ms-fill"}," radar ",-1),t("span",{class:"hover:underline"}," Out now ",-1)])),_:1})]),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.releases,(s,a)=>(n(),p(g,{key:a,artist:s.artist,cover:s.cover,href:s.url,title:s.title,onPlay:()=>e.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):m("",!0),e.picks.length?(n(),o("div",se,[t("h2",null,[r(d,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/discover"},{default:c(()=>i[4]||(i[4]=[t("span",{class:"material-symbols-rounded ms-fill"}," explore ",-1),t("span",{class:"hover:underline"}," Discover ",-1)])),_:1})]),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.picks,(s,a)=>(n(),p(g,{id:s.id,key:a,artist:s.artist,cover:P(T)(s.cover),href:s.href,title:s.title,onPlay:()=>e.playDiscover(s)},null,8,["id","artist","cover","href","title","onPlay"]))),128))]),_:1})])):m("",!0),e.recommendations.length?(n(),o("div",le,[i[5]||(i[5]=t("h2",{class:"flex items-center gap-2"},[t("span",{class:"material-symbols-rounded ms-fill"}," recommend "),x(" Suggested ")],-1)),r(h,null,{default:c(()=>[(n(!0),o(f,null,y(e.recommendations,(s,a)=>(n(),p(g,{key:a,artist:s.artist,cover:s.cover,href:s.href,title:s.title,onPlay:()=>e.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):m("",!0)])])}}}),ae=b(ie,[["__scopeId","data-v-b9b4d097"]]),oe={class:"onboarding p-4"},re={class:"grid grid-cols-2 gap-4 mt-8"},de={class:"flex flex-row justify-end w-full"},ce={class:"flex flex-row items-center"},ue={class:"spotify-playlists"},pe=C({__name:"Onboarding",setup(l){const e=v([]),i=v(!1),d=v(null);H(),E().then(a=>{i.value=a}),fetch("/api/spotify/playlists").then(a=>a.json()).then(a=>{e.value=a});const s={fields:[{name:"name",placeholder:"Playlist name",icon:"title",type:"text",required:!0},{name:"description",placeholder:"Playlist description",icon:"description",type:"text",required:!1}],submit:{label:"Create",action:async()=>{const a=d.value.toObject();await q(a.name,a.description)}}};return(a,u)=>(n(),o("div",oe,[u[3]||(u[3]=t("h1",null,"So nice to meet you!",-1)),u[4]||(u[4]=t("p",null,"Let's get you set up",-1)),t("div",re,[r($,{class:"p-4"},{default:c(()=>[u[1]||(u[1]=t("div",{class:"flex flex-row items-center"},[t("span",{class:"material-symbols-rounded ms-wght-700 text-4xl mr-4"},"add"),t("h2",null,"Create your first playlist")],-1)),r(j,{ref_key:"createForm",ref:d,options:s.fields},null,8,["options"]),t("div",de,[r(R,{onClick:u[0]||(u[0]=_=>s.submit.action()),icon:"add",label:s.submit.label},null,8,["label"])])]),_:1}),e.value.length?(n(),p($,{key:0,class:"p-4"},{default:c(()=>[t("div",ce,[r(P(V),{class:"spotify mr-4"}),u[2]||(u[2]=t("h2",null,"Import from Spotify",-1))]),t("div",ue,[(n(!0),o(f,null,y(e.value,_=>(n(),p(N,{playlist:{..._,type:"classic",plays:0,href:`https://open.spotify.com/playlist/${_.id}`},"is-spotify":""},null,8,["playlist"]))),256))])]),_:1})):m("",!0)])]))}}),me=b(pe,[["__scopeId","data-v-2c465748"]]),be={__name:"index",setup(l){const e=D(),i=v(!1),d=H();return M(()=>{document.body.clientWidth<768&&(i.value=!0,d.push("/collection/playlist"))}),(s,a)=>P(e).notEmpty||i.value?(n(),p(ae,{key:0})):(n(),p(me,{key:1}))}};export{be as default}; diff --git a/src/ui/dist/assets/index-BgnDGhPq.js.gz b/src/ui/dist/assets/index-BgnDGhPq.js.gz new file mode 100644 index 00000000..918effa3 Binary files /dev/null and b/src/ui/dist/assets/index-BgnDGhPq.js.gz differ diff --git a/src/ui/dist/assets/index-CTxjSbok.js.gz b/src/ui/dist/assets/index-CTxjSbok.js.gz deleted file mode 100644 index 863b8059..00000000 Binary files a/src/ui/dist/assets/index-CTxjSbok.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-BL89kDiO.js b/src/ui/dist/assets/index-Cl954rX4.js similarity index 97% rename from src/ui/dist/assets/index-BL89kDiO.js rename to src/ui/dist/assets/index-Cl954rX4.js index d45f3cfc..6655aa38 100644 --- a/src/ui/dist/assets/index-BL89kDiO.js +++ b/src/ui/dist/assets/index-Cl954rX4.js @@ -1 +1 @@ -import{e as C,z as N,l as p,A as o,S as P,T,v as j,B as q,o as t,c as a,g as k,L as E,a as n,t as b,F as i,D as d,d as v,h,i as f,_ as L}from"./index-CTxjSbok.js";const O={class:"search"},V={key:0,class:"fill-page"},D={key:1,class:"fill-page"},F={class:"top flex gap-8"},I={class:"top min-w-max"},$={key:0,class:"list songs flex-1"},z={class:"flex justify-between items-center"},J={class:"flex flex-wrap flexibleSearchResults"},M={key:0,class:"list flex-1 min-w-[40vw] artists"},Y={key:1,class:"list flex-1 min-w-[40vw] playlists"},G={key:2,class:"list flex-1 min-w-[40vw] albums"},H=C({__name:"index",setup(K){const B=N(),w=p(!0),c=p(null),m=p(!1),u=p(null),R=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e[0]}),r=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="song")}),y=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="artist")}),g=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="playlist")}),_=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="album")}),x=o(()=>B.params.query),A=o(()=>[...P,...T]),S=async()=>{w.value=!0,c.value=null;const s=await fetch("/api/search",{method:"POST",body:JSON.stringify({query:x.value,scope:A.value})});if(w.value=!1,!s.ok){c.value=await s.text();return}const e=await s.json();u.value=e};return j(S),q(x,S),(s,e)=>(t(),a("div",O,[w.value?(t(),a("div",V,[k(E)])):c.value?(t(),a("div",D,[e[1]||(e[1]=n("h1",null,"Something went wrong",-1)),n("p",null,b(c.value),1)])):(t(),a(i,{key:2},[n("div",F,[n("div",I,[e[2]||(e[2]=n("h2",null,"Top Result",-1)),k(d,{item:R.value,large:""},null,8,["item"])]),r.value.length?(t(),a("div",$,[n("div",z,[e[3]||(e[3]=n("h2",null,"Songs",-1)),r.value.length>4?(t(),a("span",{key:0,class:"more cursor-pointer text-muted hover:text-primary text-sm uppercase",onClick:e[0]||(e[0]=l=>m.value=!m.value)},b(m.value?"Show less":`Show all ${r.value.length} songs`),1)):v("",!0)]),(t(!0),a(i,null,h(m.value?r.value:r.value.slice(0,4),l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0)]),n("div",J,[y.value.length?(t(),a("div",M,[e[4]||(e[4]=n("h2",null,"Artists",-1)),(t(!0),a(i,null,h(y.value,l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0),g.value.length?(t(),a("div",Y,[e[5]||(e[5]=n("h2",null,"Playlists",-1)),(t(!0),a(i,null,h(g.value,l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0),_.value.length?(t(),a("div",G,[e[6]||(e[6]=n("h2",null,"Albums",-1)),(t(!0),a(i,null,h(_.value,l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0)])],64))]))}}),U=L(H,[["__scopeId","data-v-b436b747"]]);export{U as default}; +import{e as C,z as N,l as p,A as o,S as P,T,v as j,B as q,o as t,c as a,g as k,L as E,a as n,t as b,F as i,D as d,d as v,h,i as f,_ as L}from"./index-NeVG6T13.js";const O={class:"search"},V={key:0,class:"fill-page"},D={key:1,class:"fill-page"},F={class:"top flex gap-8"},I={class:"top min-w-max"},$={key:0,class:"list songs flex-1"},z={class:"flex justify-between items-center"},J={class:"flex flex-wrap flexibleSearchResults"},M={key:0,class:"list flex-1 min-w-[40vw] artists"},Y={key:1,class:"list flex-1 min-w-[40vw] playlists"},G={key:2,class:"list flex-1 min-w-[40vw] albums"},H=C({__name:"index",setup(K){const B=N(),w=p(!0),c=p(null),m=p(!1),u=p(null),R=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e[0]}),r=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="song")}),y=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="artist")}),g=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="playlist")}),_=o(()=>{var s,e;return(e=(s=u.value)==null?void 0:s.items)==null?void 0:e.filter(l=>l.type==="album")}),x=o(()=>B.params.query),A=o(()=>[...P,...T]),S=async()=>{w.value=!0,c.value=null;const s=await fetch("/api/search",{method:"POST",body:JSON.stringify({query:x.value,scope:A.value})});if(w.value=!1,!s.ok){c.value=await s.text();return}const e=await s.json();u.value=e};return j(S),q(x,S),(s,e)=>(t(),a("div",O,[w.value?(t(),a("div",V,[k(E)])):c.value?(t(),a("div",D,[e[1]||(e[1]=n("h1",null,"Something went wrong",-1)),n("p",null,b(c.value),1)])):(t(),a(i,{key:2},[n("div",F,[n("div",I,[e[2]||(e[2]=n("h2",null,"Top Result",-1)),k(d,{item:R.value,large:""},null,8,["item"])]),r.value.length?(t(),a("div",$,[n("div",z,[e[3]||(e[3]=n("h2",null,"Songs",-1)),r.value.length>4?(t(),a("span",{key:0,class:"more cursor-pointer text-muted hover:text-primary text-sm uppercase",onClick:e[0]||(e[0]=l=>m.value=!m.value)},b(m.value?"Show less":`Show all ${r.value.length} songs`),1)):v("",!0)]),(t(!0),a(i,null,h(m.value?r.value:r.value.slice(0,4),l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0)]),n("div",J,[y.value.length?(t(),a("div",M,[e[4]||(e[4]=n("h2",null,"Artists",-1)),(t(!0),a(i,null,h(y.value,l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0),g.value.length?(t(),a("div",Y,[e[5]||(e[5]=n("h2",null,"Playlists",-1)),(t(!0),a(i,null,h(g.value,l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0),_.value.length?(t(),a("div",G,[e[6]||(e[6]=n("h2",null,"Albums",-1)),(t(!0),a(i,null,h(_.value,l=>(t(),f(d,{item:l,"show-download":""},null,8,["item"]))),256))])):v("",!0)])],64))]))}}),U=L(H,[["__scopeId","data-v-b436b747"]]);export{U as default}; diff --git a/src/ui/dist/assets/index-Cl954rX4.js.gz b/src/ui/dist/assets/index-Cl954rX4.js.gz new file mode 100644 index 00000000..1c2556bc Binary files /dev/null and b/src/ui/dist/assets/index-Cl954rX4.js.gz differ diff --git a/src/ui/dist/assets/index-D3xaJuij.js.gz b/src/ui/dist/assets/index-D3xaJuij.js.gz deleted file mode 100644 index 7963d7d8..00000000 Binary files a/src/ui/dist/assets/index-D3xaJuij.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-DHSwU4cI.js.gz b/src/ui/dist/assets/index-DHSwU4cI.js.gz deleted file mode 100644 index f98e2bdf..00000000 Binary files a/src/ui/dist/assets/index-DHSwU4cI.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-DaDsLZC_.js.gz b/src/ui/dist/assets/index-DaDsLZC_.js.gz deleted file mode 100644 index f609a58d..00000000 Binary files a/src/ui/dist/assets/index-DaDsLZC_.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-gMguJPQ7.js b/src/ui/dist/assets/index-DdW2vvqu.js similarity index 98% rename from src/ui/dist/assets/index-gMguJPQ7.js rename to src/ui/dist/assets/index-DdW2vvqu.js index 1443192e..af771e3d 100644 --- a/src/ui/dist/assets/index-gMguJPQ7.js +++ b/src/ui/dist/assets/index-DdW2vvqu.js @@ -1 +1 @@ -import{_ as T,f as E,o as n,c as d,g as v,w as _,a as s,C as K,E as V,i as h,t as b,d as x,e as R,l as f,v as j,B as P,r as oe,L as ee,h as D,F as M,j as ne,A as N,m as re,G as ie,M as G,H as U,J as $,K as A,b as X,O as Z,z as ue,Q as ce}from"./index-CTxjSbok.js";import{F}from"./FullShelf-WiVa8WAT.js";import{E as de}from"./Error-CQEMgMn-.js";import{P as O}from"./PlaylistCard-wbTFFeyA.js";import{p as pe}from"./playerInPicture-Dfp9IAsf.js";const ve={name:"CollectionHeader",props:{href:String}},me={class:"wrapper"};function fe(y,a,e,c,m,r){const u=E("router-link");return n(),d("div",me,[v(u,{class:"link",to:"/collection/playlists"},{default:_(()=>a[0]||(a[0]=[s("div",{class:"collection"},"Playlists",-1)])),_:1}),v(u,{class:"link",to:"/collection/releases"},{default:_(()=>a[1]||(a[1]=[s("div",{class:"collection"},"Releases",-1)])),_:1}),v(u,{class:"link",to:"/collection/artists"},{default:_(()=>a[2]||(a[2]=[s("div",{class:"collection"},"Artists",-1)])),_:1}),v(u,{class:"link",to:"/collection/albums"},{default:_(()=>a[3]||(a[3]=[s("div",{class:"collection"},"Albums",-1)])),_:1})])}const _e=T(ve,[["render",fe],["__scopeId","data-v-780f7ad5"]]),ye={components:{Card:K,Cover:V},name:"CardWithImageAndText",props:{cover:String,title:String,description:String,playlistType:{type:String,default:null},imageType:{type:String,default:"playlist"}}},he={class:"item"},ge={class:"title"},xe={key:0,class:"material-symbols-rounded"},we=["title"],ke=["title","innerHTML"];function Ce(y,a,e,c,m,r){const u=E("Cover"),o=E("Card");return n(),h(o,{class:"wrapper drop-shadow-md","with-hover":""},{default:_(()=>[s("div",he,[v(u,{src:e.cover,type:e.imageType,name:e.title},null,8,["src","type","name"]),s("div",null,[s("div",ge,[[null,"classic"].includes(e.playlistType)?x("",!0):(n(),d("span",xe,b(e.playlistType=="smart"?"neurology":"bolt"),1)),s("h4",{title:e.title},b(e.title),9,we)]),s("p",{class:"text-muted text-xs hideIfMobile",title:e.description,innerHTML:e.description},null,8,ke)])])]),_:1})}const te=T(ye,[["render",Ce],["__scopeId","data-v-19795e3d"]]),B=R({__name:"FetchLoader",props:{response:{type:Promise,required:!0},error:{type:Function,default:y=>`Failed to fetch (${y.status})`}},setup(y){const a=y,e=f(!1),c=f(""),m=async()=>{if(!a.response)return;e.value=!0,c.value="";const r=await a.response;e.value=!1,r.ok||(c.value=a.error(r))};return j(m),P(()=>a.response,m),(r,u)=>e.value?(n(),h(ee,{key:0})):c.value?(n(),h(de,{key:1,msg:c.value},null,8,["msg"])):y.response?oe(r.$slots,"default",{key:2}):x("",!0)}}),$e={class:"albums"},be=R({__name:"Albums",setup(y){const a=f([]),e=f(null);return j(async()=>{e.value=fetch("/api/albums");const m=await(await e.value).json();a.value=m.sort((r,u)=>r.name.localeCompare(u.name))}),(c,m)=>(n(),h(B,{response:e.value},{default:_(()=>[s("div",$e,[v(F,{heading:"In your library"},{default:_(()=>[(n(!0),d(M,null,D(a.value,r=>(n(),h(te,{title:r.name,description:r.artists.join(", "),cover:r.image,onClick:u=>c.$router.push(r.href),imageType:"album"},null,8,["title","description","cover","onClick"]))),256))]),_:1})])]),_:1},8,["response"]))}}),Se=T(be,[["__scopeId","data-v-33e7fc43"]]),Ie={class:"playlists"},Te=R({__name:"Playlists",setup(y){const a=ne(),e=N(()=>a.playlists),c=f([]),m=f(null);return j(async()=>{m.value=fetch("/api/spotify/playlists");const u=await(await m.value).json();c.value=u}),(r,u)=>(n(),d("div",Ie,[e.value.length?(n(),h(F,{key:0,heading:"Playlists"},{default:_(()=>[(n(!0),d(M,null,D(e.value,o=>(n(),h(O,{playlist:o},null,8,["playlist"]))),256))]),_:1})):x("",!0),v(B,{response:m.value,error:o=>`Failed to fetch Spotify playlists (${o.status})`},{default:_(()=>[c.value.length?(n(),h(F,{key:0,heading:"Import From Spotify"},{default:_(()=>[v(O,{playlist:{href:"/liked",name:"Liked",description:"your liked tracks",type:"classic",cover:null,id:"liked",plays:0},"is-spotify":""}),(n(!0),d(M,null,D(c.value,o=>(n(),h(O,{playlist:{...o,href:`https://open.spotify.com/playlist/${o.id}`,type:"classic"},"is-spotify":""},null,8,["playlist"]))),256))]),_:1})):x("",!0)]),_:1},8,["response","error"])]))}}),De={key:0,class:"fill-page"},Me={key:1},Re={class:"releases w-full"},Ae={class:"current"},Pe={key:0,class:"w-max flex flex-col gap-4"},Ee={class:"flex justify-between w-full items-center"},Fe={class:"flex gap-4 items-center"},je={class:"info"},Le={key:0},Ne={key:1,class:"m-0 text-muted text-sm"},Be=["title"],qe={class:"actions"},He={key:1,class:"h-96 flex flex-col justify-center"},Oe={class:"flex items-center gap-4 w-max"},Ye={key:0,class:"flex justify-between mb-2"},Je={class:"entries overflow-y-auto flex flex-col gap-2"},Ve=["onClick"],Ke={class:"info overflow-hidden"},Qe={class:"m-0 overflow-hidden"},ze={class:"m-0 overflow-hidden text-sm text-muted"},We=["title"],Ge=["onClick"],Ue=["onClick"],Xe=["onClick"],Ze={key:1,class:"flex flex-col items-center"},Y="reap.releases.seen",J="reap.releases.remember",et=R({__name:"Releases",setup(y){const a=f(!0),e=f("unseen"),c=l=>{const t=new Date(l),g=Math.floor((Date.now()-t.getTime())/1e3/60/60/24);return g==0?"Today":g==1?"Yesterday":g<100?`${g} days ago`:g<365?`${Math.floor(g/30)} months ago`:t.toLocaleDateString()},m=re();P(e,l=>{const t={queue:l};m.replace({query:t})});const r=N(()=>{switch(e.value){case"unseen":return S.value.filter(l=>!C.value.includes(l.url));case"out-today":return se.value;case"watching":return k.value;case"all":return S.value;case"seen":return C.value.map(l=>S.value.find(t=>t.url==l)).filter(l=>l)}}),u=l=>{pe(l.artist,l.title,l.url)},o=f(null),w=f(null),q=new Date,S=f([]),Q=l=>{o.value=l,Z(()=>{var t;(t=w.value)==null||t.show()})},se=N(()=>S.value.filter(l=>{const t=new Date(l.releaseDate);return q.getMonth()==t.getMonth()&&q.getDate()==t.getDate()&&q.getFullYear()==t.getFullYear()})),z=l=>{k.value.find(t=>t.url==l.url)||k.value.push(l)},W=l=>{k.value=k.value.filter(t=>t.url!=l.url)},H=l=>{var g;let t=!1;l.url===((g=p.value)==null?void 0:g.url)&&(t=!0),C.value.includes(l.url)||C.value.push(l.url),t&&Z(()=>u(p.value))},C=f([]),k=f([]),p=f(null),le=()=>{a.value=!0,fetch("/api/releases",{headers:{"X-Cache-Control":"no-cache"}}).then(l=>l.json()).then(l=>{S.value=l,a.value=!1})};return j(async()=>{var t;a.value=!0;const l=await fetch("/api/releases");S.value=await l.json(),a.value=!1,C.value=((t=localStorage.getItem(Y))==null?void 0:t.split(","))??[],C.value=C.value.filter(g=>S.value.find(L=>L.url==g)),k.value=JSON.parse(localStorage.getItem(J)??"[]")}),P(r,l=>{p.value=l[0]??null}),P(C,l=>{l.length?localStorage.setItem(Y,l.join(",")):localStorage.removeItem(Y)},{deep:!0}),P(k,l=>{l.length?localStorage.setItem(J,JSON.stringify(l)):localStorage.removeItem(J)},{deep:!0}),(l,t)=>{var g,L;return a.value?(n(),d("div",De,[v(ee)])):(n(),d("div",Me,[o.value?(n(),h(ie,{key:0,id:(g=o.value.url)==null?void 0:g.replace("https://open.spotify.com/album/",""),ref_key:"addReleaseRef",ref:w,album:{id:(L=o.value.url)==null?void 0:L.replace("https://open.spotify.com/album/",""),title:o.value.title,artist:o.value.artists.join(", "),cover:o.value.cover,href:o.value.url,releaseDate:o.value.releaseDate},artist:o.value.artist,cover:o.value.cover,href:o.value.url,title:o.value.title},null,8,["id","album","artist","cover","href","title"])):x("",!0),s("div",Re,[s("div",Ae,[p.value?(n(),d("div",Pe,[p.value?(n(),h(V,{key:0,class:"rounded-3xl",src:p.value.cover,"with-ambient":""},null,8,["src"])):x("",!0),s("div",Ee,[s("div",Fe,[s("span",{class:"preview material-symbols-rounded ms-fill text-5xl cursor-pointer",onClick:t[0]||(t[0]=i=>u(p.value))}," play_circle "),s("div",je,[p.value?(n(),d("h3",Le,[v(G,{text:p.value.title},null,8,["text"])])):x("",!0),p.value?(n(),d("p",Ne,[v(U,{artist:p.value.artist},null,8,["artist"])])):x("",!0),p.value?(n(),d("p",{key:2,class:"m-0 text-muted text-xs",title:p.value.releaseDate},b(c(p.value.releaseDate)),9,Be)):x("",!0)])]),s("div",qe,[s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:t[1]||(t[1]=$(i=>Q(p.value),["stop"])),title:"Add to playlist"}," add "),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:t[2]||(t[2]=$(i=>k.value.find(I=>I.url===p.value.url)?W(p.value):z(p.value),["stop"])),title:"Pin"},b(k.value.find(i=>i.url===p.value.url)?"playlist_remove":"push_pin"),1),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:t[3]||(t[3]=$(i=>H(p.value),["stop"])),title:"Mark as seen"}," done_all ")])])])):(n(),d("div",He,t[10]||(t[10]=[s("span",{class:"italic text-sm text-muted"}," Nothing to preview ",-1)])))]),v(K,{class:"queue w-full p-2 h-full flex flex-col gap-2 relative"},{default:_(()=>[s("div",Oe,[s("h5",{class:A(["cursor-pointer",{selected:e.value=="unseen"}]),onClick:t[4]||(t[4]=i=>e.value="unseen")}," Unseen ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="out-today"}]),onClick:t[5]||(t[5]=i=>e.value="out-today")}," Out Today ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="watching"}]),onClick:t[6]||(t[6]=i=>e.value="watching")}," Pinned ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="seen"}]),onClick:t[7]||(t[7]=i=>e.value="seen")}," Seen ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="all"}]),onClick:t[8]||(t[8]=i=>e.value="all")}," All ",2)]),e.value==="unseen"&&r.value.length?(n(),d("div",Ye,[s("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:le},t[11]||(t[11]=[X(" Refresh "),s("span",{class:"material-symbols-rounded"}," refresh ",-1)])),s("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:t[9]||(t[9]=i=>r.value.forEach(H))},t[12]||(t[12]=[X(" Mark all as seen "),s("span",{class:"material-symbols-rounded"}," done_all ",-1)]))])):x("",!0),s("div",Je,[r.value.length?(n(!0),d(M,{key:0},D(r.value,i=>(n(),d("div",{class:"entry",onClick:I=>{p.value=i,u(i)}},[v(V,{class:"rounded-xl",src:i.cover},null,8,["src"]),s("div",Ke,[s("p",Qe,[v(G,{text:i.title},null,8,["text"])]),s("p",ze,[v(U,{artist:i.artist},null,8,["artist"])])]),s("p",{class:"text-sm m-0 text-muted",title:i.releaseDate},b(c(i.releaseDate)),9,We),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:$(I=>Q(i),["stop"]),title:"Add to playlist"}," add ",8,Ge),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:$(I=>k.value.find(ae=>ae.url===i.url)?W(i):z(i),["stop"]),title:"Pin"},b(k.value.find(I=>I.url===i.url)?"playlist_remove":"push_pin"),9,Ue),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:$(I=>H(i),["stop"]),title:"Mark as seen"}," done_all ",8,Xe)],8,Ve))),256)):x("",!0)]),r.value.length?x("",!0):(n(),d("div",Ze,t[13]||(t[13]=[s("span",{class:"italic text-sm text-muted"}," No releases in this queue ",-1)])))]),_:1})])]))}}}),tt=T(et,[["__scopeId","data-v-fbc407e7"]]),st={components:{Card:K},name:"ArtistItem",methods:{follow(y){y.stopPropagation();const a=this.following?"DELETE":"POST";fetch("/api/spotify/following",{method:a,body:JSON.stringify({artistId:this.id})}).then(e=>{e.status==200&&(this.following=!this.following)})}},data(){return{following:this.initiallyFollowing}},props:{cover:String,name:String,description:String,id:String,initiallyFollowing:Boolean,showFollowButton:Boolean}},lt={class:"item"},at=["src"],ot={class:"flex gap-2 items-center justify-between"},nt=["innerHTML"];function rt(y,a,e,c,m,r){const u=E("add-artist-to-playlist"),o=E("Card");return n(),h(o,{class:"wrapper","with-hover":"",onClick:a[1]||(a[1]=$(w=>y.$router.push("/artist/"+e.name),["stop"]))},{default:_(()=>[v(u,{ref:"import",artist:{id:e.id,name:e.name,href:`https://open.spotify.com/artist/${e.id}`,image:e.cover}},null,8,["artist"]),s("div",lt,[s("img",{src:e.cover},null,8,at),s("div",ot,[s("div",null,[s("h4",null,b(e.name),1),s("p",{innerHTML:e.description},null,8,nt)]),e.showFollowButton?(n(),d("span",{key:0,class:"material-symbols-rounded text-muted text-md",onClick:a[0]||(a[0]=$((...w)=>r.follow&&r.follow(...w),["stop"]))},b(m.following?"person_check":"person_add"),1)):x("",!0)])])]),_:1})}const it=T(st,[["render",rt],["__scopeId","data-v-286e9794"]]),ut={class:"artists"},ct=R({__name:"Artists",setup(y){const a=f([]),e=f([]),c=f(null),m=f(null);return j(async()=>{c.value=fetch("/api/artists");let r=await c.value,u=await r.json();e.value=u.sort((o,w)=>o.name.localeCompare(w.name)),m.value=fetch("/api/spotify/artists"),r=await m.value,u=await r.json(),a.value=u.sort((o,w)=>o.name.localeCompare(w.name))}),(r,u)=>(n(),d("div",ut,[v(B,{response:c.value},{default:_(()=>[v(F,{heading:"In your library"},{default:_(()=>[(n(!0),d(M,null,D(e.value,o=>(n(),h(te,{title:o.name,cover:o.image,onClick:w=>r.$router.push(`/artist/${o.name}`),imageType:"artist"},null,8,["title","cover","onClick"]))),256))]),_:1})]),_:1},8,["response"]),v(B,{response:m.value},{default:_(()=>[v(F,{heading:"Following on Spotify"},{default:_(()=>[(n(!0),d(M,null,D(a.value,(o,w)=>(n(),h(it,{id:o.id,key:w,cover:o.cover,description:o.description,name:o.name,"initially-following":"","show-follow-button":""},null,8,["id","cover","description","name"]))),128))]),_:1})]),_:1},8,["response"])]))}}),dt=T(ct,[["__scopeId","data-v-a8a87a8e"]]),pt={class:"parent"},vt={class:"collection"},mt=R({__name:"index",setup(y){const a=ue(),e=N(()=>{switch(a.path.split("/")[2]){case"albums":return Se;case"playlists":return Te;case"releases":return tt;case"artists":return dt}});return(c,m)=>(n(),d("div",pt,[v(_e,{class:"header"}),s("main",vt,[(n(),h(ce(e.value)))])]))}}),xt=T(mt,[["__scopeId","data-v-3e995f8b"]]);export{xt as default}; +import{_ as T,f as E,o as n,c as d,g as v,w as _,a as s,C as K,E as V,i as h,t as b,d as x,e as R,l as f,v as j,B as P,r as oe,L as ee,h as D,F as M,j as ne,A as N,m as re,G as ie,M as G,H as U,J as $,K as A,b as X,O as Z,z as ue,Q as ce}from"./index-NeVG6T13.js";import{F}from"./FullShelf-DGzkcAo_.js";import{E as de}from"./Error-B3yvsR5K.js";import{P as O}from"./PlaylistCard-BpEr8q46.js";import{p as pe}from"./playerInPicture-Dfp9IAsf.js";const ve={name:"CollectionHeader",props:{href:String}},me={class:"wrapper"};function fe(y,a,e,c,m,r){const u=E("router-link");return n(),d("div",me,[v(u,{class:"link",to:"/collection/playlists"},{default:_(()=>a[0]||(a[0]=[s("div",{class:"collection"},"Playlists",-1)])),_:1}),v(u,{class:"link",to:"/collection/releases"},{default:_(()=>a[1]||(a[1]=[s("div",{class:"collection"},"Releases",-1)])),_:1}),v(u,{class:"link",to:"/collection/artists"},{default:_(()=>a[2]||(a[2]=[s("div",{class:"collection"},"Artists",-1)])),_:1}),v(u,{class:"link",to:"/collection/albums"},{default:_(()=>a[3]||(a[3]=[s("div",{class:"collection"},"Albums",-1)])),_:1})])}const _e=T(ve,[["render",fe],["__scopeId","data-v-780f7ad5"]]),ye={components:{Card:K,Cover:V},name:"CardWithImageAndText",props:{cover:String,title:String,description:String,playlistType:{type:String,default:null},imageType:{type:String,default:"playlist"}}},he={class:"item"},ge={class:"title"},xe={key:0,class:"material-symbols-rounded"},we=["title"],ke=["title","innerHTML"];function Ce(y,a,e,c,m,r){const u=E("Cover"),o=E("Card");return n(),h(o,{class:"wrapper drop-shadow-md","with-hover":""},{default:_(()=>[s("div",he,[v(u,{src:e.cover,type:e.imageType,name:e.title},null,8,["src","type","name"]),s("div",null,[s("div",ge,[[null,"classic"].includes(e.playlistType)?x("",!0):(n(),d("span",xe,b(e.playlistType=="smart"?"neurology":"bolt"),1)),s("h4",{title:e.title},b(e.title),9,we)]),s("p",{class:"text-muted text-xs hideIfMobile",title:e.description,innerHTML:e.description},null,8,ke)])])]),_:1})}const te=T(ye,[["render",Ce],["__scopeId","data-v-19795e3d"]]),B=R({__name:"FetchLoader",props:{response:{type:Promise,required:!0},error:{type:Function,default:y=>`Failed to fetch (${y.status})`}},setup(y){const a=y,e=f(!1),c=f(""),m=async()=>{if(!a.response)return;e.value=!0,c.value="";const r=await a.response;e.value=!1,r.ok||(c.value=a.error(r))};return j(m),P(()=>a.response,m),(r,u)=>e.value?(n(),h(ee,{key:0})):c.value?(n(),h(de,{key:1,msg:c.value},null,8,["msg"])):y.response?oe(r.$slots,"default",{key:2}):x("",!0)}}),$e={class:"albums"},be=R({__name:"Albums",setup(y){const a=f([]),e=f(null);return j(async()=>{e.value=fetch("/api/albums");const m=await(await e.value).json();a.value=m.sort((r,u)=>r.name.localeCompare(u.name))}),(c,m)=>(n(),h(B,{response:e.value},{default:_(()=>[s("div",$e,[v(F,{heading:"In your library"},{default:_(()=>[(n(!0),d(M,null,D(a.value,r=>(n(),h(te,{title:r.name,description:r.artists.join(", "),cover:r.image,onClick:u=>c.$router.push(r.href),imageType:"album"},null,8,["title","description","cover","onClick"]))),256))]),_:1})])]),_:1},8,["response"]))}}),Se=T(be,[["__scopeId","data-v-33e7fc43"]]),Ie={class:"playlists"},Te=R({__name:"Playlists",setup(y){const a=ne(),e=N(()=>a.playlists),c=f([]),m=f(null);return j(async()=>{m.value=fetch("/api/spotify/playlists");const u=await(await m.value).json();c.value=u}),(r,u)=>(n(),d("div",Ie,[e.value.length?(n(),h(F,{key:0,heading:"Playlists"},{default:_(()=>[(n(!0),d(M,null,D(e.value,o=>(n(),h(O,{playlist:o},null,8,["playlist"]))),256))]),_:1})):x("",!0),v(B,{response:m.value,error:o=>`Failed to fetch Spotify playlists (${o.status})`},{default:_(()=>[c.value.length?(n(),h(F,{key:0,heading:"Import From Spotify"},{default:_(()=>[v(O,{playlist:{href:"/liked",name:"Liked",description:"your liked tracks",type:"classic",cover:null,id:"liked",plays:0},"is-spotify":""}),(n(!0),d(M,null,D(c.value,o=>(n(),h(O,{playlist:{...o,href:`https://open.spotify.com/playlist/${o.id}`,type:"classic"},"is-spotify":""},null,8,["playlist"]))),256))]),_:1})):x("",!0)]),_:1},8,["response","error"])]))}}),De={key:0,class:"fill-page"},Me={key:1},Re={class:"releases w-full"},Ae={class:"current"},Pe={key:0,class:"w-max flex flex-col gap-4"},Ee={class:"flex justify-between w-full items-center"},Fe={class:"flex gap-4 items-center"},je={class:"info"},Le={key:0},Ne={key:1,class:"m-0 text-muted text-sm"},Be=["title"],qe={class:"actions"},He={key:1,class:"h-96 flex flex-col justify-center"},Oe={class:"flex items-center gap-4 w-max"},Ye={key:0,class:"flex justify-between mb-2"},Je={class:"entries overflow-y-auto flex flex-col gap-2"},Ve=["onClick"],Ke={class:"info overflow-hidden"},Qe={class:"m-0 overflow-hidden"},ze={class:"m-0 overflow-hidden text-sm text-muted"},We=["title"],Ge=["onClick"],Ue=["onClick"],Xe=["onClick"],Ze={key:1,class:"flex flex-col items-center"},Y="reap.releases.seen",J="reap.releases.remember",et=R({__name:"Releases",setup(y){const a=f(!0),e=f("unseen"),c=l=>{const t=new Date(l),g=Math.floor((Date.now()-t.getTime())/1e3/60/60/24);return g==0?"Today":g==1?"Yesterday":g<100?`${g} days ago`:g<365?`${Math.floor(g/30)} months ago`:t.toLocaleDateString()},m=re();P(e,l=>{const t={queue:l};m.replace({query:t})});const r=N(()=>{switch(e.value){case"unseen":return S.value.filter(l=>!C.value.includes(l.url));case"out-today":return se.value;case"watching":return k.value;case"all":return S.value;case"seen":return C.value.map(l=>S.value.find(t=>t.url==l)).filter(l=>l)}}),u=l=>{pe(l.artist,l.title,l.url)},o=f(null),w=f(null),q=new Date,S=f([]),Q=l=>{o.value=l,Z(()=>{var t;(t=w.value)==null||t.show()})},se=N(()=>S.value.filter(l=>{const t=new Date(l.releaseDate);return q.getMonth()==t.getMonth()&&q.getDate()==t.getDate()&&q.getFullYear()==t.getFullYear()})),z=l=>{k.value.find(t=>t.url==l.url)||k.value.push(l)},W=l=>{k.value=k.value.filter(t=>t.url!=l.url)},H=l=>{var g;let t=!1;l.url===((g=p.value)==null?void 0:g.url)&&(t=!0),C.value.includes(l.url)||C.value.push(l.url),t&&Z(()=>u(p.value))},C=f([]),k=f([]),p=f(null),le=()=>{a.value=!0,fetch("/api/releases",{headers:{"X-Cache-Control":"no-cache"}}).then(l=>l.json()).then(l=>{S.value=l,a.value=!1})};return j(async()=>{var t;a.value=!0;const l=await fetch("/api/releases");S.value=await l.json(),a.value=!1,C.value=((t=localStorage.getItem(Y))==null?void 0:t.split(","))??[],C.value=C.value.filter(g=>S.value.find(L=>L.url==g)),k.value=JSON.parse(localStorage.getItem(J)??"[]")}),P(r,l=>{p.value=l[0]??null}),P(C,l=>{l.length?localStorage.setItem(Y,l.join(",")):localStorage.removeItem(Y)},{deep:!0}),P(k,l=>{l.length?localStorage.setItem(J,JSON.stringify(l)):localStorage.removeItem(J)},{deep:!0}),(l,t)=>{var g,L;return a.value?(n(),d("div",De,[v(ee)])):(n(),d("div",Me,[o.value?(n(),h(ie,{key:0,id:(g=o.value.url)==null?void 0:g.replace("https://open.spotify.com/album/",""),ref_key:"addReleaseRef",ref:w,album:{id:(L=o.value.url)==null?void 0:L.replace("https://open.spotify.com/album/",""),title:o.value.title,artist:o.value.artists.join(", "),cover:o.value.cover,href:o.value.url,releaseDate:o.value.releaseDate},artist:o.value.artist,cover:o.value.cover,href:o.value.url,title:o.value.title},null,8,["id","album","artist","cover","href","title"])):x("",!0),s("div",Re,[s("div",Ae,[p.value?(n(),d("div",Pe,[p.value?(n(),h(V,{key:0,class:"rounded-3xl",src:p.value.cover,"with-ambient":""},null,8,["src"])):x("",!0),s("div",Ee,[s("div",Fe,[s("span",{class:"preview material-symbols-rounded ms-fill text-5xl cursor-pointer",onClick:t[0]||(t[0]=i=>u(p.value))}," play_circle "),s("div",je,[p.value?(n(),d("h3",Le,[v(G,{text:p.value.title},null,8,["text"])])):x("",!0),p.value?(n(),d("p",Ne,[v(U,{artist:p.value.artist},null,8,["artist"])])):x("",!0),p.value?(n(),d("p",{key:2,class:"m-0 text-muted text-xs",title:p.value.releaseDate},b(c(p.value.releaseDate)),9,Be)):x("",!0)])]),s("div",qe,[s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:t[1]||(t[1]=$(i=>Q(p.value),["stop"])),title:"Add to playlist"}," add "),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:t[2]||(t[2]=$(i=>k.value.find(I=>I.url===p.value.url)?W(p.value):z(p.value),["stop"])),title:"Pin"},b(k.value.find(i=>i.url===p.value.url)?"playlist_remove":"push_pin"),1),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:t[3]||(t[3]=$(i=>H(p.value),["stop"])),title:"Mark as seen"}," done_all ")])])])):(n(),d("div",He,t[10]||(t[10]=[s("span",{class:"italic text-sm text-muted"}," Nothing to preview ",-1)])))]),v(K,{class:"queue w-full p-2 h-full flex flex-col gap-2 relative"},{default:_(()=>[s("div",Oe,[s("h5",{class:A(["cursor-pointer",{selected:e.value=="unseen"}]),onClick:t[4]||(t[4]=i=>e.value="unseen")}," Unseen ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="out-today"}]),onClick:t[5]||(t[5]=i=>e.value="out-today")}," Out Today ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="watching"}]),onClick:t[6]||(t[6]=i=>e.value="watching")}," Pinned ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="seen"}]),onClick:t[7]||(t[7]=i=>e.value="seen")}," Seen ",2),s("h5",{class:A(["cursor-pointer",{selected:e.value=="all"}]),onClick:t[8]||(t[8]=i=>e.value="all")}," All ",2)]),e.value==="unseen"&&r.value.length?(n(),d("div",Ye,[s("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:le},t[11]||(t[11]=[X(" Refresh "),s("span",{class:"material-symbols-rounded"}," refresh ",-1)])),s("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:t[9]||(t[9]=i=>r.value.forEach(H))},t[12]||(t[12]=[X(" Mark all as seen "),s("span",{class:"material-symbols-rounded"}," done_all ",-1)]))])):x("",!0),s("div",Je,[r.value.length?(n(!0),d(M,{key:0},D(r.value,i=>(n(),d("div",{class:"entry",onClick:I=>{p.value=i,u(i)}},[v(V,{class:"rounded-xl",src:i.cover},null,8,["src"]),s("div",Ke,[s("p",Qe,[v(G,{text:i.title},null,8,["text"])]),s("p",ze,[v(U,{artist:i.artist},null,8,["artist"])])]),s("p",{class:"text-sm m-0 text-muted",title:i.releaseDate},b(c(i.releaseDate)),9,We),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:$(I=>Q(i),["stop"]),title:"Add to playlist"}," add ",8,Ge),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:$(I=>k.value.find(ae=>ae.url===i.url)?W(i):z(i),["stop"]),title:"Pin"},b(k.value.find(I=>I.url===i.url)?"playlist_remove":"push_pin"),9,Ue),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:$(I=>H(i),["stop"]),title:"Mark as seen"}," done_all ",8,Xe)],8,Ve))),256)):x("",!0)]),r.value.length?x("",!0):(n(),d("div",Ze,t[13]||(t[13]=[s("span",{class:"italic text-sm text-muted"}," No releases in this queue ",-1)])))]),_:1})])]))}}}),tt=T(et,[["__scopeId","data-v-fbc407e7"]]),st={components:{Card:K},name:"ArtistItem",methods:{follow(y){y.stopPropagation();const a=this.following?"DELETE":"POST";fetch("/api/spotify/following",{method:a,body:JSON.stringify({artistId:this.id})}).then(e=>{e.status==200&&(this.following=!this.following)})}},data(){return{following:this.initiallyFollowing}},props:{cover:String,name:String,description:String,id:String,initiallyFollowing:Boolean,showFollowButton:Boolean}},lt={class:"item"},at=["src"],ot={class:"flex gap-2 items-center justify-between"},nt=["innerHTML"];function rt(y,a,e,c,m,r){const u=E("add-artist-to-playlist"),o=E("Card");return n(),h(o,{class:"wrapper","with-hover":"",onClick:a[1]||(a[1]=$(w=>y.$router.push("/artist/"+e.name),["stop"]))},{default:_(()=>[v(u,{ref:"import",artist:{id:e.id,name:e.name,href:`https://open.spotify.com/artist/${e.id}`,image:e.cover}},null,8,["artist"]),s("div",lt,[s("img",{src:e.cover},null,8,at),s("div",ot,[s("div",null,[s("h4",null,b(e.name),1),s("p",{innerHTML:e.description},null,8,nt)]),e.showFollowButton?(n(),d("span",{key:0,class:"material-symbols-rounded text-muted text-md",onClick:a[0]||(a[0]=$((...w)=>r.follow&&r.follow(...w),["stop"]))},b(m.following?"person_check":"person_add"),1)):x("",!0)])])]),_:1})}const it=T(st,[["render",rt],["__scopeId","data-v-286e9794"]]),ut={class:"artists"},ct=R({__name:"Artists",setup(y){const a=f([]),e=f([]),c=f(null),m=f(null);return j(async()=>{c.value=fetch("/api/artists");let r=await c.value,u=await r.json();e.value=u.sort((o,w)=>o.name.localeCompare(w.name)),m.value=fetch("/api/spotify/artists"),r=await m.value,u=await r.json(),a.value=u.sort((o,w)=>o.name.localeCompare(w.name))}),(r,u)=>(n(),d("div",ut,[v(B,{response:c.value},{default:_(()=>[v(F,{heading:"In your library"},{default:_(()=>[(n(!0),d(M,null,D(e.value,o=>(n(),h(te,{title:o.name,cover:o.image,onClick:w=>r.$router.push(`/artist/${o.name}`),imageType:"artist"},null,8,["title","cover","onClick"]))),256))]),_:1})]),_:1},8,["response"]),v(B,{response:m.value},{default:_(()=>[v(F,{heading:"Following on Spotify"},{default:_(()=>[(n(!0),d(M,null,D(a.value,(o,w)=>(n(),h(it,{id:o.id,key:w,cover:o.cover,description:o.description,name:o.name,"initially-following":"","show-follow-button":""},null,8,["id","cover","description","name"]))),128))]),_:1})]),_:1},8,["response"])]))}}),dt=T(ct,[["__scopeId","data-v-a8a87a8e"]]),pt={class:"parent"},vt={class:"collection"},mt=R({__name:"index",setup(y){const a=ue(),e=N(()=>{switch(a.path.split("/")[2]){case"albums":return Se;case"playlists":return Te;case"releases":return tt;case"artists":return dt}});return(c,m)=>(n(),d("div",pt,[v(_e,{class:"header"}),s("main",vt,[(n(),h(ce(e.value)))])]))}}),xt=T(mt,[["__scopeId","data-v-3e995f8b"]]);export{xt as default}; diff --git a/src/ui/dist/assets/index-DdW2vvqu.js.gz b/src/ui/dist/assets/index-DdW2vvqu.js.gz new file mode 100644 index 00000000..5b692fb3 Binary files /dev/null and b/src/ui/dist/assets/index-DdW2vvqu.js.gz differ diff --git a/src/ui/dist/assets/index-DaDsLZC_.js b/src/ui/dist/assets/index-DynHIvzO.js similarity index 96% rename from src/ui/dist/assets/index-DaDsLZC_.js rename to src/ui/dist/assets/index-DynHIvzO.js index f47903bd..888b79e8 100644 --- a/src/ui/dist/assets/index-DaDsLZC_.js +++ b/src/ui/dist/assets/index-DynHIvzO.js @@ -1 +1 @@ -import{e as C,aF as x,l as h,a7 as D,v as q,o as a,c as l,a as o,F as m,h as N,i as k,w as _,t as f,C as p,g as c,E as B,d as u,u as v,L as F,K as $,q as L,I as O,N as V,_ as j}from"./index-CTxjSbok.js";const E={class:"downloader py-2 pr-2 grid gap-4 grid-cols-2 items-start"},I={class:"downloads"},M={class:"main"},S={class:"m-0 mb-4"},T={class:"status"},z={class:"flex flex-col"},A={key:0,class:"info"},K=["href"],P={class:"wrap-progress"},Y={key:0,class:"material-symbols-rounded downloading"},G=["onClick"],H=["onClick"],J=["onClick"],Q={key:1,class:"col-span-2 flex flex-row justify-center items-center"},R={class:"new-download"},U=C({__name:"index",setup(W){const t=x(),g=s=>{V.addYesNo("Are you sure you want to redownload this song?",void 0,void 0,()=>{console.log("[downloader] reDownload",s),t.downloadFromDb(s)})},i={title:"",artist:"",album:{name:"",href:"",id:""},cover:"",source:"",href:""},w=h(),r=h([{name:"source",type:"text",accept:"audio/mp3",required:!0,onChange:async s=>{const n=await D(s);r.value.find(e=>e.name==="title").value=n.title,r.value.find(e=>e.name==="artist").value=n.artist,r.value.find(e=>e.name==="album").value=n.album,r.value.find(e=>e.name==="cover").value=n.cover,r.value.find(e=>e.name==="source").value=n.source},value:i.source},{name:"title",type:"text",icon:"title",required:!0,value:i.title},{name:"artist",type:"text",icon:"person",required:!0,value:i.artist},{name:"album",type:"text",icon:"album",value:i.album.name},{name:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:i.cover}]),b=async()=>{const s=w.value.toObject();s.id=new Date().getTime(),console.log("[downloader] requestDownload",s),t.downloadOther(s)};return q(()=>{var s,n;t.prefill!=null&&(r.value=r.value.map(e=>{var d;return e.value=((d=t.prefill)==null?void 0:d[e.name])??e.value,e}),(n=(s=r.value.find(e=>e.name==="source"))==null?void 0:s.onChange)==null||n.call(s,t.prefill.source))}),(s,n)=>(a(),l("div",E,[o("div",I,[(a(!0),l(m,null,N(v(t).states,e=>{var d;return a(),l(m,{key:e.song.id},[e.internal?u("",!0):(a(),k(p,{key:0,class:$([["song",{downloading:((d=v(t).states[e.song.id??""])==null?void 0:d.status)=="downloading"}],"p-4 card items-center"])},{default:_(()=>[e.status!=="pending"?(a(),l(m,{key:0},[o("main",M,[o("h2",S,f(e.song.title),1),o("div",T,[e.song?(a(),k(p,{key:0,class:"info p-4"},{default:_(()=>[c(B,{src:e.song.cover,class:"cover"},null,8,["src"]),o("div",z,[o("span",null,f(e.song.album.name),1),o("span",null,f(e.song.artist),1)])]),_:2},1024)):u("",!0),e.status==="error"?(a(),l(m,{key:1},[n[1]||(n[1]=o("div",{class:"error"},[o("span",null,"This song could not be downloaded:"),o("ul",{class:"block list-disc ml-8"},[o("li",null," verify that the source link is working "),o("li",null,"try again later")])],-1)),e.song?(a(),l("div",A,[n[0]||(n[0]=o("span",{class:"material-symbols-rounded"},"link",-1)),o("a",{href:e.song.source,target:"_blank",rel:"noopener noreferrer"},f(e.song.source),9,K)])):u("",!0)],64)):u("",!0)])]),o("aside",null,[o("div",P,[e.status=="downloading"?(a(),l("span",Y," south ")):e.status=="finished"?(a(),l("span",{key:1,class:"material-symbols-rounded cursor-pointer finished",onClick:y=>v(t).download(e.song.id)}," download_for_offline ",8,G)):e.status=="downloaded"&&e.song.id?(a(),l("span",{key:2,class:"material-symbols-rounded cursor-pointer downloaded",onClick:y=>g(e.song.id)}," download_done ",8,H)):e.status=="error"&&e.song.id?(a(),l("span",{key:3,class:"material-symbols-rounded cursor-pointer error",onClick:y=>g(e.song.id)}," error ",8,J)):u("",!0)])])],64)):(a(),l("div",Q,[c(F)]))]),_:2},1032,["class"]))],64)}),128))]),o("div",R,[c(p,{class:"custom p-4 flex flex-col"},{default:_(()=>[c(L,{ref_key:"form",ref:w,options:r.value},null,8,["options"]),c(O,{icon:"download_for_offline",label:"Download",class:"w-full mt-8",onClick:b})]),_:1})])]))}}),Z=j(U,[["__scopeId","data-v-cdd93e28"]]);export{Z as default}; +import{e as C,aF as x,l as h,a7 as D,v as q,o as a,c as l,a as o,F as m,h as N,i as k,w as _,t as f,C as p,g as c,E as B,d as u,u as v,L as F,K as $,q as L,I as O,N as V,_ as j}from"./index-NeVG6T13.js";const E={class:"downloader py-2 pr-2 grid gap-4 grid-cols-2 items-start"},I={class:"downloads"},M={class:"main"},S={class:"m-0 mb-4"},T={class:"status"},z={class:"flex flex-col"},A={key:0,class:"info"},K=["href"],P={class:"wrap-progress"},Y={key:0,class:"material-symbols-rounded downloading"},G=["onClick"],H=["onClick"],J=["onClick"],Q={key:1,class:"col-span-2 flex flex-row justify-center items-center"},R={class:"new-download"},U=C({__name:"index",setup(W){const t=x(),g=s=>{V.addYesNo("Are you sure you want to redownload this song?",void 0,void 0,()=>{console.log("[downloader] reDownload",s),t.downloadFromDb(s)})},i={title:"",artist:"",album:{name:"",href:"",id:""},cover:"",source:"",href:""},w=h(),r=h([{name:"source",type:"text",accept:"audio/mp3",required:!0,onChange:async s=>{const n=await D(s);r.value.find(e=>e.name==="title").value=n.title,r.value.find(e=>e.name==="artist").value=n.artist,r.value.find(e=>e.name==="album").value=n.album,r.value.find(e=>e.name==="cover").value=n.cover,r.value.find(e=>e.name==="source").value=n.source},value:i.source},{name:"title",type:"text",icon:"title",required:!0,value:i.title},{name:"artist",type:"text",icon:"person",required:!0,value:i.artist},{name:"album",type:"text",icon:"album",value:i.album.name},{name:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:i.cover}]),b=async()=>{const s=w.value.toObject();s.id=new Date().getTime(),console.log("[downloader] requestDownload",s),t.downloadOther(s)};return q(()=>{var s,n;t.prefill!=null&&(r.value=r.value.map(e=>{var d;return e.value=((d=t.prefill)==null?void 0:d[e.name])??e.value,e}),(n=(s=r.value.find(e=>e.name==="source"))==null?void 0:s.onChange)==null||n.call(s,t.prefill.source))}),(s,n)=>(a(),l("div",E,[o("div",I,[(a(!0),l(m,null,N(v(t).states,e=>{var d;return a(),l(m,{key:e.song.id},[e.internal?u("",!0):(a(),k(p,{key:0,class:$([["song",{downloading:((d=v(t).states[e.song.id??""])==null?void 0:d.status)=="downloading"}],"p-4 card items-center"])},{default:_(()=>[e.status!=="pending"?(a(),l(m,{key:0},[o("main",M,[o("h2",S,f(e.song.title),1),o("div",T,[e.song?(a(),k(p,{key:0,class:"info p-4"},{default:_(()=>[c(B,{src:e.song.cover,class:"cover"},null,8,["src"]),o("div",z,[o("span",null,f(e.song.album.name),1),o("span",null,f(e.song.artist),1)])]),_:2},1024)):u("",!0),e.status==="error"?(a(),l(m,{key:1},[n[1]||(n[1]=o("div",{class:"error"},[o("span",null,"This song could not be downloaded:"),o("ul",{class:"block list-disc ml-8"},[o("li",null," verify that the source link is working "),o("li",null,"try again later")])],-1)),e.song?(a(),l("div",A,[n[0]||(n[0]=o("span",{class:"material-symbols-rounded"},"link",-1)),o("a",{href:e.song.source,target:"_blank",rel:"noopener noreferrer"},f(e.song.source),9,K)])):u("",!0)],64)):u("",!0)])]),o("aside",null,[o("div",P,[e.status=="downloading"?(a(),l("span",Y," south ")):e.status=="finished"?(a(),l("span",{key:1,class:"material-symbols-rounded cursor-pointer finished",onClick:y=>v(t).download(e.song.id)}," download_for_offline ",8,G)):e.status=="downloaded"&&e.song.id?(a(),l("span",{key:2,class:"material-symbols-rounded cursor-pointer downloaded",onClick:y=>g(e.song.id)}," download_done ",8,H)):e.status=="error"&&e.song.id?(a(),l("span",{key:3,class:"material-symbols-rounded cursor-pointer error",onClick:y=>g(e.song.id)}," error ",8,J)):u("",!0)])])],64)):(a(),l("div",Q,[c(F)]))]),_:2},1032,["class"]))],64)}),128))]),o("div",R,[c(p,{class:"custom p-4 flex flex-col"},{default:_(()=>[c(L,{ref_key:"form",ref:w,options:r.value},null,8,["options"]),c(O,{icon:"download_for_offline",label:"Download",class:"w-full mt-8",onClick:b})]),_:1})])]))}}),Z=j(U,[["__scopeId","data-v-cdd93e28"]]);export{Z as default}; diff --git a/src/ui/dist/assets/index-DynHIvzO.js.gz b/src/ui/dist/assets/index-DynHIvzO.js.gz new file mode 100644 index 00000000..ec444984 Binary files /dev/null and b/src/ui/dist/assets/index-DynHIvzO.js.gz differ diff --git a/src/ui/dist/assets/index-CTxjSbok.js b/src/ui/dist/assets/index-NeVG6T13.js similarity index 81% rename from src/ui/dist/assets/index-CTxjSbok.js rename to src/ui/dist/assets/index-NeVG6T13.js index f2b75688..4c281ecb 100644 --- a/src/ui/dist/assets/index-CTxjSbok.js +++ b/src/ui/dist/assets/index-NeVG6T13.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DHSwU4cI.js","assets/PlaylistCard-wbTFFeyA.js","assets/playerInPicture-Dfp9IAsf.js","assets/PlaylistCard-Bca9RU1d.css","assets/TrackCompact--_V4px52.js","assets/TrackCompact-DbwH9-PL.css","assets/PlaylistEntry-DrzB4VXk.js","assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js","assets/PlaylistEntry-C_GFkdTM.css","assets/spotify-LGVF5Rtn.js","assets/index-BHkwhn98.css","assets/Explore-BUXrNSQM.js","assets/Explore-DxwCrixs.css","assets/index-BL89kDiO.js","assets/index-CPiyjzPN.css","assets/index-gMguJPQ7.js","assets/FullShelf-WiVa8WAT.js","assets/FullShelf-CTNIXTYk.css","assets/Error-CQEMgMn-.js","assets/Error-BpZz57TU.css","assets/index-FOdpO-Ok.css","assets/Liked-CWhd73l6.js","assets/Template-B3y8aqn2.js","assets/vuedraggable.umd-pw-5IPtN.js","assets/FactCard-CcCpkYQW.js","assets/FactCard-C8DDWpSx.css","assets/gistClient-DbxNDpvo.js","assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js","assets/Markdown-CYZa4KPa.css","assets/Template-mK9k02Z4.css","assets/Breaking-CGEJyAMd.js","assets/Create-CWyRZu9j.js","assets/Create-BYkMEr3l.css","assets/Editor-Bsw-vrY4.js","assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js","assets/Editor-DOtR4rSO.css","assets/Normal-FL2a59AI.js","assets/Track-CjVZRaly.js","assets/Track-BBEv3XMi.css","assets/Artist-BqEsBai3.js","assets/Artist-D7Jt3f-V.css","assets/Album-DBkve-Q-.js","assets/Album-DX27fQeE.css","assets/index-D3xaJuij.js","assets/index-D0K5GYHD.css","assets/Import-BjxBPYQC.js","assets/Import-BB1S26-k.css","assets/ImportLink-BtDFD4Om.js","assets/ImportLink-CZJuXTUq.css","assets/Export-DL4N6BXD.js","assets/Export-IczLrqbM.css","assets/index-pKX8fWFw.js","assets/index-AeHORVgZ.css","assets/index-DaDsLZC_.js","assets/index-CtdWf8cI.css","assets/Welcome-DKD9_kGv.js","assets/Welcome-DqFlm-Ye.css","assets/News-WonXXBsL.js","assets/News-xNasKsBJ.css","assets/Sports-J0i4HuLb.js","assets/Sports-DN-DgHFa.css","assets/NewsArticle-BCsM1dbj.js","assets/NewsArticle-x_80Wk5p.css","assets/Insight-D-5GEXTO.js","assets/Insight-T6XeVCJ_.css","assets/index-BYAiHr26.js","assets/index-B4BW5oB7.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BgnDGhPq.js","assets/PlaylistCard-BpEr8q46.js","assets/playerInPicture-Dfp9IAsf.js","assets/PlaylistCard-Bca9RU1d.css","assets/TrackCompact-ze8RovN8.js","assets/TrackCompact-DbwH9-PL.css","assets/PlaylistEntry-CFWDnKVM.js","assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js","assets/PlaylistEntry-C_GFkdTM.css","assets/spotify-ArIR8QxX.js","assets/index-BHkwhn98.css","assets/Explore-BDgVo6I-.js","assets/Explore-DxwCrixs.css","assets/index-Cl954rX4.js","assets/index-CPiyjzPN.css","assets/index-DdW2vvqu.js","assets/FullShelf-DGzkcAo_.js","assets/FullShelf-CTNIXTYk.css","assets/Error-B3yvsR5K.js","assets/Error-BpZz57TU.css","assets/index-FOdpO-Ok.css","assets/Liked-B_zgztvz.js","assets/Template-DPpn6WCj.js","assets/vuedraggable.umd-4SxXvN8G.js","assets/FactCard-DRGvrYjY.js","assets/FactCard-C8DDWpSx.css","assets/gistClient-DE35pGas.js","assets/Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js","assets/Markdown-CYZa4KPa.css","assets/Template-mK9k02Z4.css","assets/Breaking-BbN_kr20.js","assets/Create-Od9vU4ho.js","assets/Create-BYkMEr3l.css","assets/Editor-CoYi3uHx.js","assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js","assets/Editor-DOtR4rSO.css","assets/Normal-BavQeIJj.js","assets/Track-BZee2-_m.js","assets/Track-BBEv3XMi.css","assets/Artist-B3KwwJol.js","assets/Artist-D7Jt3f-V.css","assets/Album-B7yuUYu_.js","assets/Album-DX27fQeE.css","assets/index-BQ4QfHJY.js","assets/index-D0K5GYHD.css","assets/Import-DgtSATZa.js","assets/Import-BB1S26-k.css","assets/ImportLink-Bua7Xd9q.js","assets/ImportLink-CZJuXTUq.css","assets/Export-rSE5tdFQ.js","assets/Export-IczLrqbM.css","assets/index-aLQcB2pu.js","assets/index-AeHORVgZ.css","assets/index-DynHIvzO.js","assets/index-CtdWf8cI.css","assets/Welcome-DD0oKJ1K.js","assets/Welcome-DqFlm-Ye.css","assets/News-dyEReFDN.js","assets/News-xNasKsBJ.css","assets/Sports-ZUA8m5m_.js","assets/Sports-DN-DgHFa.css","assets/NewsArticle-ttqbaNaN.js","assets/NewsArticle-x_80Wk5p.css","assets/Insight-8n5os3vM.js","assets/Insight-T6XeVCJ_.css","assets/index-6egCEB7H.js","assets/index-B4BW5oB7.css"])))=>i.map(i=>d[i]); var eE=Object.defineProperty;var tE=(e,t,n)=>t in e?eE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var qs=(e,t,n)=>tE(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const u of a.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&s(u)}).observe(document,{childList:!0,subtree:!0});function n(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(o){if(o.ep)return;o.ep=!0;const a=n(o);fetch(o.href,a)}})();/** * @vue/shared v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -25,18 +25,18 @@ var eE=Object.defineProperty;var tE=(e,t,n)=>t in e?eE(e,t,{enumerable:!0,config * vue-router v4.5.0 * (c) 2024 Eduardo San Martin Morote * @license MIT - */const Js=typeof document<"u";function Vv(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function UT(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Vv(e.default)}const et=Object.assign;function Xu(e,t){const n={};for(const s in t){const o=t[s];n[s]=Un(o)?o.map(e):e(o)}return n}const Ji=()=>{},Un=Array.isArray,Wv=/#/g,qT=/&/g,KT=/\//g,GT=/=/g,jT=/\?/g,Uv=/\+/g,zT=/%5B/g,YT=/%5D/g,qv=/%5E/g,JT=/%60/g,Kv=/%7B/g,XT=/%7C/g,Gv=/%7D/g,ZT=/%20/g;function pf(e){return encodeURI(""+e).replace(XT,"|").replace(zT,"[").replace(YT,"]")}function QT(e){return pf(e).replace(Kv,"{").replace(Gv,"}").replace(qv,"^")}function kc(e){return pf(e).replace(Uv,"%2B").replace(ZT,"+").replace(Wv,"%23").replace(qT,"%26").replace(JT,"`").replace(Kv,"{").replace(Gv,"}").replace(qv,"^")}function eP(e){return kc(e).replace(GT,"%3D")}function tP(e){return pf(e).replace(Wv,"%23").replace(jT,"%3F")}function nP(e){return e==null?"":tP(e).replace(KT,"%2F")}function co(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const rP=/\/$/,sP=e=>e.replace(rP,"");function Zu(e,t,n="/"){let s,o={},a="",u="";const c=t.indexOf("#");let f=t.indexOf("?");return c=0&&(f=-1),f>-1&&(s=t.slice(0,f),a=t.slice(f+1,c>-1?c:t.length),o=e(a)),c>-1&&(s=s||t.slice(0,c),u=t.slice(c,t.length)),s=lP(s??t,n),{fullPath:s+(a&&"?")+a+u,path:s,query:o,hash:co(u)}}function iP(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Wp(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function oP(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&ai(t.matched[s],n.matched[o])&&jv(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function ai(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function jv(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!aP(e[n],t[n]))return!1;return!0}function aP(e,t){return Un(e)?Up(e,t):Un(t)?Up(t,e):e===t}function Up(e,t){return Un(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function lP(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let a=n.length-1,u,c;for(u=0;u1&&a--;else break;return n.slice(0,a).join("/")+"/"+s.slice(u).join("/")}const Hr={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var fo;(function(e){e.pop="pop",e.push="push"})(fo||(fo={}));var Xi;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Xi||(Xi={}));function uP(e){if(!e)if(Js){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),sP(e)}const cP=/^[^#]+#/;function fP(e,t){return e.replace(cP,"#")+t}function dP(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const _l=()=>({left:window.scrollX,top:window.scrollY});function hP(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=dP(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function qp(e,t){return(history.state?history.state.position-t:-1)+e}const Oc=new Map;function pP(e,t){Oc.set(e,t)}function gP(e){const t=Oc.get(e);return Oc.delete(e),t}let mP=()=>location.protocol+"//"+location.host;function zv(e,t){const{pathname:n,search:s,hash:o}=t,a=e.indexOf("#");if(a>-1){let c=o.includes(e.slice(a))?e.slice(a).length:1,f=o.slice(c);return f[0]!=="/"&&(f="/"+f),Wp(f,"")}return Wp(n,e)+s+o}function vP(e,t,n,s){let o=[],a=[],u=null;const c=({state:y})=>{const m=zv(e,location),w=n.value,x=t.value;let R=0;if(y){if(n.value=m,t.value=y,u&&u===w){u=null;return}R=x?y.position-x.position:0}else s(m);o.forEach(O=>{O(n.value,w,{delta:R,type:fo.pop,direction:R?R>0?Xi.forward:Xi.back:Xi.unknown})})};function f(){u=n.value}function p(y){o.push(y);const m=()=>{const w=o.indexOf(y);w>-1&&o.splice(w,1)};return a.push(m),m}function h(){const{history:y}=window;y.state&&y.replaceState(et({},y.state,{scroll:_l()}),"")}function g(){for(const y of a)y();a=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",h)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",h,{passive:!0}),{pauseListeners:f,listen:p,destroy:g}}function Kp(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?_l():null}}function yP(e){const{history:t,location:n}=window,s={value:zv(e,n)},o={value:t.state};o.value||a(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(f,p,h){const g=e.indexOf("#"),y=g>-1?(n.host&&document.querySelector("base")?e:e.slice(g))+f:mP()+e+f;try{t[h?"replaceState":"pushState"](p,"",y),o.value=p}catch(m){console.error(m),n[h?"replace":"assign"](y)}}function u(f,p){const h=et({},t.state,Kp(o.value.back,f,o.value.forward,!0),p,{position:o.value.position});a(f,h,!0),s.value=f}function c(f,p){const h=et({},o.value,t.state,{forward:f,scroll:_l()});a(h.current,h,!0);const g=et({},Kp(s.value,f,null),{position:h.position+1},p);a(f,g,!1),s.value=f}return{location:s,state:o,push:c,replace:u}}function _P(e){e=uP(e);const t=yP(e),n=vP(e,t.state,t.location,t.replace);function s(a,u=!0){u||n.pauseListeners(),history.go(a)}const o=et({location:"",base:e,go:s,createHref:fP.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function bP(e){return typeof e=="string"||e&&typeof e=="object"}function Yv(e){return typeof e=="string"||typeof e=="symbol"}const Jv=Symbol("");var Gp;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Gp||(Gp={}));function li(e,t){return et(new Error,{type:e,[Jv]:!0},t)}function vr(e,t){return e instanceof Error&&Jv in e&&(t==null||!!(e.type&t))}const jp="[^/]+?",wP={sensitive:!1,strict:!1,start:!0,end:!0},xP=/[.+*?^${}()[\]/\\]/g;function SP(e,t){const n=et({},wP,t),s=[];let o=n.start?"^":"";const a=[];for(const p of e){const h=p.length?[]:[90];n.strict&&!p.length&&(o+="/");for(let g=0;gt.length?t.length===1&&t[0]===80?1:-1:0}function Xv(e,t){let n=0;const s=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const CP={type:0,value:""},AP=/[a-zA-Z0-9_]/;function TP(e){if(!e)return[[]];if(e==="/")return[[CP]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${p}": ${m}`)}let n=0,s=n;const o=[];let a;function u(){a&&o.push(a),a=[]}let c=0,f,p="",h="";function g(){p&&(n===0?a.push({type:0,value:p}):n===1||n===2||n===3?(a.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${p}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:p,regexp:h,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),p="")}function y(){p+=f}for(;c{u(S)}:Ji}function u(g){if(Yv(g)){const y=s.get(g);y&&(s.delete(g),n.splice(n.indexOf(y),1),y.children.forEach(u),y.alias.forEach(u))}else{const y=n.indexOf(g);y>-1&&(n.splice(y,1),g.record.name&&s.delete(g.record.name),g.children.forEach(u),g.alias.forEach(u))}}function c(){return n}function f(g){const y=IP(g,n);n.splice(y,0,g),g.record.name&&!Xp(g)&&s.set(g.record.name,g)}function p(g,y){let m,w={},x,R;if("name"in g&&g.name){if(m=s.get(g.name),!m)throw li(1,{location:g});R=m.record.name,w=et(Yp(y.params,m.keys.filter(S=>!S.optional).concat(m.parent?m.parent.keys.filter(S=>S.optional):[]).map(S=>S.name)),g.params&&Yp(g.params,m.keys.map(S=>S.name))),x=m.stringify(w)}else if(g.path!=null)x=g.path,m=n.find(S=>S.re.test(x)),m&&(w=m.parse(x),R=m.record.name);else{if(m=y.name?s.get(y.name):n.find(S=>S.re.test(y.path)),!m)throw li(1,{location:g,currentLocation:y});R=m.record.name,w=et({},y.params,g.params),x=m.stringify(w)}const O=[];let L=m;for(;L;)O.unshift(L.record),L=L.parent;return{name:R,path:x,params:w,matched:O,meta:OP(O)}}e.forEach(g=>a(g));function h(){n.length=0,s.clear()}return{addRoute:a,resolve:p,removeRoute:u,clearRoutes:h,getRoutes:c,getRecordMatcher:o}}function Yp(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Jp(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:kP(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function kP(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Xp(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function OP(e){return e.reduce((t,n)=>et(t,n.meta),{})}function Zp(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function IP(e,t){let n=0,s=t.length;for(;n!==s;){const a=n+s>>1;Xv(e,t[a])<0?s=a:n=a+1}const o=MP(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function MP(e){let t=e;for(;t=t.parent;)if(Zv(t)&&Xv(e,t)===0)return t}function Zv({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function LP(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oa&&kc(a)):[s&&kc(s)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function NP(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Un(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const DP=Symbol(""),eg=Symbol(""),bl=Symbol(""),gf=Symbol(""),Ic=Symbol("");function Mi(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function jr(e,t,n,s,o,a=u=>u()){const u=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((c,f)=>{const p=y=>{y===!1?f(li(4,{from:n,to:t})):y instanceof Error?f(y):bP(y)?f(li(2,{from:t,to:y})):(u&&s.enterCallbacks[o]===u&&typeof y=="function"&&u.push(y),c())},h=a(()=>e.call(s&&s.instances[o],t,n,p));let g=Promise.resolve(h);e.length<3&&(g=g.then(p)),g.catch(y=>f(y))})}function Qu(e,t,n,s,o=a=>a()){const a=[];for(const u of e)for(const c in u.components){let f=u.components[c];if(!(t!=="beforeRouteEnter"&&!u.instances[c]))if(Vv(f)){const h=(f.__vccOpts||f)[t];h&&a.push(jr(h,n,s,u,c,o))}else{let p=f();a.push(()=>p.then(h=>{if(!h)throw new Error(`Couldn't resolve component "${c}" at "${u.path}"`);const g=UT(h)?h.default:h;u.mods[c]=h,u.components[c]=g;const m=(g.__vccOpts||g)[t];return m&&jr(m,n,s,u,c,o)()}))}}return a}function tg(e){const t=rn(bl),n=rn(gf),s=Pe(()=>{const f=K(e.to);return t.resolve(f)}),o=Pe(()=>{const{matched:f}=s.value,{length:p}=f,h=f[p-1],g=n.matched;if(!h||!g.length)return-1;const y=g.findIndex(ai.bind(null,h));if(y>-1)return y;const m=ng(f[p-2]);return p>1&&ng(h)===m&&g[g.length-1].path!==m?g.findIndex(ai.bind(null,f[p-2])):y}),a=Pe(()=>o.value>-1&&VP(n.params,s.value.params)),u=Pe(()=>o.value>-1&&o.value===n.matched.length-1&&jv(n.params,s.value.params));function c(f={}){if(HP(f)){const p=t[K(e.replace)?"replace":"push"](K(e.to)).catch(Ji);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>p),p}return Promise.resolve()}return{route:s,href:Pe(()=>s.value.href),isActive:a,isExactActive:u,navigate:c}}function $P(e){return e.length===1?e[0]:e}const FP=Le({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:tg,setup(e,{slots:t}){const n=Ts(tg(e)),{options:s}=rn(bl),o=Pe(()=>({[rg(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[rg(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&$P(t.default(n));return e.custom?a:gl("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},a)}}}),BP=FP;function HP(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function VP(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!Un(o)||o.length!==s.length||s.some((a,u)=>a!==o[u]))return!1}return!0}function ng(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const rg=(e,t,n)=>e??t??n,WP=Le({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=rn(Ic),o=Pe(()=>e.route||s.value),a=rn(eg,0),u=Pe(()=>{let p=K(a);const{matched:h}=o.value;let g;for(;(g=h[p])&&!g.components;)p++;return p}),c=Pe(()=>o.value.matched[u.value]);Sr(eg,Pe(()=>u.value+1)),Sr(DP,c),Sr(Ic,o);const f=ce();return Xe(()=>[f.value,c.value,e.name],([p,h,g],[y,m,w])=>{h&&(h.instances[g]=p,m&&m!==h&&p&&p===y&&(h.leaveGuards.size||(h.leaveGuards=m.leaveGuards),h.updateGuards.size||(h.updateGuards=m.updateGuards))),p&&h&&(!m||!ai(h,m)||!y)&&(h.enterCallbacks[g]||[]).forEach(x=>x(p))},{flush:"post"}),()=>{const p=o.value,h=e.name,g=c.value,y=g&&g.components[h];if(!y)return sg(n.default,{Component:y,route:p});const m=g.props[h],w=m?m===!0?p.params:typeof m=="function"?m(p):m:null,R=gl(y,et({},w,t,{onVnodeUnmounted:O=>{O.component.isUnmounted&&(g.instances[h]=null)},ref:f}));return sg(n.default,{Component:R,route:p})||R}}});function sg(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const UP=WP;function qP(e){const t=RP(e.routes,e),n=e.parseQuery||LP,s=e.stringifyQuery||Qp,o=e.history,a=Mi(),u=Mi(),c=Mi(),f=jc(Hr);let p=Hr;Js&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const h=Xu.bind(null,z=>""+z),g=Xu.bind(null,nP),y=Xu.bind(null,co);function m(z,ue){let ie,_e;return Yv(z)?(ie=t.getRecordMatcher(z),_e=ue):_e=z,t.addRoute(_e,ie)}function w(z){const ue=t.getRecordMatcher(z);ue&&t.removeRoute(ue)}function x(){return t.getRoutes().map(z=>z.record)}function R(z){return!!t.getRecordMatcher(z)}function O(z,ue){if(ue=et({},ue||f.value),typeof z=="string"){const A=Zu(n,z,ue.path),N=t.resolve({path:A.path},ue),Z=o.createHref(A.fullPath);return et(A,N,{params:y(N.params),hash:co(A.hash),redirectedFrom:void 0,href:Z})}let ie;if(z.path!=null)ie=et({},z,{path:Zu(n,z.path,ue.path).path});else{const A=et({},z.params);for(const N in A)A[N]==null&&delete A[N];ie=et({},z,{params:g(A)}),ue.params=g(ue.params)}const _e=t.resolve(ie,ue),qe=z.hash||"";_e.params=h(y(_e.params));const nt=iP(s,et({},z,{hash:QT(qe),path:_e.path})),E=o.createHref(nt);return et({fullPath:nt,hash:qe,query:s===Qp?NP(z.query):z.query||{}},_e,{redirectedFrom:void 0,href:E})}function L(z){return typeof z=="string"?Zu(n,z,f.value.path):et({},z)}function S(z,ue){if(p!==z)return li(8,{from:ue,to:z})}function T(z){return U(z)}function k(z){return T(et(L(z),{replace:!0}))}function W(z){const ue=z.matched[z.matched.length-1];if(ue&&ue.redirect){const{redirect:ie}=ue;let _e=typeof ie=="function"?ie(z):ie;return typeof _e=="string"&&(_e=_e.includes("?")||_e.includes("#")?_e=L(_e):{path:_e},_e.params={}),et({query:z.query,hash:z.hash,params:_e.path!=null?{}:z.params},_e)}}function U(z,ue){const ie=p=O(z),_e=f.value,qe=z.state,nt=z.force,E=z.replace===!0,A=W(ie);if(A)return U(et(L(A),{state:typeof A=="object"?et({},qe,A.state):qe,force:nt,replace:E}),ue||ie);const N=ie;N.redirectedFrom=ue;let Z;return!nt&&oP(s,_e,ie)&&(Z=li(16,{to:N,from:_e}),_t(_e,_e,!0,!1)),(Z?Promise.resolve(Z):q(N,_e)).catch(H=>vr(H)?vr(H,2)?H:hn(H):he(H,N,_e)).then(H=>{if(H){if(vr(H,2))return U(et({replace:E},L(H.to),{state:typeof H.to=="object"?et({},qe,H.to.state):qe,force:nt}),ue||N)}else H=J(N,_e,!0,E,qe);return le(N,_e,H),H})}function Y(z,ue){const ie=S(z,ue);return ie?Promise.reject(ie):Promise.resolve()}function $(z){const ue=Rr.values().next().value;return ue&&typeof ue.runWithContext=="function"?ue.runWithContext(z):z()}function q(z,ue){let ie;const[_e,qe,nt]=KP(z,ue);ie=Qu(_e.reverse(),"beforeRouteLeave",z,ue);for(const A of _e)A.leaveGuards.forEach(N=>{ie.push(jr(N,z,ue))});const E=Y.bind(null,z,ue);return ie.push(E),Lt(ie).then(()=>{ie=[];for(const A of a.list())ie.push(jr(A,z,ue));return ie.push(E),Lt(ie)}).then(()=>{ie=Qu(qe,"beforeRouteUpdate",z,ue);for(const A of qe)A.updateGuards.forEach(N=>{ie.push(jr(N,z,ue))});return ie.push(E),Lt(ie)}).then(()=>{ie=[];for(const A of nt)if(A.beforeEnter)if(Un(A.beforeEnter))for(const N of A.beforeEnter)ie.push(jr(N,z,ue));else ie.push(jr(A.beforeEnter,z,ue));return ie.push(E),Lt(ie)}).then(()=>(z.matched.forEach(A=>A.enterCallbacks={}),ie=Qu(nt,"beforeRouteEnter",z,ue,$),ie.push(E),Lt(ie))).then(()=>{ie=[];for(const A of u.list())ie.push(jr(A,z,ue));return ie.push(E),Lt(ie)}).catch(A=>vr(A,8)?A:Promise.reject(A))}function le(z,ue,ie){c.list().forEach(_e=>$(()=>_e(z,ue,ie)))}function J(z,ue,ie,_e,qe){const nt=S(z,ue);if(nt)return nt;const E=ue===Hr,A=Js?history.state:{};ie&&(_e||E?o.replace(z.fullPath,et({scroll:E&&A&&A.scroll},qe)):o.push(z.fullPath,qe)),f.value=z,_t(z,ue,ie,E),hn()}let ge;function Ie(){ge||(ge=o.listen((z,ue,ie)=>{if(!Dn.listening)return;const _e=O(z),qe=W(_e);if(qe){U(et(qe,{replace:!0,force:!0}),_e).catch(Ji);return}p=_e;const nt=f.value;Js&&pP(qp(nt.fullPath,ie.delta),_l()),q(_e,nt).catch(E=>vr(E,12)?E:vr(E,2)?(U(et(L(E.to),{force:!0}),_e).then(A=>{vr(A,20)&&!ie.delta&&ie.type===fo.pop&&o.go(-1,!1)}).catch(Ji),Promise.reject()):(ie.delta&&o.go(-ie.delta,!1),he(E,_e,nt))).then(E=>{E=E||J(_e,nt,!1),E&&(ie.delta&&!vr(E,8)?o.go(-ie.delta,!1):ie.type===fo.pop&&vr(E,20)&&o.go(-1,!1)),le(_e,nt,E)}).catch(Ji)}))}let je=Mi(),de=Mi(),me;function he(z,ue,ie){hn(z);const _e=de.list();return _e.length?_e.forEach(qe=>qe(z,ue,ie)):console.error(z),Promise.reject(z)}function yt(){return me&&f.value!==Hr?Promise.resolve():new Promise((z,ue)=>{je.add([z,ue])})}function hn(z){return me||(me=!z,Ie(),je.list().forEach(([ue,ie])=>z?ie(z):ue()),je.reset()),z}function _t(z,ue,ie,_e){const{scrollBehavior:qe}=e;if(!Js||!qe)return Promise.resolve();const nt=!ie&&gP(qp(z.fullPath,0))||(_e||!ie)&&history.state&&history.state.scroll||null;return qn().then(()=>qe(z,ue,nt)).then(E=>E&&hP(E)).catch(E=>he(E,z,ue))}const Ht=z=>o.go(z);let Pr;const Rr=new Set,Dn={currentRoute:f,listening:!0,addRoute:m,removeRoute:w,clearRoutes:t.clearRoutes,hasRoute:R,getRoutes:x,resolve:O,options:e,push:T,replace:k,go:Ht,back:()=>Ht(-1),forward:()=>Ht(1),beforeEach:a.add,beforeResolve:u.add,afterEach:c.add,onError:de.add,isReady:yt,install(z){const ue=this;z.component("RouterLink",BP),z.component("RouterView",UP),z.config.globalProperties.$router=ue,Object.defineProperty(z.config.globalProperties,"$route",{enumerable:!0,get:()=>K(f)}),Js&&!Pr&&f.value===Hr&&(Pr=!0,T(o.location).catch(qe=>{}));const ie={};for(const qe in Hr)Object.defineProperty(ie,qe,{get:()=>f.value[qe],enumerable:!0});z.provide(bl,ue),z.provide(gf,Kc(ie)),z.provide(Ic,f);const _e=z.unmount;Rr.add(z),z.unmount=function(){Rr.delete(z),Rr.size<1&&(p=Hr,ge&&ge(),ge=null,f.value=Hr,Pr=!1,me=!1),_e()}}};function Lt(z){return z.reduce((ue,ie)=>ue.then(()=>$(ie)),Promise.resolve())}return Dn}function KP(e,t){const n=[],s=[],o=[],a=Math.max(t.matched.length,e.matched.length);for(let u=0;uai(p,c))?s.push(c):n.push(c));const f=e.matched[u];f&&(t.matched.find(p=>ai(p,f))||o.push(f))}return[n,s,o]}function wl(){return rn(bl)}function GP(e){return rn(gf)}const xl=xo({id:"downloader",state:()=>({ws:null,states:{},onDownload:[],prefill:null}),getters:{empty(){return Object.keys(this.states).length===0}},actions:{_fireDownload(e){this.onDownload.forEach(t=>t(e))},initialise(){const e=()=>{console.log("[downloader] attempting reconnect"),this.ws=new WebSocket(hf()+"/download/ws"),this.ws.onclose=()=>{console.log("[downloader] ws closed"),setTimeout(()=>e(),1e3)},this.ws.onopen=()=>{console.log("[downloader] ws connected")},this.ws.onmessage=t=>{const n=JSON.parse(t.data);if(n.status=="finished"){this.states[n.song.id]={...this.states[n.song.id],...n};return}this.states[n.song.id]=n}};e()},send(e){var t;(t=this.ws)==null||t.send(JSON.stringify(e))},downloadFromDb(e){this.send({action:"download",source:"db",songId:e}),this.states[e]={songId:e,status:"pending"},this._fireDownload(e)},downloadViaDownloader(e){this.prefill=e,wl().push("/download")},downloadOther(e){this.send({action:"download",source:"other",...e}),this.states[e.id]={songId:e.id,status:"pending"},this._fireDownload(e.id)},download(e){window.open(`/api/tracks/${e}/download`,"_blank","noopener noreferrer"),this.states[e].status="downloaded"},isSongDownloading(e){const t=this.states[e];return t!=null&&t.internal?t.status==="downloading":!1}}}),Eo=async(...e)=>{await nn().fetchPlaylists(...e)},c5=async e=>{await fetch(`/api/tracks/${e.id}`,{method:"PUT",body:JSON.stringify({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover})}),await Eo()},f5=async(e,t,n)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({[t]:n})}),await Eo()},d5=async e=>await(await fetch("/api/browse/track",{method:"POST",body:JSON.stringify({url:e})})).json(),Qv=e=>({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover,spotify:e.metadata?JSON.stringify(e.metadata.spotify):""}),ey=async(e,t)=>{e==="new"&&(e=await ff()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(Qv(t))}),await Eo(e)},ty=async(e,t)=>{e==="new"&&(e=await ff()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(t.map(n=>Qv(n)))}),await Eo(e)},h5=async(e,t=!0)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({favourite:t})}),await Eo()},p5=e=>{xl().downloadFromDb(e)},jP=async e=>await(await fetch(`/api/tracks/${e}`)).json(),g5=async e=>{const t=AT(e);return await jP(t)},zP=async(e,t=!1,n=null)=>{const s={id:e};return t&&(s.forceFetch=!0),n&&(s.spotifyId=n),await(await fetch("/api/spotify/meta",{method:"POST",body:JSON.stringify(s)})).json()},m5=async e=>await(await fetch(`/api/spotify/recommendations/${e}`)).json(),v5=async e=>{await fetch(`/api/player/stream/${e}`,{method:"DELETE"})},YP=async e=>({error:"Lyrics temporarily not supported.",lyrics:[]}),JP=async(e=!1)=>{var o,a;const n=kt().song;let s=(o=n.metadata.spotify)==null?void 0:o.id;return!s&&e&&(s=(a=(await zP(n.id)).spotify)==null?void 0:a.id),s?await YP():{error:"Spotify equivalent unknown."}},kt=xo({id:"player",state:()=>({playing:!1,progress:0,ready:!1,muted:!1,shuffle:!1,song:{title:null,artist:null,album:null,cover:Pc(null),source:null,duration:null,favourite:!1,id:-1,metadata:{plays:0,spotify:{id:null}}},playlistId:null,lyrics:null,volume:50,repeat:"repeat",sharedPlayer:null,player:null,queue:[]}),actions:{playPause(){this.playing?this.pause():this.play()},toggleRepeat(){var e;switch(this.repeat){case"repeat":this.repeat="repeat_on";break;case"repeat_on":this.repeat="repeat_one_on";break;case"repeat_one_on":this.repeat="repeat";break}localStorage.setItem("reap.repeat",this.repeat),(e=this.player)==null||e.setRepeat(this.repeat)},setRepeat(e){this.repeat=e},setMute(e){var t;this.muted=e,(t=this.player)==null||t.setMute(e)},toggleMute(){this.setMute(!this.muted)},setShuffle(e){this.shuffle=e,HT(e),nn().fetchPlaylists()},toggleShuffle(){this.setShuffle(!this.shuffle)},onSongEnded(){if(this.repeat==="repeat_one_on")this.play();else{if(this.repeat==="repeat"&&this.playlist.index.value===this.playlist.songs.length-1)return;this.next()}},play(){this.player.play()},pause(){this.player.pause()},next(){Hv()},previous(){BT()},setPlayer(e){e&&this.player!==e&&(this.player=e)},setQueue(e){this.queue=e.queue},async setSong(e){e.id!=this.song.id&&(this.song=e,this.song.cover=Pc(e.cover),this.progress=0,this.lyrics=null,this.lyrics=await JP(!0))},setReady(e){this.ready!==e&&(this.ready=e,e?nn().initialise():(this.$reset(),nn().$reset()))},setDuration(e){this.song.duration=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({duration:e})})},setPlaying(e){this.playing=e},seek(e){this.player.seek(e)},seekPercent(e){this.seek(this.durationSeconds*e/100)},setProgress(e){this.progress=Math.round(e)},setFavourite(e){this.song.favourite=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({favourite:e})})},setPlaylist(e){this.playlistId=e},setVolume(e){var t;e!=this.volume&&(this.volume=e,localStorage.setItem("reap.volume",e),this.player.setVolume&&((t=this.player)==null||t.setVolume(e)))},toggleFavourite(){this.setFavourite(!this.song.favourite)},async initialise(){this.volume=localStorage.getItem("reap.volume")||50,this.repeat=localStorage.getItem("reap.repeat")||"repeat_on",this.sharedPlayer=new FT,this.shuffle=await VT()},async loadPlaylist(e,t=null){const n={type:"playlist",id:e};["track","album"].includes(e)&&(n.type=e,n.id=t),e==="artist"&&(n.type=e,n.name=t,delete n.id),await fetch("/api/player/load",{method:"POST",body:JSON.stringify(n)})},loadSong(e,t){const n={index:t};e==="track"?n.type=e:n.playlist=e,fetch("/api/player/at",{method:"POST",body:JSON.stringify(n)})},rearrangeQueue(e,t){fetch(`/api/player/queue/${e}/${t}`,{method:"PUT"})},playlistPlayOrPauseIcon(e){return this.playlistId===e&&this.playing?"pause_circle":"play_circle"}},getters:{playlist(e){return nn().playlists.find(t=>t.id===e.playlistId)},hasLyrics(e){var t;return(t=e.lyrics)==null?void 0:t.lyrics},durationSeconds(e){return e.song.duration},displayDuration(e){const t=e.song.duration;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Tc(Math.floor(t%60),2)}`},stream(e){return`/api/player/stream/${e.song.id}`},cover(e){return e.song.cover},progressPercent(e){return e.progress/this.durationSeconds*1e3},displayProgress(e){const t=e.progress;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Tc(Math.floor(t%60),2)}`},loaded(e){return e.song.id!=-1},shuffleIcon(e){return e.shuffle?"shuffle_on":"shuffle"},muteIcon(e){return e.muted?"volume_off":e.volume>50?"volume_up":e.volume>0?"volume_down":"volume_mute"}}}),XP=(e,t,n)=>{const s=new CustomEvent("player.play",{detail:{title:e,artist:t,source:n}});window.dispatchEvent(s)},ZP={components:{Marquee:_r},name:"PlayerInPicture",props:{expandCover:Boolean},watch:{disabled(){this.disabled||this.$nextTick(()=>{this.$refs.player.addEventListener("mousedown",this.mouseDown,!1),window.addEventListener("mouseup",this.mouseUp,!1)})}},methods:{mouseDown(e){const t=this.$refs.player,n=document.getElementById("appRoot");e=e||window.event;var s=e.clientX,o=e.clientY,a=t.offsetTop,u=t.offsetLeft,c=parseInt(t.offsetWidth),f=parseInt(t.offsetHeight),p=parseInt(n.offsetWidth)-8,h=parseInt(n.offsetHeight)-8;n.style.cursor="move";var g=s-u,y=o-a;document.onmousemove=m=>{m=m||window.event,m.preventDefault(),m.stopPropagation();var w=m.clientX,x=m.clientY,R=w-g,O=x-y;R<8&&(R=8),O<8&&(O=8),R+c>p&&(R=p-c),O+f>h&&(O=h-f),this.divMove(t,R,O)}},mouseUp(){document.getElementById("appRoot").style.cursor="default",document.onmousemove=function(){}},divMove(e,t,n){e.style.bottom="auto",e.style.right="auto",e.style.left=t+"px",e.style.top=n+"px"}},data(){const e=kt();return window.addEventListener("player.play",t=>{const n=t.detail,s=n.source;if(this.name=`${n.artist} - ${n.title}`,e.pause(),s.includes("youtu")){var o=/youtu(?:.*\/v\/|.*v\=|\.be\/)([A-Za-z0-9_\-]{11})/;const a=s.match(o);if(a!=null&&a[1]){this.el=``,this.minimised=!1,this.disabled=!1;return}}if(s.includes("audius")){var o=/audius.co\/([A-Za-z0-9]+)\/([A-Za-z0-9\-]+)/;const u=s.match(o);if(u!=null&&u[1]&&(u!=null&&u[2])){fetch(`https://blockdaemon-audius-discovery-01.bdnodes.net/v1/full/tracks?handle=${u[1]}&slug=${u[2]}`).then(c=>c.json()).then(c=>{const f=c.data.id;this.el=``}),this.minimised=!1,this.disabled=!1;return}}if(s.includes("spotify")){var o=/spotify(?:.*\/(album|track|playlist)\/)([A-Za-z0-9_\-]{22})/;const u=s.match(o);if(u!=null&&u[1]){this.el=``,this.minimised=!1,this.disabled=!1;return}}s.includes("soundcloud")&&(fetch(`https://soundcloud.com/oembed?url=${s}&format=json`).then(a=>a.json()).then(a=>{this.el=a.html.replace('height="400"','height="70"').replace("&show_artwork=true","&show_artwork=true&auto_play=true").replace("o.minimised=!o.minimised)},Se(o.minimised?"zoom_out_map":"zoom_in_map"),1),F("span",{class:"material-symbols-rounded ms-wght-500",onClick:t[1]||(t[1]=c=>o.disabled=!o.disabled)},"close")])],2),F("div",{class:$e([{minimised:o.minimised},"frame"]),innerHTML:o.el},null,10,nR)],512))}const sR=tt(ZP,[["render",rR]]),iR={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 809.48 395.8"};function oR(e,t){return B(),ne("svg",iR,t[0]||(t[0]=[F("path",{d:"M80.09 254.67q-7.26 0-12.6-5.16c-3.57-3.43-5.35-7.7-5.35-12.79V79.04c0-4.84 1.78-8.97 5.35-12.41q5.34-5.16 12.6-5.16c7.26 0 8.97 1.72 12.41 5.16 3.43 3.43 5.15 7.57 5.15 12.41v157.68c0 5.09-1.72 9.36-5.15 12.79-3.44 3.44-7.58 5.16-12.41 5.16m70.63 61.47c-4.84 0-8.97-1.78-12.41-5.34q-5.16-5.355-5.16-12.6V17.57c0-4.58 1.72-8.66 5.16-12.22 3.43-3.56 7.57-5.34 12.41-5.34s9.04 1.78 12.6 5.34c3.56 3.57 5.34 7.64 5.34 12.22V298.2q0 7.245-5.34 12.6-5.34 5.34-12.6 5.34M17.38 193.2q-7.185 0-12.27-5.1c-3.4-3.4-5.1-7.61-5.1-12.65v-35.13q0-7.185 5.1-12.27 5.1-5.1 12.27-5.1c7.17 0 9 1.7 12.66 5.1 3.65 3.4 5.48 7.49 5.48 12.27v35.33c0 3.92-1.25 7.85-3.85 10.77-4.01 4.51-8.78 6.77-14.28 6.77Zm195.29 60.46c-4.78 0-8.87-1.7-12.28-5.11q-5.1-5.1-5.1-12.66V79.86c0-4.79 1.7-8.88 5.1-12.28s7.5-5.11 12.28-5.11 9.01 1.7 12.66 5.11c3.65 3.4 5.48 7.49 5.48 12.28V235.9c0 5.04-1.76 9.26-5.29 12.66-3.52 3.4-7.81 5.11-12.85 5.11Zm62.52-60.46c-4.78 0-8.94-1.7-12.46-5.1s-5.29-7.61-5.29-12.65v-35.13c0-4.79 1.76-8.88 5.29-12.27 3.53-3.4 7.68-5.1 12.46-5.1s8.94 1.7 12.46 5.1c3.53 3.4 5.29 7.49 5.29 12.27v35.13c0 5.03-1.76 9.25-5.29 12.65-3.52 3.4-7.68 5.1-12.46 5.1M436.15 266.18c-10.94-6.13-19.61-14.63-26-25.51s-9.59-23.17-9.59-36.88 3.2-26 9.59-36.88 15.06-19.34 26-25.41c10.94-6.06 22.94-9.1 35.99-9.1s25.21 3.03 36.09 9.1q16.32 9.09 25.8 25.41c6.33 10.88 9.49 23.17 9.49 36.88s-3.16 26-9.49 36.88-14.96 19.38-25.9 25.51-22.94 9.19-35.99 9.19-25.05-3.06-35.99-9.19m59.42-36.48c5.73-6.46 8.6-15.09 8.6-25.9s-2.87-19.8-8.6-26.2c-5.73-6.39-13.54-9.59-23.43-9.59s-17.87 3.2-23.53 9.59c-5.67 6.4-8.5 15.13-8.5 26.2s2.83 19.61 8.5 26c5.67 6.4 13.51 9.59 23.53 9.59s17.7-3.23 23.43-9.69M690.05 273.99h-38.76l-51.61-77.91v77.91h-38.76V134.58h38.76l51.61 78.9v-78.9h38.76zM750.95 165.63v22.74h44.49v29.46h-44.49v25.11h50.42v31.04h-89.18v-139.4h89.18v31.04h-50.42ZM414.68 76.05q2.565-1.5 6.27-1.5v5.43h-1.39c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22M455.71 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59s2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.52-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96q3.465 1.965 5.34 5.4c1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.7 8.7 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54q-2.805 2.535-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM486.61 97.82h-17.56l-3.23 8.95h-5.54l14.55-40.02h6.06l14.5 40.02h-5.54l-3.23-8.95Zm-1.5-4.27-7.28-20.33-7.28 20.33h14.55ZM529.81 75.13v31.65h-5.25v-4.68c-1 1.62-2.4 2.88-4.19 3.78s-3.76 1.36-5.92 1.36c-2.46 0-4.68-.51-6.64-1.53q-2.94-1.53-4.65-4.59c-1.14-2.04-1.7-4.52-1.7-7.45V75.13h5.2v17.85c0 3.12.79 5.52 2.37 7.19s3.73 2.51 6.47 2.51 5.02-.87 6.64-2.6 2.43-4.25 2.43-7.57V75.13h5.25ZM538.7 82.32c1.31-2.44 3.11-4.34 5.4-5.69s4.86-2.02 7.71-2.02c2.46 0 4.75.57 6.87 1.7 2.12 1.14 3.73 2.63 4.85 4.48V64.04h5.31v42.74h-5.31v-5.95q-1.56 2.835-4.62 4.65c-3.06 1.815-4.43 1.82-7.16 1.82s-5.36-.69-7.65-2.08-4.09-3.33-5.4-5.83-1.96-5.35-1.96-8.55.65-6.07 1.96-8.52m23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07s-3.44-1.42-5.4-1.42-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04q-1.44 2.655-1.44 6.24c0 3.585.48 4.53 1.44 6.32s2.25 3.16 3.87 4.1 3.41 1.42 5.37 1.42 3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1q1.44-2.685 1.44-6.27c0-3.585-.48-4.47-1.44-6.24ZM577.91 68.95c-.69-.69-1.04-1.54-1.04-2.54s.35-1.85 1.04-2.54 1.54-1.04 2.54-1.04 1.78.35 2.45 1.04 1.01 1.54 1.01 2.54-.34 1.85-1.01 2.54-1.49 1.04-2.45 1.04-1.85-.35-2.54-1.04m5.08 6.18v31.65h-5.25V75.13zM597.69 105.27c-2.41-1.35-4.29-3.26-5.66-5.75-1.37-2.48-2.05-5.36-2.05-8.63s.7-6.09 2.11-8.58 3.32-4.39 5.75-5.72 5.14-1.99 8.14-1.99 5.72.66 8.14 1.99 4.34 3.23 5.75 5.69 2.11 5.33 2.11 8.6-.72 6.15-2.17 8.63c-1.44 2.48-3.4 4.4-5.86 5.75s-5.2 2.02-8.2 2.02-5.65-.67-8.06-2.02Zm13.37-3.93c1.65-.89 2.99-2.21 4.01-3.98s1.53-3.93 1.53-6.47-.5-4.7-1.5-6.47q-1.5-2.655-3.93-3.96c-1.62-.87-3.37-1.3-5.25-1.3s-3.69.43-5.28 1.3q-2.4 1.305-3.84 3.96c-.96 1.77-1.44 3.93-1.44 6.47s.47 4.76 1.41 6.53q1.41 2.655 3.78 3.96c1.58.87 3.31 1.3 5.2 1.3s3.66-.44 5.31-1.33ZM652.38 86.65c-2.29 2.21-5.79 3.32-10.48 3.32h-7.74v16.81h-5.25V66.53h12.99c4.54 0 8 1.1 10.37 3.29s3.55 5.02 3.55 8.49-1.15 6.13-3.44 8.35Zm-4.01-2.92c1.39-1.27 2.08-3.08 2.08-5.43 0-4.97-2.85-7.45-8.55-7.45h-7.74v14.78h7.74c2.93 0 5.08-.64 6.47-1.91ZM667.6 64.04v42.74h-5.25V64.04zM676.55 82.32c1.31-2.44 3.11-4.34 5.4-5.69s4.84-2.02 7.65-2.02 5.18.6 7.22 1.79 3.56 2.7 4.56 4.5v-5.78h5.31v31.65h-5.31v-5.89q-1.56 2.775-4.65 4.59c-2.06 1.21-4.46 1.82-7.19 1.82s-5.35-.69-7.62-2.08-4.06-3.33-5.37-5.83-1.96-5.35-1.96-8.55.65-6.07 1.96-8.52Zm23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07s-3.44-1.42-5.4-1.42-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04q-1.44 2.655-1.44 6.24c0 3.585.48 4.53 1.44 6.32s2.25 3.16 3.87 4.1 3.41 1.42 5.37 1.42 3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1q1.44-2.685 1.44-6.27c0-3.585-.48-4.47-1.44-6.24ZM742.85 75.13l-19.06 46.55h-5.43l6.24-15.25-12.76-31.3h5.83l9.93 25.64 9.82-25.64zM776.8 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59s2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.51-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96q3.465 1.965 5.34 5.4c1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.7 8.7 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54q-2.805 2.535-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM793.12 76.05q2.565-1.5 6.27-1.5v5.43H798c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22"},null,-1)]))}const aR={render:oR},lR=2,ig=window.localStorage.getItem("renderedIcons"),ec=ig?new Map(JSON.parse(ig)):new Map,Ya=async(e,t,n=500,s="track")=>e?Dv(e,s):await mf(t,n),uR="/assets/img/bg-1024x1024.png",mf=async(e,t=512)=>{await document.fonts.ready;const n=`${lR}-${e}-${t}`;if(ec.has(n))return ec.get(n);const s=document.createElement("canvas"),o=s.getContext("2d");s.style.position="fixed",s.style.top=-t+"px",s.style.left=-t+"px",s.style.opacity="0",document.body.appendChild(s),s.height=t,s.width=t,s.style.height=t+"px",s.style.width=t+"px";const a=new Image;return a.src=uR,await new Promise(u=>{a.onload=()=>{o.drawImage(a,0,0,s.width,s.height),o.fillStyle="white",o.font="900 50px 'Poppins'",o.textAlign="center",o.shadowColor="rgba(0, 0, 0, 0.7)",o.shadowBlur=50,o.fillText(e,s.width/2,s.height/2+72/2,s.width),o.fillStyle="white",o.fillRect(0,0,s.width,14),o.fillStyle="black",o.font="400 italic 8px 'Poppins'",o.textAlign="left",o.fillText(" reAudioPlayer ".repeat(100),2,10);const c=20;o.fillStyle="white",o.font="600 10px 'Poppins'",o.textAlign="left",o.fillText((e==null?void 0:e.toUpperCase())??e,c,s.height-35+8+2);const f=o.measureText(e).width+c+16;o.fillStyle="white",o.fillRect(f,s.height-30,s.width-f-c,2);const p=s.toDataURL();ec.set(n,p),u(p)}})};/*! Fast Average Color | © 2023 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color */function cR(e){var t=e.toString(16);return t.length===1?"0"+t:t}function og(e){return"#"+e.map(cR).join("")}function fR(e){var t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128}function dR(e){return e?hR(e)?e:[e]:[]}function hR(e){return Array.isArray(e[0])}function vf(e,t,n){for(var s=0;s=t-n&&e<=t+n}function vR(e,t,n){var s=n[0],o=n[1],a=n[2],u=n[3],c=n[4],f=e[t+3],p=Ca(f,u,c);return u?!!(!f&&p||Ca(e[t],s,c)&&Ca(e[t+1],o,c)&&Ca(e[t+2],a,c)&&p):p}var yR=24;function _R(e,t,n){for(var s={},o=n.dominantDivider||yR,a=n.ignoredColor,u=n.step,c=[0,0,0,0,0],f=0;fa?(f=o/a,u=Mc,c=Math.round(u/f)):(f=a/o,c=Mc,u=Math.round(c/f)),(u>o||c>a||u"u";function kR(){return RR?ry?new OffscreenCanvas(1,1):null:document.createElement("canvas")}var OR="FastAverageColor: ";function zn(e){return Error(OR+e)}function Li(e,t){t||console.error(e)}var IR=function(){function e(){this.canvas=null,this.ctx=null}return e.prototype.getColorAsync=function(t,n){if(!t)return Promise.reject(zn("call .getColorAsync() without resource"));if(typeof t=="string"){if(typeof Image>"u")return Promise.reject(zn("resource as string is not supported in this environment"));var s=new Image;return s.crossOrigin=n&&n.crossOrigin||"",s.src=t,this.bindImageEvents(s,n)}else{if(ny(t)&&!t.complete)return this.bindImageEvents(t,n);var o=this.getColor(t,n);return o.error?Promise.reject(o.error):Promise.resolve(o)}},e.prototype.getColor=function(t,n){n=n||{};var s=ag(n);if(!t){var o=zn("call .getColor() without resource");return Li(o,n.silent),this.prepareResult(s,o)}var a=SR(t),u=PR(a,n);if(!u.srcWidth||!u.srcHeight||!u.destWidth||!u.destHeight){var o=zn('incorrect sizes for resource "'.concat(ug(t),'"'));return Li(o,n.silent),this.prepareResult(s,o)}if(!this.canvas&&(this.canvas=kR(),!this.canvas)){var o=zn("OffscreenCanvas is not supported in this browser");return Li(o,n.silent),this.prepareResult(s,o)}if(!this.ctx){if(this.ctx=this.canvas.getContext("2d",{willReadFrequently:!0}),!this.ctx){var o=zn("Canvas Context 2D is not supported in this browser");return Li(o,n.silent),this.prepareResult(s)}this.ctx.imageSmoothingEnabled=!1}this.canvas.width=u.destWidth,this.canvas.height=u.destHeight;try{this.ctx.clearRect(0,0,u.destWidth,u.destHeight),this.ctx.drawImage(t,u.srcLeft,u.srcTop,u.srcWidth,u.srcHeight,0,0,u.destWidth,u.destHeight);var c=this.ctx.getImageData(0,0,u.destWidth,u.destHeight).data;return this.prepareResult(this.getColorFromArray4(c,n))}catch(f){var o=zn("security error (CORS) for resource ".concat(ug(t),`. -Details: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image`));return Li(o,n.silent),!n.silent&&console.error(f),this.prepareResult(s,o)}},e.prototype.getColorFromArray4=function(t,n){n=n||{};var s=4,o=t.length,a=ag(n);if(o{const n=e.hex,s=Math.round(t*255).toString(16);return n+s},MR=async(e,t,n=.25)=>{if(!ns().ambient)return;var o=e.width/100,a=e.height/100,u=e.naturalWidth,c=e.naturalHeight;const f=await Promise.all([Hi.getColorAsync(t,{height:a}),Hi.getColorAsync(t,{left:u-o,width:o}),Hi.getColorAsync(t,{width:o}),Hi.getColorAsync(t,{top:c-a,height:a})]);o*=40,a*=40;var p=Vi(f[0],n),h=Vi(f[1],n),g=Vi(f[2],n),y=Vi(f[3],n);const m=" 10px",w=` ${o}px `,x=o+"px",R=a+"px";e.style.boxShadow=["0 -".concat(R," ").concat(w," ").concat(m," ").concat(p),"".concat(x," 0 ").concat(w," ").concat(m," ").concat(h),"0 ".concat(R," ").concat(w," ").concat(m," ").concat(g),"-".concat(x," 0 ").concat(w," ").concat(m," ").concat(y)].join(", ")},LR=async(e,t,n="to top right",s=.2)=>{if(!ns().ambient)return;const a=await Hi.getColorAsync(t),u=Vi(a,s),c=`linear-gradient(${n}, ${u}, transparent)`;e.style.background=c},NR={dark:!1,dynamic:!0},DR={dark:!0,dynamic:!1},Cs={"fg-secondary":{dark:"#1ed760",dynamic:"#00c48b",light:"#18a74b"},"fg-secondary-dk":{dark:"#217e41",dynamic:"#00c48b",light:"#80dda0"},"bg-contrast":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-contrast":{dark:"#121212",dynamic:"#1e1e1e",light:"white"},"fg-base":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-base-dk":{dark:"#a7a7a7",dynamic:"#c2bebe",light:"#8b8c91"},"fg-base-dkr":{dark:"#999",light:"#8b8c91",dynamic:"#999"},"bg-hover-ltr":{dark:"#242424"},"bg-hover-lt":{dark:"hsla(0,0%,100%,0.04)",light:"#b3b3b31f"},"bg-hover":{dark:"hsla(0,0%,100%,0.3)",dynamic:"#00c48b82",light:"#7c828f5e"},"bg-hover-dk":{dark:"#2a2a2a",dynamic:"#00c48b42",light:"#E3E7EB"},"bg-gradient":{dark:"linear-gradient(to left bottom, #1ed760, #217e41)",dynamic:"linear-gradient(to left bottom, #00a53c, #00297f)",light:"linear-gradient(to left bottom, #18a74b, #80dda0)"},"bg-gradient-placeholder":{dark:"linear-gradient(to left bottom, #00a53c, #00297f)"},"bg-base":{dark:"#121212",light:"white"},"bg-base-lt":{dark:"#181818",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-base-dk":{dark:"black",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-input":{dark:"var(--background-light)",light:"var(--background)"},"bg-fixedPlaylistHeader":{dark:"var(--bg-base-lt)",dynamic:"#374148"},"border-fixedPlaylistHeader":{dark:"#303030",dynamic:"none",light:"#D0D0D0"},"border-base":{dark:"hsla(0,0%,100%,0.1)",light:"#E3E7EB"},"border-container":{dark:"1px solid var(--border-base)",light:"1px solid var(--border-base)",dynamic:"1px solid transparent"},"ff-base":{dark:"Poppins, sans-serif"},"h-playlistEntry":{dark:"64px"},"h-player":{dark:"88px"},"h-player-mobile":{dark:"64px"},"h-header":{dark:"64px"},coverAsBackground:NR,supportsAmbient:DR},Sl=()=>ns();window.getThemes=()=>{window.themes=[];for(const e of Object.keys(Cs))for(const t of Object.keys(Cs[e]))window.themes.includes(t)||window.themes.push(t);return window.themes};window.getCurrentTheme=()=>Sl().theme;window.setTheme=e=>{if(window.getThemes().includes(e)){Sl().theme=e;for(const t of Object.keys(Cs)){const n=Cs[t];t!="coverAsBackground"&&document.documentElement.style.setProperty(`--${t}`,n[e]??n.dark)}}};window.restoreTheme=()=>window.setTheme(Sl().theme||"dynamic");window.getCurrentThemeProperty=e=>{const t=Cs[e];return t[Sl().theme]??t.dark};const sy=window,$R=["alt","src"],Jr=Le({__name:"Cover",props:{src:{type:String,required:!0},type:{type:String,required:!1,default:"track"},placeholder:{type:String,required:!1},withAmbient:{type:Boolean,required:!1,default:!1},ambientOpacity:{type:Number,required:!1,default:.2},name:{type:String,required:!1}},setup(e){const t=e,n=ce(null),s=async()=>{console.error("Failed to load cover",t.src),n.value=await mf(t.name??"N/A")},o=ce(null),a=async()=>{t.withAmbient&&o.value&&sy.getCurrentThemeProperty("supportsAmbient")&&MR(o.value,n.value,t.ambientOpacity)};return Xe(()=>t.src,async()=>{n.value=await Ya(t.src,t.name??"N/A",500,t.type)}),Mt(async()=>{n.value=await Ya(t.src,t.name??"N/A",500,t.type)}),(u,c)=>(B(),ne("img",{ref_key:"element",ref:o,alt:t.type,src:n.value,class:"cover rounded-md",onError:s,onLoad:a,lazy:""},null,40,$R))}}),FR={name:"NavEntry",components:{Cover:Jr},props:{icon:String,img:String,name:String,href:String,hasChildSites:Boolean,parentHref:String,minimised:Boolean},computed:{showImg(){return this.img?!0:/^\/playlist\/\w{22}$/.exec(this.href)},active(){return this.hasChildSites?this.$route.path.includes(this.href)?!0:this.parentHref&&this.$route.path.includes(this.parentHref):!1}}},BR={key:0,class:"material-icons-round icon"},HR={key:2,class:"name hideIfMobile"};function VR(e,t,n,s,o,a){const u=ws("Cover"),c=ws("router-link");return B(),Fe(c,{to:n.href,class:"link",title:n.name},{default:xt(()=>[F("div",{class:$e([{active:a.active,img:a.showImg},"navEntry"])},[n.icon?(B(),ne("span",BR,Se(n.icon),1)):xe("",!0),a.showImg?(B(),Fe(u,{key:1,src:n.img,class:"icon",type:"playlist",name:n.name},null,8,["src","name"])):xe("",!0),n.minimised?xe("",!0):(B(),ne("span",HR,Se(n.name),1))],2)]),_:1},8,["to","title"])}const Zn=tt(FR,[["render",VR],["__scopeId","data-v-1857dcd0"]]),WR="modulepreload",UR=function(e){return"/"+e},cg={},lt=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),c=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));o=Promise.allSettled(n.map(f=>{if(f=UR(f),f in cg)return;cg[f]=!0;const p=f.endsWith(".css"),h=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${f}"]${h}`))return;const g=document.createElement("link");if(g.rel=p?"stylesheet":WR,p||(g.as="script"),g.crossOrigin="",g.href=f,c&&g.setAttribute("nonce",c),document.head.appendChild(g),p)return new Promise((y,m)=>{g.addEventListener("load",y),g.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${f}`)))})}))}function a(u){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=u,window.dispatchEvent(c),!c.defaultPrevented)throw u}return o.then(u=>{for(const c of u||[])c.status==="rejected"&&a(c.reason);return t().catch(a)})},qR=[{path:"/",component:()=>lt(()=>import("./index-DHSwU4cI.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))},{path:"/discover",component:()=>lt(()=>import("./Explore-BUXrNSQM.js"),__vite__mapDeps([11,12])),meta:{title:"Discover - reAudioPlayer One"}},{path:"/audius/callback",redirect:e=>(window.location.href=window.location.origin+"/api/audius/callback"+e.hash.replace("#","?"),null)},{name:"Search",path:"/search/:query",component:()=>lt(()=>import("./index-BL89kDiO.js"),__vite__mapDeps([13,14])),meta:{title:"Search - reAudioPlayer One"}},{path:"/collection/albums",component:()=>lt(()=>import("./index-gMguJPQ7.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/artists",component:()=>lt(()=>import("./index-gMguJPQ7.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/playlists",component:()=>lt(()=>import("./index-gMguJPQ7.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/releases",component:()=>lt(()=>import("./index-gMguJPQ7.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Releases - reAudioPlayer One"}},{path:"/collection/tracks",component:()=>lt(()=>import("./Liked-CWhd73l6.js"),__vite__mapDeps([21,22,6,7,2,8,23,24,25,26,27,28,29])),meta:{title:"Liked Songs - reAudioPlayer One"}},{path:"/collection/tracks/breaking",component:()=>lt(()=>import("./Breaking-CGEJyAMd.js"),__vite__mapDeps([30,22,6,7,2,8,23,24,25,26,27,28,29])),meta:{title:"Breaking Songs - reAudioPlayer One"}},{path:"/playlist/create",component:()=>lt(()=>import("./Create-CWyRZu9j.js"),__vite__mapDeps([31,32])),meta:{title:"Create Playlist - reAudioPlayer One"}},{path:"/playlist/:id/edit",component:()=>lt(()=>import("./Editor-Bsw-vrY4.js"),__vite__mapDeps([33,34,6,7,2,8,23,35])),meta:{title:"Smart Playlist Editor - reAudioPlayer One"}},{path:"/playlist/:id",component:()=>lt(()=>import("./Normal-FL2a59AI.js"),__vite__mapDeps([36,22,6,7,2,8,23,24,25,26,27,28,29])),meta:{title:"Playlist - reAudioPlayer One"}},{path:"/track/:hash",component:()=>lt(()=>import("./Track-CjVZRaly.js"),__vite__mapDeps([37,24,25,7,9,38])),meta:{title:"Track - reAudioPlayer One"}},{path:"/artist/:name",component:()=>lt(()=>import("./Artist-BqEsBai3.js"),__vite__mapDeps([39,24,25,6,7,2,8,9,40])),meta:{title:"Artist - reAudioPlayer One"}},{path:"/album/:hash",component:()=>lt(()=>import("./Album-DBkve-Q-.js"),__vite__mapDeps([41,6,7,2,8,42])),meta:{title:"Album - reAudioPlayer One"}},{path:"/preferences",component:()=>lt(()=>import("./index-D3xaJuij.js"),__vite__mapDeps([43,27,28,4,5,26,44])),meta:{title:"Preferences - reAudioPlayer One"}},{path:"/import",component:()=>lt(()=>import("./Import-BjxBPYQC.js"),__vite__mapDeps([45,26,46])),meta:{title:"Import - reAudioPlayer One"}},{path:"/import/:id",component:()=>lt(()=>import("./ImportLink-BtDFD4Om.js"),__vite__mapDeps([47,48])),meta:{title:"Import - reAudioPlayer One"}},{path:"/export",component:()=>lt(()=>import("./Export-DL4N6BXD.js"),__vite__mapDeps([49,26,50])),meta:{title:"Export - reAudioPlayer One"}},{path:"/sing-along",component:()=>lt(()=>import("./index-pKX8fWFw.js"),__vite__mapDeps([51,52])),meta:{title:"Sing Along - reAudioPlayer One"}},{path:"/download",component:()=>lt(()=>import("./index-DaDsLZC_.js"),__vite__mapDeps([53,54])),meta:{title:"Download - reAudioPlayer One"}},{path:"/welcome",component:()=>lt(()=>import("./Welcome-DKD9_kGv.js"),__vite__mapDeps([55,56])),meta:{title:"Welcome to reAudioPlayer One"}},{path:"/news",component:()=>lt(()=>import("./News-WonXXBsL.js"),__vite__mapDeps([57,16,17,58])),meta:{title:"News - reAudioPlayer One"}},{path:"/sports",component:()=>lt(()=>import("./Sports-J0i4HuLb.js"),__vite__mapDeps([59,16,17,60])),meta:{title:"Sports - reAudioPlayer One"}},{path:"/news/:url",component:()=>lt(()=>import("./NewsArticle-BCsM1dbj.js"),__vite__mapDeps([61,18,19,62])),meta:{title:"News - reAudioPlayer One"}},{path:"/player/insights",component:()=>lt(()=>import("./Insight-D-5GEXTO.js"),__vite__mapDeps([63,64])),meta:{title:"Insights - reAudioPlayer One"}},{path:"/player",component:()=>lt(()=>import("./index-BYAiHr26.js"),__vite__mapDeps([65,34,6,7,2,8,23,1,3,66])),meta:{title:"reAudioPlayer One"}}],Xs=qP({history:_P(),routes:qR}),KR={class:"flex flex-row gap-2 items-center"},GR={class:"relative flex-1"},jR=["type","placeholder"],zR=Le({__name:"TextInputWithIcon",props:{icon:String,label:String,placeholder:{type:String,required:!1,default:""},modelValue:{type:String,required:!1,default:""},type:{type:String,required:!1,default:"text"},onClick:{type:Function,required:!1},expanded:{type:Boolean,required:!1,default:!1},onKeyUp:{type:Function,required:!1}},emits:["update:modelValue","change","submit","focusout"],setup(e,{expose:t,emit:n}){const s=e,o=ce(s.modelValue),a=ce(!1);Xe(()=>s.modelValue,h=>{o.value=h});const u=n,c=()=>{u("update:modelValue",o.value),u("change",o.value)},f=h=>{s.onKeyUp&&s.onKeyUp(h)||h.key==="Enter"&&u("submit",o)},p=ce();return t({focus:()=>{var h;(h=p.value)==null||h.focus()}}),(h,g)=>(B(),ne("div",{class:$e(["text-input-with-icon rounded-xl flex flex-col justify-center px-4",{expanded:e.expanded}])},[F("div",KR,[e.icon?(B(),ne("span",{key:0,class:$e([{"cursor-pointer":e.onClick},"material-symbols-rounded ms-wght-200"]),onClick:g[0]||(g[0]=(...y)=>e.onClick&&e.onClick(...y))},Se(e.icon),3)):xe("",!0),F("div",GR,[e.label?(B(),ne("span",{key:0,class:$e(["text-sm label-placeholder capitalize",{atTop:!!o.value}])},Se(e.label),3)):xe("",!0),ni(F("input",{"onUpdate:modelValue":g[1]||(g[1]=y=>o.value=y),type:e.type=="password"&&a.value?"text":e.type,placeholder:e.placeholder,onInput:c,onKeyup:f,onFocusout:g[2]||(g[2]=y=>h.$emit("focusout")),ref_key:"element",ref:p},null,40,jR),[[vl,o.value]])]),e.type=="password"?(B(),ne("span",{key:1,class:"material-symbols-rounded cursor-pointer",onClick:g[3]||(g[3]=y=>a.value=!a.value)},Se(a.value?"visibility":"visibility_off"),1)):xe("",!0)])],2))}}),Lc=tt(zR,[["__scopeId","data-v-7bfb9f4a"]]);var Aa=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function y5(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function _5(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function s(){return this instanceof s?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(s){var o=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(n,s,o.get?o:{enumerable:!0,get:function(){return e[s]}})}),n}var Wi={exports:{}};/** + */const Js=typeof document<"u";function Vv(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function UT(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Vv(e.default)}const et=Object.assign;function Xu(e,t){const n={};for(const s in t){const o=t[s];n[s]=Un(o)?o.map(e):e(o)}return n}const Ji=()=>{},Un=Array.isArray,Wv=/#/g,qT=/&/g,KT=/\//g,GT=/=/g,jT=/\?/g,Uv=/\+/g,zT=/%5B/g,YT=/%5D/g,qv=/%5E/g,JT=/%60/g,Kv=/%7B/g,XT=/%7C/g,Gv=/%7D/g,ZT=/%20/g;function pf(e){return encodeURI(""+e).replace(XT,"|").replace(zT,"[").replace(YT,"]")}function QT(e){return pf(e).replace(Kv,"{").replace(Gv,"}").replace(qv,"^")}function kc(e){return pf(e).replace(Uv,"%2B").replace(ZT,"+").replace(Wv,"%23").replace(qT,"%26").replace(JT,"`").replace(Kv,"{").replace(Gv,"}").replace(qv,"^")}function eP(e){return kc(e).replace(GT,"%3D")}function tP(e){return pf(e).replace(Wv,"%23").replace(jT,"%3F")}function nP(e){return e==null?"":tP(e).replace(KT,"%2F")}function co(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const rP=/\/$/,sP=e=>e.replace(rP,"");function Zu(e,t,n="/"){let s,o={},a="",u="";const c=t.indexOf("#");let f=t.indexOf("?");return c=0&&(f=-1),f>-1&&(s=t.slice(0,f),a=t.slice(f+1,c>-1?c:t.length),o=e(a)),c>-1&&(s=s||t.slice(0,c),u=t.slice(c,t.length)),s=lP(s??t,n),{fullPath:s+(a&&"?")+a+u,path:s,query:o,hash:co(u)}}function iP(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Wp(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function oP(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&ai(t.matched[s],n.matched[o])&&jv(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function ai(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function jv(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!aP(e[n],t[n]))return!1;return!0}function aP(e,t){return Un(e)?Up(e,t):Un(t)?Up(t,e):e===t}function Up(e,t){return Un(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function lP(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let a=n.length-1,u,c;for(u=0;u1&&a--;else break;return n.slice(0,a).join("/")+"/"+s.slice(u).join("/")}const Hr={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var fo;(function(e){e.pop="pop",e.push="push"})(fo||(fo={}));var Xi;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Xi||(Xi={}));function uP(e){if(!e)if(Js){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),sP(e)}const cP=/^[^#]+#/;function fP(e,t){return e.replace(cP,"#")+t}function dP(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const _l=()=>({left:window.scrollX,top:window.scrollY});function hP(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=dP(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function qp(e,t){return(history.state?history.state.position-t:-1)+e}const Oc=new Map;function pP(e,t){Oc.set(e,t)}function gP(e){const t=Oc.get(e);return Oc.delete(e),t}let mP=()=>location.protocol+"//"+location.host;function zv(e,t){const{pathname:n,search:s,hash:o}=t,a=e.indexOf("#");if(a>-1){let c=o.includes(e.slice(a))?e.slice(a).length:1,f=o.slice(c);return f[0]!=="/"&&(f="/"+f),Wp(f,"")}return Wp(n,e)+s+o}function vP(e,t,n,s){let o=[],a=[],u=null;const c=({state:y})=>{const m=zv(e,location),w=n.value,x=t.value;let R=0;if(y){if(n.value=m,t.value=y,u&&u===w){u=null;return}R=x?y.position-x.position:0}else s(m);o.forEach(O=>{O(n.value,w,{delta:R,type:fo.pop,direction:R?R>0?Xi.forward:Xi.back:Xi.unknown})})};function f(){u=n.value}function p(y){o.push(y);const m=()=>{const w=o.indexOf(y);w>-1&&o.splice(w,1)};return a.push(m),m}function h(){const{history:y}=window;y.state&&y.replaceState(et({},y.state,{scroll:_l()}),"")}function g(){for(const y of a)y();a=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",h)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",h,{passive:!0}),{pauseListeners:f,listen:p,destroy:g}}function Kp(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?_l():null}}function yP(e){const{history:t,location:n}=window,s={value:zv(e,n)},o={value:t.state};o.value||a(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(f,p,h){const g=e.indexOf("#"),y=g>-1?(n.host&&document.querySelector("base")?e:e.slice(g))+f:mP()+e+f;try{t[h?"replaceState":"pushState"](p,"",y),o.value=p}catch(m){console.error(m),n[h?"replace":"assign"](y)}}function u(f,p){const h=et({},t.state,Kp(o.value.back,f,o.value.forward,!0),p,{position:o.value.position});a(f,h,!0),s.value=f}function c(f,p){const h=et({},o.value,t.state,{forward:f,scroll:_l()});a(h.current,h,!0);const g=et({},Kp(s.value,f,null),{position:h.position+1},p);a(f,g,!1),s.value=f}return{location:s,state:o,push:c,replace:u}}function _P(e){e=uP(e);const t=yP(e),n=vP(e,t.state,t.location,t.replace);function s(a,u=!0){u||n.pauseListeners(),history.go(a)}const o=et({location:"",base:e,go:s,createHref:fP.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function bP(e){return typeof e=="string"||e&&typeof e=="object"}function Yv(e){return typeof e=="string"||typeof e=="symbol"}const Jv=Symbol("");var Gp;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Gp||(Gp={}));function li(e,t){return et(new Error,{type:e,[Jv]:!0},t)}function vr(e,t){return e instanceof Error&&Jv in e&&(t==null||!!(e.type&t))}const jp="[^/]+?",wP={sensitive:!1,strict:!1,start:!0,end:!0},xP=/[.+*?^${}()[\]/\\]/g;function SP(e,t){const n=et({},wP,t),s=[];let o=n.start?"^":"";const a=[];for(const p of e){const h=p.length?[]:[90];n.strict&&!p.length&&(o+="/");for(let g=0;gt.length?t.length===1&&t[0]===80?1:-1:0}function Xv(e,t){let n=0;const s=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const CP={type:0,value:""},AP=/[a-zA-Z0-9_]/;function TP(e){if(!e)return[[]];if(e==="/")return[[CP]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${p}": ${m}`)}let n=0,s=n;const o=[];let a;function u(){a&&o.push(a),a=[]}let c=0,f,p="",h="";function g(){p&&(n===0?a.push({type:0,value:p}):n===1||n===2||n===3?(a.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${p}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:p,regexp:h,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),p="")}function y(){p+=f}for(;c{u(S)}:Ji}function u(g){if(Yv(g)){const y=s.get(g);y&&(s.delete(g),n.splice(n.indexOf(y),1),y.children.forEach(u),y.alias.forEach(u))}else{const y=n.indexOf(g);y>-1&&(n.splice(y,1),g.record.name&&s.delete(g.record.name),g.children.forEach(u),g.alias.forEach(u))}}function c(){return n}function f(g){const y=IP(g,n);n.splice(y,0,g),g.record.name&&!Xp(g)&&s.set(g.record.name,g)}function p(g,y){let m,w={},x,R;if("name"in g&&g.name){if(m=s.get(g.name),!m)throw li(1,{location:g});R=m.record.name,w=et(Yp(y.params,m.keys.filter(S=>!S.optional).concat(m.parent?m.parent.keys.filter(S=>S.optional):[]).map(S=>S.name)),g.params&&Yp(g.params,m.keys.map(S=>S.name))),x=m.stringify(w)}else if(g.path!=null)x=g.path,m=n.find(S=>S.re.test(x)),m&&(w=m.parse(x),R=m.record.name);else{if(m=y.name?s.get(y.name):n.find(S=>S.re.test(y.path)),!m)throw li(1,{location:g,currentLocation:y});R=m.record.name,w=et({},y.params,g.params),x=m.stringify(w)}const O=[];let L=m;for(;L;)O.unshift(L.record),L=L.parent;return{name:R,path:x,params:w,matched:O,meta:OP(O)}}e.forEach(g=>a(g));function h(){n.length=0,s.clear()}return{addRoute:a,resolve:p,removeRoute:u,clearRoutes:h,getRoutes:c,getRecordMatcher:o}}function Yp(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Jp(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:kP(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function kP(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Xp(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function OP(e){return e.reduce((t,n)=>et(t,n.meta),{})}function Zp(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function IP(e,t){let n=0,s=t.length;for(;n!==s;){const a=n+s>>1;Xv(e,t[a])<0?s=a:n=a+1}const o=MP(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function MP(e){let t=e;for(;t=t.parent;)if(Zv(t)&&Xv(e,t)===0)return t}function Zv({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function LP(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oa&&kc(a)):[s&&kc(s)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function NP(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Un(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const DP=Symbol(""),eg=Symbol(""),bl=Symbol(""),gf=Symbol(""),Ic=Symbol("");function Mi(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function jr(e,t,n,s,o,a=u=>u()){const u=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((c,f)=>{const p=y=>{y===!1?f(li(4,{from:n,to:t})):y instanceof Error?f(y):bP(y)?f(li(2,{from:t,to:y})):(u&&s.enterCallbacks[o]===u&&typeof y=="function"&&u.push(y),c())},h=a(()=>e.call(s&&s.instances[o],t,n,p));let g=Promise.resolve(h);e.length<3&&(g=g.then(p)),g.catch(y=>f(y))})}function Qu(e,t,n,s,o=a=>a()){const a=[];for(const u of e)for(const c in u.components){let f=u.components[c];if(!(t!=="beforeRouteEnter"&&!u.instances[c]))if(Vv(f)){const h=(f.__vccOpts||f)[t];h&&a.push(jr(h,n,s,u,c,o))}else{let p=f();a.push(()=>p.then(h=>{if(!h)throw new Error(`Couldn't resolve component "${c}" at "${u.path}"`);const g=UT(h)?h.default:h;u.mods[c]=h,u.components[c]=g;const m=(g.__vccOpts||g)[t];return m&&jr(m,n,s,u,c,o)()}))}}return a}function tg(e){const t=rn(bl),n=rn(gf),s=Pe(()=>{const f=K(e.to);return t.resolve(f)}),o=Pe(()=>{const{matched:f}=s.value,{length:p}=f,h=f[p-1],g=n.matched;if(!h||!g.length)return-1;const y=g.findIndex(ai.bind(null,h));if(y>-1)return y;const m=ng(f[p-2]);return p>1&&ng(h)===m&&g[g.length-1].path!==m?g.findIndex(ai.bind(null,f[p-2])):y}),a=Pe(()=>o.value>-1&&VP(n.params,s.value.params)),u=Pe(()=>o.value>-1&&o.value===n.matched.length-1&&jv(n.params,s.value.params));function c(f={}){if(HP(f)){const p=t[K(e.replace)?"replace":"push"](K(e.to)).catch(Ji);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>p),p}return Promise.resolve()}return{route:s,href:Pe(()=>s.value.href),isActive:a,isExactActive:u,navigate:c}}function $P(e){return e.length===1?e[0]:e}const FP=Le({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:tg,setup(e,{slots:t}){const n=Ts(tg(e)),{options:s}=rn(bl),o=Pe(()=>({[rg(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[rg(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&$P(t.default(n));return e.custom?a:gl("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},a)}}}),BP=FP;function HP(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function VP(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!Un(o)||o.length!==s.length||s.some((a,u)=>a!==o[u]))return!1}return!0}function ng(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const rg=(e,t,n)=>e??t??n,WP=Le({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=rn(Ic),o=Pe(()=>e.route||s.value),a=rn(eg,0),u=Pe(()=>{let p=K(a);const{matched:h}=o.value;let g;for(;(g=h[p])&&!g.components;)p++;return p}),c=Pe(()=>o.value.matched[u.value]);Sr(eg,Pe(()=>u.value+1)),Sr(DP,c),Sr(Ic,o);const f=ce();return Xe(()=>[f.value,c.value,e.name],([p,h,g],[y,m,w])=>{h&&(h.instances[g]=p,m&&m!==h&&p&&p===y&&(h.leaveGuards.size||(h.leaveGuards=m.leaveGuards),h.updateGuards.size||(h.updateGuards=m.updateGuards))),p&&h&&(!m||!ai(h,m)||!y)&&(h.enterCallbacks[g]||[]).forEach(x=>x(p))},{flush:"post"}),()=>{const p=o.value,h=e.name,g=c.value,y=g&&g.components[h];if(!y)return sg(n.default,{Component:y,route:p});const m=g.props[h],w=m?m===!0?p.params:typeof m=="function"?m(p):m:null,R=gl(y,et({},w,t,{onVnodeUnmounted:O=>{O.component.isUnmounted&&(g.instances[h]=null)},ref:f}));return sg(n.default,{Component:R,route:p})||R}}});function sg(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const UP=WP;function qP(e){const t=RP(e.routes,e),n=e.parseQuery||LP,s=e.stringifyQuery||Qp,o=e.history,a=Mi(),u=Mi(),c=Mi(),f=jc(Hr);let p=Hr;Js&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const h=Xu.bind(null,z=>""+z),g=Xu.bind(null,nP),y=Xu.bind(null,co);function m(z,ue){let ie,_e;return Yv(z)?(ie=t.getRecordMatcher(z),_e=ue):_e=z,t.addRoute(_e,ie)}function w(z){const ue=t.getRecordMatcher(z);ue&&t.removeRoute(ue)}function x(){return t.getRoutes().map(z=>z.record)}function R(z){return!!t.getRecordMatcher(z)}function O(z,ue){if(ue=et({},ue||f.value),typeof z=="string"){const A=Zu(n,z,ue.path),N=t.resolve({path:A.path},ue),Z=o.createHref(A.fullPath);return et(A,N,{params:y(N.params),hash:co(A.hash),redirectedFrom:void 0,href:Z})}let ie;if(z.path!=null)ie=et({},z,{path:Zu(n,z.path,ue.path).path});else{const A=et({},z.params);for(const N in A)A[N]==null&&delete A[N];ie=et({},z,{params:g(A)}),ue.params=g(ue.params)}const _e=t.resolve(ie,ue),qe=z.hash||"";_e.params=h(y(_e.params));const nt=iP(s,et({},z,{hash:QT(qe),path:_e.path})),E=o.createHref(nt);return et({fullPath:nt,hash:qe,query:s===Qp?NP(z.query):z.query||{}},_e,{redirectedFrom:void 0,href:E})}function L(z){return typeof z=="string"?Zu(n,z,f.value.path):et({},z)}function S(z,ue){if(p!==z)return li(8,{from:ue,to:z})}function T(z){return U(z)}function k(z){return T(et(L(z),{replace:!0}))}function W(z){const ue=z.matched[z.matched.length-1];if(ue&&ue.redirect){const{redirect:ie}=ue;let _e=typeof ie=="function"?ie(z):ie;return typeof _e=="string"&&(_e=_e.includes("?")||_e.includes("#")?_e=L(_e):{path:_e},_e.params={}),et({query:z.query,hash:z.hash,params:_e.path!=null?{}:z.params},_e)}}function U(z,ue){const ie=p=O(z),_e=f.value,qe=z.state,nt=z.force,E=z.replace===!0,A=W(ie);if(A)return U(et(L(A),{state:typeof A=="object"?et({},qe,A.state):qe,force:nt,replace:E}),ue||ie);const N=ie;N.redirectedFrom=ue;let Z;return!nt&&oP(s,_e,ie)&&(Z=li(16,{to:N,from:_e}),_t(_e,_e,!0,!1)),(Z?Promise.resolve(Z):q(N,_e)).catch(H=>vr(H)?vr(H,2)?H:hn(H):he(H,N,_e)).then(H=>{if(H){if(vr(H,2))return U(et({replace:E},L(H.to),{state:typeof H.to=="object"?et({},qe,H.to.state):qe,force:nt}),ue||N)}else H=J(N,_e,!0,E,qe);return le(N,_e,H),H})}function Y(z,ue){const ie=S(z,ue);return ie?Promise.reject(ie):Promise.resolve()}function $(z){const ue=Rr.values().next().value;return ue&&typeof ue.runWithContext=="function"?ue.runWithContext(z):z()}function q(z,ue){let ie;const[_e,qe,nt]=KP(z,ue);ie=Qu(_e.reverse(),"beforeRouteLeave",z,ue);for(const A of _e)A.leaveGuards.forEach(N=>{ie.push(jr(N,z,ue))});const E=Y.bind(null,z,ue);return ie.push(E),Lt(ie).then(()=>{ie=[];for(const A of a.list())ie.push(jr(A,z,ue));return ie.push(E),Lt(ie)}).then(()=>{ie=Qu(qe,"beforeRouteUpdate",z,ue);for(const A of qe)A.updateGuards.forEach(N=>{ie.push(jr(N,z,ue))});return ie.push(E),Lt(ie)}).then(()=>{ie=[];for(const A of nt)if(A.beforeEnter)if(Un(A.beforeEnter))for(const N of A.beforeEnter)ie.push(jr(N,z,ue));else ie.push(jr(A.beforeEnter,z,ue));return ie.push(E),Lt(ie)}).then(()=>(z.matched.forEach(A=>A.enterCallbacks={}),ie=Qu(nt,"beforeRouteEnter",z,ue,$),ie.push(E),Lt(ie))).then(()=>{ie=[];for(const A of u.list())ie.push(jr(A,z,ue));return ie.push(E),Lt(ie)}).catch(A=>vr(A,8)?A:Promise.reject(A))}function le(z,ue,ie){c.list().forEach(_e=>$(()=>_e(z,ue,ie)))}function J(z,ue,ie,_e,qe){const nt=S(z,ue);if(nt)return nt;const E=ue===Hr,A=Js?history.state:{};ie&&(_e||E?o.replace(z.fullPath,et({scroll:E&&A&&A.scroll},qe)):o.push(z.fullPath,qe)),f.value=z,_t(z,ue,ie,E),hn()}let ge;function Ie(){ge||(ge=o.listen((z,ue,ie)=>{if(!Dn.listening)return;const _e=O(z),qe=W(_e);if(qe){U(et(qe,{replace:!0,force:!0}),_e).catch(Ji);return}p=_e;const nt=f.value;Js&&pP(qp(nt.fullPath,ie.delta),_l()),q(_e,nt).catch(E=>vr(E,12)?E:vr(E,2)?(U(et(L(E.to),{force:!0}),_e).then(A=>{vr(A,20)&&!ie.delta&&ie.type===fo.pop&&o.go(-1,!1)}).catch(Ji),Promise.reject()):(ie.delta&&o.go(-ie.delta,!1),he(E,_e,nt))).then(E=>{E=E||J(_e,nt,!1),E&&(ie.delta&&!vr(E,8)?o.go(-ie.delta,!1):ie.type===fo.pop&&vr(E,20)&&o.go(-1,!1)),le(_e,nt,E)}).catch(Ji)}))}let je=Mi(),de=Mi(),me;function he(z,ue,ie){hn(z);const _e=de.list();return _e.length?_e.forEach(qe=>qe(z,ue,ie)):console.error(z),Promise.reject(z)}function yt(){return me&&f.value!==Hr?Promise.resolve():new Promise((z,ue)=>{je.add([z,ue])})}function hn(z){return me||(me=!z,Ie(),je.list().forEach(([ue,ie])=>z?ie(z):ue()),je.reset()),z}function _t(z,ue,ie,_e){const{scrollBehavior:qe}=e;if(!Js||!qe)return Promise.resolve();const nt=!ie&&gP(qp(z.fullPath,0))||(_e||!ie)&&history.state&&history.state.scroll||null;return qn().then(()=>qe(z,ue,nt)).then(E=>E&&hP(E)).catch(E=>he(E,z,ue))}const Ht=z=>o.go(z);let Pr;const Rr=new Set,Dn={currentRoute:f,listening:!0,addRoute:m,removeRoute:w,clearRoutes:t.clearRoutes,hasRoute:R,getRoutes:x,resolve:O,options:e,push:T,replace:k,go:Ht,back:()=>Ht(-1),forward:()=>Ht(1),beforeEach:a.add,beforeResolve:u.add,afterEach:c.add,onError:de.add,isReady:yt,install(z){const ue=this;z.component("RouterLink",BP),z.component("RouterView",UP),z.config.globalProperties.$router=ue,Object.defineProperty(z.config.globalProperties,"$route",{enumerable:!0,get:()=>K(f)}),Js&&!Pr&&f.value===Hr&&(Pr=!0,T(o.location).catch(qe=>{}));const ie={};for(const qe in Hr)Object.defineProperty(ie,qe,{get:()=>f.value[qe],enumerable:!0});z.provide(bl,ue),z.provide(gf,Kc(ie)),z.provide(Ic,f);const _e=z.unmount;Rr.add(z),z.unmount=function(){Rr.delete(z),Rr.size<1&&(p=Hr,ge&&ge(),ge=null,f.value=Hr,Pr=!1,me=!1),_e()}}};function Lt(z){return z.reduce((ue,ie)=>ue.then(()=>$(ie)),Promise.resolve())}return Dn}function KP(e,t){const n=[],s=[],o=[],a=Math.max(t.matched.length,e.matched.length);for(let u=0;uai(p,c))?s.push(c):n.push(c));const f=e.matched[u];f&&(t.matched.find(p=>ai(p,f))||o.push(f))}return[n,s,o]}function wl(){return rn(bl)}function GP(e){return rn(gf)}const xl=xo({id:"downloader",state:()=>({ws:null,states:{},onDownload:[],prefill:null}),getters:{empty(){return Object.keys(this.states).length===0}},actions:{_fireDownload(e){this.onDownload.forEach(t=>t(e))},initialise(){const e=()=>{console.log("[downloader] attempting reconnect"),this.ws=new WebSocket(hf()+"/download/ws"),this.ws.onclose=()=>{console.log("[downloader] ws closed"),setTimeout(()=>e(),1e3)},this.ws.onopen=()=>{console.log("[downloader] ws connected")},this.ws.onmessage=t=>{const n=JSON.parse(t.data);if(n.status=="finished"){this.states[n.song.id]={...this.states[n.song.id],...n};return}this.states[n.song.id]=n}};e()},send(e){var t;(t=this.ws)==null||t.send(JSON.stringify(e))},downloadFromDb(e){this.send({action:"download",source:"db",songId:e}),this.states[e]={songId:e,status:"pending"},this._fireDownload(e)},downloadViaDownloader(e){this.prefill=e,wl().push("/download")},downloadOther(e){this.send({action:"download",source:"other",...e}),this.states[e.id]={songId:e.id,status:"pending"},this._fireDownload(e.id)},download(e){window.open(`/api/tracks/${e}/download`,"_blank","noopener noreferrer"),this.states[e].status="downloaded"},isSongDownloading(e){const t=this.states[e];return t!=null&&t.internal?t.status==="downloading":!1}}}),Eo=async(...e)=>{await nn().fetchPlaylists(...e)},c5=async e=>{await fetch(`/api/tracks/${e.id}`,{method:"PUT",body:JSON.stringify({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover})}),await Eo()},f5=async(e,t,n)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({[t]:n})}),await Eo()},d5=async e=>await(await fetch("/api/browse/track",{method:"POST",body:JSON.stringify({url:e})})).json(),Qv=e=>({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover,spotify:e.metadata?JSON.stringify(e.metadata.spotify):""}),ey=async(e,t)=>{e==="new"&&(e=await ff()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(Qv(t))}),await Eo(e)},ty=async(e,t)=>{e==="new"&&(e=await ff()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(t.map(n=>Qv(n)))}),await Eo(e)},h5=async(e,t=!0)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({favourite:t})}),await Eo()},p5=e=>{xl().downloadFromDb(e)},jP=async e=>await(await fetch(`/api/tracks/${e}`)).json(),g5=async e=>{const t=AT(e);return await jP(t)},zP=async(e,t=!1,n=null)=>{const s={id:e};return t&&(s.forceFetch=!0),n&&(s.spotifyId=n),await(await fetch("/api/spotify/meta",{method:"POST",body:JSON.stringify(s)})).json()},m5=async e=>await(await fetch(`/api/spotify/recommendations/${e}`)).json(),v5=async e=>{await fetch(`/api/player/stream/${e}`,{method:"DELETE"})},YP=async e=>({error:"Lyrics temporarily not supported.",lyrics:[]}),JP=async(e=!1)=>{var o,a;const n=kt().song;let s=(o=n.metadata.spotify)==null?void 0:o.id;return!s&&e&&(s=(a=(await zP(n.id)).spotify)==null?void 0:a.id),s?await YP():{error:"Spotify equivalent unknown."}},kt=xo({id:"player",state:()=>({playing:!1,progress:0,ready:!1,muted:!1,shuffle:!1,song:{title:null,artist:null,album:null,cover:Pc(null),source:null,duration:null,favourite:!1,id:-1,metadata:{plays:0,spotify:{id:null}}},playlistId:null,lyrics:null,volume:50,repeat:"repeat",sharedPlayer:null,player:null,queue:[]}),actions:{playPause(){this.playing?this.pause():this.play()},toggleRepeat(){var e;switch(this.repeat){case"repeat":this.repeat="repeat_on";break;case"repeat_on":this.repeat="repeat_one_on";break;case"repeat_one_on":this.repeat="repeat";break}localStorage.setItem("reap.repeat",this.repeat),(e=this.player)==null||e.setRepeat(this.repeat)},setRepeat(e){this.repeat=e},setMute(e){var t;this.muted=e,(t=this.player)==null||t.setMute(e)},toggleMute(){this.setMute(!this.muted)},setShuffle(e){this.shuffle=e,HT(e),nn().fetchPlaylists()},toggleShuffle(){this.setShuffle(!this.shuffle)},onSongEnded(){if(this.repeat==="repeat_one_on")this.play();else{if(this.repeat==="repeat"&&this.playlist.index.value===this.playlist.songs.length-1)return;this.next()}},play(){this.player.play()},pause(){this.player.pause()},next(){Hv()},previous(){BT()},setPlayer(e){e&&this.player!==e&&(this.player=e)},setQueue(e){this.queue=e.queue},async setSong(e){e.id!=this.song.id&&(this.song=e,this.song.cover=Pc(e.cover),this.progress=0,this.lyrics=null,this.lyrics=await JP(!0))},setReady(e){this.ready!==e&&(this.ready=e,e?nn().initialise():(this.$reset(),nn().$reset()))},setDuration(e){this.song.duration=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({duration:e})})},setPlaying(e){this.playing=e},seek(e){this.player.seek(e)},seekPercent(e){this.seek(this.durationSeconds*e/100)},setProgress(e){this.progress=Math.round(e)},setFavourite(e){this.song.favourite=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({favourite:e})})},setPlaylist(e){this.playlistId=e},setVolume(e){var t;e!=this.volume&&(this.volume=e,localStorage.setItem("reap.volume",e),this.player.setVolume&&((t=this.player)==null||t.setVolume(e)))},toggleFavourite(){this.setFavourite(!this.song.favourite)},async initialise(){this.volume=localStorage.getItem("reap.volume")||50,this.repeat=localStorage.getItem("reap.repeat")||"repeat_on",this.sharedPlayer=new FT,this.shuffle=await VT()},async loadPlaylist(e,t=null){const n={type:"playlist",id:e};["track","album"].includes(e)&&(n.type=e,n.id=t),e==="artist"&&(n.type=e,n.name=t,delete n.id),await fetch("/api/player/load",{method:"POST",body:JSON.stringify(n)})},loadSong(e,t){const n={index:t};e==="track"?n.type=e:n.playlist=e,fetch("/api/player/at",{method:"POST",body:JSON.stringify(n)})},rearrangeQueue(e,t){fetch(`/api/player/queue/${e}/${t}`,{method:"PUT"})},playlistPlayOrPauseIcon(e){return this.playlistId===e&&this.playing?"pause_circle":"play_circle"}},getters:{playlist(e){return nn().playlists.find(t=>t.id===e.playlistId)},hasLyrics(e){var t;return(t=e.lyrics)==null?void 0:t.lyrics},durationSeconds(e){return e.song.duration},displayDuration(e){const t=e.song.duration;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Tc(Math.floor(t%60),2)}`},stream(e){return e.song.id<0?null:`/api/player/stream/${e.song.id}`},cover(e){return e.song.cover},progressPercent(e){return e.progress/this.durationSeconds*1e3},displayProgress(e){const t=e.progress;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Tc(Math.floor(t%60),2)}`},loaded(e){return e.song.id!=-1},shuffleIcon(e){return e.shuffle?"shuffle_on":"shuffle"},muteIcon(e){return e.muted?"volume_off":e.volume>50?"volume_up":e.volume>0?"volume_down":"volume_mute"}}}),XP=(e,t,n)=>{const s=new CustomEvent("player.play",{detail:{title:e,artist:t,source:n}});window.dispatchEvent(s)},ZP={components:{Marquee:_r},name:"PlayerInPicture",props:{expandCover:Boolean},watch:{disabled(){this.disabled||this.$nextTick(()=>{this.$refs.player.addEventListener("mousedown",this.mouseDown,!1),window.addEventListener("mouseup",this.mouseUp,!1)})}},methods:{mouseDown(e){const t=this.$refs.player,n=document.getElementById("appRoot");e=e||window.event;var s=e.clientX,o=e.clientY,a=t.offsetTop,u=t.offsetLeft,c=parseInt(t.offsetWidth),f=parseInt(t.offsetHeight),p=parseInt(n.offsetWidth)-8,h=parseInt(n.offsetHeight)-8;n.style.cursor="move";var g=s-u,y=o-a;document.onmousemove=m=>{m=m||window.event,m.preventDefault(),m.stopPropagation();var w=m.clientX,x=m.clientY,R=w-g,O=x-y;R<8&&(R=8),O<8&&(O=8),R+c>p&&(R=p-c),O+f>h&&(O=h-f),this.divMove(t,R,O)}},mouseUp(){document.getElementById("appRoot").style.cursor="default",document.onmousemove=function(){}},divMove(e,t,n){e.style.bottom="auto",e.style.right="auto",e.style.left=t+"px",e.style.top=n+"px"}},data(){const e=kt();return window.addEventListener("player.play",t=>{const n=t.detail,s=n.source;if(this.name=`${n.artist} - ${n.title}`,e.pause(),s.includes("youtu")){var o=/youtu(?:.*\/v\/|.*v\=|\.be\/)([A-Za-z0-9_\-]{11})/;const a=s.match(o);if(a!=null&&a[1]){this.el=``,this.minimised=!1,this.disabled=!1;return}}if(s.includes("audius")){var o=/audius.co\/([A-Za-z0-9]+)\/([A-Za-z0-9\-]+)/;const u=s.match(o);if(u!=null&&u[1]&&(u!=null&&u[2])){fetch(`https://blockdaemon-audius-discovery-01.bdnodes.net/v1/full/tracks?handle=${u[1]}&slug=${u[2]}`).then(c=>c.json()).then(c=>{const f=c.data.id;this.el=``}),this.minimised=!1,this.disabled=!1;return}}if(s.includes("spotify")){var o=/spotify(?:.*\/(album|track|playlist)\/)([A-Za-z0-9_\-]{22})/;const u=s.match(o);if(u!=null&&u[1]){this.el=``,this.minimised=!1,this.disabled=!1;return}}s.includes("soundcloud")&&(fetch(`https://soundcloud.com/oembed?url=${s}&format=json`).then(a=>a.json()).then(a=>{this.el=a.html.replace('height="400"','height="70"').replace("&show_artwork=true","&show_artwork=true&auto_play=true").replace("o.minimised=!o.minimised)},Se(o.minimised?"zoom_out_map":"zoom_in_map"),1),F("span",{class:"material-symbols-rounded ms-wght-500",onClick:t[1]||(t[1]=c=>o.disabled=!o.disabled)},"close")])],2),F("div",{class:$e([{minimised:o.minimised},"frame"]),innerHTML:o.el},null,10,nR)],512))}const sR=tt(ZP,[["render",rR]]),iR={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 809.48 395.8"};function oR(e,t){return B(),ne("svg",iR,t[0]||(t[0]=[F("path",{d:"M80.09 254.67q-7.26 0-12.6-5.16c-3.57-3.43-5.35-7.7-5.35-12.79V79.04c0-4.84 1.78-8.97 5.35-12.41q5.34-5.16 12.6-5.16c7.26 0 8.97 1.72 12.41 5.16 3.43 3.43 5.15 7.57 5.15 12.41v157.68c0 5.09-1.72 9.36-5.15 12.79-3.44 3.44-7.58 5.16-12.41 5.16m70.63 61.47c-4.84 0-8.97-1.78-12.41-5.34q-5.16-5.355-5.16-12.6V17.57c0-4.58 1.72-8.66 5.16-12.22 3.43-3.56 7.57-5.34 12.41-5.34s9.04 1.78 12.6 5.34c3.56 3.57 5.34 7.64 5.34 12.22V298.2q0 7.245-5.34 12.6-5.34 5.34-12.6 5.34M17.38 193.2q-7.185 0-12.27-5.1c-3.4-3.4-5.1-7.61-5.1-12.65v-35.13q0-7.185 5.1-12.27 5.1-5.1 12.27-5.1c7.17 0 9 1.7 12.66 5.1 3.65 3.4 5.48 7.49 5.48 12.27v35.33c0 3.92-1.25 7.85-3.85 10.77-4.01 4.51-8.78 6.77-14.28 6.77Zm195.29 60.46c-4.78 0-8.87-1.7-12.28-5.11q-5.1-5.1-5.1-12.66V79.86c0-4.79 1.7-8.88 5.1-12.28s7.5-5.11 12.28-5.11 9.01 1.7 12.66 5.11c3.65 3.4 5.48 7.49 5.48 12.28V235.9c0 5.04-1.76 9.26-5.29 12.66-3.52 3.4-7.81 5.11-12.85 5.11Zm62.52-60.46c-4.78 0-8.94-1.7-12.46-5.1s-5.29-7.61-5.29-12.65v-35.13c0-4.79 1.76-8.88 5.29-12.27 3.53-3.4 7.68-5.1 12.46-5.1s8.94 1.7 12.46 5.1c3.53 3.4 5.29 7.49 5.29 12.27v35.13c0 5.03-1.76 9.25-5.29 12.65-3.52 3.4-7.68 5.1-12.46 5.1M436.15 266.18c-10.94-6.13-19.61-14.63-26-25.51s-9.59-23.17-9.59-36.88 3.2-26 9.59-36.88 15.06-19.34 26-25.41c10.94-6.06 22.94-9.1 35.99-9.1s25.21 3.03 36.09 9.1q16.32 9.09 25.8 25.41c6.33 10.88 9.49 23.17 9.49 36.88s-3.16 26-9.49 36.88-14.96 19.38-25.9 25.51-22.94 9.19-35.99 9.19-25.05-3.06-35.99-9.19m59.42-36.48c5.73-6.46 8.6-15.09 8.6-25.9s-2.87-19.8-8.6-26.2c-5.73-6.39-13.54-9.59-23.43-9.59s-17.87 3.2-23.53 9.59c-5.67 6.4-8.5 15.13-8.5 26.2s2.83 19.61 8.5 26c5.67 6.4 13.51 9.59 23.53 9.59s17.7-3.23 23.43-9.69M690.05 273.99h-38.76l-51.61-77.91v77.91h-38.76V134.58h38.76l51.61 78.9v-78.9h38.76zM750.95 165.63v22.74h44.49v29.46h-44.49v25.11h50.42v31.04h-89.18v-139.4h89.18v31.04h-50.42ZM414.68 76.05q2.565-1.5 6.27-1.5v5.43h-1.39c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22M455.71 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59s2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.52-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96q3.465 1.965 5.34 5.4c1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.7 8.7 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54q-2.805 2.535-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM486.61 97.82h-17.56l-3.23 8.95h-5.54l14.55-40.02h6.06l14.5 40.02h-5.54l-3.23-8.95Zm-1.5-4.27-7.28-20.33-7.28 20.33h14.55ZM529.81 75.13v31.65h-5.25v-4.68c-1 1.62-2.4 2.88-4.19 3.78s-3.76 1.36-5.92 1.36c-2.46 0-4.68-.51-6.64-1.53q-2.94-1.53-4.65-4.59c-1.14-2.04-1.7-4.52-1.7-7.45V75.13h5.2v17.85c0 3.12.79 5.52 2.37 7.19s3.73 2.51 6.47 2.51 5.02-.87 6.64-2.6 2.43-4.25 2.43-7.57V75.13h5.25ZM538.7 82.32c1.31-2.44 3.11-4.34 5.4-5.69s4.86-2.02 7.71-2.02c2.46 0 4.75.57 6.87 1.7 2.12 1.14 3.73 2.63 4.85 4.48V64.04h5.31v42.74h-5.31v-5.95q-1.56 2.835-4.62 4.65c-3.06 1.815-4.43 1.82-7.16 1.82s-5.36-.69-7.65-2.08-4.09-3.33-5.4-5.83-1.96-5.35-1.96-8.55.65-6.07 1.96-8.52m23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07s-3.44-1.42-5.4-1.42-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04q-1.44 2.655-1.44 6.24c0 3.585.48 4.53 1.44 6.32s2.25 3.16 3.87 4.1 3.41 1.42 5.37 1.42 3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1q1.44-2.685 1.44-6.27c0-3.585-.48-4.47-1.44-6.24ZM577.91 68.95c-.69-.69-1.04-1.54-1.04-2.54s.35-1.85 1.04-2.54 1.54-1.04 2.54-1.04 1.78.35 2.45 1.04 1.01 1.54 1.01 2.54-.34 1.85-1.01 2.54-1.49 1.04-2.45 1.04-1.85-.35-2.54-1.04m5.08 6.18v31.65h-5.25V75.13zM597.69 105.27c-2.41-1.35-4.29-3.26-5.66-5.75-1.37-2.48-2.05-5.36-2.05-8.63s.7-6.09 2.11-8.58 3.32-4.39 5.75-5.72 5.14-1.99 8.14-1.99 5.72.66 8.14 1.99 4.34 3.23 5.75 5.69 2.11 5.33 2.11 8.6-.72 6.15-2.17 8.63c-1.44 2.48-3.4 4.4-5.86 5.75s-5.2 2.02-8.2 2.02-5.65-.67-8.06-2.02Zm13.37-3.93c1.65-.89 2.99-2.21 4.01-3.98s1.53-3.93 1.53-6.47-.5-4.7-1.5-6.47q-1.5-2.655-3.93-3.96c-1.62-.87-3.37-1.3-5.25-1.3s-3.69.43-5.28 1.3q-2.4 1.305-3.84 3.96c-.96 1.77-1.44 3.93-1.44 6.47s.47 4.76 1.41 6.53q1.41 2.655 3.78 3.96c1.58.87 3.31 1.3 5.2 1.3s3.66-.44 5.31-1.33ZM652.38 86.65c-2.29 2.21-5.79 3.32-10.48 3.32h-7.74v16.81h-5.25V66.53h12.99c4.54 0 8 1.1 10.37 3.29s3.55 5.02 3.55 8.49-1.15 6.13-3.44 8.35Zm-4.01-2.92c1.39-1.27 2.08-3.08 2.08-5.43 0-4.97-2.85-7.45-8.55-7.45h-7.74v14.78h7.74c2.93 0 5.08-.64 6.47-1.91ZM667.6 64.04v42.74h-5.25V64.04zM676.55 82.32c1.31-2.44 3.11-4.34 5.4-5.69s4.84-2.02 7.65-2.02 5.18.6 7.22 1.79 3.56 2.7 4.56 4.5v-5.78h5.31v31.65h-5.31v-5.89q-1.56 2.775-4.65 4.59c-2.06 1.21-4.46 1.82-7.19 1.82s-5.35-.69-7.62-2.08-4.06-3.33-5.37-5.83-1.96-5.35-1.96-8.55.65-6.07 1.96-8.52Zm23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07s-3.44-1.42-5.4-1.42-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04q-1.44 2.655-1.44 6.24c0 3.585.48 4.53 1.44 6.32s2.25 3.16 3.87 4.1 3.41 1.42 5.37 1.42 3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1q1.44-2.685 1.44-6.27c0-3.585-.48-4.47-1.44-6.24ZM742.85 75.13l-19.06 46.55h-5.43l6.24-15.25-12.76-31.3h5.83l9.93 25.64 9.82-25.64zM776.8 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59s2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.51-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96q3.465 1.965 5.34 5.4c1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.7 8.7 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54q-2.805 2.535-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM793.12 76.05q2.565-1.5 6.27-1.5v5.43H798c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22"},null,-1)]))}const aR={render:oR},lR=2,ig=window.localStorage.getItem("renderedIcons"),ec=ig?new Map(JSON.parse(ig)):new Map,Ya=async(e,t,n=500,s="track")=>e?Dv(e,s):await mf(t,n),uR="/assets/img/bg-1024x1024.png",mf=async(e,t=512)=>{await document.fonts.ready;const n=`${lR}-${e}-${t}`;if(ec.has(n))return ec.get(n);const s=document.createElement("canvas"),o=s.getContext("2d");s.style.position="fixed",s.style.top=-t+"px",s.style.left=-t+"px",s.style.opacity="0",document.body.appendChild(s),s.height=t,s.width=t,s.style.height=t+"px",s.style.width=t+"px";const a=new Image;return a.src=uR,await new Promise(u=>{a.onload=()=>{o.drawImage(a,0,0,s.width,s.height),o.fillStyle="white",o.font="900 50px 'Poppins'",o.textAlign="center",o.shadowColor="rgba(0, 0, 0, 0.7)",o.shadowBlur=50,o.fillText(e,s.width/2,s.height/2+72/2,s.width),o.fillStyle="white",o.fillRect(0,0,s.width,14),o.fillStyle="black",o.font="400 italic 8px 'Poppins'",o.textAlign="left",o.fillText(" reAudioPlayer ".repeat(100),2,10);const c=20;o.fillStyle="white",o.font="600 10px 'Poppins'",o.textAlign="left",o.fillText((e==null?void 0:e.toUpperCase())??e,c,s.height-35+8+2);const f=o.measureText(e).width+c+16;o.fillStyle="white",o.fillRect(f,s.height-30,s.width-f-c,2);const p=s.toDataURL();ec.set(n,p),u(p)}})};/*! Fast Average Color | © 2023 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color */function cR(e){var t=e.toString(16);return t.length===1?"0"+t:t}function og(e){return"#"+e.map(cR).join("")}function fR(e){var t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128}function dR(e){return e?hR(e)?e:[e]:[]}function hR(e){return Array.isArray(e[0])}function vf(e,t,n){for(var s=0;s=t-n&&e<=t+n}function vR(e,t,n){var s=n[0],o=n[1],a=n[2],u=n[3],c=n[4],f=e[t+3],p=Ca(f,u,c);return u?!!(!f&&p||Ca(e[t],s,c)&&Ca(e[t+1],o,c)&&Ca(e[t+2],a,c)&&p):p}var yR=24;function _R(e,t,n){for(var s={},o=n.dominantDivider||yR,a=n.ignoredColor,u=n.step,c=[0,0,0,0,0],f=0;fa?(f=o/a,u=Mc,c=Math.round(u/f)):(f=a/o,c=Mc,u=Math.round(c/f)),(u>o||c>a||u"u";function kR(){return RR?ry?new OffscreenCanvas(1,1):null:document.createElement("canvas")}var OR="FastAverageColor: ";function zn(e){return Error(OR+e)}function Li(e,t){t||console.error(e)}var IR=function(){function e(){this.canvas=null,this.ctx=null}return e.prototype.getColorAsync=function(t,n){if(!t)return Promise.reject(zn("call .getColorAsync() without resource"));if(typeof t=="string"){if(typeof Image>"u")return Promise.reject(zn("resource as string is not supported in this environment"));var s=new Image;return s.crossOrigin=n&&n.crossOrigin||"",s.src=t,this.bindImageEvents(s,n)}else{if(ny(t)&&!t.complete)return this.bindImageEvents(t,n);var o=this.getColor(t,n);return o.error?Promise.reject(o.error):Promise.resolve(o)}},e.prototype.getColor=function(t,n){n=n||{};var s=ag(n);if(!t){var o=zn("call .getColor() without resource");return Li(o,n.silent),this.prepareResult(s,o)}var a=SR(t),u=PR(a,n);if(!u.srcWidth||!u.srcHeight||!u.destWidth||!u.destHeight){var o=zn('incorrect sizes for resource "'.concat(ug(t),'"'));return Li(o,n.silent),this.prepareResult(s,o)}if(!this.canvas&&(this.canvas=kR(),!this.canvas)){var o=zn("OffscreenCanvas is not supported in this browser");return Li(o,n.silent),this.prepareResult(s,o)}if(!this.ctx){if(this.ctx=this.canvas.getContext("2d",{willReadFrequently:!0}),!this.ctx){var o=zn("Canvas Context 2D is not supported in this browser");return Li(o,n.silent),this.prepareResult(s)}this.ctx.imageSmoothingEnabled=!1}this.canvas.width=u.destWidth,this.canvas.height=u.destHeight;try{this.ctx.clearRect(0,0,u.destWidth,u.destHeight),this.ctx.drawImage(t,u.srcLeft,u.srcTop,u.srcWidth,u.srcHeight,0,0,u.destWidth,u.destHeight);var c=this.ctx.getImageData(0,0,u.destWidth,u.destHeight).data;return this.prepareResult(this.getColorFromArray4(c,n))}catch(f){var o=zn("security error (CORS) for resource ".concat(ug(t),`. +Details: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image`));return Li(o,n.silent),!n.silent&&console.error(f),this.prepareResult(s,o)}},e.prototype.getColorFromArray4=function(t,n){n=n||{};var s=4,o=t.length,a=ag(n);if(o{const n=e.hex,s=Math.round(t*255).toString(16);return n+s},MR=async(e,t,n=.25)=>{if(!ns().ambient)return;var o=e.width/100,a=e.height/100,u=e.naturalWidth,c=e.naturalHeight;const f=await Promise.all([Hi.getColorAsync(t,{height:a}),Hi.getColorAsync(t,{left:u-o,width:o}),Hi.getColorAsync(t,{width:o}),Hi.getColorAsync(t,{top:c-a,height:a})]);o*=40,a*=40;var p=Vi(f[0],n),h=Vi(f[1],n),g=Vi(f[2],n),y=Vi(f[3],n);const m=" 10px",w=` ${o}px `,x=o+"px",R=a+"px";e.style.boxShadow=["0 -".concat(R," ").concat(w," ").concat(m," ").concat(p),"".concat(x," 0 ").concat(w," ").concat(m," ").concat(h),"0 ".concat(R," ").concat(w," ").concat(m," ").concat(g),"-".concat(x," 0 ").concat(w," ").concat(m," ").concat(y)].join(", ")},LR=async(e,t,n="to top right",s=.2)=>{if(!ns().ambient)return;const a=await Hi.getColorAsync(t),u=Vi(a,s),c=`linear-gradient(${n}, ${u}, transparent)`;e.style.background=c},NR={dark:!1,dynamic:!0},DR={dark:!0,dynamic:!1},Cs={"fg-secondary":{dark:"#1ed760",dynamic:"#00c48b",light:"#18a74b"},"fg-secondary-dk":{dark:"#217e41",dynamic:"#00c48b",light:"#80dda0"},"bg-contrast":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-contrast":{dark:"#121212",dynamic:"#1e1e1e",light:"white"},"fg-base":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-base-dk":{dark:"#a7a7a7",dynamic:"#c2bebe",light:"#8b8c91"},"fg-base-dkr":{dark:"#999",light:"#8b8c91",dynamic:"#999"},"bg-hover-ltr":{dark:"#242424"},"bg-hover-lt":{dark:"hsla(0,0%,100%,0.04)",light:"#b3b3b31f"},"bg-hover":{dark:"hsla(0,0%,100%,0.3)",dynamic:"#00c48b82",light:"#7c828f5e"},"bg-hover-dk":{dark:"#2a2a2a",dynamic:"#00c48b42",light:"#E3E7EB"},"bg-gradient":{dark:"linear-gradient(to left bottom, #1ed760, #217e41)",dynamic:"linear-gradient(to left bottom, #00a53c, #00297f)",light:"linear-gradient(to left bottom, #18a74b, #80dda0)"},"bg-gradient-placeholder":{dark:"linear-gradient(to left bottom, #00a53c, #00297f)"},"bg-base":{dark:"#121212",light:"white"},"bg-base-lt":{dark:"#181818",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-base-dk":{dark:"black",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-input":{dark:"var(--background-light)",light:"var(--background)"},"bg-fixedPlaylistHeader":{dark:"var(--bg-base-lt)",dynamic:"#374148"},"border-fixedPlaylistHeader":{dark:"#303030",dynamic:"none",light:"#D0D0D0"},"border-base":{dark:"hsla(0,0%,100%,0.1)",light:"#E3E7EB"},"border-container":{dark:"1px solid var(--border-base)",light:"1px solid var(--border-base)",dynamic:"1px solid transparent"},"ff-base":{dark:"Poppins, sans-serif"},"h-playlistEntry":{dark:"64px"},"h-player":{dark:"88px"},"h-player-mobile":{dark:"64px"},"h-header":{dark:"64px"},coverAsBackground:NR,supportsAmbient:DR},Sl=()=>ns();window.getThemes=()=>{window.themes=[];for(const e of Object.keys(Cs))for(const t of Object.keys(Cs[e]))window.themes.includes(t)||window.themes.push(t);return window.themes};window.getCurrentTheme=()=>Sl().theme;window.setTheme=e=>{if(window.getThemes().includes(e)){Sl().theme=e;for(const t of Object.keys(Cs)){const n=Cs[t];t!="coverAsBackground"&&document.documentElement.style.setProperty(`--${t}`,n[e]??n.dark)}}};window.restoreTheme=()=>window.setTheme(Sl().theme||"dynamic");window.getCurrentThemeProperty=e=>{const t=Cs[e];return t[Sl().theme]??t.dark};const sy=window,$R=["alt","src"],Jr=Le({__name:"Cover",props:{src:{type:String,required:!0},type:{type:String,required:!1,default:"track"},placeholder:{type:String,required:!1},withAmbient:{type:Boolean,required:!1,default:!1},ambientOpacity:{type:Number,required:!1,default:.2},name:{type:String,required:!1}},setup(e){const t=e,n=ce(null),s=async()=>{console.error("Failed to load cover",t.src),n.value=await mf(t.name??"N/A")},o=ce(null),a=async()=>{t.withAmbient&&o.value&&sy.getCurrentThemeProperty("supportsAmbient")&&MR(o.value,n.value,t.ambientOpacity)};return Xe(()=>t.src,async()=>{n.value=await Ya(t.src,t.name??"N/A",500,t.type)}),Mt(async()=>{n.value=await Ya(t.src,t.name??"N/A",500,t.type)}),(u,c)=>(B(),ne("img",{ref_key:"element",ref:o,alt:t.type,src:n.value,class:"cover rounded-md",onError:s,onLoad:a,lazy:""},null,40,$R))}}),FR={name:"NavEntry",components:{Cover:Jr},props:{icon:String,img:String,name:String,href:String,hasChildSites:Boolean,parentHref:String,minimised:Boolean},computed:{showImg(){return this.img?!0:/^\/playlist\/\w{22}$/.exec(this.href)},active(){return this.hasChildSites?this.$route.path.includes(this.href)?!0:this.parentHref&&this.$route.path.includes(this.parentHref):!1}}},BR={key:0,class:"material-icons-round icon"},HR={key:2,class:"name hideIfMobile"};function VR(e,t,n,s,o,a){const u=ws("Cover"),c=ws("router-link");return B(),Fe(c,{to:n.href,class:"link",title:n.name},{default:xt(()=>[F("div",{class:$e([{active:a.active,img:a.showImg},"navEntry"])},[n.icon?(B(),ne("span",BR,Se(n.icon),1)):xe("",!0),a.showImg?(B(),Fe(u,{key:1,src:n.img,class:"icon",type:"playlist",name:n.name},null,8,["src","name"])):xe("",!0),n.minimised?xe("",!0):(B(),ne("span",HR,Se(n.name),1))],2)]),_:1},8,["to","title"])}const Zn=tt(FR,[["render",VR],["__scopeId","data-v-1857dcd0"]]),WR="modulepreload",UR=function(e){return"/"+e},cg={},lt=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),c=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));o=Promise.allSettled(n.map(f=>{if(f=UR(f),f in cg)return;cg[f]=!0;const p=f.endsWith(".css"),h=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${f}"]${h}`))return;const g=document.createElement("link");if(g.rel=p?"stylesheet":WR,p||(g.as="script"),g.crossOrigin="",g.href=f,c&&g.setAttribute("nonce",c),document.head.appendChild(g),p)return new Promise((y,m)=>{g.addEventListener("load",y),g.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${f}`)))})}))}function a(u){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=u,window.dispatchEvent(c),!c.defaultPrevented)throw u}return o.then(u=>{for(const c of u||[])c.status==="rejected"&&a(c.reason);return t().catch(a)})},qR=[{path:"/",component:()=>lt(()=>import("./index-BgnDGhPq.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))},{path:"/discover",component:()=>lt(()=>import("./Explore-BDgVo6I-.js"),__vite__mapDeps([11,12])),meta:{title:"Discover - reAudioPlayer One"}},{path:"/audius/callback",redirect:e=>(window.location.href=window.location.origin+"/api/audius/callback"+e.hash.replace("#","?"),null)},{name:"Search",path:"/search/:query",component:()=>lt(()=>import("./index-Cl954rX4.js"),__vite__mapDeps([13,14])),meta:{title:"Search - reAudioPlayer One"}},{path:"/collection/albums",component:()=>lt(()=>import("./index-DdW2vvqu.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/artists",component:()=>lt(()=>import("./index-DdW2vvqu.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/playlists",component:()=>lt(()=>import("./index-DdW2vvqu.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/releases",component:()=>lt(()=>import("./index-DdW2vvqu.js"),__vite__mapDeps([15,16,17,18,19,1,2,3,20])),meta:{title:"Releases - reAudioPlayer One"}},{path:"/collection/tracks",component:()=>lt(()=>import("./Liked-B_zgztvz.js"),__vite__mapDeps([21,22,6,7,2,8,23,24,25,26,27,28,29])),meta:{title:"Liked Songs - reAudioPlayer One"}},{path:"/collection/tracks/breaking",component:()=>lt(()=>import("./Breaking-BbN_kr20.js"),__vite__mapDeps([30,22,6,7,2,8,23,24,25,26,27,28,29])),meta:{title:"Breaking Songs - reAudioPlayer One"}},{path:"/playlist/create",component:()=>lt(()=>import("./Create-Od9vU4ho.js"),__vite__mapDeps([31,32])),meta:{title:"Create Playlist - reAudioPlayer One"}},{path:"/playlist/:id/edit",component:()=>lt(()=>import("./Editor-CoYi3uHx.js"),__vite__mapDeps([33,34,6,7,2,8,23,35])),meta:{title:"Smart Playlist Editor - reAudioPlayer One"}},{path:"/playlist/:id",component:()=>lt(()=>import("./Normal-BavQeIJj.js"),__vite__mapDeps([36,22,6,7,2,8,23,24,25,26,27,28,29])),meta:{title:"Playlist - reAudioPlayer One"}},{path:"/track/:hash",component:()=>lt(()=>import("./Track-BZee2-_m.js"),__vite__mapDeps([37,24,25,7,9,38])),meta:{title:"Track - reAudioPlayer One"}},{path:"/artist/:name",component:()=>lt(()=>import("./Artist-B3KwwJol.js"),__vite__mapDeps([39,24,25,6,7,2,8,9,40])),meta:{title:"Artist - reAudioPlayer One"}},{path:"/album/:hash",component:()=>lt(()=>import("./Album-B7yuUYu_.js"),__vite__mapDeps([41,6,7,2,8,42])),meta:{title:"Album - reAudioPlayer One"}},{path:"/preferences",component:()=>lt(()=>import("./index-BQ4QfHJY.js"),__vite__mapDeps([43,27,28,4,5,26,44])),meta:{title:"Preferences - reAudioPlayer One"}},{path:"/import",component:()=>lt(()=>import("./Import-DgtSATZa.js"),__vite__mapDeps([45,26,46])),meta:{title:"Import - reAudioPlayer One"}},{path:"/import/:id",component:()=>lt(()=>import("./ImportLink-Bua7Xd9q.js"),__vite__mapDeps([47,48])),meta:{title:"Import - reAudioPlayer One"}},{path:"/export",component:()=>lt(()=>import("./Export-rSE5tdFQ.js"),__vite__mapDeps([49,26,50])),meta:{title:"Export - reAudioPlayer One"}},{path:"/sing-along",component:()=>lt(()=>import("./index-aLQcB2pu.js"),__vite__mapDeps([51,52])),meta:{title:"Sing Along - reAudioPlayer One"}},{path:"/download",component:()=>lt(()=>import("./index-DynHIvzO.js"),__vite__mapDeps([53,54])),meta:{title:"Download - reAudioPlayer One"}},{path:"/welcome",component:()=>lt(()=>import("./Welcome-DD0oKJ1K.js"),__vite__mapDeps([55,56])),meta:{title:"Welcome to reAudioPlayer One"}},{path:"/news",component:()=>lt(()=>import("./News-dyEReFDN.js"),__vite__mapDeps([57,16,17,58])),meta:{title:"News - reAudioPlayer One"}},{path:"/sports",component:()=>lt(()=>import("./Sports-ZUA8m5m_.js"),__vite__mapDeps([59,16,17,60])),meta:{title:"Sports - reAudioPlayer One"}},{path:"/news/:url",component:()=>lt(()=>import("./NewsArticle-ttqbaNaN.js"),__vite__mapDeps([61,18,19,62])),meta:{title:"News - reAudioPlayer One"}},{path:"/player/insights",component:()=>lt(()=>import("./Insight-8n5os3vM.js"),__vite__mapDeps([63,64])),meta:{title:"Insights - reAudioPlayer One"}},{path:"/player",component:()=>lt(()=>import("./index-6egCEB7H.js"),__vite__mapDeps([65,34,6,7,2,8,23,1,3,66])),meta:{title:"reAudioPlayer One"}}],Xs=qP({history:_P(),routes:qR}),KR={class:"flex flex-row gap-2 items-center"},GR={class:"relative flex-1"},jR=["type","placeholder"],zR=Le({__name:"TextInputWithIcon",props:{icon:String,label:String,placeholder:{type:String,required:!1,default:""},modelValue:{type:String,required:!1,default:""},type:{type:String,required:!1,default:"text"},onClick:{type:Function,required:!1},expanded:{type:Boolean,required:!1,default:!1},onKeyUp:{type:Function,required:!1}},emits:["update:modelValue","change","submit","focusout"],setup(e,{expose:t,emit:n}){const s=e,o=ce(s.modelValue),a=ce(!1);Xe(()=>s.modelValue,h=>{o.value=h});const u=n,c=()=>{u("update:modelValue",o.value),u("change",o.value)},f=h=>{s.onKeyUp&&s.onKeyUp(h)||h.key==="Enter"&&u("submit",o)},p=ce();return t({focus:()=>{var h;(h=p.value)==null||h.focus()}}),(h,g)=>(B(),ne("div",{class:$e(["text-input-with-icon rounded-xl flex flex-col justify-center px-4",{expanded:e.expanded}])},[F("div",KR,[e.icon?(B(),ne("span",{key:0,class:$e([{"cursor-pointer":e.onClick},"material-symbols-rounded ms-wght-200"]),onClick:g[0]||(g[0]=(...y)=>e.onClick&&e.onClick(...y))},Se(e.icon),3)):xe("",!0),F("div",GR,[e.label?(B(),ne("span",{key:0,class:$e(["text-sm label-placeholder capitalize",{atTop:!!o.value}])},Se(e.label),3)):xe("",!0),ni(F("input",{"onUpdate:modelValue":g[1]||(g[1]=y=>o.value=y),type:e.type=="password"&&a.value?"text":e.type,placeholder:e.placeholder,onInput:c,onKeyup:f,onFocusout:g[2]||(g[2]=y=>h.$emit("focusout")),ref_key:"element",ref:p},null,40,jR),[[vl,o.value]])]),e.type=="password"?(B(),ne("span",{key:1,class:"material-symbols-rounded cursor-pointer",onClick:g[3]||(g[3]=y=>a.value=!a.value)},Se(a.value?"visibility":"visibility_off"),1)):xe("",!0)])],2))}}),Lc=tt(zR,[["__scopeId","data-v-7bfb9f4a"]]);var Aa=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function y5(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function _5(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function s(){return this instanceof s?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(s){var o=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(n,s,o.get?o:{enumerable:!0,get:function(){return e[s]}})}),n}var Wi={exports:{}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */var YR=Wi.exports,fg;function JR(){return fg||(fg=1,function(e,t){(function(){var n,s="4.17.21",o=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",c="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",p=500,h="__lodash_placeholder__",g=1,y=2,m=4,w=1,x=2,R=1,O=2,L=4,S=8,T=16,k=32,W=64,U=128,Y=256,$=512,q=30,le="...",J=800,ge=16,Ie=1,je=2,de=3,me=1/0,he=9007199254740991,yt=17976931348623157e292,hn=NaN,_t=4294967295,Ht=_t-1,Pr=_t>>>1,Rr=[["ary",U],["bind",R],["bindKey",O],["curry",S],["curryRight",T],["flip",$],["partial",k],["partialRight",W],["rearg",Y]],Dn="[object Arguments]",Lt="[object Array]",z="[object AsyncFunction]",ue="[object Boolean]",ie="[object Date]",_e="[object DOMException]",qe="[object Error]",nt="[object Function]",E="[object GeneratorFunction]",A="[object Map]",N="[object Number]",Z="[object Null]",H="[object Object]",ee="[object Promise]",oe="[object Proxy]",se="[object RegExp]",re="[object Set]",Q="[object String]",we="[object Symbol]",fe="[object Undefined]",ye="[object WeakMap]",Re="[object WeakSet]",Ne="[object ArrayBuffer]",ze="[object DataView]",Ye="[object Float32Array]",Nt="[object Float64Array]",St="[object Int8Array]",Yt="[object Int16Array]",Dt="[object Int32Array]",or="[object Uint8Array]",Rs="[object Uint8ClampedArray]",$t="[object Uint16Array]",sn="[object Uint32Array]",Ao=/\b__p \+= '';/g,xy=/\b(__p \+=) '' \+/g,Sy=/(__e\(.*?\)|\b__t\)) \+\n'';/g,_f=/&(?:amp|lt|gt|quot|#39);/g,bf=/[&<>"']/g,Ey=RegExp(_f.source),Cy=RegExp(bf.source),Ay=/<%-([\s\S]+?)%>/g,Ty=/<%([\s\S]+?)%>/g,wf=/<%=([\s\S]+?)%>/g,Py=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ry=/^\w*$/,ky=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Cl=/[\\^$.*+?()[\]{}|]/g,Oy=RegExp(Cl.source),Al=/^\s+/,Iy=/\s/,My=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ly=/\{\n\/\* \[wrapped with (.+)\] \*/,Ny=/,? & /,Dy=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,$y=/[()=,{}\[\]\/\s]/,Fy=/\\(\\)?/g,By=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,xf=/\w*$/,Hy=/^[-+]0x[0-9a-f]+$/i,Vy=/^0b[01]+$/i,Wy=/^\[object .+?Constructor\]$/,Uy=/^0o[0-7]+$/i,qy=/^(?:0|[1-9]\d*)$/,Ky=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,To=/($^)/,Gy=/['\n\r\u2028\u2029\\]/g,Po="\\ud800-\\udfff",jy="\\u0300-\\u036f",zy="\\ufe20-\\ufe2f",Yy="\\u20d0-\\u20ff",Sf=jy+zy+Yy,Ef="\\u2700-\\u27bf",Cf="a-z\\xdf-\\xf6\\xf8-\\xff",Jy="\\xac\\xb1\\xd7\\xf7",Xy="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Zy="\\u2000-\\u206f",Qy=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Af="A-Z\\xc0-\\xd6\\xd8-\\xde",Tf="\\ufe0e\\ufe0f",Pf=Jy+Xy+Zy+Qy,Tl="['’]",e_="["+Po+"]",Rf="["+Pf+"]",Ro="["+Sf+"]",kf="\\d+",t_="["+Ef+"]",Of="["+Cf+"]",If="[^"+Po+Pf+kf+Ef+Cf+Af+"]",Pl="\\ud83c[\\udffb-\\udfff]",n_="(?:"+Ro+"|"+Pl+")",Mf="[^"+Po+"]",Rl="(?:\\ud83c[\\udde6-\\uddff]){2}",kl="[\\ud800-\\udbff][\\udc00-\\udfff]",ks="["+Af+"]",Lf="\\u200d",Nf="(?:"+Of+"|"+If+")",r_="(?:"+ks+"|"+If+")",Df="(?:"+Tl+"(?:d|ll|m|re|s|t|ve))?",$f="(?:"+Tl+"(?:D|LL|M|RE|S|T|VE))?",Ff=n_+"?",Bf="["+Tf+"]?",s_="(?:"+Lf+"(?:"+[Mf,Rl,kl].join("|")+")"+Bf+Ff+")*",i_="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",o_="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Hf=Bf+Ff+s_,a_="(?:"+[t_,Rl,kl].join("|")+")"+Hf,l_="(?:"+[Mf+Ro+"?",Ro,Rl,kl,e_].join("|")+")",u_=RegExp(Tl,"g"),c_=RegExp(Ro,"g"),Ol=RegExp(Pl+"(?="+Pl+")|"+l_+Hf,"g"),f_=RegExp([ks+"?"+Of+"+"+Df+"(?="+[Rf,ks,"$"].join("|")+")",r_+"+"+$f+"(?="+[Rf,ks+Nf,"$"].join("|")+")",ks+"?"+Nf+"+"+Df,ks+"+"+$f,o_,i_,kf,a_].join("|"),"g"),d_=RegExp("["+Lf+Po+Sf+Tf+"]"),h_=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,p_=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],g_=-1,ft={};ft[Ye]=ft[Nt]=ft[St]=ft[Yt]=ft[Dt]=ft[or]=ft[Rs]=ft[$t]=ft[sn]=!0,ft[Dn]=ft[Lt]=ft[Ne]=ft[ue]=ft[ze]=ft[ie]=ft[qe]=ft[nt]=ft[A]=ft[N]=ft[H]=ft[se]=ft[re]=ft[Q]=ft[ye]=!1;var ut={};ut[Dn]=ut[Lt]=ut[Ne]=ut[ze]=ut[ue]=ut[ie]=ut[Ye]=ut[Nt]=ut[St]=ut[Yt]=ut[Dt]=ut[A]=ut[N]=ut[H]=ut[se]=ut[re]=ut[Q]=ut[we]=ut[or]=ut[Rs]=ut[$t]=ut[sn]=!0,ut[qe]=ut[nt]=ut[ye]=!1;var m_={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},v_={"&":"&","<":"<",">":">",'"':""","'":"'"},y_={"&":"&","<":"<",">":">",""":'"',"'":"'"},__={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},b_=parseFloat,w_=parseInt,Vf=typeof Aa=="object"&&Aa&&Aa.Object===Object&&Aa,x_=typeof self=="object"&&self&&self.Object===Object&&self,Ft=Vf||x_||Function("return this")(),Il=t&&!t.nodeType&&t,rs=Il&&!0&&e&&!e.nodeType&&e,Wf=rs&&rs.exports===Il,Ml=Wf&&Vf.process,Sn=function(){try{var I=rs&&rs.require&&rs.require("util").types;return I||Ml&&Ml.binding&&Ml.binding("util")}catch{}}(),Uf=Sn&&Sn.isArrayBuffer,qf=Sn&&Sn.isDate,Kf=Sn&&Sn.isMap,Gf=Sn&&Sn.isRegExp,jf=Sn&&Sn.isSet,zf=Sn&&Sn.isTypedArray;function pn(I,V,D){switch(D.length){case 0:return I.call(V);case 1:return I.call(V,D[0]);case 2:return I.call(V,D[0],D[1]);case 3:return I.call(V,D[0],D[1],D[2])}return I.apply(V,D)}function S_(I,V,D,pe){for(var ke=-1,Ze=I==null?0:I.length;++ke-1}function Ll(I,V,D){for(var pe=-1,ke=I==null?0:I.length;++pe-1;);return D}function nd(I,V){for(var D=I.length;D--&&Os(V,I[D],0)>-1;);return D}function I_(I,V){for(var D=I.length,pe=0;D--;)I[D]===V&&++pe;return pe}var M_=Fl(m_),L_=Fl(v_);function N_(I){return"\\"+__[I]}function D_(I,V){return I==null?n:I[V]}function Is(I){return d_.test(I)}function $_(I){return h_.test(I)}function F_(I){for(var V,D=[];!(V=I.next()).done;)D.push(V.value);return D}function Wl(I){var V=-1,D=Array(I.size);return I.forEach(function(pe,ke){D[++V]=[ke,pe]}),D}function rd(I,V){return function(D){return I(V(D))}}function Ir(I,V){for(var D=-1,pe=I.length,ke=0,Ze=[];++D-1}function C0(r,i){var l=this.__data__,d=jo(l,r);return d<0?(++this.size,l.push([r,i])):l[d][1]=i,this}ar.prototype.clear=w0,ar.prototype.delete=x0,ar.prototype.get=S0,ar.prototype.has=E0,ar.prototype.set=C0;function lr(r){var i=-1,l=r==null?0:r.length;for(this.clear();++i=i?r:i)),r}function Tn(r,i,l,d,v,b){var C,P=i&g,M=i&y,G=i&m;if(l&&(C=v?l(r,d,v,b):l(r)),C!==n)return C;if(!mt(r))return r;var j=Oe(r);if(j){if(C=R1(r),!P)return on(r,C)}else{var X=Wt(r),ae=X==nt||X==E;if(Fr(r))return Bd(r,P);if(X==H||X==Dn||ae&&!v){if(C=M||ae?{}:sh(r),!P)return M?y1(r,V0(C,r)):v1(r,gd(C,r))}else{if(!ut[X])return v?r:{};C=k1(r,X,P)}}b||(b=new Fn);var be=b.get(r);if(be)return be;b.set(r,C),Mh(r)?r.forEach(function(Te){C.add(Tn(Te,i,l,Te,r,b))}):Oh(r)&&r.forEach(function(Te,He){C.set(He,Tn(Te,i,l,He,r,b))});var Ae=G?M?pu:hu:M?ln:Ot,De=j?n:Ae(r);return En(De||r,function(Te,He){De&&(He=Te,Te=r[He]),bi(C,He,Tn(Te,i,l,He,r,b))}),C}function W0(r){var i=Ot(r);return function(l){return md(l,r,i)}}function md(r,i,l){var d=l.length;if(r==null)return!d;for(r=at(r);d--;){var v=l[d],b=i[v],C=r[v];if(C===n&&!(v in r)||!b(C))return!1}return!0}function vd(r,i,l){if(typeof r!="function")throw new Cn(u);return Ti(function(){r.apply(n,l)},i)}function wi(r,i,l,d){var v=-1,b=ko,C=!0,P=r.length,M=[],G=i.length;if(!P)return M;l&&(i=ht(i,gn(l))),d?(b=Ll,C=!1):i.length>=o&&(b=pi,C=!1,i=new os(i));e:for(;++vv?0:v+l),d=d===n||d>v?v:Me(d),d<0&&(d+=v),d=l>d?0:Nh(d);l0&&l(P)?i>1?Bt(P,i-1,l,d,v):Or(v,P):d||(v[v.length]=P)}return v}var Yl=Kd(),bd=Kd(!0);function Kn(r,i){return r&&Yl(r,i,Ot)}function Jl(r,i){return r&&bd(r,i,Ot)}function Yo(r,i){return kr(i,function(l){return hr(r[l])})}function ls(r,i){i=Dr(i,r);for(var l=0,d=i.length;r!=null&&li}function K0(r,i){return r!=null&&rt.call(r,i)}function G0(r,i){return r!=null&&i in at(r)}function j0(r,i,l){return r>=Vt(i,l)&&r=120&&j.length>=120)?new os(C&&j):n}j=r[0];var X=-1,ae=P[0];e:for(;++X-1;)P!==r&&Ho.call(P,M,1),Ho.call(r,M,1);return r}function Od(r,i){for(var l=r?i.length:0,d=l-1;l--;){var v=i[l];if(l==d||v!==b){var b=v;dr(v)?Ho.call(r,v,1):ou(r,v)}}return r}function ru(r,i){return r+Uo(fd()*(i-r+1))}function o1(r,i,l,d){for(var v=-1,b=At(Wo((i-r)/(l||1)),0),C=D(b);b--;)C[d?b:++v]=r,r+=l;return C}function su(r,i){var l="";if(!r||i<1||i>he)return l;do i%2&&(l+=r),i=Uo(i/2),i&&(r+=r);while(i);return l}function Be(r,i){return wu(ah(r,i,un),r+"")}function a1(r){return pd(Us(r))}function l1(r,i){var l=Us(r);return oa(l,as(i,0,l.length))}function Ei(r,i,l,d){if(!mt(r))return r;i=Dr(i,r);for(var v=-1,b=i.length,C=b-1,P=r;P!=null&&++vv?0:v+i),l=l>v?v:l,l<0&&(l+=v),v=i>l?0:l-i>>>0,i>>>=0;for(var b=D(v);++d>>1,C=r[b];C!==null&&!vn(C)&&(l?C<=i:C=o){var G=i?null:x1(r);if(G)return Io(G);C=!1,v=pi,M=new os}else M=i?[]:P;e:for(;++d=d?r:Pn(r,i,l)}var Fd=Q_||function(r){return Ft.clearTimeout(r)};function Bd(r,i){if(i)return r.slice();var l=r.length,d=od?od(l):new r.constructor(l);return r.copy(d),d}function cu(r){var i=new r.constructor(r.byteLength);return new Fo(i).set(new Fo(r)),i}function h1(r,i){var l=i?cu(r.buffer):r.buffer;return new r.constructor(l,r.byteOffset,r.byteLength)}function p1(r){var i=new r.constructor(r.source,xf.exec(r));return i.lastIndex=r.lastIndex,i}function g1(r){return _i?at(_i.call(r)):{}}function Hd(r,i){var l=i?cu(r.buffer):r.buffer;return new r.constructor(l,r.byteOffset,r.length)}function Vd(r,i){if(r!==i){var l=r!==n,d=r===null,v=r===r,b=vn(r),C=i!==n,P=i===null,M=i===i,G=vn(i);if(!P&&!G&&!b&&r>i||b&&C&&M&&!P&&!G||d&&C&&M||!l&&M||!v)return 1;if(!d&&!b&&!G&&r=P)return M;var G=l[d];return M*(G=="desc"?-1:1)}}return r.index-i.index}function Wd(r,i,l,d){for(var v=-1,b=r.length,C=l.length,P=-1,M=i.length,G=At(b-C,0),j=D(M+G),X=!d;++P1?l[v-1]:n,C=v>2?l[2]:n;for(b=r.length>3&&typeof b=="function"?(v--,b):n,C&&Xt(l[0],l[1],C)&&(b=v<3?n:b,v=1),i=at(i);++d-1?v[b?i[C]:C]:n}}function zd(r){return fr(function(i){var l=i.length,d=l,v=An.prototype.thru;for(r&&i.reverse();d--;){var b=i[d];if(typeof b!="function")throw new Cn(u);if(v&&!C&&sa(b)=="wrapper")var C=new An([],!0)}for(d=C?d:l;++d1&&Ke.reverse(),j&&MP))return!1;var G=b.get(r),j=b.get(i);if(G&&j)return G==i&&j==r;var X=-1,ae=!0,be=l&x?new os:n;for(b.set(r,i),b.set(i,r);++X1?"& ":"")+i[d],i=i.join(l>2?", ":" "),r.replace(My,`{ + */var YR=Wi.exports,fg;function JR(){return fg||(fg=1,function(e,t){(function(){var n,s="4.17.21",o=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",c="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",p=500,h="__lodash_placeholder__",g=1,y=2,m=4,w=1,x=2,R=1,O=2,L=4,S=8,T=16,k=32,W=64,U=128,Y=256,$=512,q=30,le="...",J=800,ge=16,Ie=1,je=2,de=3,me=1/0,he=9007199254740991,yt=17976931348623157e292,hn=NaN,_t=4294967295,Ht=_t-1,Pr=_t>>>1,Rr=[["ary",U],["bind",R],["bindKey",O],["curry",S],["curryRight",T],["flip",$],["partial",k],["partialRight",W],["rearg",Y]],Dn="[object Arguments]",Lt="[object Array]",z="[object AsyncFunction]",ue="[object Boolean]",ie="[object Date]",_e="[object DOMException]",qe="[object Error]",nt="[object Function]",E="[object GeneratorFunction]",A="[object Map]",N="[object Number]",Z="[object Null]",H="[object Object]",ee="[object Promise]",oe="[object Proxy]",se="[object RegExp]",re="[object Set]",Q="[object String]",we="[object Symbol]",fe="[object Undefined]",ye="[object WeakMap]",Re="[object WeakSet]",Ne="[object ArrayBuffer]",ze="[object DataView]",Ye="[object Float32Array]",Nt="[object Float64Array]",St="[object Int8Array]",Yt="[object Int16Array]",Dt="[object Int32Array]",or="[object Uint8Array]",Rs="[object Uint8ClampedArray]",$t="[object Uint16Array]",sn="[object Uint32Array]",Ao=/\b__p \+= '';/g,xy=/\b(__p \+=) '' \+/g,Sy=/(__e\(.*?\)|\b__t\)) \+\n'';/g,_f=/&(?:amp|lt|gt|quot|#39);/g,bf=/[&<>"']/g,Ey=RegExp(_f.source),Cy=RegExp(bf.source),Ay=/<%-([\s\S]+?)%>/g,Ty=/<%([\s\S]+?)%>/g,wf=/<%=([\s\S]+?)%>/g,Py=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ry=/^\w*$/,ky=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Cl=/[\\^$.*+?()[\]{}|]/g,Oy=RegExp(Cl.source),Al=/^\s+/,Iy=/\s/,My=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ly=/\{\n\/\* \[wrapped with (.+)\] \*/,Ny=/,? & /,Dy=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,$y=/[()=,{}\[\]\/\s]/,Fy=/\\(\\)?/g,By=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,xf=/\w*$/,Hy=/^[-+]0x[0-9a-f]+$/i,Vy=/^0b[01]+$/i,Wy=/^\[object .+?Constructor\]$/,Uy=/^0o[0-7]+$/i,qy=/^(?:0|[1-9]\d*)$/,Ky=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,To=/($^)/,Gy=/['\n\r\u2028\u2029\\]/g,Po="\\ud800-\\udfff",jy="\\u0300-\\u036f",zy="\\ufe20-\\ufe2f",Yy="\\u20d0-\\u20ff",Sf=jy+zy+Yy,Ef="\\u2700-\\u27bf",Cf="a-z\\xdf-\\xf6\\xf8-\\xff",Jy="\\xac\\xb1\\xd7\\xf7",Xy="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Zy="\\u2000-\\u206f",Qy=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Af="A-Z\\xc0-\\xd6\\xd8-\\xde",Tf="\\ufe0e\\ufe0f",Pf=Jy+Xy+Zy+Qy,Tl="['’]",e0="["+Po+"]",Rf="["+Pf+"]",Ro="["+Sf+"]",kf="\\d+",t0="["+Ef+"]",Of="["+Cf+"]",If="[^"+Po+Pf+kf+Ef+Cf+Af+"]",Pl="\\ud83c[\\udffb-\\udfff]",n0="(?:"+Ro+"|"+Pl+")",Mf="[^"+Po+"]",Rl="(?:\\ud83c[\\udde6-\\uddff]){2}",kl="[\\ud800-\\udbff][\\udc00-\\udfff]",ks="["+Af+"]",Lf="\\u200d",Nf="(?:"+Of+"|"+If+")",r0="(?:"+ks+"|"+If+")",Df="(?:"+Tl+"(?:d|ll|m|re|s|t|ve))?",$f="(?:"+Tl+"(?:D|LL|M|RE|S|T|VE))?",Ff=n0+"?",Bf="["+Tf+"]?",s0="(?:"+Lf+"(?:"+[Mf,Rl,kl].join("|")+")"+Bf+Ff+")*",i0="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",o0="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Hf=Bf+Ff+s0,a0="(?:"+[t0,Rl,kl].join("|")+")"+Hf,l0="(?:"+[Mf+Ro+"?",Ro,Rl,kl,e0].join("|")+")",u0=RegExp(Tl,"g"),c0=RegExp(Ro,"g"),Ol=RegExp(Pl+"(?="+Pl+")|"+l0+Hf,"g"),f0=RegExp([ks+"?"+Of+"+"+Df+"(?="+[Rf,ks,"$"].join("|")+")",r0+"+"+$f+"(?="+[Rf,ks+Nf,"$"].join("|")+")",ks+"?"+Nf+"+"+Df,ks+"+"+$f,o0,i0,kf,a0].join("|"),"g"),d0=RegExp("["+Lf+Po+Sf+Tf+"]"),h0=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,p0=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],g0=-1,ft={};ft[Ye]=ft[Nt]=ft[St]=ft[Yt]=ft[Dt]=ft[or]=ft[Rs]=ft[$t]=ft[sn]=!0,ft[Dn]=ft[Lt]=ft[Ne]=ft[ue]=ft[ze]=ft[ie]=ft[qe]=ft[nt]=ft[A]=ft[N]=ft[H]=ft[se]=ft[re]=ft[Q]=ft[ye]=!1;var ut={};ut[Dn]=ut[Lt]=ut[Ne]=ut[ze]=ut[ue]=ut[ie]=ut[Ye]=ut[Nt]=ut[St]=ut[Yt]=ut[Dt]=ut[A]=ut[N]=ut[H]=ut[se]=ut[re]=ut[Q]=ut[we]=ut[or]=ut[Rs]=ut[$t]=ut[sn]=!0,ut[qe]=ut[nt]=ut[ye]=!1;var m0={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},v0={"&":"&","<":"<",">":">",'"':""","'":"'"},y0={"&":"&","<":"<",">":">",""":'"',"'":"'"},_0={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},b0=parseFloat,w0=parseInt,Vf=typeof Aa=="object"&&Aa&&Aa.Object===Object&&Aa,x0=typeof self=="object"&&self&&self.Object===Object&&self,Ft=Vf||x0||Function("return this")(),Il=t&&!t.nodeType&&t,rs=Il&&!0&&e&&!e.nodeType&&e,Wf=rs&&rs.exports===Il,Ml=Wf&&Vf.process,Sn=function(){try{var I=rs&&rs.require&&rs.require("util").types;return I||Ml&&Ml.binding&&Ml.binding("util")}catch{}}(),Uf=Sn&&Sn.isArrayBuffer,qf=Sn&&Sn.isDate,Kf=Sn&&Sn.isMap,Gf=Sn&&Sn.isRegExp,jf=Sn&&Sn.isSet,zf=Sn&&Sn.isTypedArray;function pn(I,V,D){switch(D.length){case 0:return I.call(V);case 1:return I.call(V,D[0]);case 2:return I.call(V,D[0],D[1]);case 3:return I.call(V,D[0],D[1],D[2])}return I.apply(V,D)}function S0(I,V,D,pe){for(var ke=-1,Ze=I==null?0:I.length;++ke-1}function Ll(I,V,D){for(var pe=-1,ke=I==null?0:I.length;++pe-1;);return D}function nd(I,V){for(var D=I.length;D--&&Os(V,I[D],0)>-1;);return D}function I0(I,V){for(var D=I.length,pe=0;D--;)I[D]===V&&++pe;return pe}var M0=Fl(m0),L0=Fl(v0);function N0(I){return"\\"+_0[I]}function D0(I,V){return I==null?n:I[V]}function Is(I){return d0.test(I)}function $0(I){return h0.test(I)}function F0(I){for(var V,D=[];!(V=I.next()).done;)D.push(V.value);return D}function Wl(I){var V=-1,D=Array(I.size);return I.forEach(function(pe,ke){D[++V]=[ke,pe]}),D}function rd(I,V){return function(D){return I(V(D))}}function Ir(I,V){for(var D=-1,pe=I.length,ke=0,Ze=[];++D-1}function C_(r,i){var l=this.__data__,d=jo(l,r);return d<0?(++this.size,l.push([r,i])):l[d][1]=i,this}ar.prototype.clear=w_,ar.prototype.delete=x_,ar.prototype.get=S_,ar.prototype.has=E_,ar.prototype.set=C_;function lr(r){var i=-1,l=r==null?0:r.length;for(this.clear();++i=i?r:i)),r}function Tn(r,i,l,d,v,b){var C,P=i&g,M=i&y,G=i&m;if(l&&(C=v?l(r,d,v,b):l(r)),C!==n)return C;if(!mt(r))return r;var j=Oe(r);if(j){if(C=R1(r),!P)return on(r,C)}else{var X=Wt(r),ae=X==nt||X==E;if(Fr(r))return Bd(r,P);if(X==H||X==Dn||ae&&!v){if(C=M||ae?{}:sh(r),!P)return M?y1(r,V_(C,r)):v1(r,gd(C,r))}else{if(!ut[X])return v?r:{};C=k1(r,X,P)}}b||(b=new Fn);var be=b.get(r);if(be)return be;b.set(r,C),Mh(r)?r.forEach(function(Te){C.add(Tn(Te,i,l,Te,r,b))}):Oh(r)&&r.forEach(function(Te,He){C.set(He,Tn(Te,i,l,He,r,b))});var Ae=G?M?pu:hu:M?ln:Ot,De=j?n:Ae(r);return En(De||r,function(Te,He){De&&(He=Te,Te=r[He]),bi(C,He,Tn(Te,i,l,He,r,b))}),C}function W_(r){var i=Ot(r);return function(l){return md(l,r,i)}}function md(r,i,l){var d=l.length;if(r==null)return!d;for(r=at(r);d--;){var v=l[d],b=i[v],C=r[v];if(C===n&&!(v in r)||!b(C))return!1}return!0}function vd(r,i,l){if(typeof r!="function")throw new Cn(u);return Ti(function(){r.apply(n,l)},i)}function wi(r,i,l,d){var v=-1,b=ko,C=!0,P=r.length,M=[],G=i.length;if(!P)return M;l&&(i=ht(i,gn(l))),d?(b=Ll,C=!1):i.length>=o&&(b=pi,C=!1,i=new os(i));e:for(;++vv?0:v+l),d=d===n||d>v?v:Me(d),d<0&&(d+=v),d=l>d?0:Nh(d);l0&&l(P)?i>1?Bt(P,i-1,l,d,v):Or(v,P):d||(v[v.length]=P)}return v}var Yl=Kd(),bd=Kd(!0);function Kn(r,i){return r&&Yl(r,i,Ot)}function Jl(r,i){return r&&bd(r,i,Ot)}function Yo(r,i){return kr(i,function(l){return hr(r[l])})}function ls(r,i){i=Dr(i,r);for(var l=0,d=i.length;r!=null&&li}function K_(r,i){return r!=null&&rt.call(r,i)}function G_(r,i){return r!=null&&i in at(r)}function j_(r,i,l){return r>=Vt(i,l)&&r=120&&j.length>=120)?new os(C&&j):n}j=r[0];var X=-1,ae=P[0];e:for(;++X-1;)P!==r&&Ho.call(P,M,1),Ho.call(r,M,1);return r}function Od(r,i){for(var l=r?i.length:0,d=l-1;l--;){var v=i[l];if(l==d||v!==b){var b=v;dr(v)?Ho.call(r,v,1):ou(r,v)}}return r}function ru(r,i){return r+Uo(fd()*(i-r+1))}function o1(r,i,l,d){for(var v=-1,b=At(Wo((i-r)/(l||1)),0),C=D(b);b--;)C[d?b:++v]=r,r+=l;return C}function su(r,i){var l="";if(!r||i<1||i>he)return l;do i%2&&(l+=r),i=Uo(i/2),i&&(r+=r);while(i);return l}function Be(r,i){return wu(ah(r,i,un),r+"")}function a1(r){return pd(Us(r))}function l1(r,i){var l=Us(r);return oa(l,as(i,0,l.length))}function Ei(r,i,l,d){if(!mt(r))return r;i=Dr(i,r);for(var v=-1,b=i.length,C=b-1,P=r;P!=null&&++vv?0:v+i),l=l>v?v:l,l<0&&(l+=v),v=i>l?0:l-i>>>0,i>>>=0;for(var b=D(v);++d>>1,C=r[b];C!==null&&!vn(C)&&(l?C<=i:C=o){var G=i?null:x1(r);if(G)return Io(G);C=!1,v=pi,M=new os}else M=i?[]:P;e:for(;++d=d?r:Pn(r,i,l)}var Fd=Q0||function(r){return Ft.clearTimeout(r)};function Bd(r,i){if(i)return r.slice();var l=r.length,d=od?od(l):new r.constructor(l);return r.copy(d),d}function cu(r){var i=new r.constructor(r.byteLength);return new Fo(i).set(new Fo(r)),i}function h1(r,i){var l=i?cu(r.buffer):r.buffer;return new r.constructor(l,r.byteOffset,r.byteLength)}function p1(r){var i=new r.constructor(r.source,xf.exec(r));return i.lastIndex=r.lastIndex,i}function g1(r){return _i?at(_i.call(r)):{}}function Hd(r,i){var l=i?cu(r.buffer):r.buffer;return new r.constructor(l,r.byteOffset,r.length)}function Vd(r,i){if(r!==i){var l=r!==n,d=r===null,v=r===r,b=vn(r),C=i!==n,P=i===null,M=i===i,G=vn(i);if(!P&&!G&&!b&&r>i||b&&C&&M&&!P&&!G||d&&C&&M||!l&&M||!v)return 1;if(!d&&!b&&!G&&r=P)return M;var G=l[d];return M*(G=="desc"?-1:1)}}return r.index-i.index}function Wd(r,i,l,d){for(var v=-1,b=r.length,C=l.length,P=-1,M=i.length,G=At(b-C,0),j=D(M+G),X=!d;++P1?l[v-1]:n,C=v>2?l[2]:n;for(b=r.length>3&&typeof b=="function"?(v--,b):n,C&&Xt(l[0],l[1],C)&&(b=v<3?n:b,v=1),i=at(i);++d-1?v[b?i[C]:C]:n}}function zd(r){return fr(function(i){var l=i.length,d=l,v=An.prototype.thru;for(r&&i.reverse();d--;){var b=i[d];if(typeof b!="function")throw new Cn(u);if(v&&!C&&sa(b)=="wrapper")var C=new An([],!0)}for(d=C?d:l;++d1&&Ke.reverse(),j&&MP))return!1;var G=b.get(r),j=b.get(i);if(G&&j)return G==i&&j==r;var X=-1,ae=!0,be=l&x?new os:n;for(b.set(r,i),b.set(i,r);++X1?"& ":"")+i[d],i=i.join(l>2?", ":" "),r.replace(My,`{ /* [wrapped with `+i+`] */ -`)}function I1(r){return Oe(r)||fs(r)||!!(ud&&r&&r[ud])}function dr(r,i){var l=typeof r;return i=i??he,!!i&&(l=="number"||l!="symbol"&&qy.test(r))&&r>-1&&r%1==0&&r0){if(++i>=J)return arguments[0]}else i=0;return r.apply(n,arguments)}}function oa(r,i){var l=-1,d=r.length,v=d-1;for(i=i===n?d:i;++l1?r[i-1]:n;return l=typeof l=="function"?(r.pop(),l):n,_h(r,l)});function bh(r){var i=_(r);return i.__chain__=!0,i}function Ub(r,i){return i(r),r}function aa(r,i){return i(r)}var qb=fr(function(r){var i=r.length,l=i?r[0]:0,d=this.__wrapped__,v=function(b){return zl(b,r)};return i>1||this.__actions__.length||!(d instanceof We)||!dr(l)?this.thru(v):(d=d.slice(l,+l+(i?1:0)),d.__actions__.push({func:aa,args:[v],thisArg:n}),new An(d,this.__chain__).thru(function(b){return i&&!b.length&&b.push(n),b}))});function Kb(){return bh(this)}function Gb(){return new An(this.value(),this.__chain__)}function jb(){this.__values__===n&&(this.__values__=Lh(this.value()));var r=this.__index__>=this.__values__.length,i=r?n:this.__values__[this.__index__++];return{done:r,value:i}}function zb(){return this}function Yb(r){for(var i,l=this;l instanceof Go;){var d=hh(l);d.__index__=0,d.__values__=n,i?v.__wrapped__=d:i=d;var v=d;l=l.__wrapped__}return v.__wrapped__=r,i}function Jb(){var r=this.__wrapped__;if(r instanceof We){var i=r;return this.__actions__.length&&(i=new We(this)),i=i.reverse(),i.__actions__.push({func:aa,args:[xu],thisArg:n}),new An(i,this.__chain__)}return this.thru(xu)}function Xb(){return Dd(this.__wrapped__,this.__actions__)}var Zb=Qo(function(r,i,l){rt.call(r,l)?++r[l]:ur(r,l,1)});function Qb(r,i,l){var d=Oe(r)?Yf:U0;return l&&Xt(r,i,l)&&(i=n),d(r,Ee(i,3))}function ew(r,i){var l=Oe(r)?kr:_d;return l(r,Ee(i,3))}var tw=jd(ph),nw=jd(gh);function rw(r,i){return Bt(la(r,i),1)}function sw(r,i){return Bt(la(r,i),me)}function iw(r,i,l){return l=l===n?1:Me(l),Bt(la(r,i),l)}function wh(r,i){var l=Oe(r)?En:Lr;return l(r,Ee(i,3))}function xh(r,i){var l=Oe(r)?E_:yd;return l(r,Ee(i,3))}var ow=Qo(function(r,i,l){rt.call(r,l)?r[l].push(i):ur(r,l,[i])});function aw(r,i,l,d){r=an(r)?r:Us(r),l=l&&!d?Me(l):0;var v=r.length;return l<0&&(l=At(v+l,0)),ha(r)?l<=v&&r.indexOf(i,l)>-1:!!v&&Os(r,i,l)>-1}var lw=Be(function(r,i,l){var d=-1,v=typeof i=="function",b=an(r)?D(r.length):[];return Lr(r,function(C){b[++d]=v?pn(i,C,l):xi(C,i,l)}),b}),uw=Qo(function(r,i,l){ur(r,l,i)});function la(r,i){var l=Oe(r)?ht:Cd;return l(r,Ee(i,3))}function cw(r,i,l,d){return r==null?[]:(Oe(i)||(i=i==null?[]:[i]),l=d?n:l,Oe(l)||(l=l==null?[]:[l]),Rd(r,i,l))}var fw=Qo(function(r,i,l){r[l?0:1].push(i)},function(){return[[],[]]});function dw(r,i,l){var d=Oe(r)?Nl:Qf,v=arguments.length<3;return d(r,Ee(i,4),l,v,Lr)}function hw(r,i,l){var d=Oe(r)?C_:Qf,v=arguments.length<3;return d(r,Ee(i,4),l,v,yd)}function pw(r,i){var l=Oe(r)?kr:_d;return l(r,fa(Ee(i,3)))}function gw(r){var i=Oe(r)?pd:a1;return i(r)}function mw(r,i,l){(l?Xt(r,i,l):i===n)?i=1:i=Me(i);var d=Oe(r)?F0:l1;return d(r,i)}function vw(r){var i=Oe(r)?B0:c1;return i(r)}function yw(r){if(r==null)return 0;if(an(r))return ha(r)?Ms(r):r.length;var i=Wt(r);return i==A||i==re?r.size:eu(r).length}function _w(r,i,l){var d=Oe(r)?Dl:f1;return l&&Xt(r,i,l)&&(i=n),d(r,Ee(i,3))}var bw=Be(function(r,i){if(r==null)return[];var l=i.length;return l>1&&Xt(r,i[0],i[1])?i=[]:l>2&&Xt(i[0],i[1],i[2])&&(i=[i[0]]),Rd(r,Bt(i,1),[])}),ua=e0||function(){return Ft.Date.now()};function ww(r,i){if(typeof i!="function")throw new Cn(u);return r=Me(r),function(){if(--r<1)return i.apply(this,arguments)}}function Sh(r,i,l){return i=l?n:i,i=r&&i==null?r.length:i,cr(r,U,n,n,n,n,i)}function Eh(r,i){var l;if(typeof i!="function")throw new Cn(u);return r=Me(r),function(){return--r>0&&(l=i.apply(this,arguments)),r<=1&&(i=n),l}}var Eu=Be(function(r,i,l){var d=R;if(l.length){var v=Ir(l,Vs(Eu));d|=k}return cr(r,d,i,l,v)}),Ch=Be(function(r,i,l){var d=R|O;if(l.length){var v=Ir(l,Vs(Ch));d|=k}return cr(i,d,r,l,v)});function Ah(r,i,l){i=l?n:i;var d=cr(r,S,n,n,n,n,n,i);return d.placeholder=Ah.placeholder,d}function Th(r,i,l){i=l?n:i;var d=cr(r,T,n,n,n,n,n,i);return d.placeholder=Th.placeholder,d}function Ph(r,i,l){var d,v,b,C,P,M,G=0,j=!1,X=!1,ae=!0;if(typeof r!="function")throw new Cn(u);i=kn(i)||0,mt(l)&&(j=!!l.leading,X="maxWait"in l,b=X?At(kn(l.maxWait)||0,i):b,ae="trailing"in l?!!l.trailing:ae);function be(wt){var Hn=d,gr=v;return d=v=n,G=wt,C=r.apply(gr,Hn),C}function Ae(wt){return G=wt,P=Ti(He,i),j?be(wt):C}function De(wt){var Hn=wt-M,gr=wt-G,jh=i-Hn;return X?Vt(jh,b-gr):jh}function Te(wt){var Hn=wt-M,gr=wt-G;return M===n||Hn>=i||Hn<0||X&&gr>=b}function He(){var wt=ua();if(Te(wt))return Ke(wt);P=Ti(He,De(wt))}function Ke(wt){return P=n,ae&&d?be(wt):(d=v=n,C)}function yn(){P!==n&&Fd(P),G=0,d=M=v=P=n}function Zt(){return P===n?C:Ke(ua())}function _n(){var wt=ua(),Hn=Te(wt);if(d=arguments,v=this,M=wt,Hn){if(P===n)return Ae(M);if(X)return Fd(P),P=Ti(He,i),be(M)}return P===n&&(P=Ti(He,i)),C}return _n.cancel=yn,_n.flush=Zt,_n}var xw=Be(function(r,i){return vd(r,1,i)}),Sw=Be(function(r,i,l){return vd(r,kn(i)||0,l)});function Ew(r){return cr(r,$)}function ca(r,i){if(typeof r!="function"||i!=null&&typeof i!="function")throw new Cn(u);var l=function(){var d=arguments,v=i?i.apply(this,d):d[0],b=l.cache;if(b.has(v))return b.get(v);var C=r.apply(this,d);return l.cache=b.set(v,C)||b,C};return l.cache=new(ca.Cache||lr),l}ca.Cache=lr;function fa(r){if(typeof r!="function")throw new Cn(u);return function(){var i=arguments;switch(i.length){case 0:return!r.call(this);case 1:return!r.call(this,i[0]);case 2:return!r.call(this,i[0],i[1]);case 3:return!r.call(this,i[0],i[1],i[2])}return!r.apply(this,i)}}function Cw(r){return Eh(2,r)}var Aw=d1(function(r,i){i=i.length==1&&Oe(i[0])?ht(i[0],gn(Ee())):ht(Bt(i,1),gn(Ee()));var l=i.length;return Be(function(d){for(var v=-1,b=Vt(d.length,l);++v=i}),fs=xd(function(){return arguments}())?xd:function(r){return vt(r)&&rt.call(r,"callee")&&!ld.call(r,"callee")},Oe=D.isArray,Vw=Uf?gn(Uf):Y0;function an(r){return r!=null&&da(r.length)&&!hr(r)}function bt(r){return vt(r)&&an(r)}function Ww(r){return r===!0||r===!1||vt(r)&&Jt(r)==ue}var Fr=n0||Du,Uw=qf?gn(qf):J0;function qw(r){return vt(r)&&r.nodeType===1&&!Pi(r)}function Kw(r){if(r==null)return!0;if(an(r)&&(Oe(r)||typeof r=="string"||typeof r.splice=="function"||Fr(r)||Ws(r)||fs(r)))return!r.length;var i=Wt(r);if(i==A||i==re)return!r.size;if(Ai(r))return!eu(r).length;for(var l in r)if(rt.call(r,l))return!1;return!0}function Gw(r,i){return Si(r,i)}function jw(r,i,l){l=typeof l=="function"?l:n;var d=l?l(r,i):n;return d===n?Si(r,i,n,l):!!d}function Au(r){if(!vt(r))return!1;var i=Jt(r);return i==qe||i==_e||typeof r.message=="string"&&typeof r.name=="string"&&!Pi(r)}function zw(r){return typeof r=="number"&&cd(r)}function hr(r){if(!mt(r))return!1;var i=Jt(r);return i==nt||i==E||i==z||i==oe}function kh(r){return typeof r=="number"&&r==Me(r)}function da(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=he}function mt(r){var i=typeof r;return r!=null&&(i=="object"||i=="function")}function vt(r){return r!=null&&typeof r=="object"}var Oh=Kf?gn(Kf):Z0;function Yw(r,i){return r===i||Ql(r,i,mu(i))}function Jw(r,i,l){return l=typeof l=="function"?l:n,Ql(r,i,mu(i),l)}function Xw(r){return Ih(r)&&r!=+r}function Zw(r){if(N1(r))throw new ke(a);return Sd(r)}function Qw(r){return r===null}function ex(r){return r==null}function Ih(r){return typeof r=="number"||vt(r)&&Jt(r)==N}function Pi(r){if(!vt(r)||Jt(r)!=H)return!1;var i=Bo(r);if(i===null)return!0;var l=rt.call(i,"constructor")&&i.constructor;return typeof l=="function"&&l instanceof l&&No.call(l)==J_}var Tu=Gf?gn(Gf):Q0;function tx(r){return kh(r)&&r>=-he&&r<=he}var Mh=jf?gn(jf):e1;function ha(r){return typeof r=="string"||!Oe(r)&&vt(r)&&Jt(r)==Q}function vn(r){return typeof r=="symbol"||vt(r)&&Jt(r)==we}var Ws=zf?gn(zf):t1;function nx(r){return r===n}function rx(r){return vt(r)&&Wt(r)==ye}function sx(r){return vt(r)&&Jt(r)==Re}var ix=ra(tu),ox=ra(function(r,i){return r<=i});function Lh(r){if(!r)return[];if(an(r))return ha(r)?$n(r):on(r);if(gi&&r[gi])return F_(r[gi]());var i=Wt(r),l=i==A?Wl:i==re?Io:Us;return l(r)}function pr(r){if(!r)return r===0?r:0;if(r=kn(r),r===me||r===-me){var i=r<0?-1:1;return i*yt}return r===r?r:0}function Me(r){var i=pr(r),l=i%1;return i===i?l?i-l:i:0}function Nh(r){return r?as(Me(r),0,_t):0}function kn(r){if(typeof r=="number")return r;if(vn(r))return hn;if(mt(r)){var i=typeof r.valueOf=="function"?r.valueOf():r;r=mt(i)?i+"":i}if(typeof r!="string")return r===0?r:+r;r=ed(r);var l=Vy.test(r);return l||Uy.test(r)?w_(r.slice(2),l?2:8):Hy.test(r)?hn:+r}function Dh(r){return Gn(r,ln(r))}function ax(r){return r?as(Me(r),-he,he):r===0?r:0}function Qe(r){return r==null?"":mn(r)}var lx=Bs(function(r,i){if(Ai(i)||an(i)){Gn(i,Ot(i),r);return}for(var l in i)rt.call(i,l)&&bi(r,l,i[l])}),$h=Bs(function(r,i){Gn(i,ln(i),r)}),pa=Bs(function(r,i,l,d){Gn(i,ln(i),r,d)}),ux=Bs(function(r,i,l,d){Gn(i,Ot(i),r,d)}),cx=fr(zl);function fx(r,i){var l=Fs(r);return i==null?l:gd(l,i)}var dx=Be(function(r,i){r=at(r);var l=-1,d=i.length,v=d>2?i[2]:n;for(v&&Xt(i[0],i[1],v)&&(d=1);++l1),b}),Gn(r,pu(r),l),d&&(l=Tn(l,g|y|m,S1));for(var v=i.length;v--;)ou(l,i[v]);return l});function kx(r,i){return Bh(r,fa(Ee(i)))}var Ox=fr(function(r,i){return r==null?{}:s1(r,i)});function Bh(r,i){if(r==null)return{};var l=ht(pu(r),function(d){return[d]});return i=Ee(i),kd(r,l,function(d,v){return i(d,v[0])})}function Ix(r,i,l){i=Dr(i,r);var d=-1,v=i.length;for(v||(v=1,r=n);++di){var d=r;r=i,i=d}if(l||r%1||i%1){var v=fd();return Vt(r+v*(i-r+b_("1e-"+((v+"").length-1))),i)}return ru(r,i)}var Ux=Hs(function(r,i,l){return i=i.toLowerCase(),r+(l?Wh(i):i)});function Wh(r){return ku(Qe(r).toLowerCase())}function Uh(r){return r=Qe(r),r&&r.replace(Ky,M_).replace(c_,"")}function qx(r,i,l){r=Qe(r),i=mn(i);var d=r.length;l=l===n?d:as(Me(l),0,d);var v=l;return l-=i.length,l>=0&&r.slice(l,v)==i}function Kx(r){return r=Qe(r),r&&Cy.test(r)?r.replace(bf,L_):r}function Gx(r){return r=Qe(r),r&&Oy.test(r)?r.replace(Cl,"\\$&"):r}var jx=Hs(function(r,i,l){return r+(l?"-":"")+i.toLowerCase()}),zx=Hs(function(r,i,l){return r+(l?" ":"")+i.toLowerCase()}),Yx=Gd("toLowerCase");function Jx(r,i,l){r=Qe(r),i=Me(i);var d=i?Ms(r):0;if(!i||d>=i)return r;var v=(i-d)/2;return na(Uo(v),l)+r+na(Wo(v),l)}function Xx(r,i,l){r=Qe(r),i=Me(i);var d=i?Ms(r):0;return i&&d>>0,l?(r=Qe(r),r&&(typeof i=="string"||i!=null&&!Tu(i))&&(i=mn(i),!i&&Is(r))?$r($n(r),0,l):r.split(i,l)):[]}var sS=Hs(function(r,i,l){return r+(l?" ":"")+ku(i)});function iS(r,i,l){return r=Qe(r),l=l==null?0:as(Me(l),0,r.length),i=mn(i),r.slice(l,l+i.length)==i}function oS(r,i,l){var d=_.templateSettings;l&&Xt(r,i,l)&&(i=n),r=Qe(r),i=pa({},i,d,Qd);var v=pa({},i.imports,d.imports,Qd),b=Ot(v),C=Vl(v,b),P,M,G=0,j=i.interpolate||To,X="__p += '",ae=Ul((i.escape||To).source+"|"+j.source+"|"+(j===wf?By:To).source+"|"+(i.evaluate||To).source+"|$","g"),be="//# sourceURL="+(rt.call(i,"sourceURL")?(i.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++g_+"]")+` -`;r.replace(ae,function(Te,He,Ke,yn,Zt,_n){return Ke||(Ke=yn),X+=r.slice(G,_n).replace(Gy,N_),He&&(P=!0,X+=`' + +`)}function I1(r){return Oe(r)||fs(r)||!!(ud&&r&&r[ud])}function dr(r,i){var l=typeof r;return i=i??he,!!i&&(l=="number"||l!="symbol"&&qy.test(r))&&r>-1&&r%1==0&&r0){if(++i>=J)return arguments[0]}else i=0;return r.apply(n,arguments)}}function oa(r,i){var l=-1,d=r.length,v=d-1;for(i=i===n?d:i;++l1?r[i-1]:n;return l=typeof l=="function"?(r.pop(),l):n,_h(r,l)});function bh(r){var i=_(r);return i.__chain__=!0,i}function Ub(r,i){return i(r),r}function aa(r,i){return i(r)}var qb=fr(function(r){var i=r.length,l=i?r[0]:0,d=this.__wrapped__,v=function(b){return zl(b,r)};return i>1||this.__actions__.length||!(d instanceof We)||!dr(l)?this.thru(v):(d=d.slice(l,+l+(i?1:0)),d.__actions__.push({func:aa,args:[v],thisArg:n}),new An(d,this.__chain__).thru(function(b){return i&&!b.length&&b.push(n),b}))});function Kb(){return bh(this)}function Gb(){return new An(this.value(),this.__chain__)}function jb(){this.__values__===n&&(this.__values__=Lh(this.value()));var r=this.__index__>=this.__values__.length,i=r?n:this.__values__[this.__index__++];return{done:r,value:i}}function zb(){return this}function Yb(r){for(var i,l=this;l instanceof Go;){var d=hh(l);d.__index__=0,d.__values__=n,i?v.__wrapped__=d:i=d;var v=d;l=l.__wrapped__}return v.__wrapped__=r,i}function Jb(){var r=this.__wrapped__;if(r instanceof We){var i=r;return this.__actions__.length&&(i=new We(this)),i=i.reverse(),i.__actions__.push({func:aa,args:[xu],thisArg:n}),new An(i,this.__chain__)}return this.thru(xu)}function Xb(){return Dd(this.__wrapped__,this.__actions__)}var Zb=Qo(function(r,i,l){rt.call(r,l)?++r[l]:ur(r,l,1)});function Qb(r,i,l){var d=Oe(r)?Yf:U_;return l&&Xt(r,i,l)&&(i=n),d(r,Ee(i,3))}function ew(r,i){var l=Oe(r)?kr:_d;return l(r,Ee(i,3))}var tw=jd(ph),nw=jd(gh);function rw(r,i){return Bt(la(r,i),1)}function sw(r,i){return Bt(la(r,i),me)}function iw(r,i,l){return l=l===n?1:Me(l),Bt(la(r,i),l)}function wh(r,i){var l=Oe(r)?En:Lr;return l(r,Ee(i,3))}function xh(r,i){var l=Oe(r)?E0:yd;return l(r,Ee(i,3))}var ow=Qo(function(r,i,l){rt.call(r,l)?r[l].push(i):ur(r,l,[i])});function aw(r,i,l,d){r=an(r)?r:Us(r),l=l&&!d?Me(l):0;var v=r.length;return l<0&&(l=At(v+l,0)),ha(r)?l<=v&&r.indexOf(i,l)>-1:!!v&&Os(r,i,l)>-1}var lw=Be(function(r,i,l){var d=-1,v=typeof i=="function",b=an(r)?D(r.length):[];return Lr(r,function(C){b[++d]=v?pn(i,C,l):xi(C,i,l)}),b}),uw=Qo(function(r,i,l){ur(r,l,i)});function la(r,i){var l=Oe(r)?ht:Cd;return l(r,Ee(i,3))}function cw(r,i,l,d){return r==null?[]:(Oe(i)||(i=i==null?[]:[i]),l=d?n:l,Oe(l)||(l=l==null?[]:[l]),Rd(r,i,l))}var fw=Qo(function(r,i,l){r[l?0:1].push(i)},function(){return[[],[]]});function dw(r,i,l){var d=Oe(r)?Nl:Qf,v=arguments.length<3;return d(r,Ee(i,4),l,v,Lr)}function hw(r,i,l){var d=Oe(r)?C0:Qf,v=arguments.length<3;return d(r,Ee(i,4),l,v,yd)}function pw(r,i){var l=Oe(r)?kr:_d;return l(r,fa(Ee(i,3)))}function gw(r){var i=Oe(r)?pd:a1;return i(r)}function mw(r,i,l){(l?Xt(r,i,l):i===n)?i=1:i=Me(i);var d=Oe(r)?F_:l1;return d(r,i)}function vw(r){var i=Oe(r)?B_:c1;return i(r)}function yw(r){if(r==null)return 0;if(an(r))return ha(r)?Ms(r):r.length;var i=Wt(r);return i==A||i==re?r.size:eu(r).length}function _w(r,i,l){var d=Oe(r)?Dl:f1;return l&&Xt(r,i,l)&&(i=n),d(r,Ee(i,3))}var bw=Be(function(r,i){if(r==null)return[];var l=i.length;return l>1&&Xt(r,i[0],i[1])?i=[]:l>2&&Xt(i[0],i[1],i[2])&&(i=[i[0]]),Rd(r,Bt(i,1),[])}),ua=e_||function(){return Ft.Date.now()};function ww(r,i){if(typeof i!="function")throw new Cn(u);return r=Me(r),function(){if(--r<1)return i.apply(this,arguments)}}function Sh(r,i,l){return i=l?n:i,i=r&&i==null?r.length:i,cr(r,U,n,n,n,n,i)}function Eh(r,i){var l;if(typeof i!="function")throw new Cn(u);return r=Me(r),function(){return--r>0&&(l=i.apply(this,arguments)),r<=1&&(i=n),l}}var Eu=Be(function(r,i,l){var d=R;if(l.length){var v=Ir(l,Vs(Eu));d|=k}return cr(r,d,i,l,v)}),Ch=Be(function(r,i,l){var d=R|O;if(l.length){var v=Ir(l,Vs(Ch));d|=k}return cr(i,d,r,l,v)});function Ah(r,i,l){i=l?n:i;var d=cr(r,S,n,n,n,n,n,i);return d.placeholder=Ah.placeholder,d}function Th(r,i,l){i=l?n:i;var d=cr(r,T,n,n,n,n,n,i);return d.placeholder=Th.placeholder,d}function Ph(r,i,l){var d,v,b,C,P,M,G=0,j=!1,X=!1,ae=!0;if(typeof r!="function")throw new Cn(u);i=kn(i)||0,mt(l)&&(j=!!l.leading,X="maxWait"in l,b=X?At(kn(l.maxWait)||0,i):b,ae="trailing"in l?!!l.trailing:ae);function be(wt){var Hn=d,gr=v;return d=v=n,G=wt,C=r.apply(gr,Hn),C}function Ae(wt){return G=wt,P=Ti(He,i),j?be(wt):C}function De(wt){var Hn=wt-M,gr=wt-G,jh=i-Hn;return X?Vt(jh,b-gr):jh}function Te(wt){var Hn=wt-M,gr=wt-G;return M===n||Hn>=i||Hn<0||X&&gr>=b}function He(){var wt=ua();if(Te(wt))return Ke(wt);P=Ti(He,De(wt))}function Ke(wt){return P=n,ae&&d?be(wt):(d=v=n,C)}function yn(){P!==n&&Fd(P),G=0,d=M=v=P=n}function Zt(){return P===n?C:Ke(ua())}function _n(){var wt=ua(),Hn=Te(wt);if(d=arguments,v=this,M=wt,Hn){if(P===n)return Ae(M);if(X)return Fd(P),P=Ti(He,i),be(M)}return P===n&&(P=Ti(He,i)),C}return _n.cancel=yn,_n.flush=Zt,_n}var xw=Be(function(r,i){return vd(r,1,i)}),Sw=Be(function(r,i,l){return vd(r,kn(i)||0,l)});function Ew(r){return cr(r,$)}function ca(r,i){if(typeof r!="function"||i!=null&&typeof i!="function")throw new Cn(u);var l=function(){var d=arguments,v=i?i.apply(this,d):d[0],b=l.cache;if(b.has(v))return b.get(v);var C=r.apply(this,d);return l.cache=b.set(v,C)||b,C};return l.cache=new(ca.Cache||lr),l}ca.Cache=lr;function fa(r){if(typeof r!="function")throw new Cn(u);return function(){var i=arguments;switch(i.length){case 0:return!r.call(this);case 1:return!r.call(this,i[0]);case 2:return!r.call(this,i[0],i[1]);case 3:return!r.call(this,i[0],i[1],i[2])}return!r.apply(this,i)}}function Cw(r){return Eh(2,r)}var Aw=d1(function(r,i){i=i.length==1&&Oe(i[0])?ht(i[0],gn(Ee())):ht(Bt(i,1),gn(Ee()));var l=i.length;return Be(function(d){for(var v=-1,b=Vt(d.length,l);++v=i}),fs=xd(function(){return arguments}())?xd:function(r){return vt(r)&&rt.call(r,"callee")&&!ld.call(r,"callee")},Oe=D.isArray,Vw=Uf?gn(Uf):Y_;function an(r){return r!=null&&da(r.length)&&!hr(r)}function bt(r){return vt(r)&&an(r)}function Ww(r){return r===!0||r===!1||vt(r)&&Jt(r)==ue}var Fr=n_||Du,Uw=qf?gn(qf):J_;function qw(r){return vt(r)&&r.nodeType===1&&!Pi(r)}function Kw(r){if(r==null)return!0;if(an(r)&&(Oe(r)||typeof r=="string"||typeof r.splice=="function"||Fr(r)||Ws(r)||fs(r)))return!r.length;var i=Wt(r);if(i==A||i==re)return!r.size;if(Ai(r))return!eu(r).length;for(var l in r)if(rt.call(r,l))return!1;return!0}function Gw(r,i){return Si(r,i)}function jw(r,i,l){l=typeof l=="function"?l:n;var d=l?l(r,i):n;return d===n?Si(r,i,n,l):!!d}function Au(r){if(!vt(r))return!1;var i=Jt(r);return i==qe||i==_e||typeof r.message=="string"&&typeof r.name=="string"&&!Pi(r)}function zw(r){return typeof r=="number"&&cd(r)}function hr(r){if(!mt(r))return!1;var i=Jt(r);return i==nt||i==E||i==z||i==oe}function kh(r){return typeof r=="number"&&r==Me(r)}function da(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=he}function mt(r){var i=typeof r;return r!=null&&(i=="object"||i=="function")}function vt(r){return r!=null&&typeof r=="object"}var Oh=Kf?gn(Kf):Z_;function Yw(r,i){return r===i||Ql(r,i,mu(i))}function Jw(r,i,l){return l=typeof l=="function"?l:n,Ql(r,i,mu(i),l)}function Xw(r){return Ih(r)&&r!=+r}function Zw(r){if(N1(r))throw new ke(a);return Sd(r)}function Qw(r){return r===null}function ex(r){return r==null}function Ih(r){return typeof r=="number"||vt(r)&&Jt(r)==N}function Pi(r){if(!vt(r)||Jt(r)!=H)return!1;var i=Bo(r);if(i===null)return!0;var l=rt.call(i,"constructor")&&i.constructor;return typeof l=="function"&&l instanceof l&&No.call(l)==J0}var Tu=Gf?gn(Gf):Q_;function tx(r){return kh(r)&&r>=-he&&r<=he}var Mh=jf?gn(jf):e1;function ha(r){return typeof r=="string"||!Oe(r)&&vt(r)&&Jt(r)==Q}function vn(r){return typeof r=="symbol"||vt(r)&&Jt(r)==we}var Ws=zf?gn(zf):t1;function nx(r){return r===n}function rx(r){return vt(r)&&Wt(r)==ye}function sx(r){return vt(r)&&Jt(r)==Re}var ix=ra(tu),ox=ra(function(r,i){return r<=i});function Lh(r){if(!r)return[];if(an(r))return ha(r)?$n(r):on(r);if(gi&&r[gi])return F0(r[gi]());var i=Wt(r),l=i==A?Wl:i==re?Io:Us;return l(r)}function pr(r){if(!r)return r===0?r:0;if(r=kn(r),r===me||r===-me){var i=r<0?-1:1;return i*yt}return r===r?r:0}function Me(r){var i=pr(r),l=i%1;return i===i?l?i-l:i:0}function Nh(r){return r?as(Me(r),0,_t):0}function kn(r){if(typeof r=="number")return r;if(vn(r))return hn;if(mt(r)){var i=typeof r.valueOf=="function"?r.valueOf():r;r=mt(i)?i+"":i}if(typeof r!="string")return r===0?r:+r;r=ed(r);var l=Vy.test(r);return l||Uy.test(r)?w0(r.slice(2),l?2:8):Hy.test(r)?hn:+r}function Dh(r){return Gn(r,ln(r))}function ax(r){return r?as(Me(r),-he,he):r===0?r:0}function Qe(r){return r==null?"":mn(r)}var lx=Bs(function(r,i){if(Ai(i)||an(i)){Gn(i,Ot(i),r);return}for(var l in i)rt.call(i,l)&&bi(r,l,i[l])}),$h=Bs(function(r,i){Gn(i,ln(i),r)}),pa=Bs(function(r,i,l,d){Gn(i,ln(i),r,d)}),ux=Bs(function(r,i,l,d){Gn(i,Ot(i),r,d)}),cx=fr(zl);function fx(r,i){var l=Fs(r);return i==null?l:gd(l,i)}var dx=Be(function(r,i){r=at(r);var l=-1,d=i.length,v=d>2?i[2]:n;for(v&&Xt(i[0],i[1],v)&&(d=1);++l1),b}),Gn(r,pu(r),l),d&&(l=Tn(l,g|y|m,S1));for(var v=i.length;v--;)ou(l,i[v]);return l});function kx(r,i){return Bh(r,fa(Ee(i)))}var Ox=fr(function(r,i){return r==null?{}:s1(r,i)});function Bh(r,i){if(r==null)return{};var l=ht(pu(r),function(d){return[d]});return i=Ee(i),kd(r,l,function(d,v){return i(d,v[0])})}function Ix(r,i,l){i=Dr(i,r);var d=-1,v=i.length;for(v||(v=1,r=n);++di){var d=r;r=i,i=d}if(l||r%1||i%1){var v=fd();return Vt(r+v*(i-r+b0("1e-"+((v+"").length-1))),i)}return ru(r,i)}var Ux=Hs(function(r,i,l){return i=i.toLowerCase(),r+(l?Wh(i):i)});function Wh(r){return ku(Qe(r).toLowerCase())}function Uh(r){return r=Qe(r),r&&r.replace(Ky,M0).replace(c0,"")}function qx(r,i,l){r=Qe(r),i=mn(i);var d=r.length;l=l===n?d:as(Me(l),0,d);var v=l;return l-=i.length,l>=0&&r.slice(l,v)==i}function Kx(r){return r=Qe(r),r&&Cy.test(r)?r.replace(bf,L0):r}function Gx(r){return r=Qe(r),r&&Oy.test(r)?r.replace(Cl,"\\$&"):r}var jx=Hs(function(r,i,l){return r+(l?"-":"")+i.toLowerCase()}),zx=Hs(function(r,i,l){return r+(l?" ":"")+i.toLowerCase()}),Yx=Gd("toLowerCase");function Jx(r,i,l){r=Qe(r),i=Me(i);var d=i?Ms(r):0;if(!i||d>=i)return r;var v=(i-d)/2;return na(Uo(v),l)+r+na(Wo(v),l)}function Xx(r,i,l){r=Qe(r),i=Me(i);var d=i?Ms(r):0;return i&&d>>0,l?(r=Qe(r),r&&(typeof i=="string"||i!=null&&!Tu(i))&&(i=mn(i),!i&&Is(r))?$r($n(r),0,l):r.split(i,l)):[]}var sS=Hs(function(r,i,l){return r+(l?" ":"")+ku(i)});function iS(r,i,l){return r=Qe(r),l=l==null?0:as(Me(l),0,r.length),i=mn(i),r.slice(l,l+i.length)==i}function oS(r,i,l){var d=_.templateSettings;l&&Xt(r,i,l)&&(i=n),r=Qe(r),i=pa({},i,d,Qd);var v=pa({},i.imports,d.imports,Qd),b=Ot(v),C=Vl(v,b),P,M,G=0,j=i.interpolate||To,X="__p += '",ae=Ul((i.escape||To).source+"|"+j.source+"|"+(j===wf?By:To).source+"|"+(i.evaluate||To).source+"|$","g"),be="//# sourceURL="+(rt.call(i,"sourceURL")?(i.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++g0+"]")+` +`;r.replace(ae,function(Te,He,Ke,yn,Zt,_n){return Ke||(Ke=yn),X+=r.slice(G,_n).replace(Gy,N0),He&&(P=!0,X+=`' + __e(`+He+`) + '`),Zt&&(M=!0,X+=`'; `+Zt+`; @@ -52,7 +52,7 @@ __p += '`),Ke&&(X+=`' + function print() { __p += __j.call(arguments, '') } `:`; `)+X+`return __p -}`;var De=Kh(function(){return Ze(b,be+"return "+X).apply(n,C)});if(De.source=X,Au(De))throw De;return De}function aS(r){return Qe(r).toLowerCase()}function lS(r){return Qe(r).toUpperCase()}function uS(r,i,l){if(r=Qe(r),r&&(l||i===n))return ed(r);if(!r||!(i=mn(i)))return r;var d=$n(r),v=$n(i),b=td(d,v),C=nd(d,v)+1;return $r(d,b,C).join("")}function cS(r,i,l){if(r=Qe(r),r&&(l||i===n))return r.slice(0,sd(r)+1);if(!r||!(i=mn(i)))return r;var d=$n(r),v=nd(d,$n(i))+1;return $r(d,0,v).join("")}function fS(r,i,l){if(r=Qe(r),r&&(l||i===n))return r.replace(Al,"");if(!r||!(i=mn(i)))return r;var d=$n(r),v=td(d,$n(i));return $r(d,v).join("")}function dS(r,i){var l=q,d=le;if(mt(i)){var v="separator"in i?i.separator:v;l="length"in i?Me(i.length):l,d="omission"in i?mn(i.omission):d}r=Qe(r);var b=r.length;if(Is(r)){var C=$n(r);b=C.length}if(l>=b)return r;var P=l-Ms(d);if(P<1)return d;var M=C?$r(C,0,P).join(""):r.slice(0,P);if(v===n)return M+d;if(C&&(P+=M.length-P),Tu(v)){if(r.slice(P).search(v)){var G,j=M;for(v.global||(v=Ul(v.source,Qe(xf.exec(v))+"g")),v.lastIndex=0;G=v.exec(j);)var X=G.index;M=M.slice(0,X===n?P:X)}}else if(r.indexOf(mn(v),P)!=P){var ae=M.lastIndexOf(v);ae>-1&&(M=M.slice(0,ae))}return M+d}function hS(r){return r=Qe(r),r&&Ey.test(r)?r.replace(_f,W_):r}var pS=Hs(function(r,i,l){return r+(l?" ":"")+i.toUpperCase()}),ku=Gd("toUpperCase");function qh(r,i,l){return r=Qe(r),i=l?n:i,i===n?$_(r)?K_(r):P_(r):r.match(i)||[]}var Kh=Be(function(r,i){try{return pn(r,n,i)}catch(l){return Au(l)?l:new ke(l)}}),gS=fr(function(r,i){return En(i,function(l){l=jn(l),ur(r,l,Eu(r[l],r))}),r});function mS(r){var i=r==null?0:r.length,l=Ee();return r=i?ht(r,function(d){if(typeof d[1]!="function")throw new Cn(u);return[l(d[0]),d[1]]}):[],Be(function(d){for(var v=-1;++vhe)return[];var l=_t,d=Vt(r,_t);i=Ee(i),r-=_t;for(var v=Hl(d,i);++l0||i<0)?new We(l):(r<0?l=l.takeRight(-r):r&&(l=l.drop(r)),i!==n&&(i=Me(i),l=i<0?l.dropRight(-i):l.take(i-r)),l)},We.prototype.takeRightWhile=function(r){return this.reverse().takeWhile(r).reverse()},We.prototype.toArray=function(){return this.take(_t)},Kn(We.prototype,function(r,i){var l=/^(?:filter|find|map|reject)|While$/.test(i),d=/^(?:head|last)$/.test(i),v=_[d?"take"+(i=="last"?"Right":""):i],b=d||/^find/.test(i);v&&(_.prototype[i]=function(){var C=this.__wrapped__,P=d?[1]:arguments,M=C instanceof We,G=P[0],j=M||Oe(C),X=function(He){var Ke=v.apply(_,Or([He],P));return d&&ae?Ke[0]:Ke};j&&l&&typeof G=="function"&&G.length!=1&&(M=j=!1);var ae=this.__chain__,be=!!this.__actions__.length,Ae=b&&!ae,De=M&&!be;if(!b&&j){C=De?C:new We(this);var Te=r.apply(C,P);return Te.__actions__.push({func:aa,args:[X],thisArg:n}),new An(Te,ae)}return Ae&&De?r.apply(this,P):(Te=this.thru(X),Ae?d?Te.value()[0]:Te.value():Te)})}),En(["pop","push","shift","sort","splice","unshift"],function(r){var i=Mo[r],l=/^(?:push|sort|unshift)$/.test(r)?"tap":"thru",d=/^(?:pop|shift)$/.test(r);_.prototype[r]=function(){var v=arguments;if(d&&!this.__chain__){var b=this.value();return i.apply(Oe(b)?b:[],v)}return this[l](function(C){return i.apply(Oe(C)?C:[],v)})}}),Kn(We.prototype,function(r,i){var l=_[i];if(l){var d=l.name+"";rt.call($s,d)||($s[d]=[]),$s[d].push({name:i,func:l})}}),$s[ea(n,O).name]=[{name:"wrapper",func:n}],We.prototype.clone=h0,We.prototype.reverse=p0,We.prototype.value=g0,_.prototype.at=qb,_.prototype.chain=Kb,_.prototype.commit=Gb,_.prototype.next=jb,_.prototype.plant=Yb,_.prototype.reverse=Jb,_.prototype.toJSON=_.prototype.valueOf=_.prototype.value=Xb,_.prototype.first=_.prototype.head,gi&&(_.prototype[gi]=zb),_},Ls=G_();rs?((rs.exports=Ls)._=Ls,Il._=Ls):Ft._=Ls}).call(YR)}(Wi,Wi.exports)),Wi.exports}var XR=JR();const ZR={class:"flex flex-col"},QR=Le({__name:"InputWithAutoComplete",props:{icon:String,placeholder:String,modelValue:String,onClick:{type:Function,required:!1},suggest:{type:Function,required:!0},clickSuggest:{type:Function,required:!1}},emits:["update:modelValue","change","submit"],setup(e,{expose:t,emit:n}){const s=ce(-1),o=R=>R.key==="ArrowDown"?(s.value++,s.value>=y.value.length&&(s.value=-1),!0):R.key==="ArrowUp"?(s.value===-1&&(s.value=y.value.length),s.value--,s.value<0&&(s.value=-1),!0):R.key==="Enter"&&s.value>=0?(c.clickSuggest(y.value[s.value],R.shiftKey),s.value=-1,y.value=[],!0):!1,a=()=>{y.value=[],w("submit",f.value)},u=()=>{var R,O;(O=(R=h.value)==null?void 0:R.querySelector("input"))==null||O.blur()};document.addEventListener("click",R=>{var O;(O=h.value)!=null&&O.contains(R.target)||(y.value=[],s.value=-1)}),document.addEventListener("keydown",R=>{R.key==="Escape"&&(y.value=[],s.value=-1,u())});const c=e,f=ce(c.modelValue),p=ce(null);Xe(()=>c.modelValue,R=>{f.value=R});const h=ce(null),g=Pe(()=>{var R,O;return{top:h.value.offsetTop+h.value.offsetHeight+"px",left:((R=h.value)==null?void 0:R.offsetLeft)+"px",width:((O=h.value)==null?void 0:O.offsetWidth)+"px"}}),y=ce([]),m=XR.debounce(async()=>{y.value=(await c.suggest(f.value)).slice(0,5)},300),w=n,x=()=>{w("update:modelValue",f.value),w("change",f.value),m()};return t({focus:()=>{var R;(R=p.value)==null||R.focus()},blur:u}),(R,O)=>(B(),ne(Ve,null,[F("div",{ref_key:"inputElement",ref:h,class:"input-with-autocomplete"},[te(Lc,{modelValue:f.value,"onUpdate:modelValue":O[0]||(O[0]=L=>f.value=L),icon:e.icon,placeholder:e.placeholder,onChange:x,onSubmit:a,onKeyUp:o,expanded:y.value.length>0,ref_key:"input",ref:p},null,8,["modelValue","icon","placeholder","expanded"])],512),y.value.length>0?(B(),Fe(hi,{key:0,to:"#autocomplete-target"},[F("div",{class:"suggestions absolute w-full z-10",style:sr(g.value),onClick:O[1]||(O[1]=gt(L=>y.value=[],["stop"]))},[F("div",ZR,[(B(!0),ne(Ve,null,ir(y.value,(L,S)=>xs(R.$slots,"default",{selected:S===s.value,value:L},void 0,!0)),256))])],4)])):xe("",!0)],64))}}),ek=tt(QR,[["__scopeId","data-v-9be27f78"]]),tk={},nk={class:"loader"};function rk(e,t){return B(),ne("div",nk,t[0]||(t[0]=[Qm('
',1)]))}const iy=tt(tk,[["render",rk],["__scopeId","data-v-cf68f823"]]),sk={key:1},ik=Le({__name:"IconButton",props:{icon:{type:String,required:!1},label:{type:String,required:!0},disabled:{type:Boolean,required:!1,default:!1},type:{type:String,required:!1,default:"negative"}},setup(e){return(t,n)=>(B(),ne("button",{class:$e([(e.disabled?"disabled ":"")+e.type,"flex items-center justify-center h-12 p-4 mt-4 rounded-full"])},[e.icon?(B(),ne("span",{key:0,class:$e([{"mr-2":e.label},"material-symbols-rounded"])},Se(e.icon),3)):xe("",!0),e.label?(B(),ne("span",sk,Se(e.label),1)):xe("",!0)],2))}}),dg=tt(ik,[["__scopeId","data-v-b68d33f1"]]),ok={class:"header bg-secondary rounded-t-2xl p-3"},ak={class:"title font-black"},lk={key:1},uk={class:"p-4 error"},ck={key:2,class:"p-4 pt-0 flex flex-col overflow-x-hidden overflow-y-auto"},fk={key:0,class:"confirm"},dk=Le({__name:"Template",props:{name:{type:String,required:!0},submit:{type:Object,required:!1},secondary:{type:Object,required:!1,default:null}},emits:["submit","close","secondary"],setup(e,{expose:t,emit:n}){const s=e,o=ce(!1),a=ce(!1),u=ce(""),c=()=>a.value=!1,f=()=>{o.value=!1,a.value=!0},p=()=>{o.value=!0,a.value=!0},h=async(x,R)=>{p();const O=await window.fetch(x,R);return f(),O.ok?O:(u.value=await O.text(),null)},g=n,y=()=>{c(),g("close")},m=()=>{g("submit"),y()},w=()=>{g("secondary"),y()};return t({show:f,hide:c,load:p,fetch:h}),(x,R)=>a.value?(B(),Fe(hi,{key:0,to:"#popup-target"},[F("div",{class:"modal",onClick:R[1]||(R[1]=gt(O=>a.value=!1,["stop"])),onContextmenu:R[2]||(R[2]=gt(()=>{},["stop"])),onDrag:R[3]||(R[3]=gt(()=>{},["stop"]))},[F("div",{class:"modal-content",onClick:R[0]||(R[0]=gt(()=>{},["stop"]))},[F("div",ok,[F("h3",ak,Se(e.name),1),F("button",{class:"modal-close",onClick:y},R[4]||(R[4]=[F("span",{class:"title material-icons-round"}," close ",-1)]))]),o.value?(B(),Fe(iy,{key:0})):u.value?(B(),ne("div",lk,[F("p",uk,Se(u.value),1)])):(B(),ne("div",ck,[xs(x.$slots,"default",{},void 0,!0),s.submit||s.secondary?(B(),ne("div",fk,[s.secondary?(B(),Fe(dg,{key:0,icon:s.secondary.icon,label:s.secondary.label,type:s.secondary.type,onClick:w},null,8,["icon","label","type"])):xe("",!0),s.submit?(B(),Fe(dg,{key:1,icon:s.submit.icon,label:s.submit.label,type:s.submit.type,onClick:m},null,8,["icon","label","type"])):xe("",!0)])):xe("",!0)]))])],32)])):xe("",!0)}}),oy=tt(dk,[["__scopeId","data-v-e243c458"]]),hk={class:"flex flex-row gap-2"},pk={key:0,class:"material-symbols-rounded ms-wght-200"},gk={class:"material-symbols-rounded"},mk=["onClick"],vk={class:"material-symbols-rounded"},yk={key:0,class:"material-symbols-rounded"},_k=Le({__name:"Dropdown",props:{modelValue:{type:String,required:!0},options:{type:Array,required:!0},icon:{type:String,required:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,s=ce(n.modelValue),o=ce(!1),a=t;Xe(n,h=>{s.value=h.modelValue},{deep:!0});const u=h=>{s.value=h,a("update:modelValue",h),o.value=!1},c=Pe(()=>{const h=n.options.find(g=>g.value==s.value);return h?h.label:""}),f=ce(null),p=ce(null);return Xe(o,h=>{qn(()=>{if(h){const g=f.value.getBoundingClientRect(),y=p.value.getBoundingClientRect(),m=y.top,w=y.bottom,x=window.innerHeight-w,R=y.width;f.value.style.width=R+"px",f.value.style.left=y.left+"px",x>g.height?(f.value.style.top=w+"px",f.value.style.bottom="auto"):(f.value.style.top="auto",f.value.style.bottom=m-g.height+"px")}})}),window.addEventListener("click",()=>{o.value=!1}),(h,g)=>(B(),ne("div",{ref_key:"container",ref:p,class:"dropdown"},[F("div",{class:$e([{expanded:o.value},"dropdown__selected"]),onClick:g[0]||(g[0]=gt(y=>o.value=!o.value,["stop"]))},[F("div",hk,[e.icon?(B(),ne("span",pk,Se(e.icon),1)):xe("",!0),F("span",null,Se(c.value),1)]),F("i",gk,Se(o.value?"expand_less":"expand_more"),1)],2),(B(),Fe(hi,{to:"#dropdown-target"},[o.value?(B(),ne("div",{key:0,ref_key:"trueDropdown",ref:f,class:"dropdown__options"},[(B(!0),ne(Ve,null,ir(e.options,y=>(B(),ne("div",{key:y.value,class:"dropdown__option",onClick:gt(m=>u(y.value),["stop"])},[F("span",vk,Se(y.icon),1),F("span",null,Se(y.label),1),s.value==y.value?(B(),ne("span",yk,"check")):xe("",!0)],8,mk))),128))],512)):xe("",!0)]))],512))}}),bk=tt(_k,[["__scopeId","data-v-88b3642d"]]),wk={class:"form flex flex-col gap-4"},xk={class:"content"},Sk=["onClick"],Ek=["accept","onChange"],Ck={key:0,class:"imagePreview"},Ak=["onUpdate:modelValue","type","onChange"],Tk=Le({__name:"Form",props:{options:{type:Array,required:!0}},setup(e,{expose:t}){const n=e;return t({toObject:()=>{const o={};return n.options.forEach(a=>{o[a.name]=a.value}),o}}),(o,a)=>(B(),ne("div",wk,[(B(!0),ne(Ve,null,ir(e.options,u=>(B(),ne("div",{key:u.name,class:"option"},[F("div",xk,[u.type=="upload"?(B(),ne(Ve,{key:0},[F("span",{class:"material-symbols-rounded icon-button",onClick:()=>{var c,f;return(f=(c=o.$refs["upload-"+u.name])==null?void 0:c[0])==null?void 0:f.click()}}," file_upload ",8,Sk),F("input",{ref_for:!0,ref:"upload-"+u.name,accept:u.accept,style:{display:"none"},type:"file",onChange:c=>u==null?void 0:u.onUpload(c.target.files[0])},null,40,Ek),te(Lc,{ref_for:!0,ref:"cover",modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,icon:u.icon,class:"addSong cover",type:"text",label:u.name,placeholder:u.placeholder,onChange:c=>{var f;return(f=u==null?void 0:u.onChange)==null?void 0:f.call(u,u.value)}},null,8,["modelValue","onUpdate:modelValue","icon","label","placeholder","onChange"]),u.imagePreview?(B(),ne("div",Ck,[te(Jr,{src:u.value,class:"cover",onClick:c=>K(cf)(u.value)},null,8,["src","onClick"])])):xe("",!0)],64)):u.type=="dropdown"?(B(),Fe(bk,{key:1,modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,icon:u.icon,options:u.options},null,8,["modelValue","onUpdate:modelValue","icon","options"])):u.type=="text"?(B(),Fe(Lc,{key:2,modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,icon:u.icon,label:u.name,placeholder:u.placeholder,required:u.required,type:u.type,onChange:c=>u.onChange?u==null?void 0:u.onChange(u.value):null},null,8,["modelValue","onUpdate:modelValue","icon","label","placeholder","required","type","onChange"])):ni((B(),ne("input",{key:3,"onUpdate:modelValue":c=>u.value=c,type:u.type,onChange:c=>u.onChange?u==null?void 0:u.onChange(u.value):null},null,40,Ak)),[[vl,u.value]])])]))),128))]))}}),ay=tt(Tk,[["__scopeId","data-v-97bdbd3e"]]),Pk={class:"padding-20 playlisteditor"},Rk={class:"details"},kk={class:"detailswrapper"},Ok=["onClick"],Ik=Le({__name:"TrackInfo",props:{title:{type:String,required:!0},subtitle:{type:String,default:""},cover:{type:String,required:!0},icons:{type:Array,required:!0}},setup(e){return(t,n)=>(B(),ne("div",Pk,[te(Jr,{type:"playlist",name:e.title,src:e.cover,class:"cover"},null,8,["name","src"]),F("div",Rk,[F("div",kk,[(B(!0),ne(Ve,null,ir(e.icons,(s,o)=>(B(),ne("span",{key:o,class:"material-icons-round",onClick:s.onClick},Se(s.name),9,Ok))),128))]),F("h1",null,Se(e.title),1),F("h6",null,Se(e.subtitle),1)])]))}}),ly=tt(Ik,[["__scopeId","data-v-3c71f9f3"]]),Ni=e=>{const t=new CustomEvent("notification.add",{detail:e});window.dispatchEvent(t)},Er={addSuccess(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"success",timeout:n,onClick:s,redirect:o}),a},addError(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"error",timeout:n,onClick:s,redirect:o}),a},addInfo(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"info",timeout:n,onClick:s,redirect:o}),a},addWarning(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"warning",timeout:n,onClick:s,redirect:o}),a},addYesNo(e,t,n,s,o,a,u,c){const f=Math.random().toString(36).substring(7);return Ni({id:f,message:e,details:t,type:"yes-no",timeout:n,onYes:s,onNo:o,onTimeout:a,onClick:u,redirect:c}),f},remove(e){const t=new CustomEvent("notification.remove",{detail:e});window.dispatchEvent(t)},clear(){const e=new CustomEvent("notification.clear");window.dispatchEvent(e)}},uy=Le({__name:"ImportSpotifySong",props:{song:{type:Object,required:!0}},setup(e,{expose:t}){const n=nn(),s=e,o=ce([{name:"playlist",type:"dropdown",icon:"playlist_add",required:!0,value:null,options:n.playlistsAsDropdown}]),a=ce(null),u=ce(null),c=ce(null),f=async()=>{if(c.value){a.value.show();return}const y=await a.value.fetch("/api/browse/track",{method:"POST",body:JSON.stringify({url:s.song.href??s.song.url})});y&&(a.value.load(),c.value=await y.json(),a.value.show())},p=()=>{const y=new CustomEvent("player.play",{detail:{artist:s.song.artist,title:s.song.title,source:s.song.href}});window.dispatchEvent(y)},h=async y=>{if(y==="new"){const m=await df("classic",s.song.title,s.song.artist,s.song.cover);return o.value[0].options=n.playlistsAsDropdown,o.value[0].value=m,m}return y},g=async(y,m=null)=>{var w,x;m??(m=u.value.toObject().playlist),m=await h(m),await ey(m,c.value),s.song.added=!0,Er.addSuccess(c.value.title,`Added to ${(w=n.playlists.find(R=>R.id==m))==null?void 0:w.name}`,3e3,void 0,(x=n.playlists.find(R=>R.id==m))==null?void 0:x.href)};return t({show:f}),(y,m)=>(B(),Fe(oy,{ref_key:"modal",ref:a,submit:{label:"Add",icon:"add"},name:"Import Song",onClose:m[0]||(m[0]=w=>y.$emit("close")),onSubmit:g},{default:xt(()=>[te(ly,{cover:e.song.cover,icons:[{name:"share",onClick:()=>K(cf)(e.song.href)},{name:"play_arrow",onClick:p}],title:e.song.title},null,8,["cover","icons","title"]),te(ay,{ref_key:"form",ref:u,options:o.value},null,8,["options"])]),_:1},512))}}),Mk={key:0,class:"album"},Lk={key:1,class:"duration"},Nk=Le({__name:"PlaylistHeader",props:{withAlbum:{type:Boolean,required:!1,default:!1},withMore:{type:Boolean,required:!1,default:!1},withoutDuration:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>(B(),ne("div",{class:$e([{withAlbum:e.withAlbum,withMore:e.withMore},"playlist-header"])},[n[1]||(n[1]=F("div",{class:"index text-right"},"#",-1)),n[2]||(n[2]=F("div",{class:"artist-title"}," title ",-1)),e.withAlbum?(B(),ne("div",Mk," album ")):xe("",!0),e.withoutDuration?xe("",!0):(B(),ne("div",Lk,n[0]||(n[0]=[F("span",{class:"material-symbols-rounded"},"schedule",-1)])))],2))}}),Dk=tt(Nk,[["__scopeId","data-v-f8e4524a"]]),$k={name:"Marquee",mounted(){this.update(),window.addEventListener("resize",this.update)},data(){return{isMarquee:!1}},methods:{isTruncated(e){return(e==null?void 0:e.scrollWidth)>(e==null?void 0:e.clientWidth)},update(){this.isMarquee=!1,setTimeout(()=>{this.isMarquee=this.isTruncated(this.$refs.marquee)},10)}}},Fk={key:0,class:"replacer"},Bk={key:0,class:"overlay"};function Hk(e,t,n,s,o,a){return B(),ne("div",{class:$e([{marquee:o.isMarquee},"marqueeWrapper"])},[F("span",{ref:"marquee",class:$e({marquee:o.isMarquee})},[xs(e.$slots,"default",{},void 0,!0),o.isMarquee?(B(),ne("span",Fk,[xs(e.$slots,"default",{},void 0,!0)])):xe("",!0)],2),o.isMarquee?(B(),ne("div",Bk)):xe("",!0)],2)}const Vk=tt($k,[["render",Hk],["__scopeId","data-v-ad7138e8"]]),Wk={class:"artist"},Uk=Le({__name:"ArtistMarquee",props:{artist:{type:String,required:!0}},setup(e){const t=e,n=Pe(()=>t.artist.split(", "));return(s,o)=>{const a=ws("router-link");return B(),Fe(Vk,null,{default:xt(()=>[(B(!0),ne(Ve,null,ir(n.value,u=>(B(),ne("span",Wk,[te(a,{to:"/artist/"+u},{default:xt(()=>[bo(Se(u),1)]),_:2},1032,["to"])]))),256))]),_:1})}}}),cy=tt(Uk,[["__scopeId","data-v-156468cf"]]),qk={key:0,class:"cover"},Kk={class:"artist-title"},Gk={class:"title"},jk={class:"artist"},zk={key:1,class:"album"},Yk=Le({__name:"ExternalEntry",props:{song:{type:Object,required:!0},index:{type:Number,required:!0},withCover:{type:Boolean,required:!1,default:!1},withAlbum:{type:Boolean,required:!1,default:!1},selected:{type:Boolean,required:!1,default:!1},playlistId:{type:Number,required:!1,default:null},canImport:{type:Boolean,required:!1,default:!1}},emits:["update","add"],setup(e,{emit:t}){const n=e,s=t,o=kt(),a=Pe(()=>n.song.id==o.song.id),u=ce(!1);Pe(()=>n.playlistId==null?o.playlist.id:n.playlistId);const c=()=>{XP(n.song.title,n.song.artist,n.song.source||n.song.href)},f=ce(null),p=()=>{n.canImport?f.value.show():s("add")};return(h,g)=>(B(),ne(Ve,null,[e.canImport?(B(),Fe(uy,{key:0,ref_key:"updatePopup",ref:f,song:e.song},null,8,["song"])):xe("",!0),F("div",{class:$e([{playing:a.value,selected:e.selected,hovering:u.value,withCover:e.withCover,withAlbum:e.withAlbum},"playlist-entry"]),onDblclick:c,onMouseenter:g[0]||(g[0]=y=>u.value=!0),onMouseleave:g[1]||(g[1]=y=>u.value=!1)},[F("div",{class:$e([{"material-symbols-rounded":u.value},"index text-right"]),onClick:c},Se(u.value?"play_arrow":e.index+1),3),e.withCover?(B(),ne("div",qk,[te(Jr,{src:e.song.cover,type:"track"},null,8,["src"])])):xe("",!0),F("div",Kk,[F("span",Gk,[(B(),Fe(xm(e.song.href.startsWith("http")?"a":"router-link"),{href:e.song.href,to:e.song.href,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:e.song.title},null,8,["text"])]),_:1},8,["href","to"]))]),F("span",jk,[te(cy,{artist:e.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),e.withAlbum&&!K(Rc)?(B(),ne("div",zk,[te(_r,{text:e.song.album},null,8,["text"])])):xe("",!0),F("div",{class:"icon text-left material-symbols-rounded",onClick:gt(p,["stop"])},Se(e.song.added?"done":"add"),1)],34)],64))}}),Jk=tt(Yk,[["__scopeId","data-v-7207e9cd"]]),Xk={class:"playlist"},Zk={class:"entries"},Qk=Le({__name:"Playlist",props:{songs:{type:Array,required:!0},noCover:{type:Boolean,default:!1}},setup(e){return(t,n)=>(B(),ne("div",Xk,[te(Dk,{"without-duration":""}),n[0]||(n[0]=F("hr",null,null,-1)),F("div",Zk,[(B(!0),ne(Ve,null,ir(e.songs,(s,o)=>(B(),Fe(Jk,{key:s.source,added:s.added,index:o,song:s,title:s.title,"with-cover":!e.noCover,onAdd:a=>t.$emit("add",o)},null,8,["added","index","song","title","with-cover","onAdd"]))),128))])]))}}),eO=tt(Qk,[["__scopeId","data-v-a918d839"]]),tO=Le({__name:"ImportSpotifyAlbum",props:{album:{type:Object,required:!0}},setup(e,{expose:t}){const n=nn(),s=e,o=ce([{name:"playlist",type:"dropdown",icon:"playlist_add",required:!0,value:null,options:n.playlistsAsDropdown}]),a=ce(null),u=ce(null),c=ce([]);let f=null;const p=async()=>{if(c.value.length>0&&f===s.album.id){a.value.show();return}const w=await a.value.fetch(`/api/spotify/albums/${s.album.id}`);if(f=s.album.id,!w){Er.addError("Failed to fetch album from Spotify",w.text,3e3);return}c.value=await w.json()},h=()=>{const w=new CustomEvent("player.play",{detail:{artist:s.album.artist,title:s.album.title,source:s.album.href}});window.dispatchEvent(w)},g=async w=>{if(w==="new"){const x=await df("classic",s.album.title,`${s.album.releaseDate}, ${s.album.artist}`,s.album.cover);return o.value[0].options=n.playlistsAsDropdown,o.value[0].value=x,x}return w},y=async(w,x=null)=>{c.value[w].added||(x??(x=u.value.toObject().playlist),x=await g(x),await ey(x,c.value[w]),c.value[w].added=!0)},m=async()=>{let w=u.value.toObject().playlist;w=await g(w),c.value.forEach((x,R)=>{y(R,w)}),Er.addSuccess(s.album.title,`Added ${c.value.length} songs to ${n.playlists[w].name}`,3e3,void 0,n.playlists[w].href)};return t({show:p}),(w,x)=>(B(),Fe(oy,{ref_key:"modal",ref:a,submit:{label:"Add All",icon:"add"},name:"Import Album",onClose:x[0]||(x[0]=R=>w.$emit("close")),onSubmit:m},{default:xt(()=>[te(ly,{cover:e.album.cover,icons:[{name:"share",onClick:()=>K(cf)(e.album.href)},{name:"play_arrow",onClick:h}],subtitle:e.album.artist,title:e.album.title},null,8,["cover","icons","subtitle","title"]),te(ay,{ref_key:"form",ref:u,options:o.value},null,8,["options"]),x[1]||(x[1]=F("br",null,null,-1)),te(eO,{songs:c.value,noCover:"",onAdd:y},null,8,["songs"])]),_:1},512))}}),nO={class:"info"},rO={class:"flex flex-col flex-1"},sO={class:"name"},iO={key:0,class:"text-muted text-sm"},oO={class:"aux flex items-center text-muted text-sm gap-2"},aO={class:"tag"},lO={class:"material-symbols-rounded tag"},uO=["name"],cO=Le({__name:"SearchResultItem",props:{item:{type:Object,required:!0},large:{type:Boolean,default:!1},noHover:{type:Boolean,default:!1},showDownload:{type:Boolean,default:!1}},setup(e){const t=wl(),n=e,s=Pe(()=>{var O,L,S,T;return((L=(O=n.item)==null?void 0:O.item)==null?void 0:L.cover)??((T=(S=n.item)==null?void 0:S.item)==null?void 0:T.image)}),o=Pe(()=>{var O,L,S,T;return((L=(O=n.item)==null?void 0:O.item)==null?void 0:L.name)??((T=(S=n.item)==null?void 0:S.item)==null?void 0:T.title)}),a=Pe(()=>{var O,L,S,T,k;return((L=(O=n.item)==null?void 0:O.item)==null?void 0:L.artist)??((k=(T=(S=n.item)==null?void 0:S.item)==null?void 0:T.artists)==null?void 0:k.join(", "))}),u=Pe(()=>{var O;return(O=n.item)==null?void 0:O.type}),c=Pe(()=>({song:"music_note",album:"album",artist:"person",playlist:"queue_music",command:"code"})[u.value??"song"]),f=Pe(()=>{var O;return Math.round(((O=n.item)==null?void 0:O.confidence)*1e3)/10}),p=Pe(()=>{var O;return((O=n.item)==null?void 0:O.scope)==="local"}),h=Pe(()=>{var O;return((O=n.item)==null?void 0:O.scope)==="spotify"}),g=Pe(()=>{var O;return((O=n.item)==null?void 0:O.scope)==="audius"}),y=Pe(()=>u.value==="song"&&!p.value&&n.showDownload),m=ce(),w=ce(),x=()=>{u.value==="artist"?t.push(`/artist/${n.item.item.name}`):u.value==="playlist"||u.value==="album"?t.push(n.item.item.href):p.value?u.value==="song"&&t.push(n.item.item.href):h.value?u.value==="song"?m.value.show():u.value==="album"&&w.value.show():g.value&&u.value==="song"&&m.value.show()},R=()=>{xl().downloadViaDownloader({album:n.item.item.album,artist:n.item.item.artist,title:n.item.item.title,source:n.item.item.href,href:n.item.item.href,cover:n.item.item.cover})};return(O,L)=>(B(),ne(Ve,null,[u.value==="song"&&(h.value||g.value)?(B(),Fe(uy,{key:0,ref_key:"importSpotifySong",ref:m,song:n.item.item},null,8,["song"])):xe("",!0),u.value==="album"&&h.value?(B(),Fe(tO,{key:1,ref_key:"importSpotifyAlbum",ref:w,album:n.item.item},null,8,["album"])):xe("",!0),F("div",{class:$e(["item",{large:e.large,noHover:e.noHover}]),onClick:x},[te(Jr,{src:s.value,placeholder:c.value,"with-ambient":""},null,8,["src","placeholder"]),F("div",nO,[F("div",rO,[F("span",sO,Se(o.value),1),a.value?(B(),ne("span",iO,Se(a.value),1)):xe("",!0)]),F("div",oO,[F("span",aO,Se(f.value)+"% ",1),F("span",lO,Se(c.value),1),p.value?xe("",!0):(B(),ne("span",{key:0,name:e.item.scope,class:"uppercase tag"},Se(e.item.scope),9,uO)),y.value?(B(),ne("span",{key:1,class:"material-symbols-rounded tag hover:!highlight hover:text-primary",onClick:gt(R,["stop"])}," file_download ")):xe("",!0)])])],2)],64))}}),fO=tt(cO,[["__scopeId","data-v-9097bc55"]]),b5=["local","spotify","audius"],dO=["song","artist","album","playlist"],hO={class:"header hideIfMobile grid grid-cols-3 justify-between drop-shadow-md"},pO={class:"search flex flex-row"},gO=["onClick"],mO={class:"mr-2 flex flex-row gap-2"},vO=Le({__name:"Header",setup(e){const t=ce(null),n=ce(!1),s=nn(),o=kt(),a=Pe(()=>{if(!t.value)return{};const m=`calc(${t.value.offsetTop}px + 10px)`,w=`calc(${t.value.offsetLeft}px + 10px)`;return{top:m,left:w}});xl().onDownload.push(m=>{n.value=!0,setTimeout(()=>{n.value=!1},500)});const c=(m,w=!1)=>{var x,R;if(w){if(m.type==="song"){o.loadPlaylist("track",m.item.id),(x=g.value)==null||x.blur();return}if(m.type==="playlist"){o.loadPlaylist(m.item.id),(R=g.value)==null||R.blur();return}}if(m.type==="artist"){Xs.push(`/artist/${m.item.name}`);return}Xs.push(m.item.href)},f=()=>{const m=s.playlists.flatMap(x=>x.songs);return m[Math.floor(Math.random()*m.length)]},p=async m=>{if(!m.length)return[];if(m==="/rand"){const R=f();return R?[{type:"command",confidence:1,scope:"local",item:R}]:[]}return["/create","/new"].includes(m)?[{type:"command",confidence:.5,scope:"local",item:{name:"Create classic playlist",href:"/playlist/create?type=classic"}},{type:"command",confidence:.5,scope:"local",item:{name:"Create smart playlist",href:"/playlist/create?type=smart"}}]:(await(await fetch("/api/search",{method:"POST",body:JSON.stringify({query:m,scope:["local",...dO]})})).json()).items};let h=ce("");const g=ce(null);Mt(()=>{h.value=String(Xs.currentRoute.value.params.query||""),Xs.afterEach(m=>{h.value=String(m.params.query||"")}),window.addEventListener("keydown",m=>{var w;m.ctrlKey&&m.key==="k"&&(m.preventDefault(),(w=g.value)==null||w.focus())})});let y=()=>{Xs.push({name:"Search",params:{query:h.value}})};return(m,w)=>(B(),ne("div",hO,[te(K(aR),{class:"hideIfMobile logo",onClick:w[0]||(w[0]=x=>m.$router.push("/"))}),F("div",pO,[te(Zn,{class:"sm:ml-0 mr-2",href:"/",icon:"home",minimised:"",name:"Home"}),te(ek,{modelValue:K(h),"onUpdate:modelValue":w[1]||(w[1]=x=>dt(h)?h.value=x:h=x),class:"md:!w-96",icon:"search",placeholder:"Search...",onSubmit:K(y),clickSuggest:c,suggest:p,ref_key:"search",ref:g},{default:xt(({value:x,selected:R})=>[F("div",{class:$e(["suggestion",{selected:R}]),onClick:O=>c(x)},[te(fO,{item:x},null,8,["item"])],10,gO)]),_:1},8,["modelValue","onSubmit"])]),F("div",mO,[F("div",{class:"download",ref_key:"downloadIcon",ref:t},[te(Zn,{href:"/download",icon:"download",minimised:"",name:"Download"}),(B(),Fe(hi,{to:"#popup-target"},[n.value?(B(),ne("span",{key:0,class:"download-anim absolute top-0 left-0 z-[1000] material-symbols-rounded",style:sr(a.value)},"download",4)):xe("",!0)]))],512),te(Zn,{href:"/preferences",icon:"settings",minimised:"",name:"Preferences"})])]))}}),yO=tt(vO,[["__scopeId","data-v-c7aea07d"]]),_O={xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"fill-rule":"evenodd","clip-rule":"evenodd","stroke-linejoin":"round","stroke-miterlimit":"2"},viewBox:"0 0 410 300"};function bO(e,t){return B(),ne("svg",_O,t[0]||(t[0]=[F("text",{x:"398.231",y:"338.034",style:{"font-family":'"Poppins-ExtraBold","Poppins"',"font-weight":"800","font-size":"197.74px"},transform:"translate(-399.969 -83.145)"},"ONE",-1),F("text",{x:"405.025",y:"170.82",style:{"font-family":'"Poppins-Regular","Poppins"',"font-size":"57.751px"},transform:"translate(-399.969 -83.145)"},"reAudioPlayer",-1)]))}const wO={render:bO},xO={class:"startup"},SO={class:"wrap"},EO={class:"logo"},CO=Le({__name:"Startup",setup(e){return Mt(()=>{Er.clear()}),(t,n)=>(B(),ne("div",xO,[F("div",SO,[F("div",EO,[te(iy),te(K(wO))])])]))}}),AO=tt(CO,[["__scopeId","data-v-fc875b55"]]),rr=document.createElement("video");rr.style.position="absolute";rr.style.top="-500px";rr.style.left="-500px";rr.style.width="500px";rr.style.height="500px";rr.style.zIndex="-1000";document.body.appendChild(rr);const Qn=ce("error"),Ta=async()=>{if(Qn.value=="error"||Qn.value=="loading")return!1;await rr.requestPictureInPicture()},fy=()=>{const e=kt(),t=ns();let n;const s=async o=>{if(!t.player.pictureInPicture||e.song.id<0)return!1;n==null||n.terminate(),n=new Worker("/assets/ffmpeg/ffmpeg-worker-mp4.js"),Qn.value="loading",console.log("loading new cover",o);const u=await(await fetch(o)).blob(),c=URL.createObjectURL(u);rr.src="";const f="t.jpg",p=[],h=new Image;h.src=c,h.style.width="100%",h.style.height="100%",h.onload=()=>{const w=document.createElement("canvas");w.width=h.width,w.height=h.height,w.getContext("2d").drawImage(h,0,0);const R=w.toDataURL("image/jpeg",1),O=g(R);p.push({name:f,data:O}),console.log("loaded image",p),requestAnimationFrame(y)};function g(w){var x=w.replace(/^data[^,]+,/,""),R=window.atob(x),O=R.length,L=new Uint8Array(new ArrayBuffer(O));for(let S=0;S{rr.src=webkitURL.createObjectURL(w)}};return Xe(()=>t.player.pictureInPicture,async o=>{console.log("pictureInPicture enabled",o),o?(fy(),o=!0,Qn.value="error",await s(e.song.cover)):(n==null||n.terminate(),o=!1,Qn.value="error")}),t.player.pictureInPicture?(Xe(()=>e.song.cover,s),!0):!1},TO=Le({__name:"Card",props:{withHover:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){return(t,n)=>(B(),ne("div",{class:$e([{withHover:e.withHover,disabled:e.disabled},"card"])},[xs(t.$slots,"default",{},void 0,!0)],2))}}),dy=tt(TO,[["__scopeId","data-v-04b9eb92"]]),PO={class:"message"},RO={key:0,class:"details"},kO=Le({__name:"ClosableNotification",props:{notification:{type:Object,required:!0}},emits:["remove"],setup(e,{emit:t}){const n=e,s=t,o=wl(),a=c=>{s("remove",c)},u=()=>{s("remove",n.notification.id),n.notification.onClick&&n.notification.onClick(),console.log(n.notification.redirect),n.notification.redirect&&o.push(n.notification.redirect)};return(c,f)=>(B(),Fe(dy,{class:$e([{[e.notification.type]:!0,"cursor-pointer":e.notification.redirect||e.notification.onClick},"notification"]),onClick:gt(u,["stop","prevent"])},{default:xt(()=>[F("div",PO,[F("h4",null,Se(e.notification.message),1),e.notification.details?(B(),ne("span",RO,Se(e.notification.details),1)):xe("",!0)]),F("span",{class:"material-symbols-rounded close",onClick:f[0]||(f[0]=gt(p=>a(e.notification.id),["stop","prevent"]))}," close ")]),_:1},8,["class"]))}}),OO=tt(kO,[["__scopeId","data-v-d73e5174"]]),IO={class:"message"},MO={key:0,class:"details"},LO={class:"yes-no"},NO=Le({__name:"YesNoNotification",props:{notification:{type:Object,required:!0}},emits:["remove"],setup(e,{emit:t}){const n=e,s=t,o=wl(),a=()=>{s("remove",n.notification.id),n.notification.onNo&&n.notification.onNo()},u=()=>{s("remove",n.notification.id),n.notification.onYes&&n.notification.onYes()},c=()=>{s("remove",n.notification.id),n.notification.onClick&&n.notification.onClick(),n.notification.redirect&&o.push(n.notification.redirect)};return(f,p)=>(B(),Fe(dy,{class:"notification",onClick:gt(c,["stop","prevent"])},{default:xt(()=>[F("div",IO,[F("h4",null,Se(e.notification.message),1),e.notification.details?(B(),ne("span",MO,Se(e.notification.details),1)):xe("",!0)]),F("div",LO,[F("div",{class:"yes option",onClick:gt(u,["stop","prevent"])},p[0]||(p[0]=[F("span",{class:"material-symbols-rounded"}," check ",-1)])),F("div",{class:"no option",onClick:gt(a,["stop","prevent"])},p[1]||(p[1]=[F("span",{class:"material-symbols-rounded"}," close ",-1)]))])]),_:1}))}}),DO=tt(NO,[["__scopeId","data-v-78dd507a"]]),$O={class:"notifications"},FO=Le({__name:"NotificationHandler",setup(e){const t=["success","error","info","warning"],n=ce([]),s=u=>{n.value.push(u),u.timeout&&setTimeout(()=>{var c;(c=u.onTimeout)==null||c.call(u),o(u.id)},u.timeout)},o=u=>{n.value=n.value.filter(c=>c.id!=u)},a=()=>{n.value=[]};return window.addEventListener("notification.add",u=>{const c=u.detail;s(c)}),window.addEventListener("notification.remove",u=>{const c=u.detail;o(c)}),window.addEventListener("notification.clear",()=>{a()}),(u,c)=>(B(),ne("div",$O,[(B(!0),ne(Ve,null,ir(n.value,f=>(B(),ne(Ve,{key:f.id},[t.includes(f.type)?(B(),Fe(OO,{key:0,notification:f,onRemove:o},null,8,["notification"])):f.type=="yes-no"?(B(),Fe(DO,{key:1,notification:f,onRemove:o},null,8,["notification"])):xe("",!0)],64))),128))]))}}),BO=tt(FO,[["__scopeId","data-v-d6b475e7"]]);function HO(e){const t=3.999843853973347,n=1681.974450955533,s=.7071752369554196,o=Math.tan(Math.PI*n/e),a=Math.pow(10,t/20),u=Math.pow(a,.4996667741545416),c=1+o/s+o*o,f=2*(o*o-1)/c,p=(1-o/s+o*o)/c,h=(a+u*o/s+o*o)/c,g=2*(o*o-a)/c,y=(a-u*o/s+o*o)/c;return{numerators:[h,g,y],denominators:[1,f,p]}}function VO(e){const t=38.13547087602444,n=.5003270373238773,s=Math.tan(Math.PI*t/e),o=2*(s*s-1)/(1+s/n+s*s),a=(1-s/n+s*s)/(1+s/n+s*s);return{numerators:[1,-2,1],denominators:[1,o,a]}}function WO(e){if("createIIRFilter"in e){const t=HO(e.sampleRate);return e.createIIRFilter(t.numerators,t.denominators)}else{const t=e.createBiquadFilter();return t.type="highshelf",t.frequency.value=1500,t.gain.value=4,t}}function UO(e){if("createIIRFilter"in e){const t=VO(e.sampleRate);return e.createIIRFilter(t.numerators,t.denominators)}else{const t=e.createBiquadFilter();return t.type="highpass",t.frequency.value=38,t.Q.value=-6,t}}var qO={on:function(e,t){(this._listeners[e]=this._listeners[e]||[]).push(t)},off:function(e,t){if(!e){this._listeners={};return}t?this._listeners[e]=(this._listeners[e]||[]).filter(n=>n!==t):delete this._listeners[e]},trigger:function(e,t){(this._listeners[e]||[]).forEach(n=>{n({type:e,data:t})})}};class KO{constructor(t,n,s){this.source=t.source,this.context=this.source.context,this.name=n,this.uri=s,this.node.then(o=>{o.port.onmessage=function(a){t.trigger(a.data.type,a.data)}})}get node(){return this._node?this._node:(this._node=new Promise((t,n)=>this.context.audioWorklet.addModule(this.uri).then(()=>t(new AudioWorkletNode(this.context,this.name))).catch(n)),this._node)}message(t){this.node.then(n=>n.port.postMessage(t))}}class GO{constructor(t,n){this.source=t.source,this.context=this.source.context,this.worker=new Worker(n),this.node.then(s=>{s.onaudioprocess=o=>{const a=[];for(var u=0;u{t.trigger(s.data.type,s.data)}}get node(){return this._node?this._node:(this._node=new Promise((t,n)=>{t(this._createNode(1024,this.source.channelCount,this.source.channelCount))}),this._node)}message(t){this.worker.postMessage(t)}_createNode(){return(this.context.createScriptProcessor||this.context.createJavaScriptNode).apply(this.context,arguments)}}class jO{constructor(t,n){this.source=t.source,this.context=this.source.context,this.worker=new Worker(n),this.worker.onmessage=s=>{t.trigger(s.data.type,s.data)}}message(t){this.worker.postMessage(t)}get node(){return this._node?this._node:(this._node=new Promise((t,n)=>{t(this.context.createGain())}),this._node)}}const zO=!1;function YO({context:e,source:t,controller:n}){const s=JO(n);return s.node.then(o=>{o.connect(e.destination),t.connect(o)}),s}function JO(e){return e.offline?new jO(e,e.workerUri):"AudioWorkletNode"in window&&zO?new KO(e,"needles-worklet",e.workletUri):new GO(e,e.workerUri)}class XO extends Error{constructor(t){super(t),this.name="InvalidStateError"}}const ZO=window.OfflineAudioContext||window.webkitOfflineAudioContext;class QO{constructor(t){this.state="inactive",this._listeners={},Object.assign(this,qO),this.workerUri=t.workerUri,this.workletUri=t.workletUri,this.source=t.source,this.weightedSource=t.weightedSource,this.context=this.source.context,this.offline=this.context instanceof ZO,this.workerAdapter.message({type:"initialize",attributes:{sampleRate:this.context.sampleRate,modes:t.modes}})}get workerAdapter(){return this._workerAdapter=this._workerAdapter||new YO({controller:this,context:this.context,source:this.weightedSource||this.source})}input(t){const s=t.length,o=t.numberOfChannels;this.offline&&this.workerAdapter.message({type:"set",key:"duration",value:t.duration*1e3});for(var a=0;athis.input(t)))}pause(){this.state==="inactive"&&this._throwInvalidStateErrorFor("pause"),this.state="paused",this.workerAdapter.message({type:"pause"})}resume(){this.state==="inactive"&&this._throwInvalidStateErrorFor("resume"),this.state="recording",this.workerAdapter.message({type:"resume"})}stop(){this.state==="inactive"&&this._throwInvalidStateErrorFor("stop"),this.state="inactive",this.workerAdapter.message({type:"stop"})}reset(){this.workerAdapter.message({type:"reset"})}_startRendering(){return new Promise((t,n)=>{this.context.startRendering(),this.context.addEventListener("complete",s=>{t(s.renderedBuffer)})})}_throwInvalidStateErrorFor(t){throw new XO(`Failed to execute '${t}' on 'Needles': The Needles's state is '${this.state}'.`)}}function e3(e){e.modes=e.modes||["momentary","short-term","integrated"];const t=e.source.context,n=WO(t),s=UO(t);return e.source.connect(n),n.connect(s),new QO({...e,weightedSource:s})}let tc=0;const t3=1,n3=.1,hg=(e,t)=>{var n=s3(e,t);n.angle-=.78539816;var s=i3(n.radius,n.angle);return{x:s.x,y:s.y}},r3=(e,t)=>{var n=-1,s=Math.atan2(e,t);return n*s},s3=(e,t)=>{var n=Math.sqrt(e*e+t*t),s=Math.atan2(t,e);return{radius:n,angle:s}},i3=(e,t)=>{var n=e*Math.sin(t),s=e*Math.cos(t);return{x:n,y:s}},o3=(e,t)=>{const n=[];return n.push(new Float32Array(t.frequencyBinCount)),t.getFloatTimeDomainData(n[0]),n.push(new Float32Array(e.frequencyBinCount)),e.getFloatTimeDomainData(n[1]),n},a3=e=>{const t=(a,u)=>{var c=a;return a>u?c-=n3*(a-u):c+=t3*(u-a),c};for(var n=0,s,o=0;o1&&(n=1),n<-1&&(n=-1),tc=t(tc,n),tc},l3=e=>{var t=e[1]?e[1][0]:0;let n=hg(t,e[0][0]);const s=[];s.push({x:n.x,y:n.y});for(var o=1;o({stereo:{left:0,right:0,correlation:0,field:[],_analyserL:null,_analyserR:null},tonalBalance:{data:null,_analyser:null},truePeak:{left:-1/0,right:-1/0},loudness:{momentary:-1/0,maxMomentary:-1/0,shortterm:-1/0,integrated:-1/0},_meter:null}),actions:{_reset(){this.stereo.left=0,this.stereo.right=0,this.truePeak.left=-1/0,this.truePeak.right=-1/0,this.loudness.momentary=-1/0,this.loudness.maxMomentary=-1/0,this.loudness.shortterm=-1/0,this.loudness.integrated=-1/0},setSource(e,t){var s,o;this._meter=new e3({source:e,workerUri:"/assets/needles/needles-worker.js"}),(s=this._meter)==null||s.start(),(o=this._meter)==null||o.pause(),this.stereo.analyserL=t.createAnalyser(),this.stereo.analyserR=t.createAnalyser(),this.tonalBalance.analyser=t.createAnalyser(),this.tonalBalance.analyser.fftSize=256,e.connect(this.tonalBalance.analyser),this.tonalBalance.data=new Uint8Array(this.tonalBalance.analyser.frequencyBinCount);var n=t.createChannelSplitter(2);e.connect(n),n.connect(this.stereo.analyserR,1),n.connect(this.stereo.analyserL,0),this._stereo()},_stereo(){const e=window.location.pathname,t=new Float32Array(this.stereo.analyserR.fftSize),n=new Float32Array(this.stereo.analyserL.fftSize),s=()=>{if(e!=="/player/insights"){window.requestAnimationFrame(s);return}this.tonalBalance.analyser.getByteFrequencyData(this.tonalBalance.data),this.stereo.analyserR.getFloatTimeDomainData(t),this.stereo.analyserL.getFloatTimeDomainData(n);let o=0,a=0;for(const u of t)o+=u*u;for(const u of n)a+=u*u;this.stereo.right=Math.sqrt(o/t.length),this.stereo.left=Math.sqrt(a/n.length),this.stereo.data=o3(this.stereo.analyserL,this.stereo.analyserR),this.stereo.correlation=a3(this.stereo.data),this.stereo.field=l3(this.stereo.data),window.requestAnimationFrame(s)};window.requestAnimationFrame(s)},initialise(){const e=kt();Xe(()=>e.song,()=>{var t,n;this._reset(),(t=this._meter)==null||t.reset(),(n=this._meter)==null||n.on("dataavailable",s=>this._setLoudness(s.data.mode,s.data.value))}),Xe(()=>e.playing,()=>{var t,n;e.playing?(t=this._meter)==null||t.resume():(n=this._meter)==null||n.pause()})},_setLoudness(e,t){switch(e){case"momentary":this.loudness.momentary=t,this.loudness.maxMomentary=Math.max(this.loudness.maxMomentary,t);break;case"short-term":this.loudness.shortterm=t;break;case"integrated":this.loudness.integrated=t;break}}}}),u3=()=>{kt().initialise(),nn().fetchPlaylists(),xl().initialise(),yf().initialise(),sy.restoreTheme()},c3=async()=>await(await fetch("/api/config/first-time")).json(),w5=async(e,t)=>{await fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:e,secret:t})})},f3=async()=>{const e=await fetch("/api/spotify/authorise");return e.status==200?(Er.addYesNo("Do you want to authorise reAudioPlayer ONE to access your Spotify account?","You will be redirected to Spotify to authorise reAudioPlayer ONE to access your account.",null,async()=>{window.location.href=(await e.text()).replace("{origin}",window.location.origin)}),!1):e.status==204},x5=async()=>await(await fetch("/api/config")).json(),S5=async e=>{await fetch("/api/config",{method:"PUT",body:JSON.stringify(e)})},d3={class:"sidebar drop-shadow-xl"},h3={class:"static"},p3={key:0},g3={key:0,class:"hideIfMobile"},m3={class:"playlistList hideIfMobile"},v3=["src"],y3=Le({__name:"Sidebar",setup(e){const t=kt(),n=nn(),s=Pe(()=>t.song.cover),o=Pe(()=>n.playlists),a=ns();return(u,c)=>(B(),ne("div",d3,[F("div",h3,[te(Zn,{hasChildSites:!0,minimised:"",href:"/collection/playlists",icon:"library_music",name:"Your Library",parentHref:"/collection"}),te(Zn,{minimised:"",href:"/preferences",icon:"settings",name:"Settings",class:"showIfMobile"}),te(Zn,{minimised:"",href:"/discover",icon:"explore",name:"Discover",class:"hideIfMobile"}),K(a).sidebar.news||K(a).sidebar.sports?(B(),ne("br",p3)):xe("",!0),K(a).sidebar.news?(B(),Fe(Zn,{key:1,hasChildSites:!0,minimised:"",href:"/news",icon:"newspaper",name:"News"})):xe("",!0),K(a).sidebar.sports?(B(),Fe(Zn,{key:2,hasChildSites:!0,minimised:"",href:"/sports",icon:"sports_soccer",name:"Sports"})):xe("",!0),c[1]||(c[1]=F("br",{class:"hideIfMobile"},null,-1)),te(Zn,{minimised:"",class:"hideIfMobile",href:"/playlist/create",icon:"add_circle",name:"Create Playlist"})]),o.value.length?(B(),ne("hr",g3)):xe("",!0),F("div",m3,[(B(!0),ne(Ve,null,ir(o.value.filter(f=>f.type!="special"),(f,p)=>(B(),Fe(Zn,{key:p,href:f.href,img:f.cover,minimised:"",name:f.name},null,8,["href","img","name"]))),128))]),K(a).player.expandedCover?(B(),ne("img",{key:1,src:s.value,class:"cover hideIfMobile",onClick:c[0]||(c[0]=f=>K(a).player.expandedCover=!1)},null,8,v3)):xe("",!0)]))}}),hy=tt(y3,[["__scopeId","data-v-3f7537e5"]]),_3={name:"Body",data(){return{maximised:!1}},methods:{onMaximiseChange(e){this.maximised=e,this.$emit("maximise",e)}}};function b3(e,t,n,s,o,a){const u=ws("router-view");return B(),ne("div",{class:$e(["body",{maximised:o.maximised}])},[te(u,{onMaximise:a.onMaximiseChange,class:"view"},null,8,["onMaximise"])],2)}const py=tt(_3,[["render",b3],["__scopeId","data-v-f3a65fee"]]),w3={class:"html-audio"},x3=["src"],S3=Le({__name:"HtmlAudio",setup(e,{expose:t}){const n=kt(),s=yf(),o=ce(null);let a=!1;Mt(()=>{o.value.src=null,o.value.src=n.stream,o.value.load(),o.value.onloadedmetadata=()=>{o.value&&(n.setDuration(o.value.duration),(a||n.playing)&&(c(),a=!1))}}),Xe(()=>n.song.id,()=>{o.value.paused||(a=!0),o.value.src=null,o.value.src=n.stream,o.value.load(),n.setPlaying(!o.value.paused)});const u=()=>{a=!0,n.onSongEnded()},c=()=>{try{o.value.play()}catch{}},f=()=>{o.value.pause()},p=m=>{o.value.currentTime=m},h=m=>{let w=m/100;w=Math.min(Math.max(w,0),1),o.value.volume=w},g=m=>{o.value.muted=m};return Mt(()=>{h(n.volume);var m=window.AudioContext,w=new m,x=w.createMediaElementSource(o.value);x.connect(w.destination),s.setSource(x,w)}),t({play:c,pause:f,seek:p,setVolume:h,setMute:g}),(m,w)=>(B(),ne("div",w3,[F("audio",{ref_key:"audio",ref:o,src:K(n).stream,onEnded:u,onPause:w[0]||(w[0]=x=>K(n).setPlaying(!1)),onPlay:w[1]||(w[1]=x=>K(n).setPlaying(!0)),onTimeupdate:w[2]||(w[2]=x=>{var R;return K(n).setProgress((R=o.value)==null?void 0:R.currentTime)})},null,40,x3)]))}}),E3={props:{modelValue:{type:Number,required:!0},max:{type:Number,default:100}},watch:{modelValue(){this.value=this.modelValue}},computed:{percentage(){return Math.min(1,this.value/this.max)*100}},methods:{seek(e,t=!1){const n=this.$el.getBoundingClientRect(),s=e.clientX-n.left,o=this.$el.offsetWidth;this.value=s/o*this.max,t||(this.seeking=!1,this.$emit("change",this.value),this.$emit("update:modelValue",this.value))}},data(){return{hover:!1,value:this.modelValue||0,seeking:!1}},mounted(){window.addEventListener("mouseup",e=>{this.seeking&&(this.seeking=!1,this.seek(e))}),window.addEventListener("mousemove",e=>{this.seeking&&this.seek(e,!0)})}},C3={class:"progressBar__track"};function A3(e,t,n,s,o,a){return B(),ne("div",{ref:"el",class:"progressBar",onMousedown:t[0]||(t[0]=u=>o.seeking=!0),onDragover:t[1]||(t[1]=gt(()=>{},["stop"])),onClick:t[2]||(t[2]=(...u)=>a.seek&&a.seek(...u)),onMouseenter:t[3]||(t[3]=u=>o.hover=!0),onMouseleave:t[4]||(t[4]=u=>o.hover=!1)},[F("div",C3,[F("div",{class:$e([{hover:o.hover},"progressBar__progress"]),style:sr({width:`${a.percentage}%`})},null,6)])],544)}const nc=tt(E3,[["render",A3],["__scopeId","data-v-a9b735d7"]]),T3={class:"dropdown"},P3=["onClick"],R3={class:"material-symbols-rounded"},k3={key:0,class:"material-symbols-rounded"},O3=Le({__name:"IconDropdown",props:{modelValue:{type:String,required:!0},icon:{type:String,required:!0},options:{type:Array,required:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,s=ce(n.options),o=ce(n.modelValue),a=ce(!1),u=t;Xe(n,p=>{o.value=p.modelValue,s.value=p.options},{deep:!0});const c=p=>{o.value=p,u("update:modelValue",p),a.value=!1},f=ce(null);return Xe(a,p=>{qn(()=>{if(p){const h=f.value.getBoundingClientRect();window.innerHeight-h.top>h.height?(f.value.style.top="100%",f.value.style.bottom="auto"):(f.value.style.top="auto",f.value.style.bottom="100%"),h.left<0?(f.value.style.left="0",f.value.style.right="auto"):h.right>window.innerWidth&&(f.value.style.left="auto",f.value.style.right="0")}})}),document.addEventListener("click",()=>{a.value=!1}),(p,h)=>(B(),ne("div",T3,[F("span",{class:"dropdown__selected material-symbols-rounded ms-wght-400",onClick:h[0]||(h[0]=gt(g=>a.value=!a.value,["stop"]))},Se(e.icon),1),a.value?(B(),ne("div",{key:0,ref_key:"trueDropdown",ref:f,class:$e([{expanded:a.value},"dropdown__options"])},[(B(!0),ne(Ve,null,ir(s.value,g=>(B(),ne("div",{key:g.value,class:"dropdown__option",onClick:gt(y=>c(g.value),["stop"])},[F("span",R3,Se(g.icon),1),F("span",null,Se(g.label),1),o.value==g.value?(B(),ne("span",k3,"check")):xe("",!0)],8,P3))),128))],2)):xe("",!0)]))}}),rc=tt(O3,[["__scopeId","data-v-5756bf60"]]),I3={class:"loader"},M3=Le({__name:"Spinner",setup(e){const t=ce(null);return Mt(()=>{var a,u;const s=((a=t.value)==null?void 0:a.clientWidth)??0,o=8/80;for(const c of((u=t.value)==null?void 0:u.children)??[])c.style.width=`${s*.8}px`,c.style.height=`${s*.8}px`,c.style.borderWidth=`${s*o}px`,c.style.margin=`${s*o}px`}),(n,s)=>(B(),ne("span",I3))}}),pg=tt(M3,[["__scopeId","data-v-ed1fd951"]]);function jt(e,t,n,s){return new(n||(n=Promise))(function(o,a){function u(p){try{f(s.next(p))}catch(h){a(h)}}function c(p){try{f(s.throw(p))}catch(h){a(h)}}function f(p){var h;p.done?o(p.value):(h=p.value,h instanceof n?h:new n(function(g){g(h)})).then(u,c)}f((s=s.apply(e,t||[])).next())})}class Co{constructor(){this.listeners={}}on(t,n,s){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(n),s==null?void 0:s.once){const o=()=>{this.un(t,o),this.un(t,n)};return this.on(t,o),o}return()=>this.un(t,n)}un(t,n){var s;(s=this.listeners[t])===null||s===void 0||s.delete(n)}once(t,n){return this.on(t,n,{once:!0})}unAll(){this.listeners={}}emit(t,...n){this.listeners[t]&&this.listeners[t].forEach(s=>s(...n))}}const Pa={decode:function(e,t){return jt(this,void 0,void 0,function*(){const n=new AudioContext({sampleRate:t});return n.decodeAudioData(e).finally(()=>n.close())})},createBuffer:function(e,t){return typeof e[0]=="number"&&(e=[e]),function(n){const s=n[0];if(s.some(o=>o>1||o<-1)){const o=s.length;let a=0;for(let u=0;ua&&(a=c)}for(const u of n)for(let c=0;ce==null?void 0:e[n],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function gy(e,t){const n=t.xmlns?document.createElementNS(t.xmlns,e):document.createElement(e);for(const[s,o]of Object.entries(t))if(s==="children")for(const[a,u]of Object.entries(t))typeof u=="string"?n.appendChild(document.createTextNode(u)):n.appendChild(gy(a,u));else s==="style"?Object.assign(n.style,o):s==="textContent"?n.textContent=o:n.setAttribute(s,o.toString());return n}function gg(e,t,n){const s=gy(e,t||{});return n==null||n.appendChild(s),s}var L3=Object.freeze({__proto__:null,createElement:gg,default:gg});const N3={fetchBlob:function(e,t,n){return jt(this,void 0,void 0,function*(){const s=yield fetch(e,n);if(s.status>=400)throw new Error(`Failed to fetch ${e}: ${s.status} (${s.statusText})`);return function(o,a){jt(this,void 0,void 0,function*(){if(!o.body||!o.headers)return;const u=o.body.getReader(),c=Number(o.headers.get("Content-Length"))||0;let f=0;const p=g=>jt(this,void 0,void 0,function*(){f+=(g==null?void 0:g.length)||0;const y=Math.round(f/c*100);a(y)}),h=()=>jt(this,void 0,void 0,function*(){let g;try{g=yield u.read()}catch{return}g.done||(p(g.value),yield h())});h()})}(s.clone(),t),s.blob()})}};class D3 extends Co{constructor(t){super(),this.isExternalMedia=!1,t.media?(this.media=t.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),t.mediaControls&&(this.media.controls=!0),t.autoplay&&(this.media.autoplay=!0),t.playbackRate!=null&&this.onMediaEvent("canplay",()=>{t.playbackRate!=null&&(this.media.playbackRate=t.playbackRate)},{once:!0})}onMediaEvent(t,n,s){return this.media.addEventListener(t,n,s),()=>this.media.removeEventListener(t,n,s)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){const t=this.getSrc();t.startsWith("blob:")&&URL.revokeObjectURL(t)}canPlayType(t){return this.media.canPlayType(t)!==""}setSrc(t,n){const s=this.getSrc();if(t&&s===t)return;this.revokeSrc();const o=n instanceof Blob&&(this.canPlayType(n.type)||!t)?URL.createObjectURL(n):t;try{this.media.src=o}catch{this.media.src=t}}destroy(){this.media.pause(),this.isExternalMedia||(this.media.remove(),this.revokeSrc(),this.media.src="",this.media.load())}setMediaElement(t){this.media=t}play(){return jt(this,void 0,void 0,function*(){return this.media.play()})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(t){this.media.currentTime=t}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(t){this.media.volume=t}getMuted(){return this.media.muted}setMuted(t){this.media.muted=t}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(t,n){n!=null&&(this.media.preservesPitch=n),this.media.playbackRate=t}getMediaElement(){return this.media}setSinkId(t){return this.media.setSinkId(t)}}class ui extends Co{constructor(t,n){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.subscriptions=[],this.options=t;const s=this.parentFromOptionsContainer(t.container);this.parent=s;const[o,a]=this.initHtml();s.appendChild(o),this.container=o,this.scrollContainer=a.querySelector(".scroll"),this.wrapper=a.querySelector(".wrapper"),this.canvasWrapper=a.querySelector(".canvases"),this.progressWrapper=a.querySelector(".progress"),this.cursor=a.querySelector(".cursor"),n&&a.appendChild(n),this.initEvents()}parentFromOptionsContainer(t){let n;if(typeof t=="string"?n=document.querySelector(t):t instanceof HTMLElement&&(n=t),!n)throw new Error("Container not found");return n}initEvents(){const t=n=>{const s=this.wrapper.getBoundingClientRect(),o=n.clientX-s.left,a=n.clientY-s.top;return[o/s.width,a/s.height]};if(this.wrapper.addEventListener("click",n=>{const[s,o]=t(n);this.emit("click",s,o)}),this.wrapper.addEventListener("dblclick",n=>{const[s,o]=t(n);this.emit("dblclick",s,o)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollContainer.addEventListener("scroll",()=>{const{scrollLeft:n,scrollWidth:s,clientWidth:o}=this.scrollContainer,a=n/s,u=(n+o)/s;this.emit("scroll",a,u,n,n+o)}),typeof ResizeObserver=="function"){const n=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{n().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){const t=this.parent.clientWidth;t===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=t,this.reRender())}initDrag(){this.subscriptions.push(function(t,n,s,o,a=3,u=0,c=100){if(!t)return()=>{};const f=matchMedia("(pointer: coarse)").matches;let p=()=>{};const h=g=>{if(g.button!==u)return;g.preventDefault(),g.stopPropagation();let y=g.clientX,m=g.clientY,w=!1;const x=Date.now(),R=k=>{if(k.preventDefault(),k.stopPropagation(),f&&Date.now()-xa||Math.abs($)>a){const q=t.getBoundingClientRect(),{left:le,top:J}=q;w||(s==null||s(y-le,m-J),w=!0),n(Y,$,W-le,U-J),y=W,m=U}},O=k=>{if(w){const W=k.clientX,U=k.clientY,Y=t.getBoundingClientRect(),{left:$,top:q}=Y;o==null||o(W-$,U-q)}p()},L=k=>{k.relatedTarget&&k.relatedTarget!==document.documentElement||O(k)},S=k=>{w&&(k.stopPropagation(),k.preventDefault())},T=k=>{w&&k.preventDefault()};document.addEventListener("pointermove",R),document.addEventListener("pointerup",O),document.addEventListener("pointerout",L),document.addEventListener("pointercancel",L),document.addEventListener("touchmove",T,{passive:!1}),document.addEventListener("click",S,{capture:!0}),p=()=>{document.removeEventListener("pointermove",R),document.removeEventListener("pointerup",O),document.removeEventListener("pointerout",L),document.removeEventListener("pointercancel",L),document.removeEventListener("touchmove",T),setTimeout(()=>{document.removeEventListener("click",S,{capture:!0})},10)}};return t.addEventListener("pointerdown",h),()=>{p(),t.removeEventListener("pointerdown",h)}}(this.wrapper,(t,n,s)=>{this.emit("drag",Math.max(0,Math.min(1,s/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!0,this.emit("dragstart",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!1,this.emit("dragend",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))}))}getHeight(t,n){var s;const o=((s=this.audioData)===null||s===void 0?void 0:s.numberOfChannels)||1;if(t==null)return 128;if(!isNaN(Number(t)))return Number(t);if(t==="auto"){const a=this.parent.clientHeight||128;return n!=null&&n.every(u=>!u.overlay)?a/o:a}return 128}initHtml(){const t=document.createElement("div"),n=t.attachShadow({mode:"open"}),s=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return n.innerHTML=` +}`;var De=Kh(function(){return Ze(b,be+"return "+X).apply(n,C)});if(De.source=X,Au(De))throw De;return De}function aS(r){return Qe(r).toLowerCase()}function lS(r){return Qe(r).toUpperCase()}function uS(r,i,l){if(r=Qe(r),r&&(l||i===n))return ed(r);if(!r||!(i=mn(i)))return r;var d=$n(r),v=$n(i),b=td(d,v),C=nd(d,v)+1;return $r(d,b,C).join("")}function cS(r,i,l){if(r=Qe(r),r&&(l||i===n))return r.slice(0,sd(r)+1);if(!r||!(i=mn(i)))return r;var d=$n(r),v=nd(d,$n(i))+1;return $r(d,0,v).join("")}function fS(r,i,l){if(r=Qe(r),r&&(l||i===n))return r.replace(Al,"");if(!r||!(i=mn(i)))return r;var d=$n(r),v=td(d,$n(i));return $r(d,v).join("")}function dS(r,i){var l=q,d=le;if(mt(i)){var v="separator"in i?i.separator:v;l="length"in i?Me(i.length):l,d="omission"in i?mn(i.omission):d}r=Qe(r);var b=r.length;if(Is(r)){var C=$n(r);b=C.length}if(l>=b)return r;var P=l-Ms(d);if(P<1)return d;var M=C?$r(C,0,P).join(""):r.slice(0,P);if(v===n)return M+d;if(C&&(P+=M.length-P),Tu(v)){if(r.slice(P).search(v)){var G,j=M;for(v.global||(v=Ul(v.source,Qe(xf.exec(v))+"g")),v.lastIndex=0;G=v.exec(j);)var X=G.index;M=M.slice(0,X===n?P:X)}}else if(r.indexOf(mn(v),P)!=P){var ae=M.lastIndexOf(v);ae>-1&&(M=M.slice(0,ae))}return M+d}function hS(r){return r=Qe(r),r&&Ey.test(r)?r.replace(_f,W0):r}var pS=Hs(function(r,i,l){return r+(l?" ":"")+i.toUpperCase()}),ku=Gd("toUpperCase");function qh(r,i,l){return r=Qe(r),i=l?n:i,i===n?$0(r)?K0(r):P0(r):r.match(i)||[]}var Kh=Be(function(r,i){try{return pn(r,n,i)}catch(l){return Au(l)?l:new ke(l)}}),gS=fr(function(r,i){return En(i,function(l){l=jn(l),ur(r,l,Eu(r[l],r))}),r});function mS(r){var i=r==null?0:r.length,l=Ee();return r=i?ht(r,function(d){if(typeof d[1]!="function")throw new Cn(u);return[l(d[0]),d[1]]}):[],Be(function(d){for(var v=-1;++vhe)return[];var l=_t,d=Vt(r,_t);i=Ee(i),r-=_t;for(var v=Hl(d,i);++l0||i<0)?new We(l):(r<0?l=l.takeRight(-r):r&&(l=l.drop(r)),i!==n&&(i=Me(i),l=i<0?l.dropRight(-i):l.take(i-r)),l)},We.prototype.takeRightWhile=function(r){return this.reverse().takeWhile(r).reverse()},We.prototype.toArray=function(){return this.take(_t)},Kn(We.prototype,function(r,i){var l=/^(?:filter|find|map|reject)|While$/.test(i),d=/^(?:head|last)$/.test(i),v=_[d?"take"+(i=="last"?"Right":""):i],b=d||/^find/.test(i);v&&(_.prototype[i]=function(){var C=this.__wrapped__,P=d?[1]:arguments,M=C instanceof We,G=P[0],j=M||Oe(C),X=function(He){var Ke=v.apply(_,Or([He],P));return d&&ae?Ke[0]:Ke};j&&l&&typeof G=="function"&&G.length!=1&&(M=j=!1);var ae=this.__chain__,be=!!this.__actions__.length,Ae=b&&!ae,De=M&&!be;if(!b&&j){C=De?C:new We(this);var Te=r.apply(C,P);return Te.__actions__.push({func:aa,args:[X],thisArg:n}),new An(Te,ae)}return Ae&&De?r.apply(this,P):(Te=this.thru(X),Ae?d?Te.value()[0]:Te.value():Te)})}),En(["pop","push","shift","sort","splice","unshift"],function(r){var i=Mo[r],l=/^(?:push|sort|unshift)$/.test(r)?"tap":"thru",d=/^(?:pop|shift)$/.test(r);_.prototype[r]=function(){var v=arguments;if(d&&!this.__chain__){var b=this.value();return i.apply(Oe(b)?b:[],v)}return this[l](function(C){return i.apply(Oe(C)?C:[],v)})}}),Kn(We.prototype,function(r,i){var l=_[i];if(l){var d=l.name+"";rt.call($s,d)||($s[d]=[]),$s[d].push({name:i,func:l})}}),$s[ea(n,O).name]=[{name:"wrapper",func:n}],We.prototype.clone=h_,We.prototype.reverse=p_,We.prototype.value=g_,_.prototype.at=qb,_.prototype.chain=Kb,_.prototype.commit=Gb,_.prototype.next=jb,_.prototype.plant=Yb,_.prototype.reverse=Jb,_.prototype.toJSON=_.prototype.valueOf=_.prototype.value=Xb,_.prototype.first=_.prototype.head,gi&&(_.prototype[gi]=zb),_},Ls=G0();rs?((rs.exports=Ls)._=Ls,Il._=Ls):Ft._=Ls}).call(YR)}(Wi,Wi.exports)),Wi.exports}var XR=JR();const ZR={class:"flex flex-col"},QR=Le({__name:"InputWithAutoComplete",props:{icon:String,placeholder:String,modelValue:String,onClick:{type:Function,required:!1},suggest:{type:Function,required:!0},clickSuggest:{type:Function,required:!1}},emits:["update:modelValue","change","submit"],setup(e,{expose:t,emit:n}){const s=ce(-1),o=R=>R.key==="ArrowDown"?(s.value++,s.value>=y.value.length&&(s.value=-1),!0):R.key==="ArrowUp"?(s.value===-1&&(s.value=y.value.length),s.value--,s.value<0&&(s.value=-1),!0):R.key==="Enter"&&s.value>=0?(c.clickSuggest(y.value[s.value],R.shiftKey),s.value=-1,y.value=[],!0):!1,a=()=>{y.value=[],w("submit",f.value)},u=()=>{var R,O;(O=(R=h.value)==null?void 0:R.querySelector("input"))==null||O.blur()};document.addEventListener("click",R=>{var O;(O=h.value)!=null&&O.contains(R.target)||(y.value=[],s.value=-1)}),document.addEventListener("keydown",R=>{R.key==="Escape"&&(y.value=[],s.value=-1,u())});const c=e,f=ce(c.modelValue),p=ce(null);Xe(()=>c.modelValue,R=>{f.value=R});const h=ce(null),g=Pe(()=>{var R,O;return{top:h.value.offsetTop+h.value.offsetHeight+"px",left:((R=h.value)==null?void 0:R.offsetLeft)+"px",width:((O=h.value)==null?void 0:O.offsetWidth)+"px"}}),y=ce([]),m=XR.debounce(async()=>{y.value=(await c.suggest(f.value)).slice(0,5)},300),w=n,x=()=>{w("update:modelValue",f.value),w("change",f.value),m()};return t({focus:()=>{var R;(R=p.value)==null||R.focus()},blur:u}),(R,O)=>(B(),ne(Ve,null,[F("div",{ref_key:"inputElement",ref:h,class:"input-with-autocomplete"},[te(Lc,{modelValue:f.value,"onUpdate:modelValue":O[0]||(O[0]=L=>f.value=L),icon:e.icon,placeholder:e.placeholder,onChange:x,onSubmit:a,onKeyUp:o,expanded:y.value.length>0,ref_key:"input",ref:p},null,8,["modelValue","icon","placeholder","expanded"])],512),y.value.length>0?(B(),Fe(hi,{key:0,to:"#autocomplete-target"},[F("div",{class:"suggestions absolute w-full z-10",style:sr(g.value),onClick:O[1]||(O[1]=gt(L=>y.value=[],["stop"]))},[F("div",ZR,[(B(!0),ne(Ve,null,ir(y.value,(L,S)=>xs(R.$slots,"default",{selected:S===s.value,value:L},void 0,!0)),256))])],4)])):xe("",!0)],64))}}),ek=tt(QR,[["__scopeId","data-v-9be27f78"]]),tk={},nk={class:"loader"};function rk(e,t){return B(),ne("div",nk,t[0]||(t[0]=[Qm('
',1)]))}const iy=tt(tk,[["render",rk],["__scopeId","data-v-cf68f823"]]),sk={key:1},ik=Le({__name:"IconButton",props:{icon:{type:String,required:!1},label:{type:String,required:!0},disabled:{type:Boolean,required:!1,default:!1},type:{type:String,required:!1,default:"negative"}},setup(e){return(t,n)=>(B(),ne("button",{class:$e([(e.disabled?"disabled ":"")+e.type,"flex items-center justify-center h-12 p-4 mt-4 rounded-full"])},[e.icon?(B(),ne("span",{key:0,class:$e([{"mr-2":e.label},"material-symbols-rounded"])},Se(e.icon),3)):xe("",!0),e.label?(B(),ne("span",sk,Se(e.label),1)):xe("",!0)],2))}}),dg=tt(ik,[["__scopeId","data-v-b68d33f1"]]),ok={class:"header bg-secondary rounded-t-2xl p-3"},ak={class:"title font-black"},lk={key:1},uk={class:"p-4 error"},ck={key:2,class:"p-4 pt-0 flex flex-col overflow-x-hidden overflow-y-auto"},fk={key:0,class:"confirm"},dk=Le({__name:"Template",props:{name:{type:String,required:!0},submit:{type:Object,required:!1},secondary:{type:Object,required:!1,default:null}},emits:["submit","close","secondary"],setup(e,{expose:t,emit:n}){const s=e,o=ce(!1),a=ce(!1),u=ce(""),c=()=>a.value=!1,f=()=>{o.value=!1,a.value=!0},p=()=>{o.value=!0,a.value=!0},h=async(x,R)=>{p();const O=await window.fetch(x,R);return f(),O.ok?O:(u.value=await O.text(),null)},g=n,y=()=>{c(),g("close")},m=()=>{g("submit"),y()},w=()=>{g("secondary"),y()};return t({show:f,hide:c,load:p,fetch:h}),(x,R)=>a.value?(B(),Fe(hi,{key:0,to:"#popup-target"},[F("div",{class:"modal",onClick:R[1]||(R[1]=gt(O=>a.value=!1,["stop"])),onContextmenu:R[2]||(R[2]=gt(()=>{},["stop"])),onDrag:R[3]||(R[3]=gt(()=>{},["stop"]))},[F("div",{class:"modal-content",onClick:R[0]||(R[0]=gt(()=>{},["stop"]))},[F("div",ok,[F("h3",ak,Se(e.name),1),F("button",{class:"modal-close",onClick:y},R[4]||(R[4]=[F("span",{class:"title material-icons-round"}," close ",-1)]))]),o.value?(B(),Fe(iy,{key:0})):u.value?(B(),ne("div",lk,[F("p",uk,Se(u.value),1)])):(B(),ne("div",ck,[xs(x.$slots,"default",{},void 0,!0),s.submit||s.secondary?(B(),ne("div",fk,[s.secondary?(B(),Fe(dg,{key:0,icon:s.secondary.icon,label:s.secondary.label,type:s.secondary.type,onClick:w},null,8,["icon","label","type"])):xe("",!0),s.submit?(B(),Fe(dg,{key:1,icon:s.submit.icon,label:s.submit.label,type:s.submit.type,onClick:m},null,8,["icon","label","type"])):xe("",!0)])):xe("",!0)]))])],32)])):xe("",!0)}}),oy=tt(dk,[["__scopeId","data-v-e243c458"]]),hk={class:"flex flex-row gap-2"},pk={key:0,class:"material-symbols-rounded ms-wght-200"},gk={class:"material-symbols-rounded"},mk=["onClick"],vk={class:"material-symbols-rounded"},yk={key:0,class:"material-symbols-rounded"},_k=Le({__name:"Dropdown",props:{modelValue:{type:String,required:!0},options:{type:Array,required:!0},icon:{type:String,required:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,s=ce(n.modelValue),o=ce(!1),a=t;Xe(n,h=>{s.value=h.modelValue},{deep:!0});const u=h=>{s.value=h,a("update:modelValue",h),o.value=!1},c=Pe(()=>{const h=n.options.find(g=>g.value==s.value);return h?h.label:""}),f=ce(null),p=ce(null);return Xe(o,h=>{qn(()=>{if(h){const g=f.value.getBoundingClientRect(),y=p.value.getBoundingClientRect(),m=y.top,w=y.bottom,x=window.innerHeight-w,R=y.width;f.value.style.width=R+"px",f.value.style.left=y.left+"px",x>g.height?(f.value.style.top=w+"px",f.value.style.bottom="auto"):(f.value.style.top="auto",f.value.style.bottom=m-g.height+"px")}})}),window.addEventListener("click",()=>{o.value=!1}),(h,g)=>(B(),ne("div",{ref_key:"container",ref:p,class:"dropdown"},[F("div",{class:$e([{expanded:o.value},"dropdown__selected"]),onClick:g[0]||(g[0]=gt(y=>o.value=!o.value,["stop"]))},[F("div",hk,[e.icon?(B(),ne("span",pk,Se(e.icon),1)):xe("",!0),F("span",null,Se(c.value),1)]),F("i",gk,Se(o.value?"expand_less":"expand_more"),1)],2),(B(),Fe(hi,{to:"#dropdown-target"},[o.value?(B(),ne("div",{key:0,ref_key:"trueDropdown",ref:f,class:"dropdown__options"},[(B(!0),ne(Ve,null,ir(e.options,y=>(B(),ne("div",{key:y.value,class:"dropdown__option",onClick:gt(m=>u(y.value),["stop"])},[F("span",vk,Se(y.icon),1),F("span",null,Se(y.label),1),s.value==y.value?(B(),ne("span",yk,"check")):xe("",!0)],8,mk))),128))],512)):xe("",!0)]))],512))}}),bk=tt(_k,[["__scopeId","data-v-88b3642d"]]),wk={class:"form flex flex-col gap-4"},xk={class:"content"},Sk=["onClick"],Ek=["accept","onChange"],Ck={key:0,class:"imagePreview"},Ak=["onUpdate:modelValue","type","onChange"],Tk=Le({__name:"Form",props:{options:{type:Array,required:!0}},setup(e,{expose:t}){const n=e;return t({toObject:()=>{const o={};return n.options.forEach(a=>{o[a.name]=a.value}),o}}),(o,a)=>(B(),ne("div",wk,[(B(!0),ne(Ve,null,ir(e.options,u=>(B(),ne("div",{key:u.name,class:"option"},[F("div",xk,[u.type=="upload"?(B(),ne(Ve,{key:0},[F("span",{class:"material-symbols-rounded icon-button",onClick:()=>{var c,f;return(f=(c=o.$refs["upload-"+u.name])==null?void 0:c[0])==null?void 0:f.click()}}," file_upload ",8,Sk),F("input",{ref_for:!0,ref:"upload-"+u.name,accept:u.accept,style:{display:"none"},type:"file",onChange:c=>u==null?void 0:u.onUpload(c.target.files[0])},null,40,Ek),te(Lc,{ref_for:!0,ref:"cover",modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,icon:u.icon,class:"addSong cover",type:"text",label:u.name,placeholder:u.placeholder,onChange:c=>{var f;return(f=u==null?void 0:u.onChange)==null?void 0:f.call(u,u.value)}},null,8,["modelValue","onUpdate:modelValue","icon","label","placeholder","onChange"]),u.imagePreview?(B(),ne("div",Ck,[te(Jr,{src:u.value,class:"cover",onClick:c=>K(cf)(u.value)},null,8,["src","onClick"])])):xe("",!0)],64)):u.type=="dropdown"?(B(),Fe(bk,{key:1,modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,icon:u.icon,options:u.options},null,8,["modelValue","onUpdate:modelValue","icon","options"])):u.type=="text"?(B(),Fe(Lc,{key:2,modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,icon:u.icon,label:u.name,placeholder:u.placeholder,required:u.required,type:u.type,onChange:c=>u.onChange?u==null?void 0:u.onChange(u.value):null},null,8,["modelValue","onUpdate:modelValue","icon","label","placeholder","required","type","onChange"])):ni((B(),ne("input",{key:3,"onUpdate:modelValue":c=>u.value=c,type:u.type,onChange:c=>u.onChange?u==null?void 0:u.onChange(u.value):null},null,40,Ak)),[[vl,u.value]])])]))),128))]))}}),ay=tt(Tk,[["__scopeId","data-v-97bdbd3e"]]),Pk={class:"padding-20 playlisteditor"},Rk={class:"details"},kk={class:"detailswrapper"},Ok=["onClick"],Ik=Le({__name:"TrackInfo",props:{title:{type:String,required:!0},subtitle:{type:String,default:""},cover:{type:String,required:!0},icons:{type:Array,required:!0}},setup(e){return(t,n)=>(B(),ne("div",Pk,[te(Jr,{type:"playlist",name:e.title,src:e.cover,class:"cover"},null,8,["name","src"]),F("div",Rk,[F("div",kk,[(B(!0),ne(Ve,null,ir(e.icons,(s,o)=>(B(),ne("span",{key:o,class:"material-icons-round",onClick:s.onClick},Se(s.name),9,Ok))),128))]),F("h1",null,Se(e.title),1),F("h6",null,Se(e.subtitle),1)])]))}}),ly=tt(Ik,[["__scopeId","data-v-3c71f9f3"]]),Ni=e=>{const t=new CustomEvent("notification.add",{detail:e});window.dispatchEvent(t)},Er={addSuccess(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"success",timeout:n,onClick:s,redirect:o}),a},addError(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"error",timeout:n,onClick:s,redirect:o}),a},addInfo(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"info",timeout:n,onClick:s,redirect:o}),a},addWarning(e,t,n,s,o){const a=Math.random().toString(36).substring(7);return Ni({id:a,message:e,details:t,type:"warning",timeout:n,onClick:s,redirect:o}),a},addYesNo(e,t,n,s,o,a,u,c){const f=Math.random().toString(36).substring(7);return Ni({id:f,message:e,details:t,type:"yes-no",timeout:n,onYes:s,onNo:o,onTimeout:a,onClick:u,redirect:c}),f},remove(e){const t=new CustomEvent("notification.remove",{detail:e});window.dispatchEvent(t)},clear(){const e=new CustomEvent("notification.clear");window.dispatchEvent(e)}},uy=Le({__name:"ImportSpotifySong",props:{song:{type:Object,required:!0}},setup(e,{expose:t}){const n=nn(),s=e,o=ce([{name:"playlist",type:"dropdown",icon:"playlist_add",required:!0,value:null,options:n.playlistsAsDropdown}]),a=ce(null),u=ce(null),c=ce(null),f=async()=>{if(c.value){a.value.show();return}const y=await a.value.fetch("/api/browse/track",{method:"POST",body:JSON.stringify({url:s.song.href??s.song.url})});y&&(a.value.load(),c.value=await y.json(),a.value.show())},p=()=>{const y=new CustomEvent("player.play",{detail:{artist:s.song.artist,title:s.song.title,source:s.song.href}});window.dispatchEvent(y)},h=async y=>{if(y==="new"){const m=await df("classic",s.song.title,s.song.artist,s.song.cover);return o.value[0].options=n.playlistsAsDropdown,o.value[0].value=m,m}return y},g=async(y,m=null)=>{var w,x;m??(m=u.value.toObject().playlist),m=await h(m),await ey(m,c.value),s.song.added=!0,Er.addSuccess(c.value.title,`Added to ${(w=n.playlists.find(R=>R.id==m))==null?void 0:w.name}`,3e3,void 0,(x=n.playlists.find(R=>R.id==m))==null?void 0:x.href)};return t({show:f}),(y,m)=>(B(),Fe(oy,{ref_key:"modal",ref:a,submit:{label:"Add",icon:"add"},name:"Import Song",onClose:m[0]||(m[0]=w=>y.$emit("close")),onSubmit:g},{default:xt(()=>[te(ly,{cover:e.song.cover,icons:[{name:"share",onClick:()=>K(cf)(e.song.href)},{name:"play_arrow",onClick:p}],title:e.song.title},null,8,["cover","icons","title"]),te(ay,{ref_key:"form",ref:u,options:o.value},null,8,["options"])]),_:1},512))}}),Mk={key:0,class:"album"},Lk={key:1,class:"duration"},Nk=Le({__name:"PlaylistHeader",props:{withAlbum:{type:Boolean,required:!1,default:!1},withMore:{type:Boolean,required:!1,default:!1},withoutDuration:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>(B(),ne("div",{class:$e([{withAlbum:e.withAlbum,withMore:e.withMore},"playlist-header"])},[n[1]||(n[1]=F("div",{class:"index text-right"},"#",-1)),n[2]||(n[2]=F("div",{class:"artist-title"}," title ",-1)),e.withAlbum?(B(),ne("div",Mk," album ")):xe("",!0),e.withoutDuration?xe("",!0):(B(),ne("div",Lk,n[0]||(n[0]=[F("span",{class:"material-symbols-rounded"},"schedule",-1)])))],2))}}),Dk=tt(Nk,[["__scopeId","data-v-f8e4524a"]]),$k={name:"Marquee",mounted(){this.update(),window.addEventListener("resize",this.update)},data(){return{isMarquee:!1}},methods:{isTruncated(e){return(e==null?void 0:e.scrollWidth)>(e==null?void 0:e.clientWidth)},update(){this.isMarquee=!1,setTimeout(()=>{this.isMarquee=this.isTruncated(this.$refs.marquee)},10)}}},Fk={key:0,class:"replacer"},Bk={key:0,class:"overlay"};function Hk(e,t,n,s,o,a){return B(),ne("div",{class:$e([{marquee:o.isMarquee},"marqueeWrapper"])},[F("span",{ref:"marquee",class:$e({marquee:o.isMarquee})},[xs(e.$slots,"default",{},void 0,!0),o.isMarquee?(B(),ne("span",Fk,[xs(e.$slots,"default",{},void 0,!0)])):xe("",!0)],2),o.isMarquee?(B(),ne("div",Bk)):xe("",!0)],2)}const Vk=tt($k,[["render",Hk],["__scopeId","data-v-ad7138e8"]]),Wk={class:"artist"},Uk=Le({__name:"ArtistMarquee",props:{artist:{type:String,required:!0}},setup(e){const t=e,n=Pe(()=>t.artist.split(", "));return(s,o)=>{const a=ws("router-link");return B(),Fe(Vk,null,{default:xt(()=>[(B(!0),ne(Ve,null,ir(n.value,u=>(B(),ne("span",Wk,[te(a,{to:"/artist/"+u},{default:xt(()=>[bo(Se(u),1)]),_:2},1032,["to"])]))),256))]),_:1})}}}),cy=tt(Uk,[["__scopeId","data-v-156468cf"]]),qk={key:0,class:"cover"},Kk={class:"artist-title"},Gk={class:"title"},jk={class:"artist"},zk={key:1,class:"album"},Yk=Le({__name:"ExternalEntry",props:{song:{type:Object,required:!0},index:{type:Number,required:!0},withCover:{type:Boolean,required:!1,default:!1},withAlbum:{type:Boolean,required:!1,default:!1},selected:{type:Boolean,required:!1,default:!1},playlistId:{type:Number,required:!1,default:null},canImport:{type:Boolean,required:!1,default:!1}},emits:["update","add"],setup(e,{emit:t}){const n=e,s=t,o=kt(),a=Pe(()=>n.song.id==o.song.id),u=ce(!1);Pe(()=>n.playlistId==null?o.playlist.id:n.playlistId);const c=()=>{XP(n.song.title,n.song.artist,n.song.source||n.song.href)},f=ce(null),p=()=>{n.canImport?f.value.show():s("add")};return(h,g)=>(B(),ne(Ve,null,[e.canImport?(B(),Fe(uy,{key:0,ref_key:"updatePopup",ref:f,song:e.song},null,8,["song"])):xe("",!0),F("div",{class:$e([{playing:a.value,selected:e.selected,hovering:u.value,withCover:e.withCover,withAlbum:e.withAlbum},"playlist-entry"]),onDblclick:c,onMouseenter:g[0]||(g[0]=y=>u.value=!0),onMouseleave:g[1]||(g[1]=y=>u.value=!1)},[F("div",{class:$e([{"material-symbols-rounded":u.value},"index text-right"]),onClick:c},Se(u.value?"play_arrow":e.index+1),3),e.withCover?(B(),ne("div",qk,[te(Jr,{src:e.song.cover,type:"track"},null,8,["src"])])):xe("",!0),F("div",Kk,[F("span",Gk,[(B(),Fe(xm(e.song.href.startsWith("http")?"a":"router-link"),{href:e.song.href,to:e.song.href,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:e.song.title},null,8,["text"])]),_:1},8,["href","to"]))]),F("span",jk,[te(cy,{artist:e.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),e.withAlbum&&!K(Rc)?(B(),ne("div",zk,[te(_r,{text:e.song.album},null,8,["text"])])):xe("",!0),F("div",{class:"icon text-left material-symbols-rounded",onClick:gt(p,["stop"])},Se(e.song.added?"done":"add"),1)],34)],64))}}),Jk=tt(Yk,[["__scopeId","data-v-7207e9cd"]]),Xk={class:"playlist"},Zk={class:"entries"},Qk=Le({__name:"Playlist",props:{songs:{type:Array,required:!0},noCover:{type:Boolean,default:!1}},setup(e){return(t,n)=>(B(),ne("div",Xk,[te(Dk,{"without-duration":""}),n[0]||(n[0]=F("hr",null,null,-1)),F("div",Zk,[(B(!0),ne(Ve,null,ir(e.songs,(s,o)=>(B(),Fe(Jk,{key:s.source,added:s.added,index:o,song:s,title:s.title,"with-cover":!e.noCover,onAdd:a=>t.$emit("add",o)},null,8,["added","index","song","title","with-cover","onAdd"]))),128))])]))}}),eO=tt(Qk,[["__scopeId","data-v-a918d839"]]),tO=Le({__name:"ImportSpotifyAlbum",props:{album:{type:Object,required:!0}},setup(e,{expose:t}){const n=nn(),s=e,o=ce([{name:"playlist",type:"dropdown",icon:"playlist_add",required:!0,value:null,options:n.playlistsAsDropdown}]),a=ce(null),u=ce(null),c=ce([]);let f=null;const p=async()=>{if(c.value.length>0&&f===s.album.id){a.value.show();return}const w=await a.value.fetch(`/api/spotify/albums/${s.album.id}`);if(f=s.album.id,!w){Er.addError("Failed to fetch album from Spotify",w.text,3e3);return}c.value=await w.json()},h=()=>{const w=new CustomEvent("player.play",{detail:{artist:s.album.artist,title:s.album.title,source:s.album.href}});window.dispatchEvent(w)},g=async w=>{if(w==="new"){const x=await df("classic",s.album.title,`${s.album.releaseDate}, ${s.album.artist}`,s.album.cover);return o.value[0].options=n.playlistsAsDropdown,o.value[0].value=x,x}return w},y=async(w,x=null)=>{c.value[w].added||(x??(x=u.value.toObject().playlist),x=await g(x),await ey(x,c.value[w]),c.value[w].added=!0)},m=async()=>{let w=u.value.toObject().playlist;w=await g(w),c.value.forEach((x,R)=>{y(R,w)}),Er.addSuccess(s.album.title,`Added ${c.value.length} songs to ${n.playlists[w].name}`,3e3,void 0,n.playlists[w].href)};return t({show:p}),(w,x)=>(B(),Fe(oy,{ref_key:"modal",ref:a,submit:{label:"Add All",icon:"add"},name:"Import Album",onClose:x[0]||(x[0]=R=>w.$emit("close")),onSubmit:m},{default:xt(()=>[te(ly,{cover:e.album.cover,icons:[{name:"share",onClick:()=>K(cf)(e.album.href)},{name:"play_arrow",onClick:h}],subtitle:e.album.artist,title:e.album.title},null,8,["cover","icons","subtitle","title"]),te(ay,{ref_key:"form",ref:u,options:o.value},null,8,["options"]),x[1]||(x[1]=F("br",null,null,-1)),te(eO,{songs:c.value,noCover:"",onAdd:y},null,8,["songs"])]),_:1},512))}}),nO={class:"info"},rO={class:"flex flex-col flex-1"},sO={class:"name"},iO={key:0,class:"text-muted text-sm"},oO={class:"aux flex items-center text-muted text-sm gap-2"},aO={class:"tag"},lO={class:"material-symbols-rounded tag"},uO=["name"],cO=Le({__name:"SearchResultItem",props:{item:{type:Object,required:!0},large:{type:Boolean,default:!1},noHover:{type:Boolean,default:!1},showDownload:{type:Boolean,default:!1}},setup(e){const t=wl(),n=e,s=Pe(()=>{var O,L,S,T;return((L=(O=n.item)==null?void 0:O.item)==null?void 0:L.cover)??((T=(S=n.item)==null?void 0:S.item)==null?void 0:T.image)}),o=Pe(()=>{var O,L,S,T;return((L=(O=n.item)==null?void 0:O.item)==null?void 0:L.name)??((T=(S=n.item)==null?void 0:S.item)==null?void 0:T.title)}),a=Pe(()=>{var O,L,S,T,k;return((L=(O=n.item)==null?void 0:O.item)==null?void 0:L.artist)??((k=(T=(S=n.item)==null?void 0:S.item)==null?void 0:T.artists)==null?void 0:k.join(", "))}),u=Pe(()=>{var O;return(O=n.item)==null?void 0:O.type}),c=Pe(()=>({song:"music_note",album:"album",artist:"person",playlist:"queue_music",command:"code"})[u.value??"song"]),f=Pe(()=>{var O;return Math.round(((O=n.item)==null?void 0:O.confidence)*1e3)/10}),p=Pe(()=>{var O;return((O=n.item)==null?void 0:O.scope)==="local"}),h=Pe(()=>{var O;return((O=n.item)==null?void 0:O.scope)==="spotify"}),g=Pe(()=>{var O;return((O=n.item)==null?void 0:O.scope)==="audius"}),y=Pe(()=>u.value==="song"&&!p.value&&n.showDownload),m=ce(),w=ce(),x=()=>{u.value==="artist"?t.push(`/artist/${n.item.item.name}`):u.value==="playlist"||u.value==="album"?t.push(n.item.item.href):p.value?u.value==="song"&&t.push(n.item.item.href):h.value?u.value==="song"?m.value.show():u.value==="album"&&w.value.show():g.value&&u.value==="song"&&m.value.show()},R=()=>{xl().downloadViaDownloader({album:n.item.item.album,artist:n.item.item.artist,title:n.item.item.title,source:n.item.item.href,href:n.item.item.href,cover:n.item.item.cover})};return(O,L)=>(B(),ne(Ve,null,[u.value==="song"&&(h.value||g.value)?(B(),Fe(uy,{key:0,ref_key:"importSpotifySong",ref:m,song:n.item.item},null,8,["song"])):xe("",!0),u.value==="album"&&h.value?(B(),Fe(tO,{key:1,ref_key:"importSpotifyAlbum",ref:w,album:n.item.item},null,8,["album"])):xe("",!0),F("div",{class:$e(["item",{large:e.large,noHover:e.noHover}]),onClick:x},[te(Jr,{src:s.value,placeholder:c.value,"with-ambient":""},null,8,["src","placeholder"]),F("div",nO,[F("div",rO,[F("span",sO,Se(o.value),1),a.value?(B(),ne("span",iO,Se(a.value),1)):xe("",!0)]),F("div",oO,[F("span",aO,Se(f.value)+"% ",1),F("span",lO,Se(c.value),1),p.value?xe("",!0):(B(),ne("span",{key:0,name:e.item.scope,class:"uppercase tag"},Se(e.item.scope),9,uO)),y.value?(B(),ne("span",{key:1,class:"material-symbols-rounded tag hover:!highlight hover:text-primary",onClick:gt(R,["stop"])}," file_download ")):xe("",!0)])])],2)],64))}}),fO=tt(cO,[["__scopeId","data-v-9097bc55"]]),b5=["local","spotify","audius"],dO=["song","artist","album","playlist"],hO={class:"header hideIfMobile grid grid-cols-3 justify-between drop-shadow-md"},pO={class:"search flex flex-row"},gO=["onClick"],mO={class:"mr-2 flex flex-row gap-2"},vO=Le({__name:"Header",setup(e){const t=ce(null),n=ce(!1),s=nn(),o=kt(),a=Pe(()=>{if(!t.value)return{};const m=`calc(${t.value.offsetTop}px + 10px)`,w=`calc(${t.value.offsetLeft}px + 10px)`;return{top:m,left:w}});xl().onDownload.push(m=>{n.value=!0,setTimeout(()=>{n.value=!1},500)});const c=(m,w=!1)=>{var x,R;if(w){if(m.type==="song"){o.loadPlaylist("track",m.item.id),(x=g.value)==null||x.blur();return}if(m.type==="playlist"){o.loadPlaylist(m.item.id),(R=g.value)==null||R.blur();return}}if(m.type==="artist"){Xs.push(`/artist/${m.item.name}`);return}Xs.push(m.item.href)},f=()=>{const m=s.playlists.flatMap(x=>x.songs);return m[Math.floor(Math.random()*m.length)]},p=async m=>{if(!m.length)return[];if(m==="/rand"){const R=f();return R?[{type:"command",confidence:1,scope:"local",item:R}]:[]}return["/create","/new"].includes(m)?[{type:"command",confidence:.5,scope:"local",item:{name:"Create classic playlist",href:"/playlist/create?type=classic"}},{type:"command",confidence:.5,scope:"local",item:{name:"Create smart playlist",href:"/playlist/create?type=smart"}}]:(await(await fetch("/api/search",{method:"POST",body:JSON.stringify({query:m,scope:["local",...dO]})})).json()).items};let h=ce("");const g=ce(null);Mt(()=>{h.value=String(Xs.currentRoute.value.params.query||""),Xs.afterEach(m=>{h.value=String(m.params.query||"")}),window.addEventListener("keydown",m=>{var w;m.ctrlKey&&m.key==="k"&&(m.preventDefault(),(w=g.value)==null||w.focus())})});let y=()=>{Xs.push({name:"Search",params:{query:h.value}})};return(m,w)=>(B(),ne("div",hO,[te(K(aR),{class:"hideIfMobile logo",onClick:w[0]||(w[0]=x=>m.$router.push("/"))}),F("div",pO,[te(Zn,{class:"sm:ml-0 mr-2",href:"/",icon:"home",minimised:"",name:"Home"}),te(ek,{modelValue:K(h),"onUpdate:modelValue":w[1]||(w[1]=x=>dt(h)?h.value=x:h=x),class:"md:!w-96",icon:"search",placeholder:"Search...",onSubmit:K(y),clickSuggest:c,suggest:p,ref_key:"search",ref:g},{default:xt(({value:x,selected:R})=>[F("div",{class:$e(["suggestion",{selected:R}]),onClick:O=>c(x)},[te(fO,{item:x},null,8,["item"])],10,gO)]),_:1},8,["modelValue","onSubmit"])]),F("div",mO,[F("div",{class:"download",ref_key:"downloadIcon",ref:t},[te(Zn,{href:"/download",icon:"download",minimised:"",name:"Download"}),(B(),Fe(hi,{to:"#popup-target"},[n.value?(B(),ne("span",{key:0,class:"download-anim absolute top-0 left-0 z-[1000] material-symbols-rounded",style:sr(a.value)},"download",4)):xe("",!0)]))],512),te(Zn,{href:"/preferences",icon:"settings",minimised:"",name:"Preferences"})])]))}}),yO=tt(vO,[["__scopeId","data-v-c7aea07d"]]),_O={xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"fill-rule":"evenodd","clip-rule":"evenodd","stroke-linejoin":"round","stroke-miterlimit":"2"},viewBox:"0 0 410 300"};function bO(e,t){return B(),ne("svg",_O,t[0]||(t[0]=[F("text",{x:"398.231",y:"338.034",style:{"font-family":'"Poppins-ExtraBold","Poppins"',"font-weight":"800","font-size":"197.74px"},transform:"translate(-399.969 -83.145)"},"ONE",-1),F("text",{x:"405.025",y:"170.82",style:{"font-family":'"Poppins-Regular","Poppins"',"font-size":"57.751px"},transform:"translate(-399.969 -83.145)"},"reAudioPlayer",-1)]))}const wO={render:bO},xO={class:"startup"},SO={class:"wrap"},EO={class:"logo"},CO=Le({__name:"Startup",setup(e){return Mt(()=>{Er.clear()}),(t,n)=>(B(),ne("div",xO,[F("div",SO,[F("div",EO,[te(iy),te(K(wO))])])]))}}),AO=tt(CO,[["__scopeId","data-v-fc875b55"]]),rr=document.createElement("video");rr.style.position="absolute";rr.style.top="-500px";rr.style.left="-500px";rr.style.width="500px";rr.style.height="500px";rr.style.zIndex="-1000";document.body.appendChild(rr);const Qn=ce("error"),Ta=async()=>{if(Qn.value=="error"||Qn.value=="loading")return!1;await rr.requestPictureInPicture()},fy=()=>{const e=kt(),t=ns();let n;const s=async o=>{if(!t.player.pictureInPicture||e.song.id<0)return!1;n==null||n.terminate(),n=new Worker("/assets/ffmpeg/ffmpeg-worker-mp4.js"),Qn.value="loading",console.log("loading new cover",o);const u=await(await fetch(o)).blob(),c=URL.createObjectURL(u);rr.src="";const f="t.jpg",p=[],h=new Image;h.src=c,h.style.width="100%",h.style.height="100%",h.onload=()=>{const w=document.createElement("canvas");w.width=h.width,w.height=h.height,w.getContext("2d").drawImage(h,0,0);const R=w.toDataURL("image/jpeg",1),O=g(R);p.push({name:f,data:O}),console.log("loaded image",p),requestAnimationFrame(y)};function g(w){var x=w.replace(/^data[^,]+,/,""),R=window.atob(x),O=R.length,L=new Uint8Array(new ArrayBuffer(O));for(let S=0;S{rr.src=webkitURL.createObjectURL(w)}};return Xe(()=>t.player.pictureInPicture,async o=>{console.log("pictureInPicture enabled",o),o?(fy(),o=!0,Qn.value="error",await s(e.song.cover)):(n==null||n.terminate(),o=!1,Qn.value="error")}),t.player.pictureInPicture?(Xe(()=>e.song.cover,s),!0):!1},TO=Le({__name:"Card",props:{withHover:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){return(t,n)=>(B(),ne("div",{class:$e([{withHover:e.withHover,disabled:e.disabled},"card"])},[xs(t.$slots,"default",{},void 0,!0)],2))}}),dy=tt(TO,[["__scopeId","data-v-04b9eb92"]]),PO={class:"message"},RO={key:0,class:"details"},kO=Le({__name:"ClosableNotification",props:{notification:{type:Object,required:!0}},emits:["remove"],setup(e,{emit:t}){const n=e,s=t,o=wl(),a=c=>{s("remove",c)},u=()=>{s("remove",n.notification.id),n.notification.onClick&&n.notification.onClick(),console.log(n.notification.redirect),n.notification.redirect&&o.push(n.notification.redirect)};return(c,f)=>(B(),Fe(dy,{class:$e([{[e.notification.type]:!0,"cursor-pointer":e.notification.redirect||e.notification.onClick},"notification"]),onClick:gt(u,["stop","prevent"])},{default:xt(()=>[F("div",PO,[F("h4",null,Se(e.notification.message),1),e.notification.details?(B(),ne("span",RO,Se(e.notification.details),1)):xe("",!0)]),F("span",{class:"material-symbols-rounded close",onClick:f[0]||(f[0]=gt(p=>a(e.notification.id),["stop","prevent"]))}," close ")]),_:1},8,["class"]))}}),OO=tt(kO,[["__scopeId","data-v-d73e5174"]]),IO={class:"message"},MO={key:0,class:"details"},LO={class:"yes-no"},NO=Le({__name:"YesNoNotification",props:{notification:{type:Object,required:!0}},emits:["remove"],setup(e,{emit:t}){const n=e,s=t,o=wl(),a=()=>{s("remove",n.notification.id),n.notification.onNo&&n.notification.onNo()},u=()=>{s("remove",n.notification.id),n.notification.onYes&&n.notification.onYes()},c=()=>{s("remove",n.notification.id),n.notification.onClick&&n.notification.onClick(),n.notification.redirect&&o.push(n.notification.redirect)};return(f,p)=>(B(),Fe(dy,{class:"notification",onClick:gt(c,["stop","prevent"])},{default:xt(()=>[F("div",IO,[F("h4",null,Se(e.notification.message),1),e.notification.details?(B(),ne("span",MO,Se(e.notification.details),1)):xe("",!0)]),F("div",LO,[F("div",{class:"yes option",onClick:gt(u,["stop","prevent"])},p[0]||(p[0]=[F("span",{class:"material-symbols-rounded"}," check ",-1)])),F("div",{class:"no option",onClick:gt(a,["stop","prevent"])},p[1]||(p[1]=[F("span",{class:"material-symbols-rounded"}," close ",-1)]))])]),_:1}))}}),DO=tt(NO,[["__scopeId","data-v-78dd507a"]]),$O={class:"notifications"},FO=Le({__name:"NotificationHandler",setup(e){const t=["success","error","info","warning"],n=ce([]),s=u=>{n.value.push(u),u.timeout&&setTimeout(()=>{var c;(c=u.onTimeout)==null||c.call(u),o(u.id)},u.timeout)},o=u=>{n.value=n.value.filter(c=>c.id!=u)},a=()=>{n.value=[]};return window.addEventListener("notification.add",u=>{const c=u.detail;s(c)}),window.addEventListener("notification.remove",u=>{const c=u.detail;o(c)}),window.addEventListener("notification.clear",()=>{a()}),(u,c)=>(B(),ne("div",$O,[(B(!0),ne(Ve,null,ir(n.value,f=>(B(),ne(Ve,{key:f.id},[t.includes(f.type)?(B(),Fe(OO,{key:0,notification:f,onRemove:o},null,8,["notification"])):f.type=="yes-no"?(B(),Fe(DO,{key:1,notification:f,onRemove:o},null,8,["notification"])):xe("",!0)],64))),128))]))}}),BO=tt(FO,[["__scopeId","data-v-d6b475e7"]]);function HO(e){const t=3.999843853973347,n=1681.974450955533,s=.7071752369554196,o=Math.tan(Math.PI*n/e),a=Math.pow(10,t/20),u=Math.pow(a,.4996667741545416),c=1+o/s+o*o,f=2*(o*o-1)/c,p=(1-o/s+o*o)/c,h=(a+u*o/s+o*o)/c,g=2*(o*o-a)/c,y=(a-u*o/s+o*o)/c;return{numerators:[h,g,y],denominators:[1,f,p]}}function VO(e){const t=38.13547087602444,n=.5003270373238773,s=Math.tan(Math.PI*t/e),o=2*(s*s-1)/(1+s/n+s*s),a=(1-s/n+s*s)/(1+s/n+s*s);return{numerators:[1,-2,1],denominators:[1,o,a]}}function WO(e){if("createIIRFilter"in e){const t=HO(e.sampleRate);return e.createIIRFilter(t.numerators,t.denominators)}else{const t=e.createBiquadFilter();return t.type="highshelf",t.frequency.value=1500,t.gain.value=4,t}}function UO(e){if("createIIRFilter"in e){const t=VO(e.sampleRate);return e.createIIRFilter(t.numerators,t.denominators)}else{const t=e.createBiquadFilter();return t.type="highpass",t.frequency.value=38,t.Q.value=-6,t}}var qO={on:function(e,t){(this._listeners[e]=this._listeners[e]||[]).push(t)},off:function(e,t){if(!e){this._listeners={};return}t?this._listeners[e]=(this._listeners[e]||[]).filter(n=>n!==t):delete this._listeners[e]},trigger:function(e,t){(this._listeners[e]||[]).forEach(n=>{n({type:e,data:t})})}};class KO{constructor(t,n,s){this.source=t.source,this.context=this.source.context,this.name=n,this.uri=s,this.node.then(o=>{o.port.onmessage=function(a){t.trigger(a.data.type,a.data)}})}get node(){return this._node?this._node:(this._node=new Promise((t,n)=>this.context.audioWorklet.addModule(this.uri).then(()=>t(new AudioWorkletNode(this.context,this.name))).catch(n)),this._node)}message(t){this.node.then(n=>n.port.postMessage(t))}}class GO{constructor(t,n){this.source=t.source,this.context=this.source.context,this.worker=new Worker(n),this.node.then(s=>{s.onaudioprocess=o=>{const a=[];for(var u=0;u{t.trigger(s.data.type,s.data)}}get node(){return this._node?this._node:(this._node=new Promise((t,n)=>{t(this._createNode(1024,this.source.channelCount,this.source.channelCount))}),this._node)}message(t){this.worker.postMessage(t)}_createNode(){return(this.context.createScriptProcessor||this.context.createJavaScriptNode).apply(this.context,arguments)}}class jO{constructor(t,n){this.source=t.source,this.context=this.source.context,this.worker=new Worker(n),this.worker.onmessage=s=>{t.trigger(s.data.type,s.data)}}message(t){this.worker.postMessage(t)}get node(){return this._node?this._node:(this._node=new Promise((t,n)=>{t(this.context.createGain())}),this._node)}}const zO=!1;function YO({context:e,source:t,controller:n}){const s=JO(n);return s.node.then(o=>{o.connect(e.destination),t.connect(o)}),s}function JO(e){return e.offline?new jO(e,e.workerUri):"AudioWorkletNode"in window&&zO?new KO(e,"needles-worklet",e.workletUri):new GO(e,e.workerUri)}class XO extends Error{constructor(t){super(t),this.name="InvalidStateError"}}const ZO=window.OfflineAudioContext||window.webkitOfflineAudioContext;class QO{constructor(t){this.state="inactive",this._listeners={},Object.assign(this,qO),this.workerUri=t.workerUri,this.workletUri=t.workletUri,this.source=t.source,this.weightedSource=t.weightedSource,this.context=this.source.context,this.offline=this.context instanceof ZO,this.workerAdapter.message({type:"initialize",attributes:{sampleRate:this.context.sampleRate,modes:t.modes}})}get workerAdapter(){return this._workerAdapter=this._workerAdapter||new YO({controller:this,context:this.context,source:this.weightedSource||this.source})}input(t){const s=t.length,o=t.numberOfChannels;this.offline&&this.workerAdapter.message({type:"set",key:"duration",value:t.duration*1e3});for(var a=0;athis.input(t)))}pause(){this.state==="inactive"&&this._throwInvalidStateErrorFor("pause"),this.state="paused",this.workerAdapter.message({type:"pause"})}resume(){this.state==="inactive"&&this._throwInvalidStateErrorFor("resume"),this.state="recording",this.workerAdapter.message({type:"resume"})}stop(){this.state==="inactive"&&this._throwInvalidStateErrorFor("stop"),this.state="inactive",this.workerAdapter.message({type:"stop"})}reset(){this.workerAdapter.message({type:"reset"})}_startRendering(){return new Promise((t,n)=>{this.context.startRendering(),this.context.addEventListener("complete",s=>{t(s.renderedBuffer)})})}_throwInvalidStateErrorFor(t){throw new XO(`Failed to execute '${t}' on 'Needles': The Needles's state is '${this.state}'.`)}}function e3(e){e.modes=e.modes||["momentary","short-term","integrated"];const t=e.source.context,n=WO(t),s=UO(t);return e.source.connect(n),n.connect(s),new QO({...e,weightedSource:s})}let tc=0;const t3=1,n3=.1,hg=(e,t)=>{var n=s3(e,t);n.angle-=.78539816;var s=i3(n.radius,n.angle);return{x:s.x,y:s.y}},r3=(e,t)=>{var n=-1,s=Math.atan2(e,t);return n*s},s3=(e,t)=>{var n=Math.sqrt(e*e+t*t),s=Math.atan2(t,e);return{radius:n,angle:s}},i3=(e,t)=>{var n=e*Math.sin(t),s=e*Math.cos(t);return{x:n,y:s}},o3=(e,t)=>{const n=[];return n.push(new Float32Array(t.frequencyBinCount)),t.getFloatTimeDomainData(n[0]),n.push(new Float32Array(e.frequencyBinCount)),e.getFloatTimeDomainData(n[1]),n},a3=e=>{const t=(a,u)=>{var c=a;return a>u?c-=n3*(a-u):c+=t3*(u-a),c};for(var n=0,s,o=0;o1&&(n=1),n<-1&&(n=-1),tc=t(tc,n),tc},l3=e=>{var t=e[1]?e[1][0]:0;let n=hg(t,e[0][0]);const s=[];s.push({x:n.x,y:n.y});for(var o=1;o({stereo:{left:0,right:0,correlation:0,field:[],_analyserL:null,_analyserR:null},tonalBalance:{data:null,_analyser:null},truePeak:{left:-1/0,right:-1/0},loudness:{momentary:-1/0,maxMomentary:-1/0,shortterm:-1/0,integrated:-1/0},_meter:null}),actions:{_reset(){this.stereo.left=0,this.stereo.right=0,this.truePeak.left=-1/0,this.truePeak.right=-1/0,this.loudness.momentary=-1/0,this.loudness.maxMomentary=-1/0,this.loudness.shortterm=-1/0,this.loudness.integrated=-1/0},setSource(e,t){var s,o;this._meter=new e3({source:e,workerUri:"/assets/needles/needles-worker.js"}),(s=this._meter)==null||s.start(),(o=this._meter)==null||o.pause(),this.stereo.analyserL=t.createAnalyser(),this.stereo.analyserR=t.createAnalyser(),this.tonalBalance.analyser=t.createAnalyser(),this.tonalBalance.analyser.fftSize=256,e.connect(this.tonalBalance.analyser),this.tonalBalance.data=new Uint8Array(this.tonalBalance.analyser.frequencyBinCount);var n=t.createChannelSplitter(2);e.connect(n),n.connect(this.stereo.analyserR,1),n.connect(this.stereo.analyserL,0),this._stereo()},_stereo(){const e=window.location.pathname,t=new Float32Array(this.stereo.analyserR.fftSize),n=new Float32Array(this.stereo.analyserL.fftSize),s=()=>{if(e!=="/player/insights"){window.requestAnimationFrame(s);return}this.tonalBalance.analyser.getByteFrequencyData(this.tonalBalance.data),this.stereo.analyserR.getFloatTimeDomainData(t),this.stereo.analyserL.getFloatTimeDomainData(n);let o=0,a=0;for(const u of t)o+=u*u;for(const u of n)a+=u*u;this.stereo.right=Math.sqrt(o/t.length),this.stereo.left=Math.sqrt(a/n.length),this.stereo.data=o3(this.stereo.analyserL,this.stereo.analyserR),this.stereo.correlation=a3(this.stereo.data),this.stereo.field=l3(this.stereo.data),window.requestAnimationFrame(s)};window.requestAnimationFrame(s)},initialise(){const e=kt();Xe(()=>e.song,()=>{var t,n;this._reset(),(t=this._meter)==null||t.reset(),(n=this._meter)==null||n.on("dataavailable",s=>this._setLoudness(s.data.mode,s.data.value))}),Xe(()=>e.playing,()=>{var t,n;e.playing?(t=this._meter)==null||t.resume():(n=this._meter)==null||n.pause()})},_setLoudness(e,t){switch(e){case"momentary":this.loudness.momentary=t,this.loudness.maxMomentary=Math.max(this.loudness.maxMomentary,t);break;case"short-term":this.loudness.shortterm=t;break;case"integrated":this.loudness.integrated=t;break}}}}),u3=()=>{kt().initialise(),nn().fetchPlaylists(),xl().initialise(),yf().initialise(),sy.restoreTheme()},c3=async()=>await(await fetch("/api/config/first-time")).json(),w5=async(e,t)=>{await fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:e,secret:t})})},f3=async()=>{const e=await fetch("/api/spotify/authorise");return e.status==200?(Er.addYesNo("Do you want to authorise reAudioPlayer ONE to access your Spotify account?","You will be redirected to Spotify to authorise reAudioPlayer ONE to access your account.",null,async()=>{window.location.href=(await e.text()).replace("{origin}",window.location.origin)}),!1):e.status==204},x5=async()=>await(await fetch("/api/config")).json(),S5=async e=>{await fetch("/api/config",{method:"PUT",body:JSON.stringify(e)})},d3={class:"sidebar drop-shadow-xl"},h3={class:"static"},p3={key:0},g3={key:0,class:"hideIfMobile"},m3={class:"playlistList hideIfMobile"},v3=["src"],y3=Le({__name:"Sidebar",setup(e){const t=kt(),n=nn(),s=Pe(()=>t.song.cover),o=Pe(()=>n.playlists),a=ns();return(u,c)=>(B(),ne("div",d3,[F("div",h3,[te(Zn,{hasChildSites:!0,minimised:"",href:"/collection/playlists",icon:"library_music",name:"Your Library",parentHref:"/collection"}),te(Zn,{minimised:"",href:"/preferences",icon:"settings",name:"Settings",class:"showIfMobile"}),te(Zn,{minimised:"",href:"/discover",icon:"explore",name:"Discover",class:"hideIfMobile"}),K(a).sidebar.news||K(a).sidebar.sports?(B(),ne("br",p3)):xe("",!0),K(a).sidebar.news?(B(),Fe(Zn,{key:1,hasChildSites:!0,minimised:"",href:"/news",icon:"newspaper",name:"News"})):xe("",!0),K(a).sidebar.sports?(B(),Fe(Zn,{key:2,hasChildSites:!0,minimised:"",href:"/sports",icon:"sports_soccer",name:"Sports"})):xe("",!0),c[1]||(c[1]=F("br",{class:"hideIfMobile"},null,-1)),te(Zn,{minimised:"",class:"hideIfMobile",href:"/playlist/create",icon:"add_circle",name:"Create Playlist"})]),o.value.length?(B(),ne("hr",g3)):xe("",!0),F("div",m3,[(B(!0),ne(Ve,null,ir(o.value.filter(f=>f.type!="special"),(f,p)=>(B(),Fe(Zn,{key:p,href:f.href,img:f.cover,minimised:"",name:f.name},null,8,["href","img","name"]))),128))]),K(a).player.expandedCover?(B(),ne("img",{key:1,src:s.value,class:"cover hideIfMobile",onClick:c[0]||(c[0]=f=>K(a).player.expandedCover=!1)},null,8,v3)):xe("",!0)]))}}),hy=tt(y3,[["__scopeId","data-v-3f7537e5"]]),_3={name:"Body",data(){return{maximised:!1}},methods:{onMaximiseChange(e){this.maximised=e,this.$emit("maximise",e)}}};function b3(e,t,n,s,o,a){const u=ws("router-view");return B(),ne("div",{class:$e(["body",{maximised:o.maximised}])},[te(u,{onMaximise:a.onMaximiseChange,class:"view"},null,8,["onMaximise"])],2)}const py=tt(_3,[["render",b3],["__scopeId","data-v-f3a65fee"]]),w3={class:"html-audio"},x3=["src"],S3=Le({__name:"HtmlAudio",setup(e,{expose:t}){const n=kt(),s=yf(),o=ce(null);let a=!1;Mt(()=>{o.value.src=null,o.value.src=n.stream,n.stream!=null&&o.value.load(),o.value.onloadedmetadata=()=>{o.value&&(n.setDuration(o.value.duration),(a||n.playing)&&(c(),a=!1))}}),Xe(()=>n.song.id,()=>{o.value.paused||(a=!0),o.value.src=null,o.value.src=n.stream,o.value.load(),n.setPlaying(!o.value.paused)});const u=()=>{a=!0,n.onSongEnded()},c=()=>{try{o.value.play()}catch{}},f=()=>{o.value.pause()},p=m=>{o.value.currentTime=m},h=m=>{let w=m/100;w=Math.min(Math.max(w,0),1),o.value.volume=w},g=m=>{o.value.muted=m};return Mt(()=>{h(n.volume);var m=window.AudioContext,w=new m,x=w.createMediaElementSource(o.value);x.connect(w.destination),s.setSource(x,w)}),t({play:c,pause:f,seek:p,setVolume:h,setMute:g}),(m,w)=>(B(),ne("div",w3,[F("audio",{ref_key:"audio",ref:o,src:K(n).stream,onEnded:u,onPause:w[0]||(w[0]=x=>K(n).setPlaying(!1)),onPlay:w[1]||(w[1]=x=>K(n).setPlaying(!0)),onTimeupdate:w[2]||(w[2]=x=>{var R;return K(n).setProgress((R=o.value)==null?void 0:R.currentTime)})},null,40,x3)]))}}),E3={props:{modelValue:{type:Number,required:!0},max:{type:Number,default:100}},watch:{modelValue(){this.value=this.modelValue}},computed:{percentage(){return Math.min(1,this.value/this.max)*100}},methods:{seek(e,t=!1){const n=this.$el.getBoundingClientRect(),s=e.clientX-n.left,o=this.$el.offsetWidth;this.value=s/o*this.max,t||(this.seeking=!1,this.$emit("change",this.value),this.$emit("update:modelValue",this.value))}},data(){return{hover:!1,value:this.modelValue||0,seeking:!1}},mounted(){window.addEventListener("mouseup",e=>{this.seeking&&(this.seeking=!1,this.seek(e))}),window.addEventListener("mousemove",e=>{this.seeking&&this.seek(e,!0)})}},C3={class:"progressBar__track"};function A3(e,t,n,s,o,a){return B(),ne("div",{ref:"el",class:"progressBar",onMousedown:t[0]||(t[0]=u=>o.seeking=!0),onDragover:t[1]||(t[1]=gt(()=>{},["stop"])),onClick:t[2]||(t[2]=(...u)=>a.seek&&a.seek(...u)),onMouseenter:t[3]||(t[3]=u=>o.hover=!0),onMouseleave:t[4]||(t[4]=u=>o.hover=!1)},[F("div",C3,[F("div",{class:$e([{hover:o.hover},"progressBar__progress"]),style:sr({width:`${a.percentage}%`})},null,6)])],544)}const nc=tt(E3,[["render",A3],["__scopeId","data-v-a9b735d7"]]),T3={class:"dropdown"},P3=["onClick"],R3={class:"material-symbols-rounded"},k3={key:0,class:"material-symbols-rounded"},O3=Le({__name:"IconDropdown",props:{modelValue:{type:String,required:!0},icon:{type:String,required:!0},options:{type:Array,required:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,s=ce(n.options),o=ce(n.modelValue),a=ce(!1),u=t;Xe(n,p=>{o.value=p.modelValue,s.value=p.options},{deep:!0});const c=p=>{o.value=p,u("update:modelValue",p),a.value=!1},f=ce(null);return Xe(a,p=>{qn(()=>{if(p){const h=f.value.getBoundingClientRect();window.innerHeight-h.top>h.height?(f.value.style.top="100%",f.value.style.bottom="auto"):(f.value.style.top="auto",f.value.style.bottom="100%"),h.left<0?(f.value.style.left="0",f.value.style.right="auto"):h.right>window.innerWidth&&(f.value.style.left="auto",f.value.style.right="0")}})}),document.addEventListener("click",()=>{a.value=!1}),(p,h)=>(B(),ne("div",T3,[F("span",{class:"dropdown__selected material-symbols-rounded ms-wght-400",onClick:h[0]||(h[0]=gt(g=>a.value=!a.value,["stop"]))},Se(e.icon),1),a.value?(B(),ne("div",{key:0,ref_key:"trueDropdown",ref:f,class:$e([{expanded:a.value},"dropdown__options"])},[(B(!0),ne(Ve,null,ir(s.value,g=>(B(),ne("div",{key:g.value,class:"dropdown__option",onClick:gt(y=>c(g.value),["stop"])},[F("span",R3,Se(g.icon),1),F("span",null,Se(g.label),1),o.value==g.value?(B(),ne("span",k3,"check")):xe("",!0)],8,P3))),128))],2)):xe("",!0)]))}}),rc=tt(O3,[["__scopeId","data-v-5756bf60"]]),I3={class:"loader"},M3=Le({__name:"Spinner",setup(e){const t=ce(null);return Mt(()=>{var a,u;const s=((a=t.value)==null?void 0:a.clientWidth)??0,o=8/80;for(const c of((u=t.value)==null?void 0:u.children)??[])c.style.width=`${s*.8}px`,c.style.height=`${s*.8}px`,c.style.borderWidth=`${s*o}px`,c.style.margin=`${s*o}px`}),(n,s)=>(B(),ne("span",I3))}}),pg=tt(M3,[["__scopeId","data-v-ed1fd951"]]);function jt(e,t,n,s){return new(n||(n=Promise))(function(o,a){function u(p){try{f(s.next(p))}catch(h){a(h)}}function c(p){try{f(s.throw(p))}catch(h){a(h)}}function f(p){var h;p.done?o(p.value):(h=p.value,h instanceof n?h:new n(function(g){g(h)})).then(u,c)}f((s=s.apply(e,t||[])).next())})}class Co{constructor(){this.listeners={}}on(t,n,s){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(n),s==null?void 0:s.once){const o=()=>{this.un(t,o),this.un(t,n)};return this.on(t,o),o}return()=>this.un(t,n)}un(t,n){var s;(s=this.listeners[t])===null||s===void 0||s.delete(n)}once(t,n){return this.on(t,n,{once:!0})}unAll(){this.listeners={}}emit(t,...n){this.listeners[t]&&this.listeners[t].forEach(s=>s(...n))}}const Pa={decode:function(e,t){return jt(this,void 0,void 0,function*(){const n=new AudioContext({sampleRate:t});return n.decodeAudioData(e).finally(()=>n.close())})},createBuffer:function(e,t){return typeof e[0]=="number"&&(e=[e]),function(n){const s=n[0];if(s.some(o=>o>1||o<-1)){const o=s.length;let a=0;for(let u=0;ua&&(a=c)}for(const u of n)for(let c=0;ce==null?void 0:e[n],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function gy(e,t){const n=t.xmlns?document.createElementNS(t.xmlns,e):document.createElement(e);for(const[s,o]of Object.entries(t))if(s==="children")for(const[a,u]of Object.entries(t))typeof u=="string"?n.appendChild(document.createTextNode(u)):n.appendChild(gy(a,u));else s==="style"?Object.assign(n.style,o):s==="textContent"?n.textContent=o:n.setAttribute(s,o.toString());return n}function gg(e,t,n){const s=gy(e,t||{});return n==null||n.appendChild(s),s}var L3=Object.freeze({__proto__:null,createElement:gg,default:gg});const N3={fetchBlob:function(e,t,n){return jt(this,void 0,void 0,function*(){const s=yield fetch(e,n);if(s.status>=400)throw new Error(`Failed to fetch ${e}: ${s.status} (${s.statusText})`);return function(o,a){jt(this,void 0,void 0,function*(){if(!o.body||!o.headers)return;const u=o.body.getReader(),c=Number(o.headers.get("Content-Length"))||0;let f=0;const p=g=>jt(this,void 0,void 0,function*(){f+=(g==null?void 0:g.length)||0;const y=Math.round(f/c*100);a(y)}),h=()=>jt(this,void 0,void 0,function*(){let g;try{g=yield u.read()}catch{return}g.done||(p(g.value),yield h())});h()})}(s.clone(),t),s.blob()})}};class D3 extends Co{constructor(t){super(),this.isExternalMedia=!1,t.media?(this.media=t.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),t.mediaControls&&(this.media.controls=!0),t.autoplay&&(this.media.autoplay=!0),t.playbackRate!=null&&this.onMediaEvent("canplay",()=>{t.playbackRate!=null&&(this.media.playbackRate=t.playbackRate)},{once:!0})}onMediaEvent(t,n,s){return this.media.addEventListener(t,n,s),()=>this.media.removeEventListener(t,n,s)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){const t=this.getSrc();t.startsWith("blob:")&&URL.revokeObjectURL(t)}canPlayType(t){return this.media.canPlayType(t)!==""}setSrc(t,n){const s=this.getSrc();if(t&&s===t)return;this.revokeSrc();const o=n instanceof Blob&&(this.canPlayType(n.type)||!t)?URL.createObjectURL(n):t;try{this.media.src=o}catch{this.media.src=t}}destroy(){this.media.pause(),this.isExternalMedia||(this.media.remove(),this.revokeSrc(),this.media.src="",this.media.load())}setMediaElement(t){this.media=t}play(){return jt(this,void 0,void 0,function*(){return this.media.play()})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(t){this.media.currentTime=t}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(t){this.media.volume=t}getMuted(){return this.media.muted}setMuted(t){this.media.muted=t}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(t,n){n!=null&&(this.media.preservesPitch=n),this.media.playbackRate=t}getMediaElement(){return this.media}setSinkId(t){return this.media.setSinkId(t)}}class ui extends Co{constructor(t,n){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.subscriptions=[],this.options=t;const s=this.parentFromOptionsContainer(t.container);this.parent=s;const[o,a]=this.initHtml();s.appendChild(o),this.container=o,this.scrollContainer=a.querySelector(".scroll"),this.wrapper=a.querySelector(".wrapper"),this.canvasWrapper=a.querySelector(".canvases"),this.progressWrapper=a.querySelector(".progress"),this.cursor=a.querySelector(".cursor"),n&&a.appendChild(n),this.initEvents()}parentFromOptionsContainer(t){let n;if(typeof t=="string"?n=document.querySelector(t):t instanceof HTMLElement&&(n=t),!n)throw new Error("Container not found");return n}initEvents(){const t=n=>{const s=this.wrapper.getBoundingClientRect(),o=n.clientX-s.left,a=n.clientY-s.top;return[o/s.width,a/s.height]};if(this.wrapper.addEventListener("click",n=>{const[s,o]=t(n);this.emit("click",s,o)}),this.wrapper.addEventListener("dblclick",n=>{const[s,o]=t(n);this.emit("dblclick",s,o)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollContainer.addEventListener("scroll",()=>{const{scrollLeft:n,scrollWidth:s,clientWidth:o}=this.scrollContainer,a=n/s,u=(n+o)/s;this.emit("scroll",a,u,n,n+o)}),typeof ResizeObserver=="function"){const n=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{n().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){const t=this.parent.clientWidth;t===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=t,this.reRender())}initDrag(){this.subscriptions.push(function(t,n,s,o,a=3,u=0,c=100){if(!t)return()=>{};const f=matchMedia("(pointer: coarse)").matches;let p=()=>{};const h=g=>{if(g.button!==u)return;g.preventDefault(),g.stopPropagation();let y=g.clientX,m=g.clientY,w=!1;const x=Date.now(),R=k=>{if(k.preventDefault(),k.stopPropagation(),f&&Date.now()-xa||Math.abs($)>a){const q=t.getBoundingClientRect(),{left:le,top:J}=q;w||(s==null||s(y-le,m-J),w=!0),n(Y,$,W-le,U-J),y=W,m=U}},O=k=>{if(w){const W=k.clientX,U=k.clientY,Y=t.getBoundingClientRect(),{left:$,top:q}=Y;o==null||o(W-$,U-q)}p()},L=k=>{k.relatedTarget&&k.relatedTarget!==document.documentElement||O(k)},S=k=>{w&&(k.stopPropagation(),k.preventDefault())},T=k=>{w&&k.preventDefault()};document.addEventListener("pointermove",R),document.addEventListener("pointerup",O),document.addEventListener("pointerout",L),document.addEventListener("pointercancel",L),document.addEventListener("touchmove",T,{passive:!1}),document.addEventListener("click",S,{capture:!0}),p=()=>{document.removeEventListener("pointermove",R),document.removeEventListener("pointerup",O),document.removeEventListener("pointerout",L),document.removeEventListener("pointercancel",L),document.removeEventListener("touchmove",T),setTimeout(()=>{document.removeEventListener("click",S,{capture:!0})},10)}};return t.addEventListener("pointerdown",h),()=>{p(),t.removeEventListener("pointerdown",h)}}(this.wrapper,(t,n,s)=>{this.emit("drag",Math.max(0,Math.min(1,s/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!0,this.emit("dragstart",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))},t=>{this.isDragging=!1,this.emit("dragend",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))}))}getHeight(t,n){var s;const o=((s=this.audioData)===null||s===void 0?void 0:s.numberOfChannels)||1;if(t==null)return 128;if(!isNaN(Number(t)))return Number(t);if(t==="auto"){const a=this.parent.clientHeight||128;return n!=null&&n.every(u=>!u.overlay)?a/o:a}return 128}initHtml(){const t=document.createElement("div"),n=t.attachShadow({mode:"open"}),s=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return n.innerHTML=` :host { user-select: none; @@ -124,4 +124,4 @@ function print() { __p += __j.call(arguments, '') }
- `,[t,n]}setOptions(t){if(this.options.container!==t.container){const n=this.parentFromOptionsContainer(t.container);n.appendChild(this.container),this.parent=n}t.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=t,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(t){this.scrollContainer.scrollLeft=t}setScrollPercentage(t){const{scrollWidth:n}=this.scrollContainer,s=n*t;this.setScroll(s)}destroy(){var t,n;this.subscriptions.forEach(s=>s()),this.container.remove(),(t=this.resizeObserver)===null||t===void 0||t.disconnect(),(n=this.unsubscribeOnScroll)===null||n===void 0||n.forEach(s=>s()),this.unsubscribeOnScroll=[]}createDelay(t=10){let n,s;const o=()=>{n&&clearTimeout(n),s&&s()};return this.timeouts.push(o),()=>new Promise((a,u)=>{o(),s=u,n=setTimeout(()=>{n=void 0,s=void 0,a()},t)})}convertColorValues(t){if(!Array.isArray(t))return t||"";if(t.length<2)return t[0]||"";const n=document.createElement("canvas"),s=n.getContext("2d"),o=n.height*(window.devicePixelRatio||1),a=s.createLinearGradient(0,0,0,o),u=1/(t.length-1);return t.forEach((c,f)=>{const p=f*u;a.addColorStop(p,c)}),a}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(t,n,s,o){const a=t[0],u=t[1]||t[0],c=a.length,{width:f,height:p}=s.canvas,h=p/2,g=this.getPixelRatio(),y=n.barWidth?n.barWidth*g:1,m=n.barGap?n.barGap*g:n.barWidth?y/2:0,w=n.barRadius||0,x=f/(y+m)/c,R=w&&"roundRect"in s?"roundRect":"rect";s.beginPath();let O=0,L=0,S=0;for(let T=0;T<=c;T++){const k=Math.round(T*x);if(k>O){const Y=Math.round(L*h*o),$=Y+Math.round(S*h*o)||1;let q=h-Y;n.barAlign==="top"?q=0:n.barAlign==="bottom"&&(q=p-$),s[R](O*(y+m),q,y,$,w),O=k,L=0,S=0}const W=Math.abs(a[T]||0),U=Math.abs(u[T]||0);W>L&&(L=W),U>S&&(S=U)}s.fill(),s.closePath()}renderLineWaveform(t,n,s,o){const a=u=>{const c=t[u]||t[0],f=c.length,{height:p}=s.canvas,h=p/2,g=s.canvas.width/f;s.moveTo(0,h);let y=0,m=0;for(let w=0;w<=f;w++){const x=Math.round(w*g);if(x>y){const O=h+(Math.round(m*h*o)||1)*(u===0?-1:1);s.lineTo(y,O),y=x,m=0}const R=Math.abs(c[w]||0);R>m&&(m=R)}s.lineTo(y,h)};s.beginPath(),a(0),a(1),s.fill(),s.closePath()}renderWaveform(t,n,s){if(s.fillStyle=this.convertColorValues(n.waveColor),n.renderFunction)return void n.renderFunction(t,s);let o=n.barHeight||1;if(n.normalize){const a=Array.from(t[0]).reduce((u,c)=>Math.max(u,Math.abs(c)),0);o=a?1/a:1}n.barWidth||n.barGap||n.barAlign?this.renderBarWaveform(t,n,s,o):this.renderLineWaveform(t,n,s,o)}renderSingleCanvas(t,n,s,o,a,u,c){const f=this.getPixelRatio(),p=document.createElement("canvas");p.width=Math.round(s*f),p.height=Math.round(o*f),p.style.width=`${s}px`,p.style.height=`${o}px`,p.style.left=`${Math.round(a)}px`,u.appendChild(p);const h=p.getContext("2d");if(this.renderWaveform(t,n,h),p.width>0&&p.height>0){const g=p.cloneNode(),y=g.getContext("2d");y.drawImage(p,0,0),y.globalCompositeOperation="source-in",y.fillStyle=this.convertColorValues(n.progressColor),y.fillRect(0,0,p.width,p.height),c.appendChild(g)}}renderMultiCanvas(t,n,s,o,a,u){const c=this.getPixelRatio(),{clientWidth:f}=this.scrollContainer,p=s/c;let h=Math.min(ui.MAX_CANVAS_WIDTH,f,p),g={};if(h===0)return;if(n.barWidth||n.barGap){const R=n.barWidth||.5,O=R+(n.barGap||R/2);h%O!=0&&(h=Math.floor(h/O)*O)}const y=R=>{if(R<0||R>=m||g[R])return;g[R]=!0;const O=R*h,L=Math.min(p-O,h);if(L<=0)return;const S=t.map(T=>{const k=Math.floor(O/p*T.length),W=Math.floor((O+L)/p*T.length);return T.slice(k,W)});this.renderSingleCanvas(S,n,L,o,O,a,u)},m=Math.ceil(p/h);if(!this.isScrollable){for(let R=0;R1){const R=this.on("scroll",()=>{const{scrollLeft:O}=this.scrollContainer,L=Math.floor(O/p*m);Object.keys(g).length>ui.MAX_NODES&&(a.innerHTML="",u.innerHTML="",g={}),y(L-1),y(L),y(L+1)});this.unsubscribeOnScroll.push(R)}}renderChannel(t,n,s,o){var{overlay:a}=n,u=function(h,g){var y={};for(var m in h)Object.prototype.hasOwnProperty.call(h,m)&&g.indexOf(m)<0&&(y[m]=h[m]);if(h!=null&&typeof Object.getOwnPropertySymbols=="function"){var w=0;for(m=Object.getOwnPropertySymbols(h);w0&&(c.style.marginTop=`-${f}px`),this.canvasWrapper.style.minHeight=`${f}px`,this.canvasWrapper.appendChild(c);const p=c.cloneNode();this.progressWrapper.appendChild(p),this.renderMultiCanvas(t,u,s,f,c,p)}render(t){return jt(this,void 0,void 0,function*(){var n;this.timeouts.forEach(f=>f()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);const s=this.getPixelRatio(),o=this.scrollContainer.clientWidth,a=Math.ceil(t.duration*(this.options.minPxPerSec||0));this.isScrollable=a>o;const u=this.options.fillParent&&!this.isScrollable,c=(u?o:a)*s;if(this.wrapper.style.width=u?"100%":`${a}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=t,this.emit("render"),this.options.splitChannels)for(let f=0;f1&&f.push(t.getChannelData(1)),this.renderChannel(f,this.options,c,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(s=>s()),this.unsubscribeOnScroll=[],!this.audioData)return;const{scrollWidth:t}=this.scrollContainer,{right:n}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&t!==this.scrollContainer.scrollWidth){const{right:s}=this.progressWrapper.getBoundingClientRect();let o=s-n;o*=2,o=o<0?Math.floor(o):Math.ceil(o),o/=2,this.scrollContainer.scrollLeft+=o}}zoom(t){this.options.minPxPerSec=t,this.reRender()}scrollIntoView(t,n=!1){const{scrollLeft:s,scrollWidth:o,clientWidth:a}=this.scrollContainer,u=t*o,c=s,f=s+a,p=a/2;if(this.isDragging)u+30>f?this.scrollContainer.scrollLeft+=30:u-30f)&&(this.scrollContainer.scrollLeft=u-(this.options.autoCenter?p:0));const h=u-s-p;n&&this.options.autoCenter&&h>0&&(this.scrollContainer.scrollLeft+=Math.min(h,10))}{const h=this.scrollContainer.scrollLeft,g=h/o,y=(h+a)/o;this.emit("scroll",g,y,h,h+a)}}renderProgress(t,n){if(isNaN(t))return;const s=100*t;this.canvasWrapper.style.clipPath=`polygon(${s}% 0, 100% 0, 100% 100%, ${s}% 100%)`,this.progressWrapper.style.width=`${s}%`,this.cursor.style.left=`${s}%`,this.cursor.style.transform=`translateX(-${Math.round(s)===100?this.options.cursorWidth:0}px)`,this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(t,n)}exportImage(t,n,s){return jt(this,void 0,void 0,function*(){const o=this.canvasWrapper.querySelectorAll("canvas");if(!o.length)throw new Error("No waveform data");if(s==="dataURL"){const a=Array.from(o).map(u=>u.toDataURL(t,n));return Promise.resolve(a)}return Promise.all(Array.from(o).map(a=>new Promise((u,c)=>{a.toBlob(f=>{f?u(f):c(new Error("Could not export image"))},t,n)})))})}}ui.MAX_CANVAS_WIDTH=8e3,ui.MAX_NODES=10;class $3 extends Co{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}}class mg extends Co{constructor(t=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=t,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return jt(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(t){if(this.currentSrc=t,this._duration=void 0,!t)return this.buffer=null,void this.emit("emptied");fetch(t).then(n=>{if(n.status>=400)throw new Error(`Failed to fetch ${t}: ${n.status} (${n.statusText})`);return n.arrayBuffer()}).then(n=>this.currentSrc!==t?null:this.audioContext.decodeAudioData(n)).then(n=>{this.currentSrc===t&&(this.buffer=n,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())})}_play(){var t;if(!this.paused)return;this.paused=!1,(t=this.bufferNode)===null||t===void 0||t.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let n=this.playedDuration*this._playbackRate;n>=this.duration&&(n=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,n),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var t;this.paused=!0,(t=this.bufferNode)===null||t===void 0||t.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return jt(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(t){var n,s;const o=t-this.currentTime;(n=this.bufferNode)===null||n===void 0||n.stop(this.audioContext.currentTime+o),(s=this.bufferNode)===null||s===void 0||s.addEventListener("ended",()=>{this.bufferNode=null,this.pause()},{once:!0})}setSinkId(t){return jt(this,void 0,void 0,function*(){return this.audioContext.setSinkId(t)})}get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate=t,this.bufferNode&&(this.bufferNode.playbackRate.value=t)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(t){const n=!this.paused;n&&this._pause(),this.playedDuration=t/this._playbackRate,n&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var t,n;return(t=this._duration)!==null&&t!==void 0?t:((n=this.buffer)===null||n===void 0?void 0:n.duration)||0}set duration(t){this._duration=t}get volume(){return this.gainNode.gain.value}set volume(t){this.gainNode.gain.value=t,this.emit("volumechange")}get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(t){return/^(audio|video)\//.test(t)}getGainNode(){return this.gainNode}getChannelData(){const t=[];if(!this.buffer)return t;const n=this.buffer.numberOfChannels;for(let s=0;s{this.emit("init");const{peaks:a,duration:u}=this.options;(o||a&&u)&&this.load(o,a,u).catch(()=>null)})}updateProgress(t=this.getCurrentTime()){return this.renderer.renderProgress(t/this.getDuration(),this.isPlaying()),t}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){const t=this.updateProgress();this.emit("timeupdate",t),this.emit("audioprocess",t)}}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{const t=this.updateProgress();this.emit("timeupdate",t)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop()}),this.onMediaEvent("emptied",()=>{this.timer.stop()}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish")}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",t=>{var n;this.emit("error",(n=this.getMediaElement().error)!==null&&n!==void 0?n:new Error("Media error"))}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(t,n)=>{this.options.interact&&(this.seekTo(t),this.emit("interaction",t*this.getDuration()),this.emit("click",t,n))}),this.renderer.on("dblclick",(t,n)=>{this.emit("dblclick",t,n)}),this.renderer.on("scroll",(t,n,s,o)=>{const a=this.getDuration();this.emit("scroll",t*a,n*a,s,o)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",t=>{this.emit("dragstart",t)}),this.renderer.on("dragend",t=>{this.emit("dragend",t)}));{let t;this.subscriptions.push(this.renderer.on("drag",n=>{if(!this.options.interact)return;let s;this.renderer.renderProgress(n),clearTimeout(t),this.isPlaying()?s=0:this.options.dragToSeek===!0?s=200:typeof this.options.dragToSeek=="object"&&this.options.dragToSeek!==void 0&&(s=this.options.dragToSeek.debounceTime),t=setTimeout(()=>{this.seekTo(n)},s),this.emit("interaction",n*this.getDuration()),this.emit("drag",n)}))}}initPlugins(){var t;!((t=this.options.plugins)===null||t===void 0)&&t.length&&this.options.plugins.forEach(n=>{this.registerPlugin(n)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(t=>t()),this.mediaSubscriptions=[]}setOptions(t){this.options=Object.assign({},this.options,t),t.duration&&!t.peaks&&(this.decodedData=Pa.createBuffer(this.exportPeaks(),t.duration)),t.peaks&&t.duration&&(this.decodedData=Pa.createBuffer(t.peaks,t.duration)),this.renderer.setOptions(this.options),t.audioRate&&this.setPlaybackRate(t.audioRate),t.mediaControls!=null&&(this.getMediaElement().controls=t.mediaControls)}registerPlugin(t){return t._init(this),this.plugins.push(t),this.subscriptions.push(t.once("destroy",()=>{this.plugins=this.plugins.filter(n=>n!==t)})),t}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(t){return this.renderer.setScroll(t)}setScrollTime(t){const n=t/this.getDuration();this.renderer.setScrollPercentage(n)}getActivePlugins(){return this.plugins}loadAudio(t,n,s,o){return jt(this,void 0,void 0,function*(){var a;if(this.emit("load",t),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,!n&&!s){const c=this.options.fetchParams||{};window.AbortController&&!c.signal&&(this.abortController=new AbortController,c.signal=(a=this.abortController)===null||a===void 0?void 0:a.signal);const f=p=>this.emit("loading",p);n=yield N3.fetchBlob(t,f,c)}this.setSrc(t,n);const u=yield new Promise(c=>{const f=o||this.getDuration();f?c(f):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>c(this.getDuration()),{once:!0}))});if(!t&&!n){const c=this.getMediaElement();c instanceof mg&&(c.duration=u)}if(s)this.decodedData=Pa.createBuffer(s,u||0);else if(n){const c=yield n.arrayBuffer();this.decodedData=yield Pa.decode(c,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(t,n,s){return jt(this,void 0,void 0,function*(){try{return yield this.loadAudio(t,void 0,n,s)}catch(o){throw this.emit("error",o),o}})}loadBlob(t,n,s){return jt(this,void 0,void 0,function*(){try{return yield this.loadAudio("",t,n,s)}catch(o){throw this.emit("error",o),o}})}zoom(t){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(t),this.emit("zoom",t)}getDecodedData(){return this.decodedData}exportPeaks({channels:t=2,maxLength:n=8e3,precision:s=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");const o=Math.min(t,this.decodedData.numberOfChannels),a=[];for(let u=0;uMath.abs(y)&&(y=w)}f.push(Math.round(y*s)/s)}a.push(f)}return a}getDuration(){let t=super.getDuration()||0;return t!==0&&t!==1/0||!this.decodedData||(t=this.decodedData.duration),t}toggleInteraction(t){this.options.interact=t}setTime(t){super.setTime(t),this.updateProgress(t),this.emit("timeupdate",t)}seekTo(t){const n=this.getDuration()*t;this.setTime(n)}playPause(){return jt(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(t){this.setTime(this.getCurrentTime()+t)}empty(){this.load("",[[0]],.001)}setMediaElement(t){this.unsubscribePlayerEvents(),super.setMediaElement(t),this.initPlayerEvents()}exportImage(){return jt(this,arguments,void 0,function*(t="image/png",n=1,s="dataURL"){return this.renderer.exportImage(t,n,s)})}destroy(){var t;this.emit("destroy"),(t=this.abortController)===null||t===void 0||t.abort(),this.plugins.forEach(n=>n.destroy()),this.subscriptions.forEach(n=>n()),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}}ho.BasePlugin=class extends Co{constructor(e){super(),this.subscriptions=[],this.options=e}onInit(){}_init(e){this.wavesurfer=e,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(e=>e())}},ho.dom=L3;const B3=Le({__name:"WaveAudio",setup(e,{expose:t}){const n=ce(null),s=new Audio;Mt(()=>{var O;const m=window.getCurrentTheme(),w=Cs["fg-base"][m],x=Cs["fg-secondary"][m];n.value=ho.create({container:"#waveform",waveColor:w,progressColor:x,cursorWidth:0,barWidth:1,barGap:3,height:(O=document.querySelector("#waveform"))==null?void 0:O.clientHeight,media:s}),n.value.on("play",()=>{o.setPlaying(!0)}),n.value.on("pause",()=>{o.setPlaying(!1)}),n.value.on("audioprocess",()=>{o.setProgress(n.value.getCurrentTime())}),n.value.on("finish",()=>{u||(u=!0,o.onSongEnded())}),n.value.on("ready",()=>{n.value&&(o.setDuration(n.value.getDuration()),(u||o.playing)&&(c(),u=!1))});const R=new AudioContext;n.value.once("play",()=>{const L=R.createMediaElementSource(s);L.connect(R.destination),a.setSource(L,R)})});const o=kt(),a=yf();let u=!1;Mt(()=>{s.src=o.stream,n.value.load(o.stream)}),Xe(()=>o.song.id,()=>{n.value.isPlaying()&&(u=!0),s.src=o.stream,n.value.load(o.stream),o.setPlaying(!1)});const c=()=>{try{n.value.play()}catch{}},f=()=>{n.value.pause()},p=m=>{n.value.seekTo(m/o.durationSeconds)},h=m=>{let w=m/100;w=Math.min(Math.max(w,0),1),n.value.setVolume(w)},g=m=>{n.value.setMuted(m)};return Mt(()=>{h(o.volume)}),t({play:c,pause:f,seek:p,setVolume:h,setMute:g}),(m,w)=>(B(),ne("div",{id:"waveform",onAudioprocess:w[0]||(w[0]=x=>K(o).setProgress(x))},null,32))}}),H3=Le({__name:"AmbientBackground",props:{src:{type:String,required:!0},direction:{type:String,required:!1,default:"to bottom"},placeholder:{type:String,required:!1}},setup(e){const t=ns(),n=e,s=ce(null),o=async(a=void 0)=>{if(!s.value)return;const u=a===void 0?Dv(n.src):a,c=await Ya(u,n.placeholder);try{await LR(s.value,c,n.direction)}catch(f){if(!(f instanceof Error)||!f.message.includes("Error loading image"))throw f;await o(null)}};return Xe(()=>n.src,()=>qn(o)),Mt(o),(a,u)=>e.src!=null&&K(t).ambient?(B(),ne("div",{key:0,ref_key:"ambientGradient",ref:s,class:"ambient-gradient absolute inset-0 pointer-events-none"},null,512)):xe("",!0)}}),V3={key:1,class:"desktop mx-4"},W3={class:"song-info"},U3={class:"title-artist"},q3={class:"controls"},K3={class:"top relative"},G3=["disabled"],j3=["disabled"],z3=["disabled"],Y3={class:"bottom"},J3={class:"display"},X3={class:"text-xs text-muted text-left"},Z3={class:"aux relative"},Q3={key:0,class:"cursor-pointer material-symbols-rounded ms-fill"},eI={key:2,class:"mobile mx-4"},tI={class:"artist-title overflow-hidden"},nI={class:"full"},rI={class:"rest"},sI={class:"song-info"},iI={class:"title-artist mb-4"},oI={class:"controls mb-4"},aI={class:"top"},lI={class:"bottom"},uI={class:"flex flex-row justify-between"},cI={class:"text-xs text-muted text-right"},fI={class:"text-xs text-muted text-left"},dI={class:"aux flex flex-row justify-between"},hI={class:"flex flex-row"},pI=Le({__name:"Player",setup(e){const t=kt(),n=ns(),s=ce(null),o=ce(null),a=ce(""),u=Pe(()=>t.sharedPlayer.connections.map(y=>({value:y.id,label:y.friendlyName})));Xe(a,y=>{var m;y===((m=t.sharedPlayer.me)==null?void 0:m.id)?(t.sharedPlayer.makeMePlayer(),t.setPlaying(!1)):c(y)}),Xe(()=>t.sharedPlayer.connections,y=>{var m;(!a.value||!y.find(w=>w.id===a.value))&&(a.value=(m=t.sharedPlayer.me)==null?void 0:m.id)}),Xe(()=>t.progressPercent,y=>{o.value=y});const c=y=>{const m=t.sharedPlayer.connections.find(w=>w.id===y);m&&(t.sharedPlayer.setPlayer(m),s.value=t.sharedPlayer)};Mt(()=>{var y;a.value=(y=t.sharedPlayer.me)==null?void 0:y.id}),Xe(s,()=>{t.setPlayer(s.value)}),Mt(()=>{t.setPlayer(s.value)});const f=ce(!1),p=Pe(()=>{var y;return a.value===((y=t.sharedPlayer.me)==null?void 0:y.id)}),h=Pe(()=>n.player.type==="web"&&p.value),g=Pe(()=>n.player.type==="web/wave"&&p.value);return(y,m)=>{const w=ws("router-link");return B(),ne("div",{class:$e(["player",{"inset-0":f.value}])},[te(H3,{src:K(t).song.cover,direction:"to top right"},null,8,["src"]),h.value?(B(),Fe(S3,{key:0,ref_key:"playable",ref:s},null,512)):xe("",!0),K(Rc)?(B(),ne("div",eI,[K(Rc)&&!p.value?(B(),ne("audio",{key:0,id:"hijackVolume",onVolumechange:m[14]||(m[14]=x=>K(t).setVolume(x.target.volume*100))},null,32)):xe("",!0),ni(F("div",{class:"small",onClick:m[18]||(m[18]=x=>f.value=!0)},[te(Jr,{src:K(t).song.cover,class:"cover rounded-md"},null,8,["src"]),F("div",tI,[te(_r,{text:K(t).song.title,class:"text-sm"},null,8,["text"]),te(_r,{text:K(t).song.artist,class:"text-xs text-muted"},null,8,["text"])]),te(rc,{modelValue:a.value,"onUpdate:modelValue":m[15]||(m[15]=x=>a.value=x),class:$e({"on-this-device":p.value}),options:u.value,icon:"devices",onClick:m[16]||(m[16]=gt(()=>{},["stop"]))},null,8,["modelValue","class","options"]),F("span",{class:"cursor-pointer material-symbols-rounded ms-fill text-xl",onClick:m[17]||(m[17]=gt((...x)=>K(t).playPause&&K(t).playPause(...x),["stop"]))},Se(K(t).playing?"pause":"play_arrow"),1)],512),[[uo,!f.value]]),ni(F("div",nI,[F("div",null,[F("span",{class:"material-symbols-rounded ms-wght-500",onClick:m[19]||(m[19]=x=>f.value=!1)}," expand_more ")]),te(w,{class:"my-auto linkOnHover",to:"/player"},{default:xt(()=>[te(Jr,{src:K(t).song.cover,class:"cover rounded-md"},null,8,["src"])]),_:1}),F("div",rI,[F("div",sI,[m[31]||(m[31]=F("div",{class:"rest"},null,-1)),F("div",iI,[te(w,{to:`/track/${K(Vp)(K(t).song.id)}`,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:K(t).song.title,class:"text-2xl font-bold"},null,8,["text"])]),_:1},8,["to"]),te(w,{to:`/search/${K(t).song.artist}`,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:K(t).song.artist,class:"text-muted text-xs"},null,8,["text"])]),_:1},8,["to"])])]),F("div",oI,[F("div",aI,[F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[20]||(m[20]=(...x)=>K(t).toggleShuffle&&K(t).toggleShuffle(...x))},Se(K(t).shuffleIcon),1),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:m[21]||(m[21]=(...x)=>K(t).previous&&K(t).previous(...x))}," skip_previous "),F("span",{class:"cursor-pointer material-symbols-rounded ms-fill text-4xl",onClick:m[22]||(m[22]=(...x)=>K(t).playPause&&K(t).playPause(...x))},Se(K(t).playing?"pause_circle":"play_circle"),1),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:m[23]||(m[23]=(...x)=>K(t).next&&K(t).next(...x))}," skip_next "),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[24]||(m[24]=(...x)=>K(t).toggleRepeat&&K(t).toggleRepeat(...x))},Se(K(t).repeat),1)]),F("div",lI,[te(nc,{modelValue:o.value,"onUpdate:modelValue":m[25]||(m[25]=x=>o.value=x),max:1e3,onChange:m[26]||(m[26]=x=>K(t).seekPercent(x/10))},null,8,["modelValue"]),F("div",uI,[F("span",cI,Se(K(t).displayProgress),1),F("span",fI,Se(K(t).displayDuration),1)])])]),F("div",dI,[F("div",hI,[F("span",{class:$e([{"ms-fill":K(t).song.favourite},"favourite text-xl cursor-pointer material-symbols-rounded ms-wght-300"]),onClick:m[27]||(m[27]=(...x)=>K(t).toggleFavourite&&K(t).toggleFavourite(...x))}," favorite ",2),K(n).player.pictureInPicture?(B(),ne(Ve,{key:0},[K(Qn)=="loading"?(B(),Fe(pg,{key:0})):(B(),ne("span",{key:1,class:"favourite material-icons-round cursor-pointer text-xl ml-2",onClick:m[28]||(m[28]=(...x)=>K(Ta)&&K(Ta)(...x))},Se(K(Qn)=="ready"?"picture_in_picture_alt":"error"),1))],64)):xe("",!0)]),te(rc,{modelValue:a.value,"onUpdate:modelValue":m[29]||(m[29]=x=>a.value=x),class:$e({"on-this-device":p.value}),options:u.value,icon:"devices"},null,8,["modelValue","class","options"])])])],512),[[uo,f.value]])])):(B(),ne("div",V3,[F("div",W3,[te(w,{class:"linkOnHover",to:"/player"},{default:xt(()=>[K(t).loaded?(B(),Fe(Jr,{key:0,src:K(t).song.cover,class:"cover rounded-md",name:K(t).song.title},null,8,["src","name"])):xe("",!0)]),_:1}),K(t).loaded?(B(),ne(Ve,{key:0},[F("div",U3,[te(w,{to:`/track/${K(Vp)(K(t).song.id)}`,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:K(t).song.title,class:""},null,8,["text"])]),_:1},8,["to"]),te(cy,{artist:K(t).song.artist,class:"text-muted text-xs"},null,8,["artist"])]),F("span",{class:$e([{"ms-fill":K(t).song.favourite},"favourite text-xl cursor-pointer material-symbols-rounded ms-wght-300"]),onClick:m[0]||(m[0]=(...x)=>K(t).toggleFavourite&&K(t).toggleFavourite(...x))}," favorite ",2),K(n).player.pictureInPicture?(B(),ne(Ve,{key:0},[K(Qn)=="loading"?(B(),Fe(pg,{key:0})):(B(),ne("span",{key:1,class:"favourite material-icons-round cursor-pointer text-xl",onClick:m[1]||(m[1]=(...x)=>K(Ta)&&K(Ta)(...x))},Se(K(Qn)=="ready"?"picture_in_picture_alt":"error"),1))],64)):xe("",!0)],64)):(B(),Fe(w,{key:1,to:"/collection/playlists"},{default:xt(()=>[te(_r,{class:"text-xs text-muted",text:"Nothing playing yet..."})]),_:1}))]),F("div",q3,[F("div",K3,[F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[2]||(m[2]=(...x)=>K(t).toggleShuffle&&K(t).toggleShuffle(...x))},Se(K(t).shuffleIcon),1),F("span",{class:$e([{"cursor-not-allowed":!K(t).loaded},"icon cursor-pointer material-symbols-rounded ms-fill"]),disabled:!K(t).loaded,onClick:m[3]||(m[3]=(...x)=>K(t).previous&&K(t).previous(...x))}," skip_previous ",10,G3),F("span",{class:$e([{"cursor-not-allowed":!K(t).loaded},"cursor-pointer material-symbols-rounded ms-fill text-4xl"]),disabled:!K(t).loaded,onClick:m[4]||(m[4]=(...x)=>K(t).playPause&&K(t).playPause(...x))},Se(K(t).playing?"pause_circle":"play_circle"),11,j3),F("span",{class:$e([{"cursor-not-allowed":!K(t).loaded},"icon cursor-pointer material-symbols-rounded ms-fill"]),disabled:!K(t).loaded,onClick:m[5]||(m[5]=(...x)=>K(t).next&&K(t).next(...x))}," skip_next ",10,z3),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[6]||(m[6]=(...x)=>K(t).toggleRepeat&&K(t).toggleRepeat(...x))},Se(K(t).repeat),1)]),F("div",Y3,[F("div",J3,[F("span",{class:"text-xs text-muted text-right cursor-pointer",onClick:m[7]||(m[7]=x=>K(n).player.type=K(n).player.type==="web"?"web/wave":"web")},Se(K(t).displayProgress),1),g.value?(B(),Fe(B3,{key:0,ref_key:"playable",ref:s},null,512)):(B(),Fe(nc,{key:1,modelValue:o.value,"onUpdate:modelValue":m[8]||(m[8]=x=>o.value=x),max:1e3,onChange:m[9]||(m[9]=x=>K(t).seekPercent(x/10))},null,8,["modelValue"])),F("span",X3,Se(K(t).displayDuration),1)])])]),F("div",Z3,[te(w,{to:"/sing-along",class:"icon select-none"},{default:xt(()=>[K(t).loaded&&K(t).hasLyrics?(B(),ne("span",Q3," mic ")):xe("",!0)]),_:1}),te(w,{to:"/player",class:"icon select-none"},{default:xt(()=>m[30]||(m[30]=[F("span",{class:"cursor-pointer material-symbols-rounded ms-fill"}," queue_music ",-1)])),_:1}),te(rc,{modelValue:a.value,"onUpdate:modelValue":m[10]||(m[10]=x=>a.value=x),class:$e([{"on-this-device":p.value},"select-none"]),options:u.value,icon:"devices"},null,8,["modelValue","class","options"]),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill select-none",onClick:m[11]||(m[11]=(...x)=>K(t).toggleMute&&K(t).toggleMute(...x))},Se(K(t).muteIcon),1),te(nc,{modelValue:K(t).volume,"onUpdate:modelValue":m[12]||(m[12]=x=>K(t).volume=x),max:100,onChange:m[13]||(m[13]=x=>K(t).setVolume(x))},null,8,["modelValue"])])]))],2)}}}),my=tt(pI,[["__scopeId","data-v-ed8a9309"]]),gI=1,mI=1,vI=1,E5=e=>({type:"song",version:gI,song:e}),yI=async e=>{const t={type:"playlist",version:mI};if(e.type==="special")return null;if(e.type==="classic"){const n=Object.assign({},e);return delete n.queue,delete n.cursor,{...t,playlist:n}}if(e.type==="smart"){const n=await IT(e.id);return{...t,playlist:{name:e.name,description:e.description,cover:e.cover,type:e.type,definition:n,plays:e.plays,id:e.id,href:e.href}}}},C5=async e=>({type:"collection",version:vI,collection:await Promise.all(e.filter(t=>t.type!="special").map(yI))}),A5=(e,t="my")=>{var n="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(e)),s=document.createElement("a");s.setAttribute("href",n),s.setAttribute("download",`${t}.one.${e.type}`),s.click()},_I=async e=>{if(!e.length)return;const t=window.location.pathname;if(!t.startsWith("/playlist/")){Er.addError("No playlist selected","Please select open the playlist you want to add songs to",3e3);return}const n=t.split("/")[2],s=nn().getPlaylistById(n);if(s.type!=="classic"){Er.addError("Can't add songs to this playlist","You can only add songs to classic playlists",3e3);return}console.log("adding songs to playlist",s),await ty(s.id,e.map(o=>o.song)),Er.addSuccess(`Added ${e.length} songs to ${s.name}`,null,3e3)},bI=async e=>{const t=e.playlist,n=await df(t.type,t.name,t.description,t.cover);if(t.type==="smart"){await MT(n,t.definition);return}await ty(n,t.songs)},wI=async e=>{if(e.length){for(const t of e)await bI(t);Er.addSuccess(`Added ${e.length} playlists`,null,3e3),nn().fetchPlaylists()}},xI=e=>{const t=e.filter(o=>o.type==="song");_I(t);const n=e.filter(o=>o.type==="playlist"),s=e.filter(o=>o.type==="collection");for(const o of s)n.push(...o.collection);wI(n)},SI=Le({__name:"DropImport",setup(e){const t=ce(!1),n=GP(),s=nn(),o=Pe(()=>n.path.startsWith("/playlist/")),a=Pe(()=>{if(!o.value)return null;const h=n.params.id;return s.getPlaylistById(h)}),u=Pe(()=>a.value?a.value.type==="classic":!1),c=async h=>{const g=[];for(let w=0;wJSON.parse(w));xI(m)},f=h=>{if(t.value=!1,!u)return;const g=h.dataTransfer.files;g.length&&c(g)},p=h=>{h.currentTarget.contains(h.relatedTarget)||(t.value=!1)};return(h,g)=>(B(),ne("div",{class:$e(["dropzone",{drophover:t.value}]),onDrop:gt(f,["prevent"]),onDragenter:g[0]||(g[0]=gt(()=>{},["prevent"])),onDragover:g[1]||(g[1]=gt(y=>t.value=!0,["prevent"])),onDragleave:gt(p,["prevent"])},[xs(h.$slots,"default",{},void 0,!0)],34))}}),EI=tt(SI,[["__scopeId","data-v-a582fe63"]]),CI=["src"],AI={id:"appRoot",class:"appRoot"},TI={class:"interface"},PI={name:"App",components:{Sidebar:hy,Body:py,Player:my},async mounted(){u3(),Bv(),await c3()&&this.$router.push("/welcome"),await f3()},data(){return{maximised:!1}},watch:{$route(e){document.title=e.meta.title||"reAudioPlayer One"}}},RI=Le({...PI,setup(e){fy();const t=kt(),n=ns(),s=ce(null);Xe(()=>t.song.cover,()=>{o()});const o=async()=>{s.value=await Ya(t.song.cover,t.song.title,200)},a=async()=>{s.value=await mf(t.song.title,200)};o();const u=Pe(()=>window.getCurrentThemeProperty("coverAsBackground"));return Mt(()=>{window.addEventListener("keydown",c=>{c.code==="Space"&&document.activeElement===document.body?(c.preventDefault(),t.playPause()):c.code==="F1"&&(c.preventDefault(),n.mode.toggle())})}),(c,f)=>(B(),ne(Ve,null,[F("div",{class:$e([{hidden:!u.value},"bgImageWrapper"])},[F("div",{style:sr({backgroundImage:`url(${s.value})`}),class:"bgImage"},[F("img",{src:s.value,class:"hidden",onError:a},null,40,CI)],4)],2),te(EI,null,{default:xt(()=>[F("div",AI,[K(t).ready?(B(),ne(Ve,{key:0},[te(yO),F("div",TI,[c.maximised?xe("",!0):(B(),Fe(hy,{key:0})),te(py,{onMaximise:f[0]||(f[0]=p=>c.maximised=p)})]),te(my),c.maximised?xe("",!0):(B(),Fe(sR,{key:0}))],64)):(B(),Fe(AO,{key:1}))])]),_:1}),f[1]||(f[1]=F("div",{id:"popup-target"},null,-1)),f[2]||(f[2]=F("div",{id:"dropdown-target"},null,-1)),f[3]||(f[3]=F("div",{id:"autocomplete-target"},null,-1)),f[4]||(f[4]=F("div",{id:"fullscreen-target"},null,-1)),te(BO)],64))}});function Ma(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ma=function(t){return typeof t}:Ma=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ma(e)}function kI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function OI(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:{},s,o,a,u=function(f){for(var p=arguments.length,h=new Array(p>1?p-1:0),g=1;g1){var p=c.find(function(g){return g.isIntersecting});p&&(f=p)}if(o.callback){var h=f.isIntersecting&&f.intersectionRatio>=o.threshold;if(h===o.oldResult)return;o.oldResult=h,o.callback(h,f)}},this.options.intersection),s.context.$nextTick(function(){o.observer&&o.observer.observe(o.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),e}();function yy(e,t,n){var s=t.value;if(s)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var o=new FI(e,s,n);e._vue_visibilityState=o}}function BI(e,t,n){var s=t.value,o=t.oldValue;if(!vy(s,o)){var a=e._vue_visibilityState;if(!s){_y(e);return}a?a.createObserver(s,n):yy(e,{value:s},n)}}function _y(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var La={bind:yy,update:BI,unbind:_y};function HI(e){e.directive("observe-visibility",La)}var VI={version:"1.0.0",install:HI},Ja=null;typeof window<"u"?Ja=window.Vue:typeof global<"u"&&(Ja=global.Vue);Ja&&Ja.use(VI);var by=function(t,n){var s,o=n.arg;if(!o){console.error("参数有误");return}var a=n.value,u=dt(o)?o.value:(s=n.instance)===null||s===void 0?void 0:s.$refs[o];if(!u){console.error("没有找到 ".concat(o," 对应的实例"));return}if(typeof u.addReference!="function"){console.error("".concat(o," 对应的实例不是 VContextmenu"));return}t.$contextmenuKey=o,u.addReference(t,a)},wy=function(t,n){var s,o=t.$contextmenuKey;if(o){var a=(s=n.instance)===null||s===void 0?void 0:s.$refs[o];a==null||a.removeReference(t)}},WI=function(t,n){wy(t,n),by(t,n)},UI={mounted:by,updated:WI,beforeUnmount:wy},pt={contextmenu:"v-contextmenu",contextmenuIcon:"v-contextmenu-icon",contextmenuInner:"v-contextmenu-inner",contextmenuDivider:"v-contextmenu-divider",contextmenuItem:"v-contextmenu-item",contextmenuItemHover:"v-contextmenu-item--hover",contextmenuItemDisabled:"v-contextmenu-item--disabled",contextmenuGroup:"v-contextmenu-group",contextmenuGroupTitle:"v-contextmenu-group__title",contextmenuGroupMenus:"v-contextmenu-group__menus",contextmenuSubmenu:"v-contextmenu-submenu",contextmenuSubmenuTitle:"v-contextmenu-submenu__title",contextmenuSubmenuMenus:"v-contextmenu-submenu__menus",contextmenuSubmenuMenusTop:"v-contextmenu-submenu__menus--top",contextmenuSubmenuMenusRight:"v-contextmenu-submenu__menus--right",contextmenuSubmenuMenusBottom:"v-contextmenu-submenu__menus--bottom",contextmenuSubmenuMenusLeft:"v-contextmenu-submenu__menus--left",contextmenuSubmenuArrow:"v-contextmenu-submenu__arrow"};function qI(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!tr(e)}var KI={trigger:["contextmenu"]},yg=Le({name:"VContextmenu",props:{modelValue:{type:Boolean,default:!1},autoAjustPlacement:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},teleport:{type:[String,Object],default:function(){return"body"}}},emits:["show","hide","update:modelValue"],setup:function(t,n){var s=n.emit,o=ce(null),a=ce(t.modelValue||!1),u=function(S){a.value=S,s("update:modelValue",S)},c=ce({top:0,left:0}),f=Pe(function(){return{top:"".concat(c.value.top,"px"),left:"".concat(c.value.left,"px")}}),p=ce(null),h=function(S,T){var k=S instanceof Event?T:S,W=(k==null?void 0:k.autoAjustPlacement)||t.autoAjustPlacement,U={top:(k==null?void 0:k.top)||0,left:(k==null?void 0:k.left)||0};if(S instanceof Event){var Y,$;S.preventDefault(),U.top=(Y=k==null?void 0:k.top)!==null&&Y!==void 0?Y:S.pageY,U.left=($=k==null?void 0:k.left)!==null&&$!==void 0?$:S.pageX}u(!0),qn(function(){if(W){var q=o.value;if(!q)return;var le=q.clientWidth,J=q.clientHeight;if(J+U.top>=window.innerHeight+window.scrollY){var ge=U.top-J;ge>window.scrollY&&(U.top=ge)}if(le+U.left>=window.innerWidth+window.scrollX){var Ie=U.left-le;Ie>window.scrollX&&(U.left=Ie)}}c.value=U,s("show")})},g=function(){p.value=null,u(!1),s("hide")},y=Ts(new Map),m=ce(),w=Pe(function(){return m.value&&y.get(m.value)}),x=function(S,T){var k=function(){return T!=null&&T.trigger?Array.isArray(T.trigger)?T.trigger:[T.trigger]:KI.trigger}(),W=function(Y){t.disabled||(m.value=S,h(Y,{}))};k.forEach(function(U){S.addEventListener(U,W)}),y.set(S,{triggers:k,handler:W})},R=function(S){var T=y.get(S);T&&(T.triggers.forEach(function(k){S.removeEventListener(k,T.handler)}),y.delete(S))},O=function(S){if(!(!S.target||!o.value||!m.value)){var T=o.value.contains(S.target)||w.value&&w.value.triggers.includes("click")&&m.value.contains(S.target);T||u(!1)}};return Xe(a,function(L){L?document.addEventListener("click",O):document.removeEventListener("click",O)}),yo(function(){document.removeEventListener("click",O)}),Sr("visible",a),Sr("autoAjustPlacement",t.autoAjustPlacement),Sr("show",h),Sr("hide",g),{visible:a,style:f,currentReferenceOptions:w,currentOptions:p,contextmenuRef:o,addReference:x,removeReference:R,toggle:u,show:h,hide:g}},methods:{renderContent:function(){var t,n;return ni(te("div",{class:pt.contextmenu,ref:"contextmenuRef",style:this.style},[te("ul",{class:pt.contextmenuInner},[(t=(n=this.$slots).default)===null||t===void 0?void 0:t.call(n,{triggerOptions:"currentReferenceOptions",options:"currentOptions"})])]),[[uo,"visible"]])}},render:function(){var t;return this.visible?this.teleport?te(hi,{to:this.teleport},qI(t=this.renderContent())?t:{default:function(){return[t]}}):this.renderContent():null}});function bn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _g=Le({name:"VContextmenuItem",props:{disabled:{type:Boolean,default:!1},hideOnClick:{type:Boolean,default:!0}},emits:["click","mouseenter","mouseleave"],setup:function(t,n){var s=n.emit,o=rn("hide"),a=ce(!1),u=Pe(function(){var h;return h={},bn(h,pt.contextmenuItem,!0),bn(h,pt.contextmenuItemDisabled,t.disabled),bn(h,pt.contextmenuItemHover,a.value),h}),c=function(g){t.disabled||(s("click",g),t.hideOnClick&&(o==null||o()))},f=function(g){t.disabled||(a.value=!0,s("mouseenter",g))},p=function(g){t.disabled||(a.value=!1,s("mouseleave",g))};return{classes:u,handleClick:c,handleMouseenter:f,handleMouseleave:p}},render:function(){var t,n;return te("li",{class:this.classes,onClick:this.handleClick,onMouseenter:this.handleMouseenter,onMouseleave:this.handleMouseleave},[(t=(n=this.$slots).default)===null||t===void 0?void 0:t.call(n)])}}),bg=Le({name:"VContextmenuDivider",render:function(){return te("li",{class:pt.contextmenuDivider},null)}}),GI=Le({name:"VContextmenuIcon",props:{name:{type:String,required:!0}},render:function(){return te("i",{class:[pt.contextmenuIcon,"".concat(pt.contextmenuIcon,"-").concat(this.name)]},null)}}),wg=Le({name:"VContextmenuSubmenu",props:{title:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["mouseenter","mouseleave"],setup:function(t,n){var s=n.emit,o=ce(null),a=rn("autoAjustPlacement"),u=ce(["top","right"]),c=ce(!1),f=function(m){t.disabled||(c.value=!0,s("mouseenter",m),qn(function(){var w=[];if(a){var x=m.target,R=x.getBoundingClientRect();if(!o.value)return;var O=o.value.clientWidth,L=o.value.clientHeight;R.right+O>=window.innerWidth?w.push("left"):w.push("right"),R.bottom+L>=window.innerHeight?w.push("bottom"):w.push("top")}u.value=w}))},p=function(m){t.disabled||(c.value=!1,s("mouseleave",m))},h=Pe(function(){var y;return y={},bn(y,pt.contextmenuItem,!0),bn(y,pt.contextmenuSubmenuTitle,!0),bn(y,pt.contextmenuItemHover,c.value),bn(y,pt.contextmenuItemDisabled,t.disabled),y}),g=Pe(function(){var y;return y={},bn(y,pt.contextmenu,!0),bn(y,pt.contextmenuSubmenuMenus,!0),bn(y,pt.contextmenuSubmenuMenusTop,u.value.includes("top")),bn(y,pt.contextmenuSubmenuMenusRight,u.value.includes("right")),bn(y,pt.contextmenuSubmenuMenusBottom,u.value.includes("bottom")),bn(y,pt.contextmenuSubmenuMenusLeft,u.value.includes("left")),y});return{hover:c,submenuRef:o,titleClasses:h,menusClasses:g,handleMouseenter:f,handleMouseleave:p}},render:function(){var t,n,s,o;return te("li",{class:pt.contextmenuSubmenu,onMouseenter:this.handleMouseenter,onMouseleave:this.handleMouseleave},[te("div",{class:this.titleClasses},[((t=(n=this.$slots).title)===null||t===void 0?void 0:t.call(n))||this.title,te("span",{class:pt.contextmenuSubmenuArrow},[te(GI,{name:"right-arrow"},null)])]),this.hover?te("div",{ref:"submenuRef",class:this.menusClasses},[te("ul",{class:pt.contextmenuInner},[(s=(o=this.$slots).default)===null||s===void 0?void 0:s.call(o)])]):null])}}),xg=Le({name:"VContextmenuGroup",props:{title:{type:String,default:void 0},maxWidth:{type:[Number,String],default:void 0}},setup:function(t){var n=Pe(function(){if(t.maxWidth)return{"max-width":typeof t.maxWidth=="number"?"".concat(t.maxWidth,"px"):t.maxWidth,"overflow-x":"auto"}});return{style:n}},methods:{renderTitle:function(){var t,n,s=((t=(n=this.$slots).title)===null||t===void 0?void 0:t.call(n))||this.title;return s?te("div",{class:pt.contextmenuGroupTitle},[s]):null}},render:function(){var t,n;return te("li",{class:pt.contextmenuGroup},[this.renderTitle(),te("ul",{style:this.style,class:pt.contextmenuGroupMenus},[(t=(n=this.$slots).default)===null||t===void 0?void 0:t.call(n)])])}}),jI="3.0.0",zI=function(t){t.directive("contextmenu",UI),t.component(yg.name,yg),t.component(_g.name,_g),t.component(bg.name,bg),t.component(wg.name,wg),t.component(xg.name,xg)},YI={install:zI,version:jI};const El=za(RI);El.directive("observe-visibility",{beforeMount:(e,t,n)=>{n.context=t.instance,La.bind(e,t,n)},updated:La.update,unmounted:La.unbind});El.use(YI);El.use(Xs);El.use(aT()).mount("#app");export{i5 as $,Pe as A,Xe as B,dy as C,fO as D,Jr as E,Ve as F,tO as G,cy as H,dg as I,gt as J,$e as K,iy as L,_r as M,Er as N,qn as O,Dk as P,xm as Q,ff as R,b5 as S,dO as T,XR as U,a5 as V,IT as W,rc as X,Lc as Y,MT as Z,tt as _,F as a,PE as a$,MA as a0,ni as a1,ja as a2,Q2 as a3,hi as a4,kt as a5,H3 as a6,d5 as a7,oy as a8,QI as a9,C5 as aA,ty as aB,o5 as aC,f5 as aD,xI as aE,xl as aF,w5 as aG,c3 as aH,yf as aI,nc as aJ,Ya as aK,ly as aL,eO as aM,st as aN,wn as aO,it as aP,ot as aQ,Mn as aR,fi as aS,It as aT,Ue as aU,ve as aV,rE as aW,ci as aX,Qs as aY,Sg as aZ,ms as a_,ey as aa,nA as ab,yI as ac,A5 as ad,RT as ae,uo as af,e5 as ag,r5 as ah,p5 as ai,n5 as aj,Jk as ak,g5 as al,zP as am,m5 as an,t5 as ao,cf as ap,Qm as aq,x5 as ar,bk as as,S5 as at,sy as au,ns as av,Dv as aw,uy as ax,_5 as ay,y5 as az,bo as b,CE as b0,AE as b1,TE as b2,Ag as b3,dn as b4,mE as b5,ZI as b6,XI as b7,u5 as b8,WT as b9,l5 as ba,v5 as bb,E5 as bc,pg as bd,Rc as be,h5 as bf,c5 as bg,ne as c,xe as d,Le as e,ws as f,te as g,ir as h,Fe as i,nn as j,s5 as k,ce as l,wl as m,f3 as n,B as o,Pc as p,ay as q,xs as r,df as s,Se as t,K as u,Mt as v,xt as w,sr as x,Vp as y,GP as z}; + `,[t,n]}setOptions(t){if(this.options.container!==t.container){const n=this.parentFromOptionsContainer(t.container);n.appendChild(this.container),this.parent=n}t.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=t,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(t){this.scrollContainer.scrollLeft=t}setScrollPercentage(t){const{scrollWidth:n}=this.scrollContainer,s=n*t;this.setScroll(s)}destroy(){var t,n;this.subscriptions.forEach(s=>s()),this.container.remove(),(t=this.resizeObserver)===null||t===void 0||t.disconnect(),(n=this.unsubscribeOnScroll)===null||n===void 0||n.forEach(s=>s()),this.unsubscribeOnScroll=[]}createDelay(t=10){let n,s;const o=()=>{n&&clearTimeout(n),s&&s()};return this.timeouts.push(o),()=>new Promise((a,u)=>{o(),s=u,n=setTimeout(()=>{n=void 0,s=void 0,a()},t)})}convertColorValues(t){if(!Array.isArray(t))return t||"";if(t.length<2)return t[0]||"";const n=document.createElement("canvas"),s=n.getContext("2d"),o=n.height*(window.devicePixelRatio||1),a=s.createLinearGradient(0,0,0,o),u=1/(t.length-1);return t.forEach((c,f)=>{const p=f*u;a.addColorStop(p,c)}),a}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(t,n,s,o){const a=t[0],u=t[1]||t[0],c=a.length,{width:f,height:p}=s.canvas,h=p/2,g=this.getPixelRatio(),y=n.barWidth?n.barWidth*g:1,m=n.barGap?n.barGap*g:n.barWidth?y/2:0,w=n.barRadius||0,x=f/(y+m)/c,R=w&&"roundRect"in s?"roundRect":"rect";s.beginPath();let O=0,L=0,S=0;for(let T=0;T<=c;T++){const k=Math.round(T*x);if(k>O){const Y=Math.round(L*h*o),$=Y+Math.round(S*h*o)||1;let q=h-Y;n.barAlign==="top"?q=0:n.barAlign==="bottom"&&(q=p-$),s[R](O*(y+m),q,y,$,w),O=k,L=0,S=0}const W=Math.abs(a[T]||0),U=Math.abs(u[T]||0);W>L&&(L=W),U>S&&(S=U)}s.fill(),s.closePath()}renderLineWaveform(t,n,s,o){const a=u=>{const c=t[u]||t[0],f=c.length,{height:p}=s.canvas,h=p/2,g=s.canvas.width/f;s.moveTo(0,h);let y=0,m=0;for(let w=0;w<=f;w++){const x=Math.round(w*g);if(x>y){const O=h+(Math.round(m*h*o)||1)*(u===0?-1:1);s.lineTo(y,O),y=x,m=0}const R=Math.abs(c[w]||0);R>m&&(m=R)}s.lineTo(y,h)};s.beginPath(),a(0),a(1),s.fill(),s.closePath()}renderWaveform(t,n,s){if(s.fillStyle=this.convertColorValues(n.waveColor),n.renderFunction)return void n.renderFunction(t,s);let o=n.barHeight||1;if(n.normalize){const a=Array.from(t[0]).reduce((u,c)=>Math.max(u,Math.abs(c)),0);o=a?1/a:1}n.barWidth||n.barGap||n.barAlign?this.renderBarWaveform(t,n,s,o):this.renderLineWaveform(t,n,s,o)}renderSingleCanvas(t,n,s,o,a,u,c){const f=this.getPixelRatio(),p=document.createElement("canvas");p.width=Math.round(s*f),p.height=Math.round(o*f),p.style.width=`${s}px`,p.style.height=`${o}px`,p.style.left=`${Math.round(a)}px`,u.appendChild(p);const h=p.getContext("2d");if(this.renderWaveform(t,n,h),p.width>0&&p.height>0){const g=p.cloneNode(),y=g.getContext("2d");y.drawImage(p,0,0),y.globalCompositeOperation="source-in",y.fillStyle=this.convertColorValues(n.progressColor),y.fillRect(0,0,p.width,p.height),c.appendChild(g)}}renderMultiCanvas(t,n,s,o,a,u){const c=this.getPixelRatio(),{clientWidth:f}=this.scrollContainer,p=s/c;let h=Math.min(ui.MAX_CANVAS_WIDTH,f,p),g={};if(h===0)return;if(n.barWidth||n.barGap){const R=n.barWidth||.5,O=R+(n.barGap||R/2);h%O!=0&&(h=Math.floor(h/O)*O)}const y=R=>{if(R<0||R>=m||g[R])return;g[R]=!0;const O=R*h,L=Math.min(p-O,h);if(L<=0)return;const S=t.map(T=>{const k=Math.floor(O/p*T.length),W=Math.floor((O+L)/p*T.length);return T.slice(k,W)});this.renderSingleCanvas(S,n,L,o,O,a,u)},m=Math.ceil(p/h);if(!this.isScrollable){for(let R=0;R1){const R=this.on("scroll",()=>{const{scrollLeft:O}=this.scrollContainer,L=Math.floor(O/p*m);Object.keys(g).length>ui.MAX_NODES&&(a.innerHTML="",u.innerHTML="",g={}),y(L-1),y(L),y(L+1)});this.unsubscribeOnScroll.push(R)}}renderChannel(t,n,s,o){var{overlay:a}=n,u=function(h,g){var y={};for(var m in h)Object.prototype.hasOwnProperty.call(h,m)&&g.indexOf(m)<0&&(y[m]=h[m]);if(h!=null&&typeof Object.getOwnPropertySymbols=="function"){var w=0;for(m=Object.getOwnPropertySymbols(h);w0&&(c.style.marginTop=`-${f}px`),this.canvasWrapper.style.minHeight=`${f}px`,this.canvasWrapper.appendChild(c);const p=c.cloneNode();this.progressWrapper.appendChild(p),this.renderMultiCanvas(t,u,s,f,c,p)}render(t){return jt(this,void 0,void 0,function*(){var n;this.timeouts.forEach(f=>f()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);const s=this.getPixelRatio(),o=this.scrollContainer.clientWidth,a=Math.ceil(t.duration*(this.options.minPxPerSec||0));this.isScrollable=a>o;const u=this.options.fillParent&&!this.isScrollable,c=(u?o:a)*s;if(this.wrapper.style.width=u?"100%":`${a}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=t,this.emit("render"),this.options.splitChannels)for(let f=0;f1&&f.push(t.getChannelData(1)),this.renderChannel(f,this.options,c,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(s=>s()),this.unsubscribeOnScroll=[],!this.audioData)return;const{scrollWidth:t}=this.scrollContainer,{right:n}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&t!==this.scrollContainer.scrollWidth){const{right:s}=this.progressWrapper.getBoundingClientRect();let o=s-n;o*=2,o=o<0?Math.floor(o):Math.ceil(o),o/=2,this.scrollContainer.scrollLeft+=o}}zoom(t){this.options.minPxPerSec=t,this.reRender()}scrollIntoView(t,n=!1){const{scrollLeft:s,scrollWidth:o,clientWidth:a}=this.scrollContainer,u=t*o,c=s,f=s+a,p=a/2;if(this.isDragging)u+30>f?this.scrollContainer.scrollLeft+=30:u-30f)&&(this.scrollContainer.scrollLeft=u-(this.options.autoCenter?p:0));const h=u-s-p;n&&this.options.autoCenter&&h>0&&(this.scrollContainer.scrollLeft+=Math.min(h,10))}{const h=this.scrollContainer.scrollLeft,g=h/o,y=(h+a)/o;this.emit("scroll",g,y,h,h+a)}}renderProgress(t,n){if(isNaN(t))return;const s=100*t;this.canvasWrapper.style.clipPath=`polygon(${s}% 0, 100% 0, 100% 100%, ${s}% 100%)`,this.progressWrapper.style.width=`${s}%`,this.cursor.style.left=`${s}%`,this.cursor.style.transform=`translateX(-${Math.round(s)===100?this.options.cursorWidth:0}px)`,this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(t,n)}exportImage(t,n,s){return jt(this,void 0,void 0,function*(){const o=this.canvasWrapper.querySelectorAll("canvas");if(!o.length)throw new Error("No waveform data");if(s==="dataURL"){const a=Array.from(o).map(u=>u.toDataURL(t,n));return Promise.resolve(a)}return Promise.all(Array.from(o).map(a=>new Promise((u,c)=>{a.toBlob(f=>{f?u(f):c(new Error("Could not export image"))},t,n)})))})}}ui.MAX_CANVAS_WIDTH=8e3,ui.MAX_NODES=10;class $3 extends Co{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}}class mg extends Co{constructor(t=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=t,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return jt(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(t){if(this.currentSrc=t,this._duration=void 0,!t)return this.buffer=null,void this.emit("emptied");fetch(t).then(n=>{if(n.status>=400)throw new Error(`Failed to fetch ${t}: ${n.status} (${n.statusText})`);return n.arrayBuffer()}).then(n=>this.currentSrc!==t?null:this.audioContext.decodeAudioData(n)).then(n=>{this.currentSrc===t&&(this.buffer=n,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())})}_play(){var t;if(!this.paused)return;this.paused=!1,(t=this.bufferNode)===null||t===void 0||t.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let n=this.playedDuration*this._playbackRate;n>=this.duration&&(n=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,n),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var t;this.paused=!0,(t=this.bufferNode)===null||t===void 0||t.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return jt(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(t){var n,s;const o=t-this.currentTime;(n=this.bufferNode)===null||n===void 0||n.stop(this.audioContext.currentTime+o),(s=this.bufferNode)===null||s===void 0||s.addEventListener("ended",()=>{this.bufferNode=null,this.pause()},{once:!0})}setSinkId(t){return jt(this,void 0,void 0,function*(){return this.audioContext.setSinkId(t)})}get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate=t,this.bufferNode&&(this.bufferNode.playbackRate.value=t)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(t){const n=!this.paused;n&&this._pause(),this.playedDuration=t/this._playbackRate,n&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var t,n;return(t=this._duration)!==null&&t!==void 0?t:((n=this.buffer)===null||n===void 0?void 0:n.duration)||0}set duration(t){this._duration=t}get volume(){return this.gainNode.gain.value}set volume(t){this.gainNode.gain.value=t,this.emit("volumechange")}get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(t){return/^(audio|video)\//.test(t)}getGainNode(){return this.gainNode}getChannelData(){const t=[];if(!this.buffer)return t;const n=this.buffer.numberOfChannels;for(let s=0;s{this.emit("init");const{peaks:a,duration:u}=this.options;(o||a&&u)&&this.load(o,a,u).catch(()=>null)})}updateProgress(t=this.getCurrentTime()){return this.renderer.renderProgress(t/this.getDuration(),this.isPlaying()),t}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){const t=this.updateProgress();this.emit("timeupdate",t),this.emit("audioprocess",t)}}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{const t=this.updateProgress();this.emit("timeupdate",t)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop()}),this.onMediaEvent("emptied",()=>{this.timer.stop()}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish")}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",t=>{var n;this.emit("error",(n=this.getMediaElement().error)!==null&&n!==void 0?n:new Error("Media error"))}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(t,n)=>{this.options.interact&&(this.seekTo(t),this.emit("interaction",t*this.getDuration()),this.emit("click",t,n))}),this.renderer.on("dblclick",(t,n)=>{this.emit("dblclick",t,n)}),this.renderer.on("scroll",(t,n,s,o)=>{const a=this.getDuration();this.emit("scroll",t*a,n*a,s,o)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",t=>{this.emit("dragstart",t)}),this.renderer.on("dragend",t=>{this.emit("dragend",t)}));{let t;this.subscriptions.push(this.renderer.on("drag",n=>{if(!this.options.interact)return;let s;this.renderer.renderProgress(n),clearTimeout(t),this.isPlaying()?s=0:this.options.dragToSeek===!0?s=200:typeof this.options.dragToSeek=="object"&&this.options.dragToSeek!==void 0&&(s=this.options.dragToSeek.debounceTime),t=setTimeout(()=>{this.seekTo(n)},s),this.emit("interaction",n*this.getDuration()),this.emit("drag",n)}))}}initPlugins(){var t;!((t=this.options.plugins)===null||t===void 0)&&t.length&&this.options.plugins.forEach(n=>{this.registerPlugin(n)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(t=>t()),this.mediaSubscriptions=[]}setOptions(t){this.options=Object.assign({},this.options,t),t.duration&&!t.peaks&&(this.decodedData=Pa.createBuffer(this.exportPeaks(),t.duration)),t.peaks&&t.duration&&(this.decodedData=Pa.createBuffer(t.peaks,t.duration)),this.renderer.setOptions(this.options),t.audioRate&&this.setPlaybackRate(t.audioRate),t.mediaControls!=null&&(this.getMediaElement().controls=t.mediaControls)}registerPlugin(t){return t._init(this),this.plugins.push(t),this.subscriptions.push(t.once("destroy",()=>{this.plugins=this.plugins.filter(n=>n!==t)})),t}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(t){return this.renderer.setScroll(t)}setScrollTime(t){const n=t/this.getDuration();this.renderer.setScrollPercentage(n)}getActivePlugins(){return this.plugins}loadAudio(t,n,s,o){return jt(this,void 0,void 0,function*(){var a;if(this.emit("load",t),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,!n&&!s){const c=this.options.fetchParams||{};window.AbortController&&!c.signal&&(this.abortController=new AbortController,c.signal=(a=this.abortController)===null||a===void 0?void 0:a.signal);const f=p=>this.emit("loading",p);n=yield N3.fetchBlob(t,f,c)}this.setSrc(t,n);const u=yield new Promise(c=>{const f=o||this.getDuration();f?c(f):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>c(this.getDuration()),{once:!0}))});if(!t&&!n){const c=this.getMediaElement();c instanceof mg&&(c.duration=u)}if(s)this.decodedData=Pa.createBuffer(s,u||0);else if(n){const c=yield n.arrayBuffer();this.decodedData=yield Pa.decode(c,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(t,n,s){return jt(this,void 0,void 0,function*(){try{return yield this.loadAudio(t,void 0,n,s)}catch(o){throw this.emit("error",o),o}})}loadBlob(t,n,s){return jt(this,void 0,void 0,function*(){try{return yield this.loadAudio("",t,n,s)}catch(o){throw this.emit("error",o),o}})}zoom(t){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(t),this.emit("zoom",t)}getDecodedData(){return this.decodedData}exportPeaks({channels:t=2,maxLength:n=8e3,precision:s=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");const o=Math.min(t,this.decodedData.numberOfChannels),a=[];for(let u=0;uMath.abs(y)&&(y=w)}f.push(Math.round(y*s)/s)}a.push(f)}return a}getDuration(){let t=super.getDuration()||0;return t!==0&&t!==1/0||!this.decodedData||(t=this.decodedData.duration),t}toggleInteraction(t){this.options.interact=t}setTime(t){super.setTime(t),this.updateProgress(t),this.emit("timeupdate",t)}seekTo(t){const n=this.getDuration()*t;this.setTime(n)}playPause(){return jt(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(t){this.setTime(this.getCurrentTime()+t)}empty(){this.load("",[[0]],.001)}setMediaElement(t){this.unsubscribePlayerEvents(),super.setMediaElement(t),this.initPlayerEvents()}exportImage(){return jt(this,arguments,void 0,function*(t="image/png",n=1,s="dataURL"){return this.renderer.exportImage(t,n,s)})}destroy(){var t;this.emit("destroy"),(t=this.abortController)===null||t===void 0||t.abort(),this.plugins.forEach(n=>n.destroy()),this.subscriptions.forEach(n=>n()),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}}ho.BasePlugin=class extends Co{constructor(e){super(),this.subscriptions=[],this.options=e}onInit(){}_init(e){this.wavesurfer=e,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(e=>e())}},ho.dom=L3;const B3=Le({__name:"WaveAudio",setup(e,{expose:t}){const n=ce(null),s=new Audio;Mt(()=>{var L;const w=window.getCurrentTheme(),x=Cs["fg-base"][w],R=Cs["fg-secondary"][w];n.value=ho.create({container:"#waveform",waveColor:x,progressColor:R,cursorWidth:0,barWidth:1,barGap:3,height:(L=document.querySelector("#waveform"))==null?void 0:L.clientHeight,media:s}),n.value.on("play",()=>{o.setPlaying(!0)}),n.value.on("pause",()=>{o.setPlaying(!1)}),n.value.on("audioprocess",()=>{o.setProgress(n.value.getCurrentTime())}),n.value.on("finish",()=>{u||(u=!0,o.onSongEnded())}),n.value.on("ready",()=>{n.value&&(o.setDuration(n.value.getDuration()),(u||o.playing)&&(f(),u=!1))});const O=new AudioContext;n.value.once("play",()=>{const S=O.createMediaElementSource(s);S.connect(O.destination),a.setSource(S,O)})});const o=kt(),a=yf();let u=!1;const c=()=>{o.stream&&(s.src=o.stream,n.value.load(o.stream))};Mt(c),Xe(()=>o.song.id,()=>{n.value.isPlaying()&&(u=!0),c(),o.setPlaying(!1)});const f=()=>{try{n.value.play()}catch{}},p=()=>{n.value.pause()},h=w=>{n.value.seekTo(w/o.durationSeconds)},g=w=>{let x=w/100;x=Math.min(Math.max(x,0),1),n.value.setVolume(x)},y=w=>{n.value.setMuted(w)};return Mt(()=>{g(o.volume)}),t({play:f,pause:p,seek:h,setVolume:g,setMute:y}),(w,x)=>(B(),ne("div",{id:"waveform",onAudioprocess:x[0]||(x[0]=R=>K(o).setProgress(R))},null,32))}}),H3=Le({__name:"AmbientBackground",props:{src:{type:String,required:!0},direction:{type:String,required:!1,default:"to bottom"},placeholder:{type:String,required:!1}},setup(e){const t=ns(),n=e,s=ce(null),o=async(a=void 0)=>{if(!s.value)return;const u=a===void 0?Dv(n.src):a,c=await Ya(u,n.placeholder);try{await LR(s.value,c,n.direction)}catch(f){if(!(f instanceof Error)||!f.message.includes("Error loading image"))throw f;await o(null)}};return Xe(()=>n.src,()=>qn(o)),Mt(o),(a,u)=>e.src!=null&&K(t).ambient?(B(),ne("div",{key:0,ref_key:"ambientGradient",ref:s,class:"ambient-gradient absolute inset-0 pointer-events-none"},null,512)):xe("",!0)}}),V3={key:1,class:"desktop mx-4"},W3={class:"song-info"},U3={class:"title-artist"},q3={class:"controls"},K3={class:"top relative"},G3=["disabled"],j3=["disabled"],z3=["disabled"],Y3={class:"bottom"},J3={class:"display"},X3={class:"text-xs text-muted text-left"},Z3={class:"aux relative"},Q3={key:0,class:"cursor-pointer material-symbols-rounded ms-fill"},eI={key:2,class:"mobile mx-4"},tI={class:"artist-title overflow-hidden"},nI={class:"full"},rI={class:"rest"},sI={class:"song-info"},iI={class:"title-artist mb-4"},oI={class:"controls mb-4"},aI={class:"top"},lI={class:"bottom"},uI={class:"flex flex-row justify-between"},cI={class:"text-xs text-muted text-right"},fI={class:"text-xs text-muted text-left"},dI={class:"aux flex flex-row justify-between"},hI={class:"flex flex-row"},pI=Le({__name:"Player",setup(e){const t=kt(),n=ns(),s=ce(null),o=ce(null),a=ce(""),u=Pe(()=>t.sharedPlayer.connections.map(y=>({value:y.id,label:y.friendlyName})));Xe(a,y=>{var m;y===((m=t.sharedPlayer.me)==null?void 0:m.id)?(t.sharedPlayer.makeMePlayer(),t.setPlaying(!1)):c(y)}),Xe(()=>t.sharedPlayer.connections,y=>{var m;(!a.value||!y.find(w=>w.id===a.value))&&(a.value=(m=t.sharedPlayer.me)==null?void 0:m.id)}),Xe(()=>t.progressPercent,y=>{o.value=y});const c=y=>{const m=t.sharedPlayer.connections.find(w=>w.id===y);m&&(t.sharedPlayer.setPlayer(m),s.value=t.sharedPlayer)};Mt(()=>{var y;a.value=(y=t.sharedPlayer.me)==null?void 0:y.id}),Xe(s,()=>{t.setPlayer(s.value)}),Mt(()=>{t.setPlayer(s.value)});const f=ce(!1),p=Pe(()=>{var y;return a.value===((y=t.sharedPlayer.me)==null?void 0:y.id)}),h=Pe(()=>n.player.type==="web"&&p.value),g=Pe(()=>n.player.type==="web/wave"&&p.value);return(y,m)=>{const w=ws("router-link");return B(),ne("div",{class:$e(["player",{"inset-0":f.value}])},[te(H3,{src:K(t).song.cover,direction:"to top right"},null,8,["src"]),h.value?(B(),Fe(S3,{key:0,ref_key:"playable",ref:s},null,512)):xe("",!0),K(Rc)?(B(),ne("div",eI,[K(Rc)&&!p.value?(B(),ne("audio",{key:0,id:"hijackVolume",onVolumechange:m[14]||(m[14]=x=>K(t).setVolume(x.target.volume*100))},null,32)):xe("",!0),ni(F("div",{class:"small",onClick:m[18]||(m[18]=x=>f.value=!0)},[te(Jr,{src:K(t).song.cover,class:"cover rounded-md"},null,8,["src"]),F("div",tI,[te(_r,{text:K(t).song.title,class:"text-sm"},null,8,["text"]),te(_r,{text:K(t).song.artist,class:"text-xs text-muted"},null,8,["text"])]),te(rc,{modelValue:a.value,"onUpdate:modelValue":m[15]||(m[15]=x=>a.value=x),class:$e({"on-this-device":p.value}),options:u.value,icon:"devices",onClick:m[16]||(m[16]=gt(()=>{},["stop"]))},null,8,["modelValue","class","options"]),F("span",{class:"cursor-pointer material-symbols-rounded ms-fill text-xl",onClick:m[17]||(m[17]=gt((...x)=>K(t).playPause&&K(t).playPause(...x),["stop"]))},Se(K(t).playing?"pause":"play_arrow"),1)],512),[[uo,!f.value]]),ni(F("div",nI,[F("div",null,[F("span",{class:"material-symbols-rounded ms-wght-500",onClick:m[19]||(m[19]=x=>f.value=!1)}," expand_more ")]),te(w,{class:"my-auto linkOnHover",to:"/player"},{default:xt(()=>[te(Jr,{src:K(t).song.cover,class:"cover rounded-md"},null,8,["src"])]),_:1}),F("div",rI,[F("div",sI,[m[31]||(m[31]=F("div",{class:"rest"},null,-1)),F("div",iI,[te(w,{to:`/track/${K(Vp)(K(t).song.id)}`,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:K(t).song.title,class:"text-2xl font-bold"},null,8,["text"])]),_:1},8,["to"]),te(w,{to:`/search/${K(t).song.artist}`,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:K(t).song.artist,class:"text-muted text-xs"},null,8,["text"])]),_:1},8,["to"])])]),F("div",oI,[F("div",aI,[F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[20]||(m[20]=(...x)=>K(t).toggleShuffle&&K(t).toggleShuffle(...x))},Se(K(t).shuffleIcon),1),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:m[21]||(m[21]=(...x)=>K(t).previous&&K(t).previous(...x))}," skip_previous "),F("span",{class:"cursor-pointer material-symbols-rounded ms-fill text-4xl",onClick:m[22]||(m[22]=(...x)=>K(t).playPause&&K(t).playPause(...x))},Se(K(t).playing?"pause_circle":"play_circle"),1),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill",onClick:m[23]||(m[23]=(...x)=>K(t).next&&K(t).next(...x))}," skip_next "),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[24]||(m[24]=(...x)=>K(t).toggleRepeat&&K(t).toggleRepeat(...x))},Se(K(t).repeat),1)]),F("div",lI,[te(nc,{modelValue:o.value,"onUpdate:modelValue":m[25]||(m[25]=x=>o.value=x),max:1e3,onChange:m[26]||(m[26]=x=>K(t).seekPercent(x/10))},null,8,["modelValue"]),F("div",uI,[F("span",cI,Se(K(t).displayProgress),1),F("span",fI,Se(K(t).displayDuration),1)])])]),F("div",dI,[F("div",hI,[F("span",{class:$e([{"ms-fill":K(t).song.favourite},"favourite text-xl cursor-pointer material-symbols-rounded ms-wght-300"]),onClick:m[27]||(m[27]=(...x)=>K(t).toggleFavourite&&K(t).toggleFavourite(...x))}," favorite ",2),K(n).player.pictureInPicture?(B(),ne(Ve,{key:0},[K(Qn)=="loading"?(B(),Fe(pg,{key:0})):(B(),ne("span",{key:1,class:"favourite material-icons-round cursor-pointer text-xl ml-2",onClick:m[28]||(m[28]=(...x)=>K(Ta)&&K(Ta)(...x))},Se(K(Qn)=="ready"?"picture_in_picture_alt":"error"),1))],64)):xe("",!0)]),te(rc,{modelValue:a.value,"onUpdate:modelValue":m[29]||(m[29]=x=>a.value=x),class:$e({"on-this-device":p.value}),options:u.value,icon:"devices"},null,8,["modelValue","class","options"])])])],512),[[uo,f.value]])])):(B(),ne("div",V3,[F("div",W3,[te(w,{class:"linkOnHover",to:"/player"},{default:xt(()=>[K(t).loaded?(B(),Fe(Jr,{key:0,src:K(t).song.cover,class:"cover rounded-md",name:K(t).song.title},null,8,["src","name"])):xe("",!0)]),_:1}),K(t).loaded?(B(),ne(Ve,{key:0},[F("div",U3,[te(w,{to:`/track/${K(Vp)(K(t).song.id)}`,class:"linkOnHover"},{default:xt(()=>[te(_r,{text:K(t).song.title,class:""},null,8,["text"])]),_:1},8,["to"]),te(cy,{artist:K(t).song.artist,class:"text-muted text-xs"},null,8,["artist"])]),F("span",{class:$e([{"ms-fill":K(t).song.favourite},"favourite text-xl cursor-pointer material-symbols-rounded ms-wght-300"]),onClick:m[0]||(m[0]=(...x)=>K(t).toggleFavourite&&K(t).toggleFavourite(...x))}," favorite ",2),K(n).player.pictureInPicture?(B(),ne(Ve,{key:0},[K(Qn)=="loading"?(B(),Fe(pg,{key:0})):(B(),ne("span",{key:1,class:"favourite material-icons-round cursor-pointer text-xl",onClick:m[1]||(m[1]=(...x)=>K(Ta)&&K(Ta)(...x))},Se(K(Qn)=="ready"?"picture_in_picture_alt":"error"),1))],64)):xe("",!0)],64)):(B(),Fe(w,{key:1,to:"/collection/playlists"},{default:xt(()=>[te(_r,{class:"text-xs text-muted",text:"Nothing playing yet..."})]),_:1}))]),F("div",q3,[F("div",K3,[F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[2]||(m[2]=(...x)=>K(t).toggleShuffle&&K(t).toggleShuffle(...x))},Se(K(t).shuffleIcon),1),F("span",{class:$e([{"cursor-not-allowed":!K(t).loaded},"icon cursor-pointer material-symbols-rounded ms-fill"]),disabled:!K(t).loaded,onClick:m[3]||(m[3]=(...x)=>K(t).previous&&K(t).previous(...x))}," skip_previous ",10,G3),F("span",{class:$e([{"cursor-not-allowed":!K(t).loaded},"cursor-pointer material-symbols-rounded ms-fill text-4xl"]),disabled:!K(t).loaded,onClick:m[4]||(m[4]=(...x)=>K(t).playPause&&K(t).playPause(...x))},Se(K(t).playing?"pause_circle":"play_circle"),11,j3),F("span",{class:$e([{"cursor-not-allowed":!K(t).loaded},"icon cursor-pointer material-symbols-rounded ms-fill"]),disabled:!K(t).loaded,onClick:m[5]||(m[5]=(...x)=>K(t).next&&K(t).next(...x))}," skip_next ",10,z3),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-wght-300",onClick:m[6]||(m[6]=(...x)=>K(t).toggleRepeat&&K(t).toggleRepeat(...x))},Se(K(t).repeat),1)]),F("div",Y3,[F("div",J3,[F("span",{class:"text-xs text-muted text-right cursor-pointer",onClick:m[7]||(m[7]=x=>K(n).player.type=K(n).player.type==="web"?"web/wave":"web")},Se(K(t).displayProgress),1),g.value?(B(),Fe(B3,{key:0,ref_key:"playable",ref:s},null,512)):(B(),Fe(nc,{key:1,modelValue:o.value,"onUpdate:modelValue":m[8]||(m[8]=x=>o.value=x),max:1e3,onChange:m[9]||(m[9]=x=>K(t).seekPercent(x/10))},null,8,["modelValue"])),F("span",X3,Se(K(t).displayDuration),1)])])]),F("div",Z3,[te(w,{to:"/sing-along",class:"icon select-none"},{default:xt(()=>[K(t).loaded&&K(t).hasLyrics?(B(),ne("span",Q3," mic ")):xe("",!0)]),_:1}),te(w,{to:"/player",class:"icon select-none"},{default:xt(()=>m[30]||(m[30]=[F("span",{class:"cursor-pointer material-symbols-rounded ms-fill"}," queue_music ",-1)])),_:1}),te(rc,{modelValue:a.value,"onUpdate:modelValue":m[10]||(m[10]=x=>a.value=x),class:$e([{"on-this-device":p.value},"select-none"]),options:u.value,icon:"devices"},null,8,["modelValue","class","options"]),F("span",{class:"icon cursor-pointer material-symbols-rounded ms-fill select-none",onClick:m[11]||(m[11]=(...x)=>K(t).toggleMute&&K(t).toggleMute(...x))},Se(K(t).muteIcon),1),te(nc,{modelValue:K(t).volume,"onUpdate:modelValue":m[12]||(m[12]=x=>K(t).volume=x),max:100,onChange:m[13]||(m[13]=x=>K(t).setVolume(x))},null,8,["modelValue"])])]))],2)}}}),my=tt(pI,[["__scopeId","data-v-ed8a9309"]]),gI=1,mI=1,vI=1,E5=e=>({type:"song",version:gI,song:e}),yI=async e=>{const t={type:"playlist",version:mI};if(e.type==="special")return null;if(e.type==="classic"){const n=Object.assign({},e);return delete n.queue,delete n.cursor,{...t,playlist:n}}if(e.type==="smart"){const n=await IT(e.id);return{...t,playlist:{name:e.name,description:e.description,cover:e.cover,type:e.type,definition:n,plays:e.plays,id:e.id,href:e.href}}}},C5=async e=>({type:"collection",version:vI,collection:await Promise.all(e.filter(t=>t.type!="special").map(yI))}),A5=(e,t="my")=>{var n="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(e)),s=document.createElement("a");s.setAttribute("href",n),s.setAttribute("download",`${t}.one.${e.type}`),s.click()},_I=async e=>{if(!e.length)return;const t=window.location.pathname;if(!t.startsWith("/playlist/")){Er.addError("No playlist selected","Please select open the playlist you want to add songs to",3e3);return}const n=t.split("/")[2],s=nn().getPlaylistById(n);if(s.type!=="classic"){Er.addError("Can't add songs to this playlist","You can only add songs to classic playlists",3e3);return}console.log("adding songs to playlist",s),await ty(s.id,e.map(o=>o.song)),Er.addSuccess(`Added ${e.length} songs to ${s.name}`,null,3e3)},bI=async e=>{const t=e.playlist,n=await df(t.type,t.name,t.description,t.cover);if(t.type==="smart"){await MT(n,t.definition);return}await ty(n,t.songs)},wI=async e=>{if(e.length){for(const t of e)await bI(t);Er.addSuccess(`Added ${e.length} playlists`,null,3e3),nn().fetchPlaylists()}},xI=e=>{const t=e.filter(o=>o.type==="song");_I(t);const n=e.filter(o=>o.type==="playlist"),s=e.filter(o=>o.type==="collection");for(const o of s)n.push(...o.collection);wI(n)},SI=Le({__name:"DropImport",setup(e){const t=ce(!1),n=GP(),s=nn(),o=Pe(()=>n.path.startsWith("/playlist/")),a=Pe(()=>{if(!o.value)return null;const h=n.params.id;return s.getPlaylistById(h)}),u=Pe(()=>a.value?a.value.type==="classic":!1),c=async h=>{const g=[];for(let w=0;wJSON.parse(w));xI(m)},f=h=>{if(t.value=!1,!u)return;const g=h.dataTransfer.files;g.length&&c(g)},p=h=>{h.currentTarget.contains(h.relatedTarget)||(t.value=!1)};return(h,g)=>(B(),ne("div",{class:$e(["dropzone",{drophover:t.value}]),onDrop:gt(f,["prevent"]),onDragenter:g[0]||(g[0]=gt(()=>{},["prevent"])),onDragover:g[1]||(g[1]=gt(y=>t.value=!0,["prevent"])),onDragleave:gt(p,["prevent"])},[xs(h.$slots,"default",{},void 0,!0)],34))}}),EI=tt(SI,[["__scopeId","data-v-a582fe63"]]),CI=["src"],AI={id:"appRoot",class:"appRoot"},TI={class:"interface"},PI={name:"App",components:{Sidebar:hy,Body:py,Player:my},async mounted(){u3(),Bv(),await c3()&&this.$router.push("/welcome"),await f3()},data(){return{maximised:!1}},watch:{$route(e){document.title=e.meta.title||"reAudioPlayer One"}}},RI=Le({...PI,setup(e){fy();const t=kt(),n=ns(),s=ce(null);Xe(()=>t.song.cover,()=>{o()});const o=async()=>{s.value=await Ya(t.song.cover,t.song.title,200)},a=async()=>{s.value=await mf(t.song.title,200)};o();const u=Pe(()=>window.getCurrentThemeProperty("coverAsBackground"));return Mt(()=>{window.addEventListener("keydown",c=>{c.code==="Space"&&document.activeElement===document.body?(c.preventDefault(),t.playPause()):c.code==="F1"&&(c.preventDefault(),n.mode.toggle())})}),(c,f)=>(B(),ne(Ve,null,[F("div",{class:$e([{hidden:!u.value},"bgImageWrapper"])},[F("div",{style:sr({backgroundImage:`url(${s.value})`}),class:"bgImage"},[F("img",{src:s.value,class:"hidden",onError:a},null,40,CI)],4)],2),te(EI,null,{default:xt(()=>[F("div",AI,[K(t).ready?(B(),ne(Ve,{key:0},[te(yO),F("div",TI,[c.maximised?xe("",!0):(B(),Fe(hy,{key:0})),te(py,{onMaximise:f[0]||(f[0]=p=>c.maximised=p)})]),te(my),c.maximised?xe("",!0):(B(),Fe(sR,{key:0}))],64)):(B(),Fe(AO,{key:1}))])]),_:1}),f[1]||(f[1]=F("div",{id:"popup-target"},null,-1)),f[2]||(f[2]=F("div",{id:"dropdown-target"},null,-1)),f[3]||(f[3]=F("div",{id:"autocomplete-target"},null,-1)),f[4]||(f[4]=F("div",{id:"fullscreen-target"},null,-1)),te(BO)],64))}});function Ma(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ma=function(t){return typeof t}:Ma=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ma(e)}function kI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function OI(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:{},s,o,a,u=function(f){for(var p=arguments.length,h=new Array(p>1?p-1:0),g=1;g1){var p=c.find(function(g){return g.isIntersecting});p&&(f=p)}if(o.callback){var h=f.isIntersecting&&f.intersectionRatio>=o.threshold;if(h===o.oldResult)return;o.oldResult=h,o.callback(h,f)}},this.options.intersection),s.context.$nextTick(function(){o.observer&&o.observer.observe(o.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),e}();function yy(e,t,n){var s=t.value;if(s)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var o=new FI(e,s,n);e._vue_visibilityState=o}}function BI(e,t,n){var s=t.value,o=t.oldValue;if(!vy(s,o)){var a=e._vue_visibilityState;if(!s){_y(e);return}a?a.createObserver(s,n):yy(e,{value:s},n)}}function _y(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var La={bind:yy,update:BI,unbind:_y};function HI(e){e.directive("observe-visibility",La)}var VI={version:"1.0.0",install:HI},Ja=null;typeof window<"u"?Ja=window.Vue:typeof global<"u"&&(Ja=global.Vue);Ja&&Ja.use(VI);var by=function(t,n){var s,o=n.arg;if(!o){console.error("参数有误");return}var a=n.value,u=dt(o)?o.value:(s=n.instance)===null||s===void 0?void 0:s.$refs[o];if(!u){console.error("没有找到 ".concat(o," 对应的实例"));return}if(typeof u.addReference!="function"){console.error("".concat(o," 对应的实例不是 VContextmenu"));return}t.$contextmenuKey=o,u.addReference(t,a)},wy=function(t,n){var s,o=t.$contextmenuKey;if(o){var a=(s=n.instance)===null||s===void 0?void 0:s.$refs[o];a==null||a.removeReference(t)}},WI=function(t,n){wy(t,n),by(t,n)},UI={mounted:by,updated:WI,beforeUnmount:wy},pt={contextmenu:"v-contextmenu",contextmenuIcon:"v-contextmenu-icon",contextmenuInner:"v-contextmenu-inner",contextmenuDivider:"v-contextmenu-divider",contextmenuItem:"v-contextmenu-item",contextmenuItemHover:"v-contextmenu-item--hover",contextmenuItemDisabled:"v-contextmenu-item--disabled",contextmenuGroup:"v-contextmenu-group",contextmenuGroupTitle:"v-contextmenu-group__title",contextmenuGroupMenus:"v-contextmenu-group__menus",contextmenuSubmenu:"v-contextmenu-submenu",contextmenuSubmenuTitle:"v-contextmenu-submenu__title",contextmenuSubmenuMenus:"v-contextmenu-submenu__menus",contextmenuSubmenuMenusTop:"v-contextmenu-submenu__menus--top",contextmenuSubmenuMenusRight:"v-contextmenu-submenu__menus--right",contextmenuSubmenuMenusBottom:"v-contextmenu-submenu__menus--bottom",contextmenuSubmenuMenusLeft:"v-contextmenu-submenu__menus--left",contextmenuSubmenuArrow:"v-contextmenu-submenu__arrow"};function qI(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!tr(e)}var KI={trigger:["contextmenu"]},yg=Le({name:"VContextmenu",props:{modelValue:{type:Boolean,default:!1},autoAjustPlacement:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},teleport:{type:[String,Object],default:function(){return"body"}}},emits:["show","hide","update:modelValue"],setup:function(t,n){var s=n.emit,o=ce(null),a=ce(t.modelValue||!1),u=function(S){a.value=S,s("update:modelValue",S)},c=ce({top:0,left:0}),f=Pe(function(){return{top:"".concat(c.value.top,"px"),left:"".concat(c.value.left,"px")}}),p=ce(null),h=function(S,T){var k=S instanceof Event?T:S,W=(k==null?void 0:k.autoAjustPlacement)||t.autoAjustPlacement,U={top:(k==null?void 0:k.top)||0,left:(k==null?void 0:k.left)||0};if(S instanceof Event){var Y,$;S.preventDefault(),U.top=(Y=k==null?void 0:k.top)!==null&&Y!==void 0?Y:S.pageY,U.left=($=k==null?void 0:k.left)!==null&&$!==void 0?$:S.pageX}u(!0),qn(function(){if(W){var q=o.value;if(!q)return;var le=q.clientWidth,J=q.clientHeight;if(J+U.top>=window.innerHeight+window.scrollY){var ge=U.top-J;ge>window.scrollY&&(U.top=ge)}if(le+U.left>=window.innerWidth+window.scrollX){var Ie=U.left-le;Ie>window.scrollX&&(U.left=Ie)}}c.value=U,s("show")})},g=function(){p.value=null,u(!1),s("hide")},y=Ts(new Map),m=ce(),w=Pe(function(){return m.value&&y.get(m.value)}),x=function(S,T){var k=function(){return T!=null&&T.trigger?Array.isArray(T.trigger)?T.trigger:[T.trigger]:KI.trigger}(),W=function(Y){t.disabled||(m.value=S,h(Y,{}))};k.forEach(function(U){S.addEventListener(U,W)}),y.set(S,{triggers:k,handler:W})},R=function(S){var T=y.get(S);T&&(T.triggers.forEach(function(k){S.removeEventListener(k,T.handler)}),y.delete(S))},O=function(S){if(!(!S.target||!o.value||!m.value)){var T=o.value.contains(S.target)||w.value&&w.value.triggers.includes("click")&&m.value.contains(S.target);T||u(!1)}};return Xe(a,function(L){L?document.addEventListener("click",O):document.removeEventListener("click",O)}),yo(function(){document.removeEventListener("click",O)}),Sr("visible",a),Sr("autoAjustPlacement",t.autoAjustPlacement),Sr("show",h),Sr("hide",g),{visible:a,style:f,currentReferenceOptions:w,currentOptions:p,contextmenuRef:o,addReference:x,removeReference:R,toggle:u,show:h,hide:g}},methods:{renderContent:function(){var t,n;return ni(te("div",{class:pt.contextmenu,ref:"contextmenuRef",style:this.style},[te("ul",{class:pt.contextmenuInner},[(t=(n=this.$slots).default)===null||t===void 0?void 0:t.call(n,{triggerOptions:"currentReferenceOptions",options:"currentOptions"})])]),[[uo,"visible"]])}},render:function(){var t;return this.visible?this.teleport?te(hi,{to:this.teleport},qI(t=this.renderContent())?t:{default:function(){return[t]}}):this.renderContent():null}});function bn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _g=Le({name:"VContextmenuItem",props:{disabled:{type:Boolean,default:!1},hideOnClick:{type:Boolean,default:!0}},emits:["click","mouseenter","mouseleave"],setup:function(t,n){var s=n.emit,o=rn("hide"),a=ce(!1),u=Pe(function(){var h;return h={},bn(h,pt.contextmenuItem,!0),bn(h,pt.contextmenuItemDisabled,t.disabled),bn(h,pt.contextmenuItemHover,a.value),h}),c=function(g){t.disabled||(s("click",g),t.hideOnClick&&(o==null||o()))},f=function(g){t.disabled||(a.value=!0,s("mouseenter",g))},p=function(g){t.disabled||(a.value=!1,s("mouseleave",g))};return{classes:u,handleClick:c,handleMouseenter:f,handleMouseleave:p}},render:function(){var t,n;return te("li",{class:this.classes,onClick:this.handleClick,onMouseenter:this.handleMouseenter,onMouseleave:this.handleMouseleave},[(t=(n=this.$slots).default)===null||t===void 0?void 0:t.call(n)])}}),bg=Le({name:"VContextmenuDivider",render:function(){return te("li",{class:pt.contextmenuDivider},null)}}),GI=Le({name:"VContextmenuIcon",props:{name:{type:String,required:!0}},render:function(){return te("i",{class:[pt.contextmenuIcon,"".concat(pt.contextmenuIcon,"-").concat(this.name)]},null)}}),wg=Le({name:"VContextmenuSubmenu",props:{title:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["mouseenter","mouseleave"],setup:function(t,n){var s=n.emit,o=ce(null),a=rn("autoAjustPlacement"),u=ce(["top","right"]),c=ce(!1),f=function(m){t.disabled||(c.value=!0,s("mouseenter",m),qn(function(){var w=[];if(a){var x=m.target,R=x.getBoundingClientRect();if(!o.value)return;var O=o.value.clientWidth,L=o.value.clientHeight;R.right+O>=window.innerWidth?w.push("left"):w.push("right"),R.bottom+L>=window.innerHeight?w.push("bottom"):w.push("top")}u.value=w}))},p=function(m){t.disabled||(c.value=!1,s("mouseleave",m))},h=Pe(function(){var y;return y={},bn(y,pt.contextmenuItem,!0),bn(y,pt.contextmenuSubmenuTitle,!0),bn(y,pt.contextmenuItemHover,c.value),bn(y,pt.contextmenuItemDisabled,t.disabled),y}),g=Pe(function(){var y;return y={},bn(y,pt.contextmenu,!0),bn(y,pt.contextmenuSubmenuMenus,!0),bn(y,pt.contextmenuSubmenuMenusTop,u.value.includes("top")),bn(y,pt.contextmenuSubmenuMenusRight,u.value.includes("right")),bn(y,pt.contextmenuSubmenuMenusBottom,u.value.includes("bottom")),bn(y,pt.contextmenuSubmenuMenusLeft,u.value.includes("left")),y});return{hover:c,submenuRef:o,titleClasses:h,menusClasses:g,handleMouseenter:f,handleMouseleave:p}},render:function(){var t,n,s,o;return te("li",{class:pt.contextmenuSubmenu,onMouseenter:this.handleMouseenter,onMouseleave:this.handleMouseleave},[te("div",{class:this.titleClasses},[((t=(n=this.$slots).title)===null||t===void 0?void 0:t.call(n))||this.title,te("span",{class:pt.contextmenuSubmenuArrow},[te(GI,{name:"right-arrow"},null)])]),this.hover?te("div",{ref:"submenuRef",class:this.menusClasses},[te("ul",{class:pt.contextmenuInner},[(s=(o=this.$slots).default)===null||s===void 0?void 0:s.call(o)])]):null])}}),xg=Le({name:"VContextmenuGroup",props:{title:{type:String,default:void 0},maxWidth:{type:[Number,String],default:void 0}},setup:function(t){var n=Pe(function(){if(t.maxWidth)return{"max-width":typeof t.maxWidth=="number"?"".concat(t.maxWidth,"px"):t.maxWidth,"overflow-x":"auto"}});return{style:n}},methods:{renderTitle:function(){var t,n,s=((t=(n=this.$slots).title)===null||t===void 0?void 0:t.call(n))||this.title;return s?te("div",{class:pt.contextmenuGroupTitle},[s]):null}},render:function(){var t,n;return te("li",{class:pt.contextmenuGroup},[this.renderTitle(),te("ul",{style:this.style,class:pt.contextmenuGroupMenus},[(t=(n=this.$slots).default)===null||t===void 0?void 0:t.call(n)])])}}),jI="3.0.0",zI=function(t){t.directive("contextmenu",UI),t.component(yg.name,yg),t.component(_g.name,_g),t.component(bg.name,bg),t.component(wg.name,wg),t.component(xg.name,xg)},YI={install:zI,version:jI};const El=za(RI);El.directive("observe-visibility",{beforeMount:(e,t,n)=>{n.context=t.instance,La.bind(e,t,n)},updated:La.update,unmounted:La.unbind});El.use(YI);El.use(Xs);El.use(aT()).mount("#app");export{i5 as $,Pe as A,Xe as B,dy as C,fO as D,Jr as E,Ve as F,tO as G,cy as H,dg as I,gt as J,$e as K,iy as L,_r as M,Er as N,qn as O,Dk as P,xm as Q,ff as R,b5 as S,dO as T,XR as U,a5 as V,IT as W,rc as X,Lc as Y,MT as Z,tt as _,F as a,PE as a$,MA as a0,ni as a1,ja as a2,Q2 as a3,hi as a4,kt as a5,H3 as a6,d5 as a7,oy as a8,QI as a9,C5 as aA,ty as aB,o5 as aC,f5 as aD,xI as aE,xl as aF,w5 as aG,c3 as aH,yf as aI,nc as aJ,Ya as aK,ly as aL,eO as aM,st as aN,wn as aO,it as aP,ot as aQ,Mn as aR,fi as aS,It as aT,Ue as aU,ve as aV,rE as aW,ci as aX,Qs as aY,Sg as aZ,ms as a_,ey as aa,nA as ab,yI as ac,A5 as ad,RT as ae,uo as af,e5 as ag,r5 as ah,p5 as ai,n5 as aj,Jk as ak,g5 as al,zP as am,m5 as an,t5 as ao,cf as ap,Qm as aq,x5 as ar,bk as as,S5 as at,sy as au,ns as av,Dv as aw,uy as ax,_5 as ay,y5 as az,bo as b,CE as b0,AE as b1,TE as b2,Ag as b3,dn as b4,mE as b5,ZI as b6,XI as b7,u5 as b8,WT as b9,l5 as ba,v5 as bb,E5 as bc,pg as bd,Rc as be,h5 as bf,c5 as bg,ne as c,xe as d,Le as e,ws as f,te as g,ir as h,Fe as i,nn as j,s5 as k,ce as l,wl as m,f3 as n,B as o,Pc as p,ay as q,xs as r,df as s,Se as t,K as u,Mt as v,xt as w,sr as x,Vp as y,GP as z}; diff --git a/src/ui/dist/assets/index-NeVG6T13.js.gz b/src/ui/dist/assets/index-NeVG6T13.js.gz new file mode 100644 index 00000000..1b9fd65e Binary files /dev/null and b/src/ui/dist/assets/index-NeVG6T13.js.gz differ diff --git a/src/ui/dist/assets/index-pKX8fWFw.js b/src/ui/dist/assets/index-aLQcB2pu.js similarity index 99% rename from src/ui/dist/assets/index-pKX8fWFw.js rename to src/ui/dist/assets/index-aLQcB2pu.js index 6b69704d..a57f98d8 100644 --- a/src/ui/dist/assets/index-pKX8fWFw.js +++ b/src/ui/dist/assets/index-aLQcB2pu.js @@ -1 +1 @@ -import{e as U,a5 as W,o as p,c as w,g as K,u as f,a6 as H,t as B,i as I,d as C,a as x,I as N,F as j,h as G,K as P,b as $,J as F,L as V,_ as q}from"./index-CTxjSbok.js";var T={d:(s,r)=>{for(var t in r)T.o(r,t)&&!T.o(s,t)&&Object.defineProperty(s,t,{enumerable:!0,get:r[t]})},o:(s,r)=>Object.prototype.hasOwnProperty.call(s,r)},v={};T.d(v,{Ce:()=>L,ZP:()=>Z,j1:()=>z,Eb:()=>J,e6:()=>E,Iu:()=>A});var g={from:"auto",to:"en",hl:"en",tld:"com",rpcids:"MkEWBc"};function z(s){var r=s===void 0?{}:s,t=r.rpcids,a=t===void 0?g.rpcids:t,n=r.hl,l=n===void 0?g.hl:n,i=r.tld,c=i===void 0?g.tld:i;if(!function(o){return!!o.match(/^[a-zA-Z]{2,63}$/)}(c))throw new Error("Invalid TLD: Must be 2-63 letters only");var d=new URLSearchParams({rpcids:a,"source-path":"/",hl:l,"soc-app":"1","soc-platform":"1","soc-device":"1",rt:"c"});return"https://translate.google.".concat(c,"/_/TranslateWebserverUi/data/batchexecute?").concat(d)}const D={auto:"Automatic",af:"Afrikaans",sq:"Albanian",am:"Amharic",ar:"Arabic",hy:"Armenian",az:"Azerbaijani",eu:"Basque",be:"Belarusian",bn:"Bengali",bs:"Bosnian",bg:"Bulgarian",ca:"Catalan",ceb:"Cebuano",ny:"Chichewa",zh:"Chinese Simplified","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",co:"Corsican",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",eo:"Esperanto",et:"Estonian",tl:"Filipino",fi:"Finnish",fr:"French",fy:"Frisian",gl:"Galician",ka:"Georgian",de:"German",el:"Greek",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",haw:"Hawaiian",he:"Hebrew",iw:"Hebrew",hi:"Hindi",hmn:"Hmong",hu:"Hungarian",is:"Icelandic",ig:"Igbo",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",jw:"Javanese",kn:"Kannada",kk:"Kazakh",km:"Khmer",rw:"Kinyarwanda",ko:"Korean",ku:"Kurdish (Kurmanji)",ky:"Kyrgyz",lo:"Lao",la:"Latin",lv:"Latvian",lt:"Lithuanian",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mn:"Mongolian",my:"Myanmar (Burmese)",ne:"Nepali",no:"Norwegian",or:"Odia (Oriya)",ps:"Pashto",fa:"Persian",pl:"Polish",pt:"Portuguese",pa:"Punjabi",ro:"Romanian",ru:"Russian",sm:"Samoan",gd:"Scots Gaelic",sr:"Serbian",st:"Sesotho",sn:"Shona",sd:"Sindhi",si:"Sinhala",sk:"Slovak",sl:"Slovenian",so:"Somali",es:"Spanish",su:"Sundanese",sw:"Swahili",sv:"Swedish",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",tr:"Turkish",tk:"Turkmen",uk:"Ukrainian",ur:"Urdu",ug:"Uyghur",uz:"Uzbek",vi:"Vietnamese",cy:"Welsh",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",zu:"Zulu"};var J=function(s){return!!D[s]};function E(s,r){r===void 0&&(r=!1);var t=s.match(/"\[.*]"/),a=null;if(t){var n=t[0];a=JSON.parse(JSON.parse(n))}if(!a)throw new Error("Data is either empty or corrupted");var l={text:a[1][0][0][5].reduce(function(i,c){return i?"".concat(i," ").concat(c[0]):c[0]},""),pronunciation:a[1][0][0][1],from:{language:{didYouMean:!!a[0][1],iso:a[2]},text:{autoCorrected:!!a[1][0][0][3],value:a[0][1]?a[0][1][0][4]:a[0][6][0],didYouMean:!!a[0][1]}}};return r&&(l.raw=s),l}function L(s,r){var t=r===void 0?{}:r,a=t.rpcids,n=a===void 0?g.rpcids:a,l=t.from,i=l===void 0?g.from:l,c=t.to,d=c===void 0?g.to:c,o=s.trim().replace(/["]/g,"\\\\\\$&").replace(/\r\n|\r|\n/g,"\\\\n"),e=encodeURIComponent('[[["'.concat(n,'","[[\\"').concat(o,'\\",\\"').concat(i,'\\",\\"').concat(d,'\\",1],[]]",null,"generic"]]]'));return"f.req=".concat(e,"&")}var S=function(){return S=Object.assign||function(s){for(var r,t=1,a=arguments.length;t0&&n[n.length-1])||e[0]!==6&&e[0]!==2)){i=0;continue}if(e[0]===3&&(!n||e[1]>n[0]&&e[1]{var m,b;if(!((m=r.lyrics)!=null&&m.lyrics))return!1;const e=r.progress*1e3,u=r.lyrics.lyrics[o],h=parseInt(u.startTimeMs),y=parseInt(u.endTimeMs)?parseInt(u.endTimeMs):parseInt((b=r.lyrics.lyrics[o+1])==null?void 0:b.startTimeMs);if(e>=h&&e=y?"past":"future"},a=o=>{r.lyrics.lyrics[o].originalWorlds?l(o):n(o)},n=async o=>{const e=r.lyrics.lyrics[o];if(e.originalWorlds)return;const u=await X(e.words,{to:"en",corsUrl:"/api/cors/"});e.originalWorlds=e.words,e.words=u.text},l=o=>{const e=r.lyrics.lyrics[o];e.originalWorlds&&(e.words=e.originalWorlds,e.originalWorlds=null)},i=()=>{var o,e;(e=(o=r.lyrics)==null?void 0:o.lyrics)==null||e.forEach((u,h)=>{n(h)})},c=()=>{var o,e;(e=(o=r.lyrics)==null?void 0:o.lyrics)==null||e.forEach((u,h)=>{l(h)})},d=()=>{var e,u,h,y;const o=(u=(e=r.lyrics)==null?void 0:e.lyrics)==null?void 0:u.filter(m=>m.originalWorlds).length;return o&&o>((y=(h=r.lyrics)==null?void 0:h.lyrics)==null?void 0:y.length)/2};return(o,e)=>{var u,h,y,m,b,k;return p(),w(j,null,[K(H,{src:f(r).song.cover},null,8,["src"]),!f(r).lyrics||(u=f(r).lyrics)!=null&&u.error?(p(),w("div",Q,[(h=f(r).lyrics)!=null&&h.error?(p(),w("h1",ee,B((y=f(r).lyrics)==null?void 0:y.error),1)):(p(),I(V,{key:1}))])):C("",!0),x("div",re,[(m=f(r).lyrics)!=null&&m.lyrics?(p(),I(N,{key:0,icon:"translate",label:d()?"Show original":"Translate all",class:"mr-2",onClick:e[0]||(e[0]=_=>d()?c():i())},null,8,["label"])):C("",!0)]),(b=f(r).lyrics)!=null&&b.lyrics?(p(),w("div",ne,[(p(!0),w(j,null,G((k=f(r).lyrics)==null?void 0:k.lyrics,(_,M)=>(p(),w("div",{class:P(["line",t(M)]),onClick:O=>f(r).seek(parseInt(_.startTimeMs)/1e3)},[$(B(_.words)+" ",1),x("span",{class:P(["material-symbols-rounded translate",{translated:_.originalWorlds}]),onClick:F(O=>a(M),["stop"])}," translate ",10,te)],10,ae))),256))])):C("",!0)],64)}}}),se=q(oe,[["__scopeId","data-v-896d6a6d"]]);export{se as default}; +import{e as U,a5 as W,o as p,c as w,g as K,u as f,a6 as H,t as B,i as I,d as C,a as x,I as N,F as j,h as G,K as P,b as $,J as F,L as V,_ as q}from"./index-NeVG6T13.js";var T={d:(s,r)=>{for(var t in r)T.o(r,t)&&!T.o(s,t)&&Object.defineProperty(s,t,{enumerable:!0,get:r[t]})},o:(s,r)=>Object.prototype.hasOwnProperty.call(s,r)},v={};T.d(v,{Ce:()=>L,ZP:()=>Z,j1:()=>z,Eb:()=>J,e6:()=>E,Iu:()=>A});var g={from:"auto",to:"en",hl:"en",tld:"com",rpcids:"MkEWBc"};function z(s){var r=s===void 0?{}:s,t=r.rpcids,a=t===void 0?g.rpcids:t,n=r.hl,l=n===void 0?g.hl:n,i=r.tld,c=i===void 0?g.tld:i;if(!function(o){return!!o.match(/^[a-zA-Z]{2,63}$/)}(c))throw new Error("Invalid TLD: Must be 2-63 letters only");var d=new URLSearchParams({rpcids:a,"source-path":"/",hl:l,"soc-app":"1","soc-platform":"1","soc-device":"1",rt:"c"});return"https://translate.google.".concat(c,"/_/TranslateWebserverUi/data/batchexecute?").concat(d)}const D={auto:"Automatic",af:"Afrikaans",sq:"Albanian",am:"Amharic",ar:"Arabic",hy:"Armenian",az:"Azerbaijani",eu:"Basque",be:"Belarusian",bn:"Bengali",bs:"Bosnian",bg:"Bulgarian",ca:"Catalan",ceb:"Cebuano",ny:"Chichewa",zh:"Chinese Simplified","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",co:"Corsican",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",eo:"Esperanto",et:"Estonian",tl:"Filipino",fi:"Finnish",fr:"French",fy:"Frisian",gl:"Galician",ka:"Georgian",de:"German",el:"Greek",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",haw:"Hawaiian",he:"Hebrew",iw:"Hebrew",hi:"Hindi",hmn:"Hmong",hu:"Hungarian",is:"Icelandic",ig:"Igbo",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",jw:"Javanese",kn:"Kannada",kk:"Kazakh",km:"Khmer",rw:"Kinyarwanda",ko:"Korean",ku:"Kurdish (Kurmanji)",ky:"Kyrgyz",lo:"Lao",la:"Latin",lv:"Latvian",lt:"Lithuanian",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mn:"Mongolian",my:"Myanmar (Burmese)",ne:"Nepali",no:"Norwegian",or:"Odia (Oriya)",ps:"Pashto",fa:"Persian",pl:"Polish",pt:"Portuguese",pa:"Punjabi",ro:"Romanian",ru:"Russian",sm:"Samoan",gd:"Scots Gaelic",sr:"Serbian",st:"Sesotho",sn:"Shona",sd:"Sindhi",si:"Sinhala",sk:"Slovak",sl:"Slovenian",so:"Somali",es:"Spanish",su:"Sundanese",sw:"Swahili",sv:"Swedish",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",tr:"Turkish",tk:"Turkmen",uk:"Ukrainian",ur:"Urdu",ug:"Uyghur",uz:"Uzbek",vi:"Vietnamese",cy:"Welsh",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",zu:"Zulu"};var J=function(s){return!!D[s]};function E(s,r){r===void 0&&(r=!1);var t=s.match(/"\[.*]"/),a=null;if(t){var n=t[0];a=JSON.parse(JSON.parse(n))}if(!a)throw new Error("Data is either empty or corrupted");var l={text:a[1][0][0][5].reduce(function(i,c){return i?"".concat(i," ").concat(c[0]):c[0]},""),pronunciation:a[1][0][0][1],from:{language:{didYouMean:!!a[0][1],iso:a[2]},text:{autoCorrected:!!a[1][0][0][3],value:a[0][1]?a[0][1][0][4]:a[0][6][0],didYouMean:!!a[0][1]}}};return r&&(l.raw=s),l}function L(s,r){var t=r===void 0?{}:r,a=t.rpcids,n=a===void 0?g.rpcids:a,l=t.from,i=l===void 0?g.from:l,c=t.to,d=c===void 0?g.to:c,o=s.trim().replace(/["]/g,"\\\\\\$&").replace(/\r\n|\r|\n/g,"\\\\n"),e=encodeURIComponent('[[["'.concat(n,'","[[\\"').concat(o,'\\",\\"').concat(i,'\\",\\"').concat(d,'\\",1],[]]",null,"generic"]]]'));return"f.req=".concat(e,"&")}var S=function(){return S=Object.assign||function(s){for(var r,t=1,a=arguments.length;t0&&n[n.length-1])||e[0]!==6&&e[0]!==2)){i=0;continue}if(e[0]===3&&(!n||e[1]>n[0]&&e[1]{var m,b;if(!((m=r.lyrics)!=null&&m.lyrics))return!1;const e=r.progress*1e3,u=r.lyrics.lyrics[o],h=parseInt(u.startTimeMs),y=parseInt(u.endTimeMs)?parseInt(u.endTimeMs):parseInt((b=r.lyrics.lyrics[o+1])==null?void 0:b.startTimeMs);if(e>=h&&e=y?"past":"future"},a=o=>{r.lyrics.lyrics[o].originalWorlds?l(o):n(o)},n=async o=>{const e=r.lyrics.lyrics[o];if(e.originalWorlds)return;const u=await X(e.words,{to:"en",corsUrl:"/api/cors/"});e.originalWorlds=e.words,e.words=u.text},l=o=>{const e=r.lyrics.lyrics[o];e.originalWorlds&&(e.words=e.originalWorlds,e.originalWorlds=null)},i=()=>{var o,e;(e=(o=r.lyrics)==null?void 0:o.lyrics)==null||e.forEach((u,h)=>{n(h)})},c=()=>{var o,e;(e=(o=r.lyrics)==null?void 0:o.lyrics)==null||e.forEach((u,h)=>{l(h)})},d=()=>{var e,u,h,y;const o=(u=(e=r.lyrics)==null?void 0:e.lyrics)==null?void 0:u.filter(m=>m.originalWorlds).length;return o&&o>((y=(h=r.lyrics)==null?void 0:h.lyrics)==null?void 0:y.length)/2};return(o,e)=>{var u,h,y,m,b,k;return p(),w(j,null,[K(H,{src:f(r).song.cover},null,8,["src"]),!f(r).lyrics||(u=f(r).lyrics)!=null&&u.error?(p(),w("div",Q,[(h=f(r).lyrics)!=null&&h.error?(p(),w("h1",ee,B((y=f(r).lyrics)==null?void 0:y.error),1)):(p(),I(V,{key:1}))])):C("",!0),x("div",re,[(m=f(r).lyrics)!=null&&m.lyrics?(p(),I(N,{key:0,icon:"translate",label:d()?"Show original":"Translate all",class:"mr-2",onClick:e[0]||(e[0]=_=>d()?c():i())},null,8,["label"])):C("",!0)]),(b=f(r).lyrics)!=null&&b.lyrics?(p(),w("div",ne,[(p(!0),w(j,null,G((k=f(r).lyrics)==null?void 0:k.lyrics,(_,M)=>(p(),w("div",{class:P(["line",t(M)]),onClick:O=>f(r).seek(parseInt(_.startTimeMs)/1e3)},[$(B(_.words)+" ",1),x("span",{class:P(["material-symbols-rounded translate",{translated:_.originalWorlds}]),onClick:F(O=>a(M),["stop"])}," translate ",10,te)],10,ae))),256))])):C("",!0)],64)}}}),se=q(oe,[["__scopeId","data-v-896d6a6d"]]);export{se as default}; diff --git a/src/ui/dist/assets/index-aLQcB2pu.js.gz b/src/ui/dist/assets/index-aLQcB2pu.js.gz new file mode 100644 index 00000000..8a421398 Binary files /dev/null and b/src/ui/dist/assets/index-aLQcB2pu.js.gz differ diff --git a/src/ui/dist/assets/index-gMguJPQ7.js.gz b/src/ui/dist/assets/index-gMguJPQ7.js.gz deleted file mode 100644 index fbc02322..00000000 Binary files a/src/ui/dist/assets/index-gMguJPQ7.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-pKX8fWFw.js.gz b/src/ui/dist/assets/index-pKX8fWFw.js.gz deleted file mode 100644 index 8a088536..00000000 Binary files a/src/ui/dist/assets/index-pKX8fWFw.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/spotify-LGVF5Rtn.js b/src/ui/dist/assets/spotify-ArIR8QxX.js similarity index 93% rename from src/ui/dist/assets/spotify-LGVF5Rtn.js rename to src/ui/dist/assets/spotify-ArIR8QxX.js index 76d7b45a..2827b78d 100644 --- a/src/ui/dist/assets/spotify-LGVF5Rtn.js +++ b/src/ui/dist/assets/spotify-ArIR8QxX.js @@ -1 +1 @@ -import{o as c,c as o,a as t}from"./index-CTxjSbok.js";const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 168 168"};function s(r,e){return c(),o("svg",a,e[0]||(e[0]=[t("path",{fill:"#111",d:"M83.996.277C37.747.277.253 37.77.253 84.019c0 46.251 37.494 83.741 83.743 83.741 46.254 0 83.744-37.49 83.744-83.741 0-46.246-37.49-83.738-83.745-83.738zm38.404 120.78a5.217 5.217 0 0 1-7.18 1.73c-19.662-12.01-44.414-14.73-73.564-8.07a5.22 5.22 0 0 1-6.249-3.93 5.213 5.213 0 0 1 3.926-6.25c31.9-7.291 59.263-4.15 81.337 9.34 2.46 1.51 3.24 4.72 1.73 7.18m10.25-22.805c-1.89 3.075-5.91 4.045-8.98 2.155-22.51-13.839-56.823-17.846-83.448-9.764-3.453 1.043-7.1-.903-8.148-4.35a6.54 6.54 0 0 1 4.354-8.143c30.413-9.228 68.222-4.758 94.072 11.127 3.07 1.89 4.04 5.91 2.15 8.976zm.88-23.744c-26.99-16.031-71.52-17.505-97.289-9.684-4.138 1.255-8.514-1.081-9.768-5.219a7.835 7.835 0 0 1 5.221-9.771c29.581-8.98 78.756-7.245 109.83 11.202a7.823 7.823 0 0 1 2.74 10.733c-2.2 3.722-7.02 4.949-10.73 2.739z"},null,-1)]))}const l={render:s};export{l as s}; +import{o as c,c as o,a as t}from"./index-NeVG6T13.js";const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 168 168"};function s(r,e){return c(),o("svg",a,e[0]||(e[0]=[t("path",{fill:"#111",d:"M83.996.277C37.747.277.253 37.77.253 84.019c0 46.251 37.494 83.741 83.743 83.741 46.254 0 83.744-37.49 83.744-83.741 0-46.246-37.49-83.738-83.745-83.738zm38.404 120.78a5.217 5.217 0 0 1-7.18 1.73c-19.662-12.01-44.414-14.73-73.564-8.07a5.22 5.22 0 0 1-6.249-3.93 5.213 5.213 0 0 1 3.926-6.25c31.9-7.291 59.263-4.15 81.337 9.34 2.46 1.51 3.24 4.72 1.73 7.18m10.25-22.805c-1.89 3.075-5.91 4.045-8.98 2.155-22.51-13.839-56.823-17.846-83.448-9.764-3.453 1.043-7.1-.903-8.148-4.35a6.54 6.54 0 0 1 4.354-8.143c30.413-9.228 68.222-4.758 94.072 11.127 3.07 1.89 4.04 5.91 2.15 8.976zm.88-23.744c-26.99-16.031-71.52-17.505-97.289-9.684-4.138 1.255-8.514-1.081-9.768-5.219a7.835 7.835 0 0 1 5.221-9.771c29.581-8.98 78.756-7.245 109.83 11.202a7.823 7.823 0 0 1 2.74 10.733c-2.2 3.722-7.02 4.949-10.73 2.739z"},null,-1)]))}const l={render:s};export{l as s}; diff --git a/src/ui/dist/assets/spotify-ArIR8QxX.js.gz b/src/ui/dist/assets/spotify-ArIR8QxX.js.gz new file mode 100644 index 00000000..a8db10b9 Binary files /dev/null and b/src/ui/dist/assets/spotify-ArIR8QxX.js.gz differ diff --git a/src/ui/dist/assets/spotify-LGVF5Rtn.js.gz b/src/ui/dist/assets/spotify-LGVF5Rtn.js.gz deleted file mode 100644 index fdf6033c..00000000 Binary files a/src/ui/dist/assets/spotify-LGVF5Rtn.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/vuedraggable.umd-pw-5IPtN.js b/src/ui/dist/assets/vuedraggable.umd-4SxXvN8G.js similarity index 99% rename from src/ui/dist/assets/vuedraggable.umd-pw-5IPtN.js rename to src/ui/dist/assets/vuedraggable.umd-4SxXvN8G.js index aebbf6e9..0b5ea5c6 100644 --- a/src/ui/dist/assets/vuedraggable.umd-pw-5IPtN.js +++ b/src/ui/dist/assets/vuedraggable.umd-4SxXvN8G.js @@ -1,4 +1,4 @@ -import{aN as Ae,aO as bn,aP as Co,aQ as pt,aR as hi,aS as Ao,aT as Pt,aU as Ha,aV as Ct,aW as Ka,aX as xo,aY as Wa,aZ as Hn,a_ as Ji,a$ as Ya,b0 as Ja,b1 as za,b2 as Qa,b3 as Za,b4 as Or,b5 as ka,ay as Ir,b6 as qa,b7 as _a,az as es}from"./index-CTxjSbok.js";var _n={exports:{}},Wr={exports:{}},Yr={};/** +import{aN as Ae,aO as bn,aP as Co,aQ as pt,aR as hi,aS as Ao,aT as Pt,aU as Ha,aV as Ct,aW as Ka,aX as xo,aY as Wa,aZ as Hn,a_ as Ji,a$ as Ya,b0 as Ja,b1 as za,b2 as Qa,b3 as Za,b4 as Or,b5 as ka,ay as Ir,b6 as qa,b7 as _a,az as es}from"./index-NeVG6T13.js";var _n={exports:{}},Wr={exports:{}},Yr={};/** * @vue/compiler-core v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT diff --git a/src/ui/dist/assets/vuedraggable.umd-4SxXvN8G.js.gz b/src/ui/dist/assets/vuedraggable.umd-4SxXvN8G.js.gz new file mode 100644 index 00000000..ec9ff53d Binary files /dev/null and b/src/ui/dist/assets/vuedraggable.umd-4SxXvN8G.js.gz differ diff --git a/src/ui/dist/assets/vuedraggable.umd-pw-5IPtN.js.gz b/src/ui/dist/assets/vuedraggable.umd-pw-5IPtN.js.gz deleted file mode 100644 index 2d94f1f3..00000000 Binary files a/src/ui/dist/assets/vuedraggable.umd-pw-5IPtN.js.gz and /dev/null differ diff --git a/src/ui/dist/index.html b/src/ui/dist/index.html index 948b4bc7..d044102b 100644 --- a/src/ui/dist/index.html +++ b/src/ui/dist/index.html @@ -43,7 +43,7 @@ reAudioPlayer One - + diff --git a/src/ui/dist/index.html.gz b/src/ui/dist/index.html.gz index ee91d86a..baa4ef53 100644 Binary files a/src/ui/dist/index.html.gz and b/src/ui/dist/index.html.gz differ diff --git a/src/ui/dist/sw.js b/src/ui/dist/sw.js index 99481b4f..90b18858 100644 --- a/src/ui/dist/sw.js +++ b/src/ui/dist/sw.js @@ -1 +1 @@ -if(!self.define){let s,l={};const e=(e,r)=>(e=new URL(e+".js",r).href,l[e]||new Promise((l=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=l,document.head.appendChild(s)}else s=e,importScripts(e),l()})).then((()=>{let s=l[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s})));self.define=(r,i)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(l[n])return;let u={};const t=s=>e(s,n),o={module:{uri:n},exports:u,require:t};l[n]=Promise.all(r.map((s=>o[s]||t(s)))).then((s=>(i(...s),u)))}}define(["./workbox-5ffe50d4"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/Album-DBkve-Q-.js",revision:null},{url:"assets/Album-DX27fQeE.css",revision:null},{url:"assets/Artist-BqEsBai3.js",revision:null},{url:"assets/Artist-D7Jt3f-V.css",revision:null},{url:"assets/Breaking-CGEJyAMd.js",revision:null},{url:"assets/Create-BYkMEr3l.css",revision:null},{url:"assets/Create-CWyRZu9j.js",revision:null},{url:"assets/Editor-Bsw-vrY4.js",revision:null},{url:"assets/Editor-DOtR4rSO.css",revision:null},{url:"assets/EditSong.vue_vue_type_script_setup_true_lang-DjK7BvWu.js",revision:null},{url:"assets/Error-BpZz57TU.css",revision:null},{url:"assets/Error-CQEMgMn-.js",revision:null},{url:"assets/Explore-BUXrNSQM.js",revision:null},{url:"assets/Explore-DxwCrixs.css",revision:null},{url:"assets/Export-DL4N6BXD.js",revision:null},{url:"assets/Export-IczLrqbM.css",revision:null},{url:"assets/FactCard-C8DDWpSx.css",revision:null},{url:"assets/FactCard-CcCpkYQW.js",revision:null},{url:"assets/ffmpeg/ffmpeg-worker-mp4.js",revision:null},{url:"assets/FullShelf-CTNIXTYk.css",revision:null},{url:"assets/FullShelf-WiVa8WAT.js",revision:null},{url:"assets/gistClient-DbxNDpvo.js",revision:null},{url:"assets/Import-BB1S26-k.css",revision:null},{url:"assets/Import-BjxBPYQC.js",revision:null},{url:"assets/ImportLink-BtDFD4Om.js",revision:null},{url:"assets/ImportLink-CZJuXTUq.css",revision:null},{url:"assets/index-AeHORVgZ.css",revision:null},{url:"assets/index-B_IP-YCl.css",revision:null},{url:"assets/index-B4BW5oB7.css",revision:null},{url:"assets/index-BHkwhn98.css",revision:null},{url:"assets/index-BL89kDiO.js",revision:null},{url:"assets/index-BYAiHr26.js",revision:null},{url:"assets/index-CPiyjzPN.css",revision:null},{url:"assets/index-CtdWf8cI.css",revision:null},{url:"assets/index-CTxjSbok.js",revision:null},{url:"assets/index-D0K5GYHD.css",revision:null},{url:"assets/index-D3xaJuij.js",revision:null},{url:"assets/index-DaDsLZC_.js",revision:null},{url:"assets/index-DHSwU4cI.js",revision:null},{url:"assets/index-FOdpO-Ok.css",revision:null},{url:"assets/index-gMguJPQ7.js",revision:null},{url:"assets/index-pKX8fWFw.js",revision:null},{url:"assets/Insight-D-5GEXTO.js",revision:null},{url:"assets/Insight-T6XeVCJ_.css",revision:null},{url:"assets/Liked-CWhd73l6.js",revision:null},{url:"assets/Markdown-CYZa4KPa.css",revision:null},{url:"assets/Markdown.vue_vue_type_style_index_0_lang-Dj9oziRW.js",revision:null},{url:"assets/needles/needles-worker.js",revision:null},{url:"assets/News-WonXXBsL.js",revision:null},{url:"assets/News-xNasKsBJ.css",revision:null},{url:"assets/NewsArticle-BCsM1dbj.js",revision:null},{url:"assets/NewsArticle-x_80Wk5p.css",revision:null},{url:"assets/Normal-FL2a59AI.js",revision:null},{url:"assets/playerInPicture-Dfp9IAsf.js",revision:null},{url:"assets/Playlist.vue_vue_type_script_setup_true_lang-D1MFRhqy.js",revision:null},{url:"assets/PlaylistCard-Bca9RU1d.css",revision:null},{url:"assets/PlaylistCard-wbTFFeyA.js",revision:null},{url:"assets/PlaylistEntry-C_GFkdTM.css",revision:null},{url:"assets/PlaylistEntry-DrzB4VXk.js",revision:null},{url:"assets/Sports-DN-DgHFa.css",revision:null},{url:"assets/Sports-J0i4HuLb.js",revision:null},{url:"assets/spotify-LGVF5Rtn.js",revision:null},{url:"assets/Template-B3y8aqn2.js",revision:null},{url:"assets/Template-mK9k02Z4.css",revision:null},{url:"assets/Track-BBEv3XMi.css",revision:null},{url:"assets/Track-CjVZRaly.js",revision:null},{url:"assets/TrackCompact--_V4px52.js",revision:null},{url:"assets/TrackCompact-DbwH9-PL.css",revision:null},{url:"assets/vuedraggable.umd-pw-5IPtN.js",revision:null},{url:"assets/Welcome-DKD9_kGv.js",revision:null},{url:"assets/Welcome-DqFlm-Ye.css",revision:null},{url:"index.html",revision:"43d97d52ceb1196c893ef83916348673"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"favicon.png",revision:"81eb710c3fadc823ae3bb676eacf1795"},{url:"manifest.webmanifest",revision:"54fda1775a89a999bda4c67bd363bb64"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/^\/api/]}))})); +if(!self.define){let s,e={};const l=(l,r)=>(l=new URL(l+".js",r).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(r,i)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(e[n])return;let u={};const t=s=>l(s,n),o={module:{uri:n},exports:u,require:t};e[n]=Promise.all(r.map((s=>o[s]||t(s)))).then((s=>(i(...s),u)))}}define(["./workbox-5ffe50d4"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/Album-B7yuUYu_.js",revision:null},{url:"assets/Album-DX27fQeE.css",revision:null},{url:"assets/Artist-B3KwwJol.js",revision:null},{url:"assets/Artist-D7Jt3f-V.css",revision:null},{url:"assets/Breaking-BbN_kr20.js",revision:null},{url:"assets/Create-BYkMEr3l.css",revision:null},{url:"assets/Create-Od9vU4ho.js",revision:null},{url:"assets/Editor-CoYi3uHx.js",revision:null},{url:"assets/Editor-DOtR4rSO.css",revision:null},{url:"assets/EditSong.vue_vue_type_script_setup_true_lang-BUhngH0P.js",revision:null},{url:"assets/Error-B3yvsR5K.js",revision:null},{url:"assets/Error-BpZz57TU.css",revision:null},{url:"assets/Explore-BDgVo6I-.js",revision:null},{url:"assets/Explore-DxwCrixs.css",revision:null},{url:"assets/Export-IczLrqbM.css",revision:null},{url:"assets/Export-rSE5tdFQ.js",revision:null},{url:"assets/FactCard-C8DDWpSx.css",revision:null},{url:"assets/FactCard-DRGvrYjY.js",revision:null},{url:"assets/ffmpeg/ffmpeg-worker-mp4.js",revision:null},{url:"assets/FullShelf-CTNIXTYk.css",revision:null},{url:"assets/FullShelf-DGzkcAo_.js",revision:null},{url:"assets/gistClient-DE35pGas.js",revision:null},{url:"assets/Import-BB1S26-k.css",revision:null},{url:"assets/Import-DgtSATZa.js",revision:null},{url:"assets/ImportLink-Bua7Xd9q.js",revision:null},{url:"assets/ImportLink-CZJuXTUq.css",revision:null},{url:"assets/index-6egCEB7H.js",revision:null},{url:"assets/index-AeHORVgZ.css",revision:null},{url:"assets/index-aLQcB2pu.js",revision:null},{url:"assets/index-B_IP-YCl.css",revision:null},{url:"assets/index-B4BW5oB7.css",revision:null},{url:"assets/index-BgnDGhPq.js",revision:null},{url:"assets/index-BHkwhn98.css",revision:null},{url:"assets/index-BQ4QfHJY.js",revision:null},{url:"assets/index-Cl954rX4.js",revision:null},{url:"assets/index-CPiyjzPN.css",revision:null},{url:"assets/index-CtdWf8cI.css",revision:null},{url:"assets/index-D0K5GYHD.css",revision:null},{url:"assets/index-DdW2vvqu.js",revision:null},{url:"assets/index-DynHIvzO.js",revision:null},{url:"assets/index-FOdpO-Ok.css",revision:null},{url:"assets/index-NeVG6T13.js",revision:null},{url:"assets/Insight-8n5os3vM.js",revision:null},{url:"assets/Insight-T6XeVCJ_.css",revision:null},{url:"assets/Liked-B_zgztvz.js",revision:null},{url:"assets/Markdown-CYZa4KPa.css",revision:null},{url:"assets/Markdown.vue_vue_type_style_index_0_lang-LElFgIN4.js",revision:null},{url:"assets/needles/needles-worker.js",revision:null},{url:"assets/News-dyEReFDN.js",revision:null},{url:"assets/News-xNasKsBJ.css",revision:null},{url:"assets/NewsArticle-ttqbaNaN.js",revision:null},{url:"assets/NewsArticle-x_80Wk5p.css",revision:null},{url:"assets/Normal-BavQeIJj.js",revision:null},{url:"assets/playerInPicture-Dfp9IAsf.js",revision:null},{url:"assets/Playlist.vue_vue_type_script_setup_true_lang-DN69LAY9.js",revision:null},{url:"assets/PlaylistCard-Bca9RU1d.css",revision:null},{url:"assets/PlaylistCard-BpEr8q46.js",revision:null},{url:"assets/PlaylistEntry-C_GFkdTM.css",revision:null},{url:"assets/PlaylistEntry-CFWDnKVM.js",revision:null},{url:"assets/Sports-DN-DgHFa.css",revision:null},{url:"assets/Sports-ZUA8m5m_.js",revision:null},{url:"assets/spotify-ArIR8QxX.js",revision:null},{url:"assets/Template-DPpn6WCj.js",revision:null},{url:"assets/Template-mK9k02Z4.css",revision:null},{url:"assets/Track-BBEv3XMi.css",revision:null},{url:"assets/Track-BZee2-_m.js",revision:null},{url:"assets/TrackCompact-DbwH9-PL.css",revision:null},{url:"assets/TrackCompact-ze8RovN8.js",revision:null},{url:"assets/vuedraggable.umd-4SxXvN8G.js",revision:null},{url:"assets/Welcome-DD0oKJ1K.js",revision:null},{url:"assets/Welcome-DqFlm-Ye.css",revision:null},{url:"index.html",revision:"b9d12e7b447f9f834ea2c1a239fb48f0"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"favicon.png",revision:"81eb710c3fadc823ae3bb676eacf1795"},{url:"manifest.webmanifest",revision:"54fda1775a89a999bda4c67bd363bb64"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/^\/api/]}))})); diff --git a/src/ui/package-lock.json b/src/ui/package-lock.json index 0948b53e..0ddaaba1 100644 --- a/src/ui/package-lock.json +++ b/src/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "reaudioplayer.one", - "version": "1.1.5", + "version": "1.1.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "reaudioplayer.one", - "version": "1.1.5", + "version": "1.1.6", "dependencies": { "@domchristie/needles": "^0.0.2-1", "chart.js": "^4.4.1", diff --git a/src/ui/package.json b/src/ui/package.json index d26ba821..c34e494b 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -1,6 +1,6 @@ { "name": "reaudioplayer.one", - "version": "1.1.5", + "version": "1.1.6", "type": "module", "scripts": { "dev": "vite",