diff --git a/docker-compose.yml b/docker-compose.yml index e44a3024..f2a6de3e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.9" services: reap-one: - image: "ghcr.io/reaudioplayer/reap-one:0.11.2" + image: "ghcr.io/reaudioplayer/reap-one:1.0.0" ports: - "1234:80" volumes: diff --git a/one.bat b/one.bat index 0a7a660a..630f4178 100644 --- a/one.bat +++ b/one.bat @@ -1,6 +1,6 @@ @echo off -set VERSION=0.11.2 +set VERSION=1.0.0 set command=%1 set arg=%2 diff --git a/rebuild.sh b/rebuild.sh index d474d856..afcd1ff6 100644 --- a/rebuild.sh +++ b/rebuild.sh @@ -1,5 +1,5 @@ docker compose down -docker rmi ghcr.io/reaudioplayer/reap-one:0.11.2 +docker rmi ghcr.io/reaudioplayer/reap-one:1.0.0 sudo bash -c 'echo "nameserver 1.1.1.1" > /etc/resolv.conf' -docker build -t ghcr.io/reaudioplayer/reap-one:0.11.2 . +docker build -t ghcr.io/reaudioplayer/reap-one:1.0.0 . docker compose up -d diff --git a/src/ui/dist/assets/Album-53489ebb.js b/src/ui/dist/assets/Album-1148dcd6.js similarity index 94% rename from src/ui/dist/assets/Album-53489ebb.js rename to src/ui/dist/assets/Album-1148dcd6.js index 2dbd9931..77d2d838 100644 --- a/src/ui/dist/assets/Album-53489ebb.js +++ b/src/ui/dist/assets/Album-1148dcd6.js @@ -1 +1 @@ -import{e as B,B as N,q as j,D as S,n,E as D,y as F,f as L,o as l,c as i,i as p,a7 as P,d as y,g as v,L as U,a,H,K as M,t as I,P as V,F as h,h as $,a2 as q,w as R,al as z,ar as J,ap as K,ag as O,l as G,m as Q,_ as T}from"./index-a96016e0.js";import{P as W}from"./PlaylistEntry-35a3078f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import"./playerInPicture-af203fdf.js";const C=c=>(G("data-v-4203b278"),c=c(),Q(),c),X={key:1,class:"fill-page"},Y={key:2,class:"artist p-4"},Z={class:"wrap"},ee={class:"artist__data"},se={class:"upper"},ae={class:"track__info__details flex flex-col justify-end"},te={class:"text-secondary my-0 text-2xl font-bold"},le={key:0,class:"text-muted text-base ml-4 font-light"},oe={class:"trac__info__details__normal"},ne={class:"flex flew-row items-center"},ie={class:"font-black text-5xl"},re=C(()=>a("hr",{class:"mb-4"},null,-1)),ue={class:"items"},ce=C(()=>a("h2",null,"All songs from this album",-1)),de={class:"items"},_e=B({__name:"Album",setup(c){const b=N();j();const E=S(()=>b.params.hash),s=n(null),m=n([]),r=n(null),d=n(null),f=n("url"),g=n(!1),x=async()=>{const e=await(await fetch(`/api/albums/${E.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,d.value="",g.value=!1,s.value.spotify.url.length&&(d.value=s.value.spotify.url,A(s.value.spotify.id),g.value=!0),f.value="link"},A=async t=>{const e=await fetch(`/api/spotify/albums/${t}`);if(!e){J.addError("Failed to fetch album from Spotify",await e.text(),3e3);return}m.value=await e.json()};D(d,()=>{var t,e;if(((e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.id)==K(d.value,"album")){f.value="link";return}f.value="save"});const w=S(()=>{var t,e,_;return((_=(e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.releaseDate)==null?void 0:_.toLocaleDateString())??""});return F(x),D(()=>b.params.name,()=>{s.value=null,x()}),(t,e)=>{var k;const _=L("Card");return l(),i(h,null,[s.value?(l(),p(P,{key:0,src:s.value.image,class:"-z-10"},null,8,["src"])):y("",!0),s.value?(l(),i("div",Y,[a("div",Z,[a("div",ee,[a("div",se,[v(H,{src:s.value.image,class:"max-w-sm rounded-xl",placeholder:"library_music",name:s.value.name},null,8,["src","name"]),a("div",ae,[a("h3",te,[v(M,{artist:s.value.artists.join(", "),class:"inline"},null,8,["artist"]),w.value?(l(),i("span",le,I(w.value),1)):y("",!0)]),a("div",oe,[a("div",ne,[a("h1",ie,I(s.value.name),1)])])])]),v(V,{class:"hideIfMobile mt-8","with-more":""}),re,a("div",ue,[(l(!0),i(h,null,$(s.value.songs,o=>q((l(),p(W,{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"])),[[O,!0]])),256))]),(k=m.value)!=null&&k.length?(l(),p(_,{key:0,class:"p-4"},{default:R(()=>[ce,a("div",de,[(l(!0),i(h,null,$(m.value,(o,u)=>(l(),p(z,{index:u,song:o,"can-import":"","cannot-add":"","with-cover":"","with-more":"",onUpdate:e[1]||(e[1]=pe=>t.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):y("",!0)])])])):(l(),i("div",X,[v(U)]))],64)}}});const he=T(_e,[["__scopeId","data-v-4203b278"]]);export{he as default}; +import{e as B,B as N,q as j,D as S,n,E as D,y as F,f as L,o as l,c as i,i as p,a7 as P,d as y,g as v,L as U,a,H,K as M,t as I,P as V,F as h,h as $,a2 as q,w as R,al as z,ar as J,ap as K,ag as O,l as G,m as Q,_ as T}from"./index-4a15a213.js";import{P as W}from"./PlaylistEntry-4f48a6f3.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import"./playerInPicture-af203fdf.js";const C=c=>(G("data-v-4203b278"),c=c(),Q(),c),X={key:1,class:"fill-page"},Y={key:2,class:"artist p-4"},Z={class:"wrap"},ee={class:"artist__data"},se={class:"upper"},ae={class:"track__info__details flex flex-col justify-end"},te={class:"text-secondary my-0 text-2xl font-bold"},le={key:0,class:"text-muted text-base ml-4 font-light"},oe={class:"trac__info__details__normal"},ne={class:"flex flew-row items-center"},ie={class:"font-black text-5xl"},re=C(()=>a("hr",{class:"mb-4"},null,-1)),ue={class:"items"},ce=C(()=>a("h2",null,"All songs from this album",-1)),de={class:"items"},_e=B({__name:"Album",setup(c){const b=N();j();const E=S(()=>b.params.hash),s=n(null),m=n([]),r=n(null),d=n(null),f=n("url"),g=n(!1),x=async()=>{const e=await(await fetch(`/api/albums/${E.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,d.value="",g.value=!1,s.value.spotify.url.length&&(d.value=s.value.spotify.url,A(s.value.spotify.id),g.value=!0),f.value="link"},A=async t=>{const e=await fetch(`/api/spotify/albums/${t}`);if(!e){J.addError("Failed to fetch album from Spotify",await e.text(),3e3);return}m.value=await e.json()};D(d,()=>{var t,e;if(((e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.id)==K(d.value,"album")){f.value="link";return}f.value="save"});const w=S(()=>{var t,e,_;return((_=(e=(t=s.value)==null?void 0:t.spotify)==null?void 0:e.releaseDate)==null?void 0:_.toLocaleDateString())??""});return F(x),D(()=>b.params.name,()=>{s.value=null,x()}),(t,e)=>{var k;const _=L("Card");return l(),i(h,null,[s.value?(l(),p(P,{key:0,src:s.value.image,class:"-z-10"},null,8,["src"])):y("",!0),s.value?(l(),i("div",Y,[a("div",Z,[a("div",ee,[a("div",se,[v(H,{src:s.value.image,class:"max-w-sm rounded-xl",placeholder:"library_music",name:s.value.name},null,8,["src","name"]),a("div",ae,[a("h3",te,[v(M,{artist:s.value.artists.join(", "),class:"inline"},null,8,["artist"]),w.value?(l(),i("span",le,I(w.value),1)):y("",!0)]),a("div",oe,[a("div",ne,[a("h1",ie,I(s.value.name),1)])])])]),v(V,{class:"hideIfMobile mt-8","with-more":""}),re,a("div",ue,[(l(!0),i(h,null,$(s.value.songs,o=>q((l(),p(W,{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"])),[[O,!0]])),256))]),(k=m.value)!=null&&k.length?(l(),p(_,{key:0,class:"p-4"},{default:R(()=>[ce,a("div",de,[(l(!0),i(h,null,$(m.value,(o,u)=>(l(),p(z,{index:u,song:o,"can-import":"","cannot-add":"","with-cover":"","with-more":"",onUpdate:e[1]||(e[1]=pe=>t.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):y("",!0)])])])):(l(),i("div",X,[v(U)]))],64)}}});const he=T(_e,[["__scopeId","data-v-4203b278"]]);export{he as default}; diff --git a/src/ui/dist/assets/Album-1148dcd6.js.gz b/src/ui/dist/assets/Album-1148dcd6.js.gz new file mode 100644 index 00000000..72751963 Binary files /dev/null and b/src/ui/dist/assets/Album-1148dcd6.js.gz differ diff --git a/src/ui/dist/assets/Album-53489ebb.js.gz b/src/ui/dist/assets/Album-53489ebb.js.gz deleted file mode 100644 index 3633ce69..00000000 Binary files a/src/ui/dist/assets/Album-53489ebb.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Artist-a34a6707.js.gz b/src/ui/dist/assets/Artist-a34a6707.js.gz deleted file mode 100644 index 5d6a7f84..00000000 Binary files a/src/ui/dist/assets/Artist-a34a6707.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Artist-a34a6707.js b/src/ui/dist/assets/Artist-d789cf52.js similarity index 94% rename from src/ui/dist/assets/Artist-a34a6707.js rename to src/ui/dist/assets/Artist-d789cf52.js index e8eeb65b..569945a0 100644 --- a/src/ui/dist/assets/Artist-a34a6707.js +++ b/src/ui/dist/assets/Artist-d789cf52.js @@ -1 +1 @@ -import{e as F,o as t,i as n,w as x,b as H,t as v,C as w,_ as L,B as j,q,D,n as h,E as U,y as R,c as o,a7 as z,d as i,g as y,L as M,a,H as V,O as B,F as p,h as g,u as O,Z as J,P as W,a2 as Y,al as Z,ap as E,aq as G,ag as K,l as Q,m as X}from"./index-a96016e0.js";import{F as A}from"./FactCard-5b41eb1a.js";import{P as ee}from"./PlaylistEntry-35a3078f.js";import{s as te}from"./spotify-9bae3b48.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import"./playerInPicture-af203fdf.js";const ae=F({__name:"Tag",props:{tag:{type:String,required:!0},withHash:{type:Boolean,default:!1}},setup(c){return(b,C)=>(t(),n(w,{class:"tag px-4 py-2 cursor-pointer","with-hover":""},{default:x(()=>[H(v(c.withHash?"#":"")+v(c.tag),1)]),_:1}))}});const se=L(ae,[["__scopeId","data-v-2712639d"]]),k=c=>(Q("data-v-13b2922c"),c=c(),X(),c),le={key:1,class:"fill-page"},oe={key:2,class:"artist p-4"},ne={class:"wrap"},re={class:"artist__data"},ie={class:"upper"},ue={class:"trac__info__details__normal"},de={key:0,class:"mt-0 mb-2 flex flex-row gap-2"},ce={class:"flex flew-row items-center"},_e={class:"font-black text-5xl ml-4"},pe={class:"features flex flex-row gap-4 mt-4 overflow-x-auto"},ve={class:"spotify-infos pt-4 pb-2"},me={class:"meta items-center"},fe={key:0,class:"flex flex-row align-items"},he=k(()=>a("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),ye={class:"font-bold"},ge=k(()=>a("hr",{class:"mb-4"},null,-1)),xe={class:"items"},we={key:0,class:"spotify-suggestions mt-4"},ke=k(()=>a("h2",null,"Top Tracks",-1)),be={class:"items"},Ce=k(()=>a("h2",null,"Related Artists",-1)),$e={class:"flex flex-row items-center gap-4"},Ie={class:"flex flex-col"},Se={class:"font-bold"},Te=F({__name:"Artist",setup(c){const b=j();q();const C=D(()=>b.params.name),e=h(null),m=h(null),u=h(null),f=h("url"),d=h(!1),$=async()=>{const r=await fetch(`/api/artists/${C.value}`);e.value=await r.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"},I=async r=>{await fetch(`/api/artists/${C.value}`,{method:"PUT",body:JSON.stringify({spotifyId:r})}),e.value=null,await $()};U(u,()=>{var r,l;if(((l=(r=e.value)==null?void 0:r.metadata)==null?void 0:l.id)==E(u.value,"artist")){f.value="link";return}f.value="save"});const P=()=>{if(f.value=="link"){G(u.value);return}I(E(u.value,"artist"))};return R($),U(()=>b.params.name,()=>{e.value=null,$()}),(r,l)=>{var S,T,N;return t(),o(p,null,[e.value?(t(),n(z,{key:0,src:e.value.cover,class:"-z-10"},null,8,["src"])):i("",!0),e.value?(t(),o("div",oe,[a("div",ne,[a("div",re,[a("div",ie,[y(V,{src:e.value.cover,class:"max-w-sm rounded-xl",placeholder:"person"},null,8,["src"]),a("div",{class:B([{"justify-end":e.value.metadata,"justify-center":!e.value.metadata},"track__info__details flex flex-col"])},[a("div",ue,[(S=e.value.metadata)!=null&&S.genres?(t(),o("div",de,[(t(!0),o(p,null,g(e.value.metadata.genres,s=>(t(),n(se,{tag:s,"with-hash":""},null,8,["tag"]))),256))])):i("",!0),a("div",ce,[a("h1",_e,v(e.value.name),1)])]),e.value.metadata?(t(),o(p,{key:0},[a("div",pe,[e.value.metadata.followers?(t(),n(A,{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?(t(),n(A,{key:1,"primary-text":e.value.songs.length,class:"w-full","secondary-text":"Tracks in Your Library"},null,8,["primary-text"])):i("",!0)]),a("div",ve,[a("div",me,[e.value.metadata.popularity?(t(),o("span",fe,[he,a("span",ye,v(e.value.metadata.popularity),1)])):i("",!0)]),y(O(te),{class:B([{enabled:d.value},"spotify-enable"]),onClick:l[0]||(l[0]=s=>d.value=!d.value)},null,8,["class"]),d.value?(t(),n(J,{key:0,modelValue:u.value,"onUpdate:modelValue":l[1]||(l[1]=s=>u.value=s),icon:f.value,onClick:P},null,8,["modelValue","icon"])):i("",!0),a("span",{class:"material-symbols-rounded cursor-pointer",onClick:l[2]||(l[2]=s=>d.value?I(!1):I(!0))},v(d.value?"delete":"search"),1)])],64)):i("",!0)],2)]),y(W,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),ge,a("div",xe,[(t(!0),o(p,null,g(e.value.songs,s=>Y((t(),n(ee,{index:e.value.songs.findIndex(_=>_.source==s.source),selected:m.value==s.id,song:s,"playlist-id":"artist","with-album":"","with-cover":"","with-more":"",artist:e.value.name,onClick:_=>m.value==s.id?m.value=-1:m.value=s.id,onUpdate:l[3]||(l[3]=_=>r.$emit("update"))},null,8,["index","selected","song","artist","onClick"])),[[K,!0]])),256))]),e.value.metadata?(t(),o("div",we,[(T=e.value.metadata.topTracks)!=null&&T.length?(t(),n(w,{key:0,class:"p-4"},{default:x(()=>[ke,a("div",be,[(t(!0),o(p,null,g(e.value.metadata.topTracks,(s,_)=>(t(),n(Z,{index:_,song:s,"can-import":"","cannot-add":"","with-album":"","with-cover":"","with-more":"",onUpdate:l[4]||(l[4]=Ne=>r.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):i("",!0),(N=e.value.metadata.related)!=null&&N.length?(t(),n(w,{key:1,class:"p-4 flex flex-col gap-2 related overflow-y-auto"},{default:x(()=>[Ce,(t(!0),o(p,null,g(e.value.metadata.related,s=>(t(),n(w,{class:"cursor-pointer px-4 py-2","with-hover":"",onClick:_=>r.$router.push(`/artist/${s.name}`)},{default:x(()=>[a("div",$e,[y(V,{src:s.cover,class:"w-8 h-8 rounded-xl",placeholder:"person"},null,8,["src"]),a("div",Ie,[a("h3",Se,v(s.name),1)])])]),_:2},1032,["onClick"]))),256))]),_:1})):i("",!0)])):i("",!0)])])])):(t(),o("div",le,[y(M)]))],64)}}});const Le=L(Te,[["__scopeId","data-v-13b2922c"]]);export{Le as default}; +import{e as F,o as t,i as n,w as x,b as H,t as v,C as w,_ as L,B as j,q,D,n as h,E as U,y as R,c as o,a7 as z,d as i,g as y,L as M,a,H as V,O as B,F as p,h as g,u as O,Z as J,P as W,a2 as Y,al as Z,ap as E,aq as G,ag as K,l as Q,m as X}from"./index-4a15a213.js";import{F as A}from"./FactCard-07fe2677.js";import{P as ee}from"./PlaylistEntry-4f48a6f3.js";import{s as te}from"./spotify-2bf3aeb7.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import"./playerInPicture-af203fdf.js";const ae=F({__name:"Tag",props:{tag:{type:String,required:!0},withHash:{type:Boolean,default:!1}},setup(c){return(b,C)=>(t(),n(w,{class:"tag px-4 py-2 cursor-pointer","with-hover":""},{default:x(()=>[H(v(c.withHash?"#":"")+v(c.tag),1)]),_:1}))}});const se=L(ae,[["__scopeId","data-v-2712639d"]]),k=c=>(Q("data-v-13b2922c"),c=c(),X(),c),le={key:1,class:"fill-page"},oe={key:2,class:"artist p-4"},ne={class:"wrap"},re={class:"artist__data"},ie={class:"upper"},ue={class:"trac__info__details__normal"},de={key:0,class:"mt-0 mb-2 flex flex-row gap-2"},ce={class:"flex flew-row items-center"},_e={class:"font-black text-5xl ml-4"},pe={class:"features flex flex-row gap-4 mt-4 overflow-x-auto"},ve={class:"spotify-infos pt-4 pb-2"},me={class:"meta items-center"},fe={key:0,class:"flex flex-row align-items"},he=k(()=>a("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),ye={class:"font-bold"},ge=k(()=>a("hr",{class:"mb-4"},null,-1)),xe={class:"items"},we={key:0,class:"spotify-suggestions mt-4"},ke=k(()=>a("h2",null,"Top Tracks",-1)),be={class:"items"},Ce=k(()=>a("h2",null,"Related Artists",-1)),$e={class:"flex flex-row items-center gap-4"},Ie={class:"flex flex-col"},Se={class:"font-bold"},Te=F({__name:"Artist",setup(c){const b=j();q();const C=D(()=>b.params.name),e=h(null),m=h(null),u=h(null),f=h("url"),d=h(!1),$=async()=>{const r=await fetch(`/api/artists/${C.value}`);e.value=await r.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"},I=async r=>{await fetch(`/api/artists/${C.value}`,{method:"PUT",body:JSON.stringify({spotifyId:r})}),e.value=null,await $()};U(u,()=>{var r,l;if(((l=(r=e.value)==null?void 0:r.metadata)==null?void 0:l.id)==E(u.value,"artist")){f.value="link";return}f.value="save"});const P=()=>{if(f.value=="link"){G(u.value);return}I(E(u.value,"artist"))};return R($),U(()=>b.params.name,()=>{e.value=null,$()}),(r,l)=>{var S,T,N;return t(),o(p,null,[e.value?(t(),n(z,{key:0,src:e.value.cover,class:"-z-10"},null,8,["src"])):i("",!0),e.value?(t(),o("div",oe,[a("div",ne,[a("div",re,[a("div",ie,[y(V,{src:e.value.cover,class:"max-w-sm rounded-xl",placeholder:"person"},null,8,["src"]),a("div",{class:B([{"justify-end":e.value.metadata,"justify-center":!e.value.metadata},"track__info__details flex flex-col"])},[a("div",ue,[(S=e.value.metadata)!=null&&S.genres?(t(),o("div",de,[(t(!0),o(p,null,g(e.value.metadata.genres,s=>(t(),n(se,{tag:s,"with-hash":""},null,8,["tag"]))),256))])):i("",!0),a("div",ce,[a("h1",_e,v(e.value.name),1)])]),e.value.metadata?(t(),o(p,{key:0},[a("div",pe,[e.value.metadata.followers?(t(),n(A,{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?(t(),n(A,{key:1,"primary-text":e.value.songs.length,class:"w-full","secondary-text":"Tracks in Your Library"},null,8,["primary-text"])):i("",!0)]),a("div",ve,[a("div",me,[e.value.metadata.popularity?(t(),o("span",fe,[he,a("span",ye,v(e.value.metadata.popularity),1)])):i("",!0)]),y(O(te),{class:B([{enabled:d.value},"spotify-enable"]),onClick:l[0]||(l[0]=s=>d.value=!d.value)},null,8,["class"]),d.value?(t(),n(J,{key:0,modelValue:u.value,"onUpdate:modelValue":l[1]||(l[1]=s=>u.value=s),icon:f.value,onClick:P},null,8,["modelValue","icon"])):i("",!0),a("span",{class:"material-symbols-rounded cursor-pointer",onClick:l[2]||(l[2]=s=>d.value?I(!1):I(!0))},v(d.value?"delete":"search"),1)])],64)):i("",!0)],2)]),y(W,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),ge,a("div",xe,[(t(!0),o(p,null,g(e.value.songs,s=>Y((t(),n(ee,{index:e.value.songs.findIndex(_=>_.source==s.source),selected:m.value==s.id,song:s,"playlist-id":"artist","with-album":"","with-cover":"","with-more":"",artist:e.value.name,onClick:_=>m.value==s.id?m.value=-1:m.value=s.id,onUpdate:l[3]||(l[3]=_=>r.$emit("update"))},null,8,["index","selected","song","artist","onClick"])),[[K,!0]])),256))]),e.value.metadata?(t(),o("div",we,[(T=e.value.metadata.topTracks)!=null&&T.length?(t(),n(w,{key:0,class:"p-4"},{default:x(()=>[ke,a("div",be,[(t(!0),o(p,null,g(e.value.metadata.topTracks,(s,_)=>(t(),n(Z,{index:_,song:s,"can-import":"","cannot-add":"","with-album":"","with-cover":"","with-more":"",onUpdate:l[4]||(l[4]=Ne=>r.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):i("",!0),(N=e.value.metadata.related)!=null&&N.length?(t(),n(w,{key:1,class:"p-4 flex flex-col gap-2 related overflow-y-auto"},{default:x(()=>[Ce,(t(!0),o(p,null,g(e.value.metadata.related,s=>(t(),n(w,{class:"cursor-pointer px-4 py-2","with-hover":"",onClick:_=>r.$router.push(`/artist/${s.name}`)},{default:x(()=>[a("div",$e,[y(V,{src:s.cover,class:"w-8 h-8 rounded-xl",placeholder:"person"},null,8,["src"]),a("div",Ie,[a("h3",Se,v(s.name),1)])])]),_:2},1032,["onClick"]))),256))]),_:1})):i("",!0)])):i("",!0)])])])):(t(),o("div",le,[y(M)]))],64)}}});const Le=L(Te,[["__scopeId","data-v-13b2922c"]]);export{Le as default}; diff --git a/src/ui/dist/assets/Artist-d789cf52.js.gz b/src/ui/dist/assets/Artist-d789cf52.js.gz new file mode 100644 index 00000000..9dd20366 Binary files /dev/null and b/src/ui/dist/assets/Artist-d789cf52.js.gz differ diff --git a/src/ui/dist/assets/BigPlayer-c3f89a47.js b/src/ui/dist/assets/BigPlayer-87137347.js similarity index 86% rename from src/ui/dist/assets/BigPlayer-c3f89a47.js rename to src/ui/dist/assets/BigPlayer-87137347.js index 05007a29..f4c6fb6a 100644 --- a/src/ui/dist/assets/BigPlayer-c3f89a47.js +++ b/src/ui/dist/assets/BigPlayer-87137347.js @@ -1 +1 @@ -import{e as q,a6 as z,j as D,D as i,n as u,E as T,y as V,f as E,o,c as d,u as a,F as f,a as s,g as h,O as k,H as F,i as w,w as M,d as O,t as x,z as R,h as j,l as A,m as H,_ as L}from"./index-a96016e0.js";import{_ as Q}from"./Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js";import{P as G}from"./PlaylistCard-200edd27.js";import"./PlaylistEntry-35a3078f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-31c73142.js";const p=r=>(A("data-v-3f7ac95c"),r=r(),H(),r),J={class:"bigPlayer"},K={class:"upNow"},U=p(()=>s("div",{style:{"animation-delay":"0s"},class:"block"},null,-1)),W=p(()=>s("div",{style:{"animation-delay":".25s"},class:"block"},null,-1)),X=p(()=>s("div",{style:{"animation-delay":".5s"},class:"block"},null,-1)),Y=[U,W,X],Z={class:"settings"},ee={key:1,class:"no-playlist-selected"},se={class:"wrapper"},ae=p(()=>s("h2",null,"Nothing playing yet...",-1)),te={class:"playlists"},le=q({__name:"BigPlayer",emits:["maximise"],setup(r,{emit:B}){const e=z(),b=D(),y=i(()=>e.playing),C=i(()=>e.song.cover),P=i(()=>e.song.id),v=i(()=>e.loaded?`${e.song.title} • ${e.song.artist}`:"reAudioPlayer One"),S=i(()=>b.playlists),m=u(null),$=B;document.title=v.value,T(v,t=>{document.title=t}),V(()=>{window.setTimeout(()=>{var t;(t=m.value)!=null&&t.scrollTop||m.value.scrollToSong(P.value)},1e3)});let c=u(!1);const I=()=>{c.value=!c.value,$("maximise",c.value)},_=u(!1),n=u(!1);return(t,l)=>{const N=E("Card");return o(),d("div",J,[a(e).loaded?(o(),d(f,{key:0},[s("div",K,[h(F,{class:k([{playing:y.value,animate:n.value},"drop-shadow-2xl"]),src:C.value,type:"track","with-ambient":"",name:a(e).song.title},null,8,["class","src","name"]),s("div",{class:k([{playing:y.value,animate:n.value},"blocks"])},Y,2)]),a(e).queue&&a(e).playlist?(o(),w(N,{class:"playlist-overflow drop-shadow-2xl relative",key:a(e).playlist.id},{default:M(()=>[h(Q,{ref_key:"playlistScroll",ref:m,playlist:{...a(e).playlist,queue:a(e).queue},"use-queue":"",draggable:"",onRearrange:a(e).rearrangeQueue},null,8,["playlist","onRearrange"])]),_:1})):O("",!0),s("div",Z,[s("span",{class:"iconButton material-symbols-rounded",onClick:I},x(a(c)?"fullscreen_exit":"fullscreen"),1),s("span",{style:R({transform:`rotate(${_.value?0:180}deg)`}),class:"iconButton material-symbols-rounded",onClick:l[0]||(l[0]=()=>_.value=!_.value)},"menu_open",4),s("span",{class:"iconButton material-symbols-rounded",onClick:l[1]||(l[1]=()=>n.value=!n.value)},x(n.value?"motion_photos_off":"animation"),1),s("span",{class:"iconButton material-symbols-rounded",onClick:l[2]||(l[2]=g=>t.$router.push("/player/insights"))}," insights ")])],64)):(o(),d("div",ee,[s("div",se,[ae,s("div",te,[(o(!0),d(f,null,j(S.value,g=>(o(),w(G,{playlist:g},null,8,["playlist"]))),256))])])]))])}}});const pe=L(le,[["__scopeId","data-v-3f7ac95c"]]);export{pe as default}; +import{e as q,a6 as z,j as D,D as i,n as u,E as T,y as V,f as E,o,c as d,u as a,F as f,a as s,g as h,O as k,H as F,i as w,w as M,d as O,t as x,z as R,h as j,l as A,m as H,_ as L}from"./index-4a15a213.js";import{_ as Q}from"./Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js";import{P as G}from"./PlaylistCard-915b2cc1.js";import"./PlaylistEntry-4f48a6f3.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-c5c8aeea.js";const p=r=>(A("data-v-3f7ac95c"),r=r(),H(),r),J={class:"bigPlayer"},K={class:"upNow"},U=p(()=>s("div",{style:{"animation-delay":"0s"},class:"block"},null,-1)),W=p(()=>s("div",{style:{"animation-delay":".25s"},class:"block"},null,-1)),X=p(()=>s("div",{style:{"animation-delay":".5s"},class:"block"},null,-1)),Y=[U,W,X],Z={class:"settings"},ee={key:1,class:"no-playlist-selected"},se={class:"wrapper"},ae=p(()=>s("h2",null,"Nothing playing yet...",-1)),te={class:"playlists"},le=q({__name:"BigPlayer",emits:["maximise"],setup(r,{emit:B}){const e=z(),b=D(),y=i(()=>e.playing),C=i(()=>e.song.cover),P=i(()=>e.song.id),v=i(()=>e.loaded?`${e.song.title} • ${e.song.artist}`:"reAudioPlayer One"),S=i(()=>b.playlists),m=u(null),$=B;document.title=v.value,T(v,t=>{document.title=t}),V(()=>{window.setTimeout(()=>{var t;(t=m.value)!=null&&t.scrollTop||m.value.scrollToSong(P.value)},1e3)});let c=u(!1);const I=()=>{c.value=!c.value,$("maximise",c.value)},_=u(!1),n=u(!1);return(t,l)=>{const N=E("Card");return o(),d("div",J,[a(e).loaded?(o(),d(f,{key:0},[s("div",K,[h(F,{class:k([{playing:y.value,animate:n.value},"drop-shadow-2xl"]),src:C.value,type:"track","with-ambient":"",name:a(e).song.title},null,8,["class","src","name"]),s("div",{class:k([{playing:y.value,animate:n.value},"blocks"])},Y,2)]),a(e).queue&&a(e).playlist?(o(),w(N,{class:"playlist-overflow drop-shadow-2xl relative",key:a(e).playlist.id},{default:M(()=>[h(Q,{ref_key:"playlistScroll",ref:m,playlist:{...a(e).playlist,queue:a(e).queue},"use-queue":"",draggable:"",onRearrange:a(e).rearrangeQueue},null,8,["playlist","onRearrange"])]),_:1})):O("",!0),s("div",Z,[s("span",{class:"iconButton material-symbols-rounded",onClick:I},x(a(c)?"fullscreen_exit":"fullscreen"),1),s("span",{style:R({transform:`rotate(${_.value?0:180}deg)`}),class:"iconButton material-symbols-rounded",onClick:l[0]||(l[0]=()=>_.value=!_.value)},"menu_open",4),s("span",{class:"iconButton material-symbols-rounded",onClick:l[1]||(l[1]=()=>n.value=!n.value)},x(n.value?"motion_photos_off":"animation"),1),s("span",{class:"iconButton material-symbols-rounded",onClick:l[2]||(l[2]=g=>t.$router.push("/player/insights"))}," insights ")])],64)):(o(),d("div",ee,[s("div",se,[ae,s("div",te,[(o(!0),d(f,null,j(S.value,g=>(o(),w(G,{playlist:g},null,8,["playlist"]))),256))])])]))])}}});const pe=L(le,[["__scopeId","data-v-3f7ac95c"]]);export{pe as default}; diff --git a/src/ui/dist/assets/BigPlayer-87137347.js.gz b/src/ui/dist/assets/BigPlayer-87137347.js.gz new file mode 100644 index 00000000..59da1ae3 Binary files /dev/null and b/src/ui/dist/assets/BigPlayer-87137347.js.gz differ diff --git a/src/ui/dist/assets/BigPlayer-c3f89a47.js.gz b/src/ui/dist/assets/BigPlayer-c3f89a47.js.gz deleted file mode 100644 index 8f6cfda4..00000000 Binary files a/src/ui/dist/assets/BigPlayer-c3f89a47.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Breaking-631b2bc3.js b/src/ui/dist/assets/Breaking-631b2bc3.js deleted file mode 100644 index 2cb123b8..00000000 --- a/src/ui/dist/assets/Breaking-631b2bc3.js +++ /dev/null @@ -1 +0,0 @@ -import{T as r}from"./Template-d00bcc07.js";import{i as o,o as t}from"./index-a96016e0.js";import"./PlaylistEntry-35a3078f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-31c73142.js";import"./FactCard-5b41eb1a.js";import"./gistClient-de41c06b.js";import"./Markdown.vue_vue_type_style_index_0_lang-40bffaf2.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-bca7f1ee.js b/src/ui/dist/assets/Breaking-bca7f1ee.js new file mode 100644 index 00000000..fc84af48 --- /dev/null +++ b/src/ui/dist/assets/Breaking-bca7f1ee.js @@ -0,0 +1 @@ +import{T as r}from"./Template-96d3b86b.js";import{i as o,o as t}from"./index-4a15a213.js";import"./PlaylistEntry-4f48a6f3.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-c5c8aeea.js";import"./FactCard-07fe2677.js";import"./gistClient-56b8a233.js";import"./Markdown.vue_vue_type_style_index_0_lang-99c6b55d.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-d963d433.js b/src/ui/dist/assets/Create-5e460494.js similarity index 94% rename from src/ui/dist/assets/Create-d963d433.js rename to src/ui/dist/assets/Create-5e460494.js index d745ea84..f2548b2d 100644 --- a/src/ui/dist/assets/Create-d963d433.js +++ b/src/ui/dist/assets/Create-5e460494.js @@ -1 +1 @@ -import{e as d,q as p,B as y,y as m,o as f,c as x,a as e,g as n,w as r,C as i,U as h,l as v,m as C,_ as w}from"./index-a96016e0.js";const s=a=>(v("data-v-907ec981"),a=a(),C(),a),b={class:"flex h-full w-full items-center justify-center"},k={class:"types"},B=s(()=>e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"library_music")],-1)),I=s(()=>e("h4",null,"Classic Playlist",-1)),S=s(()=>e("p",{class:"text-sm text-muted"},"Manage your playlist manually",-1)),g=s(()=>e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"bolt")],-1)),j=s(()=>e("h4",null,"Smart Playlist",-1)),q=s(()=>e("p",{class:"text-sm text-muted"}," Define rules to automatically update your playlist ",-1)),P=d({__name:"Create",setup(a){const u=p(),l=y(),o=async c=>{const t=await h(c);u.push(t)};return m(()=>{l.query.type&&o(l.query.type)}),(c,t)=>(f(),x("div",b,[e("div",k,[n(i,{"with-hover":"",class:"cursor-pointer",onClick:t[0]||(t[0]=_=>o("classic"))},{default:r(()=>[B,I,S]),_:1}),n(i,{"with-hover":"",class:"cursor-pointer",onClick:t[1]||(t[1]=_=>o("smart"))},{default:r(()=>[g,j,q]),_:1})])]))}});const N=w(P,[["__scopeId","data-v-907ec981"]]);export{N as default}; +import{e as d,q as p,B as y,y as m,o as f,c as x,a as e,g as n,w as r,C as i,U as h,l as v,m as C,_ as w}from"./index-4a15a213.js";const s=a=>(v("data-v-907ec981"),a=a(),C(),a),b={class:"flex h-full w-full items-center justify-center"},k={class:"types"},B=s(()=>e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"library_music")],-1)),I=s(()=>e("h4",null,"Classic Playlist",-1)),S=s(()=>e("p",{class:"text-sm text-muted"},"Manage your playlist manually",-1)),g=s(()=>e("div",{class:"flex flex-row justify-center"},[e("span",{class:"text-9xl material-symbols-rounded icon"},"bolt")],-1)),j=s(()=>e("h4",null,"Smart Playlist",-1)),q=s(()=>e("p",{class:"text-sm text-muted"}," Define rules to automatically update your playlist ",-1)),P=d({__name:"Create",setup(a){const u=p(),l=y(),o=async c=>{const t=await h(c);u.push(t)};return m(()=>{l.query.type&&o(l.query.type)}),(c,t)=>(f(),x("div",b,[e("div",k,[n(i,{"with-hover":"",class:"cursor-pointer",onClick:t[0]||(t[0]=_=>o("classic"))},{default:r(()=>[B,I,S]),_:1}),n(i,{"with-hover":"",class:"cursor-pointer",onClick:t[1]||(t[1]=_=>o("smart"))},{default:r(()=>[g,j,q]),_:1})])]))}});const N=w(P,[["__scopeId","data-v-907ec981"]]);export{N as default}; diff --git a/src/ui/dist/assets/Create-5e460494.js.gz b/src/ui/dist/assets/Create-5e460494.js.gz new file mode 100644 index 00000000..4d81806b Binary files /dev/null and b/src/ui/dist/assets/Create-5e460494.js.gz differ diff --git a/src/ui/dist/assets/Create-d963d433.js.gz b/src/ui/dist/assets/Create-d963d433.js.gz deleted file mode 100644 index 2227c229..00000000 Binary files a/src/ui/dist/assets/Create-d963d433.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js similarity index 96% rename from src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js rename to src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js index c71ad312..c8e06305 100644 --- a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js +++ b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js @@ -1 +1 @@ -import{e as y,n as u,E as b,o as w,i as _,w as h,g as x,v as S,a9 as k,cT as q,ar as F}from"./index-a96016e0.js";const T=y({__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),g=new File([n],a.song.id+i,{type:e.type});return o.append("file",g),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)}}]),f=async()=>{const t=l.value.toObject();await q({...a.song,...t}),v("update"),F.addSuccess(t.title,"Updated",3e3)},c=u(null),l=u(null);return m({show:()=>{c.value.show()}}),b(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:c,submit:{label:"Save",icon:"save"},name:"Edit Song",onClose:e[0]||(e[0]=o=>t.$emit("close")),onSubmit:f},{default:h(()=>[x(S,{ref_key:"form",ref:l,options:s.value},null,8,["options"])]),_:1},512))}});export{T as _}; +import{e as y,n as u,E as b,o as w,i as _,w as h,g as x,v as S,a9 as k,cT as q,ar as F}from"./index-4a15a213.js";const T=y({__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),g=new File([n],a.song.id+i,{type:e.type});return o.append("file",g),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)}}]),f=async()=>{const t=l.value.toObject();await q({...a.song,...t}),v("update"),F.addSuccess(t.title,"Updated",3e3)},c=u(null),l=u(null);return m({show:()=>{c.value.show()}}),b(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:c,submit:{label:"Save",icon:"save"},name:"Edit Song",onClose:e[0]||(e[0]=o=>t.$emit("close")),onSubmit:f},{default:h(()=>[x(S,{ref_key:"form",ref:l,options:s.value},null,8,["options"])]),_:1},512))}});export{T as _}; diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js.gz b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js.gz new file mode 100644 index 00000000..a70b7a44 Binary files /dev/null and b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js.gz differ diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js.gz b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js.gz deleted file mode 100644 index 1e8397ce..00000000 Binary files a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Editor-89cea9ee.js b/src/ui/dist/assets/Editor-2ef03efe.js similarity index 89% rename from src/ui/dist/assets/Editor-89cea9ee.js rename to src/ui/dist/assets/Editor-2ef03efe.js index 90f36997..ebee0c13 100644 --- a/src/ui/dist/assets/Editor-89cea9ee.js +++ b/src/ui/dist/assets/Editor-2ef03efe.js @@ -1 +1 @@ -import{e as S,B as x,q as I,D as E,j as B,n as _,E as $,V as U,W as A,y as F,X as R,o as i,c as n,a as l,g as s,I as c,Y as L,t as f,Z as y,F as b,h,w as M,C as N,$ as O,a0 as T,_ as W}from"./index-a96016e0.js";import{_ as j}from"./Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js";import"./PlaylistEntry-35a3078f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-31c73142.js";const q={class:"playlist-editor"},X={class:"editor"},Y={class:"sort my-2"},Z={class:"filters"},z={class:"uppercase mt-0"},G={class:"items"},H={class:"item"},J=["onClick"],K={class:"preview"},Q=S({__name:"Editor",setup(ee){const w=x(),V=I(),r=E(()=>w.params.id),d=B(),e=_({direction:"asc",sort:"id",limit:25,filter:{title:[],artist:[],album:[],duration:{}}}),m=_();$([()=>e.value.sort,()=>e.value.filter,()=>e.value.direction],U.debounce(async()=>{m.value=await A(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 g=async()=>{await O(r.value,e.value),d.fetchPlaylists()},D=async()=>{await T(r.value),d.fetchPlaylists(),V.push("/")};return(o,a)=>(i(),n("div",q,[l("div",X,[l("div",Y,[s(c,{label:"Save",icon:"save",type:"success",class:"!mt-0",onClick:g}),s(c,{label:"Delete",icon:"delete",type:"danger",class:"!mt-0",onClick:D}),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",z,f(t),1),l("div",G,[(i(!0),n(b,null,h(e.value.filter[t],(P,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:P=>e.value.filter[t].push("")},null,8,["onClick"])])]),_:2},1024)),64))])]),l("div",K,[s(j,{playlist:m.value},null,8,["playlist"])])]))}});const ne=W(Q,[["__scopeId","data-v-1b0238f2"]]);export{ne as default}; +import{e as S,B as x,q as I,D as E,j as B,n as _,E as $,V as U,W as A,y as F,X as R,o as i,c as n,a as l,g as s,I as c,Y as L,t as f,Z as y,F as b,h,w as M,C as N,$ as O,a0 as T,_ as W}from"./index-4a15a213.js";import{_ as j}from"./Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js";import"./PlaylistEntry-4f48a6f3.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-c5c8aeea.js";const q={class:"playlist-editor"},X={class:"editor"},Y={class:"sort my-2"},Z={class:"filters"},z={class:"uppercase mt-0"},G={class:"items"},H={class:"item"},J=["onClick"],K={class:"preview"},Q=S({__name:"Editor",setup(ee){const w=x(),V=I(),r=E(()=>w.params.id),d=B(),e=_({direction:"asc",sort:"id",limit:25,filter:{title:[],artist:[],album:[],duration:{}}}),m=_();$([()=>e.value.sort,()=>e.value.filter,()=>e.value.direction],U.debounce(async()=>{m.value=await A(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 g=async()=>{await O(r.value,e.value),d.fetchPlaylists()},D=async()=>{await T(r.value),d.fetchPlaylists(),V.push("/")};return(o,a)=>(i(),n("div",q,[l("div",X,[l("div",Y,[s(c,{label:"Save",icon:"save",type:"success",class:"!mt-0",onClick:g}),s(c,{label:"Delete",icon:"delete",type:"danger",class:"!mt-0",onClick:D}),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",z,f(t),1),l("div",G,[(i(!0),n(b,null,h(e.value.filter[t],(P,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:P=>e.value.filter[t].push("")},null,8,["onClick"])])]),_:2},1024)),64))])]),l("div",K,[s(j,{playlist:m.value},null,8,["playlist"])])]))}});const ne=W(Q,[["__scopeId","data-v-1b0238f2"]]);export{ne as default}; diff --git a/src/ui/dist/assets/Editor-2ef03efe.js.gz b/src/ui/dist/assets/Editor-2ef03efe.js.gz new file mode 100644 index 00000000..ca17ce94 Binary files /dev/null and b/src/ui/dist/assets/Editor-2ef03efe.js.gz differ diff --git a/src/ui/dist/assets/Editor-89cea9ee.js.gz b/src/ui/dist/assets/Editor-89cea9ee.js.gz deleted file mode 100644 index 28e45ee2..00000000 Binary files a/src/ui/dist/assets/Editor-89cea9ee.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Error-2928541c.js b/src/ui/dist/assets/Error-e5e93467.js similarity index 79% rename from src/ui/dist/assets/Error-2928541c.js rename to src/ui/dist/assets/Error-e5e93467.js index fffca7c5..80343b83 100644 --- a/src/ui/dist/assets/Error-2928541c.js +++ b/src/ui/dist/assets/Error-e5e93467.js @@ -1 +1 @@ -import{e as r,o as _,c as o,a as s,_ as t}from"./index-a96016e0.js";const n={class:"error"},a=["innerHTML"],c=r({__name:"Error",props:{msg:{type:String,required:!0}},setup(e){return(d,p)=>(_(),o("div",n,[s("h1",{innerHTML:e.msg},null,8,a)]))}});const l=t(c,[["__scopeId","data-v-03ad8ef0"]]);export{l as E}; +import{e as r,o as _,c as o,a as s,_ as t}from"./index-4a15a213.js";const n={class:"error"},a=["innerHTML"],c=r({__name:"Error",props:{msg:{type:String,required:!0}},setup(e){return(d,p)=>(_(),o("div",n,[s("h1",{innerHTML:e.msg},null,8,a)]))}});const l=t(c,[["__scopeId","data-v-03ad8ef0"]]);export{l as E}; diff --git a/src/ui/dist/assets/Explore-d53ca56f.js b/src/ui/dist/assets/Explore-0f64f4c4.js similarity index 93% rename from src/ui/dist/assets/Explore-d53ca56f.js rename to src/ui/dist/assets/Explore-0f64f4c4.js index 93d723fd..d3c63ed2 100644 --- a/src/ui/dist/assets/Explore-d53ca56f.js +++ b/src/ui/dist/assets/Explore-0f64f4c4.js @@ -1 +1 @@ -import{_,o as r,c as n,a as e,r as u,z as h,l as f,m,F as y,h as v,p,A as k,f as g,g as o,w as c,M as d,u as S}from"./index-a96016e0.js";const $={props:{src:String}},x=s=>(f("data-v-0c755b69"),s=s(),m(),s),C=x(()=>e("div",{class:"filter"},null,-1)),I={class:"info"};function b(s,a,l,i,t,N){return r(),n("div",{class:"image",style:h({backgroundImage:"url("+l.src+")"})},[C,e("div",I,[u(s.$slots,"default",{},void 0,!0)])],4)}const O=_($,[["render",b],["__scopeId","data-v-0c755b69"]]);const w={class:"songContent"},E={class:"play"},H=["onClick"],M={class:"info"},P={data(){return fetch("/api/playlists").then(async s=>{this.playlists=await s.json(),this.pick()}),{playlists:[],picks:[]}},mounted(){},methods:{parseCover:p,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/${k(s.id)}`},loadPlaylist(s){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:s,type:"track"})})}}},B=Object.assign(P,{__name:"Explore",setup(s){return(a,l)=>{const i=g("router-link");return r(),n("div",{ref:"container",class:"explore",onScroll:l[0]||(l[0]=(...t)=>a.onScroll&&a.onScroll(...t))},[(r(!0),n(y,null,v(a.picks,t=>(r(),n("div",{key:t.name,class:"item"},[o(O,{src:S(p)(t.cover)},{default:c(()=>[e("div",w,[e("div",E,[e("span",{id:"loadPlaylist",class:"material-symbols-rounded play",onClick:()=>a.loadPlaylist(t.id)},"play_circle",8,H)]),e("div",M,[o(i,{to:a.href(t),class:"linkOnHover"},{default:c(()=>[e("h1",null,[o(d,{text:t.title},null,8,["text"])])]),_:2},1032,["to"]),o(i,{to:`/search/${t.artist}`,class:"linkOnHover"},{default:c(()=>[e("p",null,[o(d,{text:t.artist},null,8,["text"])])]),_:2},1032,["to"])])])]),_:2},1032,["src"])]))),128))],544)}}}),j=_(B,[["__scopeId","data-v-51105a59"]]);export{j as default}; +import{_,o as r,c as n,a as e,r as u,z as h,l as f,m,F as y,h as v,p,A as k,f as g,g as o,w as c,M as d,u as S}from"./index-4a15a213.js";const $={props:{src:String}},x=s=>(f("data-v-0c755b69"),s=s(),m(),s),C=x(()=>e("div",{class:"filter"},null,-1)),I={class:"info"};function b(s,a,l,i,t,N){return r(),n("div",{class:"image",style:h({backgroundImage:"url("+l.src+")"})},[C,e("div",I,[u(s.$slots,"default",{},void 0,!0)])],4)}const O=_($,[["render",b],["__scopeId","data-v-0c755b69"]]);const w={class:"songContent"},E={class:"play"},H=["onClick"],M={class:"info"},P={data(){return fetch("/api/playlists").then(async s=>{this.playlists=await s.json(),this.pick()}),{playlists:[],picks:[]}},mounted(){},methods:{parseCover:p,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/${k(s.id)}`},loadPlaylist(s){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:s,type:"track"})})}}},B=Object.assign(P,{__name:"Explore",setup(s){return(a,l)=>{const i=g("router-link");return r(),n("div",{ref:"container",class:"explore",onScroll:l[0]||(l[0]=(...t)=>a.onScroll&&a.onScroll(...t))},[(r(!0),n(y,null,v(a.picks,t=>(r(),n("div",{key:t.name,class:"item"},[o(O,{src:S(p)(t.cover)},{default:c(()=>[e("div",w,[e("div",E,[e("span",{id:"loadPlaylist",class:"material-symbols-rounded play",onClick:()=>a.loadPlaylist(t.id)},"play_circle",8,H)]),e("div",M,[o(i,{to:a.href(t),class:"linkOnHover"},{default:c(()=>[e("h1",null,[o(d,{text:t.title},null,8,["text"])])]),_:2},1032,["to"]),o(i,{to:`/search/${t.artist}`,class:"linkOnHover"},{default:c(()=>[e("p",null,[o(d,{text:t.artist},null,8,["text"])])]),_:2},1032,["to"])])])]),_:2},1032,["src"])]))),128))],544)}}}),j=_(B,[["__scopeId","data-v-51105a59"]]);export{j as default}; diff --git a/src/ui/dist/assets/Explore-0f64f4c4.js.gz b/src/ui/dist/assets/Explore-0f64f4c4.js.gz new file mode 100644 index 00000000..f0a5ce81 Binary files /dev/null and b/src/ui/dist/assets/Explore-0f64f4c4.js.gz differ diff --git a/src/ui/dist/assets/Explore-d53ca56f.js.gz b/src/ui/dist/assets/Explore-d53ca56f.js.gz deleted file mode 100644 index de177504..00000000 Binary files a/src/ui/dist/assets/Explore-d53ca56f.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Export-5d7b27d8.js b/src/ui/dist/assets/Export-b9da4cc1.js similarity index 99% rename from src/ui/dist/assets/Export-5d7b27d8.js rename to src/ui/dist/assets/Export-b9da4cc1.js index 84c96b8d..a8432d97 100644 --- a/src/ui/dist/assets/Export-5d7b27d8.js +++ b/src/ui/dist/assets/Export-b9da4cc1.js @@ -1,4 +1,4 @@ -import{H as Yt,C as qt,p as Wt,ab as Ht,_ as wt,i as xt,w as Jt,f as W,o as L,a as _,g as q,c as V,t as N,d as Z,b as yt,F as Bt,aD as dt,ae as Xt,j as zt,I as Kt,h as Zt,l as Qt,m as vt}from"./index-a96016e0.js";import{G as Q}from"./gistClient-de41c06b.js";var gt={},H={};H.byteLength=ir;H.toByteArray=nr;H.fromByteArray=ur;var R=[],T=[],tr=typeof Uint8Array<"u"?Uint8Array:Array,v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var M=0,rr=v.length;M0)throw new Error("Invalid string. Length must be a multiple of 4");var h=l.indexOf("=");h===-1&&(h=c);var p=h===c?0:4-h%4;return[h,p]}function ir(l){var c=mt(l),h=c[0],p=c[1];return(h+p)*3/4-p}function er(l,c,h){return(c+h)*3/4-h}function nr(l){var c,h=mt(l),p=h[0],y=h[1],f=new tr(er(l,p,y)),a=0,o=y>0?p-4:p,w;for(w=0;w>16&255,f[a++]=c>>8&255,f[a++]=c&255;return y===2&&(c=T[l.charCodeAt(w)]<<2|T[l.charCodeAt(w+1)]>>4,f[a++]=c&255),y===1&&(c=T[l.charCodeAt(w)]<<10|T[l.charCodeAt(w+1)]<<4|T[l.charCodeAt(w+2)]>>2,f[a++]=c>>8&255,f[a++]=c&255),f}function or(l){return R[l>>18&63]+R[l>>12&63]+R[l>>6&63]+R[l&63]}function sr(l,c,h){for(var p,y=[],f=c;fo?o:a+f));return p===1?(c=l[h-1],y.push(R[c>>2]+R[c<<4&63]+"==")):p===2&&(c=(l[h-2]<<8)+l[h-1],y.push(R[c>>10]+R[c>>4&63]+R[c<<2&63]+"=")),y.join("")}var tt={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */tt.read=function(l,c,h,p,y){var f,a,o=y*8-p-1,w=(1<>1,I=-7,F=h?y-1:0,P=h?-1:1,A=l[c+F];for(F+=P,f=A&(1<<-I)-1,A>>=-I,I+=o;I>0;f=f*256+l[c+F],F+=P,I-=8);for(a=f&(1<<-I)-1,f>>=-I,I+=p;I>0;a=a*256+l[c+F],F+=P,I-=8);if(f===0)f=1-C;else{if(f===w)return a?NaN:(A?-1:1)*(1/0);a=a+Math.pow(2,p),f=f-C}return(A?-1:1)*a*Math.pow(2,f-p)};tt.write=function(l,c,h,p,y,f){var a,o,w,C=f*8-y-1,I=(1<>1,P=y===23?Math.pow(2,-24)-Math.pow(2,-77):0,A=p?0:f-1,O=p?1:-1,G=c<0||c===0&&1/c<0?1:0;for(c=Math.abs(c),isNaN(c)||c===1/0?(o=isNaN(c)?1:0,a=I):(a=Math.floor(Math.log(c)/Math.LN2),c*(w=Math.pow(2,-a))<1&&(a--,w*=2),a+F>=1?c+=P/w:c+=P*Math.pow(2,1-F),c*w>=2&&(a++,w/=2),a+F>=I?(o=0,a=I):a+F>=1?(o=(c*w-1)*Math.pow(2,y),a=a+F):(o=c*Math.pow(2,F-1)*Math.pow(2,y),a=0));y>=8;l[h+A]=o&255,A+=O,o/=256,y-=8);for(a=a<0;l[h+A]=a&255,A+=O,a/=256,C-=8);l[h+A-O]|=G*128};/*! +import{H as Yt,C as qt,p as Wt,ab as Ht,_ as wt,i as xt,w as Jt,f as W,o as L,a as _,g as q,c as V,t as N,d as Z,b as yt,F as Bt,aD as dt,ae as Xt,j as zt,I as Kt,h as Zt,l as Qt,m as vt}from"./index-4a15a213.js";import{G as Q}from"./gistClient-56b8a233.js";var gt={},H={};H.byteLength=ir;H.toByteArray=nr;H.fromByteArray=ur;var R=[],T=[],tr=typeof Uint8Array<"u"?Uint8Array:Array,v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var M=0,rr=v.length;M0)throw new Error("Invalid string. Length must be a multiple of 4");var h=l.indexOf("=");h===-1&&(h=c);var p=h===c?0:4-h%4;return[h,p]}function ir(l){var c=mt(l),h=c[0],p=c[1];return(h+p)*3/4-p}function er(l,c,h){return(c+h)*3/4-h}function nr(l){var c,h=mt(l),p=h[0],y=h[1],f=new tr(er(l,p,y)),a=0,o=y>0?p-4:p,w;for(w=0;w>16&255,f[a++]=c>>8&255,f[a++]=c&255;return y===2&&(c=T[l.charCodeAt(w)]<<2|T[l.charCodeAt(w+1)]>>4,f[a++]=c&255),y===1&&(c=T[l.charCodeAt(w)]<<10|T[l.charCodeAt(w+1)]<<4|T[l.charCodeAt(w+2)]>>2,f[a++]=c>>8&255,f[a++]=c&255),f}function or(l){return R[l>>18&63]+R[l>>12&63]+R[l>>6&63]+R[l&63]}function sr(l,c,h){for(var p,y=[],f=c;fo?o:a+f));return p===1?(c=l[h-1],y.push(R[c>>2]+R[c<<4&63]+"==")):p===2&&(c=(l[h-2]<<8)+l[h-1],y.push(R[c>>10]+R[c>>4&63]+R[c<<2&63]+"=")),y.join("")}var tt={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */tt.read=function(l,c,h,p,y){var f,a,o=y*8-p-1,w=(1<>1,I=-7,F=h?y-1:0,P=h?-1:1,A=l[c+F];for(F+=P,f=A&(1<<-I)-1,A>>=-I,I+=o;I>0;f=f*256+l[c+F],F+=P,I-=8);for(a=f&(1<<-I)-1,f>>=-I,I+=p;I>0;a=a*256+l[c+F],F+=P,I-=8);if(f===0)f=1-C;else{if(f===w)return a?NaN:(A?-1:1)*(1/0);a=a+Math.pow(2,p),f=f-C}return(A?-1:1)*a*Math.pow(2,f-p)};tt.write=function(l,c,h,p,y,f){var a,o,w,C=f*8-y-1,I=(1<>1,P=y===23?Math.pow(2,-24)-Math.pow(2,-77):0,A=p?0:f-1,O=p?1:-1,G=c<0||c===0&&1/c<0?1:0;for(c=Math.abs(c),isNaN(c)||c===1/0?(o=isNaN(c)?1:0,a=I):(a=Math.floor(Math.log(c)/Math.LN2),c*(w=Math.pow(2,-a))<1&&(a--,w*=2),a+F>=1?c+=P/w:c+=P*Math.pow(2,1-F),c*w>=2&&(a++,w/=2),a+F>=I?(o=0,a=I):a+F>=1?(o=(c*w-1)*Math.pow(2,y),a=a+F):(o=c*Math.pow(2,F-1)*Math.pow(2,y),a=0));y>=8;l[h+A]=o&255,A+=O,o/=256,y-=8);for(a=a<0;l[h+A]=a&255,A+=O,a/=256,C-=8);l[h+A-O]|=G*128};/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh diff --git a/src/ui/dist/assets/Export-5d7b27d8.js.gz b/src/ui/dist/assets/Export-b9da4cc1.js.gz similarity index 95% rename from src/ui/dist/assets/Export-5d7b27d8.js.gz rename to src/ui/dist/assets/Export-b9da4cc1.js.gz index 5ba85d8c..5bbacb6e 100644 Binary files a/src/ui/dist/assets/Export-5d7b27d8.js.gz and b/src/ui/dist/assets/Export-b9da4cc1.js.gz differ diff --git a/src/ui/dist/assets/FactCard-5b41eb1a.js b/src/ui/dist/assets/FactCard-07fe2677.js similarity index 88% rename from src/ui/dist/assets/FactCard-5b41eb1a.js rename to src/ui/dist/assets/FactCard-07fe2677.js index 7ce5ed8b..a9af290e 100644 --- a/src/ui/dist/assets/FactCard-5b41eb1a.js +++ b/src/ui/dist/assets/FactCard-07fe2677.js @@ -1 +1 @@ -import{e as s,o as t,i as c,w as o,a as r,t as a,c as d,d as n,C as l,_}from"./index-a96016e0.js";const i={class:"mx-4"},m={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,y)=>(t(),c(l,{"with-hover":e.withHover,class:"card p-4"},{default:o(()=>[r("h2",i,a(e.primaryText),1),e.secondaryText?(t(),d("p",m,a(e.secondaryText),1)):n("",!0)]),_:1},8,["with-hover"]))}});const h=_(p,[["__scopeId","data-v-23b147ec"]]);export{h as F}; +import{e as s,o as t,i as c,w as o,a as r,t as a,c as d,d as n,C as l,_}from"./index-4a15a213.js";const i={class:"mx-4"},m={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,y)=>(t(),c(l,{"with-hover":e.withHover,class:"card p-4"},{default:o(()=>[r("h2",i,a(e.primaryText),1),e.secondaryText?(t(),d("p",m,a(e.secondaryText),1)):n("",!0)]),_:1},8,["with-hover"]))}});const h=_(p,[["__scopeId","data-v-23b147ec"]]);export{h as F}; diff --git a/src/ui/dist/assets/FullShelf-26be5033.js b/src/ui/dist/assets/FullShelf-b2b7ffe5.js similarity index 87% rename from src/ui/dist/assets/FullShelf-26be5033.js rename to src/ui/dist/assets/FullShelf-b2b7ffe5.js index 3a613f83..9543e6a6 100644 --- a/src/ui/dist/assets/FullShelf-26be5033.js +++ b/src/ui/dist/assets/FullShelf-b2b7ffe5.js @@ -1 +1 @@ -import{_ as c,o as t,c as a,a as s,b as i,t as n,d as l,r as _}from"./index-a96016e0.js";const d={name:"FullShelf",props:{heading:String,icon:String}},r={class:"shelf"},u={class:"header"},f={key:0,class:"icon material-icons-outlined"},h={class:"items"};function m(o,p,e,S,g,v){return t(),a("div",r,[s("div",u,[s("h2",null,[i(n(e.heading),1),e.icon?(t(),a("span",f,n(e.icon),1)):l("",!0)])]),s("div",h,[_(o.$slots,"default",{},void 0,!0)])])}const y=c(d,[["render",m],["__scopeId","data-v-8fb8961a"]]);export{y as F}; +import{_ as c,o as t,c as a,a as s,b as i,t as n,d as l,r as _}from"./index-4a15a213.js";const d={name:"FullShelf",props:{heading:String,icon:String}},r={class:"shelf"},u={class:"header"},f={key:0,class:"icon material-icons-outlined"},h={class:"items"};function m(o,p,e,S,g,v){return t(),a("div",r,[s("div",u,[s("h2",null,[i(n(e.heading),1),e.icon?(t(),a("span",f,n(e.icon),1)):l("",!0)])]),s("div",h,[_(o.$slots,"default",{},void 0,!0)])])}const y=c(d,[["render",m],["__scopeId","data-v-8fb8961a"]]);export{y as F}; diff --git a/src/ui/dist/assets/Import-c20db5b8.js b/src/ui/dist/assets/Import-2ae5cf6c.js similarity index 98% rename from src/ui/dist/assets/Import-c20db5b8.js rename to src/ui/dist/assets/Import-2ae5cf6c.js index e2dcb7f8..ff42bd03 100644 --- a/src/ui/dist/assets/Import-c20db5b8.js +++ b/src/ui/dist/assets/Import-2ae5cf6c.js @@ -1,4 +1,4 @@ -import{e as M,D as N,o as d,c as m,g as P,H as V,a as r,M as K,K as W,t as S,F as B,h as D,O as F,d as h,_ as G,i as C,w as I,b as j,C as q,n as k,j as A,E as Q,y as R,I as U,L as X,aD as Y,x as Z,$ as ee,a0 as te,l as se,m as ae,aE as le,aF as ne,aG as oe}from"./index-a96016e0.js";import{G as J}from"./gistClient-de41c06b.js";const ie=(e,c)=>{const t={source:e.source,id:e.id,changed:{}},a=t.changed,i=["id","href","duration","plays","artists"];for(const l of Object.keys(e))if(!i.includes(l)){if(l==="metadata"){const f=e.metadata,p=c.metadata;if(f&&p){if(!f.spotify&&!p.spotify)continue;if(!f.spotify&&p.spotify){a.metadata={from:f,to:p};continue}if(f.spotify&&!p.spotify){a.metadata={from:f,to:p};continue}f.spotify.id!==p.spotify.id&&(a.metadata={from:f,to:p})}else(f||p)&&(a.metadata={from:f,to:p});continue}l!=="id"&&e[l]!==c[l]&&(a[l]={from:e[l],to:c[l]})}return Object.keys(a).length?t:null},de=(e,c)=>{const t={name:e.playlist.name,id:e.playlist.id,added:[],removed:[],modified:[]};if(e.playlist.type!==c.playlist.type)return null;if(e.playlist.type==="smart"){const a=e.playlist,i=c.playlist;return JSON.stringify(a.definition)!==JSON.stringify(i.definition)?t:null}if(c.playlist.type!=="smart"){for(const a of e.playlist.songs){const i=c.playlist.songs.find(l=>l.source===a.source);if(i){const l=ie(a,i);l&&t.modified.push(l)}else t.removed.push(a)}for(const a of c.playlist.songs)e.playlist.songs.find(l=>l.source===a.source)||t.added.push(a);return t.added.length||t.removed.length||t.modified.length?t:null}},ce=(e,c)=>{const t={added:[],removed:[],modified:[]};for(const a of e.collection){const i=c.collection.find(l=>l.playlist.name===a.playlist.name);if(i){const l=de(a,i);l&&t.modified.push(l)}else t.removed.push(a)}for(const a of c.collection)e.collection.find(l=>l.playlist.name===a.playlist.name)||t.added.push(a);return t},re={class:"overflow-hidden"},ue={class:"title my-0"},fe={key:0,class:"info"},pe={class:"key"},ye={class:"value"},me=M({__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:c}){const t=e,a=N(()=>t.diff.removed.some(o=>o.source===t.song.source)?"removed":t.diff.modified.some(o=>o.source===t.song.source)?"modified":t.isBase?"base":t.diff.added.some(o=>o.source===t.song.source)?"added":"base"),i=c,l=()=>{i("toggle-expanded",t.song)},f=["title","artist","album","source","cover","favourite","metadata"],p=o=>{var _,b,E;const x=(b=(_=t.diff.modified.find($=>$.source===t.song.source))==null?void 0:_.changed)==null?void 0:b[o],v=t.isBase?"from":"to",y=(x==null?void 0:x[v])??t.song[o];return o=="metadata"?(E=y==null?void 0:y.spotify)==null?void 0:E.id:y};return(o,x)=>{var v,y;return!e.isBase&&a.value=="removed"?h("",!0):(d(),m("div",{key:0,class:F([a.value,"song px-4 py-2"])},[P(V,{src:e.song.cover,class:"rounded-md"},null,8,["src"]),r("div",re,[r("p",ue,[P(K,{text:e.song.title},null,8,["text"])]),P(W,{artist:e.song.artist,class:"artist text-muted"},null,8,["artist"])]),r("span",{class:"material-symbols-rounded cursor-pointer",onClick:l},S(((v=e.expanded)==null?void 0:v.source)==e.song.source?"expand_less":"expand_more"),1),((y=e.expanded)==null?void 0:y.source)==e.song.source?(d(),m("div",fe,[(d(),m(B,null,D(f,_=>{var b,E;return r("div",{key:_,class:F([{modified:(E=(b=e.diff.modified.find($=>$.source===e.song.source))==null?void 0:b.changed)==null?void 0:E[_]},"info__table"])},[r("span",pe,S(_),1),r("span",ye,S(p(_)),1)],2)}),64))])):h("",!0)],2))}}});const ge=G(me,[["__scopeId","data-v-1805c709"]]),ve={class:"info"},xe={class:"title"},he={key:0,class:"material-symbols-rounded"},_e={key:0,class:"text-muted"},be={class:"flex flex-row justify-between items-center"},Se={key:0,class:"text-very-muted"},ke={key:0},Pe=M({__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:c}){const t=e,a=N(()=>t.diff.removed.some(o=>o.playlist.name===t.playlist.name)?"removed":t.diff.modified.some(o=>o.name===t.playlist.name)?"modified":t.isBase?"base":t.diff.added.some(o=>o.playlist.name===t.playlist.name)?"added":"base"),i=c,l=()=>{i("toggle-expanded",t.playlist)},f=o=>{i("toggle-expanded-song",o)},p=o=>{const x=t.diff.modified.find(v=>v.name===o.name);return x||{name:o.name,added:[],removed:[],modified:[]}};return(o,x)=>(d(),C(q,{class:F([a.value,"playlist p-4 rounded-xl relative"])},{default:I(()=>{var v;return[P(V,{src:e.playlist.cover,class:"rounded-xl self-start"},null,8,["src"]),r("div",ve,[r("div",xe,[e.playlist.type!="classic"?(d(),m("span",he,S(e.playlist.type=="smart"?"neurology":"bolt"),1)):h("",!0),r("h2",null,S(e.playlist.name),1)]),e.playlist.description?(d(),m("p",_e,S(e.playlist.description),1)):h("",!0),r("div",be,[e.playlist.type==="classic"?(d(),m("p",Se,[r("strong",null,S((v=e.playlist.songs)==null?void 0:v.length),1),j(" tracks ")])):h("",!0),r("span",{class:"material-symbols-rounded cursor-pointer",title:"Expand",onClick:l},S(e.expanded?"expand_less":"expand_more"),1)])]),e.expanded?(d(),C(q,{key:0,class:"col-span-2 flex flex-col gap-2 z-10 p-4"},{default:I(()=>[e.playlist.type==="classic"?(d(!0),m(B,{key:0},D(e.playlist.songs,y=>(d(),C(ge,{key:y.source,diff:p(e.playlist),expanded:e.expandedSong,"is-base":e.isBase,song:y,onToggleExpanded:f},null,8,["diff","expanded","is-base","song"]))),128)):h("",!0),r("pre",null,[j(" "),e.playlist.type==="smart"?(d(),m("code",ke,` +import{e as M,D as N,o as d,c as m,g as P,H as V,a as r,M as K,K as W,t as S,F as B,h as D,O as F,d as h,_ as G,i as C,w as I,b as j,C as q,n as k,j as A,E as Q,y as R,I as U,L as X,aD as Y,x as Z,$ as ee,a0 as te,l as se,m as ae,aE as le,aF as ne,aG as oe}from"./index-4a15a213.js";import{G as J}from"./gistClient-56b8a233.js";const ie=(e,c)=>{const t={source:e.source,id:e.id,changed:{}},a=t.changed,i=["id","href","duration","plays","artists"];for(const l of Object.keys(e))if(!i.includes(l)){if(l==="metadata"){const f=e.metadata,p=c.metadata;if(f&&p){if(!f.spotify&&!p.spotify)continue;if(!f.spotify&&p.spotify){a.metadata={from:f,to:p};continue}if(f.spotify&&!p.spotify){a.metadata={from:f,to:p};continue}f.spotify.id!==p.spotify.id&&(a.metadata={from:f,to:p})}else(f||p)&&(a.metadata={from:f,to:p});continue}l!=="id"&&e[l]!==c[l]&&(a[l]={from:e[l],to:c[l]})}return Object.keys(a).length?t:null},de=(e,c)=>{const t={name:e.playlist.name,id:e.playlist.id,added:[],removed:[],modified:[]};if(e.playlist.type!==c.playlist.type)return null;if(e.playlist.type==="smart"){const a=e.playlist,i=c.playlist;return JSON.stringify(a.definition)!==JSON.stringify(i.definition)?t:null}if(c.playlist.type!=="smart"){for(const a of e.playlist.songs){const i=c.playlist.songs.find(l=>l.source===a.source);if(i){const l=ie(a,i);l&&t.modified.push(l)}else t.removed.push(a)}for(const a of c.playlist.songs)e.playlist.songs.find(l=>l.source===a.source)||t.added.push(a);return t.added.length||t.removed.length||t.modified.length?t:null}},ce=(e,c)=>{const t={added:[],removed:[],modified:[]};for(const a of e.collection){const i=c.collection.find(l=>l.playlist.name===a.playlist.name);if(i){const l=de(a,i);l&&t.modified.push(l)}else t.removed.push(a)}for(const a of c.collection)e.collection.find(l=>l.playlist.name===a.playlist.name)||t.added.push(a);return t},re={class:"overflow-hidden"},ue={class:"title my-0"},fe={key:0,class:"info"},pe={class:"key"},ye={class:"value"},me=M({__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:c}){const t=e,a=N(()=>t.diff.removed.some(o=>o.source===t.song.source)?"removed":t.diff.modified.some(o=>o.source===t.song.source)?"modified":t.isBase?"base":t.diff.added.some(o=>o.source===t.song.source)?"added":"base"),i=c,l=()=>{i("toggle-expanded",t.song)},f=["title","artist","album","source","cover","favourite","metadata"],p=o=>{var _,b,E;const x=(b=(_=t.diff.modified.find($=>$.source===t.song.source))==null?void 0:_.changed)==null?void 0:b[o],v=t.isBase?"from":"to",y=(x==null?void 0:x[v])??t.song[o];return o=="metadata"?(E=y==null?void 0:y.spotify)==null?void 0:E.id:y};return(o,x)=>{var v,y;return!e.isBase&&a.value=="removed"?h("",!0):(d(),m("div",{key:0,class:F([a.value,"song px-4 py-2"])},[P(V,{src:e.song.cover,class:"rounded-md"},null,8,["src"]),r("div",re,[r("p",ue,[P(K,{text:e.song.title},null,8,["text"])]),P(W,{artist:e.song.artist,class:"artist text-muted"},null,8,["artist"])]),r("span",{class:"material-symbols-rounded cursor-pointer",onClick:l},S(((v=e.expanded)==null?void 0:v.source)==e.song.source?"expand_less":"expand_more"),1),((y=e.expanded)==null?void 0:y.source)==e.song.source?(d(),m("div",fe,[(d(),m(B,null,D(f,_=>{var b,E;return r("div",{key:_,class:F([{modified:(E=(b=e.diff.modified.find($=>$.source===e.song.source))==null?void 0:b.changed)==null?void 0:E[_]},"info__table"])},[r("span",pe,S(_),1),r("span",ye,S(p(_)),1)],2)}),64))])):h("",!0)],2))}}});const ge=G(me,[["__scopeId","data-v-1805c709"]]),ve={class:"info"},xe={class:"title"},he={key:0,class:"material-symbols-rounded"},_e={key:0,class:"text-muted"},be={class:"flex flex-row justify-between items-center"},Se={key:0,class:"text-very-muted"},ke={key:0},Pe=M({__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:c}){const t=e,a=N(()=>t.diff.removed.some(o=>o.playlist.name===t.playlist.name)?"removed":t.diff.modified.some(o=>o.name===t.playlist.name)?"modified":t.isBase?"base":t.diff.added.some(o=>o.playlist.name===t.playlist.name)?"added":"base"),i=c,l=()=>{i("toggle-expanded",t.playlist)},f=o=>{i("toggle-expanded-song",o)},p=o=>{const x=t.diff.modified.find(v=>v.name===o.name);return x||{name:o.name,added:[],removed:[],modified:[]}};return(o,x)=>(d(),C(q,{class:F([a.value,"playlist p-4 rounded-xl relative"])},{default:I(()=>{var v;return[P(V,{src:e.playlist.cover,class:"rounded-xl self-start"},null,8,["src"]),r("div",ve,[r("div",xe,[e.playlist.type!="classic"?(d(),m("span",he,S(e.playlist.type=="smart"?"neurology":"bolt"),1)):h("",!0),r("h2",null,S(e.playlist.name),1)]),e.playlist.description?(d(),m("p",_e,S(e.playlist.description),1)):h("",!0),r("div",be,[e.playlist.type==="classic"?(d(),m("p",Se,[r("strong",null,S((v=e.playlist.songs)==null?void 0:v.length),1),j(" tracks ")])):h("",!0),r("span",{class:"material-symbols-rounded cursor-pointer",title:"Expand",onClick:l},S(e.expanded?"expand_less":"expand_more"),1)])]),e.expanded?(d(),C(q,{key:0,class:"col-span-2 flex flex-col gap-2 z-10 p-4"},{default:I(()=>[e.playlist.type==="classic"?(d(!0),m(B,{key:0},D(e.playlist.songs,y=>(d(),C(ge,{key:y.source,diff:p(e.playlist),expanded:e.expandedSong,"is-base":e.isBase,song:y,onToggleExpanded:f},null,8,["diff","expanded","is-base","song"]))),128)):h("",!0),r("pre",null,[j(" "),e.playlist.type==="smart"?(d(),m("code",ke,` `+S(JSON.stringify(e.playlist.definition,null,4))+` `,1)):h("",!0),j(` `)])]),_:1})):h("",!0),a.value!="base"?(d(),m("span",{key:1,class:"material-symbols-rounded exclude",title:"Exclude",onClick:x[0]||(x[0]=y=>o.$emit("exclude",e.playlist))}," block ")):h("",!0)]}),_:1},8,["class"]))}});const T=G(Pe,[["__scopeId","data-v-51b40518"]]),L=e=>(se("data-v-3e5b815e"),e=e(),ae(),e),Ee={class:"pb-4 pr-4 flex flex-col gap-4 h-full"},we={class:"flex flex-row justify-end"},$e=L(()=>r("div",{class:"grid grid-cols-2 gap-4"},[r("h1",null,"Local"),r("h1",null,"Incoming")],-1)),Be={key:1,class:"fill-page"},Ce={key:1,class:"fill-page !grid !grid-cols-2 gap-4"},Oe=L(()=>r("h2",null,[r("span",{class:"material-symbols-rounded"},"file_upload"),j(" From File ")],-1)),je=L(()=>r("h2",null,[r("span",{class:"material-symbols-rounded"},"cloud_download"),j(" GitHub Gist ")],-1)),De=M({__name:"Import",setup(e){const c=k(!1),t=k(null),a=k({}),i=k({}),l=N(()=>ce(a.value,i.value)),f=A();let p=!1;const o=async()=>{var g;if(c.value||p)return;p=!0;const n=[];for(const s of(g=f.playlists)==null?void 0:g.filter(u=>u.type!="special")){const u=Object.assign({},s);n.push(u)}a.value=await Y(n),p=!1};Q(()=>f.playlists,o),R(o);const x=n=>{a.value.collection=a.value.collection.filter(g=>g.playlist.name!==n.name),i.value.collection=i.value.collection.filter(g=>g.playlist.name!==n.name)},v=k(null),y=k(null),_=n=>{var g;((g=v.value)==null?void 0:g.name)===n.name?v.value=null:v.value=n},b=n=>{var g;((g=y.value)==null?void 0:g.id)===n.id?y.value=null:y.value=n},E=async()=>{c.value=!0;const n=[],g=s=>{n.push(le(s.id,s.added));for(const u of s.removed)n.push(ne(s.id,u.id));for(const u of s.modified)for(const w of Object.keys(u.changed))n.push(oe(u.id,w,u.changed[w].to))};for(const s of l.value.added)s.playlist.type!=="special"&&(a.value.collection.push(s),n.push(Z(s.playlist.type,s.playlist.name,s.playlist.description,s.playlist.cover).then(u=>{s.playlist.id=u,s.playlist.type==="classic"?g({id:s.playlist.id,name:s.playlist.name,added:s.playlist.songs,removed:[],modified:[]}):s.playlist.type==="smart"&&n.push(ee(s.playlist.id,s.playlist.definition))})));for(const s of l.value.modified)g(s);for(const s of l.value.removed)n.push(te(s.playlist.id));await Promise.all(n),window.setTimeout(async()=>{await f.fetchPlaylists(),c.value=!1,await o()},1e3)},$=k(!1);J.connected().then(n=>$.value=n);const z=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(),u=JSON.parse(s);i.value=u,t.value="file"},n.click()},H=async()=>{i.value=await J.getContent(),t.value="gist"};return k(null),(n,g)=>(d(),m("div",Ee,[r("div",we,[P(U,{icon:"merge",label:"Merge",onClick:E})]),t.value?(d(),m(B,{key:0},[c.value?(d(),m("div",Be,[P(X)])):(d(),m(B,{key:0},[$e,(d(!0),m(B,null,D(a.value.collection,s=>{var u,w;return d(),m("div",{key:s.playlist.name,class:"grid grid-cols-2 gap-4"},[a.value.collection.some(O=>O.playlist.name===s.playlist.name)?(d(),C(T,{key:0,diff:l.value,expanded:((u=v.value)==null?void 0:u.name)===s.playlist.name,"expanded-song":y.value,playlist:s.playlist,class:"grid-1","is-base":"",onExclude:x,onToggleExpanded:_,onToggleExpandedSong:b},null,8,["diff","expanded","expanded-song","playlist"])):h("",!0),i.value.collection.some(O=>O.playlist.name===s.playlist.name)?(d(),C(T,{key:1,diff:l.value,expanded:((w=v.value)==null?void 0:w.name)===s.playlist.name,"expanded-song":y.value,playlist:i.value.collection.find(O=>O.playlist.name===s.playlist.name).playlist,class:"grid-2",onExclude:x,onToggleExpanded:_,onToggleExpandedSong:b},null,8,["diff","expanded","expanded-song","playlist"])):h("",!0)])}),128)),(d(!0),m(B,null,D(l.value.added,s=>{var u;return d(),m("div",{key:s.playlist.name,class:"grid grid-cols-2 gap-4"},[i.value.collection.some(w=>w.playlist.name===s.playlist.name)?(d(),C(T,{key:0,diff:l.value,expanded:((u=v.value)==null?void 0:u.name)===s.playlist.name,"expanded-song":y.value,playlist:s.playlist,class:"grid-2",onExclude:x,onToggleExpanded:_,onToggleExpandedSong:b},null,8,["diff","expanded","expanded-song","playlist"])):h("",!0)])}),128))],64))],64)):(d(),m("div",Ce,[P(q,{"with-hover":"",class:"cursor-pointer",onClick:z},{default:I(()=>[Oe]),_:1}),P(q,{disabled:!$.value,"with-hover":"",class:"cursor-pointer",onClick:H},{default:I(()=>[je]),_:1},8,["disabled"])]))]))}});const Te=G(De,[["__scopeId","data-v-3e5b815e"]]);export{Te as default}; diff --git a/src/ui/dist/assets/Import-2ae5cf6c.js.gz b/src/ui/dist/assets/Import-2ae5cf6c.js.gz new file mode 100644 index 00000000..b75edf40 Binary files /dev/null and b/src/ui/dist/assets/Import-2ae5cf6c.js.gz differ diff --git a/src/ui/dist/assets/Import-c20db5b8.js.gz b/src/ui/dist/assets/Import-c20db5b8.js.gz deleted file mode 100644 index a2ac87f6..00000000 Binary files a/src/ui/dist/assets/Import-c20db5b8.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/ImportLink-8f18354c.js b/src/ui/dist/assets/ImportLink-33e77c3a.js similarity index 95% rename from src/ui/dist/assets/ImportLink-8f18354c.js rename to src/ui/dist/assets/ImportLink-33e77c3a.js index 296fcb57..18d09f5a 100644 --- a/src/ui/dist/assets/ImportLink-8f18354c.js +++ b/src/ui/dist/assets/ImportLink-33e77c3a.js @@ -1 +1 @@ -import{e as w,B as b,q as C,n as _,y as B,o as a,c as n,a as s,t as c,b as d,i as I,w as $,F as j,h as L,g as m,I as f,u as N,C as R,aH as V,_ as F}from"./index-a96016e0.js";const S={class:"max-w-[60ch] w-full h-full flex items-center justify-center"},q={class:"flex-col"},A={key:0,class:"text-muted italic text-sm"},D={class:"ml-0"},E={class:"flex gap-2 items-center"},H={class:"text-muted uppercase text-sm"},M=["onClick"],O={class:"buttons flex gap-2"},T=w({__name:"ImportLink",setup(z){const h=b(),l=C(),r=_(""),e=_([]);B(async()=>{const i=h.params.id,o=atob(i),[t,...u]=o.split(":");if(t==="gist"){const[p,v,y]=u,g=`https://gist.githubusercontent.com/${p}/${v}/raw/${y}`,k=await(await fetch(g)).json();e.value=[k],r.value=p}});const x=async()=>{await V(e.value),l.push("/")};return(i,o)=>(a(),n("div",S,[s("div",q,[s("strong",null,c(r.value),1),d(" wants to share: "),e.value.length==0?(a(),n("span",A,"Nothing")):(a(),I(R,{key:1,class:"p-4 mt-4 w-max flex flex-col gap-4"},{default:$(()=>[s("ul",D,[(a(!0),n(j,null,L(e.value,t=>(a(),n("li",E,[s("span",H,c(t.type),1),d(" "+c(t.playlist.name)+" ",1),s("span",{class:"material-symbols-rounded cursor-pointer",onClick:u=>e.value.splice(e.value.indexOf(t),1)}," delete ",8,M)]))),256))]),s("div",O,[m(f,{type:"success",icon:"check",label:"Accept",onClick:x}),m(f,{type:"danger",icon:"close",label:"Reject",onClick:o[0]||(o[0]=t=>N(l).push("/"))})])]),_:1}))])]))}});const K=F(T,[["__scopeId","data-v-608ea9fa"]]);export{K as default}; +import{e as w,B as b,q as C,n as _,y as B,o as a,c as n,a as s,t as c,b as d,i as I,w as $,F as j,h as L,g as m,I as f,u as N,C as R,aH as V,_ as F}from"./index-4a15a213.js";const S={class:"max-w-[60ch] w-full h-full flex items-center justify-center"},q={class:"flex-col"},A={key:0,class:"text-muted italic text-sm"},D={class:"ml-0"},E={class:"flex gap-2 items-center"},H={class:"text-muted uppercase text-sm"},M=["onClick"],O={class:"buttons flex gap-2"},T=w({__name:"ImportLink",setup(z){const h=b(),l=C(),r=_(""),e=_([]);B(async()=>{const i=h.params.id,o=atob(i),[t,...u]=o.split(":");if(t==="gist"){const[p,v,y]=u,g=`https://gist.githubusercontent.com/${p}/${v}/raw/${y}`,k=await(await fetch(g)).json();e.value=[k],r.value=p}});const x=async()=>{await V(e.value),l.push("/")};return(i,o)=>(a(),n("div",S,[s("div",q,[s("strong",null,c(r.value),1),d(" wants to share: "),e.value.length==0?(a(),n("span",A,"Nothing")):(a(),I(R,{key:1,class:"p-4 mt-4 w-max flex flex-col gap-4"},{default:$(()=>[s("ul",D,[(a(!0),n(j,null,L(e.value,t=>(a(),n("li",E,[s("span",H,c(t.type),1),d(" "+c(t.playlist.name)+" ",1),s("span",{class:"material-symbols-rounded cursor-pointer",onClick:u=>e.value.splice(e.value.indexOf(t),1)}," delete ",8,M)]))),256))]),s("div",O,[m(f,{type:"success",icon:"check",label:"Accept",onClick:x}),m(f,{type:"danger",icon:"close",label:"Reject",onClick:o[0]||(o[0]=t=>N(l).push("/"))})])]),_:1}))])]))}});const K=F(T,[["__scopeId","data-v-608ea9fa"]]);export{K as default}; diff --git a/src/ui/dist/assets/ImportLink-33e77c3a.js.gz b/src/ui/dist/assets/ImportLink-33e77c3a.js.gz new file mode 100644 index 00000000..f9d0f12e Binary files /dev/null and b/src/ui/dist/assets/ImportLink-33e77c3a.js.gz differ diff --git a/src/ui/dist/assets/ImportLink-8f18354c.js.gz b/src/ui/dist/assets/ImportLink-8f18354c.js.gz deleted file mode 100644 index 89d0af2d..00000000 Binary files a/src/ui/dist/assets/ImportLink-8f18354c.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Insight-28f80cf4.js b/src/ui/dist/assets/Insight-02bf27fd.js similarity index 99% rename from src/ui/dist/assets/Insight-28f80cf4.js rename to src/ui/dist/assets/Insight-02bf27fd.js index a180fd64..629b1d99 100644 --- a/src/ui/dist/assets/Insight-28f80cf4.js +++ b/src/ui/dist/assets/Insight-02bf27fd.js @@ -1,4 +1,4 @@ -var Kn=Object.defineProperty;var qn=(i,t,e)=>t in i?Kn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>(qn(i,typeof t!="symbol"?t+"":t,e),e);import{e as Gn,n as Zt,a6 as Zn,aM as Qn,y as Jn,o as to,c as eo,g as wt,u as Mt,a7 as io,a as I,w as Vt,C as Nt,t as ei,F as so,l as no,m as oo,_ as ao}from"./index-a96016e0.js";/*! +var Kn=Object.defineProperty;var qn=(i,t,e)=>t in i?Kn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>(qn(i,typeof t!="symbol"?t+"":t,e),e);import{e as Gn,n as Zt,a6 as Zn,aM as Qn,y as Jn,o as to,c as eo,g as wt,u as Mt,a7 as io,a as I,w as Vt,C as Nt,t as ei,F as so,l as no,m as oo,_ as ao}from"./index-4a15a213.js";/*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela diff --git a/src/ui/dist/assets/Insight-02bf27fd.js.gz b/src/ui/dist/assets/Insight-02bf27fd.js.gz new file mode 100644 index 00000000..0b64fab8 Binary files /dev/null and b/src/ui/dist/assets/Insight-02bf27fd.js.gz differ diff --git a/src/ui/dist/assets/Insight-28f80cf4.js.gz b/src/ui/dist/assets/Insight-28f80cf4.js.gz deleted file mode 100644 index 699fac66..00000000 Binary files a/src/ui/dist/assets/Insight-28f80cf4.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Liked-a242cd86.js b/src/ui/dist/assets/Liked-a242cd86.js deleted file mode 100644 index bc2390c9..00000000 --- a/src/ui/dist/assets/Liked-a242cd86.js +++ /dev/null @@ -1 +0,0 @@ -import{T as o}from"./Template-d00bcc07.js";import{i as r,o as t}from"./index-a96016e0.js";import"./PlaylistEntry-35a3078f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-31c73142.js";import"./FactCard-5b41eb1a.js";import"./gistClient-de41c06b.js";import"./Markdown.vue_vue_type_style_index_0_lang-40bffaf2.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-cf20cd13.js b/src/ui/dist/assets/Liked-cf20cd13.js new file mode 100644 index 00000000..cafbb12d --- /dev/null +++ b/src/ui/dist/assets/Liked-cf20cd13.js @@ -0,0 +1 @@ +import{T as o}from"./Template-96d3b86b.js";import{i as r,o as t}from"./index-4a15a213.js";import"./PlaylistEntry-4f48a6f3.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-c5c8aeea.js";import"./FactCard-07fe2677.js";import"./gistClient-56b8a233.js";import"./Markdown.vue_vue_type_style_index_0_lang-99c6b55d.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-40bffaf2.js.gz b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js.gz deleted file mode 100644 index e42185df..00000000 Binary files a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js similarity index 99% rename from src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js rename to src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js index 1abd434e..70c85a8c 100644 --- a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js +++ b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js @@ -1,4 +1,4 @@ -import{aB as Ht,aC as Zt,e as Jt,n as Wt,o as Yt,i as Qt,w as Kt,a as Xt,u as nr,a9 as tr}from"./index-a96016e0.js";var q={};const rr="Á",or="á",er="Ă",sr="ă",cr="∾",ir="∿",ar="∾̳",lr="Â",ur="â",pr="´",fr="А",hr="а",dr="Æ",mr="æ",gr="⁡",_r="𝔄",br="𝔞",kr="À",xr="à",vr="ℵ",yr="ℵ",Cr="Α",wr="α",Ar="Ā",qr="ā",Dr="⨿",Er="&",Sr="&",Fr="⩕",Lr="⩓",Tr="∧",Rr="⩜",zr="⩘",Ir="⩚",Br="∠",Nr="⦤",Mr="∠",Pr="⦨",Or="⦩",Ur="⦪",Vr="⦫",$r="⦬",Gr="⦭",jr="⦮",Hr="⦯",Zr="∡",Jr="∟",Wr="⊾",Yr="⦝",Qr="∢",Kr="Å",Xr="⍼",no="Ą",to="ą",ro="𝔸",oo="𝕒",eo="⩯",so="≈",co="⩰",io="≊",ao="≋",lo="'",uo="⁡",po="≈",fo="≊",ho="Å",mo="å",go="𝒜",_o="𝒶",bo="≔",ko="*",xo="≈",vo="≍",yo="Ã",Co="ã",wo="Ä",Ao="ä",qo="∳",Do="⨑",Eo="≌",So="϶",Fo="‵",Lo="∽",To="⋍",Ro="∖",zo="⫧",Io="⊽",Bo="⌅",No="⌆",Mo="⌅",Po="⎵",Oo="⎶",Uo="≌",Vo="Б",$o="б",Go="„",jo="∵",Ho="∵",Zo="∵",Jo="⦰",Wo="϶",Yo="ℬ",Qo="ℬ",Ko="Β",Xo="β",ne="ℶ",te="≬",re="𝔅",oe="𝔟",ee="⋂",se="◯",ce="⋃",ie="⨀",ae="⨁",le="⨂",ue="⨆",pe="★",fe="▽",he="△",de="⨄",me="⋁",ge="⋀",_e="⤍",be="⧫",ke="▪",xe="▴",ve="▾",ye="◂",Ce="▸",we="␣",Ae="▒",qe="░",De="▓",Ee="█",Se="=⃥",Fe="≡⃥",Le="⫭",Te="⌐",Re="𝔹",ze="𝕓",Ie="⊥",Be="⊥",Ne="⋈",Me="⧉",Pe="┐",Oe="╕",Ue="╖",Ve="╗",$e="┌",Ge="╒",je="╓",He="╔",Ze="─",Je="═",We="┬",Ye="╤",Qe="╥",Ke="╦",Xe="┴",ns="╧",ts="╨",rs="╩",os="⊟",es="⊞",ss="⊠",cs="┘",is="╛",as="╜",ls="╝",us="└",ps="╘",fs="╙",hs="╚",ds="│",ms="║",gs="┼",_s="╪",bs="╫",ks="╬",xs="┤",vs="╡",ys="╢",Cs="╣",ws="├",As="╞",qs="╟",Ds="╠",Es="‵",Ss="˘",Fs="˘",Ls="¦",Ts="𝒷",Rs="ℬ",zs="⁏",Is="∽",Bs="⋍",Ns="⧅",Ms="\\",Ps="⟈",Os="•",Us="•",Vs="≎",$s="⪮",Gs="≏",js="≎",Hs="≏",Zs="Ć",Js="ć",Ws="⩄",Ys="⩉",Qs="⩋",Ks="∩",Xs="⋒",nc="⩇",tc="⩀",rc="ⅅ",oc="∩︀",ec="⁁",sc="ˇ",cc="ℭ",ic="⩍",ac="Č",lc="č",uc="Ç",pc="ç",fc="Ĉ",hc="ĉ",dc="∰",mc="⩌",gc="⩐",_c="Ċ",bc="ċ",kc="¸",xc="¸",vc="⦲",yc="¢",Cc="·",wc="·",Ac="𝔠",qc="ℭ",Dc="Ч",Ec="ч",Sc="✓",Fc="✓",Lc="Χ",Tc="χ",Rc="ˆ",zc="≗",Ic="↺",Bc="↻",Nc="⊛",Mc="⊚",Pc="⊝",Oc="⊙",Uc="®",Vc="Ⓢ",$c="⊖",Gc="⊕",jc="⊗",Hc="○",Zc="⧃",Jc="≗",Wc="⨐",Yc="⫯",Qc="⧂",Kc="∲",Xc="”",ni="’",ti="♣",ri="♣",oi=":",ei="∷",si="⩴",ci="≔",ii="≔",ai=",",li="@",ui="∁",pi="∘",fi="∁",hi="ℂ",di="≅",mi="⩭",gi="≡",_i="∮",bi="∯",ki="∮",xi="𝕔",vi="ℂ",yi="∐",Ci="∐",wi="©",Ai="©",qi="℗",Di="∳",Ei="↵",Si="✗",Fi="⨯",Li="𝒞",Ti="𝒸",Ri="⫏",zi="⫑",Ii="⫐",Bi="⫒",Ni="⋯",Mi="⤸",Pi="⤵",Oi="⋞",Ui="⋟",Vi="↶",$i="⤽",Gi="⩈",ji="⩆",Hi="≍",Zi="∪",Ji="⋓",Wi="⩊",Yi="⊍",Qi="⩅",Ki="∪︀",Xi="↷",na="⤼",ta="⋞",ra="⋟",oa="⋎",ea="⋏",sa="¤",ca="↶",ia="↷",aa="⋎",la="⋏",ua="∲",pa="∱",fa="⌭",ha="†",da="‡",ma="ℸ",ga="↓",_a="↡",ba="⇓",ka="‐",xa="⫤",va="⊣",ya="⤏",Ca="˝",wa="Ď",Aa="ď",qa="Д",Da="д",Ea="‡",Sa="⇊",Fa="ⅅ",La="ⅆ",Ta="⤑",Ra="⩷",za="°",Ia="∇",Ba="Δ",Na="δ",Ma="⦱",Pa="⥿",Oa="𝔇",Ua="𝔡",Va="⥥",$a="⇃",Ga="⇂",ja="´",Ha="˙",Za="˝",Ja="`",Wa="˜",Ya="⋄",Qa="⋄",Ka="⋄",Xa="♦",nl="♦",tl="¨",rl="ⅆ",ol="ϝ",el="⋲",sl="÷",cl="÷",il="⋇",al="⋇",ll="Ђ",ul="ђ",pl="⌞",fl="⌍",hl="$",dl="𝔻",ml="𝕕",gl="¨",_l="˙",bl="⃜",kl="≐",xl="≑",vl="≐",yl="∸",Cl="∔",wl="⊡",Al="⌆",ql="∯",Dl="¨",El="⇓",Sl="⇐",Fl="⇔",Ll="⫤",Tl="⟸",Rl="⟺",zl="⟹",Il="⇒",Bl="⊨",Nl="⇑",Ml="⇕",Pl="∥",Ol="⤓",Ul="↓",Vl="↓",$l="⇓",Gl="⇵",jl="̑",Hl="⇊",Zl="⇃",Jl="⇂",Wl="⥐",Yl="⥞",Ql="⥖",Kl="↽",Xl="⥟",nu="⥗",tu="⇁",ru="↧",ou="⊤",eu="⤐",su="⌟",cu="⌌",iu="𝒟",au="𝒹",lu="Ѕ",uu="ѕ",pu="⧶",fu="Đ",hu="đ",du="⋱",mu="▿",gu="▾",_u="⇵",bu="⥯",ku="⦦",xu="Џ",vu="џ",yu="⟿",Cu="É",wu="é",Au="⩮",qu="Ě",Du="ě",Eu="Ê",Su="ê",Fu="≖",Lu="≕",Tu="Э",Ru="э",zu="⩷",Iu="Ė",Bu="ė",Nu="≑",Mu="ⅇ",Pu="≒",Ou="𝔈",Uu="𝔢",Vu="⪚",$u="È",Gu="è",ju="⪖",Hu="⪘",Zu="⪙",Ju="∈",Wu="⏧",Yu="ℓ",Qu="⪕",Ku="⪗",Xu="Ē",np="ē",tp="∅",rp="∅",op="◻",ep="∅",sp="▫",cp=" ",ip=" ",ap=" ",lp="Ŋ",up="ŋ",pp=" ",fp="Ę",hp="ę",dp="𝔼",mp="𝕖",gp="⋕",_p="⧣",bp="⩱",kp="ε",xp="Ε",vp="ε",yp="ϵ",Cp="≖",wp="≕",Ap="≂",qp="⪖",Dp="⪕",Ep="⩵",Sp="=",Fp="≂",Lp="≟",Tp="⇌",Rp="≡",zp="⩸",Ip="⧥",Bp="⥱",Np="≓",Mp="ℯ",Pp="ℰ",Op="≐",Up="⩳",Vp="≂",$p="Η",Gp="η",jp="Ð",Hp="ð",Zp="Ë",Jp="ë",Wp="€",Yp="!",Qp="∃",Kp="∃",Xp="ℰ",nf="ⅇ",tf="ⅇ",rf="≒",of="Ф",ef="ф",sf="♀",cf="ffi",af="ff",lf="ffl",uf="𝔉",pf="𝔣",ff="fi",hf="◼",df="▪",mf="fj",gf="♭",_f="fl",bf="▱",kf="ƒ",xf="𝔽",vf="𝕗",yf="∀",Cf="∀",wf="⋔",Af="⫙",qf="ℱ",Df="⨍",Ef="½",Sf="⅓",Ff="¼",Lf="⅕",Tf="⅙",Rf="⅛",zf="⅔",If="⅖",Bf="¾",Nf="⅗",Mf="⅜",Pf="⅘",Of="⅚",Uf="⅝",Vf="⅞",$f="⁄",Gf="⌢",jf="𝒻",Hf="ℱ",Zf="ǵ",Jf="Γ",Wf="γ",Yf="Ϝ",Qf="ϝ",Kf="⪆",Xf="Ğ",nh="ğ",th="Ģ",rh="Ĝ",oh="ĝ",eh="Г",sh="г",ch="Ġ",ih="ġ",ah="≥",lh="≧",uh="⪌",ph="⋛",fh="≥",hh="≧",dh="⩾",mh="⪩",gh="⩾",_h="⪀",bh="⪂",kh="⪄",xh="⋛︀",vh="⪔",yh="𝔊",Ch="𝔤",wh="≫",Ah="⋙",qh="⋙",Dh="ℷ",Eh="Ѓ",Sh="ѓ",Fh="⪥",Lh="≷",Th="⪒",Rh="⪤",zh="⪊",Ih="⪊",Bh="⪈",Nh="≩",Mh="⪈",Ph="≩",Oh="⋧",Uh="𝔾",Vh="𝕘",$h="`",Gh="≥",jh="⋛",Hh="≧",Zh="⪢",Jh="≷",Wh="⩾",Yh="≳",Qh="𝒢",Kh="ℊ",Xh="≳",nd="⪎",td="⪐",rd="⪧",od="⩺",ed=">",sd=">",cd="≫",id="⋗",ad="⦕",ld="⩼",ud="⪆",pd="⥸",fd="⋗",hd="⋛",dd="⪌",md="≷",gd="≳",_d="≩︀",bd="≩︀",kd="ˇ",xd=" ",vd="½",yd="ℋ",Cd="Ъ",wd="ъ",Ad="⥈",qd="↔",Dd="⇔",Ed="↭",Sd="^",Fd="ℏ",Ld="Ĥ",Td="ĥ",Rd="♥",zd="♥",Id="…",Bd="⊹",Nd="𝔥",Md="ℌ",Pd="ℋ",Od="⤥",Ud="⤦",Vd="⇿",$d="∻",Gd="↩",jd="↪",Hd="𝕙",Zd="ℍ",Jd="―",Wd="─",Yd="𝒽",Qd="ℋ",Kd="ℏ",Xd="Ħ",nm="ħ",tm="≎",rm="≏",om="⁃",em="‐",sm="Í",cm="í",im="⁣",am="Î",lm="î",um="И",pm="и",fm="İ",hm="Е",dm="е",mm="¡",gm="⇔",_m="𝔦",bm="ℑ",km="Ì",xm="ì",vm="ⅈ",ym="⨌",Cm="∭",wm="⧜",Am="℩",qm="IJ",Dm="ij",Em="Ī",Sm="ī",Fm="ℑ",Lm="ⅈ",Tm="ℐ",Rm="ℑ",zm="ı",Im="ℑ",Bm="⊷",Nm="Ƶ",Mm="⇒",Pm="℅",Om="∞",Um="⧝",Vm="ı",$m="⊺",Gm="∫",jm="∬",Hm="ℤ",Zm="∫",Jm="⊺",Wm="⋂",Ym="⨗",Qm="⨼",Km="⁣",Xm="⁢",ng="Ё",tg="ё",rg="Į",og="į",eg="𝕀",sg="𝕚",cg="Ι",ig="ι",ag="⨼",lg="¿",ug="𝒾",pg="ℐ",fg="∈",hg="⋵",dg="⋹",mg="⋴",gg="⋳",_g="∈",bg="⁢",kg="Ĩ",xg="ĩ",vg="І",yg="і",Cg="Ï",wg="ï",Ag="Ĵ",qg="ĵ",Dg="Й",Eg="й",Sg="𝔍",Fg="𝔧",Lg="ȷ",Tg="𝕁",Rg="𝕛",zg="𝒥",Ig="𝒿",Bg="Ј",Ng="ј",Mg="Є",Pg="є",Og="Κ",Ug="κ",Vg="ϰ",$g="Ķ",Gg="ķ",jg="К",Hg="к",Zg="𝔎",Jg="𝔨",Wg="ĸ",Yg="Х",Qg="х",Kg="Ќ",Xg="ќ",n0="𝕂",t0="𝕜",r0="𝒦",o0="𝓀",e0="⇚",s0="Ĺ",c0="ĺ",i0="⦴",a0="ℒ",l0="Λ",u0="λ",p0="⟨",f0="⟪",h0="⦑",d0="⟨",m0="⪅",g0="ℒ",_0="«",b0="⇤",k0="⤟",x0="←",v0="↞",y0="⇐",C0="⤝",w0="↩",A0="↫",q0="⤹",D0="⥳",E0="↢",S0="⤙",F0="⤛",L0="⪫",T0="⪭",R0="⪭︀",z0="⤌",I0="⤎",B0="❲",N0="{",M0="[",P0="⦋",O0="⦏",U0="⦍",V0="Ľ",$0="ľ",G0="Ļ",j0="ļ",H0="⌈",Z0="{",J0="Л",W0="л",Y0="⤶",Q0="“",K0="„",X0="⥧",n_="⥋",t_="↲",r_="≤",o_="≦",e_="⟨",s_="⇤",c_="←",i_="←",a_="⇐",l_="⇆",u_="↢",p_="⌈",f_="⟦",h_="⥡",d_="⥙",m_="⇃",g_="⌊",__="↽",b_="↼",k_="⇇",x_="↔",v_="↔",y_="⇔",C_="⇆",w_="⇋",A_="↭",q_="⥎",D_="↤",E_="⊣",S_="⥚",F_="⋋",L_="⧏",T_="⊲",R_="⊴",z_="⥑",I_="⥠",B_="⥘",N_="↿",M_="⥒",P_="↼",O_="⪋",U_="⋚",V_="≤",$_="≦",G_="⩽",j_="⪨",H_="⩽",Z_="⩿",J_="⪁",W_="⪃",Y_="⋚︀",Q_="⪓",K_="⪅",X_="⋖",nb="⋚",tb="⪋",rb="⋚",ob="≦",eb="≶",sb="≶",cb="⪡",ib="≲",ab="⩽",lb="≲",ub="⥼",pb="⌊",fb="𝔏",hb="𝔩",db="≶",mb="⪑",gb="⥢",_b="↽",bb="↼",kb="⥪",xb="▄",vb="Љ",yb="љ",Cb="⇇",wb="≪",Ab="⋘",qb="⌞",Db="⇚",Eb="⥫",Sb="◺",Fb="Ŀ",Lb="ŀ",Tb="⎰",Rb="⎰",zb="⪉",Ib="⪉",Bb="⪇",Nb="≨",Mb="⪇",Pb="≨",Ob="⋦",Ub="⟬",Vb="⇽",$b="⟦",Gb="⟵",jb="⟵",Hb="⟸",Zb="⟷",Jb="⟷",Wb="⟺",Yb="⟼",Qb="⟶",Kb="⟶",Xb="⟹",nk="↫",tk="↬",rk="⦅",ok="𝕃",ek="𝕝",sk="⨭",ck="⨴",ik="∗",ak="_",lk="↙",uk="↘",pk="◊",fk="◊",hk="⧫",dk="(",mk="⦓",gk="⇆",_k="⌟",bk="⇋",kk="⥭",xk="‎",vk="⊿",yk="‹",Ck="𝓁",wk="ℒ",Ak="↰",qk="↰",Dk="≲",Ek="⪍",Sk="⪏",Fk="[",Lk="‘",Tk="‚",Rk="Ł",zk="ł",Ik="⪦",Bk="⩹",Nk="<",Mk="<",Pk="≪",Ok="⋖",Uk="⋋",Vk="⋉",$k="⥶",Gk="⩻",jk="◃",Hk="⊴",Zk="◂",Jk="⦖",Wk="⥊",Yk="⥦",Qk="≨︀",Kk="≨︀",Xk="¯",nx="♂",tx="✠",rx="✠",ox="↦",ex="↦",sx="↧",cx="↤",ix="↥",ax="▮",lx="⨩",ux="М",px="м",fx="—",hx="∺",dx="∡",mx=" ",gx="ℳ",_x="𝔐",bx="𝔪",kx="℧",xx="µ",vx="*",yx="⫰",Cx="∣",wx="·",Ax="⊟",qx="−",Dx="∸",Ex="⨪",Sx="∓",Fx="⫛",Lx="…",Tx="∓",Rx="⊧",zx="𝕄",Ix="𝕞",Bx="∓",Nx="𝓂",Mx="ℳ",Px="∾",Ox="Μ",Ux="μ",Vx="⊸",$x="⊸",Gx="∇",jx="Ń",Hx="ń",Zx="∠⃒",Jx="≉",Wx="⩰̸",Yx="≋̸",Qx="ʼn",Kx="≉",Xx="♮",nv="ℕ",tv="♮",rv=" ",ov="≎̸",ev="≏̸",sv="⩃",cv="Ň",iv="ň",av="Ņ",lv="ņ",uv="≇",pv="⩭̸",fv="⩂",hv="Н",dv="н",mv="–",gv="⤤",_v="↗",bv="⇗",kv="↗",xv="≠",vv="≐̸",yv="​",Cv="​",wv="​",Av="​",qv="≢",Dv="⤨",Ev="≂̸",Sv="≫",Fv="≪",Lv=` +import{aB as Ht,aC as Zt,e as Jt,n as Wt,o as Yt,i as Qt,w as Kt,a as Xt,u as nr,a9 as tr}from"./index-4a15a213.js";var q={};const rr="Á",or="á",er="Ă",sr="ă",cr="∾",ir="∿",ar="∾̳",lr="Â",ur="â",pr="´",fr="А",hr="а",dr="Æ",mr="æ",gr="⁡",_r="𝔄",br="𝔞",kr="À",xr="à",vr="ℵ",yr="ℵ",Cr="Α",wr="α",Ar="Ā",qr="ā",Dr="⨿",Er="&",Sr="&",Fr="⩕",Lr="⩓",Tr="∧",Rr="⩜",zr="⩘",Ir="⩚",Br="∠",Nr="⦤",Mr="∠",Pr="⦨",Or="⦩",Ur="⦪",Vr="⦫",$r="⦬",Gr="⦭",jr="⦮",Hr="⦯",Zr="∡",Jr="∟",Wr="⊾",Yr="⦝",Qr="∢",Kr="Å",Xr="⍼",no="Ą",to="ą",ro="𝔸",oo="𝕒",eo="⩯",so="≈",co="⩰",io="≊",ao="≋",lo="'",uo="⁡",po="≈",fo="≊",ho="Å",mo="å",go="𝒜",_o="𝒶",bo="≔",ko="*",xo="≈",vo="≍",yo="Ã",Co="ã",wo="Ä",Ao="ä",qo="∳",Do="⨑",Eo="≌",So="϶",Fo="‵",Lo="∽",To="⋍",Ro="∖",zo="⫧",Io="⊽",Bo="⌅",No="⌆",Mo="⌅",Po="⎵",Oo="⎶",Uo="≌",Vo="Б",$o="б",Go="„",jo="∵",Ho="∵",Zo="∵",Jo="⦰",Wo="϶",Yo="ℬ",Qo="ℬ",Ko="Β",Xo="β",ne="ℶ",te="≬",re="𝔅",oe="𝔟",ee="⋂",se="◯",ce="⋃",ie="⨀",ae="⨁",le="⨂",ue="⨆",pe="★",fe="▽",he="△",de="⨄",me="⋁",ge="⋀",_e="⤍",be="⧫",ke="▪",xe="▴",ve="▾",ye="◂",Ce="▸",we="␣",Ae="▒",qe="░",De="▓",Ee="█",Se="=⃥",Fe="≡⃥",Le="⫭",Te="⌐",Re="𝔹",ze="𝕓",Ie="⊥",Be="⊥",Ne="⋈",Me="⧉",Pe="┐",Oe="╕",Ue="╖",Ve="╗",$e="┌",Ge="╒",je="╓",He="╔",Ze="─",Je="═",We="┬",Ye="╤",Qe="╥",Ke="╦",Xe="┴",ns="╧",ts="╨",rs="╩",os="⊟",es="⊞",ss="⊠",cs="┘",is="╛",as="╜",ls="╝",us="└",ps="╘",fs="╙",hs="╚",ds="│",ms="║",gs="┼",_s="╪",bs="╫",ks="╬",xs="┤",vs="╡",ys="╢",Cs="╣",ws="├",As="╞",qs="╟",Ds="╠",Es="‵",Ss="˘",Fs="˘",Ls="¦",Ts="𝒷",Rs="ℬ",zs="⁏",Is="∽",Bs="⋍",Ns="⧅",Ms="\\",Ps="⟈",Os="•",Us="•",Vs="≎",$s="⪮",Gs="≏",js="≎",Hs="≏",Zs="Ć",Js="ć",Ws="⩄",Ys="⩉",Qs="⩋",Ks="∩",Xs="⋒",nc="⩇",tc="⩀",rc="ⅅ",oc="∩︀",ec="⁁",sc="ˇ",cc="ℭ",ic="⩍",ac="Č",lc="č",uc="Ç",pc="ç",fc="Ĉ",hc="ĉ",dc="∰",mc="⩌",gc="⩐",_c="Ċ",bc="ċ",kc="¸",xc="¸",vc="⦲",yc="¢",Cc="·",wc="·",Ac="𝔠",qc="ℭ",Dc="Ч",Ec="ч",Sc="✓",Fc="✓",Lc="Χ",Tc="χ",Rc="ˆ",zc="≗",Ic="↺",Bc="↻",Nc="⊛",Mc="⊚",Pc="⊝",Oc="⊙",Uc="®",Vc="Ⓢ",$c="⊖",Gc="⊕",jc="⊗",Hc="○",Zc="⧃",Jc="≗",Wc="⨐",Yc="⫯",Qc="⧂",Kc="∲",Xc="”",ni="’",ti="♣",ri="♣",oi=":",ei="∷",si="⩴",ci="≔",ii="≔",ai=",",li="@",ui="∁",pi="∘",fi="∁",hi="ℂ",di="≅",mi="⩭",gi="≡",_i="∮",bi="∯",ki="∮",xi="𝕔",vi="ℂ",yi="∐",Ci="∐",wi="©",Ai="©",qi="℗",Di="∳",Ei="↵",Si="✗",Fi="⨯",Li="𝒞",Ti="𝒸",Ri="⫏",zi="⫑",Ii="⫐",Bi="⫒",Ni="⋯",Mi="⤸",Pi="⤵",Oi="⋞",Ui="⋟",Vi="↶",$i="⤽",Gi="⩈",ji="⩆",Hi="≍",Zi="∪",Ji="⋓",Wi="⩊",Yi="⊍",Qi="⩅",Ki="∪︀",Xi="↷",na="⤼",ta="⋞",ra="⋟",oa="⋎",ea="⋏",sa="¤",ca="↶",ia="↷",aa="⋎",la="⋏",ua="∲",pa="∱",fa="⌭",ha="†",da="‡",ma="ℸ",ga="↓",_a="↡",ba="⇓",ka="‐",xa="⫤",va="⊣",ya="⤏",Ca="˝",wa="Ď",Aa="ď",qa="Д",Da="д",Ea="‡",Sa="⇊",Fa="ⅅ",La="ⅆ",Ta="⤑",Ra="⩷",za="°",Ia="∇",Ba="Δ",Na="δ",Ma="⦱",Pa="⥿",Oa="𝔇",Ua="𝔡",Va="⥥",$a="⇃",Ga="⇂",ja="´",Ha="˙",Za="˝",Ja="`",Wa="˜",Ya="⋄",Qa="⋄",Ka="⋄",Xa="♦",nl="♦",tl="¨",rl="ⅆ",ol="ϝ",el="⋲",sl="÷",cl="÷",il="⋇",al="⋇",ll="Ђ",ul="ђ",pl="⌞",fl="⌍",hl="$",dl="𝔻",ml="𝕕",gl="¨",_l="˙",bl="⃜",kl="≐",xl="≑",vl="≐",yl="∸",Cl="∔",wl="⊡",Al="⌆",ql="∯",Dl="¨",El="⇓",Sl="⇐",Fl="⇔",Ll="⫤",Tl="⟸",Rl="⟺",zl="⟹",Il="⇒",Bl="⊨",Nl="⇑",Ml="⇕",Pl="∥",Ol="⤓",Ul="↓",Vl="↓",$l="⇓",Gl="⇵",jl="̑",Hl="⇊",Zl="⇃",Jl="⇂",Wl="⥐",Yl="⥞",Ql="⥖",Kl="↽",Xl="⥟",nu="⥗",tu="⇁",ru="↧",ou="⊤",eu="⤐",su="⌟",cu="⌌",iu="𝒟",au="𝒹",lu="Ѕ",uu="ѕ",pu="⧶",fu="Đ",hu="đ",du="⋱",mu="▿",gu="▾",_u="⇵",bu="⥯",ku="⦦",xu="Џ",vu="џ",yu="⟿",Cu="É",wu="é",Au="⩮",qu="Ě",Du="ě",Eu="Ê",Su="ê",Fu="≖",Lu="≕",Tu="Э",Ru="э",zu="⩷",Iu="Ė",Bu="ė",Nu="≑",Mu="ⅇ",Pu="≒",Ou="𝔈",Uu="𝔢",Vu="⪚",$u="È",Gu="è",ju="⪖",Hu="⪘",Zu="⪙",Ju="∈",Wu="⏧",Yu="ℓ",Qu="⪕",Ku="⪗",Xu="Ē",np="ē",tp="∅",rp="∅",op="◻",ep="∅",sp="▫",cp=" ",ip=" ",ap=" ",lp="Ŋ",up="ŋ",pp=" ",fp="Ę",hp="ę",dp="𝔼",mp="𝕖",gp="⋕",_p="⧣",bp="⩱",kp="ε",xp="Ε",vp="ε",yp="ϵ",Cp="≖",wp="≕",Ap="≂",qp="⪖",Dp="⪕",Ep="⩵",Sp="=",Fp="≂",Lp="≟",Tp="⇌",Rp="≡",zp="⩸",Ip="⧥",Bp="⥱",Np="≓",Mp="ℯ",Pp="ℰ",Op="≐",Up="⩳",Vp="≂",$p="Η",Gp="η",jp="Ð",Hp="ð",Zp="Ë",Jp="ë",Wp="€",Yp="!",Qp="∃",Kp="∃",Xp="ℰ",nf="ⅇ",tf="ⅇ",rf="≒",of="Ф",ef="ф",sf="♀",cf="ffi",af="ff",lf="ffl",uf="𝔉",pf="𝔣",ff="fi",hf="◼",df="▪",mf="fj",gf="♭",_f="fl",bf="▱",kf="ƒ",xf="𝔽",vf="𝕗",yf="∀",Cf="∀",wf="⋔",Af="⫙",qf="ℱ",Df="⨍",Ef="½",Sf="⅓",Ff="¼",Lf="⅕",Tf="⅙",Rf="⅛",zf="⅔",If="⅖",Bf="¾",Nf="⅗",Mf="⅜",Pf="⅘",Of="⅚",Uf="⅝",Vf="⅞",$f="⁄",Gf="⌢",jf="𝒻",Hf="ℱ",Zf="ǵ",Jf="Γ",Wf="γ",Yf="Ϝ",Qf="ϝ",Kf="⪆",Xf="Ğ",nh="ğ",th="Ģ",rh="Ĝ",oh="ĝ",eh="Г",sh="г",ch="Ġ",ih="ġ",ah="≥",lh="≧",uh="⪌",ph="⋛",fh="≥",hh="≧",dh="⩾",mh="⪩",gh="⩾",_h="⪀",bh="⪂",kh="⪄",xh="⋛︀",vh="⪔",yh="𝔊",Ch="𝔤",wh="≫",Ah="⋙",qh="⋙",Dh="ℷ",Eh="Ѓ",Sh="ѓ",Fh="⪥",Lh="≷",Th="⪒",Rh="⪤",zh="⪊",Ih="⪊",Bh="⪈",Nh="≩",Mh="⪈",Ph="≩",Oh="⋧",Uh="𝔾",Vh="𝕘",$h="`",Gh="≥",jh="⋛",Hh="≧",Zh="⪢",Jh="≷",Wh="⩾",Yh="≳",Qh="𝒢",Kh="ℊ",Xh="≳",nd="⪎",td="⪐",rd="⪧",od="⩺",ed=">",sd=">",cd="≫",id="⋗",ad="⦕",ld="⩼",ud="⪆",pd="⥸",fd="⋗",hd="⋛",dd="⪌",md="≷",gd="≳",_d="≩︀",bd="≩︀",kd="ˇ",xd=" ",vd="½",yd="ℋ",Cd="Ъ",wd="ъ",Ad="⥈",qd="↔",Dd="⇔",Ed="↭",Sd="^",Fd="ℏ",Ld="Ĥ",Td="ĥ",Rd="♥",zd="♥",Id="…",Bd="⊹",Nd="𝔥",Md="ℌ",Pd="ℋ",Od="⤥",Ud="⤦",Vd="⇿",$d="∻",Gd="↩",jd="↪",Hd="𝕙",Zd="ℍ",Jd="―",Wd="─",Yd="𝒽",Qd="ℋ",Kd="ℏ",Xd="Ħ",nm="ħ",tm="≎",rm="≏",om="⁃",em="‐",sm="Í",cm="í",im="⁣",am="Î",lm="î",um="И",pm="и",fm="İ",hm="Е",dm="е",mm="¡",gm="⇔",_m="𝔦",bm="ℑ",km="Ì",xm="ì",vm="ⅈ",ym="⨌",Cm="∭",wm="⧜",Am="℩",qm="IJ",Dm="ij",Em="Ī",Sm="ī",Fm="ℑ",Lm="ⅈ",Tm="ℐ",Rm="ℑ",zm="ı",Im="ℑ",Bm="⊷",Nm="Ƶ",Mm="⇒",Pm="℅",Om="∞",Um="⧝",Vm="ı",$m="⊺",Gm="∫",jm="∬",Hm="ℤ",Zm="∫",Jm="⊺",Wm="⋂",Ym="⨗",Qm="⨼",Km="⁣",Xm="⁢",ng="Ё",tg="ё",rg="Į",og="į",eg="𝕀",sg="𝕚",cg="Ι",ig="ι",ag="⨼",lg="¿",ug="𝒾",pg="ℐ",fg="∈",hg="⋵",dg="⋹",mg="⋴",gg="⋳",_g="∈",bg="⁢",kg="Ĩ",xg="ĩ",vg="І",yg="і",Cg="Ï",wg="ï",Ag="Ĵ",qg="ĵ",Dg="Й",Eg="й",Sg="𝔍",Fg="𝔧",Lg="ȷ",Tg="𝕁",Rg="𝕛",zg="𝒥",Ig="𝒿",Bg="Ј",Ng="ј",Mg="Є",Pg="є",Og="Κ",Ug="κ",Vg="ϰ",$g="Ķ",Gg="ķ",jg="К",Hg="к",Zg="𝔎",Jg="𝔨",Wg="ĸ",Yg="Х",Qg="х",Kg="Ќ",Xg="ќ",n0="𝕂",t0="𝕜",r0="𝒦",o0="𝓀",e0="⇚",s0="Ĺ",c0="ĺ",i0="⦴",a0="ℒ",l0="Λ",u0="λ",p0="⟨",f0="⟪",h0="⦑",d0="⟨",m0="⪅",g0="ℒ",_0="«",b0="⇤",k0="⤟",x0="←",v0="↞",y0="⇐",C0="⤝",w0="↩",A0="↫",q0="⤹",D0="⥳",E0="↢",S0="⤙",F0="⤛",L0="⪫",T0="⪭",R0="⪭︀",z0="⤌",I0="⤎",B0="❲",N0="{",M0="[",P0="⦋",O0="⦏",U0="⦍",V0="Ľ",$0="ľ",G0="Ļ",j0="ļ",H0="⌈",Z0="{",J0="Л",W0="л",Y0="⤶",Q0="“",K0="„",X0="⥧",n_="⥋",t_="↲",r_="≤",o_="≦",e_="⟨",s_="⇤",c_="←",i_="←",a_="⇐",l_="⇆",u_="↢",p_="⌈",f_="⟦",h_="⥡",d_="⥙",m_="⇃",g_="⌊",__="↽",b_="↼",k_="⇇",x_="↔",v_="↔",y_="⇔",C_="⇆",w_="⇋",A_="↭",q_="⥎",D_="↤",E_="⊣",S_="⥚",F_="⋋",L_="⧏",T_="⊲",R_="⊴",z_="⥑",I_="⥠",B_="⥘",N_="↿",M_="⥒",P_="↼",O_="⪋",U_="⋚",V_="≤",$_="≦",G_="⩽",j_="⪨",H_="⩽",Z_="⩿",J_="⪁",W_="⪃",Y_="⋚︀",Q_="⪓",K_="⪅",X_="⋖",nb="⋚",tb="⪋",rb="⋚",ob="≦",eb="≶",sb="≶",cb="⪡",ib="≲",ab="⩽",lb="≲",ub="⥼",pb="⌊",fb="𝔏",hb="𝔩",db="≶",mb="⪑",gb="⥢",_b="↽",bb="↼",kb="⥪",xb="▄",vb="Љ",yb="љ",Cb="⇇",wb="≪",Ab="⋘",qb="⌞",Db="⇚",Eb="⥫",Sb="◺",Fb="Ŀ",Lb="ŀ",Tb="⎰",Rb="⎰",zb="⪉",Ib="⪉",Bb="⪇",Nb="≨",Mb="⪇",Pb="≨",Ob="⋦",Ub="⟬",Vb="⇽",$b="⟦",Gb="⟵",jb="⟵",Hb="⟸",Zb="⟷",Jb="⟷",Wb="⟺",Yb="⟼",Qb="⟶",Kb="⟶",Xb="⟹",nk="↫",tk="↬",rk="⦅",ok="𝕃",ek="𝕝",sk="⨭",ck="⨴",ik="∗",ak="_",lk="↙",uk="↘",pk="◊",fk="◊",hk="⧫",dk="(",mk="⦓",gk="⇆",_k="⌟",bk="⇋",kk="⥭",xk="‎",vk="⊿",yk="‹",Ck="𝓁",wk="ℒ",Ak="↰",qk="↰",Dk="≲",Ek="⪍",Sk="⪏",Fk="[",Lk="‘",Tk="‚",Rk="Ł",zk="ł",Ik="⪦",Bk="⩹",Nk="<",Mk="<",Pk="≪",Ok="⋖",Uk="⋋",Vk="⋉",$k="⥶",Gk="⩻",jk="◃",Hk="⊴",Zk="◂",Jk="⦖",Wk="⥊",Yk="⥦",Qk="≨︀",Kk="≨︀",Xk="¯",nx="♂",tx="✠",rx="✠",ox="↦",ex="↦",sx="↧",cx="↤",ix="↥",ax="▮",lx="⨩",ux="М",px="м",fx="—",hx="∺",dx="∡",mx=" ",gx="ℳ",_x="𝔐",bx="𝔪",kx="℧",xx="µ",vx="*",yx="⫰",Cx="∣",wx="·",Ax="⊟",qx="−",Dx="∸",Ex="⨪",Sx="∓",Fx="⫛",Lx="…",Tx="∓",Rx="⊧",zx="𝕄",Ix="𝕞",Bx="∓",Nx="𝓂",Mx="ℳ",Px="∾",Ox="Μ",Ux="μ",Vx="⊸",$x="⊸",Gx="∇",jx="Ń",Hx="ń",Zx="∠⃒",Jx="≉",Wx="⩰̸",Yx="≋̸",Qx="ʼn",Kx="≉",Xx="♮",nv="ℕ",tv="♮",rv=" ",ov="≎̸",ev="≏̸",sv="⩃",cv="Ň",iv="ň",av="Ņ",lv="ņ",uv="≇",pv="⩭̸",fv="⩂",hv="Н",dv="н",mv="–",gv="⤤",_v="↗",bv="⇗",kv="↗",xv="≠",vv="≐̸",yv="​",Cv="​",wv="​",Av="​",qv="≢",Dv="⤨",Ev="≂̸",Sv="≫",Fv="≪",Lv=` `,Tv="∄",Rv="∄",zv="𝔑",Iv="𝔫",Bv="≧̸",Nv="≱",Mv="≱",Pv="≧̸",Ov="⩾̸",Uv="⩾̸",Vv="⋙̸",$v="≵",Gv="≫⃒",jv="≯",Hv="≯",Zv="≫̸",Jv="↮",Wv="⇎",Yv="⫲",Qv="∋",Kv="⋼",Xv="⋺",ny="∋",ty="Њ",ry="њ",oy="↚",ey="⇍",sy="‥",cy="≦̸",iy="≰",ay="↚",ly="⇍",uy="↮",py="⇎",fy="≰",hy="≦̸",dy="⩽̸",my="⩽̸",gy="≮",_y="⋘̸",by="≴",ky="≪⃒",xy="≮",vy="⋪",yy="⋬",Cy="≪̸",wy="∤",Ay="⁠",qy=" ",Dy="𝕟",Ey="ℕ",Sy="⫬",Fy="¬",Ly="≢",Ty="≭",Ry="∦",zy="∉",Iy="≠",By="≂̸",Ny="∄",My="≯",Py="≱",Oy="≧̸",Uy="≫̸",Vy="≹",$y="⩾̸",Gy="≵",jy="≎̸",Hy="≏̸",Zy="∉",Jy="⋵̸",Wy="⋹̸",Yy="∉",Qy="⋷",Ky="⋶",Xy="⧏̸",nC="⋪",tC="⋬",rC="≮",oC="≰",eC="≸",sC="≪̸",cC="⩽̸",iC="≴",aC="⪢̸",lC="⪡̸",uC="∌",pC="∌",fC="⋾",hC="⋽",dC="⊀",mC="⪯̸",gC="⋠",_C="∌",bC="⧐̸",kC="⋫",xC="⋭",vC="⊏̸",yC="⋢",CC="⊐̸",wC="⋣",AC="⊂⃒",qC="⊈",DC="⊁",EC="⪰̸",SC="⋡",FC="≿̸",LC="⊃⃒",TC="⊉",RC="≁",zC="≄",IC="≇",BC="≉",NC="∤",MC="∦",PC="∦",OC="⫽⃥",UC="∂̸",VC="⨔",$C="⊀",GC="⋠",jC="⊀",HC="⪯̸",ZC="⪯̸",JC="⤳̸",WC="↛",YC="⇏",QC="↝̸",KC="↛",XC="⇏",nw="⋫",tw="⋭",rw="⊁",ow="⋡",ew="⪰̸",sw="𝒩",cw="𝓃",iw="∤",aw="∦",lw="≁",uw="≄",pw="≄",fw="∤",hw="∦",dw="⋢",mw="⋣",gw="⊄",_w="⫅̸",bw="⊈",kw="⊂⃒",xw="⊈",vw="⫅̸",yw="⊁",Cw="⪰̸",ww="⊅",Aw="⫆̸",qw="⊉",Dw="⊃⃒",Ew="⊉",Sw="⫆̸",Fw="≹",Lw="Ñ",Tw="ñ",Rw="≸",zw="⋪",Iw="⋬",Bw="⋫",Nw="⋭",Mw="Ν",Pw="ν",Ow="#",Uw="№",Vw=" ",$w="≍⃒",Gw="⊬",jw="⊭",Hw="⊮",Zw="⊯",Jw="≥⃒",Ww=">⃒",Yw="⤄",Qw="⧞",Kw="⤂",Xw="≤⃒",n1="<⃒",t1="⊴⃒",r1="⤃",o1="⊵⃒",e1="∼⃒",s1="⤣",c1="↖",i1="⇖",a1="↖",l1="⤧",u1="Ó",p1="ó",f1="⊛",h1="Ô",d1="ô",m1="⊚",g1="О",_1="о",b1="⊝",k1="Ő",x1="ő",v1="⨸",y1="⊙",C1="⦼",w1="Œ",A1="œ",q1="⦿",D1="𝔒",E1="𝔬",S1="˛",F1="Ò",L1="ò",T1="⧁",R1="⦵",z1="Ω",I1="∮",B1="↺",N1="⦾",M1="⦻",P1="‾",O1="⧀",U1="Ō",V1="ō",$1="Ω",G1="ω",j1="Ο",H1="ο",Z1="⦶",J1="⊖",W1="𝕆",Y1="𝕠",Q1="⦷",K1="“",X1="‘",nA="⦹",tA="⊕",rA="↻",oA="⩔",eA="∨",sA="⩝",cA="ℴ",iA="ℴ",aA="ª",lA="º",uA="⊶",pA="⩖",fA="⩗",hA="⩛",dA="Ⓢ",mA="𝒪",gA="ℴ",_A="Ø",bA="ø",kA="⊘",xA="Õ",vA="õ",yA="⨶",CA="⨷",wA="⊗",AA="Ö",qA="ö",DA="⌽",EA="‾",SA="⏞",FA="⎴",LA="⏜",TA="¶",RA="∥",zA="∥",IA="⫳",BA="⫽",NA="∂",MA="∂",PA="П",OA="п",UA="%",VA=".",$A="‰",GA="⊥",jA="‱",HA="𝔓",ZA="𝔭",JA="Φ",WA="φ",YA="ϕ",QA="ℳ",KA="☎",XA="Π",nq="π",tq="⋔",rq="ϖ",oq="ℏ",eq="ℎ",sq="ℏ",cq="⨣",iq="⊞",aq="⨢",lq="+",uq="∔",pq="⨥",fq="⩲",hq="±",dq="±",mq="⨦",gq="⨧",_q="±",bq="ℌ",kq="⨕",xq="𝕡",vq="ℙ",yq="£",Cq="⪷",wq="⪻",Aq="≺",qq="≼",Dq="⪷",Eq="≺",Sq="≼",Fq="≺",Lq="⪯",Tq="≼",Rq="≾",zq="⪯",Iq="⪹",Bq="⪵",Nq="⋨",Mq="⪯",Pq="⪳",Oq="≾",Uq="′",Vq="″",$q="ℙ",Gq="⪹",jq="⪵",Hq="⋨",Zq="∏",Jq="∏",Wq="⌮",Yq="⌒",Qq="⌓",Kq="∝",Xq="∝",nD="∷",tD="∝",rD="≾",oD="⊰",eD="𝒫",sD="𝓅",cD="Ψ",iD="ψ",aD=" ",lD="𝔔",uD="𝔮",pD="⨌",fD="𝕢",hD="ℚ",dD="⁗",mD="𝒬",gD="𝓆",_D="ℍ",bD="⨖",kD="?",xD="≟",vD='"',yD='"',CD="⇛",wD="∽̱",AD="Ŕ",qD="ŕ",DD="√",ED="⦳",SD="⟩",FD="⟫",LD="⦒",TD="⦥",RD="⟩",zD="»",ID="⥵",BD="⇥",ND="⤠",MD="⤳",PD="→",OD="↠",UD="⇒",VD="⤞",$D="↪",GD="↬",jD="⥅",HD="⥴",ZD="⤖",JD="↣",WD="↝",YD="⤚",QD="⤜",KD="∶",XD="ℚ",nE="⤍",tE="⤏",rE="⤐",oE="❳",eE="}",sE="]",cE="⦌",iE="⦎",aE="⦐",lE="Ř",uE="ř",pE="Ŗ",fE="ŗ",hE="⌉",dE="}",mE="Р",gE="р",_E="⤷",bE="⥩",kE="”",xE="”",vE="↳",yE="ℜ",CE="ℛ",wE="ℜ",AE="ℝ",qE="ℜ",DE="▭",EE="®",SE="®",FE="∋",LE="⇋",TE="⥯",RE="⥽",zE="⌋",IE="𝔯",BE="ℜ",NE="⥤",ME="⇁",PE="⇀",OE="⥬",UE="Ρ",VE="ρ",$E="ϱ",GE="⟩",jE="⇥",HE="→",ZE="→",JE="⇒",WE="⇄",YE="↣",QE="⌉",KE="⟧",XE="⥝",nS="⥕",tS="⇂",rS="⌋",oS="⇁",eS="⇀",sS="⇄",cS="⇌",iS="⇉",aS="↝",lS="↦",uS="⊢",pS="⥛",fS="⋌",hS="⧐",dS="⊳",mS="⊵",gS="⥏",_S="⥜",bS="⥔",kS="↾",xS="⥓",vS="⇀",yS="˚",CS="≓",wS="⇄",AS="⇌",qS="‏",DS="⎱",ES="⎱",SS="⫮",FS="⟭",LS="⇾",TS="⟧",RS="⦆",zS="𝕣",IS="ℝ",BS="⨮",NS="⨵",MS="⥰",PS=")",OS="⦔",US="⨒",VS="⇉",$S="⇛",GS="›",jS="𝓇",HS="ℛ",ZS="↱",JS="↱",WS="]",YS="’",QS="’",KS="⋌",XS="⋊",nF="▹",tF="⊵",rF="▸",oF="⧎",eF="⧴",sF="⥨",cF="℞",iF="Ś",aF="ś",lF="‚",uF="⪸",pF="Š",fF="š",hF="⪼",dF="≻",mF="≽",gF="⪰",_F="⪴",bF="Ş",kF="ş",xF="Ŝ",vF="ŝ",yF="⪺",CF="⪶",wF="⋩",AF="⨓",qF="≿",DF="С",EF="с",SF="⊡",FF="⋅",LF="⩦",TF="⤥",RF="↘",zF="⇘",IF="↘",BF="§",NF=";",MF="⤩",PF="∖",OF="∖",UF="✶",VF="𝔖",$F="𝔰",GF="⌢",jF="♯",HF="Щ",ZF="щ",JF="Ш",WF="ш",YF="↓",QF="←",KF="∣",XF="∥",nL="→",tL="↑",rL="­",oL="Σ",eL="σ",sL="ς",cL="ς",iL="∼",aL="⩪",lL="≃",uL="≃",pL="⪞",fL="⪠",hL="⪝",dL="⪟",mL="≆",gL="⨤",_L="⥲",bL="←",kL="∘",xL="∖",vL="⨳",yL="⧤",CL="∣",wL="⌣",AL="⪪",qL="⪬",DL="⪬︀",EL="Ь",SL="ь",FL="⌿",LL="⧄",TL="/",RL="𝕊",zL="𝕤",IL="♠",BL="♠",NL="∥",ML="⊓",PL="⊓︀",OL="⊔",UL="⊔︀",VL="√",$L="⊏",GL="⊑",jL="⊏",HL="⊑",ZL="⊐",JL="⊒",WL="⊐",YL="⊒",QL="□",KL="□",XL="⊓",nT="⊏",tT="⊑",rT="⊐",oT="⊒",eT="⊔",sT="▪",cT="□",iT="▪",aT="→",lT="𝒮",uT="𝓈",pT="∖",fT="⌣",hT="⋆",dT="⋆",mT="☆",gT="★",_T="ϵ",bT="ϕ",kT="¯",xT="⊂",vT="⋐",yT="⪽",CT="⫅",wT="⊆",AT="⫃",qT="⫁",DT="⫋",ET="⊊",ST="⪿",FT="⥹",LT="⊂",TT="⋐",RT="⊆",zT="⫅",IT="⊆",BT="⊊",NT="⫋",MT="⫇",PT="⫕",OT="⫓",UT="⪸",VT="≻",$T="≽",GT="≻",jT="⪰",HT="≽",ZT="≿",JT="⪰",WT="⪺",YT="⪶",QT="⋩",KT="≿",XT="∋",n2="∑",t2="∑",r2="♪",o2="¹",e2="²",s2="³",c2="⊃",i2="⋑",a2="⪾",l2="⫘",u2="⫆",p2="⊇",f2="⫄",h2="⊃",d2="⊇",m2="⟉",g2="⫗",_2="⥻",b2="⫂",k2="⫌",x2="⊋",v2="⫀",y2="⊃",C2="⋑",w2="⊇",A2="⫆",q2="⊋",D2="⫌",E2="⫈",S2="⫔",F2="⫖",L2="⤦",T2="↙",R2="⇙",z2="↙",I2="⤪",B2="ß",N2=" ",M2="⌖",P2="Τ",O2="τ",U2="⎴",V2="Ť",$2="ť",G2="Ţ",j2="ţ",H2="Т",Z2="т",J2="⃛",W2="⌕",Y2="𝔗",Q2="𝔱",K2="∴",X2="∴",nR="∴",tR="Θ",rR="θ",oR="ϑ",eR="ϑ",sR="≈",cR="∼",iR="  ",aR=" ",lR=" ",uR="≈",pR="∼",fR="Þ",hR="þ",dR="˜",mR="∼",gR="≃",_R="≅",bR="≈",kR="⨱",xR="⊠",vR="×",yR="⨰",CR="∭",wR="⤨",AR="⌶",qR="⫱",DR="⊤",ER="𝕋",SR="𝕥",FR="⫚",LR="⤩",TR="‴",RR="™",zR="™",IR="▵",BR="▿",NR="◃",MR="⊴",PR="≜",OR="▹",UR="⊵",VR="◬",$R="≜",GR="⨺",jR="⃛",HR="⨹",ZR="⧍",JR="⨻",WR="⏢",YR="𝒯",QR="𝓉",KR="Ц",XR="ц",nz="Ћ",tz="ћ",rz="Ŧ",oz="ŧ",ez="≬",sz="↞",cz="↠",iz="Ú",az="ú",lz="↑",uz="↟",pz="⇑",fz="⥉",hz="Ў",dz="ў",mz="Ŭ",gz="ŭ",_z="Û",bz="û",kz="У",xz="у",vz="⇅",yz="Ű",Cz="ű",wz="⥮",Az="⥾",qz="𝔘",Dz="𝔲",Ez="Ù",Sz="ù",Fz="⥣",Lz="↿",Tz="↾",Rz="▀",zz="⌜",Iz="⌜",Bz="⌏",Nz="◸",Mz="Ū",Pz="ū",Oz="¨",Uz="_",Vz="⏟",$z="⎵",Gz="⏝",jz="⋃",Hz="⊎",Zz="Ų",Jz="ų",Wz="𝕌",Yz="𝕦",Qz="⤒",Kz="↑",Xz="↑",nI="⇑",tI="⇅",rI="↕",oI="↕",eI="⇕",sI="⥮",cI="↿",iI="↾",aI="⊎",lI="↖",uI="↗",pI="υ",fI="ϒ",hI="ϒ",dI="Υ",mI="υ",gI="↥",_I="⊥",bI="⇈",kI="⌝",xI="⌝",vI="⌎",yI="Ů",CI="ů",wI="◹",AI="𝒰",qI="𝓊",DI="⋰",EI="Ũ",SI="ũ",FI="▵",LI="▴",TI="⇈",RI="Ü",zI="ü",II="⦧",BI="⦜",NI="ϵ",MI="ϰ",PI="∅",OI="ϕ",UI="ϖ",VI="∝",$I="↕",GI="⇕",jI="ϱ",HI="ς",ZI="⊊︀",JI="⫋︀",WI="⊋︀",YI="⫌︀",QI="ϑ",KI="⊲",XI="⊳",nB="⫨",tB="⫫",rB="⫩",oB="В",eB="в",sB="⊢",cB="⊨",iB="⊩",aB="⊫",lB="⫦",uB="⊻",pB="∨",fB="⋁",hB="≚",dB="⋮",mB="|",gB="‖",_B="|",bB="‖",kB="∣",xB="|",vB="❘",yB="≀",CB=" ",wB="𝔙",AB="𝔳",qB="⊲",DB="⊂⃒",EB="⊃⃒",SB="𝕍",FB="𝕧",LB="∝",TB="⊳",RB="𝒱",zB="𝓋",IB="⫋︀",BB="⊊︀",NB="⫌︀",MB="⊋︀",PB="⊪",OB="⦚",UB="Ŵ",VB="ŵ",$B="⩟",GB="∧",jB="⋀",HB="≙",ZB="℘",JB="𝔚",WB="𝔴",YB="𝕎",QB="𝕨",KB="℘",XB="≀",n3="≀",t3="𝒲",r3="𝓌",o3="⋂",e3="◯",s3="⋃",c3="▽",i3="𝔛",a3="𝔵",l3="⟷",u3="⟺",p3="Ξ",f3="ξ",h3="⟵",d3="⟸",m3="⟼",g3="⋻",_3="⨀",b3="𝕏",k3="𝕩",x3="⨁",v3="⨂",y3="⟶",C3="⟹",w3="𝒳",A3="𝓍",q3="⨆",D3="⨄",E3="△",S3="⋁",F3="⋀",L3="Ý",T3="ý",R3="Я",z3="я",I3="Ŷ",B3="ŷ",N3="Ы",M3="ы",P3="¥",O3="𝔜",U3="𝔶",V3="Ї",$3="ї",G3="𝕐",j3="𝕪",H3="𝒴",Z3="𝓎",J3="Ю",W3="ю",Y3="ÿ",Q3="Ÿ",K3="Ź",X3="ź",nN="Ž",tN="ž",rN="З",oN="з",eN="Ż",sN="ż",cN="ℨ",iN="​",aN="Ζ",lN="ζ",uN="𝔷",pN="ℨ",fN="Ж",hN="ж",dN="⇝",mN="𝕫",gN="ℤ",_N="𝒵",bN="𝓏",kN="‍",xN="‌",vN={Aacute:rr,aacute:or,Abreve:er,abreve:sr,ac:cr,acd:ir,acE:ar,Acirc:lr,acirc:ur,acute:pr,Acy:fr,acy:hr,AElig:dr,aelig:mr,af:gr,Afr:_r,afr:br,Agrave:kr,agrave:xr,alefsym:vr,aleph:yr,Alpha:Cr,alpha:wr,Amacr:Ar,amacr:qr,amalg:Dr,amp:Er,AMP:Sr,andand:Fr,And:Lr,and:Tr,andd:Rr,andslope:zr,andv:Ir,ang:Br,ange:Nr,angle:Mr,angmsdaa:Pr,angmsdab:Or,angmsdac:Ur,angmsdad:Vr,angmsdae:$r,angmsdaf:Gr,angmsdag:jr,angmsdah:Hr,angmsd:Zr,angrt:Jr,angrtvb:Wr,angrtvbd:Yr,angsph:Qr,angst:Kr,angzarr:Xr,Aogon:no,aogon:to,Aopf:ro,aopf:oo,apacir:eo,ap:so,apE:co,ape:io,apid:ao,apos:lo,ApplyFunction:uo,approx:po,approxeq:fo,Aring:ho,aring:mo,Ascr:go,ascr:_o,Assign:bo,ast:ko,asymp:xo,asympeq:vo,Atilde:yo,atilde:Co,Auml:wo,auml:Ao,awconint:qo,awint:Do,backcong:Eo,backepsilon:So,backprime:Fo,backsim:Lo,backsimeq:To,Backslash:Ro,Barv:zo,barvee:Io,barwed:Bo,Barwed:No,barwedge:Mo,bbrk:Po,bbrktbrk:Oo,bcong:Uo,Bcy:Vo,bcy:$o,bdquo:Go,becaus:jo,because:Ho,Because:Zo,bemptyv:Jo,bepsi:Wo,bernou:Yo,Bernoullis:Qo,Beta:Ko,beta:Xo,beth:ne,between:te,Bfr:re,bfr:oe,bigcap:ee,bigcirc:se,bigcup:ce,bigodot:ie,bigoplus:ae,bigotimes:le,bigsqcup:ue,bigstar:pe,bigtriangledown:fe,bigtriangleup:he,biguplus:de,bigvee:me,bigwedge:ge,bkarow:_e,blacklozenge:be,blacksquare:ke,blacktriangle:xe,blacktriangledown:ve,blacktriangleleft:ye,blacktriangleright:Ce,blank:we,blk12:Ae,blk14:qe,blk34:De,block:Ee,bne:Se,bnequiv:Fe,bNot:Le,bnot:Te,Bopf:Re,bopf:ze,bot:Ie,bottom:Be,bowtie:Ne,boxbox:Me,boxdl:Pe,boxdL:Oe,boxDl:Ue,boxDL:Ve,boxdr:$e,boxdR:Ge,boxDr:je,boxDR:He,boxh:Ze,boxH:Je,boxhd:We,boxHd:Ye,boxhD:Qe,boxHD:Ke,boxhu:Xe,boxHu:ns,boxhU:ts,boxHU:rs,boxminus:os,boxplus:es,boxtimes:ss,boxul:cs,boxuL:is,boxUl:as,boxUL:ls,boxur:us,boxuR:ps,boxUr:fs,boxUR:hs,boxv:ds,boxV:ms,boxvh:gs,boxvH:_s,boxVh:bs,boxVH:ks,boxvl:xs,boxvL:vs,boxVl:ys,boxVL:Cs,boxvr:ws,boxvR:As,boxVr:qs,boxVR:Ds,bprime:Es,breve:Ss,Breve:Fs,brvbar:Ls,bscr:Ts,Bscr:Rs,bsemi:zs,bsim:Is,bsime:Bs,bsolb:Ns,bsol:Ms,bsolhsub:Ps,bull:Os,bullet:Us,bump:Vs,bumpE:$s,bumpe:Gs,Bumpeq:js,bumpeq:Hs,Cacute:Zs,cacute:Js,capand:Ws,capbrcup:Ys,capcap:Qs,cap:Ks,Cap:Xs,capcup:nc,capdot:tc,CapitalDifferentialD:rc,caps:oc,caret:ec,caron:sc,Cayleys:cc,ccaps:ic,Ccaron:ac,ccaron:lc,Ccedil:uc,ccedil:pc,Ccirc:fc,ccirc:hc,Cconint:dc,ccups:mc,ccupssm:gc,Cdot:_c,cdot:bc,cedil:kc,Cedilla:xc,cemptyv:vc,cent:yc,centerdot:Cc,CenterDot:wc,cfr:Ac,Cfr:qc,CHcy:Dc,chcy:Ec,check:Sc,checkmark:Fc,Chi:Lc,chi:Tc,circ:Rc,circeq:zc,circlearrowleft:Ic,circlearrowright:Bc,circledast:Nc,circledcirc:Mc,circleddash:Pc,CircleDot:Oc,circledR:Uc,circledS:Vc,CircleMinus:$c,CirclePlus:Gc,CircleTimes:jc,cir:Hc,cirE:Zc,cire:Jc,cirfnint:Wc,cirmid:Yc,cirscir:Qc,ClockwiseContourIntegral:Kc,CloseCurlyDoubleQuote:Xc,CloseCurlyQuote:ni,clubs:ti,clubsuit:ri,colon:oi,Colon:ei,Colone:si,colone:ci,coloneq:ii,comma:ai,commat:li,comp:ui,compfn:pi,complement:fi,complexes:hi,cong:di,congdot:mi,Congruent:gi,conint:_i,Conint:bi,ContourIntegral:ki,copf:xi,Copf:vi,coprod:yi,Coproduct:Ci,copy:wi,COPY:Ai,copysr:qi,CounterClockwiseContourIntegral:Di,crarr:Ei,cross:Si,Cross:Fi,Cscr:Li,cscr:Ti,csub:Ri,csube:zi,csup:Ii,csupe:Bi,ctdot:Ni,cudarrl:Mi,cudarrr:Pi,cuepr:Oi,cuesc:Ui,cularr:Vi,cularrp:$i,cupbrcap:Gi,cupcap:ji,CupCap:Hi,cup:Zi,Cup:Ji,cupcup:Wi,cupdot:Yi,cupor:Qi,cups:Ki,curarr:Xi,curarrm:na,curlyeqprec:ta,curlyeqsucc:ra,curlyvee:oa,curlywedge:ea,curren:sa,curvearrowleft:ca,curvearrowright:ia,cuvee:aa,cuwed:la,cwconint:ua,cwint:pa,cylcty:fa,dagger:ha,Dagger:da,daleth:ma,darr:ga,Darr:_a,dArr:ba,dash:ka,Dashv:xa,dashv:va,dbkarow:ya,dblac:Ca,Dcaron:wa,dcaron:Aa,Dcy:qa,dcy:Da,ddagger:Ea,ddarr:Sa,DD:Fa,dd:La,DDotrahd:Ta,ddotseq:Ra,deg:za,Del:Ia,Delta:Ba,delta:Na,demptyv:Ma,dfisht:Pa,Dfr:Oa,dfr:Ua,dHar:Va,dharl:$a,dharr:Ga,DiacriticalAcute:ja,DiacriticalDot:Ha,DiacriticalDoubleAcute:Za,DiacriticalGrave:Ja,DiacriticalTilde:Wa,diam:Ya,diamond:Qa,Diamond:Ka,diamondsuit:Xa,diams:nl,die:tl,DifferentialD:rl,digamma:ol,disin:el,div:sl,divide:cl,divideontimes:il,divonx:al,DJcy:ll,djcy:ul,dlcorn:pl,dlcrop:fl,dollar:hl,Dopf:dl,dopf:ml,Dot:gl,dot:_l,DotDot:bl,doteq:kl,doteqdot:xl,DotEqual:vl,dotminus:yl,dotplus:Cl,dotsquare:wl,doublebarwedge:Al,DoubleContourIntegral:ql,DoubleDot:Dl,DoubleDownArrow:El,DoubleLeftArrow:Sl,DoubleLeftRightArrow:Fl,DoubleLeftTee:Ll,DoubleLongLeftArrow:Tl,DoubleLongLeftRightArrow:Rl,DoubleLongRightArrow:zl,DoubleRightArrow:Il,DoubleRightTee:Bl,DoubleUpArrow:Nl,DoubleUpDownArrow:Ml,DoubleVerticalBar:Pl,DownArrowBar:Ol,downarrow:Ul,DownArrow:Vl,Downarrow:$l,DownArrowUpArrow:Gl,DownBreve:jl,downdownarrows:Hl,downharpoonleft:Zl,downharpoonright:Jl,DownLeftRightVector:Wl,DownLeftTeeVector:Yl,DownLeftVectorBar:Ql,DownLeftVector:Kl,DownRightTeeVector:Xl,DownRightVectorBar:nu,DownRightVector:tu,DownTeeArrow:ru,DownTee:ou,drbkarow:eu,drcorn:su,drcrop:cu,Dscr:iu,dscr:au,DScy:lu,dscy:uu,dsol:pu,Dstrok:fu,dstrok:hu,dtdot:du,dtri:mu,dtrif:gu,duarr:_u,duhar:bu,dwangle:ku,DZcy:xu,dzcy:vu,dzigrarr:yu,Eacute:Cu,eacute:wu,easter:Au,Ecaron:qu,ecaron:Du,Ecirc:Eu,ecirc:Su,ecir:Fu,ecolon:Lu,Ecy:Tu,ecy:Ru,eDDot:zu,Edot:Iu,edot:Bu,eDot:Nu,ee:Mu,efDot:Pu,Efr:Ou,efr:Uu,eg:Vu,Egrave:$u,egrave:Gu,egs:ju,egsdot:Hu,el:Zu,Element:Ju,elinters:Wu,ell:Yu,els:Qu,elsdot:Ku,Emacr:Xu,emacr:np,empty:tp,emptyset:rp,EmptySmallSquare:op,emptyv:ep,EmptyVerySmallSquare:sp,emsp13:cp,emsp14:ip,emsp:ap,ENG:lp,eng:up,ensp:pp,Eogon:fp,eogon:hp,Eopf:dp,eopf:mp,epar:gp,eparsl:_p,eplus:bp,epsi:kp,Epsilon:xp,epsilon:vp,epsiv:yp,eqcirc:Cp,eqcolon:wp,eqsim:Ap,eqslantgtr:qp,eqslantless:Dp,Equal:Ep,equals:Sp,EqualTilde:Fp,equest:Lp,Equilibrium:Tp,equiv:Rp,equivDD:zp,eqvparsl:Ip,erarr:Bp,erDot:Np,escr:Mp,Escr:Pp,esdot:Op,Esim:Up,esim:Vp,Eta:$p,eta:Gp,ETH:jp,eth:Hp,Euml:Zp,euml:Jp,euro:Wp,excl:Yp,exist:Qp,Exists:Kp,expectation:Xp,exponentiale:nf,ExponentialE:tf,fallingdotseq:rf,Fcy:of,fcy:ef,female:sf,ffilig:cf,fflig:af,ffllig:lf,Ffr:uf,ffr:pf,filig:ff,FilledSmallSquare:hf,FilledVerySmallSquare:df,fjlig:mf,flat:gf,fllig:_f,fltns:bf,fnof:kf,Fopf:xf,fopf:vf,forall:yf,ForAll:Cf,fork:wf,forkv:Af,Fouriertrf:qf,fpartint:Df,frac12:Ef,frac13:Sf,frac14:Ff,frac15:Lf,frac16:Tf,frac18:Rf,frac23:zf,frac25:If,frac34:Bf,frac35:Nf,frac38:Mf,frac45:Pf,frac56:Of,frac58:Uf,frac78:Vf,frasl:$f,frown:Gf,fscr:jf,Fscr:Hf,gacute:Zf,Gamma:Jf,gamma:Wf,Gammad:Yf,gammad:Qf,gap:Kf,Gbreve:Xf,gbreve:nh,Gcedil:th,Gcirc:rh,gcirc:oh,Gcy:eh,gcy:sh,Gdot:ch,gdot:ih,ge:ah,gE:lh,gEl:uh,gel:ph,geq:fh,geqq:hh,geqslant:dh,gescc:mh,ges:gh,gesdot:_h,gesdoto:bh,gesdotol:kh,gesl:xh,gesles:vh,Gfr:yh,gfr:Ch,gg:wh,Gg:Ah,ggg:qh,gimel:Dh,GJcy:Eh,gjcy:Sh,gla:Fh,gl:Lh,glE:Th,glj:Rh,gnap:zh,gnapprox:Ih,gne:Bh,gnE:Nh,gneq:Mh,gneqq:Ph,gnsim:Oh,Gopf:Uh,gopf:Vh,grave:$h,GreaterEqual:Gh,GreaterEqualLess:jh,GreaterFullEqual:Hh,GreaterGreater:Zh,GreaterLess:Jh,GreaterSlantEqual:Wh,GreaterTilde:Yh,Gscr:Qh,gscr:Kh,gsim:Xh,gsime:nd,gsiml:td,gtcc:rd,gtcir:od,gt:ed,GT:sd,Gt:cd,gtdot:id,gtlPar:ad,gtquest:ld,gtrapprox:ud,gtrarr:pd,gtrdot:fd,gtreqless:hd,gtreqqless:dd,gtrless:md,gtrsim:gd,gvertneqq:_d,gvnE:bd,Hacek:kd,hairsp:xd,half:vd,hamilt:yd,HARDcy:Cd,hardcy:wd,harrcir:Ad,harr:qd,hArr:Dd,harrw:Ed,Hat:Sd,hbar:Fd,Hcirc:Ld,hcirc:Td,hearts:Rd,heartsuit:zd,hellip:Id,hercon:Bd,hfr:Nd,Hfr:Md,HilbertSpace:Pd,hksearow:Od,hkswarow:Ud,hoarr:Vd,homtht:$d,hookleftarrow:Gd,hookrightarrow:jd,hopf:Hd,Hopf:Zd,horbar:Jd,HorizontalLine:Wd,hscr:Yd,Hscr:Qd,hslash:Kd,Hstrok:Xd,hstrok:nm,HumpDownHump:tm,HumpEqual:rm,hybull:om,hyphen:em,Iacute:sm,iacute:cm,ic:im,Icirc:am,icirc:lm,Icy:um,icy:pm,Idot:fm,IEcy:hm,iecy:dm,iexcl:mm,iff:gm,ifr:_m,Ifr:bm,Igrave:km,igrave:xm,ii:vm,iiiint:ym,iiint:Cm,iinfin:wm,iiota:Am,IJlig:qm,ijlig:Dm,Imacr:Em,imacr:Sm,image:Fm,ImaginaryI:Lm,imagline:Tm,imagpart:Rm,imath:zm,Im,imof:Bm,imped:Nm,Implies:Mm,incare:Pm,in:"∈",infin:Om,infintie:Um,inodot:Vm,intcal:$m,int:Gm,Int:jm,integers:Hm,Integral:Zm,intercal:Jm,Intersection:Wm,intlarhk:Ym,intprod:Qm,InvisibleComma:Km,InvisibleTimes:Xm,IOcy:ng,iocy:tg,Iogon:rg,iogon:og,Iopf:eg,iopf:sg,Iota:cg,iota:ig,iprod:ag,iquest:lg,iscr:ug,Iscr:pg,isin:fg,isindot:hg,isinE:dg,isins:mg,isinsv:gg,isinv:_g,it:bg,Itilde:kg,itilde:xg,Iukcy:vg,iukcy:yg,Iuml:Cg,iuml:wg,Jcirc:Ag,jcirc:qg,Jcy:Dg,jcy:Eg,Jfr:Sg,jfr:Fg,jmath:Lg,Jopf:Tg,jopf:Rg,Jscr:zg,jscr:Ig,Jsercy:Bg,jsercy:Ng,Jukcy:Mg,jukcy:Pg,Kappa:Og,kappa:Ug,kappav:Vg,Kcedil:$g,kcedil:Gg,Kcy:jg,kcy:Hg,Kfr:Zg,kfr:Jg,kgreen:Wg,KHcy:Yg,khcy:Qg,KJcy:Kg,kjcy:Xg,Kopf:n0,kopf:t0,Kscr:r0,kscr:o0,lAarr:e0,Lacute:s0,lacute:c0,laemptyv:i0,lagran:a0,Lambda:l0,lambda:u0,lang:p0,Lang:f0,langd:h0,langle:d0,lap:m0,Laplacetrf:g0,laquo:_0,larrb:b0,larrbfs:k0,larr:x0,Larr:v0,lArr:y0,larrfs:C0,larrhk:w0,larrlp:A0,larrpl:q0,larrsim:D0,larrtl:E0,latail:S0,lAtail:F0,lat:L0,late:T0,lates:R0,lbarr:z0,lBarr:I0,lbbrk:B0,lbrace:N0,lbrack:M0,lbrke:P0,lbrksld:O0,lbrkslu:U0,Lcaron:V0,lcaron:$0,Lcedil:G0,lcedil:j0,lceil:H0,lcub:Z0,Lcy:J0,lcy:W0,ldca:Y0,ldquo:Q0,ldquor:K0,ldrdhar:X0,ldrushar:n_,ldsh:t_,le:r_,lE:o_,LeftAngleBracket:e_,LeftArrowBar:s_,leftarrow:c_,LeftArrow:i_,Leftarrow:a_,LeftArrowRightArrow:l_,leftarrowtail:u_,LeftCeiling:p_,LeftDoubleBracket:f_,LeftDownTeeVector:h_,LeftDownVectorBar:d_,LeftDownVector:m_,LeftFloor:g_,leftharpoondown:__,leftharpoonup:b_,leftleftarrows:k_,leftrightarrow:x_,LeftRightArrow:v_,Leftrightarrow:y_,leftrightarrows:C_,leftrightharpoons:w_,leftrightsquigarrow:A_,LeftRightVector:q_,LeftTeeArrow:D_,LeftTee:E_,LeftTeeVector:S_,leftthreetimes:F_,LeftTriangleBar:L_,LeftTriangle:T_,LeftTriangleEqual:R_,LeftUpDownVector:z_,LeftUpTeeVector:I_,LeftUpVectorBar:B_,LeftUpVector:N_,LeftVectorBar:M_,LeftVector:P_,lEg:O_,leg:U_,leq:V_,leqq:$_,leqslant:G_,lescc:j_,les:H_,lesdot:Z_,lesdoto:J_,lesdotor:W_,lesg:Y_,lesges:Q_,lessapprox:K_,lessdot:X_,lesseqgtr:nb,lesseqqgtr:tb,LessEqualGreater:rb,LessFullEqual:ob,LessGreater:eb,lessgtr:sb,LessLess:cb,lesssim:ib,LessSlantEqual:ab,LessTilde:lb,lfisht:ub,lfloor:pb,Lfr:fb,lfr:hb,lg:db,lgE:mb,lHar:gb,lhard:_b,lharu:bb,lharul:kb,lhblk:xb,LJcy:vb,ljcy:yb,llarr:Cb,ll:wb,Ll:Ab,llcorner:qb,Lleftarrow:Db,llhard:Eb,lltri:Sb,Lmidot:Fb,lmidot:Lb,lmoustache:Tb,lmoust:Rb,lnap:zb,lnapprox:Ib,lne:Bb,lnE:Nb,lneq:Mb,lneqq:Pb,lnsim:Ob,loang:Ub,loarr:Vb,lobrk:$b,longleftarrow:Gb,LongLeftArrow:jb,Longleftarrow:Hb,longleftrightarrow:Zb,LongLeftRightArrow:Jb,Longleftrightarrow:Wb,longmapsto:Yb,longrightarrow:Qb,LongRightArrow:Kb,Longrightarrow:Xb,looparrowleft:nk,looparrowright:tk,lopar:rk,Lopf:ok,lopf:ek,loplus:sk,lotimes:ck,lowast:ik,lowbar:ak,LowerLeftArrow:lk,LowerRightArrow:uk,loz:pk,lozenge:fk,lozf:hk,lpar:dk,lparlt:mk,lrarr:gk,lrcorner:_k,lrhar:bk,lrhard:kk,lrm:xk,lrtri:vk,lsaquo:yk,lscr:Ck,Lscr:wk,lsh:Ak,Lsh:qk,lsim:Dk,lsime:Ek,lsimg:Sk,lsqb:Fk,lsquo:Lk,lsquor:Tk,Lstrok:Rk,lstrok:zk,ltcc:Ik,ltcir:Bk,lt:Nk,LT:Mk,Lt:Pk,ltdot:Ok,lthree:Uk,ltimes:Vk,ltlarr:$k,ltquest:Gk,ltri:jk,ltrie:Hk,ltrif:Zk,ltrPar:Jk,lurdshar:Wk,luruhar:Yk,lvertneqq:Qk,lvnE:Kk,macr:Xk,male:nx,malt:tx,maltese:rx,Map:"⤅",map:ox,mapsto:ex,mapstodown:sx,mapstoleft:cx,mapstoup:ix,marker:ax,mcomma:lx,Mcy:ux,mcy:px,mdash:fx,mDDot:hx,measuredangle:dx,MediumSpace:mx,Mellintrf:gx,Mfr:_x,mfr:bx,mho:kx,micro:xx,midast:vx,midcir:yx,mid:Cx,middot:wx,minusb:Ax,minus:qx,minusd:Dx,minusdu:Ex,MinusPlus:Sx,mlcp:Fx,mldr:Lx,mnplus:Tx,models:Rx,Mopf:zx,mopf:Ix,mp:Bx,mscr:Nx,Mscr:Mx,mstpos:Px,Mu:Ox,mu:Ux,multimap:Vx,mumap:$x,nabla:Gx,Nacute:jx,nacute:Hx,nang:Zx,nap:Jx,napE:Wx,napid:Yx,napos:Qx,napprox:Kx,natural:Xx,naturals:nv,natur:tv,nbsp:rv,nbump:ov,nbumpe:ev,ncap:sv,Ncaron:cv,ncaron:iv,Ncedil:av,ncedil:lv,ncong:uv,ncongdot:pv,ncup:fv,Ncy:hv,ncy:dv,ndash:mv,nearhk:gv,nearr:_v,neArr:bv,nearrow:kv,ne:xv,nedot:vv,NegativeMediumSpace:yv,NegativeThickSpace:Cv,NegativeThinSpace:wv,NegativeVeryThinSpace:Av,nequiv:qv,nesear:Dv,nesim:Ev,NestedGreaterGreater:Sv,NestedLessLess:Fv,NewLine:Lv,nexist:Tv,nexists:Rv,Nfr:zv,nfr:Iv,ngE:Bv,nge:Nv,ngeq:Mv,ngeqq:Pv,ngeqslant:Ov,nges:Uv,nGg:Vv,ngsim:$v,nGt:Gv,ngt:jv,ngtr:Hv,nGtv:Zv,nharr:Jv,nhArr:Wv,nhpar:Yv,ni:Qv,nis:Kv,nisd:Xv,niv:ny,NJcy:ty,njcy:ry,nlarr:oy,nlArr:ey,nldr:sy,nlE:cy,nle:iy,nleftarrow:ay,nLeftarrow:ly,nleftrightarrow:uy,nLeftrightarrow:py,nleq:fy,nleqq:hy,nleqslant:dy,nles:my,nless:gy,nLl:_y,nlsim:by,nLt:ky,nlt:xy,nltri:vy,nltrie:yy,nLtv:Cy,nmid:wy,NoBreak:Ay,NonBreakingSpace:qy,nopf:Dy,Nopf:Ey,Not:Sy,not:Fy,NotCongruent:Ly,NotCupCap:Ty,NotDoubleVerticalBar:Ry,NotElement:zy,NotEqual:Iy,NotEqualTilde:By,NotExists:Ny,NotGreater:My,NotGreaterEqual:Py,NotGreaterFullEqual:Oy,NotGreaterGreater:Uy,NotGreaterLess:Vy,NotGreaterSlantEqual:$y,NotGreaterTilde:Gy,NotHumpDownHump:jy,NotHumpEqual:Hy,notin:Zy,notindot:Jy,notinE:Wy,notinva:Yy,notinvb:Qy,notinvc:Ky,NotLeftTriangleBar:Xy,NotLeftTriangle:nC,NotLeftTriangleEqual:tC,NotLess:rC,NotLessEqual:oC,NotLessGreater:eC,NotLessLess:sC,NotLessSlantEqual:cC,NotLessTilde:iC,NotNestedGreaterGreater:aC,NotNestedLessLess:lC,notni:uC,notniva:pC,notnivb:fC,notnivc:hC,NotPrecedes:dC,NotPrecedesEqual:mC,NotPrecedesSlantEqual:gC,NotReverseElement:_C,NotRightTriangleBar:bC,NotRightTriangle:kC,NotRightTriangleEqual:xC,NotSquareSubset:vC,NotSquareSubsetEqual:yC,NotSquareSuperset:CC,NotSquareSupersetEqual:wC,NotSubset:AC,NotSubsetEqual:qC,NotSucceeds:DC,NotSucceedsEqual:EC,NotSucceedsSlantEqual:SC,NotSucceedsTilde:FC,NotSuperset:LC,NotSupersetEqual:TC,NotTilde:RC,NotTildeEqual:zC,NotTildeFullEqual:IC,NotTildeTilde:BC,NotVerticalBar:NC,nparallel:MC,npar:PC,nparsl:OC,npart:UC,npolint:VC,npr:$C,nprcue:GC,nprec:jC,npreceq:HC,npre:ZC,nrarrc:JC,nrarr:WC,nrArr:YC,nrarrw:QC,nrightarrow:KC,nRightarrow:XC,nrtri:nw,nrtrie:tw,nsc:rw,nsccue:ow,nsce:ew,Nscr:sw,nscr:cw,nshortmid:iw,nshortparallel:aw,nsim:lw,nsime:uw,nsimeq:pw,nsmid:fw,nspar:hw,nsqsube:dw,nsqsupe:mw,nsub:gw,nsubE:_w,nsube:bw,nsubset:kw,nsubseteq:xw,nsubseteqq:vw,nsucc:yw,nsucceq:Cw,nsup:ww,nsupE:Aw,nsupe:qw,nsupset:Dw,nsupseteq:Ew,nsupseteqq:Sw,ntgl:Fw,Ntilde:Lw,ntilde:Tw,ntlg:Rw,ntriangleleft:zw,ntrianglelefteq:Iw,ntriangleright:Bw,ntrianglerighteq:Nw,Nu:Mw,nu:Pw,num:Ow,numero:Uw,numsp:Vw,nvap:$w,nvdash:Gw,nvDash:jw,nVdash:Hw,nVDash:Zw,nvge:Jw,nvgt:Ww,nvHarr:Yw,nvinfin:Qw,nvlArr:Kw,nvle:Xw,nvlt:n1,nvltrie:t1,nvrArr:r1,nvrtrie:o1,nvsim:e1,nwarhk:s1,nwarr:c1,nwArr:i1,nwarrow:a1,nwnear:l1,Oacute:u1,oacute:p1,oast:f1,Ocirc:h1,ocirc:d1,ocir:m1,Ocy:g1,ocy:_1,odash:b1,Odblac:k1,odblac:x1,odiv:v1,odot:y1,odsold:C1,OElig:w1,oelig:A1,ofcir:q1,Ofr:D1,ofr:E1,ogon:S1,Ograve:F1,ograve:L1,ogt:T1,ohbar:R1,ohm:z1,oint:I1,olarr:B1,olcir:N1,olcross:M1,oline:P1,olt:O1,Omacr:U1,omacr:V1,Omega:$1,omega:G1,Omicron:j1,omicron:H1,omid:Z1,ominus:J1,Oopf:W1,oopf:Y1,opar:Q1,OpenCurlyDoubleQuote:K1,OpenCurlyQuote:X1,operp:nA,oplus:tA,orarr:rA,Or:oA,or:eA,ord:sA,order:cA,orderof:iA,ordf:aA,ordm:lA,origof:uA,oror:pA,orslope:fA,orv:hA,oS:dA,Oscr:mA,oscr:gA,Oslash:_A,oslash:bA,osol:kA,Otilde:xA,otilde:vA,otimesas:yA,Otimes:CA,otimes:wA,Ouml:AA,ouml:qA,ovbar:DA,OverBar:EA,OverBrace:SA,OverBracket:FA,OverParenthesis:LA,para:TA,parallel:RA,par:zA,parsim:IA,parsl:BA,part:NA,PartialD:MA,Pcy:PA,pcy:OA,percnt:UA,period:VA,permil:$A,perp:GA,pertenk:jA,Pfr:HA,pfr:ZA,Phi:JA,phi:WA,phiv:YA,phmmat:QA,phone:KA,Pi:XA,pi:nq,pitchfork:tq,piv:rq,planck:oq,planckh:eq,plankv:sq,plusacir:cq,plusb:iq,pluscir:aq,plus:lq,plusdo:uq,plusdu:pq,pluse:fq,PlusMinus:hq,plusmn:dq,plussim:mq,plustwo:gq,pm:_q,Poincareplane:bq,pointint:kq,popf:xq,Popf:vq,pound:yq,prap:Cq,Pr:wq,pr:Aq,prcue:qq,precapprox:Dq,prec:Eq,preccurlyeq:Sq,Precedes:Fq,PrecedesEqual:Lq,PrecedesSlantEqual:Tq,PrecedesTilde:Rq,preceq:zq,precnapprox:Iq,precneqq:Bq,precnsim:Nq,pre:Mq,prE:Pq,precsim:Oq,prime:Uq,Prime:Vq,primes:$q,prnap:Gq,prnE:jq,prnsim:Hq,prod:Zq,Product:Jq,profalar:Wq,profline:Yq,profsurf:Qq,prop:Kq,Proportional:Xq,Proportion:nD,propto:tD,prsim:rD,prurel:oD,Pscr:eD,pscr:sD,Psi:cD,psi:iD,puncsp:aD,Qfr:lD,qfr:uD,qint:pD,qopf:fD,Qopf:hD,qprime:dD,Qscr:mD,qscr:gD,quaternions:_D,quatint:bD,quest:kD,questeq:xD,quot:vD,QUOT:yD,rAarr:CD,race:wD,Racute:AD,racute:qD,radic:DD,raemptyv:ED,rang:SD,Rang:FD,rangd:LD,range:TD,rangle:RD,raquo:zD,rarrap:ID,rarrb:BD,rarrbfs:ND,rarrc:MD,rarr:PD,Rarr:OD,rArr:UD,rarrfs:VD,rarrhk:$D,rarrlp:GD,rarrpl:jD,rarrsim:HD,Rarrtl:ZD,rarrtl:JD,rarrw:WD,ratail:YD,rAtail:QD,ratio:KD,rationals:XD,rbarr:nE,rBarr:tE,RBarr:rE,rbbrk:oE,rbrace:eE,rbrack:sE,rbrke:cE,rbrksld:iE,rbrkslu:aE,Rcaron:lE,rcaron:uE,Rcedil:pE,rcedil:fE,rceil:hE,rcub:dE,Rcy:mE,rcy:gE,rdca:_E,rdldhar:bE,rdquo:kE,rdquor:xE,rdsh:vE,real:yE,realine:CE,realpart:wE,reals:AE,Re:qE,rect:DE,reg:EE,REG:SE,ReverseElement:FE,ReverseEquilibrium:LE,ReverseUpEquilibrium:TE,rfisht:RE,rfloor:zE,rfr:IE,Rfr:BE,rHar:NE,rhard:ME,rharu:PE,rharul:OE,Rho:UE,rho:VE,rhov:$E,RightAngleBracket:GE,RightArrowBar:jE,rightarrow:HE,RightArrow:ZE,Rightarrow:JE,RightArrowLeftArrow:WE,rightarrowtail:YE,RightCeiling:QE,RightDoubleBracket:KE,RightDownTeeVector:XE,RightDownVectorBar:nS,RightDownVector:tS,RightFloor:rS,rightharpoondown:oS,rightharpoonup:eS,rightleftarrows:sS,rightleftharpoons:cS,rightrightarrows:iS,rightsquigarrow:aS,RightTeeArrow:lS,RightTee:uS,RightTeeVector:pS,rightthreetimes:fS,RightTriangleBar:hS,RightTriangle:dS,RightTriangleEqual:mS,RightUpDownVector:gS,RightUpTeeVector:_S,RightUpVectorBar:bS,RightUpVector:kS,RightVectorBar:xS,RightVector:vS,ring:yS,risingdotseq:CS,rlarr:wS,rlhar:AS,rlm:qS,rmoustache:DS,rmoust:ES,rnmid:SS,roang:FS,roarr:LS,robrk:TS,ropar:RS,ropf:zS,Ropf:IS,roplus:BS,rotimes:NS,RoundImplies:MS,rpar:PS,rpargt:OS,rppolint:US,rrarr:VS,Rrightarrow:$S,rsaquo:GS,rscr:jS,Rscr:HS,rsh:ZS,Rsh:JS,rsqb:WS,rsquo:YS,rsquor:QS,rthree:KS,rtimes:XS,rtri:nF,rtrie:tF,rtrif:rF,rtriltri:oF,RuleDelayed:eF,ruluhar:sF,rx:cF,Sacute:iF,sacute:aF,sbquo:lF,scap:uF,Scaron:pF,scaron:fF,Sc:hF,sc:dF,sccue:mF,sce:gF,scE:_F,Scedil:bF,scedil:kF,Scirc:xF,scirc:vF,scnap:yF,scnE:CF,scnsim:wF,scpolint:AF,scsim:qF,Scy:DF,scy:EF,sdotb:SF,sdot:FF,sdote:LF,searhk:TF,searr:RF,seArr:zF,searrow:IF,sect:BF,semi:NF,seswar:MF,setminus:PF,setmn:OF,sext:UF,Sfr:VF,sfr:$F,sfrown:GF,sharp:jF,SHCHcy:HF,shchcy:ZF,SHcy:JF,shcy:WF,ShortDownArrow:YF,ShortLeftArrow:QF,shortmid:KF,shortparallel:XF,ShortRightArrow:nL,ShortUpArrow:tL,shy:rL,Sigma:oL,sigma:eL,sigmaf:sL,sigmav:cL,sim:iL,simdot:aL,sime:lL,simeq:uL,simg:pL,simgE:fL,siml:hL,simlE:dL,simne:mL,simplus:gL,simrarr:_L,slarr:bL,SmallCircle:kL,smallsetminus:xL,smashp:vL,smeparsl:yL,smid:CL,smile:wL,smt:AL,smte:qL,smtes:DL,SOFTcy:EL,softcy:SL,solbar:FL,solb:LL,sol:TL,Sopf:RL,sopf:zL,spades:IL,spadesuit:BL,spar:NL,sqcap:ML,sqcaps:PL,sqcup:OL,sqcups:UL,Sqrt:VL,sqsub:$L,sqsube:GL,sqsubset:jL,sqsubseteq:HL,sqsup:ZL,sqsupe:JL,sqsupset:WL,sqsupseteq:YL,square:QL,Square:KL,SquareIntersection:XL,SquareSubset:nT,SquareSubsetEqual:tT,SquareSuperset:rT,SquareSupersetEqual:oT,SquareUnion:eT,squarf:sT,squ:cT,squf:iT,srarr:aT,Sscr:lT,sscr:uT,ssetmn:pT,ssmile:fT,sstarf:hT,Star:dT,star:mT,starf:gT,straightepsilon:_T,straightphi:bT,strns:kT,sub:xT,Sub:vT,subdot:yT,subE:CT,sube:wT,subedot:AT,submult:qT,subnE:DT,subne:ET,subplus:ST,subrarr:FT,subset:LT,Subset:TT,subseteq:RT,subseteqq:zT,SubsetEqual:IT,subsetneq:BT,subsetneqq:NT,subsim:MT,subsub:PT,subsup:OT,succapprox:UT,succ:VT,succcurlyeq:$T,Succeeds:GT,SucceedsEqual:jT,SucceedsSlantEqual:HT,SucceedsTilde:ZT,succeq:JT,succnapprox:WT,succneqq:YT,succnsim:QT,succsim:KT,SuchThat:XT,sum:n2,Sum:t2,sung:r2,sup1:o2,sup2:e2,sup3:s2,sup:c2,Sup:i2,supdot:a2,supdsub:l2,supE:u2,supe:p2,supedot:f2,Superset:h2,SupersetEqual:d2,suphsol:m2,suphsub:g2,suplarr:_2,supmult:b2,supnE:k2,supne:x2,supplus:v2,supset:y2,Supset:C2,supseteq:w2,supseteqq:A2,supsetneq:q2,supsetneqq:D2,supsim:E2,supsub:S2,supsup:F2,swarhk:L2,swarr:T2,swArr:R2,swarrow:z2,swnwar:I2,szlig:B2,Tab:N2,target:M2,Tau:P2,tau:O2,tbrk:U2,Tcaron:V2,tcaron:$2,Tcedil:G2,tcedil:j2,Tcy:H2,tcy:Z2,tdot:J2,telrec:W2,Tfr:Y2,tfr:Q2,there4:K2,therefore:X2,Therefore:nR,Theta:tR,theta:rR,thetasym:oR,thetav:eR,thickapprox:sR,thicksim:cR,ThickSpace:iR,ThinSpace:aR,thinsp:lR,thkap:uR,thksim:pR,THORN:fR,thorn:hR,tilde:dR,Tilde:mR,TildeEqual:gR,TildeFullEqual:_R,TildeTilde:bR,timesbar:kR,timesb:xR,times:vR,timesd:yR,tint:CR,toea:wR,topbot:AR,topcir:qR,top:DR,Topf:ER,topf:SR,topfork:FR,tosa:LR,tprime:TR,trade:RR,TRADE:zR,triangle:IR,triangledown:BR,triangleleft:NR,trianglelefteq:MR,triangleq:PR,triangleright:OR,trianglerighteq:UR,tridot:VR,trie:$R,triminus:GR,TripleDot:jR,triplus:HR,trisb:ZR,tritime:JR,trpezium:WR,Tscr:YR,tscr:QR,TScy:KR,tscy:XR,TSHcy:nz,tshcy:tz,Tstrok:rz,tstrok:oz,twixt:ez,twoheadleftarrow:sz,twoheadrightarrow:cz,Uacute:iz,uacute:az,uarr:lz,Uarr:uz,uArr:pz,Uarrocir:fz,Ubrcy:hz,ubrcy:dz,Ubreve:mz,ubreve:gz,Ucirc:_z,ucirc:bz,Ucy:kz,ucy:xz,udarr:vz,Udblac:yz,udblac:Cz,udhar:wz,ufisht:Az,Ufr:qz,ufr:Dz,Ugrave:Ez,ugrave:Sz,uHar:Fz,uharl:Lz,uharr:Tz,uhblk:Rz,ulcorn:zz,ulcorner:Iz,ulcrop:Bz,ultri:Nz,Umacr:Mz,umacr:Pz,uml:Oz,UnderBar:Uz,UnderBrace:Vz,UnderBracket:$z,UnderParenthesis:Gz,Union:jz,UnionPlus:Hz,Uogon:Zz,uogon:Jz,Uopf:Wz,uopf:Yz,UpArrowBar:Qz,uparrow:Kz,UpArrow:Xz,Uparrow:nI,UpArrowDownArrow:tI,updownarrow:rI,UpDownArrow:oI,Updownarrow:eI,UpEquilibrium:sI,upharpoonleft:cI,upharpoonright:iI,uplus:aI,UpperLeftArrow:lI,UpperRightArrow:uI,upsi:pI,Upsi:fI,upsih:hI,Upsilon:dI,upsilon:mI,UpTeeArrow:gI,UpTee:_I,upuparrows:bI,urcorn:kI,urcorner:xI,urcrop:vI,Uring:yI,uring:CI,urtri:wI,Uscr:AI,uscr:qI,utdot:DI,Utilde:EI,utilde:SI,utri:FI,utrif:LI,uuarr:TI,Uuml:RI,uuml:zI,uwangle:II,vangrt:BI,varepsilon:NI,varkappa:MI,varnothing:PI,varphi:OI,varpi:UI,varpropto:VI,varr:$I,vArr:GI,varrho:jI,varsigma:HI,varsubsetneq:ZI,varsubsetneqq:JI,varsupsetneq:WI,varsupsetneqq:YI,vartheta:QI,vartriangleleft:KI,vartriangleright:XI,vBar:nB,Vbar:tB,vBarv:rB,Vcy:oB,vcy:eB,vdash:sB,vDash:cB,Vdash:iB,VDash:aB,Vdashl:lB,veebar:uB,vee:pB,Vee:fB,veeeq:hB,vellip:dB,verbar:mB,Verbar:gB,vert:_B,Vert:bB,VerticalBar:kB,VerticalLine:xB,VerticalSeparator:vB,VerticalTilde:yB,VeryThinSpace:CB,Vfr:wB,vfr:AB,vltri:qB,vnsub:DB,vnsup:EB,Vopf:SB,vopf:FB,vprop:LB,vrtri:TB,Vscr:RB,vscr:zB,vsubnE:IB,vsubne:BB,vsupnE:NB,vsupne:MB,Vvdash:PB,vzigzag:OB,Wcirc:UB,wcirc:VB,wedbar:$B,wedge:GB,Wedge:jB,wedgeq:HB,weierp:ZB,Wfr:JB,wfr:WB,Wopf:YB,wopf:QB,wp:KB,wr:XB,wreath:n3,Wscr:t3,wscr:r3,xcap:o3,xcirc:e3,xcup:s3,xdtri:c3,Xfr:i3,xfr:a3,xharr:l3,xhArr:u3,Xi:p3,xi:f3,xlarr:h3,xlArr:d3,xmap:m3,xnis:g3,xodot:_3,Xopf:b3,xopf:k3,xoplus:x3,xotime:v3,xrarr:y3,xrArr:C3,Xscr:w3,xscr:A3,xsqcup:q3,xuplus:D3,xutri:E3,xvee:S3,xwedge:F3,Yacute:L3,yacute:T3,YAcy:R3,yacy:z3,Ycirc:I3,ycirc:B3,Ycy:N3,ycy:M3,yen:P3,Yfr:O3,yfr:U3,YIcy:V3,yicy:$3,Yopf:G3,yopf:j3,Yscr:H3,yscr:Z3,YUcy:J3,yucy:W3,yuml:Y3,Yuml:Q3,Zacute:K3,zacute:X3,Zcaron:nN,zcaron:tN,Zcy:rN,zcy:oN,Zdot:eN,zdot:sN,zeetrf:cN,ZeroWidthSpace:iN,Zeta:aN,zeta:lN,zfr:uN,Zfr:pN,ZHcy:fN,zhcy:hN,zigrarr:dN,zopf:mN,Zopf:gN,Zscr:_N,zscr:bN,zwj:kN,zwnj:xN};var At=vN,Tn=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,Z={},$n={};function yN(r){var n,t,o=$n[r];if(o)return o;for(o=$n[r]=[],n=0;n<128;n++)t=String.fromCharCode(n),/^[0-9a-z]$/i.test(t)?o.push(t):o.push("%"+("0"+n.toString(16).toUpperCase()).slice(-2));for(n=0;n"u"&&(t=!0),c=yN(n),o=0,e=r.length;o=55296&&s<=57343){if(s>=55296&&s<=56319&&o+1=56320&&i<=57343)){a+=encodeURIComponent(r[o]+r[o+1]),o++;continue}a+="%EF%BF%BD";continue}a+=encodeURIComponent(r[o])}return a}cn.defaultChars=";/?:@&=+$,-_.!~*'()#";cn.componentChars="-_.!~*'()";var CN=cn,Gn={};function wN(r){var n,t,o=Gn[r];if(o)return o;for(o=Gn[r]=[],n=0;n<128;n++)t=String.fromCharCode(n),o.push(t);for(n=0;n=55296&&u<=57343?p+="���":p+=String.fromCharCode(u),e+=6;continue}if((i&248)===240&&e+91114111?p+="����":(u-=65536,p+=String.fromCharCode(55296+(u>>10),56320+(u&1023))),e+=9;continue}p+="�"}return p})}an.defaultChars=";/?:@&=+$,#";an.componentChars="";var AN=an,qN=function(n){var t="";return t+=n.protocol||"",t+=n.slashes?"//":"",t+=n.auth?n.auth+"@":"",n.hostname&&n.hostname.indexOf(":")!==-1?t+="["+n.hostname+"]":t+=n.hostname||"",t+=n.port?":"+n.port:"",t+=n.pathname||"",t+=n.search||"",t+=n.hash||"",t};function en(){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 DN=/^([a-z0-9.+-]+:)/i,EN=/:[0-9]*$/,SN=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,FN=["<",">",'"',"`"," ","\r",` `," "],LN=["{","}","|","\\","^","`"].concat(FN),TN=["'"].concat(LN),jn=["%","/","?",";","#"].concat(TN),Hn=["/","?","#"],RN=255,Zn=/^[+a-z0-9A-Z_-]{0,63}$/,zN=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Jn={javascript:!0,"javascript:":!0},Wn={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function IN(r,n){if(r&&r instanceof en)return r;var t=new en;return t.parse(r,n),t}en.prototype.parse=function(r,n){var t,o,e,s,i,c=r;if(c=c.trim(),!n&&r.split("#").length===1){var a=SN.exec(c);if(a)return this.pathname=a[1],a[2]&&(this.search=a[2]),this}var l=DN.exec(c);if(l&&(l=l[0],e=l.toLowerCase(),this.protocol=l,c=c.substr(l.length)),(n||l||c.match(/^\/\/[^@\/]+@[^@\/]+/))&&(i=c.substr(0,2)==="//",i&&!(l&&Jn[l])&&(c=c.substr(2),this.slashes=!0)),!Jn[l]&&(i||l&&!Wn[l])){var u=-1;for(t=0;t127?k+="x":k+=v[m];if(!k.match(Zn)){var C=_.slice(0,t),w=_.slice(t+1),g=v.match(zN);g&&(C.push(g[1]),w.unshift(g[2])),w.length&&(c=w.join(".")+c),this.hostname=C.join(".");break}}}}this.hostname.length>RN&&(this.hostname=""),b&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var E=c.indexOf("#");E!==-1&&(this.hash=c.substr(E),c=c.slice(0,E));var S=c.indexOf("?");return S!==-1&&(this.search=c.substr(S),c=c.slice(0,S)),c&&(this.pathname=c),Wn[e]&&this.hostname&&!this.pathname&&(this.pathname=""),this};en.prototype.parseHost=function(r){var n=EN.exec(r);n&&(n=n[0],n!==":"&&(this.port=n.substr(1)),r=r.substr(0,r.length-n.length)),r&&(this.hostname=r)};var BN=IN;Z.encode=CN;Z.decode=AN;Z.format=qN;Z.parse=BN;var U={},gn,Yn;function qt(){return Yn||(Yn=1,gn=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/),gn}var _n,Qn;function Dt(){return Qn||(Qn=1,_n=/[\0-\x1F\x7F-\x9F]/),_n}var bn,Kn;function NN(){return Kn||(Kn=1,bn=/[\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]/),bn}var kn,Xn;function Et(){return Xn||(Xn=1,kn=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/),kn}var nt;function MN(){return nt||(nt=1,U.Any=qt(),U.Cc=Dt(),U.Cf=NN(),U.P=Tn,U.Z=Et()),U}(function(r){function n(d){return Object.prototype.toString.call(d)}function t(d){return n(d)==="[object String]"}var o=Object.prototype.hasOwnProperty;function e(d,A){return o.call(d,A)}function s(d){var A=Array.prototype.slice.call(arguments,1);return A.forEach(function(x){if(x){if(typeof x!="object")throw new TypeError(x+"must be object");Object.keys(x).forEach(function(P){d[P]=x[P]})}}),d}function i(d,A,x){return[].concat(d.slice(0,A),x,d.slice(A+1))}function c(d){return!(d>=55296&&d<=57343||d>=64976&&d<=65007||(d&65535)===65535||(d&65535)===65534||d>=0&&d<=8||d===11||d>=14&&d<=31||d>=127&&d<=159||d>1114111)}function a(d){if(d>65535){d-=65536;var A=55296+(d>>10),x=56320+(d&1023);return String.fromCharCode(A,x)}return String.fromCharCode(d)}var l=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,u=/&([a-z#][a-z0-9]{1,31});/gi,p=new RegExp(l.source+"|"+u.source,"gi"),f=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i,h=At;function b(d,A){var x;return e(h,A)?h[A]:A.charCodeAt(0)===35&&f.test(A)&&(x=A[1].toLowerCase()==="x"?parseInt(A.slice(2),16):parseInt(A.slice(1),10),c(x))?a(x):d}function _(d){return d.indexOf("\\")<0?d:d.replace(l,"$1")}function v(d){return d.indexOf("\\")<0&&d.indexOf("&")<0?d:d.replace(p,function(A,x,P){return x||b(A,P)})}var k=/[&<>"]/,m=/[&<>"]/g,y={"&":"&","<":"<",">":">",'"':"""};function C(d){return y[d]}function w(d){return k.test(d)?d.replace(m,C):d}var g=/[.?*+^$[\]\\(){}|-]/g;function E(d){return d.replace(g,"\\$&")}function S(d){switch(d){case 9:case 32:return!0}return!1}function M(d){if(d>=8192&&d<=8202)return!0;switch(d){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 D=Tn;function R(d){return D.test(d)}function G(d){switch(d){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 Y(d){return d=d.trim().replace(/\s+/g," "),"ẞ".toLowerCase()==="Ṿ"&&(d=d.replace(/ẞ/g,"ß")),d.toLowerCase().toUpperCase()}r.lib={},r.lib.mdurl=Z,r.lib.ucmicro=MN(),r.assign=s,r.isString=t,r.has=e,r.unescapeMd=_,r.unescapeAll=v,r.isValidEntityCode=c,r.fromCodePoint=a,r.escapeHtml=w,r.arrayReplaceAt=i,r.isSpace=S,r.isWhiteSpace=M,r.isMdAsciiPunct=G,r.isPunctChar=R,r.escapeRE=E,r.normalizeReference=Y})(q);var ln={},PN=function(n,t,o){var e,s,i,c,a=-1,l=n.posMax,u=n.pos;for(n.pos=t+1,e=1;n.pos32))return c;if(e===41){if(s===0)break;s--}i++}return t===i||s!==0||(c.str=tt(n.slice(t,i)),c.pos=i,c.ok=!0),c},UN=q.unescapeAll,VN=function(n,t,o){var e,s,i=0,c=t,a={ok:!1,pos:0,lines:0,str:""};if(c>=o||(s=n.charCodeAt(c),s!==34&&s!==39&&s!==40))return a;for(c++,s===40&&(s=41);c"+$(s.content)+""};B.code_block=function(r,n,t,o,e){var s=r[n];return""+$(r[n].content)+` `};B.fence=function(r,n,t,o,e){var s=r[n],i=s.info?GN(s.info).trim():"",c="",a="",l,u,p,f,h;return i&&(p=i.split(/(\s+)/g),c=p[0],a=p.slice(2).join("")),t.highlight?l=t.highlight(s.content,c,a)||$(s.content):l=$(s.content),l.indexOf("[t.image?(n(),o("img",{key:0,src:t.image},null,8,M)):y("",!0),c("h4",null,p(t.title),1),c("p",{class:"newsSummary",innerHTML:t.summary},null,8,B),c("p",F,p(`${_.updatedTimestamp}, ${t.source}`),1)]),_:1},8,["onClick"])}const b=f(x,[["render",L],["__scopeId","data-v-95eced2f"]]);const D={components:{Loader:N,FullShelf:C,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=e=>(k("data-v-a520cb40"),e=e(),I(),e),H={class:"padding-20"},A={class:"news"},J=U(()=>c("h1",null,"News",-1)),V={key:0,class:"fillPage"};function O(e,s,t,i,u,_){const d=r("Loader"),S=r("news-item-big"),v=r("full-shelf");return n(),o("div",H,[c("div",A,[J,u.news.length?y("",!0):(n(),o("div",V,[$(d)])),(n(!0),o(h,null,g(u.news,l=>(n(),m(v,{key:l.source,heading:l.source,class:"mt-10"},{default:w(()=>[(n(!0),o(h,null,g(l.items,a=>(n(),m(S,{key:a.url,href:a.link,image:a.image,source:a.source,summary:a.summary,title:a.title,updated:a.updated},null,8,["href","image","source","summary","title","updated"]))),128))]),_:2},1032,["heading"]))),128))])])}const E=f(D,[["render",O],["__scopeId","data-v-a520cb40"]]);export{E as default}; +import{F as C}from"./FullShelf-b2b7ffe5.js";import{_ as f,C as T,f as r,o as n,i as m,w,c as o,d as y,a as c,t as p,L as N,g as $,F as h,h as g,l as k,m as I}from"./index-4a15a213.js";const x={name:"NewsItemBig",components:{Card:T},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}},M=["src"],B=["innerHTML"],F={class:"small"};function L(e,s,t,i,u,_){const d=r("Card");return n(),m(d,{class:"p-4 col-span-2 cursor-pointer","with-hover":"",onClick:_.redirect},{default:w(()=>[t.image?(n(),o("img",{key:0,src:t.image},null,8,M)):y("",!0),c("h4",null,p(t.title),1),c("p",{class:"newsSummary",innerHTML:t.summary},null,8,B),c("p",F,p(`${_.updatedTimestamp}, ${t.source}`),1)]),_:1},8,["onClick"])}const b=f(x,[["render",L],["__scopeId","data-v-95eced2f"]]);const D={components:{Loader:N,FullShelf:C,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=e=>(k("data-v-a520cb40"),e=e(),I(),e),H={class:"padding-20"},A={class:"news"},J=U(()=>c("h1",null,"News",-1)),V={key:0,class:"fillPage"};function O(e,s,t,i,u,_){const d=r("Loader"),S=r("news-item-big"),v=r("full-shelf");return n(),o("div",H,[c("div",A,[J,u.news.length?y("",!0):(n(),o("div",V,[$(d)])),(n(!0),o(h,null,g(u.news,l=>(n(),m(v,{key:l.source,heading:l.source,class:"mt-10"},{default:w(()=>[(n(!0),o(h,null,g(l.items,a=>(n(),m(S,{key:a.url,href:a.link,image:a.image,source:a.source,summary:a.summary,title:a.title,updated:a.updated},null,8,["href","image","source","summary","title","updated"]))),128))]),_:2},1032,["heading"]))),128))])])}const E=f(D,[["render",O],["__scopeId","data-v-a520cb40"]]);export{E as default}; diff --git a/src/ui/dist/assets/News-a755b729.js.gz b/src/ui/dist/assets/News-a755b729.js.gz new file mode 100644 index 00000000..efd94153 Binary files /dev/null and b/src/ui/dist/assets/News-a755b729.js.gz differ diff --git a/src/ui/dist/assets/NewsArticle-606fce7c.js.gz b/src/ui/dist/assets/NewsArticle-606fce7c.js.gz deleted file mode 100644 index fe69b36c..00000000 Binary files a/src/ui/dist/assets/NewsArticle-606fce7c.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/NewsArticle-606fce7c.js b/src/ui/dist/assets/NewsArticle-6976bfba.js similarity index 94% rename from src/ui/dist/assets/NewsArticle-606fce7c.js rename to src/ui/dist/assets/NewsArticle-6976bfba.js index 4e62b5df..611a7139 100644 --- a/src/ui/dist/assets/NewsArticle-606fce7c.js +++ b/src/ui/dist/assets/NewsArticle-6976bfba.js @@ -1 +1 @@ -import{_ as f,L as m,i as d,c,a as i,t as o,b as y,d as u,O as w,f as p,o as n}from"./index-a96016e0.js";import{E as k}from"./Error-2928541c.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"},v=["innerHTML"],g={class:"leading-tight headline"},x=["innerHTML"],T={key:0,class:"date"},N=["href"],A={key:1,class:"my-4"},H=["innerHTML"];function M(s,t,h,l,e,a){const r=p("Error"),_=p("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]=W=>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,v),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",T,[y(o(e.article.date)+", ",1),i("a",{href:e.article.href},o(e.article.href),9,N)])):u("",!0),e.article.body?(n(),c("hr",A)):u("",!0),i("div",{class:"body leading-relaxed text-md",innerHTML:e.article.body},null,8,H)],2)])):(n(),d(_,{key:1}))}const B=f(L,[["render",M],["__scopeId","data-v-32bc12c0"]]);export{B as default}; +import{_ as f,L as m,i as d,c,a as i,t as o,b as y,d as u,O as w,f as p,o as n}from"./index-4a15a213.js";import{E as k}from"./Error-e5e93467.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"},v=["innerHTML"],g={class:"leading-tight headline"},x=["innerHTML"],T={key:0,class:"date"},N=["href"],A={key:1,class:"my-4"},H=["innerHTML"];function M(s,t,h,l,e,a){const r=p("Error"),_=p("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]=W=>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,v),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",T,[y(o(e.article.date)+", ",1),i("a",{href:e.article.href},o(e.article.href),9,N)])):u("",!0),e.article.body?(n(),c("hr",A)):u("",!0),i("div",{class:"body leading-relaxed text-md",innerHTML:e.article.body},null,8,H)],2)])):(n(),d(_,{key:1}))}const B=f(L,[["render",M],["__scopeId","data-v-32bc12c0"]]);export{B as default}; diff --git a/src/ui/dist/assets/NewsArticle-6976bfba.js.gz b/src/ui/dist/assets/NewsArticle-6976bfba.js.gz new file mode 100644 index 00000000..cd57bdb9 Binary files /dev/null and b/src/ui/dist/assets/NewsArticle-6976bfba.js.gz differ diff --git a/src/ui/dist/assets/Normal-9226385f.js b/src/ui/dist/assets/Normal-9226385f.js new file mode 100644 index 00000000..33ace54f --- /dev/null +++ b/src/ui/dist/assets/Normal-9226385f.js @@ -0,0 +1 @@ +import{e as i,B as n,j as p,D as m,o as c,i as l}from"./index-4a15a213.js";import{T as d}from"./Template-96d3b86b.js";import"./PlaylistEntry-4f48a6f3.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-c5c8aeea.js";import"./FactCard-07fe2677.js";import"./gistClient-56b8a233.js";import"./Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js";const N=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{N as default}; diff --git a/src/ui/dist/assets/Normal-acd2f729.js b/src/ui/dist/assets/Normal-acd2f729.js deleted file mode 100644 index 217f15b3..00000000 --- a/src/ui/dist/assets/Normal-acd2f729.js +++ /dev/null @@ -1 +0,0 @@ -import{e as i,B as n,j as p,D as m,o as c,i as l}from"./index-a96016e0.js";import{T as d}from"./Template-d00bcc07.js";import"./PlaylistEntry-35a3078f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import"./playerInPicture-af203fdf.js";import"./vuedraggable.umd-31c73142.js";import"./FactCard-5b41eb1a.js";import"./gistClient-de41c06b.js";import"./Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js";const N=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{N as default}; diff --git a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js similarity index 86% rename from src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js rename to src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js index b5204ff4..2af5d255 100644 --- a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js +++ b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js @@ -1 +1 @@ -import{e as b,n as r,y as x,E as n,o as d,c as q,g as c,P as B,w as C,i as P,u as p,N as w,d as Q}from"./index-a96016e0.js";import{P as E}from"./PlaylistEntry-35a3078f.js";import{d as y}from"./vuedraggable.umd-31c73142.js";const T=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(),q("div",{key:0,ref_key:"playlistScroll",ref:i,class:"playlist"},[c(B),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(E,{id:"bplayer-entry-"+l.id,key:l.source,index:k,selected:t.value==l.id,song:l,"with-cover":"",onClick:I=>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{T as _}; +import{e as b,n as r,y as x,E as n,o as d,c as q,g as c,P as B,w as C,i as P,u as p,N as w,d as Q}from"./index-4a15a213.js";import{P as E}from"./PlaylistEntry-4f48a6f3.js";import{d as y}from"./vuedraggable.umd-c5c8aeea.js";const T=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(),q("div",{key:0,ref_key:"playlistScroll",ref:i,class:"playlist"},[c(B),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(E,{id:"bplayer-entry-"+l.id,key:l.source,index:k,selected:t.value==l.id,song:l,"with-cover":"",onClick:I=>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{T as _}; diff --git a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js.gz b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js.gz new file mode 100644 index 00000000..29f7dba4 Binary files /dev/null and b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js.gz differ diff --git a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js.gz b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js.gz deleted file mode 100644 index d57a048a..00000000 Binary files a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/PlaylistCard-200edd27.js.gz b/src/ui/dist/assets/PlaylistCard-200edd27.js.gz deleted file mode 100644 index 2b3dc197..00000000 Binary files a/src/ui/dist/assets/PlaylistCard-200edd27.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/PlaylistCard-200edd27.js b/src/ui/dist/assets/PlaylistCard-915b2cc1.js similarity index 97% rename from src/ui/dist/assets/PlaylistCard-200edd27.js rename to src/ui/dist/assets/PlaylistCard-915b2cc1.js index 856d1759..c1b9477c 100644 --- a/src/ui/dist/assets/PlaylistCard-200edd27.js +++ b/src/ui/dist/assets/PlaylistCard-915b2cc1.js @@ -1 +1 @@ -import{e as g,j as I,n as y,o as f,i as h,w,g as d,u as O,aq as $,aN as j,v as A,aO as D,a9 as N,a as u,ab as x,x as B,a6 as q,D as T,f as V,d as S,H as E,N as M,t as v,c as F,C as H,_ as W}from"./index-a96016e0.js";import{p as b}from"./playerInPicture-af203fdf.js";const z=u("br",null,null,-1),G=g({__name:"ImportSpotifyPlaylist",props:{playlist:{type:Object,required:!0}},setup(a,{expose:o}){const i=I(),e=a,n=y([{name:"playlist",type:"dropdown",required:!0,value:null,options:i.playlistsAsDropdown}]),r=y(null),c=y(null),s=y([]),p=async()=>{if(r.value.load(),s.value.length==0){const t=e.playlist.id==="liked"?"/api/spotify/tracks":`/api/spotify/playlists/${e.playlist.id}`,l=await fetch(t);s.value=await l.json()}r.value.show()},m=()=>{b("Spotify Playlist",e.playlist.name,e.playlist.href)},_=async t=>{if(t==="new"){const l=await B("classic",e.playlist.name,e.playlist.description,e.playlist.cover);return n.value[0].options=i.playlistsAsDropdown,n.value[0].value=l,l}return t},P=async(t,l=null)=>{s.value[t].added||(l??(l=c.value.toObject().playlist),l=await _(l),await x(l,s.value[t]),s.value[t].added=!0)},C=async()=>{let t=c.value.toObject().playlist;t=await _(t),s.value.forEach((l,k)=>{P(k,t)})};return o({show:p}),(t,l)=>(f(),h(N,{ref_key:"modal",ref:r,submit:{label:"Add All",icon:"add"},name:"Import Playlist",onClose:l[0]||(l[0]=k=>t.$emit("close")),onSubmit:C},{default:w(()=>[d(j,{cover:a.playlist.cover,icons:[{name:"share",onClick:()=>O($)(a.playlist.href)},{name:"play_arrow",onClick:m}],title:a.playlist.name},null,8,["cover","icons","title"]),d(A,{ref_key:"form",ref:c,options:n.value},null,8,["options"]),z,d(D,{songs:s.value,onAdd:P},null,8,["songs"])]),_:1},512))}}),J={class:"relative"},K={class:"title"},L={key:0,class:"material-symbols-rounded"},Q=g({__name:"PlaylistCard",props:{playlist:{type:Object,required:!0},isSpotify:{type:Boolean,default:!1}},setup(a){const o=a,i=q(),e=y(),n=T(()=>i.playlistPlayOrPauseIcon(o.playlist.id)),r=()=>{if(o.isSpotify){b(o.playlist.name,"Spotify",o.playlist.href);return}i.playlistId==o.playlist.id?i.playPause():i.loadPlaylist(o.playlist.id)},c=s=>{var p;console.log(o.isSpotify),o.isSpotify&&(s.preventDefault(),s.stopPropagation(),(p=e.value)==null||p.show(),console.log("showing",e.value))};return(s,p)=>{const m=V("router-link");return f(),h(m,{to:a.playlist.href,class:"no-underline"},{default:w(()=>[a.isSpotify?(f(),h(G,{key:0,ref_key:"importSpotify",ref:e,playlist:a.playlist},null,8,["playlist"])):S("",!0),d(H,{class:"home-playlist drop-shadow-md","with-hover":"",onClick:c},{default:w(()=>[u("div",J,[d(E,{src:a.playlist.cover,type:"playlist",name:a.playlist.name},null,8,["src","name"]),u("span",{class:"material-symbols-rounded ms-fill play",onClick:M(r,["stop","prevent"])},v(n.value),1)]),u("div",K,[a.playlist.type!="classic"?(f(),F("span",L,v(a.playlist.type=="smart"?"neurology":"bolt"),1)):S("",!0),u("h4",null,v(a.playlist.name),1)])]),_:1})]),_:1},8,["to"])}}});const X=W(Q,[["__scopeId","data-v-42da2a88"]]);export{X as P}; +import{e as g,j as I,n as y,o as f,i as h,w,g as d,u as O,aq as $,aN as j,v as A,aO as D,a9 as N,a as u,ab as x,x as B,a6 as q,D as T,f as V,d as S,H as E,N as M,t as v,c as F,C as H,_ as W}from"./index-4a15a213.js";import{p as b}from"./playerInPicture-af203fdf.js";const z=u("br",null,null,-1),G=g({__name:"ImportSpotifyPlaylist",props:{playlist:{type:Object,required:!0}},setup(a,{expose:o}){const i=I(),e=a,n=y([{name:"playlist",type:"dropdown",required:!0,value:null,options:i.playlistsAsDropdown}]),r=y(null),c=y(null),s=y([]),p=async()=>{if(r.value.load(),s.value.length==0){const t=e.playlist.id==="liked"?"/api/spotify/tracks":`/api/spotify/playlists/${e.playlist.id}`,l=await fetch(t);s.value=await l.json()}r.value.show()},m=()=>{b("Spotify Playlist",e.playlist.name,e.playlist.href)},_=async t=>{if(t==="new"){const l=await B("classic",e.playlist.name,e.playlist.description,e.playlist.cover);return n.value[0].options=i.playlistsAsDropdown,n.value[0].value=l,l}return t},P=async(t,l=null)=>{s.value[t].added||(l??(l=c.value.toObject().playlist),l=await _(l),await x(l,s.value[t]),s.value[t].added=!0)},C=async()=>{let t=c.value.toObject().playlist;t=await _(t),s.value.forEach((l,k)=>{P(k,t)})};return o({show:p}),(t,l)=>(f(),h(N,{ref_key:"modal",ref:r,submit:{label:"Add All",icon:"add"},name:"Import Playlist",onClose:l[0]||(l[0]=k=>t.$emit("close")),onSubmit:C},{default:w(()=>[d(j,{cover:a.playlist.cover,icons:[{name:"share",onClick:()=>O($)(a.playlist.href)},{name:"play_arrow",onClick:m}],title:a.playlist.name},null,8,["cover","icons","title"]),d(A,{ref_key:"form",ref:c,options:n.value},null,8,["options"]),z,d(D,{songs:s.value,onAdd:P},null,8,["songs"])]),_:1},512))}}),J={class:"relative"},K={class:"title"},L={key:0,class:"material-symbols-rounded"},Q=g({__name:"PlaylistCard",props:{playlist:{type:Object,required:!0},isSpotify:{type:Boolean,default:!1}},setup(a){const o=a,i=q(),e=y(),n=T(()=>i.playlistPlayOrPauseIcon(o.playlist.id)),r=()=>{if(o.isSpotify){b(o.playlist.name,"Spotify",o.playlist.href);return}i.playlistId==o.playlist.id?i.playPause():i.loadPlaylist(o.playlist.id)},c=s=>{var p;console.log(o.isSpotify),o.isSpotify&&(s.preventDefault(),s.stopPropagation(),(p=e.value)==null||p.show(),console.log("showing",e.value))};return(s,p)=>{const m=V("router-link");return f(),h(m,{to:a.playlist.href,class:"no-underline"},{default:w(()=>[a.isSpotify?(f(),h(G,{key:0,ref_key:"importSpotify",ref:e,playlist:a.playlist},null,8,["playlist"])):S("",!0),d(H,{class:"home-playlist drop-shadow-md","with-hover":"",onClick:c},{default:w(()=>[u("div",J,[d(E,{src:a.playlist.cover,type:"playlist",name:a.playlist.name},null,8,["src","name"]),u("span",{class:"material-symbols-rounded ms-fill play",onClick:M(r,["stop","prevent"])},v(n.value),1)]),u("div",K,[a.playlist.type!="classic"?(f(),F("span",L,v(a.playlist.type=="smart"?"neurology":"bolt"),1)):S("",!0),u("h4",null,v(a.playlist.name),1)])]),_:1})]),_:1},8,["to"])}}});const X=W(Q,[["__scopeId","data-v-42da2a88"]]);export{X as P}; diff --git a/src/ui/dist/assets/PlaylistCard-915b2cc1.js.gz b/src/ui/dist/assets/PlaylistCard-915b2cc1.js.gz new file mode 100644 index 00000000..e4403c37 Binary files /dev/null and b/src/ui/dist/assets/PlaylistCard-915b2cc1.js.gz differ diff --git a/src/ui/dist/assets/PlaylistEntry-35a3078f.js.gz b/src/ui/dist/assets/PlaylistEntry-35a3078f.js.gz deleted file mode 100644 index 90ef631d..00000000 Binary files a/src/ui/dist/assets/PlaylistEntry-35a3078f.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/PlaylistEntry-35a3078f.js b/src/ui/dist/assets/PlaylistEntry-4f48a6f3.js similarity index 98% rename from src/ui/dist/assets/PlaylistEntry-35a3078f.js rename to src/ui/dist/assets/PlaylistEntry-4f48a6f3.js index 5a3c2f64..4029d245 100644 --- a/src/ui/dist/assets/PlaylistEntry-35a3078f.js +++ b/src/ui/dist/assets/PlaylistEntry-4f48a6f3.js @@ -1 +1 @@ -import{e as H,j as W,D as w,n as B,f as h,ac as X,a2 as G,o as r,c as v,r as J,g as t,w as o,b as u,F as L,h as T,i as I,t as S,u as g,cL as Z,cM as ee,cN as te,d as N,aj as se,cO as oe,a as d,ab as ne,ar as ae,x as le,aF as ie,cP as de,ae as ue,aI as re,a6 as ce,cQ as me,O as j,H as ye,M as V,A as fe,K as ve,cR as ge,ai as pe,cS as _e,_ as xe}from"./index-a96016e0.js";import{_ as he}from"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import{p as we}from"./playerInPicture-af203fdf.js";const be=d("span",{class:"material-symbols-rounded"},"preview",-1),ke=d("span",{class:"material-symbols-rounded"},"search",-1),Se=d("span",{class:"material-symbols-rounded"},"queue_music",-1),$e=d("span",{class:"material-symbols-rounded"}," play_arrow ",-1),Ce=d("span",{class:"material-symbols-rounded"}," add_to_queue ",-1),qe=d("span",{class:"material-symbols-rounded"}," queue_play_next ",-1),Pe=d("span",{class:"material-symbols-rounded"},"delete",-1),Me=d("span",{class:"material-symbols-rounded"},"playlist_add",-1),Ae=d("span",{class:"material-symbols-rounded"},"edit",-1),De=d("span",{class:"material-symbols-rounded"},"file_download",-1),Ie=d("span",{class:"material-symbols-rounded"},"replay",-1),Ne=d("span",{class:"material-symbols-rounded"},"share",-1),Be=H({__name:"SongContext",props:{song:{type:Object,required:!0},playlistId:{type:String,required:!1,default:""}},emits:["update","edit"],setup(s,{expose:F,emit:E}){const i=W(),$=w(()=>i.playlists.filter(n=>n.type==="classic")),e=s,p=E,y=()=>{we(e.song.artist,e.song.title,e.song.source)},C=w(()=>{var n;return((n=i.playlists.find(a=>a.id===e.playlistId))==null?void 0:n.type)!=="classic"}),f=async n=>{var a;await ne(n,e.song),ae.addSuccess(e.song.title,`Added to ${(a=$.value.find(l=>l.id==n))==null?void 0:a.name}`,3e3),p("update")},q=async()=>{const n=await le("classic",e.song.title,e.song.artist,e.song.cover);await f(n),p("update")},P=async()=>{await ie(e.playlistId,e.song.id),p("update")},M=B(null),_=B(null),O=()=>{_.value.visible?A():m()},A=()=>{_.value.hide()},m=()=>{const n=M.value.getBoundingClientRect(),a={top:n.height+n.top+window.scrollY,left:n.width+n.left+window.scrollX};_.value.show(a)};F({show:m,toggle:O,hide:A});const b=w(()=>({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}`})),k=()=>{p("edit")},R=n=>{window.open(b.value[n]),k()},U=()=>{const n=de(e.song);ue(n,`${e.song.artist} - ${e.song.title}`)};return(n,a)=>{const l=h("v-contextmenu-item"),D=h("v-contextmenu-submenu"),x=h("v-contextmenu-divider"),Y=h("v-context-menu-divider"),z=h("v-contextmenu"),K=X("contextmenu");return G((r(),v("div",{ref_key:"box",ref:M},[J(n.$slots,"default"),t(z,{ref_key:"contextmenu",ref:_},{default:o(()=>[t(l,{onClick:y},{default:o(()=>[be,u(" Preview ")]),_:1}),t(l,null,{default:o(()=>[ke,t(D,{title:"Find source"},{default:o(()=>[(r(!0),v(L,null,T(Object.keys(b.value),c=>(r(),I(l,{key:c,onClick:Q=>R(c)},{default:o(()=>[u(S(c),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),t(x),t(l,null,{default:o(()=>[Se,t(D,{title:"Add to queue"},{default:o(()=>[t(l,{onClick:a[0]||(a[0]=()=>g(Z)(e.song.id))},{default:o(()=>[$e,u(" Play Now ")]),_:1}),t(l,{onClick:a[1]||(a[1]=()=>g(ee)(e.song.id))},{default:o(()=>[Ce,u(" Play Next ")]),_:1}),t(l,{onClick:a[2]||(a[2]=()=>g(te)(e.song.id))},{default:o(()=>[qe,u(" Play Last ")]),_:1})]),_:1})]),_:1}),t(x),t(Y),C.value?N("",!0):(r(),I(l,{key:0,onClick:P},{default:o(()=>[Pe,u(" Remove from this playlist ")]),_:1})),t(l,null,{default:o(()=>[Me,t(D,{title:"Add to playlist"},{default:o(()=>[t(l,{onClick:q},{default:o(()=>[u(" Add to new playlist ")]),_:1}),t(x),(r(!0),v(L,null,T($.value,c=>(r(),I(l,{key:c.id,onClick:Q=>f(c.id)},{default:o(()=>[u(S(c.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),t(x),t(l,{onClick:k},{default:o(()=>[Ae,u(" Edit ")]),_:1}),t(x),t(l,{onClick:a[3]||(a[3]=c=>g(se)(s.song.id))},{default:o(()=>[De,u(" Download ")]),_:1}),t(l,{onClick:a[4]||(a[4]=c=>g(oe)(s.song.id))},{default:o(()=>[Ie,u(" Uncache ")]),_:1}),t(x),t(l,null,{default:o(()=>[Ne,t(D,{title:"Export..."},{default:o(()=>[t(l,{onClick:a[5]||(a[5]=c=>U())},{default:o(()=>[u(" to file ")]),_:1})]),_:1})]),_:1})]),_:1},512)])),[[K,void 0,"contextmenu"]])}}}),Fe={key:0,class:"index text-right downloading"},Ee={key:2,class:"cover"},Oe={class:"artist-title"},je={class:"title"},Le={class:"artist"},Te={key:3,class:"album"},Ve={class:"duration text-center"},He=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(s,{emit:F}){const E=re(),i=s,$=F,e=ce(),p=w(()=>i.song.id==e.song.id),y=B(!1),C=()=>{i.song.favourite=!i.song.favourite,_e(i.song.id,i.song.favourite)},f=w(()=>i.playlistId==null?e.playlist.id:i.playlistId),q=async()=>{if(f.value=="track"){e.loadPlaylist("track",i.song.id);return}if(f.value=="artist"){await e.loadPlaylist("artist",i.artist),e.loadSong(null,i.index);return}if(f.value=="album"){await e.loadPlaylist("album",i.album),e.loadSong(null,i.index);return}e.loadSong(f.value,i.index)},P=B(null),M=()=>{P.value.show()},_=()=>{$("update")},O=w(()=>E.isSongDownloading(i.song.id));return(A,m)=>{const b=h("router-link");return r(),I(Be,{ref:"ctxMenu",liked:s.song.favourite,playlistId:f.value,song:s.song,onEdit:M,onLike:C,onUpdate:_},{default:o(()=>[t(he,{ref_key:"updatePopup",ref:P,song:s.song,onUpdate:m[0]||(m[0]=k=>A.$emit("update"))},null,8,["song"]),d("div",{class:j([{playing:p.value,selected:s.selected,hovering:y.value,withCover:s.withCover,withAlbum:s.withAlbum,withMore:s.withMore},"playlist-entry"]),onDblclick:q,onMouseenter:m[1]||(m[1]=k=>y.value=!0),onMouseleave:m[2]||(m[2]=k=>y.value=!1)},[O.value?(r(),v("div",Fe,[t(me)])):(r(),v("div",{key:1,class:j([{"material-symbols-rounded":y.value},"index text-right"]),onClick:q},S(y.value?"play_arrow":s.index+1),3)),s.withCover?(r(),v("div",Ee,[t(ye,{src:s.song.cover,type:"track"},null,8,["src"])])):N("",!0),d("div",Oe,[d("span",je,[t(b,{to:`/track/${g(fe)(s.song.id)}`,class:"linkOnHover"},{default:o(()=>[t(V,{text:s.song.title},null,8,["text"])]),_:1},8,["to"])]),d("span",Le,[t(ve,{artist:s.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),s.withAlbum&&!g(ge)?(r(),v("div",Te,[t(b,{to:s.song.album.href,class:"linkOnHover"},{default:o(()=>[t(V,{text:s.song.album.name},null,8,["text"])]),_:1},8,["to"])])):N("",!0),s.selected||y.value||s.song.favourite?(r(),v("div",{key:4,class:j([{favourite:s.song.favourite},"favourite-icon icon text-right material-symbols-rounded"]),onClick:C},S(s.song.favourite?"favorite":"heart_plus"),3)):N("",!0),d("div",Ve,S(g(pe)(s.song.duration)),1)],34)]),_:1},8,["liked","playlistId","song"])}}});const ze=xe(He,[["__scopeId","data-v-67cfb148"]]);export{ze as P}; +import{e as H,j as W,D as w,n as B,f as h,ac as X,a2 as G,o as r,c as v,r as J,g as t,w as o,b as u,F as L,h as T,i as I,t as S,u as g,cL as Z,cM as ee,cN as te,d as N,aj as se,cO as oe,a as d,ab as ne,ar as ae,x as le,aF as ie,cP as de,ae as ue,aI as re,a6 as ce,cQ as me,O as j,H as ye,M as V,A as fe,K as ve,cR as ge,ai as pe,cS as _e,_ as xe}from"./index-4a15a213.js";import{_ as he}from"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import{p as we}from"./playerInPicture-af203fdf.js";const be=d("span",{class:"material-symbols-rounded"},"preview",-1),ke=d("span",{class:"material-symbols-rounded"},"search",-1),Se=d("span",{class:"material-symbols-rounded"},"queue_music",-1),$e=d("span",{class:"material-symbols-rounded"}," play_arrow ",-1),Ce=d("span",{class:"material-symbols-rounded"}," add_to_queue ",-1),qe=d("span",{class:"material-symbols-rounded"}," queue_play_next ",-1),Pe=d("span",{class:"material-symbols-rounded"},"delete",-1),Me=d("span",{class:"material-symbols-rounded"},"playlist_add",-1),Ae=d("span",{class:"material-symbols-rounded"},"edit",-1),De=d("span",{class:"material-symbols-rounded"},"file_download",-1),Ie=d("span",{class:"material-symbols-rounded"},"replay",-1),Ne=d("span",{class:"material-symbols-rounded"},"share",-1),Be=H({__name:"SongContext",props:{song:{type:Object,required:!0},playlistId:{type:String,required:!1,default:""}},emits:["update","edit"],setup(s,{expose:F,emit:E}){const i=W(),$=w(()=>i.playlists.filter(n=>n.type==="classic")),e=s,p=E,y=()=>{we(e.song.artist,e.song.title,e.song.source)},C=w(()=>{var n;return((n=i.playlists.find(a=>a.id===e.playlistId))==null?void 0:n.type)!=="classic"}),f=async n=>{var a;await ne(n,e.song),ae.addSuccess(e.song.title,`Added to ${(a=$.value.find(l=>l.id==n))==null?void 0:a.name}`,3e3),p("update")},q=async()=>{const n=await le("classic",e.song.title,e.song.artist,e.song.cover);await f(n),p("update")},P=async()=>{await ie(e.playlistId,e.song.id),p("update")},M=B(null),_=B(null),O=()=>{_.value.visible?A():m()},A=()=>{_.value.hide()},m=()=>{const n=M.value.getBoundingClientRect(),a={top:n.height+n.top+window.scrollY,left:n.width+n.left+window.scrollX};_.value.show(a)};F({show:m,toggle:O,hide:A});const b=w(()=>({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}`})),k=()=>{p("edit")},R=n=>{window.open(b.value[n]),k()},U=()=>{const n=de(e.song);ue(n,`${e.song.artist} - ${e.song.title}`)};return(n,a)=>{const l=h("v-contextmenu-item"),D=h("v-contextmenu-submenu"),x=h("v-contextmenu-divider"),Y=h("v-context-menu-divider"),z=h("v-contextmenu"),K=X("contextmenu");return G((r(),v("div",{ref_key:"box",ref:M},[J(n.$slots,"default"),t(z,{ref_key:"contextmenu",ref:_},{default:o(()=>[t(l,{onClick:y},{default:o(()=>[be,u(" Preview ")]),_:1}),t(l,null,{default:o(()=>[ke,t(D,{title:"Find source"},{default:o(()=>[(r(!0),v(L,null,T(Object.keys(b.value),c=>(r(),I(l,{key:c,onClick:Q=>R(c)},{default:o(()=>[u(S(c),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),t(x),t(l,null,{default:o(()=>[Se,t(D,{title:"Add to queue"},{default:o(()=>[t(l,{onClick:a[0]||(a[0]=()=>g(Z)(e.song.id))},{default:o(()=>[$e,u(" Play Now ")]),_:1}),t(l,{onClick:a[1]||(a[1]=()=>g(ee)(e.song.id))},{default:o(()=>[Ce,u(" Play Next ")]),_:1}),t(l,{onClick:a[2]||(a[2]=()=>g(te)(e.song.id))},{default:o(()=>[qe,u(" Play Last ")]),_:1})]),_:1})]),_:1}),t(x),t(Y),C.value?N("",!0):(r(),I(l,{key:0,onClick:P},{default:o(()=>[Pe,u(" Remove from this playlist ")]),_:1})),t(l,null,{default:o(()=>[Me,t(D,{title:"Add to playlist"},{default:o(()=>[t(l,{onClick:q},{default:o(()=>[u(" Add to new playlist ")]),_:1}),t(x),(r(!0),v(L,null,T($.value,c=>(r(),I(l,{key:c.id,onClick:Q=>f(c.id)},{default:o(()=>[u(S(c.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1}),t(x),t(l,{onClick:k},{default:o(()=>[Ae,u(" Edit ")]),_:1}),t(x),t(l,{onClick:a[3]||(a[3]=c=>g(se)(s.song.id))},{default:o(()=>[De,u(" Download ")]),_:1}),t(l,{onClick:a[4]||(a[4]=c=>g(oe)(s.song.id))},{default:o(()=>[Ie,u(" Uncache ")]),_:1}),t(x),t(l,null,{default:o(()=>[Ne,t(D,{title:"Export..."},{default:o(()=>[t(l,{onClick:a[5]||(a[5]=c=>U())},{default:o(()=>[u(" to file ")]),_:1})]),_:1})]),_:1})]),_:1},512)])),[[K,void 0,"contextmenu"]])}}}),Fe={key:0,class:"index text-right downloading"},Ee={key:2,class:"cover"},Oe={class:"artist-title"},je={class:"title"},Le={class:"artist"},Te={key:3,class:"album"},Ve={class:"duration text-center"},He=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(s,{emit:F}){const E=re(),i=s,$=F,e=ce(),p=w(()=>i.song.id==e.song.id),y=B(!1),C=()=>{i.song.favourite=!i.song.favourite,_e(i.song.id,i.song.favourite)},f=w(()=>i.playlistId==null?e.playlist.id:i.playlistId),q=async()=>{if(f.value=="track"){e.loadPlaylist("track",i.song.id);return}if(f.value=="artist"){await e.loadPlaylist("artist",i.artist),e.loadSong(null,i.index);return}if(f.value=="album"){await e.loadPlaylist("album",i.album),e.loadSong(null,i.index);return}e.loadSong(f.value,i.index)},P=B(null),M=()=>{P.value.show()},_=()=>{$("update")},O=w(()=>E.isSongDownloading(i.song.id));return(A,m)=>{const b=h("router-link");return r(),I(Be,{ref:"ctxMenu",liked:s.song.favourite,playlistId:f.value,song:s.song,onEdit:M,onLike:C,onUpdate:_},{default:o(()=>[t(he,{ref_key:"updatePopup",ref:P,song:s.song,onUpdate:m[0]||(m[0]=k=>A.$emit("update"))},null,8,["song"]),d("div",{class:j([{playing:p.value,selected:s.selected,hovering:y.value,withCover:s.withCover,withAlbum:s.withAlbum,withMore:s.withMore},"playlist-entry"]),onDblclick:q,onMouseenter:m[1]||(m[1]=k=>y.value=!0),onMouseleave:m[2]||(m[2]=k=>y.value=!1)},[O.value?(r(),v("div",Fe,[t(me)])):(r(),v("div",{key:1,class:j([{"material-symbols-rounded":y.value},"index text-right"]),onClick:q},S(y.value?"play_arrow":s.index+1),3)),s.withCover?(r(),v("div",Ee,[t(ye,{src:s.song.cover,type:"track"},null,8,["src"])])):N("",!0),d("div",Oe,[d("span",je,[t(b,{to:`/track/${g(fe)(s.song.id)}`,class:"linkOnHover"},{default:o(()=>[t(V,{text:s.song.title},null,8,["text"])]),_:1},8,["to"])]),d("span",Le,[t(ve,{artist:s.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),s.withAlbum&&!g(ge)?(r(),v("div",Te,[t(b,{to:s.song.album.href,class:"linkOnHover"},{default:o(()=>[t(V,{text:s.song.album.name},null,8,["text"])]),_:1},8,["to"])])):N("",!0),s.selected||y.value||s.song.favourite?(r(),v("div",{key:4,class:j([{favourite:s.song.favourite},"favourite-icon icon text-right material-symbols-rounded"]),onClick:C},S(s.song.favourite?"favorite":"heart_plus"),3)):N("",!0),d("div",Ve,S(g(pe)(s.song.duration)),1)],34)]),_:1},8,["liked","playlistId","song"])}}});const ze=xe(He,[["__scopeId","data-v-67cfb148"]]);export{ze as P}; diff --git a/src/ui/dist/assets/PlaylistEntry-4f48a6f3.js.gz b/src/ui/dist/assets/PlaylistEntry-4f48a6f3.js.gz new file mode 100644 index 00000000..6a4b582c Binary files /dev/null and b/src/ui/dist/assets/PlaylistEntry-4f48a6f3.js.gz differ diff --git a/src/ui/dist/assets/Sports-0934b423.js.gz b/src/ui/dist/assets/Sports-0934b423.js.gz deleted file mode 100644 index 320d5cb9..00000000 Binary files a/src/ui/dist/assets/Sports-0934b423.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Sports-0934b423.js b/src/ui/dist/assets/Sports-47b2f775.js similarity index 97% rename from src/ui/dist/assets/Sports-0934b423.js rename to src/ui/dist/assets/Sports-47b2f775.js index 4add5729..b8b01d28 100644 --- a/src/ui/dist/assets/Sports-0934b423.js +++ b/src/ui/dist/assets/Sports-47b2f775.js @@ -1 +1 @@ -import{F as C}from"./FullShelf-26be5033.js";import{_ as k,C as D,f as v,o as p,i as w,w as M,a as r,t as _,O as A,Z as F,ar as N,c as m,g as b,F as S,h as y,d as O,l as V,m as B}from"./index-a96016e0.js";const j={name:"FootballItem",components:{Card:D},methods:{redirect(){window.open(this.oref)},remove(e){e.stopPropagation(),this.$emit("remove")}},props:{result:String,date:String,competition:String,href:String,oref:String,team1:String,team2:String,progress:String}},H={class:"wrapper topalign"},L={class:"wrapper"},J=["innerHTML"],P=["innerHTML"],U=["innerHTML"],W={class:"wrapper bottomalign"},$={class:"small"};function E(e,s,t,c,n,o){const h=v("Card");return p(),w(h,{class:"itemBig","with-hover":""},{default:M(()=>{var u;return[r("div",{class:"item",onClick:s[1]||(s[1]=(...i)=>o.redirect&&o.redirect(...i))},[r("div",H,[r("p",null,_(t.competition),1),r("p",{class:A([{accent:(u=t.progress)==null?void 0:u.includes("'")},"right progress"])},_(t.progress),3)]),r("div",L,[r("p",{class:"team",innerHTML:t.team1},null,8,J),r("h4",{class:"result",innerHTML:t.result},null,8,P),r("p",{class:"team",innerHTML:t.team2},null,8,U)]),r("div",W,[r("p",$,_(t.date)+", "+_(t.href),1),r("span",{class:"deleteIcon small material-icons-round",onClick:s[0]||(s[0]=(...i)=>o.remove&&o.remove(...i))},"clear")])])]}),_:1})}const K=k(j,[["render",E],["__scopeId","data-v-b3cf3eea"]]);const R={components:{TextInputWithIcon:F,FullShelf:C,FootballItem:K},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(e=>e.includes("cev")).map(e=>{let s=e;return e.includes("nex.tk")&&(s=e.split("/match/")[1]),{src:s,ref:e}})},notVolleyMatches(){return this.watchMatches.filter(e=>!e.includes("cev"))}},methods:{removeSource(e,s,t){this.watchMatches.splice(this.watchMatches.indexOf(e),1),this.sports[s].items.splice(t,1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},removeSourceD(e){this.watchMatches.splice(this.watchMatches.indexOf(e),1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},tryAddSource(){for(const e of this.supportedSources)if(this.sourceToAdd.startsWith(e)){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(e=>e.json()).then(e=>{this.sports=[];for(const s of e){const t=this.sports.findIndex(c=>c.sport==s.sport);t>=0?this.sports[t].items.push(s):this.sports.push({sport:s.sport,icon:s.sportIcon,items:[s]})}for(const s of this.sports)s.items.sort((t,c)=>{if(t.progress=t.progress.replace("Half time","45'"),c.progress=c.progress.replace("Half time","45'"),(t.progress.includes("Pens")||t.progress.includes("N/A"))&&(t.progress="Full time"),(c.progress.includes("Pens")||c.progress.includes("N/A"))&&(c.progress="Full time"),t.progress.includes("'")&&!c.progress.includes("'"))return-1;if(!t.progress.includes("'")&&c.progress.includes("'"))return 1;if(t.progress.includes("'")&&c.progress.includes("'")){const g=Number(t.progress.replace("'","").replace("+","")),x=Number(c.progress.replace("'","").replace("+",""));return gg.toISOString().split("T")[0];n=n.replace("Today",a(i)).split("/").reverse().join("-"),n=n.replace("Tomorrow",a(l)).split("/").reverse().join("-"),n=n.replace("Yesterday",a(d)).split("/").reverse().join("-"),o=o.replace("Today",a(i)).split("/").reverse().join("-"),o=o.replace("Tomorrow",a(l)).split("/").reverse().join("-"),o=o.replace("Yesterday",a(d)).split("/").reverse().join("-");let f=new Date(`${n}T${h}`.replace(" ","")),I=new Date(`${o}T${u}`.replace(" ",""));return f>I?-1:f==I?0:1})}),setTimeout(this.updateMatches,1e3*45))}}},T=e=>(V("data-v-e7921c74"),e=e(),B(),e),Y={class:"news"},z=T(()=>r("div",{class:"padding-20"},[r("h1",null,"Sports")],-1)),Z=T(()=>r("hr",null,null,-1)),q={class:"padding-20"},G={class:"small"},Q={class:"addWrapper"},X=T(()=>r("hr",null,null,-1)),ee=["src"],te=["onClick"];function se(e,s,t,c,n,o){const h=v("TextInputWithIcon"),u=v("football-item"),i=v("full-shelf");return p(),m("div",Y,[z,Z,r("div",q,[r("p",G," Supported urls: "+_(n.supportedSources.join("*, ")),1),r("div",Q,[b(h,{modelValue:n.sourceToAdd,"onUpdate:modelValue":s[0]||(s[0]=l=>n.sourceToAdd=l),icon:"link",onKeyup:e.enterText},null,8,["modelValue","onKeyup"]),r("span",{id:"addToPlaylist",class:"material-icons-outlined",onClick:s[1]||(s[1]=(...l)=>o.tryAddSource&&o.tryAddSource(...l))},"add_circle")]),X,(p(!0),m(S,null,y(n.sports,(l,d)=>(p(),w(i,{key:l.sport,heading:l.sport,icon:l.icon},{default:M(()=>[(p(!0),m(S,null,y(l.items,(a,f)=>(p(),w(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,f)},null,8,["competition","date","href","oref","progress","result","team1","team2","onRemove"]))),128))]),_:2},1032,["heading","icon"]))),128)),o.volleyMatches.length?(p(),w(i,{key:0,heading:"Volleyball",icon:"sports_volleyball"},{default:M(()=>[(p(!0),m(S,null,y(o.volleyMatches,(l,d)=>(p(),m("div",{key:d,class:"wrapIframe"},[r("iframe",{src:`https://cev-nex.tk/#/embed?match=${l.src}`},null,8,ee),r("span",{class:"deleteIcon small material-symbols-rounded",onClick:()=>o.removeSourceD(l.ref)},"clear",8,te)]))),128))]),_:1})):O("",!0)])])}const ae=k(R,[["render",se],["__scopeId","data-v-e7921c74"]]);export{ae as default}; +import{F as C}from"./FullShelf-b2b7ffe5.js";import{_ as k,C as D,f as v,o as p,i as w,w as M,a as r,t as _,O as A,Z as F,ar as N,c as m,g as b,F as S,h as y,d as O,l as V,m as B}from"./index-4a15a213.js";const j={name:"FootballItem",components:{Card:D},methods:{redirect(){window.open(this.oref)},remove(e){e.stopPropagation(),this.$emit("remove")}},props:{result:String,date:String,competition:String,href:String,oref:String,team1:String,team2:String,progress:String}},H={class:"wrapper topalign"},L={class:"wrapper"},J=["innerHTML"],P=["innerHTML"],U=["innerHTML"],W={class:"wrapper bottomalign"},$={class:"small"};function E(e,s,t,c,n,o){const h=v("Card");return p(),w(h,{class:"itemBig","with-hover":""},{default:M(()=>{var u;return[r("div",{class:"item",onClick:s[1]||(s[1]=(...i)=>o.redirect&&o.redirect(...i))},[r("div",H,[r("p",null,_(t.competition),1),r("p",{class:A([{accent:(u=t.progress)==null?void 0:u.includes("'")},"right progress"])},_(t.progress),3)]),r("div",L,[r("p",{class:"team",innerHTML:t.team1},null,8,J),r("h4",{class:"result",innerHTML:t.result},null,8,P),r("p",{class:"team",innerHTML:t.team2},null,8,U)]),r("div",W,[r("p",$,_(t.date)+", "+_(t.href),1),r("span",{class:"deleteIcon small material-icons-round",onClick:s[0]||(s[0]=(...i)=>o.remove&&o.remove(...i))},"clear")])])]}),_:1})}const K=k(j,[["render",E],["__scopeId","data-v-b3cf3eea"]]);const R={components:{TextInputWithIcon:F,FullShelf:C,FootballItem:K},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(e=>e.includes("cev")).map(e=>{let s=e;return e.includes("nex.tk")&&(s=e.split("/match/")[1]),{src:s,ref:e}})},notVolleyMatches(){return this.watchMatches.filter(e=>!e.includes("cev"))}},methods:{removeSource(e,s,t){this.watchMatches.splice(this.watchMatches.indexOf(e),1),this.sports[s].items.splice(t,1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},removeSourceD(e){this.watchMatches.splice(this.watchMatches.indexOf(e),1),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches))},tryAddSource(){for(const e of this.supportedSources)if(this.sourceToAdd.startsWith(e)){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(e=>e.json()).then(e=>{this.sports=[];for(const s of e){const t=this.sports.findIndex(c=>c.sport==s.sport);t>=0?this.sports[t].items.push(s):this.sports.push({sport:s.sport,icon:s.sportIcon,items:[s]})}for(const s of this.sports)s.items.sort((t,c)=>{if(t.progress=t.progress.replace("Half time","45'"),c.progress=c.progress.replace("Half time","45'"),(t.progress.includes("Pens")||t.progress.includes("N/A"))&&(t.progress="Full time"),(c.progress.includes("Pens")||c.progress.includes("N/A"))&&(c.progress="Full time"),t.progress.includes("'")&&!c.progress.includes("'"))return-1;if(!t.progress.includes("'")&&c.progress.includes("'"))return 1;if(t.progress.includes("'")&&c.progress.includes("'")){const g=Number(t.progress.replace("'","").replace("+","")),x=Number(c.progress.replace("'","").replace("+",""));return gg.toISOString().split("T")[0];n=n.replace("Today",a(i)).split("/").reverse().join("-"),n=n.replace("Tomorrow",a(l)).split("/").reverse().join("-"),n=n.replace("Yesterday",a(d)).split("/").reverse().join("-"),o=o.replace("Today",a(i)).split("/").reverse().join("-"),o=o.replace("Tomorrow",a(l)).split("/").reverse().join("-"),o=o.replace("Yesterday",a(d)).split("/").reverse().join("-");let f=new Date(`${n}T${h}`.replace(" ","")),I=new Date(`${o}T${u}`.replace(" ",""));return f>I?-1:f==I?0:1})}),setTimeout(this.updateMatches,1e3*45))}}},T=e=>(V("data-v-e7921c74"),e=e(),B(),e),Y={class:"news"},z=T(()=>r("div",{class:"padding-20"},[r("h1",null,"Sports")],-1)),Z=T(()=>r("hr",null,null,-1)),q={class:"padding-20"},G={class:"small"},Q={class:"addWrapper"},X=T(()=>r("hr",null,null,-1)),ee=["src"],te=["onClick"];function se(e,s,t,c,n,o){const h=v("TextInputWithIcon"),u=v("football-item"),i=v("full-shelf");return p(),m("div",Y,[z,Z,r("div",q,[r("p",G," Supported urls: "+_(n.supportedSources.join("*, ")),1),r("div",Q,[b(h,{modelValue:n.sourceToAdd,"onUpdate:modelValue":s[0]||(s[0]=l=>n.sourceToAdd=l),icon:"link",onKeyup:e.enterText},null,8,["modelValue","onKeyup"]),r("span",{id:"addToPlaylist",class:"material-icons-outlined",onClick:s[1]||(s[1]=(...l)=>o.tryAddSource&&o.tryAddSource(...l))},"add_circle")]),X,(p(!0),m(S,null,y(n.sports,(l,d)=>(p(),w(i,{key:l.sport,heading:l.sport,icon:l.icon},{default:M(()=>[(p(!0),m(S,null,y(l.items,(a,f)=>(p(),w(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,f)},null,8,["competition","date","href","oref","progress","result","team1","team2","onRemove"]))),128))]),_:2},1032,["heading","icon"]))),128)),o.volleyMatches.length?(p(),w(i,{key:0,heading:"Volleyball",icon:"sports_volleyball"},{default:M(()=>[(p(!0),m(S,null,y(o.volleyMatches,(l,d)=>(p(),m("div",{key:d,class:"wrapIframe"},[r("iframe",{src:`https://cev-nex.tk/#/embed?match=${l.src}`},null,8,ee),r("span",{class:"deleteIcon small material-symbols-rounded",onClick:()=>o.removeSourceD(l.ref)},"clear",8,te)]))),128))]),_:1})):O("",!0)])])}const ae=k(R,[["render",se],["__scopeId","data-v-e7921c74"]]);export{ae as default}; diff --git a/src/ui/dist/assets/Sports-47b2f775.js.gz b/src/ui/dist/assets/Sports-47b2f775.js.gz new file mode 100644 index 00000000..0b42a90e Binary files /dev/null and b/src/ui/dist/assets/Sports-47b2f775.js.gz differ diff --git a/src/ui/dist/assets/Template-d00bcc07.js b/src/ui/dist/assets/Template-96d3b86b.js similarity index 98% rename from src/ui/dist/assets/Template-d00bcc07.js rename to src/ui/dist/assets/Template-96d3b86b.js index 9e13b0e8..52d575dd 100644 --- a/src/ui/dist/assets/Template-d00bcc07.js +++ b/src/ui/dist/assets/Template-96d3b86b.js @@ -1 +1 @@ -import{e as H,n as g,E as L,D as q,y as ee,a1 as be,o as m,c as b,r as ue,a2 as W,a3 as ke,N as j,a4 as le,O as K,Q as de,_ as G,a as p,t as F,d as S,F as Y,h as ae,b as N,i as A,a5 as $e,a6 as ce,a7 as pe,g as w,P as ve,z as Ce,B as Pe,a8 as Se,w as V,v as Ve,a9 as me,A as Ie,aa as Me,ab as Te,u as E,I as se,j as te,q as ye,f as Q,ac as fe,a0 as Fe,ad as oe,ae as Oe,H as qe,C as ne,Z as Ae,Y as De,af as ie,l as _e,m as he,ag as Ue}from"./index-a96016e0.js";import{P as Be}from"./PlaylistEntry-35a3078f.js";import{d as Ee}from"./vuedraggable.umd-31c73142.js";import{F as Z}from"./FactCard-5b41eb1a.js";import{G as He}from"./gistClient-de41c06b.js";import{M as Ne,_ as Le}from"./Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js";const Re=t=>{const{search:f,artist:a,title:n,album:e,order:y,sort:i}=t;return(f==null?void 0:f.length)||(a==null?void 0:a.length)||(n==null?void 0:n.length)||(e==null?void 0:e.length)||y!="asc"||i!="index"},je=(t,f)=>{const{search:a,artist:n,title:e,album:y,sort:i}=f;return t.map(_=>{const o=a!=null&&a.length?_.title.toLowerCase().includes(a.toLowerCase())||_.artist.toLowerCase().includes(a.toLowerCase()):!0,h=n!=null&&n.length?n.includes(_.artist):!0,d=e!=null&&e.length?e.includes(_.title):!0,l=y!=null&&y.length?y.includes(_.album.name):!0;return{..._,show:o&&h&&d&&l,index:t.indexOf(_)}}).sort((_,o)=>{const h=_[i],d=o[i];return hd?1:0})},ze=t=>t.map(f=>({label:f.title,value:f.title})),Ge=t=>t.map(f=>({label:f.album.name,value:f.album.name})),Ye=t=>{const f=new Set;for(const a of t)for(const n of a.artist.split(", "))f.add(n);return Array.from(f).sort().map(a=>({label:a,value:a}))},We=["placeholder"],Ke=H({__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(t,{emit:f}){const a=t,n=g(a.modelValue);L(()=>a.modelValue,l=>n.value=l);const e=g(!1),y=f,i=g(null),_=()=>{a.locked||(e.value=!0,de(()=>{i.value&&i.value.focus()}))},o=q(()=>a.locked?!0:e.value?!1:n.value),h=l=>{n.value=l,y("change",l),y("update:modelValue",l)},d=()=>{i.value&&(i.value.style.height="auto",i.value.style.height=i.value.scrollHeight+"px")};return ee(()=>d()),be(()=>{e.value&&d()}),(l,s)=>(m(),b("div",{class:K(["editable-text",{outlined:!t.noOutline&&e.value}]),onDblclick:j(_,["stop"])},[o.value?ue(l.$slots,"default",{key:0},void 0,!0):W((m(),b("textarea",{key:1,ref_key:"area",ref:i,rows:"1","onUpdate:modelValue":s[0]||(s[0]=r=>n.value=r),onChange:s[1]||(s[1]=r=>h(r.target.value)),onInput:s[2]||(s[2]=r=>d()),onClick:s[3]||(s[3]=j(r=>e.value=!0,["stop"])),onKeydown:[s[4]||(s[4]=le(r=>e.value=!1,["enter"])),s[5]||(s[5]=le(r=>e.value=!1,["esc"]))],onBlur:s[6]||(s[6]=r=>e.value=!1),placeholder:t.placeholder},null,40,We)),[[ke,n.value]])],34))}});const re=G(Ke,[["__scopeId","data-v-f05f8e35"]]),Xe={class:"flex flex-row gap-2 items-center overflow-hidden"},Qe={key:0,class:"material-symbols-rounded ms-wght-200"},Ze={class:"selected-labels"},Je=["onClick"],et={class:"material-symbols-rounded"},tt=["onClick"],lt={class:"material-symbols-rounded"},at={key:0,class:"material-symbols-rounded"},st=H({__name:"MultiSelect",props:{modelValue:{type:Array,required:!0},options:{type:Array,required:!0},icon:{type:String,required:!1}},emits:["update:modelValue"],setup(t,{emit:f}){const a=t,n=g(a.modelValue),e=g(!1),y=f;L(a,d=>{n.value=d.modelValue},{deep:!0});const i=d=>{n.value.includes(d)?n.value=n.value.filter(l=>l!=d):n.value.push(d),y("update:modelValue",n.value),e.value=!1},_=q(()=>{const d=[];for(const l of n.value){const s=a.options.find(r=>r.value==l);s&&d.push(s.label)}return d}),o=g(null),h=g(null);return L(e,d=>{de(()=>{if(d){const l=o.value.getBoundingClientRect(),s=h.value.getBoundingClientRect(),r=s.top,c=s.bottom,v=window.innerHeight-c,k=s.width;o.value.style.width=k+"px",o.value.style.left=s.left+"px",v>l.height?(o.value.style.top=c+"px",o.value.style.bottom="auto"):(o.value.style.top="auto",o.value.style.bottom=r-l.height+"px")}})}),window.addEventListener("click",()=>{e.value=!1}),(d,l)=>(m(),b("div",{ref_key:"container",ref:h,class:"dropdown"},[p("div",{class:K([{expanded:e.value},"dropdown__selected"]),onClick:l[0]||(l[0]=j(s=>e.value=!e.value,["stop"]))},[p("div",Xe,[t.icon?(m(),b("span",Qe,F(t.icon),1)):S("",!0),p("div",Ze,[(m(!0),b(Y,null,ae(_.value,s=>(m(),b("span",{key:s,class:"selected-label"},[N(F(s)+" ",1),p("i",{class:"material-symbols-rounded",onClick:r=>i(s)}," close ",8,Je)]))),128))])]),p("i",et,F(e.value?"expand_less":"expand_more"),1)],2),(m(),A($e,{to:"#dropdown-target"},[e.value?(m(),b("div",{key:0,ref_key:"trueDropdown",ref:o,class:"dropdown__options"},[(m(!0),b(Y,null,ae(t.options,s=>(m(),b("div",{key:s.value,class:"dropdown__option",onClick:j(r=>i(s.value),["stop"])},[p("span",lt,F(s.icon),1),p("span",null,F(s.label),1),n.value.includes(s.value)?(m(),b("span",at,"check")):S("",!0)],8,tt))),128))],512)):S("",!0)]))],512))}});const J=G(st,[["__scopeId","data-v-65a2fc08"]]),ot={class:"upperWrapper"},nt={class:"font-black"},it={class:"padding-20 darkback"},rt=H({__name:"FixedPlaylistHeader",props:{accentColour:{type:String},playlist:{type:Object,required:!0}},setup(t){const f=ce(),a=t,n=q(()=>f.playlistPlayOrPauseIcon(a.playlist.id));return(e,y)=>(m(),b("div",{class:"fixedPlaylistHeader",style:Ce({"--colour":t.accentColour})},[t.playlist.cover?(m(),A(pe,{key:0,src:t.playlist.cover},null,8,["src"])):S("",!0),p("div",ot,[p("span",{id:"loadPlaylist",class:"material-symbols-rounded hideIfMobile ms-fill",onClick:y[0]||(y[0]=i=>this.$emit("loadPlaylist"))},F(n.value),1),p("h3",nt,F(t.playlist.name),1)]),p("div",it,[w(ve,{class:"fixedHeader hideIfMobile","with-album":"","with-more":""})])],4))}});const ut=G(rt,[["__scopeId","data-v-88f85c6b"]]),dt=H({__name:"AddNewSong",emits:["update","close"],setup(t,{expose:f,emit:a}){const n=Pe(),e=a,y={title:"",artist:"",artists:[],album:"",cover:"",source:"",href:""},i=async(r,c)=>{const v=Ie(String(new Date().getTime())),k=new FormData,U="."+c.name.split(".").pop();var P=c.slice(0,c.size,c.type),$=new File([P],v+U,{type:c.type});return k.append("file",$),await(await fetch(r,{method:"POST",body:k})).text()},_=g(null),o=g([{name:"source",type:"upload",accept:"audio/mp3",required:!0,onUpload:r=>{i("/api/config/tracks",r).then(c=>o.value.find(v=>v.name=="source").value=c)},onChange:async r=>{const c=await Se(r);o.value.find(v=>v.name==="title").value=c.title,o.value.find(v=>v.name==="artist").value=c.artist,o.value.find(v=>v.name==="album").value=c.album,o.value.find(v=>v.name==="cover").value=c.cover,o.value.find(v=>v.name==="source").value=c.source,_.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:r=>{i("/api/config/images",r).then(c=>o.value.find(v=>v.name=="cover").value=c)}}]),h=g(null),d=g(null),l=async()=>{if(h.value.show(),!navigator.clipboard)return;const r=await navigator.clipboard.readText();if(!Me(r))return;const c=o.value.find(v=>v.name==="source");c.value=r,c.onChange(r)},s=async r=>{const c=n.params.id;await Te(c,{...d.value.toObject(),metadata:_.value}),e("update")};return f({show:l,options:o}),(r,c)=>(m(),A(me,{ref_key:"modal",ref:h,submit:{label:"Add",icon:"add"},name:"Add Song",onClose:c[0]||(c[0]=v=>r.$emit("close")),onSubmit:s},{default:V(()=>[w(Ve,{ref_key:"form",ref:d,options:o.value},null,8,["options"])]),_:1},512))}}),ct=["innerHTML"],pt={class:"buttons w-full justify-end flex gap-2"},vt=H({__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(t,{expose:f,emit:a}){const n=t,e=a,y=g(null),i=new Ne;f({show:()=>{y.value.show()}});const o=()=>{n.closeOnNo&&y.value.hide(),e("no")};return(h,d)=>(m(),A(me,{ref_key:"modal",ref:y,name:t.title,onClose:d[1]||(d[1]=l=>h.$emit("close"))},{default:V(()=>[p("div",{class:"overflow-hidden",innerHTML:E(i).render(t.question)},null,8,ct),p("div",pt,[w(se,{type:"success",icon:"check",label:"Yes",onClick:d[0]||(d[0]=l=>h.$emit("yes"))}),w(se,{type:"danger",icon:"close",label:"No",onClick:o})])]),_:1},8,["name"]))}});const mt=p("span",{class:"material-symbols-rounded"},"edit",-1),yt=p("span",{class:"material-symbols-rounded"},"delete",-1),ft=p("span",{class:"material-symbols-rounded"},"share",-1),_t=H({__name:"PlaylistContext",props:{playlist:{type:Object,required:!0},canEdit:{type:Boolean,required:!1,default:!1}},setup(t,{expose:f}){const a=t,n=te(),e=ye(),y=g(null),i=g(null),_=g(""),o=g(null),h=g(null),d=g(""),l=g(""),s=($=null)=>{i.value.visible?r():c($)},r=()=>{i.value.hide()},c=($=null)=>{const T=y.value.getBoundingClientRect();if($){i.value.show({top:$.clientY,left:$.clientX});return}const I={top:T.height+T.top+window.scrollY,left:T.width+T.left+window.scrollX};i.value.show(I)};f({show:c,toggle:s,hide:r});const v=()=>{e.push(`/playlist/${a.playlist.id}/edit`)},k=async()=>{await Fe(a.playlist.id),await n.fetchPlaylists(),e.push("/")},U=async()=>{const $=await oe(a.playlist);Oe($,a.playlist.name)},P=async()=>{const $=await oe(a.playlist),T=`${a.playlist.name}.one.playlist`,I=await He.save({[T]:$},a.playlist.name,!0),R=I.files[T].raw_url,C=I.id,u=I.owner.login,D=R.split("/raw/")[1].split("/")[0],O=`gist:${u}:${C}:${D}`,M=btoa(O);_.value=`http://localhost:1234/import/${M}`,l.value=`Share this URL to import this playlist on another device: [${_.value}](${_.value})`,d.value="Share "+a.playlist.name,o.value.show()};return ee(()=>{document.addEventListener("click",r)}),($,T)=>{const I=Q("v-contextmenu-item"),z=Q("v-contextmenu-submenu"),R=Q("v-contextmenu"),C=fe("contextmenu");return W((m(),b("div",{ref_key:"box",ref:y},[ue($.$slots,"default"),w(Le,{ref_key:"markdownRef",ref:o,title:d.value,content:l.value,onClose:r},null,8,["title","content"]),w(vt,{ref_key:"confirmation",ref:h,title:"Delete Playlist",question:"Are you sure you want to delete this playlist?",onYes:k,onNo:r,"close-on-no":""},null,512),w(R,{ref_key:"contextmenu",ref:i},{default:V(()=>[t.canEdit?(m(),A(I,{key:0,onClick:v},{default:V(()=>[mt,N(" Edit ")]),_:1})):S("",!0),w(I,{onClick:T[0]||(T[0]=u=>h.value.show())},{default:V(()=>[yt,N(" Delete ")]),_:1}),w(I,null,{default:V(()=>[ft,w(z,{title:"Export..."},{default:V(()=>[w(I,{onClick:U},{default:V(()=>[N(" to file ")]),_:1}),w(I,{onClick:P},{default:V(()=>[N(" to GitHub Gists ")]),_:1})]),_:1})]),_:1})]),_:1},512)])),[[C,void 0,"contextmenu"]])}}}),ge=t=>(_e("data-v-9965483f"),t=t(),he(),t),ht={class:"upper relative"},gt={class:"track__info__details"},xt={class:"trac__info__details__normal"},wt={key:0,class:"flex flex-row items-center gap-2 playlist-type"},bt={class:"material-symbols-rounded"},kt={class:"flex flew-row items-center"},$t={class:"font-black text-5xl ml-4 w-full flex-1"},Ct={class:"text-muted"},Pt={class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},St=ge(()=>p("span",{class:"text-muted"},"Add a song",-1)),Vt=ge(()=>p("span",{class:"text-muted"},"More...",-1)),It={key:0,class:"filters mt-4"},Mt=H({__name:"PlaylistMeta",props:{playlist:{type:Object,required:!1},coverIcon:{type:String,required:!0}},setup(t,{expose:f}){var z,R;const a=t,n=g(),e=q(()=>a.playlist),y=g(!0);ye();const i=ce(),_=te(),o=g(((z=e.value)==null?void 0:z.name.trim())??""),h=g(((R=e.value)==null?void 0:R.description.trim())??""),d=()=>({sort:"index",order:"asc",search:"",title:[],artist:[],album:[]}),l=g(null),s=()=>{l.value={...d()}};s(),f({songFilters:l}),L(()=>e.value,()=>{var C,u;o.value=((C=e.value)==null?void 0:C.name.trim())??"",h.value=((u=e.value)==null?void 0:u.description.trim())??"",s()}),L([o,h],()=>{var u,D;if(o.value===((u=e.value)==null?void 0:u.name)&&h.value===((D=e.value)==null?void 0:D.description))return;const C={...e.value,name:o.value,description:h.value};ie(C),_.fetchPlaylists(e.value.id)});const r=(C,u)=>{y.value=C},c=q(()=>e.value.type==="classic"),v=q(()=>["smart"].includes(e.value.type)),k=[{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"}],U=q(()=>{let C=0,u=!1;if(!e.value.songs.length)return"N/A";for(const B of e.value.songs){u=u||B.duration<=0;const X=B.duration<=0?3*60:B.duration;C+=X}const D=C,O=Math.floor(D/60),M=Math.floor(O/60),x=u?"about ":"";return M?x+`${M} hr ${O-M*60} min`:O?x+`${O} min ${D-O*60} sec`:x+C+" sec"}),P=g(null),$=async C=>{const D=await(async(O,M)=>{const x=new FormData,B="."+M.name.split(".").pop();var X=M.slice(0,M.size,M.type),we=new File([X],a.playlist.name+B,{type:M.type});return x.append("file",we),await(await fetch(O,{method:"POST",body:x})).text()})("/api/config/images",P.value.files[0]);ie({...e.value,cover:D})},T=q(()=>i.playlistPlayOrPauseIcon(e.value.id)),I=()=>{i.playlistId===e.value.id?i.playPause():i.loadPlaylist(e.value.id)};return(C,u)=>{const D=fe("observe-visibility");return m(),A(_t,{ref_key:"contextmenu",ref:n,playlist:e.value,"can-edit":v.value},{default:V(()=>{var O,M;return[e.value?(m(),A(ut,{key:0,ref:"fixedHeading",class:K({hidden:y.value}),playlist:e.value,onLoadPlaylist:I},null,8,["class","playlist"])):S("",!0),w(dt,{ref:"addSongPopup",onUpdate:u[0]||(u[0]=x=>E(_).fetchPlaylists())},null,512),W((m(),b("div",ht,[w(qe,{placeholder:t.coverIcon,src:e.value.cover,class:"cover rounded-xl",type:"playlist",name:e.value.name,onClick:u[1]||(u[1]=x=>{var B;return(B=P.value)==null?void 0:B.click()})},null,8,["placeholder","src","name"]),v.value?S("",!0):(m(),b("input",{key:0,ref_key:"imgUpload",ref:P,type:"file",accept:"image/*",class:"hidden",onChange:$},null,544)),p("div",gt,[p("div",xt,[e.value.type!="classic"?(m(),b("div",wt,[p("span",bt,F(e.value.type=="smart"?"neurology":"bolt"),1),p("span",null,F(e.value.type)+" Playlist",1)])):S("",!0),p("div",kt,[p("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:I},F(T.value),1),p("h1",$t,[w(re,{modelValue:o.value,"onUpdate:modelValue":u[2]||(u[2]=x=>o.value=x)},{default:V(()=>[N(F(e.value.name),1)]),_:1},8,["modelValue"])])]),p("p",Ct,[w(re,{modelValue:h.value,"onUpdate:modelValue":u[3]||(u[3]=x=>h.value=x),placeholder:"No description"},{default:V(()=>[N(F(e.value.description),1)]),_:1},8,["modelValue"])])]),p("div",Pt,[w(Z,{"primary-text":(O=e.value.songs)==null?void 0:O.length,"secondary-text":((M=e.value.songs)==null?void 0:M.length)===1?"Song":"Songs",class:"w-full"},null,8,["primary-text","secondary-text"]),w(Z,{"primary-text":U.value,class:"w-full","secondary-text":"Total Duration"},null,8,["primary-text"]),e.value.plays?(m(),A(Z,{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:V(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:u[4]||(u[4]=x=>C.$refs.addSongPopup.show())}," add_circle "),St]),_: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:V(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:u[5]||(u[5]=j(x=>n.value.toggle(x),["prevent","stop"]))}," more_horiz "),Vt]),_:1})):S("",!0)]),e.value.songs?(m(),b("div",It,[w(Ae,{modelValue:l.value.search,"onUpdate:modelValue":u[6]||(u[6]=x=>l.value.search=x),icon:"search",placeholder:"Search"},null,8,["modelValue"]),w(J,{modelValue:l.value.title,"onUpdate:modelValue":u[7]||(u[7]=x=>l.value.title=x),options:E(ze)(e.value.songs),class:"multiselect",icon:"title",placeholder:"Title"},null,8,["modelValue","options"]),w(J,{modelValue:l.value.artist,"onUpdate:modelValue":u[8]||(u[8]=x=>l.value.artist=x),options:E(Ye)(e.value.songs),class:"multiselect",icon:"person",placeholder:"Artist"},null,8,["modelValue","options"]),w(J,{modelValue:l.value.album,"onUpdate:modelValue":u[9]||(u[9]=x=>l.value.album=x),options:E(Ge)(e.value.songs),class:"multiselect",icon:"album",placeholder:"Album"},null,8,["modelValue","options"]),w(De,{modelValue:l.value.sort,"onUpdate:modelValue":u[10]||(u[10]=x=>l.value.sort=x),options:k,icon:"filter_list"},null,8,["modelValue"]),p("span",{class:"cursor-pointer material-symbols-rounded ms-wght-100 text-5xl",onClick:u[11]||(u[11]=x=>l.value.order=l.value.order=="asc"?"desc":"asc")},F(l.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:s}," delete_sweep ")])):S("",!0)])])),[[D,r]])]}),_:1},8,["playlist","can-edit"])}}});const Tt=G(Mt,[["__scopeId","data-v-9965483f"]]),xe=t=>(_e("data-v-dfe44d69"),t=t(),he(),t),Ft={class:"playlist relative p-4"},Ot={key:0,class:"fill-page"},qt=xe(()=>p("h2",{class:"text-2xl text-center error"},"Playlist not found",-1)),At=[qt],Dt={key:1,class:"wrap"},Ut={class:"track__data"},Bt=xe(()=>p("hr",{class:"mb-4"},null,-1)),Et={key:1,class:"items"},Ht={key:2,class:"text-muted italic text-sm text-center mt-10"},Nt=H({__name:"Template",props:{id:{type:String,required:!0},coverIcon:{type:String,required:!1}},emits:["rearrange"],setup(t,{emit:f}){var c;const a=t,n=te(),e=q(()=>n.getPlaylistById(a.id)),y=g(),i=g(((c=e.value)==null?void 0:c.songs)??[]),_=g(null),o=q(()=>{var v;return((v=y.value)==null?void 0:v.songFilters)??{}});L([o,e],()=>{e.value&&h()},{deep:!0});const h=()=>{var v;i.value=je(((v=e.value)==null?void 0:v.songs)??[],o.value)};ee(()=>{h()}),L(e,()=>{h()});const d=q(()=>e.value.type==="classic"&&document.body.clientWidth>950),l=q(()=>e.value.type==="classic"),s=f,r=v=>{const k=v.moved;k&&s("rearrange",k.oldIndex,k.newIndex)};return(v,k)=>{var U;return m(),b(Y,null,[(U=e.value)!=null&&U.cover?(m(),A(pe,{key:0,placeholder:t.coverIcon,src:e.value.cover},null,8,["placeholder","src"])):S("",!0),p("div",Ft,[e.value?(m(),b("div",Dt,[p("div",Ut,[w(Tt,{ref_key:"playlistMeta",ref:y,playlist:e.value,coverIcon:t.coverIcon},null,8,["playlist","coverIcon"]),i.value.length?(m(),b(Y,{key:0},[w(ve,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),Bt],64)):S("",!0),i.value.length?(m(),b("div",Et,[i.value.length?(m(),A(E(Ee),{key:t.id,modelValue:i.value,"onUpdate:modelValue":k[1]||(k[1]=P=>i.value=P),class:K([o.value.order=="asc"?"flex-col":"flex-col-reverse","flex"]),disabled:E(Re)(o.value)||!d.value,"item-key":"id",onChange:r,onDragover:k[2]||(k[2]=j(()=>{},["stop"]))},{item:V(({element:P})=>[W(w(Be,{index:e.value.songs.findIndex($=>$.source==P.source),"playlist-id":t.id,selected:_.value==P.id,song:P,"with-album":"","with-cover":"","with-more":"",onClick:$=>_.value==P.id?_.value=-1:_.value=P.id,onUpdate:k[0]||(k[0]=$=>E(n).fetchPlaylists())},null,8,["index","playlist-id","selected","song","onClick"]),[[Ue,P.show]])]),_:1},8,["modelValue","class","disabled"])):S("",!0)])):l.value?(m(),b("p",Ht," No songs. Add some! ")):S("",!0)])])):(m(),b("div",Ot,At))])],64)}}});const Kt=G(Nt,[["__scopeId","data-v-dfe44d69"]]);export{Kt as T}; +import{e as H,n as g,E as L,D as q,y as ee,a1 as be,o as m,c as b,r as ue,a2 as W,a3 as ke,N as j,a4 as le,O as K,Q as de,_ as G,a as p,t as F,d as S,F as Y,h as ae,b as N,i as A,a5 as $e,a6 as ce,a7 as pe,g as w,P as ve,z as Ce,B as Pe,a8 as Se,w as V,v as Ve,a9 as me,A as Ie,aa as Me,ab as Te,u as E,I as se,j as te,q as ye,f as Q,ac as fe,a0 as Fe,ad as oe,ae as Oe,H as qe,C as ne,Z as Ae,Y as De,af as ie,l as _e,m as he,ag as Ue}from"./index-4a15a213.js";import{P as Be}from"./PlaylistEntry-4f48a6f3.js";import{d as Ee}from"./vuedraggable.umd-c5c8aeea.js";import{F as Z}from"./FactCard-07fe2677.js";import{G as He}from"./gistClient-56b8a233.js";import{M as Ne,_ as Le}from"./Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js";const Re=t=>{const{search:f,artist:a,title:n,album:e,order:y,sort:i}=t;return(f==null?void 0:f.length)||(a==null?void 0:a.length)||(n==null?void 0:n.length)||(e==null?void 0:e.length)||y!="asc"||i!="index"},je=(t,f)=>{const{search:a,artist:n,title:e,album:y,sort:i}=f;return t.map(_=>{const o=a!=null&&a.length?_.title.toLowerCase().includes(a.toLowerCase())||_.artist.toLowerCase().includes(a.toLowerCase()):!0,h=n!=null&&n.length?n.includes(_.artist):!0,d=e!=null&&e.length?e.includes(_.title):!0,l=y!=null&&y.length?y.includes(_.album.name):!0;return{..._,show:o&&h&&d&&l,index:t.indexOf(_)}}).sort((_,o)=>{const h=_[i],d=o[i];return hd?1:0})},ze=t=>t.map(f=>({label:f.title,value:f.title})),Ge=t=>t.map(f=>({label:f.album.name,value:f.album.name})),Ye=t=>{const f=new Set;for(const a of t)for(const n of a.artist.split(", "))f.add(n);return Array.from(f).sort().map(a=>({label:a,value:a}))},We=["placeholder"],Ke=H({__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(t,{emit:f}){const a=t,n=g(a.modelValue);L(()=>a.modelValue,l=>n.value=l);const e=g(!1),y=f,i=g(null),_=()=>{a.locked||(e.value=!0,de(()=>{i.value&&i.value.focus()}))},o=q(()=>a.locked?!0:e.value?!1:n.value),h=l=>{n.value=l,y("change",l),y("update:modelValue",l)},d=()=>{i.value&&(i.value.style.height="auto",i.value.style.height=i.value.scrollHeight+"px")};return ee(()=>d()),be(()=>{e.value&&d()}),(l,s)=>(m(),b("div",{class:K(["editable-text",{outlined:!t.noOutline&&e.value}]),onDblclick:j(_,["stop"])},[o.value?ue(l.$slots,"default",{key:0},void 0,!0):W((m(),b("textarea",{key:1,ref_key:"area",ref:i,rows:"1","onUpdate:modelValue":s[0]||(s[0]=r=>n.value=r),onChange:s[1]||(s[1]=r=>h(r.target.value)),onInput:s[2]||(s[2]=r=>d()),onClick:s[3]||(s[3]=j(r=>e.value=!0,["stop"])),onKeydown:[s[4]||(s[4]=le(r=>e.value=!1,["enter"])),s[5]||(s[5]=le(r=>e.value=!1,["esc"]))],onBlur:s[6]||(s[6]=r=>e.value=!1),placeholder:t.placeholder},null,40,We)),[[ke,n.value]])],34))}});const re=G(Ke,[["__scopeId","data-v-f05f8e35"]]),Xe={class:"flex flex-row gap-2 items-center overflow-hidden"},Qe={key:0,class:"material-symbols-rounded ms-wght-200"},Ze={class:"selected-labels"},Je=["onClick"],et={class:"material-symbols-rounded"},tt=["onClick"],lt={class:"material-symbols-rounded"},at={key:0,class:"material-symbols-rounded"},st=H({__name:"MultiSelect",props:{modelValue:{type:Array,required:!0},options:{type:Array,required:!0},icon:{type:String,required:!1}},emits:["update:modelValue"],setup(t,{emit:f}){const a=t,n=g(a.modelValue),e=g(!1),y=f;L(a,d=>{n.value=d.modelValue},{deep:!0});const i=d=>{n.value.includes(d)?n.value=n.value.filter(l=>l!=d):n.value.push(d),y("update:modelValue",n.value),e.value=!1},_=q(()=>{const d=[];for(const l of n.value){const s=a.options.find(r=>r.value==l);s&&d.push(s.label)}return d}),o=g(null),h=g(null);return L(e,d=>{de(()=>{if(d){const l=o.value.getBoundingClientRect(),s=h.value.getBoundingClientRect(),r=s.top,c=s.bottom,v=window.innerHeight-c,k=s.width;o.value.style.width=k+"px",o.value.style.left=s.left+"px",v>l.height?(o.value.style.top=c+"px",o.value.style.bottom="auto"):(o.value.style.top="auto",o.value.style.bottom=r-l.height+"px")}})}),window.addEventListener("click",()=>{e.value=!1}),(d,l)=>(m(),b("div",{ref_key:"container",ref:h,class:"dropdown"},[p("div",{class:K([{expanded:e.value},"dropdown__selected"]),onClick:l[0]||(l[0]=j(s=>e.value=!e.value,["stop"]))},[p("div",Xe,[t.icon?(m(),b("span",Qe,F(t.icon),1)):S("",!0),p("div",Ze,[(m(!0),b(Y,null,ae(_.value,s=>(m(),b("span",{key:s,class:"selected-label"},[N(F(s)+" ",1),p("i",{class:"material-symbols-rounded",onClick:r=>i(s)}," close ",8,Je)]))),128))])]),p("i",et,F(e.value?"expand_less":"expand_more"),1)],2),(m(),A($e,{to:"#dropdown-target"},[e.value?(m(),b("div",{key:0,ref_key:"trueDropdown",ref:o,class:"dropdown__options"},[(m(!0),b(Y,null,ae(t.options,s=>(m(),b("div",{key:s.value,class:"dropdown__option",onClick:j(r=>i(s.value),["stop"])},[p("span",lt,F(s.icon),1),p("span",null,F(s.label),1),n.value.includes(s.value)?(m(),b("span",at,"check")):S("",!0)],8,tt))),128))],512)):S("",!0)]))],512))}});const J=G(st,[["__scopeId","data-v-65a2fc08"]]),ot={class:"upperWrapper"},nt={class:"font-black"},it={class:"padding-20 darkback"},rt=H({__name:"FixedPlaylistHeader",props:{accentColour:{type:String},playlist:{type:Object,required:!0}},setup(t){const f=ce(),a=t,n=q(()=>f.playlistPlayOrPauseIcon(a.playlist.id));return(e,y)=>(m(),b("div",{class:"fixedPlaylistHeader",style:Ce({"--colour":t.accentColour})},[t.playlist.cover?(m(),A(pe,{key:0,src:t.playlist.cover},null,8,["src"])):S("",!0),p("div",ot,[p("span",{id:"loadPlaylist",class:"material-symbols-rounded hideIfMobile ms-fill",onClick:y[0]||(y[0]=i=>this.$emit("loadPlaylist"))},F(n.value),1),p("h3",nt,F(t.playlist.name),1)]),p("div",it,[w(ve,{class:"fixedHeader hideIfMobile","with-album":"","with-more":""})])],4))}});const ut=G(rt,[["__scopeId","data-v-88f85c6b"]]),dt=H({__name:"AddNewSong",emits:["update","close"],setup(t,{expose:f,emit:a}){const n=Pe(),e=a,y={title:"",artist:"",artists:[],album:"",cover:"",source:"",href:""},i=async(r,c)=>{const v=Ie(String(new Date().getTime())),k=new FormData,U="."+c.name.split(".").pop();var P=c.slice(0,c.size,c.type),$=new File([P],v+U,{type:c.type});return k.append("file",$),await(await fetch(r,{method:"POST",body:k})).text()},_=g(null),o=g([{name:"source",type:"upload",accept:"audio/mp3",required:!0,onUpload:r=>{i("/api/config/tracks",r).then(c=>o.value.find(v=>v.name=="source").value=c)},onChange:async r=>{const c=await Se(r);o.value.find(v=>v.name==="title").value=c.title,o.value.find(v=>v.name==="artist").value=c.artist,o.value.find(v=>v.name==="album").value=c.album,o.value.find(v=>v.name==="cover").value=c.cover,o.value.find(v=>v.name==="source").value=c.source,_.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:r=>{i("/api/config/images",r).then(c=>o.value.find(v=>v.name=="cover").value=c)}}]),h=g(null),d=g(null),l=async()=>{if(h.value.show(),!navigator.clipboard)return;const r=await navigator.clipboard.readText();if(!Me(r))return;const c=o.value.find(v=>v.name==="source");c.value=r,c.onChange(r)},s=async r=>{const c=n.params.id;await Te(c,{...d.value.toObject(),metadata:_.value}),e("update")};return f({show:l,options:o}),(r,c)=>(m(),A(me,{ref_key:"modal",ref:h,submit:{label:"Add",icon:"add"},name:"Add Song",onClose:c[0]||(c[0]=v=>r.$emit("close")),onSubmit:s},{default:V(()=>[w(Ve,{ref_key:"form",ref:d,options:o.value},null,8,["options"])]),_:1},512))}}),ct=["innerHTML"],pt={class:"buttons w-full justify-end flex gap-2"},vt=H({__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(t,{expose:f,emit:a}){const n=t,e=a,y=g(null),i=new Ne;f({show:()=>{y.value.show()}});const o=()=>{n.closeOnNo&&y.value.hide(),e("no")};return(h,d)=>(m(),A(me,{ref_key:"modal",ref:y,name:t.title,onClose:d[1]||(d[1]=l=>h.$emit("close"))},{default:V(()=>[p("div",{class:"overflow-hidden",innerHTML:E(i).render(t.question)},null,8,ct),p("div",pt,[w(se,{type:"success",icon:"check",label:"Yes",onClick:d[0]||(d[0]=l=>h.$emit("yes"))}),w(se,{type:"danger",icon:"close",label:"No",onClick:o})])]),_:1},8,["name"]))}});const mt=p("span",{class:"material-symbols-rounded"},"edit",-1),yt=p("span",{class:"material-symbols-rounded"},"delete",-1),ft=p("span",{class:"material-symbols-rounded"},"share",-1),_t=H({__name:"PlaylistContext",props:{playlist:{type:Object,required:!0},canEdit:{type:Boolean,required:!1,default:!1}},setup(t,{expose:f}){const a=t,n=te(),e=ye(),y=g(null),i=g(null),_=g(""),o=g(null),h=g(null),d=g(""),l=g(""),s=($=null)=>{i.value.visible?r():c($)},r=()=>{i.value.hide()},c=($=null)=>{const T=y.value.getBoundingClientRect();if($){i.value.show({top:$.clientY,left:$.clientX});return}const I={top:T.height+T.top+window.scrollY,left:T.width+T.left+window.scrollX};i.value.show(I)};f({show:c,toggle:s,hide:r});const v=()=>{e.push(`/playlist/${a.playlist.id}/edit`)},k=async()=>{await Fe(a.playlist.id),await n.fetchPlaylists(),e.push("/")},U=async()=>{const $=await oe(a.playlist);Oe($,a.playlist.name)},P=async()=>{const $=await oe(a.playlist),T=`${a.playlist.name}.one.playlist`,I=await He.save({[T]:$},a.playlist.name,!0),R=I.files[T].raw_url,C=I.id,u=I.owner.login,D=R.split("/raw/")[1].split("/")[0],O=`gist:${u}:${C}:${D}`,M=btoa(O);_.value=`http://localhost:1234/import/${M}`,l.value=`Share this URL to import this playlist on another device: [${_.value}](${_.value})`,d.value="Share "+a.playlist.name,o.value.show()};return ee(()=>{document.addEventListener("click",r)}),($,T)=>{const I=Q("v-contextmenu-item"),z=Q("v-contextmenu-submenu"),R=Q("v-contextmenu"),C=fe("contextmenu");return W((m(),b("div",{ref_key:"box",ref:y},[ue($.$slots,"default"),w(Le,{ref_key:"markdownRef",ref:o,title:d.value,content:l.value,onClose:r},null,8,["title","content"]),w(vt,{ref_key:"confirmation",ref:h,title:"Delete Playlist",question:"Are you sure you want to delete this playlist?",onYes:k,onNo:r,"close-on-no":""},null,512),w(R,{ref_key:"contextmenu",ref:i},{default:V(()=>[t.canEdit?(m(),A(I,{key:0,onClick:v},{default:V(()=>[mt,N(" Edit ")]),_:1})):S("",!0),w(I,{onClick:T[0]||(T[0]=u=>h.value.show())},{default:V(()=>[yt,N(" Delete ")]),_:1}),w(I,null,{default:V(()=>[ft,w(z,{title:"Export..."},{default:V(()=>[w(I,{onClick:U},{default:V(()=>[N(" to file ")]),_:1}),w(I,{onClick:P},{default:V(()=>[N(" to GitHub Gists ")]),_:1})]),_:1})]),_:1})]),_:1},512)])),[[C,void 0,"contextmenu"]])}}}),ge=t=>(_e("data-v-9965483f"),t=t(),he(),t),ht={class:"upper relative"},gt={class:"track__info__details"},xt={class:"trac__info__details__normal"},wt={key:0,class:"flex flex-row items-center gap-2 playlist-type"},bt={class:"material-symbols-rounded"},kt={class:"flex flew-row items-center"},$t={class:"font-black text-5xl ml-4 w-full flex-1"},Ct={class:"text-muted"},Pt={class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},St=ge(()=>p("span",{class:"text-muted"},"Add a song",-1)),Vt=ge(()=>p("span",{class:"text-muted"},"More...",-1)),It={key:0,class:"filters mt-4"},Mt=H({__name:"PlaylistMeta",props:{playlist:{type:Object,required:!1},coverIcon:{type:String,required:!0}},setup(t,{expose:f}){var z,R;const a=t,n=g(),e=q(()=>a.playlist),y=g(!0);ye();const i=ce(),_=te(),o=g(((z=e.value)==null?void 0:z.name.trim())??""),h=g(((R=e.value)==null?void 0:R.description.trim())??""),d=()=>({sort:"index",order:"asc",search:"",title:[],artist:[],album:[]}),l=g(null),s=()=>{l.value={...d()}};s(),f({songFilters:l}),L(()=>e.value,()=>{var C,u;o.value=((C=e.value)==null?void 0:C.name.trim())??"",h.value=((u=e.value)==null?void 0:u.description.trim())??"",s()}),L([o,h],()=>{var u,D;if(o.value===((u=e.value)==null?void 0:u.name)&&h.value===((D=e.value)==null?void 0:D.description))return;const C={...e.value,name:o.value,description:h.value};ie(C),_.fetchPlaylists(e.value.id)});const r=(C,u)=>{y.value=C},c=q(()=>e.value.type==="classic"),v=q(()=>["smart"].includes(e.value.type)),k=[{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"}],U=q(()=>{let C=0,u=!1;if(!e.value.songs.length)return"N/A";for(const B of e.value.songs){u=u||B.duration<=0;const X=B.duration<=0?3*60:B.duration;C+=X}const D=C,O=Math.floor(D/60),M=Math.floor(O/60),x=u?"about ":"";return M?x+`${M} hr ${O-M*60} min`:O?x+`${O} min ${D-O*60} sec`:x+C+" sec"}),P=g(null),$=async C=>{const D=await(async(O,M)=>{const x=new FormData,B="."+M.name.split(".").pop();var X=M.slice(0,M.size,M.type),we=new File([X],a.playlist.name+B,{type:M.type});return x.append("file",we),await(await fetch(O,{method:"POST",body:x})).text()})("/api/config/images",P.value.files[0]);ie({...e.value,cover:D})},T=q(()=>i.playlistPlayOrPauseIcon(e.value.id)),I=()=>{i.playlistId===e.value.id?i.playPause():i.loadPlaylist(e.value.id)};return(C,u)=>{const D=fe("observe-visibility");return m(),A(_t,{ref_key:"contextmenu",ref:n,playlist:e.value,"can-edit":v.value},{default:V(()=>{var O,M;return[e.value?(m(),A(ut,{key:0,ref:"fixedHeading",class:K({hidden:y.value}),playlist:e.value,onLoadPlaylist:I},null,8,["class","playlist"])):S("",!0),w(dt,{ref:"addSongPopup",onUpdate:u[0]||(u[0]=x=>E(_).fetchPlaylists())},null,512),W((m(),b("div",ht,[w(qe,{placeholder:t.coverIcon,src:e.value.cover,class:"cover rounded-xl",type:"playlist",name:e.value.name,onClick:u[1]||(u[1]=x=>{var B;return(B=P.value)==null?void 0:B.click()})},null,8,["placeholder","src","name"]),v.value?S("",!0):(m(),b("input",{key:0,ref_key:"imgUpload",ref:P,type:"file",accept:"image/*",class:"hidden",onChange:$},null,544)),p("div",gt,[p("div",xt,[e.value.type!="classic"?(m(),b("div",wt,[p("span",bt,F(e.value.type=="smart"?"neurology":"bolt"),1),p("span",null,F(e.value.type)+" Playlist",1)])):S("",!0),p("div",kt,[p("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:I},F(T.value),1),p("h1",$t,[w(re,{modelValue:o.value,"onUpdate:modelValue":u[2]||(u[2]=x=>o.value=x)},{default:V(()=>[N(F(e.value.name),1)]),_:1},8,["modelValue"])])]),p("p",Ct,[w(re,{modelValue:h.value,"onUpdate:modelValue":u[3]||(u[3]=x=>h.value=x),placeholder:"No description"},{default:V(()=>[N(F(e.value.description),1)]),_:1},8,["modelValue"])])]),p("div",Pt,[w(Z,{"primary-text":(O=e.value.songs)==null?void 0:O.length,"secondary-text":((M=e.value.songs)==null?void 0:M.length)===1?"Song":"Songs",class:"w-full"},null,8,["primary-text","secondary-text"]),w(Z,{"primary-text":U.value,class:"w-full","secondary-text":"Total Duration"},null,8,["primary-text"]),e.value.plays?(m(),A(Z,{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:V(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:u[4]||(u[4]=x=>C.$refs.addSongPopup.show())}," add_circle "),St]),_: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:V(()=>[p("span",{id:"addToPlaylist",class:"material-symbols-rounded ms-fill",onClick:u[5]||(u[5]=j(x=>n.value.toggle(x),["prevent","stop"]))}," more_horiz "),Vt]),_:1})):S("",!0)]),e.value.songs?(m(),b("div",It,[w(Ae,{modelValue:l.value.search,"onUpdate:modelValue":u[6]||(u[6]=x=>l.value.search=x),icon:"search",placeholder:"Search"},null,8,["modelValue"]),w(J,{modelValue:l.value.title,"onUpdate:modelValue":u[7]||(u[7]=x=>l.value.title=x),options:E(ze)(e.value.songs),class:"multiselect",icon:"title",placeholder:"Title"},null,8,["modelValue","options"]),w(J,{modelValue:l.value.artist,"onUpdate:modelValue":u[8]||(u[8]=x=>l.value.artist=x),options:E(Ye)(e.value.songs),class:"multiselect",icon:"person",placeholder:"Artist"},null,8,["modelValue","options"]),w(J,{modelValue:l.value.album,"onUpdate:modelValue":u[9]||(u[9]=x=>l.value.album=x),options:E(Ge)(e.value.songs),class:"multiselect",icon:"album",placeholder:"Album"},null,8,["modelValue","options"]),w(De,{modelValue:l.value.sort,"onUpdate:modelValue":u[10]||(u[10]=x=>l.value.sort=x),options:k,icon:"filter_list"},null,8,["modelValue"]),p("span",{class:"cursor-pointer material-symbols-rounded ms-wght-100 text-5xl",onClick:u[11]||(u[11]=x=>l.value.order=l.value.order=="asc"?"desc":"asc")},F(l.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:s}," delete_sweep ")])):S("",!0)])])),[[D,r]])]}),_:1},8,["playlist","can-edit"])}}});const Tt=G(Mt,[["__scopeId","data-v-9965483f"]]),xe=t=>(_e("data-v-dfe44d69"),t=t(),he(),t),Ft={class:"playlist relative p-4"},Ot={key:0,class:"fill-page"},qt=xe(()=>p("h2",{class:"text-2xl text-center error"},"Playlist not found",-1)),At=[qt],Dt={key:1,class:"wrap"},Ut={class:"track__data"},Bt=xe(()=>p("hr",{class:"mb-4"},null,-1)),Et={key:1,class:"items"},Ht={key:2,class:"text-muted italic text-sm text-center mt-10"},Nt=H({__name:"Template",props:{id:{type:String,required:!0},coverIcon:{type:String,required:!1}},emits:["rearrange"],setup(t,{emit:f}){var c;const a=t,n=te(),e=q(()=>n.getPlaylistById(a.id)),y=g(),i=g(((c=e.value)==null?void 0:c.songs)??[]),_=g(null),o=q(()=>{var v;return((v=y.value)==null?void 0:v.songFilters)??{}});L([o,e],()=>{e.value&&h()},{deep:!0});const h=()=>{var v;i.value=je(((v=e.value)==null?void 0:v.songs)??[],o.value)};ee(()=>{h()}),L(e,()=>{h()});const d=q(()=>e.value.type==="classic"&&document.body.clientWidth>950),l=q(()=>e.value.type==="classic"),s=f,r=v=>{const k=v.moved;k&&s("rearrange",k.oldIndex,k.newIndex)};return(v,k)=>{var U;return m(),b(Y,null,[(U=e.value)!=null&&U.cover?(m(),A(pe,{key:0,placeholder:t.coverIcon,src:e.value.cover},null,8,["placeholder","src"])):S("",!0),p("div",Ft,[e.value?(m(),b("div",Dt,[p("div",Ut,[w(Tt,{ref_key:"playlistMeta",ref:y,playlist:e.value,coverIcon:t.coverIcon},null,8,["playlist","coverIcon"]),i.value.length?(m(),b(Y,{key:0},[w(ve,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),Bt],64)):S("",!0),i.value.length?(m(),b("div",Et,[i.value.length?(m(),A(E(Ee),{key:t.id,modelValue:i.value,"onUpdate:modelValue":k[1]||(k[1]=P=>i.value=P),class:K([o.value.order=="asc"?"flex-col":"flex-col-reverse","flex"]),disabled:E(Re)(o.value)||!d.value,"item-key":"id",onChange:r,onDragover:k[2]||(k[2]=j(()=>{},["stop"]))},{item:V(({element:P})=>[W(w(Be,{index:e.value.songs.findIndex($=>$.source==P.source),"playlist-id":t.id,selected:_.value==P.id,song:P,"with-album":"","with-cover":"","with-more":"",onClick:$=>_.value==P.id?_.value=-1:_.value=P.id,onUpdate:k[0]||(k[0]=$=>E(n).fetchPlaylists())},null,8,["index","playlist-id","selected","song","onClick"]),[[Ue,P.show]])]),_:1},8,["modelValue","class","disabled"])):S("",!0)])):l.value?(m(),b("p",Ht," No songs. Add some! ")):S("",!0)])])):(m(),b("div",Ot,At))])],64)}}});const Kt=G(Nt,[["__scopeId","data-v-dfe44d69"]]);export{Kt as T}; diff --git a/src/ui/dist/assets/Template-96d3b86b.js.gz b/src/ui/dist/assets/Template-96d3b86b.js.gz new file mode 100644 index 00000000..efe94ef5 Binary files /dev/null and b/src/ui/dist/assets/Template-96d3b86b.js.gz differ diff --git a/src/ui/dist/assets/Template-d00bcc07.js.gz b/src/ui/dist/assets/Template-d00bcc07.js.gz deleted file mode 100644 index 10536fc8..00000000 Binary files a/src/ui/dist/assets/Template-d00bcc07.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Track-8198e691.js b/src/ui/dist/assets/Track-77a6581d.js similarity index 97% rename from src/ui/dist/assets/Track-8198e691.js rename to src/ui/dist/assets/Track-77a6581d.js index 5746c7d5..042c6f3b 100644 --- a/src/ui/dist/assets/Track-8198e691.js +++ b/src/ui/dist/assets/Track-77a6581d.js @@ -1 +1 @@ -import{e as U,n as m,E as B,y as j,o as a,c as _,_ as M,i as n,w as P,a as s,t as f,d as r,C as I,B as O,a6 as R,D as A,f as K,a7 as W,g as y,H as Z,O as T,K as G,b as q,u as k,F as $,ah as J,ai as Q,aj as X,ak as Y,Z as ee,h as D,al as ae,am as te,an as se,ao as le,ap as E,aq as oe,L as ne,l as ue,m as re}from"./index-a96016e0.js";import{F as b}from"./FactCard-5b41eb1a.js";import{_ as ie}from"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";import{s as de}from"./spotify-9bae3b48.js";const ce=["aria-valuemax","aria-valuenow"],pe=U({__name:"ProgressCircle",props:{max:{type:Number,required:!1,default:100},modelValue:{type:Number,required:!1,default:0},displayValue:{type:String,required:!0}},setup(u){const v=u,i=m(null),w=()=>{if(i.value){const d=v.modelValue/v.max*100;i.value.style.setProperty("--progress",`${d}%`),i.value.innerHTML=v.displayValue}};B(v,w,{deep:!0});const l=()=>{i.value&&(i.value.style.height=i.value.offsetWidth+"px")};return j(()=>{l(),w()}),window.addEventListener("resize",l),(d,x)=>(a(),_("div",{ref_key:"radialProgress",ref:i,"aria-valuemax":u.max,"aria-valuenow":u.modelValue,"aria-valuemin":"0",class:"radialProgress",role:"progressbar"},null,8,ce))}});const L=M(pe,[["__scopeId","data-v-6e1a8d6b"]]),_e={class:"material-symbols-rounded ms-fill"},ve={key:0,class:"text-muted"},me=U({__name:"ButtonCard",props:{icon:{type:String,required:!0},label:{type:String,required:!1}},setup(u){return(v,i)=>(a(),n(I,{class:"p-4 flex flex-col w-full items-center justify-center"},{default:P(()=>[s("span",_e,f(u.icon),1),u.label?(a(),_("span",ve,f(u.label),1)):r("",!0)]),_:1}))}});const N=M(me,[["__scopeId","data-v-98bfdf17"]]),H=u=>(ue("data-v-4d592b47"),u=u(),re(),u),fe={class:"track p-4"},ye={key:2},xe={class:"track__data"},he={class:"upper"},ke={class:"trac__info__details__normal"},ge={class:"text-secondary my-0 text-2xl font-bold"},be={class:"text-muted text-base ml-4 font-light"},we={class:"flex flew-row items-center"},Ce={class:"font-black text-5xl ml-4"},Ve={key:0,class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},$e={class:"spotify-infos mt-4"},Pe={class:"meta items-center"},Se={class:"text-muted"},Be={key:0,class:"material-symbols-rounded ms-fill"},Ie={class:"flex flex-row align-items"},Ue=H(()=>s("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),Me={class:"font-bold"},Te={class:"relative w-full mt-4"},qe={class:"spotify__features__circles"},De={class:"text-muted mb-0 text-center text-sm capitalize flex justify-center"},Ee={class:"material-symbols-rounded mr-2"},Le=H(()=>s("h2",{class:"!text-left"},"Similar Songs",-1)),Ne=U({__name:"Track",setup(u){const v=O(),i=R(),w=A(()=>v.params.hash),l=m(null),d=m(null),x=m("url"),e=m(null),C=m([]),S=m([]),g=m(!1),z={acousticness:"piano",danceability:"nightlife",energy:"electric_bolt",happiness:"mood",instrumentalness:"mic_off",liveness:"groups_2",speechiness:"mic",loudness:"volume_up"},V=async(c=null)=>{var o;l.value=null,e.value=null,C.value=[],l.value=await te(w.value),window.document.title=`${l.value.title} - reAudioPlayer One`,e.value=await se(l.value.id,!!c,c),d.value=`https://open.spotify.com/track/${e.value.spotify.id}`,x.value="link",g.value=((o=e.value.spotify.id)==null?void 0:o.length)==22,C.value=await le(l.value.id),S.value=[];for(let[p,t]of Object.entries(e.value.spotify.features))["key","mode","tempo","duration_ms","time_signature"].includes(p)||typeof t=="number"&&(p=p.replaceAll("_"," "),p=p.replace("valence","happiness"),p==="loudness"&&(t=60+t),S.value.push({key:p,value:t,icon:z[p]}))};j(V),B(v,()=>V(),{deep:!0}),B(d,()=>{var c,o;if(((o=(c=e.value)==null?void 0:c.spotify)==null?void 0:o.id)==E(d.value,"track")){x.value="link";return}x.value="save"});const F=()=>{if(x.value==="save"){const c=E(d.value,"track");if(!c)return;V(c);return}oe(d.value)};return(c,o)=>{const p=K("RouterLink");return a(),_($,null,[l.value?(a(),n(W,{key:0,src:l.value.cover,class:"-z-10"},null,8,["src"])):r("",!0),s("div",fe,[l.value?(a(),n(ie,{key:0,ref:"updatePopup",song:l.value,onUpdate:o[0]||(o[0]=()=>V())},null,8,["song"])):r("",!0),l.value?(a(),_("div",ye,[s("div",xe,[s("div",he,[y(Z,{src:l.value.cover,class:"max-w-sm rounded-xl"},null,8,["src"]),s("div",{class:T([{"justify-end":e.value,"justify-center":!e.value},"track__info__details flex flex-col"])},[s("div",ke,[s("h3",ge,[y(G,{artist:l.value.artist,class:"inline"},null,8,["artist"]),s("span",be,[y(p,{to:l.value.album.href,class:"linkOnHover"},{default:P(()=>[q(f(l.value.album.name),1)]),_:1},8,["to"])])]),s("div",we,[s("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:o[1]||(o[1]=t=>k(i).loadPlaylist("track",l.value.id))}," play_circle "),s("h1",Ce,f(l.value.title),1)])]),e.value&&e.value.spotify.features?(a(),_($,{key:0},[e.value&&e.value.spotify.features?(a(),_("div",Ve,[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"])):r("",!0),e.value?(a(),n(b,{key:1,"primary-text":k(J)(e.value),class:"w-full","secondary-text":"Camelot"},null,8,["primary-text"])):r("",!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"])):r("",!0),y(b,{"primary-text":k(Q)(l.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"])):r("",!0),y(N,{icon:"edit",label:"Edit",onClick:o[2]||(o[2]=t=>c.$refs.updatePopup.show())}),y(N,{icon:"download",label:"Download",onClick:o[3]||(o[3]=t=>k(X)(l.value.id))})])):r("",!0),s("div",$e,[s("div",Pe,[s("span",Se,f(k(Y)(e.value.spotify.releaseDate)),1),e.value.spotify.explicit?(a(),_("span",Be,"explicit")):r("",!0),s("span",Ie,[Ue,s("span",Me,f(e.value.spotify.popularity),1)])]),y(k(de),{class:T([{enabled:g.value},"spotify-enable"]),onClick:o[4]||(o[4]=t=>g.value=!g.value)},null,8,["class"]),g.value?(a(),n(ee,{key:0,modelValue:d.value,"onUpdate:modelValue":o[5]||(o[5]=t=>d.value=t),icon:x.value,onClick:F},null,8,["modelValue","icon"])):r("",!0)])],64)):r("",!0)],2)])]),s("div",Te,[s("div",qe,[(a(!0),_($,null,D(S.value,t=>(a(),n(I,{class:"p-2"},{default:P(()=>[t.key==="loudness"?(a(),n(L,{key:0,modelValue:t.value,"onUpdate:modelValue":h=>t.value=h,"display-value":Math.round(-60+t.value)+"dB",class:"circle",max:60},null,8,["modelValue","onUpdate:modelValue","display-value"])):(a(),n(L,{key:1,modelValue:t.value,"onUpdate:modelValue":h=>t.value=h,"display-value":Math.round(t.value*100)+"%",class:"circle",max:1},null,8,["modelValue","onUpdate:modelValue","display-value"])),s("p",De,[s("span",Ee,f(t.icon),1),q(" "+f(t.key),1)])]),_:2},1024))),256))])]),C.value.length?(a(),n(I,{key:0,class:"p-4 mt-4"},{default:P(()=>[Le,(a(!0),_($,null,D(C.value,(t,h)=>(a(),n(ae,{key:h,index:h,song:t,"can-import":"","cannot-add":"","with-album":"","with-cover":""},null,8,["index","song"]))),128))]),_:1})):r("",!0)])):(a(),n(ne,{key:1}))])],64)}}});const Oe=M(Ne,[["__scopeId","data-v-4d592b47"]]);export{Oe as default}; +import{e as U,n as m,E as B,y as j,o as a,c as _,_ as M,i as n,w as P,a as s,t as f,d as r,C as I,B as O,a6 as R,D as A,f as K,a7 as W,g as y,H as Z,O as T,K as G,b as q,u as k,F as $,ah as J,ai as Q,aj as X,ak as Y,Z as ee,h as D,al as ae,am as te,an as se,ao as le,ap as E,aq as oe,L as ne,l as ue,m as re}from"./index-4a15a213.js";import{F as b}from"./FactCard-07fe2677.js";import{_ as ie}from"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";import{s as de}from"./spotify-2bf3aeb7.js";const ce=["aria-valuemax","aria-valuenow"],pe=U({__name:"ProgressCircle",props:{max:{type:Number,required:!1,default:100},modelValue:{type:Number,required:!1,default:0},displayValue:{type:String,required:!0}},setup(u){const v=u,i=m(null),w=()=>{if(i.value){const d=v.modelValue/v.max*100;i.value.style.setProperty("--progress",`${d}%`),i.value.innerHTML=v.displayValue}};B(v,w,{deep:!0});const l=()=>{i.value&&(i.value.style.height=i.value.offsetWidth+"px")};return j(()=>{l(),w()}),window.addEventListener("resize",l),(d,x)=>(a(),_("div",{ref_key:"radialProgress",ref:i,"aria-valuemax":u.max,"aria-valuenow":u.modelValue,"aria-valuemin":"0",class:"radialProgress",role:"progressbar"},null,8,ce))}});const L=M(pe,[["__scopeId","data-v-6e1a8d6b"]]),_e={class:"material-symbols-rounded ms-fill"},ve={key:0,class:"text-muted"},me=U({__name:"ButtonCard",props:{icon:{type:String,required:!0},label:{type:String,required:!1}},setup(u){return(v,i)=>(a(),n(I,{class:"p-4 flex flex-col w-full items-center justify-center"},{default:P(()=>[s("span",_e,f(u.icon),1),u.label?(a(),_("span",ve,f(u.label),1)):r("",!0)]),_:1}))}});const N=M(me,[["__scopeId","data-v-98bfdf17"]]),H=u=>(ue("data-v-4d592b47"),u=u(),re(),u),fe={class:"track p-4"},ye={key:2},xe={class:"track__data"},he={class:"upper"},ke={class:"trac__info__details__normal"},ge={class:"text-secondary my-0 text-2xl font-bold"},be={class:"text-muted text-base ml-4 font-light"},we={class:"flex flew-row items-center"},Ce={class:"font-black text-5xl ml-4"},Ve={key:0,class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},$e={class:"spotify-infos mt-4"},Pe={class:"meta items-center"},Se={class:"text-muted"},Be={key:0,class:"material-symbols-rounded ms-fill"},Ie={class:"flex flex-row align-items"},Ue=H(()=>s("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),Me={class:"font-bold"},Te={class:"relative w-full mt-4"},qe={class:"spotify__features__circles"},De={class:"text-muted mb-0 text-center text-sm capitalize flex justify-center"},Ee={class:"material-symbols-rounded mr-2"},Le=H(()=>s("h2",{class:"!text-left"},"Similar Songs",-1)),Ne=U({__name:"Track",setup(u){const v=O(),i=R(),w=A(()=>v.params.hash),l=m(null),d=m(null),x=m("url"),e=m(null),C=m([]),S=m([]),g=m(!1),z={acousticness:"piano",danceability:"nightlife",energy:"electric_bolt",happiness:"mood",instrumentalness:"mic_off",liveness:"groups_2",speechiness:"mic",loudness:"volume_up"},V=async(c=null)=>{var o;l.value=null,e.value=null,C.value=[],l.value=await te(w.value),window.document.title=`${l.value.title} - reAudioPlayer One`,e.value=await se(l.value.id,!!c,c),d.value=`https://open.spotify.com/track/${e.value.spotify.id}`,x.value="link",g.value=((o=e.value.spotify.id)==null?void 0:o.length)==22,C.value=await le(l.value.id),S.value=[];for(let[p,t]of Object.entries(e.value.spotify.features))["key","mode","tempo","duration_ms","time_signature"].includes(p)||typeof t=="number"&&(p=p.replaceAll("_"," "),p=p.replace("valence","happiness"),p==="loudness"&&(t=60+t),S.value.push({key:p,value:t,icon:z[p]}))};j(V),B(v,()=>V(),{deep:!0}),B(d,()=>{var c,o;if(((o=(c=e.value)==null?void 0:c.spotify)==null?void 0:o.id)==E(d.value,"track")){x.value="link";return}x.value="save"});const F=()=>{if(x.value==="save"){const c=E(d.value,"track");if(!c)return;V(c);return}oe(d.value)};return(c,o)=>{const p=K("RouterLink");return a(),_($,null,[l.value?(a(),n(W,{key:0,src:l.value.cover,class:"-z-10"},null,8,["src"])):r("",!0),s("div",fe,[l.value?(a(),n(ie,{key:0,ref:"updatePopup",song:l.value,onUpdate:o[0]||(o[0]=()=>V())},null,8,["song"])):r("",!0),l.value?(a(),_("div",ye,[s("div",xe,[s("div",he,[y(Z,{src:l.value.cover,class:"max-w-sm rounded-xl"},null,8,["src"]),s("div",{class:T([{"justify-end":e.value,"justify-center":!e.value},"track__info__details flex flex-col"])},[s("div",ke,[s("h3",ge,[y(G,{artist:l.value.artist,class:"inline"},null,8,["artist"]),s("span",be,[y(p,{to:l.value.album.href,class:"linkOnHover"},{default:P(()=>[q(f(l.value.album.name),1)]),_:1},8,["to"])])]),s("div",we,[s("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:o[1]||(o[1]=t=>k(i).loadPlaylist("track",l.value.id))}," play_circle "),s("h1",Ce,f(l.value.title),1)])]),e.value&&e.value.spotify.features?(a(),_($,{key:0},[e.value&&e.value.spotify.features?(a(),_("div",Ve,[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"])):r("",!0),e.value?(a(),n(b,{key:1,"primary-text":k(J)(e.value),class:"w-full","secondary-text":"Camelot"},null,8,["primary-text"])):r("",!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"])):r("",!0),y(b,{"primary-text":k(Q)(l.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"])):r("",!0),y(N,{icon:"edit",label:"Edit",onClick:o[2]||(o[2]=t=>c.$refs.updatePopup.show())}),y(N,{icon:"download",label:"Download",onClick:o[3]||(o[3]=t=>k(X)(l.value.id))})])):r("",!0),s("div",$e,[s("div",Pe,[s("span",Se,f(k(Y)(e.value.spotify.releaseDate)),1),e.value.spotify.explicit?(a(),_("span",Be,"explicit")):r("",!0),s("span",Ie,[Ue,s("span",Me,f(e.value.spotify.popularity),1)])]),y(k(de),{class:T([{enabled:g.value},"spotify-enable"]),onClick:o[4]||(o[4]=t=>g.value=!g.value)},null,8,["class"]),g.value?(a(),n(ee,{key:0,modelValue:d.value,"onUpdate:modelValue":o[5]||(o[5]=t=>d.value=t),icon:x.value,onClick:F},null,8,["modelValue","icon"])):r("",!0)])],64)):r("",!0)],2)])]),s("div",Te,[s("div",qe,[(a(!0),_($,null,D(S.value,t=>(a(),n(I,{class:"p-2"},{default:P(()=>[t.key==="loudness"?(a(),n(L,{key:0,modelValue:t.value,"onUpdate:modelValue":h=>t.value=h,"display-value":Math.round(-60+t.value)+"dB",class:"circle",max:60},null,8,["modelValue","onUpdate:modelValue","display-value"])):(a(),n(L,{key:1,modelValue:t.value,"onUpdate:modelValue":h=>t.value=h,"display-value":Math.round(t.value*100)+"%",class:"circle",max:1},null,8,["modelValue","onUpdate:modelValue","display-value"])),s("p",De,[s("span",Ee,f(t.icon),1),q(" "+f(t.key),1)])]),_:2},1024))),256))])]),C.value.length?(a(),n(I,{key:0,class:"p-4 mt-4"},{default:P(()=>[Le,(a(!0),_($,null,D(C.value,(t,h)=>(a(),n(ae,{key:h,index:h,song:t,"can-import":"","cannot-add":"","with-album":"","with-cover":""},null,8,["index","song"]))),128))]),_:1})):r("",!0)])):(a(),n(ne,{key:1}))])],64)}}});const Oe=M(Ne,[["__scopeId","data-v-4d592b47"]]);export{Oe as default}; diff --git a/src/ui/dist/assets/Track-77a6581d.js.gz b/src/ui/dist/assets/Track-77a6581d.js.gz new file mode 100644 index 00000000..d7815288 Binary files /dev/null and b/src/ui/dist/assets/Track-77a6581d.js.gz differ diff --git a/src/ui/dist/assets/Track-8198e691.js.gz b/src/ui/dist/assets/Track-8198e691.js.gz deleted file mode 100644 index e2284a60..00000000 Binary files a/src/ui/dist/assets/Track-8198e691.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/TrackCompact-8cd47625.js b/src/ui/dist/assets/TrackCompact-28e1b8fb.js similarity index 97% rename from src/ui/dist/assets/TrackCompact-8cd47625.js rename to src/ui/dist/assets/TrackCompact-28e1b8fb.js index 69a31062..07ea15ea 100644 --- a/src/ui/dist/assets/TrackCompact-8cd47625.js +++ b/src/ui/dist/assets/TrackCompact-28e1b8fb.js @@ -1 +1 @@ -import{_ as T,q as B,A as D,n,E as H,D as N,az as i,f as z,o as r,c as b,i as d,J as A,d as p,aA as E,g as l,w as u,a,z as M,u as _,M as S,t as O,C as R,l as V,m as q}from"./index-a96016e0.js";const J=e=>(V("data-v-d34b4deb"),e=e(),q(),e),P={class:"home-track-compact-wrapper"},j=["src"],F=J(()=>a("div",{class:"play"},[a("span",{class:"material-symbols-rounded"},"play_arrow")],-1)),G={class:"info"},K={class:"title"},L=["href"],Q={class:"artist"},U={__name:"TrackCompact",props:{title:String,artist:String,cover:String,id:Number,href:String},emits:["play"],setup(e,{emit:C}){const t=e,w=C,x=B(),m=`/track/${D(String(t.id))}`,f=n(null),h=n(null),I=c=>{c.stopPropagation(),w("play")},$=()=>{var c,o;if(!((c=t==null?void 0:t.href)!=null&&c.includes("spotify.com"))){x.push(m);return}if((o=t==null?void 0:t.href)!=null&&o.includes("spotify.com/album/")){h.value.show();return}f.value.show()},s=n(t.cover);H(()=>t.cover,()=>{s.value=t.cover});const v=N(()=>i(s.value));return(c,o)=>{var y,g;const k=z("router-link");return r(),b("div",P,[(y=e.href)!=null&&y.includes("spotify.com/album/")?(r(),d(A,{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"])):p("",!0),(g=e.href)!=null&&g.includes("spotify.com/track/")?(r(),d(E,{key:1,ref_key:"addSong",ref:f,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"])):p("",!0),l(R,{class:"home-track-compact","with-hover":"",onClick:$},{default:u(()=>[a("div",{style:M({backgroundImage:`url(${_(i)(s.value)})`}),class:"cover",onClick:I},[a("img",{src:_(i)(s.value),class:"hidden",onError:o[0]||(o[0]=X=>s.value=null)},null,40,j),F],4),a("div",G,[a("span",K,[e.href?(r(),b("a",{key:1,href:e.href,class:"linkOnHover"},[l(S,{text:e.title},null,8,["text"])],8,L)):(r(),d(k,{key:0,to:m,class:"linkOnHover"},{default:u(()=>[l(S,{text:e.title},null,8,["text"])]),_:1}))]),l(k,{to:`/search/artist:${e.artist}`,class:"linkOnHover"},{default:u(()=>[a("span",Q,O(e.artist),1)]),_:1},8,["to"])])]),_:1})])}}},Z=T(U,[["__scopeId","data-v-d34b4deb"]]);export{Z as T}; +import{_ as T,q as B,A as D,n,E as H,D as N,az as i,f as z,o as r,c as b,i as d,J as A,d as p,aA as E,g as l,w as u,a,z as M,u as _,M as S,t as O,C as R,l as V,m as q}from"./index-4a15a213.js";const J=e=>(V("data-v-d34b4deb"),e=e(),q(),e),P={class:"home-track-compact-wrapper"},j=["src"],F=J(()=>a("div",{class:"play"},[a("span",{class:"material-symbols-rounded"},"play_arrow")],-1)),G={class:"info"},K={class:"title"},L=["href"],Q={class:"artist"},U={__name:"TrackCompact",props:{title:String,artist:String,cover:String,id:Number,href:String},emits:["play"],setup(e,{emit:C}){const t=e,w=C,x=B(),m=`/track/${D(String(t.id))}`,f=n(null),h=n(null),I=c=>{c.stopPropagation(),w("play")},$=()=>{var c,o;if(!((c=t==null?void 0:t.href)!=null&&c.includes("spotify.com"))){x.push(m);return}if((o=t==null?void 0:t.href)!=null&&o.includes("spotify.com/album/")){h.value.show();return}f.value.show()},s=n(t.cover);H(()=>t.cover,()=>{s.value=t.cover});const v=N(()=>i(s.value));return(c,o)=>{var y,g;const k=z("router-link");return r(),b("div",P,[(y=e.href)!=null&&y.includes("spotify.com/album/")?(r(),d(A,{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"])):p("",!0),(g=e.href)!=null&&g.includes("spotify.com/track/")?(r(),d(E,{key:1,ref_key:"addSong",ref:f,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"])):p("",!0),l(R,{class:"home-track-compact","with-hover":"",onClick:$},{default:u(()=>[a("div",{style:M({backgroundImage:`url(${_(i)(s.value)})`}),class:"cover",onClick:I},[a("img",{src:_(i)(s.value),class:"hidden",onError:o[0]||(o[0]=X=>s.value=null)},null,40,j),F],4),a("div",G,[a("span",K,[e.href?(r(),b("a",{key:1,href:e.href,class:"linkOnHover"},[l(S,{text:e.title},null,8,["text"])],8,L)):(r(),d(k,{key:0,to:m,class:"linkOnHover"},{default:u(()=>[l(S,{text:e.title},null,8,["text"])]),_:1}))]),l(k,{to:`/search/artist:${e.artist}`,class:"linkOnHover"},{default:u(()=>[a("span",Q,O(e.artist),1)]),_:1},8,["to"])])]),_:1})])}}},Z=T(U,[["__scopeId","data-v-d34b4deb"]]);export{Z as T}; diff --git a/src/ui/dist/assets/TrackCompact-28e1b8fb.js.gz b/src/ui/dist/assets/TrackCompact-28e1b8fb.js.gz new file mode 100644 index 00000000..5fd8054c Binary files /dev/null and b/src/ui/dist/assets/TrackCompact-28e1b8fb.js.gz differ diff --git a/src/ui/dist/assets/TrackCompact-8cd47625.js.gz b/src/ui/dist/assets/TrackCompact-8cd47625.js.gz deleted file mode 100644 index aeaacfcb..00000000 Binary files a/src/ui/dist/assets/TrackCompact-8cd47625.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Welcome-09f50d44.js.gz b/src/ui/dist/assets/Welcome-09f50d44.js.gz deleted file mode 100644 index a5f2cc01..00000000 Binary files a/src/ui/dist/assets/Welcome-09f50d44.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Welcome-09f50d44.js b/src/ui/dist/assets/Welcome-9f07aa8e.js similarity index 98% rename from src/ui/dist/assets/Welcome-09f50d44.js rename to src/ui/dist/assets/Welcome-9f07aa8e.js index 6b809c12..f6a5dae4 100644 --- a/src/ui/dist/assets/Welcome-09f50d44.js +++ b/src/ui/dist/assets/Welcome-9f07aa8e.js @@ -1 +1 @@ -import{_ as p,aw as r,o as i,c,a as e,O as v,aK as C,s as g,aL as S,F as T,h as k,b as u,a2 as h,a3 as _,d as w,f as b,i as I,l as R,m as x}from"./index-a96016e0.js";const A={name:"ThemeSmall",props:{name:String},methods:{selected(){return r.getCurrentTheme()==this.name},select(){r.setTheme(this.name),this.$emit("selected")}}},E=["src"];function B(n,s,m,f,o,l){return i(),c("div",{onClick:s[0]||(s[0]=(...a)=>l.select&&l.select(...a)),class:"wrapper"},[e("img",{src:`/assets/img/themes/${this.name}.svg`,class:v({selected:l.selected()})},null,10,E)])}const N=p(A,[["render",B],["__scopeId","data-v-321833b6"]]);const O={components:{ThemeSmall:N},methods:{updateThemes(){this.mode++},redirect(n){r.open(n)},finalRedirectRestricted(){this.spotifyClientId||this.spotifyClientSecret||fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:"restricted",secret:"restricted"})}).then(n=>{n.status==200&&(setTimeout(()=>fetch("/api/releases"),1e3),this.mode++,setTimeout(()=>{this.$router.push("/")},6*1e3))})},async finalRedirect(){!this.spotifyClientId||!this.spotifyClientSecret||(await C(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 n=["dynamic","dark","light"],s=r.getCurrentTheme();return{mode:0,themes:n,themeSelected:s,spotifyClientId:"",spotifyClientSecret:""}},async mounted(){await S()||this.$router.push("/")}},t=n=>(R("data-v-9aa97202"),n=n(),x(),n),V={class:"welcome bouncy centred-column"},Y={key:0,class:"first centred-column"},L=t(()=>e("p",null,"Welcome to",-1)),D=t(()=>e("h1",null,"reAudioPlayer ONE",-1)),F=[L,D],P={key:1,class:"first centred-column"},U=t(()=>e("p",null,"The free audio player with the most extensive catalogue",-1)),W=t(()=>e("h1",null,"ARE YOU READY?",-1)),H=[U,W],M={key:2,class:"first centred-column"},z=t(()=>e("h1",null,"Almost There",-1)),G=t(()=>e("p",null,"After a few configurations you're ready to go",-1)),J=[z,G],K={key:3,class:"permanent centred-column"},j=t(()=>e("h1",null,"Pick a Theme",-1)),q=t(()=>e("p",null,"You'll be able to change the theme at any point later on",-1)),Q=t(()=>e("br",null,null,-1)),X={class:"centred-column appear-delayed"},Z={key:4,class:"permanent centred-column"},$=t(()=>e("h1",null,"Let's integrate Spotify then!",-1)),ee=t(()=>e("p",null,"You'll be able to change the tokens at any point later on",-1)),te=t(()=>e("br",null,null,-1)),se={class:"centred-column appear-delayed"},oe=t(()=>e("p",null,"2) Create An App",-1)),ne=t(()=>e("p",null,"3) Enter any name and any description",-1)),ie=t(()=>e("p",null,[u("4) Edit the settings: set the redirect url to "),e("a",{href:"http://reap.ml/"},"http://reap.ml/")],-1)),le=t(()=>e("p",null,"5) Copy and enter the client id and secret into the corresponding input field",-1)),ce=t(()=>e("br",null,null,-1)),de={class:"wrapTogether"},re=t(()=>e("p",null,"Client ID: ",-1)),ae={class:"wrapTogether"},he=t(()=>e("p",null,"Client Secret: ",-1)),_e={class:"wrapTogether spaceBetween"},pe={key:5,class:"centred-column"},ue=t(()=>e("h1",null,"ALRIGHT!",-1)),me=t(()=>e("p",null,"You're ready to go",-1)),fe=[ue,me];function ye(n,s,m,f,o,l){const a=b("theme-small");return i(),c("div",V,[o.mode==0?(i(),c("div",Y,F)):o.mode==1?(i(),c("div",P,H)):o.mode==2?(i(),c("div",M,J)):o.mode==3?(i(),c("div",K,[j,q,Q,e("div",X,[(i(),c("div",{class:"themes",key:o.themeSelected},[(i(!0),c(T,null,k(o.themes,(d,y)=>(i(),I(a,{onSelected:l.updateThemes,key:y,name:d},null,8,["onSelected","name"]))),128))]))])])):o.mode==4?(i(),c("div",Z,[$,ee,te,e("div",se,[e("p",null,[u("1) Head over to the "),e("a",{onClick:s[0]||(s[0]=()=>l.redirect("https://developer.spotify.com/dashboard/applications"))},"spotify developer dashboard")]),oe,ne,ie,le,ce,e("div",de,[re,h(e("input",{type:"text","onUpdate:modelValue":s[1]||(s[1]=d=>o.spotifyClientId=d)},null,512),[[_,o.spotifyClientId]])]),e("div",ae,[he,h(e("input",{type:"text","onUpdate:modelValue":s[2]||(s[2]=d=>o.spotifyClientSecret=d)},null,512),[[_,o.spotifyClientSecret]])]),e("div",_e,[e("button",{onClick:s[3]||(s[3]=(...d)=>l.finalRedirect&&l.finalRedirect(...d))},"continue"),e("button",{onClick:s[4]||(s[4]=(...d)=>l.finalRedirectRestricted&&l.finalRedirectRestricted(...d)),class:"restrictedMode"},"enter restricted mode")])])])):o.mode==5?(i(),c("div",pe,fe)):w("",!0)])}const Ce=p(O,[["render",ye],["__scopeId","data-v-9aa97202"]]);export{Ce as default}; +import{_ as p,aw as r,o as i,c,a as e,O as v,aK as C,s as g,aL as S,F as T,h as k,b as u,a2 as h,a3 as _,d as w,f as b,i as I,l as R,m as x}from"./index-4a15a213.js";const A={name:"ThemeSmall",props:{name:String},methods:{selected(){return r.getCurrentTheme()==this.name},select(){r.setTheme(this.name),this.$emit("selected")}}},E=["src"];function B(n,s,m,f,o,l){return i(),c("div",{onClick:s[0]||(s[0]=(...a)=>l.select&&l.select(...a)),class:"wrapper"},[e("img",{src:`/assets/img/themes/${this.name}.svg`,class:v({selected:l.selected()})},null,10,E)])}const N=p(A,[["render",B],["__scopeId","data-v-321833b6"]]);const O={components:{ThemeSmall:N},methods:{updateThemes(){this.mode++},redirect(n){r.open(n)},finalRedirectRestricted(){this.spotifyClientId||this.spotifyClientSecret||fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:"restricted",secret:"restricted"})}).then(n=>{n.status==200&&(setTimeout(()=>fetch("/api/releases"),1e3),this.mode++,setTimeout(()=>{this.$router.push("/")},6*1e3))})},async finalRedirect(){!this.spotifyClientId||!this.spotifyClientSecret||(await C(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 n=["dynamic","dark","light"],s=r.getCurrentTheme();return{mode:0,themes:n,themeSelected:s,spotifyClientId:"",spotifyClientSecret:""}},async mounted(){await S()||this.$router.push("/")}},t=n=>(R("data-v-9aa97202"),n=n(),x(),n),V={class:"welcome bouncy centred-column"},Y={key:0,class:"first centred-column"},L=t(()=>e("p",null,"Welcome to",-1)),D=t(()=>e("h1",null,"reAudioPlayer ONE",-1)),F=[L,D],P={key:1,class:"first centred-column"},U=t(()=>e("p",null,"The free audio player with the most extensive catalogue",-1)),W=t(()=>e("h1",null,"ARE YOU READY?",-1)),H=[U,W],M={key:2,class:"first centred-column"},z=t(()=>e("h1",null,"Almost There",-1)),G=t(()=>e("p",null,"After a few configurations you're ready to go",-1)),J=[z,G],K={key:3,class:"permanent centred-column"},j=t(()=>e("h1",null,"Pick a Theme",-1)),q=t(()=>e("p",null,"You'll be able to change the theme at any point later on",-1)),Q=t(()=>e("br",null,null,-1)),X={class:"centred-column appear-delayed"},Z={key:4,class:"permanent centred-column"},$=t(()=>e("h1",null,"Let's integrate Spotify then!",-1)),ee=t(()=>e("p",null,"You'll be able to change the tokens at any point later on",-1)),te=t(()=>e("br",null,null,-1)),se={class:"centred-column appear-delayed"},oe=t(()=>e("p",null,"2) Create An App",-1)),ne=t(()=>e("p",null,"3) Enter any name and any description",-1)),ie=t(()=>e("p",null,[u("4) Edit the settings: set the redirect url to "),e("a",{href:"http://reap.ml/"},"http://reap.ml/")],-1)),le=t(()=>e("p",null,"5) Copy and enter the client id and secret into the corresponding input field",-1)),ce=t(()=>e("br",null,null,-1)),de={class:"wrapTogether"},re=t(()=>e("p",null,"Client ID: ",-1)),ae={class:"wrapTogether"},he=t(()=>e("p",null,"Client Secret: ",-1)),_e={class:"wrapTogether spaceBetween"},pe={key:5,class:"centred-column"},ue=t(()=>e("h1",null,"ALRIGHT!",-1)),me=t(()=>e("p",null,"You're ready to go",-1)),fe=[ue,me];function ye(n,s,m,f,o,l){const a=b("theme-small");return i(),c("div",V,[o.mode==0?(i(),c("div",Y,F)):o.mode==1?(i(),c("div",P,H)):o.mode==2?(i(),c("div",M,J)):o.mode==3?(i(),c("div",K,[j,q,Q,e("div",X,[(i(),c("div",{class:"themes",key:o.themeSelected},[(i(!0),c(T,null,k(o.themes,(d,y)=>(i(),I(a,{onSelected:l.updateThemes,key:y,name:d},null,8,["onSelected","name"]))),128))]))])])):o.mode==4?(i(),c("div",Z,[$,ee,te,e("div",se,[e("p",null,[u("1) Head over to the "),e("a",{onClick:s[0]||(s[0]=()=>l.redirect("https://developer.spotify.com/dashboard/applications"))},"spotify developer dashboard")]),oe,ne,ie,le,ce,e("div",de,[re,h(e("input",{type:"text","onUpdate:modelValue":s[1]||(s[1]=d=>o.spotifyClientId=d)},null,512),[[_,o.spotifyClientId]])]),e("div",ae,[he,h(e("input",{type:"text","onUpdate:modelValue":s[2]||(s[2]=d=>o.spotifyClientSecret=d)},null,512),[[_,o.spotifyClientSecret]])]),e("div",_e,[e("button",{onClick:s[3]||(s[3]=(...d)=>l.finalRedirect&&l.finalRedirect(...d))},"continue"),e("button",{onClick:s[4]||(s[4]=(...d)=>l.finalRedirectRestricted&&l.finalRedirectRestricted(...d)),class:"restrictedMode"},"enter restricted mode")])])])):o.mode==5?(i(),c("div",pe,fe)):w("",!0)])}const Ce=p(O,[["render",ye],["__scopeId","data-v-9aa97202"]]);export{Ce as default}; diff --git a/src/ui/dist/assets/Welcome-9f07aa8e.js.gz b/src/ui/dist/assets/Welcome-9f07aa8e.js.gz new file mode 100644 index 00000000..ac2b009d Binary files /dev/null and b/src/ui/dist/assets/Welcome-9f07aa8e.js.gz differ diff --git a/src/ui/dist/assets/gistClient-de41c06b.js b/src/ui/dist/assets/gistClient-56b8a233.js similarity index 97% rename from src/ui/dist/assets/gistClient-de41c06b.js rename to src/ui/dist/assets/gistClient-56b8a233.js index 36c5161c..d5a1b912 100644 --- a/src/ui/dist/assets/gistClient-de41c06b.js +++ b/src/ui/dist/assets/gistClient-56b8a233.js @@ -1,4 +1,4 @@ -import{at as w,ar as d}from"./index-a96016e0.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{at as w,ar as d}from"./index-4a15a213.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-56b8a233.js.gz b/src/ui/dist/assets/gistClient-56b8a233.js.gz new file mode 100644 index 00000000..fba520d6 Binary files /dev/null and b/src/ui/dist/assets/gistClient-56b8a233.js.gz differ diff --git a/src/ui/dist/assets/gistClient-de41c06b.js.gz b/src/ui/dist/assets/gistClient-de41c06b.js.gz deleted file mode 100644 index f299934f..00000000 Binary files a/src/ui/dist/assets/gistClient-de41c06b.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-474de424.js b/src/ui/dist/assets/index-0388f272.js similarity index 97% rename from src/ui/dist/assets/index-474de424.js rename to src/ui/dist/assets/index-0388f272.js index 231bf338..e35a6c47 100644 --- a/src/ui/dist/assets/index-474de424.js +++ b/src/ui/dist/assets/index-0388f272.js @@ -1 +1 @@ -import{e as N,B as P,n as m,D as o,S as T,T as j,y as q,E as A,o as s,c as a,g as B,L,a as n,t as I,F as c,G as d,d as _,h as y,i as f,l as O,m as V,_ as D}from"./index-a96016e0.js";const i=v=>(O("data-v-28db7468"),v=v(),V(),v),F={class:"search"},$={key:0,class:"fill-page"},G={key:1,class:"fill-page"},J=i(()=>n("h1",null,"Something went wrong",-1)),M={class:"top flex gap-8"},Y={class:"top min-w-max"},z=i(()=>n("h2",null,"Top Result",-1)),H={key:0,class:"list songs flex-1"},K={class:"flex justify-between items-center"},Q=i(()=>n("h2",null,"Songs",-1)),U={class:"flex flex-wrap flexibleSearchResults"},W={key:0,class:"list flex-1 min-w-[40vw] artists"},X=i(()=>n("h2",null,"Artists",-1)),Z={key:1,class:"list flex-1 min-w-[40vw] playlists"},ee=i(()=>n("h2",null,"Playlists",-1)),te={key:2,class:"list flex-1 min-w-[40vw] albums"},se=i(()=>n("h2",null,"Albums",-1)),le=N({__name:"index",setup(v){const R=P(),g=m(!0),p=m(null),h=m(!1),u=m(null),C=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t[0]}),r=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="song")}),x=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="artist")}),w=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="playlist")}),S=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="album")}),k=o(()=>R.params.query),E=o(()=>[...T,...j]),b=async()=>{g.value=!0,p.value=null;const e=await fetch("/api/search",{method:"POST",body:JSON.stringify({query:k.value,scope:E.value})});if(g.value=!1,!e.ok){p.value=await e.text();return}const t=await e.json();u.value=t};return q(b),A(k,b),(e,t)=>(s(),a("div",F,[g.value?(s(),a("div",$,[B(L)])):p.value?(s(),a("div",G,[J,n("p",null,I(p.value),1)])):(s(),a(c,{key:2},[n("div",M,[n("div",Y,[z,B(d,{item:C.value,large:""},null,8,["item"])]),r.value.length?(s(),a("div",H,[n("div",K,[Q,r.value.length>4?(s(),a("span",{key:0,class:"more cursor-pointer text-muted hover:text-primary text-sm uppercase",onClick:t[0]||(t[0]=l=>h.value=!h.value)},I(h.value?"Show less":`Show all ${r.value.length} songs`),1)):_("",!0)]),(s(!0),a(c,null,y(h.value?r.value:r.value.slice(0,4),l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0)]),n("div",U,[x.value.length?(s(),a("div",W,[X,(s(!0),a(c,null,y(x.value,l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0),w.value.length?(s(),a("div",Z,[ee,(s(!0),a(c,null,y(w.value,l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0),S.value.length?(s(),a("div",te,[se,(s(!0),a(c,null,y(S.value,l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0)])],64))]))}});const ne=D(le,[["__scopeId","data-v-28db7468"]]);export{ne as default}; +import{e as N,B as P,n as m,D as o,S as T,T as j,y as q,E as A,o as s,c as a,g as B,L,a as n,t as I,F as c,G as d,d as _,h as y,i as f,l as O,m as V,_ as D}from"./index-4a15a213.js";const i=v=>(O("data-v-28db7468"),v=v(),V(),v),F={class:"search"},$={key:0,class:"fill-page"},G={key:1,class:"fill-page"},J=i(()=>n("h1",null,"Something went wrong",-1)),M={class:"top flex gap-8"},Y={class:"top min-w-max"},z=i(()=>n("h2",null,"Top Result",-1)),H={key:0,class:"list songs flex-1"},K={class:"flex justify-between items-center"},Q=i(()=>n("h2",null,"Songs",-1)),U={class:"flex flex-wrap flexibleSearchResults"},W={key:0,class:"list flex-1 min-w-[40vw] artists"},X=i(()=>n("h2",null,"Artists",-1)),Z={key:1,class:"list flex-1 min-w-[40vw] playlists"},ee=i(()=>n("h2",null,"Playlists",-1)),te={key:2,class:"list flex-1 min-w-[40vw] albums"},se=i(()=>n("h2",null,"Albums",-1)),le=N({__name:"index",setup(v){const R=P(),g=m(!0),p=m(null),h=m(!1),u=m(null),C=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t[0]}),r=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="song")}),x=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="artist")}),w=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="playlist")}),S=o(()=>{var e,t;return(t=(e=u.value)==null?void 0:e.items)==null?void 0:t.filter(l=>l.type==="album")}),k=o(()=>R.params.query),E=o(()=>[...T,...j]),b=async()=>{g.value=!0,p.value=null;const e=await fetch("/api/search",{method:"POST",body:JSON.stringify({query:k.value,scope:E.value})});if(g.value=!1,!e.ok){p.value=await e.text();return}const t=await e.json();u.value=t};return q(b),A(k,b),(e,t)=>(s(),a("div",F,[g.value?(s(),a("div",$,[B(L)])):p.value?(s(),a("div",G,[J,n("p",null,I(p.value),1)])):(s(),a(c,{key:2},[n("div",M,[n("div",Y,[z,B(d,{item:C.value,large:""},null,8,["item"])]),r.value.length?(s(),a("div",H,[n("div",K,[Q,r.value.length>4?(s(),a("span",{key:0,class:"more cursor-pointer text-muted hover:text-primary text-sm uppercase",onClick:t[0]||(t[0]=l=>h.value=!h.value)},I(h.value?"Show less":`Show all ${r.value.length} songs`),1)):_("",!0)]),(s(!0),a(c,null,y(h.value?r.value:r.value.slice(0,4),l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0)]),n("div",U,[x.value.length?(s(),a("div",W,[X,(s(!0),a(c,null,y(x.value,l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0),w.value.length?(s(),a("div",Z,[ee,(s(!0),a(c,null,y(w.value,l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0),S.value.length?(s(),a("div",te,[se,(s(!0),a(c,null,y(S.value,l=>(s(),f(d,{item:l},null,8,["item"]))),256))])):_("",!0)])],64))]))}});const ne=D(le,[["__scopeId","data-v-28db7468"]]);export{ne as default}; diff --git a/src/ui/dist/assets/index-0388f272.js.gz b/src/ui/dist/assets/index-0388f272.js.gz new file mode 100644 index 00000000..2abc6061 Binary files /dev/null and b/src/ui/dist/assets/index-0388f272.js.gz differ diff --git a/src/ui/dist/assets/index-09bbebd0.css.gz b/src/ui/dist/assets/index-09bbebd0.css.gz deleted file mode 100644 index 999bac76..00000000 Binary files a/src/ui/dist/assets/index-09bbebd0.css.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-72186d7f.js b/src/ui/dist/assets/index-1ea7a167.js similarity index 95% rename from src/ui/dist/assets/index-72186d7f.js rename to src/ui/dist/assets/index-1ea7a167.js index 826c8729..7340848c 100644 --- a/src/ui/dist/assets/index-72186d7f.js +++ b/src/ui/dist/assets/index-1ea7a167.js @@ -1 +1 @@ -import{_ as S,o as n,c as a,a as t,b as I,t as x,d as p,r as N,e as F,f as T,g as i,w as d,F as h,h as m,i as _,P as w,u as $,p as q,j as H,k,l as D,m as j,n as f,q as B,s as M,v as R,I as V,C as O,x as G,y as L}from"./index-a96016e0.js";import{P as E}from"./PlaylistCard-200edd27.js";import{T as b}from"./TrackCompact-8cd47625.js";import{P as C}from"./PlaylistEntry-35a3078f.js";import{s as J}from"./spotify-9bae3b48.js";import"./playerInPicture-af203fdf.js";import"./EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js";const W={name:"FlexShelf",props:{heading:String,icon:String}},z={class:"shelf"},A={class:"header"},K={key:0},Q={key:0,class:"icon material-symbols-round"},U={class:"items"};function X(e,l,r,c,s,o){return n(),a("div",z,[t("div",A,[r.heading||r.icon?(n(),a("h2",K,[I(x(r.heading),1),r.icon?(n(),a("span",Q,x(r.icon),1)):p("",!0)])):p("",!0)]),t("div",U,[N(e.$slots,"default",{},void 0,!0)])])}const y=S(W,[["render",X],["__scopeId","data-v-3f16aa97"]]),u=e=>(D("data-v-7d09d2f9"),e=e(),j(),e),Y={class:"home"},Z={class:"main"},ee={key:0,class:"playlists"},te=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," library_music ",-1)),se=u(()=>t("span",{class:"hover:underline"}," Playlists ",-1)),le={key:1,class:"breaking"},ne=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," trending_up ",-1)),oe=u(()=>t("span",{class:"hover:underline"}," Breaking Songs ",-1)),ae={key:2,class:"liked"},ie=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," favorite ",-1)),re=u(()=>t("span",{class:"hover:underline"}," Liked Songs ",-1)),ce={class:"side"},de={key:0,class:"releases"},ue=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," radar ",-1)),_e=u(()=>t("span",{class:"hover:underline"}," Out now ",-1)),pe={key:1,class:"disovery"},he=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," explore ",-1)),me=u(()=>t("span",{class:"hover:underline"}," Discover ",-1)),ye={key:2,class:"recommendations"},fe=u(()=>t("h2",{class:"flex items-center gap-2"},[t("span",{class:"material-symbols-rounded ms-fill"}," recommend "),I(" Suggested ")],-1)),ve={name:"Home",data(){const e=new Date;return{greeting:e.getHours()<12?"Good morning":e.getHours()<18?"Good afternoon":"Good evening",releases:[],picks:[],songs:[],recommendations:[],data:H()}},mounted(){fetch("/api/releases").then(e=>e.json()).then(e=>{this.releases=e.slice(0,3)}),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(e){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:e.id,type:"track"})})},playRecommendation(e){const l=new CustomEvent("player.play",{detail:{artist:e.artist,title:e.title,source:e.source||e.url||e.href}});window.dispatchEvent(l)},async pick(){if(!this.data.playlists.length){setTimeout(()=>this.pick(),2e3);return}if(this.songs=this.playlists.map(e=>{var l;return((l=k(e.id))==null?void 0:l.songs)||[]}).flat(),!(this.songs.length<3)){for(let e=0;e<3;e++)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(e=>e.json()).then(e=>{this.recommendations=e.slice(0,3)})}}}},ge=F({...ve,setup(e){return(l,r)=>{const c=T("router-link");return n(),a("div",Y,[t("div",Z,[l.playlists.length?(n(),a("div",ee,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/playlists"},{default:d(()=>[te,se]),_:1})]),i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.playlists,s=>(n(),_(E,{playlist:s},null,8,["playlist"]))),256))]),_:1})])):p("",!0),l.breaking.length?(n(),a("div",le,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks/breaking"},{default:d(()=>[ne,oe]),_:1})]),i(w),(n(!0),a(h,null,m(l.breaking,(s,o)=>(n(),_(C,{key:o,index:o,"playlist-id":"breaking",song:s,"with-cover":""},null,8,["index","song"]))),128))])):p("",!0),l.liked.length?(n(),a("div",ae,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks"},{default:d(()=>[ie,re]),_:1})]),i(w),(n(!0),a(h,null,m(l.liked,(s,o)=>(n(),_(C,{key:o,index:o,"playlist-id":"liked",song:s,"with-cover":""},null,8,["index","song"]))),128))])):p("",!0)]),t("div",ce,[l.releases.length?(n(),a("div",de,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/releases"},{default:d(()=>[ue,_e]),_:1})]),i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.releases,(s,o)=>(n(),_(b,{key:o,artist:s.artist,cover:s.cover,href:s.url,title:s.title,onPlay:()=>l.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):p("",!0),l.picks.length?(n(),a("div",pe,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/discover"},{default:d(()=>[he,me]),_:1})]),i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.picks,(s,o)=>(n(),_(b,{id:s.id,key:o,artist:s.artist,cover:$(q)(s.cover),href:s.href,title:s.title,onPlay:()=>l.playDiscover(s)},null,8,["id","artist","cover","href","title","onPlay"]))),128))]),_:1})])):p("",!0),l.recommendations.length?(n(),a("div",ye,[fe,i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.recommendations,(s,o)=>(n(),_(b,{key:o,artist:s.artist,cover:s.cover,href:s.href,title:s.title,onPlay:()=>l.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):p("",!0)])])}}});const ke=S(ge,[["__scopeId","data-v-7d09d2f9"]]),v=e=>(D("data-v-2c465748"),e=e(),j(),e),be={class:"onboarding p-4"},Se=v(()=>t("h1",null,"So nice to meet you!",-1)),$e=v(()=>t("p",null,"Let's get you set up",-1)),Pe={class:"grid grid-cols-2 gap-4 mt-8"},xe=v(()=>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)),we={class:"flex flex-row justify-end w-full"},Oe={class:"flex flex-row items-center"},Ce=v(()=>t("h2",null,"Import from Spotify",-1)),Ie={class:"spotify-playlists"},Fe=F({__name:"Onboarding",setup(e){const l=f([]),r=f(!1),c=f(null);B(),M().then(o=>{r.value=o}),fetch("/api/spotify/playlists").then(o=>o.json()).then(o=>{l.value=o});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 o=c.value.toObject();await G(o.name,o.description)}}};return(o,P)=>(n(),a("div",be,[Se,$e,t("div",Pe,[i(O,{class:"p-4"},{default:d(()=>[xe,i(R,{ref_key:"createForm",ref:c,options:s.fields},null,8,["options"]),t("div",we,[i(V,{onClick:P[0]||(P[0]=g=>s.submit.action()),icon:"add",label:s.submit.label},null,8,["label"])])]),_:1}),l.value.length?(n(),_(O,{key:0,class:"p-4"},{default:d(()=>[t("div",Oe,[i($(J),{class:"spotify mr-4"}),Ce]),t("div",Ie,[(n(!0),a(h,null,m(l.value,g=>(n(),_(E,{playlist:{...g,type:"classic",plays:0,href:`https://open.spotify.com/playlist/${g.id}`},"is-spotify":""},null,8,["playlist"]))),256))])]),_:1})):p("",!0)])]))}});const He=S(Fe,[["__scopeId","data-v-2c465748"]]),Me={__name:"index",setup(e){const l=H(),r=f(!1),c=B();return L(()=>{document.body.clientWidth<768&&(r.value=!0,c.push("/collection/playlist"))}),(s,o)=>$(l).notEmpty||r.value?(n(),_(ke,{key:0})):(n(),_(He,{key:1}))}};export{Me as default}; +import{_ as S,o as n,c as a,a as t,b as I,t as x,d as p,r as N,e as F,f as T,g as i,w as d,F as h,h as m,i as _,P as w,u as $,p as q,j as H,k,l as D,m as j,n as f,q as B,s as M,v as R,I as V,C as O,x as G,y as L}from"./index-4a15a213.js";import{P as E}from"./PlaylistCard-915b2cc1.js";import{T as b}from"./TrackCompact-28e1b8fb.js";import{P as C}from"./PlaylistEntry-4f48a6f3.js";import{s as J}from"./spotify-2bf3aeb7.js";import"./playerInPicture-af203fdf.js";import"./EditSong.vue_vue_type_script_setup_true_lang-0170f423.js";const W={name:"FlexShelf",props:{heading:String,icon:String}},z={class:"shelf"},A={class:"header"},K={key:0},Q={key:0,class:"icon material-symbols-round"},U={class:"items"};function X(e,l,r,c,s,o){return n(),a("div",z,[t("div",A,[r.heading||r.icon?(n(),a("h2",K,[I(x(r.heading),1),r.icon?(n(),a("span",Q,x(r.icon),1)):p("",!0)])):p("",!0)]),t("div",U,[N(e.$slots,"default",{},void 0,!0)])])}const y=S(W,[["render",X],["__scopeId","data-v-3f16aa97"]]),u=e=>(D("data-v-7d09d2f9"),e=e(),j(),e),Y={class:"home"},Z={class:"main"},ee={key:0,class:"playlists"},te=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," library_music ",-1)),se=u(()=>t("span",{class:"hover:underline"}," Playlists ",-1)),le={key:1,class:"breaking"},ne=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," trending_up ",-1)),oe=u(()=>t("span",{class:"hover:underline"}," Breaking Songs ",-1)),ae={key:2,class:"liked"},ie=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," favorite ",-1)),re=u(()=>t("span",{class:"hover:underline"}," Liked Songs ",-1)),ce={class:"side"},de={key:0,class:"releases"},ue=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," radar ",-1)),_e=u(()=>t("span",{class:"hover:underline"}," Out now ",-1)),pe={key:1,class:"disovery"},he=u(()=>t("span",{class:"material-symbols-rounded ms-fill"}," explore ",-1)),me=u(()=>t("span",{class:"hover:underline"}," Discover ",-1)),ye={key:2,class:"recommendations"},fe=u(()=>t("h2",{class:"flex items-center gap-2"},[t("span",{class:"material-symbols-rounded ms-fill"}," recommend "),I(" Suggested ")],-1)),ve={name:"Home",data(){const e=new Date;return{greeting:e.getHours()<12?"Good morning":e.getHours()<18?"Good afternoon":"Good evening",releases:[],picks:[],songs:[],recommendations:[],data:H()}},mounted(){fetch("/api/releases").then(e=>e.json()).then(e=>{this.releases=e.slice(0,3)}),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(e){fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:e.id,type:"track"})})},playRecommendation(e){const l=new CustomEvent("player.play",{detail:{artist:e.artist,title:e.title,source:e.source||e.url||e.href}});window.dispatchEvent(l)},async pick(){if(!this.data.playlists.length){setTimeout(()=>this.pick(),2e3);return}if(this.songs=this.playlists.map(e=>{var l;return((l=k(e.id))==null?void 0:l.songs)||[]}).flat(),!(this.songs.length<3)){for(let e=0;e<3;e++)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(e=>e.json()).then(e=>{this.recommendations=e.slice(0,3)})}}}},ge=F({...ve,setup(e){return(l,r)=>{const c=T("router-link");return n(),a("div",Y,[t("div",Z,[l.playlists.length?(n(),a("div",ee,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/playlists"},{default:d(()=>[te,se]),_:1})]),i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.playlists,s=>(n(),_(E,{playlist:s},null,8,["playlist"]))),256))]),_:1})])):p("",!0),l.breaking.length?(n(),a("div",le,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks/breaking"},{default:d(()=>[ne,oe]),_:1})]),i(w),(n(!0),a(h,null,m(l.breaking,(s,o)=>(n(),_(C,{key:o,index:o,"playlist-id":"breaking",song:s,"with-cover":""},null,8,["index","song"]))),128))])):p("",!0),l.liked.length?(n(),a("div",ae,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/tracks"},{default:d(()=>[ie,re]),_:1})]),i(w),(n(!0),a(h,null,m(l.liked,(s,o)=>(n(),_(C,{key:o,index:o,"playlist-id":"liked",song:s,"with-cover":""},null,8,["index","song"]))),128))])):p("",!0)]),t("div",ce,[l.releases.length?(n(),a("div",de,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/collection/releases"},{default:d(()=>[ue,_e]),_:1})]),i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.releases,(s,o)=>(n(),_(b,{key:o,artist:s.artist,cover:s.cover,href:s.url,title:s.title,onPlay:()=>l.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):p("",!0),l.picks.length?(n(),a("div",pe,[t("h2",null,[i(c,{class:"linkOnHover flex items-center gap-2 !no-underline",to:"/discover"},{default:d(()=>[he,me]),_:1})]),i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.picks,(s,o)=>(n(),_(b,{id:s.id,key:o,artist:s.artist,cover:$(q)(s.cover),href:s.href,title:s.title,onPlay:()=>l.playDiscover(s)},null,8,["id","artist","cover","href","title","onPlay"]))),128))]),_:1})])):p("",!0),l.recommendations.length?(n(),a("div",ye,[fe,i(y,null,{default:d(()=>[(n(!0),a(h,null,m(l.recommendations,(s,o)=>(n(),_(b,{key:o,artist:s.artist,cover:s.cover,href:s.href,title:s.title,onPlay:()=>l.playRecommendation(s)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):p("",!0)])])}}});const ke=S(ge,[["__scopeId","data-v-7d09d2f9"]]),v=e=>(D("data-v-2c465748"),e=e(),j(),e),be={class:"onboarding p-4"},Se=v(()=>t("h1",null,"So nice to meet you!",-1)),$e=v(()=>t("p",null,"Let's get you set up",-1)),Pe={class:"grid grid-cols-2 gap-4 mt-8"},xe=v(()=>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)),we={class:"flex flex-row justify-end w-full"},Oe={class:"flex flex-row items-center"},Ce=v(()=>t("h2",null,"Import from Spotify",-1)),Ie={class:"spotify-playlists"},Fe=F({__name:"Onboarding",setup(e){const l=f([]),r=f(!1),c=f(null);B(),M().then(o=>{r.value=o}),fetch("/api/spotify/playlists").then(o=>o.json()).then(o=>{l.value=o});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 o=c.value.toObject();await G(o.name,o.description)}}};return(o,P)=>(n(),a("div",be,[Se,$e,t("div",Pe,[i(O,{class:"p-4"},{default:d(()=>[xe,i(R,{ref_key:"createForm",ref:c,options:s.fields},null,8,["options"]),t("div",we,[i(V,{onClick:P[0]||(P[0]=g=>s.submit.action()),icon:"add",label:s.submit.label},null,8,["label"])])]),_:1}),l.value.length?(n(),_(O,{key:0,class:"p-4"},{default:d(()=>[t("div",Oe,[i($(J),{class:"spotify mr-4"}),Ce]),t("div",Ie,[(n(!0),a(h,null,m(l.value,g=>(n(),_(E,{playlist:{...g,type:"classic",plays:0,href:`https://open.spotify.com/playlist/${g.id}`},"is-spotify":""},null,8,["playlist"]))),256))])]),_:1})):p("",!0)])]))}});const He=S(Fe,[["__scopeId","data-v-2c465748"]]),Me={__name:"index",setup(e){const l=H(),r=f(!1),c=B();return L(()=>{document.body.clientWidth<768&&(r.value=!0,c.push("/collection/playlist"))}),(s,o)=>$(l).notEmpty||r.value?(n(),_(ke,{key:0})):(n(),_(He,{key:1}))}};export{Me as default}; diff --git a/src/ui/dist/assets/index-1ea7a167.js.gz b/src/ui/dist/assets/index-1ea7a167.js.gz new file mode 100644 index 00000000..d559bbe5 Binary files /dev/null and b/src/ui/dist/assets/index-1ea7a167.js.gz differ diff --git a/src/ui/dist/assets/index-24d50f88.js.gz b/src/ui/dist/assets/index-24d50f88.js.gz deleted file mode 100644 index a7e1c538..00000000 Binary files a/src/ui/dist/assets/index-24d50f88.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-26fd52a1.js b/src/ui/dist/assets/index-26fd52a1.js new file mode 100644 index 00000000..81853592 --- /dev/null +++ b/src/ui/dist/assets/index-26fd52a1.js @@ -0,0 +1 @@ +import{e as S,o,c as _,t as b,O as T,_ as V,n as y,y as Q,D,i as k,d as C,a as t,b as N,F as x,l as B,m as U,a6 as X,g as m,I as $,h as I,w as G,H as ee,M as q,u as f,C as R,as as te,at as M,au as F,av as Y,aw as J,ax as E,E as j,a2 as ae,ay as le,Z as se,ar as oe,B as ne,q as ie,R as re}from"./index-4a15a213.js";import{_ as ce}from"./Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js";import{T as W}from"./TrackCompact-28e1b8fb.js";import{G as ue}from"./gistClient-56b8a233.js";const de=S({__name:"TabButton",props:{name:{type:String,required:!0},active:{type:Boolean,default:!1}},setup(l){return(e,s)=>(o(),_("button",{class:T(["btn",{active:l.active}])},b(l.name),3))}});const pe=V(de,[["__scopeId","data-v-3f038910"]]),_e="0.11.49",z=l=>(B("data-v-823f6937"),l=l(),U(),l),me={class:"flex flex-col"},ve={key:0,class:"text-sm flex items-center gap-2 latest"},he=z(()=>t("span",{class:"material-symbols-rounded"},"check",-1)),ye={key:1,class:"text-sm flex items-center gap-2 update"},fe=z(()=>t("span",{class:"material-symbols-rounded"},"update",-1)),H="1.0.0",be=S({__name:"About",setup(l){const e=y(""),s=y("");Q(async()=>{const i=await(await fetch("https://api.github.com/repos/reAudioPlayer/one/releases/latest")).json();e.value=i.tag_name,s.value=i.body});const p=D(()=>e.value===H),n=D(()=>_e.split(".").pop()),d=y(null);return(a,i)=>(o(),_("div",me,[s.value?(o(),k(ce,{key:0,content:s.value,title:"What's new in "+e.value,ref_key:"changelog",ref:d,onClose:i[0]||(i[0]=()=>s.value="")},null,8,["content","title"])):C("",!0),t("span",null,[t("strong",null,"v"+b(H)),N(" (Build "+b(n.value)+") ",1)]),e.value?(o(),_(x,{key:1},[p.value?(o(),_("span",ve,[he,N(" You're on the latest version "),t("a",{class:"cursor-pointer",onClick:i[1]||(i[1]=h=>{var c;return(c=d.value)==null?void 0:c.show()})}," What's changed? ")])):(o(),_("span",ye,[fe,N(" Update available: "+b(e.value)+" ",1),t("a",{class:"cursor-pointer",onClick:i[2]||(i[2]=h=>{var c;return(c=d.value)==null?void 0:c.show()})}," What's changed? ")]))],64)):C("",!0)]))}});const ge=V(be,[["__scopeId","data-v-823f6937"]]);const O=l=>(B("data-v-9bd09bb6"),l=l(),U(),l),ke={class:"wrap"},we=O(()=>t("h3",null,"Browser Data",-1)),xe=O(()=>t("h3",null,"Import / Export",-1)),$e={class:"flex gap-4 mb-4"},Se={class:"covers mb-2"},Ce=O(()=>t("h3",null,"Local covers",-1)),Ve={key:0,class:"items gap-4"},Pe={class:"flex justify-between w-full mb-4"},Ie={class:"overflow-hidden"},Ae=["onClick"],De={key:1,class:"text-muted italic"},Ne={class:"tracks"},Te=O(()=>t("h3",null,"Local tracks",-1)),Be={key:0,class:"items gap-4"},Ue={class:"flex justify-between w-full mb-4"},Ee={class:"overflow-hidden"},Oe=["onClick"],Le={class:"flex justify-center w-full mb-4"},Ge=["src"],Re={key:1,class:"text-muted italic"},je={__name:"LocalData",setup(l){const e=y([]),s=y([]),p=X(),n=()=>{fetch("/api/config/images").then(c=>c.json()).then(c=>e.value=c),fetch("/api/config/tracks").then(c=>c.json()).then(c=>s.value=c)},d=async c=>{await fetch("/api/config/images",{method:"DELETE",body:JSON.stringify({name:c})}),n()},a=async c=>{fetch("/api/config/tracks",{method:"DELETE",body:JSON.stringify({name:c})}),n()},i=c=>{p.loadPlaylist("track",c)};n();const h=()=>{localStorage.clear(),sessionStorage.clear(),window.location.reload()};return(c,w)=>(o(),_("div",ke,[we,m($,{class:"mb-4",icon:"delete",label:"Clean browser settings",onClick:h}),xe,t("div",$e,[m($,{icon:"backup",label:"Back up / Export",onClick:w[0]||(w[0]=v=>c.$router.push("/export"))}),m($,{icon:"cloud_download",label:"Import",onClick:w[1]||(w[1]=v=>c.$router.push("/import"))})]),t("div",Se,[Ce,e.value.length?(o(),_("div",Ve,[(o(!0),_(x,null,I(e.value,(v,P)=>(o(),k(R,{key:P,class:"cover-wrapper p-4"},{default:G(()=>[m(ee,{src:v.name,class:"rounded-xl mb-4"},null,8,["src"]),t("div",Pe,[t("p",Ie,[m(q,{text:v.name},null,8,["text"])]),t("span",{class:"ml-2 material-symbols-rounded cursor-pointer",onClick:r=>d(v.name)},"delete",8,Ae)]),(o(!0),_(x,null,I(v.songs,(r,u)=>(o(),k(f(W),{id:r.id,key:u,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))])):(o(),_("span",De,"No local covers"))]),t("div",Ne,[Te,s.value.length?(o(),_("div",Be,[(o(!0),_(x,null,I(s.value,(v,P)=>(o(),k(R,{key:P,class:"track p-4"},{default:G(()=>[t("div",Ue,[t("p",Ee,[m(q,{text:v.name},null,8,["text"])]),t("span",{class:"material-symbols-rounded cursor-pointer",onClick:r=>a(v.name)},"delete",8,Oe)]),t("div",Le,[t("audio",{src:"/api/"+v.name.replace("local:","/src/tracks/"),controls:""},null,8,Ge)]),(o(!0),_(x,null,I(v.songs,(r,u)=>(o(),k(f(W),{id:r.id,key:u,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))])):(o(),_("span",Re,"No local tracks"))])]))}},qe=V(je,[["__scopeId","data-v-9bd09bb6"]]),Je={class:"markdown-body"},We=te("

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),He=[We],Me={__name:"Privacy",setup(l,{expose:e}){return e({frontmatter:{}}),(p,n)=>(o(),_("div",Je,He))}},Fe={class:"material-symbols-rounded ms-wght-300 cursor-pointer"},Ye={class:"checkbox__label"},ze={class:"checkbox__label__title"},Ke={class:"checkbox__label__sublabel italic"},Ze=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(l,{emit:e}){const s=l,p=e,n=a=>p("update:modelValue",a),d=()=>{s.disabled||n(!s.modelValue)};return(a,i)=>(o(),_("div",{class:T([{"opacity-50":l.disabled},"checkbox"]),onClick:d},[t("span",Fe,b(l.modelValue?"check_box":"check_box_outline_blank"),1),t("div",Ye,[t("div",ze,b(l.label),1),t("div",Ke,b(l.sublabel),1)])],2))}});const A=V(Ze,[["__scopeId","data-v-be9fa887"]]),Qe={class:"relative"},Xe=S({__name:"Cache",setup(l){const e=y(null),s=y("");M().then(d=>{e.value=d,s.value=JSON.stringify(d)});const p=D(()=>e.value?JSON.stringify(e.value)!==s.value:!1),n=async()=>{p.value&&(await Y(e.value),s.value=JSON.stringify(e.value))};return(d,a)=>(o(),_("div",Qe,[e.value?(o(),k(A,{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"])):C("",!0),e.value?(o(),k(A,{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"])):C("",!0),e.value?(o(),k(F,{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"])):C("",!0),m($,{disabled:!e.value||!p.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:n},null,8,["disabled"])]))}});const et={name:"Theme",props:{name:String},methods:{selected(){return J.getCurrentTheme()==this.name},select(){J.setTheme(this.name),this.$emit("selected")}}},tt=["src"];function at(l,e,s,p,n,d){return o(),_("div",{onClick:e[0]||(e[0]=(...a)=>d.select&&d.select(...a)),class:"wrapper"},[t("p",{class:T(["mb-4",{selected:d.selected()}])},b(s.name),3),t("img",{src:`/assets/img/themes/${this.name}.svg`,class:T({selected:d.selected()})},null,10,tt)])}const lt=V(et,[["render",at],["__scopeId","data-v-74855c2d"]]),K=l=>(B("data-v-5cc6477c"),l=l(),U(),l),st=K(()=>t("h3",{class:"mt-[10px]"},"Theme",-1)),ot={class:"themes"},nt=K(()=>t("h3",{class:"mt-[10px]"},"Sidebar",-1)),it=S({__name:"Appearance",setup(l){const e=E(),s=["dynamic","light","dark"];return(p,n)=>(o(),_(x,null,[st,m(A,{modelValue:f(e).ambient,"onUpdate:modelValue":n[0]||(n[0]=d=>f(e).ambient=d),disabled:!f(e).themeSupportsAmbient,label:"Ambient"},null,8,["modelValue","disabled"]),t("div",ot,[(o(),_(x,null,I(s,(d,a)=>m(lt,{key:a,name:d},null,8,["name"])),64))]),nt,m(A,{modelValue:f(e).sidebar.news,"onUpdate:modelValue":n[1]||(n[1]=d=>f(e).sidebar.news=d),label:"Show 'News' Tab"},null,8,["modelValue"]),m(A,{modelValue:f(e).sidebar.sports,"onUpdate:modelValue":n[2]||(n[2]=d=>f(e).sidebar.sports=d),label:"Show 'Sports' Tab"},null,8,["modelValue"])],64))}});const rt=V(it,[["__scopeId","data-v-5cc6477c"]]),ct={class:"relative"},ut=S({__name:"Player",setup(l){const e=E();return(s,p)=>(o(),_("div",ct,[m(A,{modelValue:f(e).player.pictureInPicture,"onUpdate:modelValue":p[0]||(p[0]=n=>f(e).player.pictureInPicture=n),label:"Support Picture in Picture",sublabel:"this will slightly reduce performance"},null,8,["modelValue"]),m(F,{modelValue:f(e).player.type,"onUpdate:modelValue":p[1]||(p[1]=n=>f(e).player.type=n),options:[{value:"web",label:"Native player",icon:"horizontal_rule"},{value:"web/wave",label:"Wave player",icon:"graphic_eq"}],icon:"music_note"},null,8,["modelValue"])]))}});const dt={key:0,class:"material-symbols-rounded"},pt=["disabled","placeholder","type"],_t={__name:"PasswordInputWithIcon",props:{icon:String,placeholder:String,modelValue:String,disabled:Boolean},emits:["update:modelValue","change","submit"],setup(l,{emit:e}){const s=l,p=y(s.modelValue);j(()=>s.modelValue,h=>{p.value=h});const n=e,d=()=>{n("update:modelValue",p.value),n("change",p.value)},a=h=>{h.key==="Enter"&&n("submit",p)},i=y(!1);return(h,c)=>(o(),_("div",{class:T([{disabled:l.disabled},"text-input-with-icon rounded-3xl flex items-center px-4"])},[l.icon?(o(),_("span",dt,b(l.icon),1)):C("",!0),ae(t("input",{"onUpdate:modelValue":c[0]||(c[0]=w=>p.value=w),disabled:l.disabled,placeholder:l.placeholder,type:i.value?"text":"password",onInput:d,onKeyup:a},null,40,pt),[[le,p.value]]),t("span",{class:"material-symbols-rounded cursor-pointer",onClick:c[1]||(c[1]=w=>i.value=!i.value)},b(i.value?"visibility":"visibility_off"),1)],2))}},L=V(_t,[["__scopeId","data-v-5e026540"]]),Z="reAudioPlayer One",mt=`https://audius.co/oauth/auth?scope=read&app_name=${Z}&redirect_uri=`,vt="/audius/callback",ht=()=>{const l=encodeURIComponent(`${window.location.origin}${vt}`),e=`${mt}${l}`;window.open(e,Z,"width=500,height=800")},yt=t("summary",{class:"cursor-pointer"},"How to",-1),ft=t("p",null,[N(" 1) Head over to the "),t("a",{href:"https://developer.spotify.com/dashboard/applications",target:"_blank"},"spotify developer dashboard")],-1),bt=t("p",null,"2) Create An App",-1),gt=t("p",null,"3) Enter any name and any description",-1),kt=t("p",null," 5) Copy and enter the client id and secret into the corresponding input field ",-1),wt=t("hr",{class:"my-4"},null,-1),xt=t("h5",null,"Client ID:",-1),$t=t("h5",{class:"mt-4"},"Client Secret:",-1),St=t("h3",{class:"mt-[10px]"},"Github",-1),Ct=t("h5",{class:"mt-4"},"PAT:",-1),Vt=t("h5",{class:"mt-4"},"Gist ID:",-1),Pt={class:"flex gap-4 justify-end mt-4"},It=t("h3",{class:"mt-[10px]"},"Audius",-1),At=S({__name:"Integration",setup(l){const e=y(!1),s=y({id:"",secret:""}),p=D(()=>e.value?Object.values(s.value).some(r=>r==="")?!1:s.value.id!==n.value.id||s.value.secret!==n.value.secret||e.value!==n.value.enabled:n.value.enabled),n=y({id:"",secret:"",enabled:!1});fetch("/api/config/spotify").then(async r=>{let u={id:"",secret:"",enabled:!1};if(r.status==200)u=await r.json();else if([204,401].includes(r.status))u={id:"restricted",secret:"restricted",enabled:!1};else throw new Error("Failed to fetch spotify config");n.value=u,n.value.enabled=![u.id,u.secret].includes("restricted"),e.value=n.value.enabled,s.value.id=u.id.replace("restricted",""),s.value.secret=u.secret.replace("restricted","")});const d=async()=>{if(!p.value)return;let r=s.value.id,u=s.value.secret;e.value||(u=r="restricted"),(await fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:r,secret:u})})).ok&&(n.value={id:r,secret:u,enabled:e.value})},a=y(null),i=y("");M().then(r=>{a.value=r,i.value=JSON.stringify(r)});const h=D(()=>a.value?JSON.stringify(a.value)!==i.value:!1),c=async()=>{h.value&&(await Y(a.value),i.value=JSON.stringify(a.value))},v=`http://${window.location.host}/api/spotify/callback`,P=async()=>{var r,u;(u=(r=a.value)==null?void 0:r.github)!=null&&u.githubPat&&(a.value.github.gistId||(a.value.github.gistId=await ue.search(a.value.github.githubPat),a.value.github.gistId||oe.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 j(()=>{var r,u;return(u=(r=a.value)==null?void 0:r.github)==null?void 0:u.githubPat},P),(r,u)=>(o(),_(x,null,[m(A,{modelValue:e.value,"onUpdate:modelValue":u[0]||(u[0]=g=>e.value=g),class:"h3 mb-2",label:"Spotify"},null,8,["modelValue"]),t("details",null,[yt,ft,bt,gt,t("p",null,[N(" 4) Edit the settings: set the redirect url to "),t("a",{href:v},b(v))]),kt]),wt,xt,m(L,{modelValue:s.value.id,"onUpdate:modelValue":u[1]||(u[1]=g=>s.value.id=g),disabled:!e.value,icon:"token"},null,8,["modelValue","disabled"]),$t,m(L,{modelValue:s.value.secret,"onUpdate:modelValue":u[2]||(u[2]=g=>s.value.secret=g),disabled:!e.value,icon:"lock"},null,8,["modelValue","disabled"]),m($,{disabled:!p.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:d},null,8,["disabled"]),St,Ct,a.value?(o(),k(L,{key:0,modelValue:a.value.github.githubPat,"onUpdate:modelValue":u[3]||(u[3]=g=>a.value.github.githubPat=g),icon:"lock"},null,8,["modelValue"])):C("",!0),Vt,a.value?(o(),k(se,{key:1,modelValue:a.value.github.gistId,"onUpdate:modelValue":u[4]||(u[4]=g=>a.value.github.gistId=g),icon:"numbers"},null,8,["modelValue"])):C("",!0),t("div",Pt,[m($,{disabled:!a.value||!a.value.github.githubPat||!!a.value.github.gistId,icon:"search",label:"Search",onClick:P},null,8,["disabled"]),m($,{disabled:!a.value||!h.value,icon:"save",label:"Save",onClick:c},null,8,["disabled"])]),It,m($,{icon:"link",label:"Connect",onClick:f(ht)},null,8,["onClick"])],64))}}),Dt={class:"flex items-center gap-2"},Nt=S({__name:"Developer",setup(l){E();const e=()=>{fetch("/api/system/kill")},s=()=>{fetch("/api/system/restart/nginx")};return(p,n)=>(o(),_("div",Dt,[m($,{icon:"refresh",label:"Restart",onClick:e,type:"danger"}),m($,{icon:"refresh",label:"Restart Nginx",onClick:s})]))}}),Tt=l=>(B("data-v-2a5c5e34"),l=l(),U(),l),Bt={class:"p-[10px] preferences"},Ut=Tt(()=>t("h1",{class:"w-full"},"Preferences",-1)),Et={class:"wrapper"},Ot={class:"sections flex flex-col"},Lt={class:"section p-2"},Gt={class:"h5 text-sm"},Rt=S({__name:"index",setup(l){const e=E(),s={About:ge,Privacy:Me,"Local Data":qe,Integrations:At,"Cache Policy":Xe,Appearance:rt,Player:ut,Developer:Nt},p=D(()=>{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}),n=ne(),d=ie();let a=n.query.tab;const i=y("About");return Object.keys(s).includes(a)&&(i.value=a),j(i,h=>{const c={tab:h};d.replace({query:c})}),(h,c)=>(o(),_("div",Bt,[Ut,t("div",Et,[t("div",Ot,[(o(!0),_(x,null,I(p.value,w=>(o(),_("div",Lt,[t("span",Gt,b(w.name),1),(o(!0),_(x,null,I(w.items,v=>(o(),k(pe,{key:v,name:v,active:i.value===v,onClick:P=>i.value=v},null,8,["name","active","onClick"]))),128))]))),256))]),m(R,{class:"content h-max p-4 pt-0"},{default:G(()=>[t("h2",null,b(i.value),1),(o(),k(re(s[i.value])))]),_:1})])]))}});const Ht=V(Rt,[["__scopeId","data-v-2a5c5e34"]]);export{Ht as default}; diff --git a/src/ui/dist/assets/index-26fd52a1.js.gz b/src/ui/dist/assets/index-26fd52a1.js.gz new file mode 100644 index 00000000..0fbf154e Binary files /dev/null and b/src/ui/dist/assets/index-26fd52a1.js.gz differ diff --git a/src/ui/dist/assets/index-474de424.js.gz b/src/ui/dist/assets/index-474de424.js.gz deleted file mode 100644 index 706753e5..00000000 Binary files a/src/ui/dist/assets/index-474de424.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-a96016e0.js b/src/ui/dist/assets/index-4a15a213.js similarity index 98% rename from src/ui/dist/assets/index-a96016e0.js rename to src/ui/dist/assets/index-4a15a213.js index 968d6252..04bfec39 100644 --- a/src/ui/dist/assets/index-a96016e0.js +++ b/src/ui/dist/assets/index-4a15a213.js @@ -23,7 +23,7 @@ Details: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image`));re * vue-router v4.3.0 * (c) 2024 Eduardo San Martin Morote * @license MIT - */const Ti=typeof document<"u";function vS(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ut=Object.assign;function _u(e,t){const r={};for(const s in t){const o=t[s];r[s]=$n(o)?o.map(e):e(o)}return r}const Ds=()=>{},$n=Array.isArray,Rg=/#/g,yS=/&/g,_S=/\//g,bS=/=/g,wS=/\?/g,Tg=/\+/g,AS=/%5B/g,xS=/%5D/g,Ig=/%5E/g,PS=/%60/g,Mg=/%7B/g,CS=/%7C/g,Lg=/%7D/g,ES=/%20/g;function Rc(e){return encodeURI(""+e).replace(CS,"|").replace(AS,"[").replace(xS,"]")}function SS(e){return Rc(e).replace(Mg,"{").replace(Lg,"}").replace(Ig,"^")}function Zu(e){return Rc(e).replace(Tg,"%2B").replace(ES,"+").replace(Rg,"%23").replace(yS,"%26").replace(PS,"`").replace(Mg,"{").replace(Lg,"}").replace(Ig,"^")}function kS(e){return Zu(e).replace(bS,"%3D")}function OS(e){return Rc(e).replace(Rg,"%23").replace(wS,"%3F")}function RS(e){return e==null?"":OS(e).replace(_S,"%2F")}function zs(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const TS=/\/$/,IS=e=>e.replace(TS,"");function bu(e,t,r="/"){let s,o={},l="",u="";const c=t.indexOf("#");let f=t.indexOf("?");return c=0&&(f=-1),f>-1&&(s=t.slice(0,f),l=t.slice(f+1,c>-1?c:t.length),o=e(l)),c>-1&&(s=s||t.slice(0,c),u=t.slice(c,t.length)),s=DS(s??t,r),{fullPath:s+(l&&"?")+l+u,path:s,query:o,hash:zs(u)}}function MS(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function hp(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function LS(e,t,r){const s=t.matched.length-1,o=r.matched.length-1;return s>-1&&s===o&&Yi(t.matched[s],r.matched[o])&&$g(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function Yi(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function $g(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!$S(e[r],t[r]))return!1;return!0}function $S(e,t){return $n(e)?pp(e,t):$n(t)?pp(t,e):e===t}function pp(e,t){return $n(t)?e.length===t.length&&e.every((r,s)=>r===t[s]):e.length===1&&e[0]===t}function DS(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let l=r.length-1,u,c;for(u=0;u1&&l--;else break;return r.slice(0,l).join("/")+"/"+s.slice(u).join("/")}var Ys;(function(e){e.pop="pop",e.push="push"})(Ys||(Ys={}));var Ns;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ns||(Ns={}));function NS(e){if(!e)if(Ti){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),IS(e)}const BS=/^[^#]+#/;function VS(e,t){return e.replace(BS,"#")+t}function WS(e,t){const r=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-r.left-(t.left||0),top:s.top-r.top-(t.top||0)}}const Ga=()=>({left:window.scrollX,top:window.scrollY});function FS(e){let t;if("el"in e){const r=e.el,s=typeof r=="string"&&r.startsWith("#"),o=typeof r=="string"?s?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!o)return;t=WS(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 mp(e,t){return(history.state?history.state.position-t:-1)+e}const Ju=new Map;function HS(e,t){Ju.set(e,t)}function US(e){const t=Ju.get(e);return Ju.delete(e),t}let qS=()=>location.protocol+"//"+location.host;function Dg(e,t){const{pathname:r,search:s,hash:o}=t,l=e.indexOf("#");if(l>-1){let c=o.includes(e.slice(l))?e.slice(l).length:1,f=o.slice(c);return f[0]!=="/"&&(f="/"+f),hp(f,"")}return hp(r,e)+s+o}function jS(e,t,r,s){let o=[],l=[],u=null;const c=({state:g})=>{const y=Dg(e,location),S=r.value,x=t.value;let T=0;if(g){if(r.value=y,t.value=g,u&&u===S){u=null;return}T=x?g.position-x.position:0}else s(y);o.forEach(V=>{V(r.value,S,{delta:T,type:Ys.pop,direction:T?T>0?Ns.forward:Ns.back:Ns.unknown})})};function f(){u=r.value}function p(g){o.push(g);const y=()=>{const S=o.indexOf(g);S>-1&&o.splice(S,1)};return l.push(y),y}function h(){const{history:g}=window;g.state&&g.replaceState(ut({},g.state,{scroll:Ga()}),"")}function m(){for(const g of l)g();l=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",h)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",h,{passive:!0}),{pauseListeners:f,listen:p,destroy:m}}function gp(e,t,r,s=!1,o=!1){return{back:e,current:t,forward:r,replaced:s,position:window.history.length,scroll:o?Ga():null}}function KS(e){const{history:t,location:r}=window,s={value:Dg(e,r)},o={value:t.state};o.value||l(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(f,p,h){const m=e.indexOf("#"),g=m>-1?(r.host&&document.querySelector("base")?e:e.slice(m))+f:qS()+e+f;try{t[h?"replaceState":"pushState"](p,"",g),o.value=p}catch(y){console.error(y),r[h?"replace":"assign"](g)}}function u(f,p){const h=ut({},t.state,gp(o.value.back,f,o.value.forward,!0),p,{position:o.value.position});l(f,h,!0),s.value=f}function c(f,p){const h=ut({},o.value,t.state,{forward:f,scroll:Ga()});l(h.current,h,!0);const m=ut({},gp(s.value,f,null),{position:h.position+1},p);l(f,m,!1),s.value=f}return{location:s,state:o,push:c,replace:u}}function GS(e){e=NS(e);const t=KS(e),r=jS(e,t.state,t.location,t.replace);function s(l,u=!0){u||r.pauseListeners(),history.go(l)}const o=ut({location:"",base:e,go:s,createHref:VS.bind(null,e)},t,r);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function zS(e){return typeof e=="string"||e&&typeof e=="object"}function Ng(e){return typeof e=="string"||typeof e=="symbol"}const Pr={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Bg=Symbol("");var vp;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(vp||(vp={}));function Zi(e,t){return ut(new Error,{type:e,[Bg]:!0},t)}function rr(e,t){return e instanceof Error&&Bg in e&&(t==null||!!(e.type&t))}const yp="[^/]+?",YS={sensitive:!1,strict:!1,start:!0,end:!0},ZS=/[.+*?^${}()[\]/\\]/g;function JS(e,t){const r=ut({},YS,t),s=[];let o=r.start?"^":"";const l=[];for(const p of e){const h=p.length?[]:[90];r.strict&&!p.length&&(o+="/");for(let m=0;mt.length?t.length===1&&t[0]===40+40?1:-1:0}function QS(e,t){let r=0;const s=e.score,o=t.score;for(;r0&&t[t.length-1]<0}const ek={type:0,value:""},tk=/[a-zA-Z0-9_]/;function nk(e){if(!e)return[[]];if(e==="/")return[[ek]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(y){throw new Error(`ERR (${r})/"${p}": ${y}`)}let r=0,s=r;const o=[];let l;function u(){l&&o.push(l),l=[]}let c=0,f,p="",h="";function m(){p&&(r===0?l.push({type:0,value:p}):r===1||r===2||r===3?(l.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${p}) must be alone in its segment. eg: '/:ids+.`),l.push({type:1,value:p,regexp:h,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),p="")}function g(){p+=f}for(;c{u(B)}:Ds}function u(h){if(Ng(h)){const m=s.get(h);m&&(s.delete(h),r.splice(r.indexOf(m),1),m.children.forEach(u),m.alias.forEach(u))}else{const m=r.indexOf(h);m>-1&&(r.splice(m,1),h.record.name&&s.delete(h.record.name),h.children.forEach(u),h.alias.forEach(u))}}function c(){return r}function f(h){let m=0;for(;m=0&&(h.record.path!==r[m].record.path||!Vg(h,r[m]));)m++;r.splice(m,0,h),h.record.name&&!wp(h)&&s.set(h.record.name,h)}function p(h,m){let g,y={},S,x;if("name"in h&&h.name){if(g=s.get(h.name),!g)throw Zi(1,{location:h});x=g.record.name,y=ut(bp(m.params,g.keys.filter(B=>!B.optional).concat(g.parent?g.parent.keys.filter(B=>B.optional):[]).map(B=>B.name)),h.params&&bp(h.params,g.keys.map(B=>B.name))),S=g.stringify(y)}else if(h.path!=null)S=h.path,g=r.find(B=>B.re.test(S)),g&&(y=g.parse(S),x=g.record.name);else{if(g=m.name?s.get(m.name):r.find(B=>B.re.test(m.path)),!g)throw Zi(1,{location:h,currentLocation:m});x=g.record.name,y=ut({},m.params,h.params),S=g.stringify(y)}const T=[];let V=g;for(;V;)T.unshift(V.record),V=V.parent;return{name:x,path:S,params:y,matched:T,meta:ak(T)}}return e.forEach(h=>l(h)),{addRoute:l,resolve:p,removeRoute:u,getRoutes:c,getRecordMatcher:o}}function bp(e,t){const r={};for(const s of t)s in e&&(r[s]=e[s]);return r}function sk(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:ok(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function ok(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const s in e.components)t[s]=typeof r=="object"?r[s]:r;return t}function wp(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ak(e){return e.reduce((t,r)=>ut(t,r.meta),{})}function Ap(e,t){const r={};for(const s in e)r[s]=s in t?t[s]:e[s];return r}function Vg(e,t){return t.children.some(r=>r===e||Vg(e,r))}function lk(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;ol&&Zu(l)):[s&&Zu(s)]).forEach(l=>{l!==void 0&&(t+=(t.length?"&":"")+r,l!=null&&(t+="="+l))})}return t}function uk(e){const t={};for(const r in e){const s=e[r];s!==void 0&&(t[r]=$n(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const ck=Symbol(""),Pp=Symbol(""),za=Symbol(""),Tc=Symbol(""),Xu=Symbol("");function ws(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Tr(e,t,r,s,o,l=u=>u()){const u=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((c,f)=>{const p=g=>{g===!1?f(Zi(4,{from:r,to:t})):g instanceof Error?f(g):zS(g)?f(Zi(2,{from:t,to:g})):(u&&s.enterCallbacks[o]===u&&typeof g=="function"&&u.push(g),c())},h=l(()=>e.call(s&&s.instances[o],t,r,p));let m=Promise.resolve(h);e.length<3&&(m=m.then(p)),m.catch(g=>f(g))})}function wu(e,t,r,s,o=l=>l()){const l=[];for(const u of e)for(const c in u.components){let f=u.components[c];if(!(t!=="beforeRouteEnter"&&!u.instances[c]))if(fk(f)){const h=(f.__vccOpts||f)[t];h&&l.push(Tr(h,r,s,u,c,o))}else{let p=f();l.push(()=>p.then(h=>{if(!h)return Promise.reject(new Error(`Couldn't resolve component "${c}" at "${u.path}"`));const m=vS(h)?h.default:h;u.components[c]=m;const y=(m.__vccOpts||m)[t];return y&&Tr(y,r,s,u,c,o)()}))}}return l}function fk(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Cp(e){const t=on(za),r=on(Tc),s=Ve(()=>t.resolve(oe(e.to))),o=Ve(()=>{const{matched:f}=s.value,{length:p}=f,h=f[p-1],m=r.matched;if(!h||!m.length)return-1;const g=m.findIndex(Yi.bind(null,h));if(g>-1)return g;const y=Ep(f[p-2]);return p>1&&Ep(h)===y&&m[m.length-1].path!==y?m.findIndex(Yi.bind(null,f[p-2])):g}),l=Ve(()=>o.value>-1&&mk(r.params,s.value.params)),u=Ve(()=>o.value>-1&&o.value===r.matched.length-1&&$g(r.params,s.value.params));function c(f={}){return pk(f)?t[oe(e.replace)?"replace":"push"](oe(e.to)).catch(Ds):Promise.resolve()}return{route:s,href:Ve(()=>s.value.href),isActive:l,isExactActive:u,navigate:c}}const dk=Ge({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:Cp,setup(e,{slots:t}){const r=Xi(Cp(e)),{options:s}=on(za),o=Ve(()=>({[Sp(e.activeClass,s.linkActiveClass,"router-link-active")]:r.isActive,[Sp(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const l=t.default&&t.default(r);return e.custom?l:wc("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:o.value},l)}}}),hk=dk;function pk(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 mk(e,t){for(const r in t){const s=t[r],o=e[r];if(typeof s=="string"){if(s!==o)return!1}else if(!$n(o)||o.length!==s.length||s.some((l,u)=>l!==o[u]))return!1}return!0}function Ep(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Sp=(e,t,r)=>e??t??r,gk=Ge({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const s=on(Xu),o=Ve(()=>e.route||s.value),l=on(Pp,0),u=Ve(()=>{let p=oe(l);const{matched:h}=o.value;let m;for(;(m=h[p])&&!m.components;)p++;return p}),c=Ve(()=>o.value.matched[u.value]);Ir(Pp,Ve(()=>u.value+1)),Ir(ck,c),Ir(Xu,o);const f=Pe();return st(()=>[f.value,c.value,e.name],([p,h,m],[g,y,S])=>{h&&(h.instances[m]=p,y&&y!==h&&p&&p===g&&(h.leaveGuards.size||(h.leaveGuards=y.leaveGuards),h.updateGuards.size||(h.updateGuards=y.updateGuards))),p&&h&&(!y||!Yi(h,y)||!g)&&(h.enterCallbacks[m]||[]).forEach(x=>x(p))},{flush:"post"}),()=>{const p=o.value,h=e.name,m=c.value,g=m&&m.components[h];if(!g)return kp(r.default,{Component:g,route:p});const y=m.props[h],S=y?y===!0?p.params:typeof y=="function"?y(p):y:null,T=wc(g,ut({},S,t,{onVnodeUnmounted:V=>{V.component.isUnmounted&&(m.instances[h]=null)},ref:f}));return kp(r.default,{Component:T,route:p})||T}}});function kp(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const vk=gk;function yk(e){const t=ik(e.routes,e),r=e.parseQuery||lk,s=e.stringifyQuery||xp,o=e.history,l=ws(),u=ws(),c=ws(),f=xx(Pr);let p=Pr;Ti&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const h=_u.bind(null,X=>""+X),m=_u.bind(null,RS),g=_u.bind(null,zs);function y(X,se){let he,Ae;return Ng(X)?(he=t.getRecordMatcher(X),Ae=se):Ae=X,t.addRoute(Ae,he)}function S(X){const se=t.getRecordMatcher(X);se&&t.removeRoute(se)}function x(){return t.getRoutes().map(X=>X.record)}function T(X){return!!t.getRecordMatcher(X)}function V(X,se){if(se=ut({},se||f.value),typeof X=="string"){const L=bu(r,X,se.path),J=t.resolve({path:L.path},se),ue=o.createHref(L.fullPath);return ut(L,J,{params:g(J.params),hash:zs(L.hash),redirectedFrom:void 0,href:ue})}let he;if(X.path!=null)he=ut({},X,{path:bu(r,X.path,se.path).path});else{const L=ut({},X.params);for(const J in L)L[J]==null&&delete L[J];he=ut({},X,{params:m(L)}),se.params=m(se.params)}const Ae=t.resolve(he,se),Oe=X.hash||"";Ae.params=h(g(Ae.params));const je=MS(s,ut({},X,{hash:SS(Oe),path:Ae.path})),O=o.createHref(je);return ut({fullPath:je,hash:Oe,query:s===xp?uk(X.query):X.query||{}},Ae,{redirectedFrom:void 0,href:O})}function B(X){return typeof X=="string"?bu(r,X,f.value.path):ut({},X)}function P(X,se){if(p!==X)return Zi(8,{from:se,to:X})}function k(X){return q(X)}function R(X){return k(ut(B(X),{replace:!0}))}function M(X){const se=X.matched[X.matched.length-1];if(se&&se.redirect){const{redirect:he}=se;let Ae=typeof he=="function"?he(X):he;return typeof Ae=="string"&&(Ae=Ae.includes("?")||Ae.includes("#")?Ae=B(Ae):{path:Ae},Ae.params={}),ut({query:X.query,hash:X.hash,params:Ae.path!=null?{}:X.params},Ae)}}function q(X,se){const he=p=V(X),Ae=f.value,Oe=X.state,je=X.force,O=X.replace===!0,L=M(he);if(L)return q(ut(B(L),{state:typeof L=="object"?ut({},Oe,L.state):Oe,force:je,replace:O}),se||he);const J=he;J.redirectedFrom=se;let ue;return!je&&LS(s,Ae,he)&&(ue=Zi(16,{to:J,from:Ae}),b(Ae,Ae,!0,!1)),(ue?Promise.resolve(ue):U(J,Ae)).catch(ne=>rr(ne)?rr(ne,2)?ne:N(ne):_(ne,J,Ae)).then(ne=>{if(ne){if(rr(ne,2))return q(ut({replace:O},B(ne.to),{state:typeof ne.to=="object"?ut({},Oe,ne.to.state):Oe,force:je}),se||J)}else ne=K(J,Ae,!0,O,Oe);return G(J,Ae,ne),ne})}function W(X,se){const he=P(X,se);return he?Promise.reject(he):Promise.resolve()}function j(X){const se=Ce.values().next().value;return se&&typeof se.runWithContext=="function"?se.runWithContext(X):X()}function U(X,se){let he;const[Ae,Oe,je]=_k(X,se);he=wu(Ae.reverse(),"beforeRouteLeave",X,se);for(const L of Ae)L.leaveGuards.forEach(J=>{he.push(Tr(J,X,se))});const O=W.bind(null,X,se);return he.push(O),ke(he).then(()=>{he=[];for(const L of l.list())he.push(Tr(L,X,se));return he.push(O),ke(he)}).then(()=>{he=wu(Oe,"beforeRouteUpdate",X,se);for(const L of Oe)L.updateGuards.forEach(J=>{he.push(Tr(J,X,se))});return he.push(O),ke(he)}).then(()=>{he=[];for(const L of je)if(L.beforeEnter)if($n(L.beforeEnter))for(const J of L.beforeEnter)he.push(Tr(J,X,se));else he.push(Tr(L.beforeEnter,X,se));return he.push(O),ke(he)}).then(()=>(X.matched.forEach(L=>L.enterCallbacks={}),he=wu(je,"beforeRouteEnter",X,se,j),he.push(O),ke(he))).then(()=>{he=[];for(const L of u.list())he.push(Tr(L,X,se));return he.push(O),ke(he)}).catch(L=>rr(L,8)?L:Promise.reject(L))}function G(X,se,he){c.list().forEach(Ae=>j(()=>Ae(X,se,he)))}function K(X,se,he,Ae,Oe){const je=P(X,se);if(je)return je;const O=se===Pr,L=Ti?history.state:{};he&&(Ae||O?o.replace(X.fullPath,ut({scroll:O&&L&&L.scroll},Oe)):o.push(X.fullPath,Oe)),f.value=X,b(X,se,he,O),N()}let H;function E(){H||(H=o.listen((X,se,he)=>{if(!_e.listening)return;const Ae=V(X),Oe=M(Ae);if(Oe){q(ut(Oe,{replace:!0}),Ae).catch(Ds);return}p=Ae;const je=f.value;Ti&&HS(mp(je.fullPath,he.delta),Ga()),U(Ae,je).catch(O=>rr(O,12)?O:rr(O,2)?(q(O.to,Ae).then(L=>{rr(L,20)&&!he.delta&&he.type===Ys.pop&&o.go(-1,!1)}).catch(Ds),Promise.reject()):(he.delta&&o.go(-he.delta,!1),_(O,Ae,je))).then(O=>{O=O||K(Ae,je,!1),O&&(he.delta&&!rr(O,8)?o.go(-he.delta,!1):he.type===Ys.pop&&rr(O,20)&&o.go(-1,!1)),G(Ae,je,O)}).catch(Ds)}))}let I=ws(),D=ws(),A;function _(X,se,he){N(X);const Ae=D.list();return Ae.length?Ae.forEach(Oe=>Oe(X,se,he)):console.error(X),Promise.reject(X)}function Y(){return A&&f.value!==Pr?Promise.resolve():new Promise((X,se)=>{I.add([X,se])})}function N(X){return A||(A=!X,E(),I.list().forEach(([se,he])=>X?he(X):se()),I.reset()),X}function b(X,se,he,Ae){const{scrollBehavior:Oe}=e;if(!Ti||!Oe)return Promise.resolve();const je=!he&&US(mp(X.fullPath,0))||(Ae||!he)&&history.state&&history.state.scroll||null;return Kn().then(()=>Oe(X,se,je)).then(O=>O&&FS(O)).catch(O=>_(O,X,se))}const Q=X=>o.go(X);let de;const Ce=new Set,_e={currentRoute:f,listening:!0,addRoute:y,removeRoute:S,hasRoute:T,getRoutes:x,resolve:V,options:e,push:k,replace:R,go:Q,back:()=>Q(-1),forward:()=>Q(1),beforeEach:l.add,beforeResolve:u.add,afterEach:c.add,onError:D.add,isReady:Y,install(X){const se=this;X.component("RouterLink",hk),X.component("RouterView",vk),X.config.globalProperties.$router=se,Object.defineProperty(X.config.globalProperties,"$route",{enumerable:!0,get:()=>oe(f)}),Ti&&!de&&f.value===Pr&&(de=!0,k(o.location).catch(Oe=>{}));const he={};for(const Oe in Pr)Object.defineProperty(he,Oe,{get:()=>f.value[Oe],enumerable:!0});X.provide(za,se),X.provide(Tc,am(he)),X.provide(Xu,f);const Ae=X.unmount;Ce.add(X),X.unmount=function(){Ce.delete(X),Ce.size<1&&(p=Pr,H&&H(),H=null,f.value=Pr,de=!1,A=!1),Ae()}}};function ke(X){return X.reduce((se,he)=>se.then(()=>j(he)),Promise.resolve())}return _e}function _k(e,t){const r=[],s=[],o=[],l=Math.max(t.matched.length,e.matched.length);for(let u=0;uYi(p,c))?s.push(c):r.push(c));const f=e.matched[u];f&&(t.matched.find(p=>Yi(p,f))||o.push(f))}return[r,s,o]}function bk(){return on(za)}function Ic(){return on(Tc)}const wk=[{path:"/",component:()=>pt(()=>import("./index-72186d7f.js"),["assets/index-72186d7f.js","assets/PlaylistCard-200edd27.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/TrackCompact-8cd47625.js","assets/TrackCompact-79c8b159.css","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/PlaylistEntry-7f3947eb.css","assets/spotify-9bae3b48.js","assets/index-0ded4f06.css"])},{path:"/discover",component:()=>pt(()=>import("./Explore-d53ca56f.js"),["assets/Explore-d53ca56f.js","assets/Explore-d8c77810.css"]),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:()=>pt(()=>import("./index-474de424.js"),["assets/index-474de424.js","assets/index-2f9f0259.css"]),meta:{title:"Search - reAudioPlayer One"}},{path:"/collection/albums",component:()=>pt(()=>import("./index-24d50f88.js"),["assets/index-24d50f88.js","assets/FullShelf-26be5033.js","assets/FullShelf-62d1d109.css","assets/Error-2928541c.js","assets/Error-f18c7956.css","assets/PlaylistCard-200edd27.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/artists",component:()=>pt(()=>import("./index-24d50f88.js"),["assets/index-24d50f88.js","assets/FullShelf-26be5033.js","assets/FullShelf-62d1d109.css","assets/Error-2928541c.js","assets/Error-f18c7956.css","assets/PlaylistCard-200edd27.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/playlists",component:()=>pt(()=>import("./index-24d50f88.js"),["assets/index-24d50f88.js","assets/FullShelf-26be5033.js","assets/FullShelf-62d1d109.css","assets/Error-2928541c.js","assets/Error-f18c7956.css","assets/PlaylistCard-200edd27.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/releases",component:()=>pt(()=>import("./index-24d50f88.js"),["assets/index-24d50f88.js","assets/FullShelf-26be5033.js","assets/FullShelf-62d1d109.css","assets/Error-2928541c.js","assets/Error-f18c7956.css","assets/PlaylistCard-200edd27.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Releases - reAudioPlayer One"}},{path:"/collection/tracks",component:()=>pt(()=>import("./Liked-a242cd86.js"),["assets/Liked-a242cd86.js","assets/Template-d00bcc07.js","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-31c73142.js","assets/FactCard-5b41eb1a.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-de41c06b.js","assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js","assets/Markdown-d883632e.css","assets/Template-b827c26f.css"]),meta:{title:"Liked Songs - reAudioPlayer One"}},{path:"/collection/tracks/breaking",component:()=>pt(()=>import("./Breaking-631b2bc3.js"),["assets/Breaking-631b2bc3.js","assets/Template-d00bcc07.js","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-31c73142.js","assets/FactCard-5b41eb1a.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-de41c06b.js","assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js","assets/Markdown-d883632e.css","assets/Template-b827c26f.css"]),meta:{title:"Breaking Songs - reAudioPlayer One"}},{path:"/playlist/create",component:()=>pt(()=>import("./Create-d963d433.js"),["assets/Create-d963d433.js","assets/Create-8ab3526b.css"]),meta:{title:"Create Playlist - reAudioPlayer One"}},{path:"/playlist/:id/edit",component:()=>pt(()=>import("./Editor-89cea9ee.js"),["assets/Editor-89cea9ee.js","assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-31c73142.js","assets/Editor-133a20fa.css"]),meta:{title:"Smart Playlist Editor - reAudioPlayer One"}},{path:"/playlist/:id",component:()=>pt(()=>import("./Normal-acd2f729.js"),["assets/Normal-acd2f729.js","assets/Template-d00bcc07.js","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-31c73142.js","assets/FactCard-5b41eb1a.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-de41c06b.js","assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js","assets/Markdown-d883632e.css","assets/Template-b827c26f.css"]),meta:{title:"Playlist - reAudioPlayer One"}},{path:"/track/:hash",component:()=>pt(()=>import("./Track-8198e691.js"),["assets/Track-8198e691.js","assets/FactCard-5b41eb1a.js","assets/FactCard-3c5d1fcf.css","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/spotify-9bae3b48.js","assets/Track-c081b8b5.css"]),meta:{title:"Track - reAudioPlayer One"}},{path:"/artist/:name",component:()=>pt(()=>import("./Artist-a34a6707.js"),["assets/Artist-a34a6707.js","assets/FactCard-5b41eb1a.js","assets/FactCard-3c5d1fcf.css","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/spotify-9bae3b48.js","assets/Artist-c9fc4a3d.css"]),meta:{title:"Artist - reAudioPlayer One"}},{path:"/album/:hash",component:()=>pt(()=>import("./Album-53489ebb.js"),["assets/Album-53489ebb.js","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/Album-8d95da06.css"]),meta:{title:"Album - reAudioPlayer One"}},{path:"/preferences",component:()=>pt(()=>import("./index-b34db81f.js"),["assets/index-b34db81f.js","assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js","assets/Markdown-d883632e.css","assets/TrackCompact-8cd47625.js","assets/TrackCompact-79c8b159.css","assets/gistClient-de41c06b.js","assets/index-09bbebd0.css"]),meta:{title:"Preferences - reAudioPlayer One"}},{path:"/import",component:()=>pt(()=>import("./Import-c20db5b8.js"),["assets/Import-c20db5b8.js","assets/gistClient-de41c06b.js","assets/Import-15b3ffd5.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/import/:id",component:()=>pt(()=>import("./ImportLink-8f18354c.js"),["assets/ImportLink-8f18354c.js","assets/ImportLink-fa9af2ae.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/export",component:()=>pt(()=>import("./Export-5d7b27d8.js"),["assets/Export-5d7b27d8.js","assets/gistClient-de41c06b.js","assets/Export-a03f6dd4.css"]),meta:{title:"Export - reAudioPlayer One"}},{path:"/sing-along",component:()=>pt(()=>import("./index-dff95c16.js"),["assets/index-dff95c16.js","assets/index-fd630165.css"]),meta:{title:"Sing Along - reAudioPlayer One"}},{path:"/download",component:()=>pt(()=>import("./index-66efdb37.js"),["assets/index-66efdb37.js","assets/index-fd8d909d.css"]),meta:{title:"Download - reAudioPlayer One"}},{path:"/welcome",component:()=>pt(()=>import("./Welcome-09f50d44.js"),["assets/Welcome-09f50d44.js","assets/Welcome-5b21c29e.css"]),meta:{title:"Welcome to reAudioPlayer One"}},{path:"/news",component:()=>pt(()=>import("./News-a194d0da.js"),["assets/News-a194d0da.js","assets/FullShelf-26be5033.js","assets/FullShelf-62d1d109.css","assets/News-eb982e2f.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/sports",component:()=>pt(()=>import("./Sports-0934b423.js"),["assets/Sports-0934b423.js","assets/FullShelf-26be5033.js","assets/FullShelf-62d1d109.css","assets/Sports-ad2591fa.css"]),meta:{title:"Sports - reAudioPlayer One"}},{path:"/news/:url",component:()=>pt(()=>import("./NewsArticle-606fce7c.js"),["assets/NewsArticle-606fce7c.js","assets/Error-2928541c.js","assets/Error-f18c7956.css","assets/NewsArticle-2facc133.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/player/insights",component:()=>pt(()=>import("./Insight-28f80cf4.js"),["assets/Insight-28f80cf4.js","assets/Insight-ab13ce31.css"]),meta:{title:"Insights - reAudioPlayer One"}},{path:"/player",component:()=>pt(()=>import("./BigPlayer-c3f89a47.js"),["assets/BigPlayer-c3f89a47.js","assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js","assets/PlaylistEntry-35a3078f.js","assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-31c73142.js","assets/PlaylistCard-200edd27.js","assets/PlaylistCard-03dfa529.css","assets/BigPlayer-199abb6d.css"]),meta:{title:"reAudioPlayer One"}}],Ii=yk({history:GS(),routes:wk}),Ak=["placeholder","type"],xk=Ge({__name:"TextInputWithIcon",props:{icon:String,placeholder:String,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:r}){const s=e,o=Pe(s.modelValue);st(()=>s.modelValue,p=>{o.value=p});const l=r,u=()=>{l("update:modelValue",o.value),l("change",o.value)},c=p=>{s.onKeyUp&&s.onKeyUp(p)||p.key==="Enter"&&l("submit",o)},f=Pe();return t({focus:()=>{f.value.focus()}}),(p,h)=>(re(),ye("div",{class:Je(["text-input-with-icon rounded-3xl flex items-center px-4",{expanded:e.expanded}])},[te("span",{class:Je([{"cursor-pointer":e.onClick},"material-symbols-rounded ms-wght-200"]),onClick:h[0]||(h[0]=(...m)=>e.onClick&&e.onClick(...m))},De(e.icon),3),js(te("input",{"onUpdate:modelValue":h[1]||(h[1]=m=>o.value=m),placeholder:e.placeholder,type:e.type,onInput:u,onKeyup:c,onFocusout:h[2]||(h[2]=m=>p.$emit("focusout")),ref_key:"element",ref:f},null,40,Ak),[[xc,o.value]])],2))}});const Qu=at(xk,[["__scopeId","data-v-4b2cd9f3"]]);var As=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Pk(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function fI(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function s(){return this instanceof s?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(s){var o=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(r,s,o.get?o:{enumerable:!0,get:function(){return e[s]}})}),r}var Sa={exports:{}};/** + */const Ti=typeof document<"u";function vS(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ut=Object.assign;function _u(e,t){const r={};for(const s in t){const o=t[s];r[s]=$n(o)?o.map(e):e(o)}return r}const Ds=()=>{},$n=Array.isArray,Rg=/#/g,yS=/&/g,_S=/\//g,bS=/=/g,wS=/\?/g,Tg=/\+/g,AS=/%5B/g,xS=/%5D/g,Ig=/%5E/g,PS=/%60/g,Mg=/%7B/g,CS=/%7C/g,Lg=/%7D/g,ES=/%20/g;function Rc(e){return encodeURI(""+e).replace(CS,"|").replace(AS,"[").replace(xS,"]")}function SS(e){return Rc(e).replace(Mg,"{").replace(Lg,"}").replace(Ig,"^")}function Zu(e){return Rc(e).replace(Tg,"%2B").replace(ES,"+").replace(Rg,"%23").replace(yS,"%26").replace(PS,"`").replace(Mg,"{").replace(Lg,"}").replace(Ig,"^")}function kS(e){return Zu(e).replace(bS,"%3D")}function OS(e){return Rc(e).replace(Rg,"%23").replace(wS,"%3F")}function RS(e){return e==null?"":OS(e).replace(_S,"%2F")}function zs(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const TS=/\/$/,IS=e=>e.replace(TS,"");function bu(e,t,r="/"){let s,o={},l="",u="";const c=t.indexOf("#");let f=t.indexOf("?");return c=0&&(f=-1),f>-1&&(s=t.slice(0,f),l=t.slice(f+1,c>-1?c:t.length),o=e(l)),c>-1&&(s=s||t.slice(0,c),u=t.slice(c,t.length)),s=DS(s??t,r),{fullPath:s+(l&&"?")+l+u,path:s,query:o,hash:zs(u)}}function MS(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function hp(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function LS(e,t,r){const s=t.matched.length-1,o=r.matched.length-1;return s>-1&&s===o&&Yi(t.matched[s],r.matched[o])&&$g(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function Yi(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function $g(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!$S(e[r],t[r]))return!1;return!0}function $S(e,t){return $n(e)?pp(e,t):$n(t)?pp(t,e):e===t}function pp(e,t){return $n(t)?e.length===t.length&&e.every((r,s)=>r===t[s]):e.length===1&&e[0]===t}function DS(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let l=r.length-1,u,c;for(u=0;u1&&l--;else break;return r.slice(0,l).join("/")+"/"+s.slice(u).join("/")}var Ys;(function(e){e.pop="pop",e.push="push"})(Ys||(Ys={}));var Ns;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ns||(Ns={}));function NS(e){if(!e)if(Ti){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),IS(e)}const BS=/^[^#]+#/;function VS(e,t){return e.replace(BS,"#")+t}function WS(e,t){const r=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-r.left-(t.left||0),top:s.top-r.top-(t.top||0)}}const Ga=()=>({left:window.scrollX,top:window.scrollY});function FS(e){let t;if("el"in e){const r=e.el,s=typeof r=="string"&&r.startsWith("#"),o=typeof r=="string"?s?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!o)return;t=WS(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 mp(e,t){return(history.state?history.state.position-t:-1)+e}const Ju=new Map;function HS(e,t){Ju.set(e,t)}function US(e){const t=Ju.get(e);return Ju.delete(e),t}let qS=()=>location.protocol+"//"+location.host;function Dg(e,t){const{pathname:r,search:s,hash:o}=t,l=e.indexOf("#");if(l>-1){let c=o.includes(e.slice(l))?e.slice(l).length:1,f=o.slice(c);return f[0]!=="/"&&(f="/"+f),hp(f,"")}return hp(r,e)+s+o}function jS(e,t,r,s){let o=[],l=[],u=null;const c=({state:g})=>{const y=Dg(e,location),S=r.value,x=t.value;let T=0;if(g){if(r.value=y,t.value=g,u&&u===S){u=null;return}T=x?g.position-x.position:0}else s(y);o.forEach(V=>{V(r.value,S,{delta:T,type:Ys.pop,direction:T?T>0?Ns.forward:Ns.back:Ns.unknown})})};function f(){u=r.value}function p(g){o.push(g);const y=()=>{const S=o.indexOf(g);S>-1&&o.splice(S,1)};return l.push(y),y}function h(){const{history:g}=window;g.state&&g.replaceState(ut({},g.state,{scroll:Ga()}),"")}function m(){for(const g of l)g();l=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",h)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",h,{passive:!0}),{pauseListeners:f,listen:p,destroy:m}}function gp(e,t,r,s=!1,o=!1){return{back:e,current:t,forward:r,replaced:s,position:window.history.length,scroll:o?Ga():null}}function KS(e){const{history:t,location:r}=window,s={value:Dg(e,r)},o={value:t.state};o.value||l(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(f,p,h){const m=e.indexOf("#"),g=m>-1?(r.host&&document.querySelector("base")?e:e.slice(m))+f:qS()+e+f;try{t[h?"replaceState":"pushState"](p,"",g),o.value=p}catch(y){console.error(y),r[h?"replace":"assign"](g)}}function u(f,p){const h=ut({},t.state,gp(o.value.back,f,o.value.forward,!0),p,{position:o.value.position});l(f,h,!0),s.value=f}function c(f,p){const h=ut({},o.value,t.state,{forward:f,scroll:Ga()});l(h.current,h,!0);const m=ut({},gp(s.value,f,null),{position:h.position+1},p);l(f,m,!1),s.value=f}return{location:s,state:o,push:c,replace:u}}function GS(e){e=NS(e);const t=KS(e),r=jS(e,t.state,t.location,t.replace);function s(l,u=!0){u||r.pauseListeners(),history.go(l)}const o=ut({location:"",base:e,go:s,createHref:VS.bind(null,e)},t,r);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function zS(e){return typeof e=="string"||e&&typeof e=="object"}function Ng(e){return typeof e=="string"||typeof e=="symbol"}const Pr={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Bg=Symbol("");var vp;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(vp||(vp={}));function Zi(e,t){return ut(new Error,{type:e,[Bg]:!0},t)}function rr(e,t){return e instanceof Error&&Bg in e&&(t==null||!!(e.type&t))}const yp="[^/]+?",YS={sensitive:!1,strict:!1,start:!0,end:!0},ZS=/[.+*?^${}()[\]/\\]/g;function JS(e,t){const r=ut({},YS,t),s=[];let o=r.start?"^":"";const l=[];for(const p of e){const h=p.length?[]:[90];r.strict&&!p.length&&(o+="/");for(let m=0;mt.length?t.length===1&&t[0]===40+40?1:-1:0}function QS(e,t){let r=0;const s=e.score,o=t.score;for(;r0&&t[t.length-1]<0}const ek={type:0,value:""},tk=/[a-zA-Z0-9_]/;function nk(e){if(!e)return[[]];if(e==="/")return[[ek]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(y){throw new Error(`ERR (${r})/"${p}": ${y}`)}let r=0,s=r;const o=[];let l;function u(){l&&o.push(l),l=[]}let c=0,f,p="",h="";function m(){p&&(r===0?l.push({type:0,value:p}):r===1||r===2||r===3?(l.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${p}) must be alone in its segment. eg: '/:ids+.`),l.push({type:1,value:p,regexp:h,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),p="")}function g(){p+=f}for(;c{u(B)}:Ds}function u(h){if(Ng(h)){const m=s.get(h);m&&(s.delete(h),r.splice(r.indexOf(m),1),m.children.forEach(u),m.alias.forEach(u))}else{const m=r.indexOf(h);m>-1&&(r.splice(m,1),h.record.name&&s.delete(h.record.name),h.children.forEach(u),h.alias.forEach(u))}}function c(){return r}function f(h){let m=0;for(;m=0&&(h.record.path!==r[m].record.path||!Vg(h,r[m]));)m++;r.splice(m,0,h),h.record.name&&!wp(h)&&s.set(h.record.name,h)}function p(h,m){let g,y={},S,x;if("name"in h&&h.name){if(g=s.get(h.name),!g)throw Zi(1,{location:h});x=g.record.name,y=ut(bp(m.params,g.keys.filter(B=>!B.optional).concat(g.parent?g.parent.keys.filter(B=>B.optional):[]).map(B=>B.name)),h.params&&bp(h.params,g.keys.map(B=>B.name))),S=g.stringify(y)}else if(h.path!=null)S=h.path,g=r.find(B=>B.re.test(S)),g&&(y=g.parse(S),x=g.record.name);else{if(g=m.name?s.get(m.name):r.find(B=>B.re.test(m.path)),!g)throw Zi(1,{location:h,currentLocation:m});x=g.record.name,y=ut({},m.params,h.params),S=g.stringify(y)}const T=[];let V=g;for(;V;)T.unshift(V.record),V=V.parent;return{name:x,path:S,params:y,matched:T,meta:ak(T)}}return e.forEach(h=>l(h)),{addRoute:l,resolve:p,removeRoute:u,getRoutes:c,getRecordMatcher:o}}function bp(e,t){const r={};for(const s of t)s in e&&(r[s]=e[s]);return r}function sk(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:ok(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function ok(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const s in e.components)t[s]=typeof r=="object"?r[s]:r;return t}function wp(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ak(e){return e.reduce((t,r)=>ut(t,r.meta),{})}function Ap(e,t){const r={};for(const s in e)r[s]=s in t?t[s]:e[s];return r}function Vg(e,t){return t.children.some(r=>r===e||Vg(e,r))}function lk(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;ol&&Zu(l)):[s&&Zu(s)]).forEach(l=>{l!==void 0&&(t+=(t.length?"&":"")+r,l!=null&&(t+="="+l))})}return t}function uk(e){const t={};for(const r in e){const s=e[r];s!==void 0&&(t[r]=$n(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const ck=Symbol(""),Pp=Symbol(""),za=Symbol(""),Tc=Symbol(""),Xu=Symbol("");function ws(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Tr(e,t,r,s,o,l=u=>u()){const u=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((c,f)=>{const p=g=>{g===!1?f(Zi(4,{from:r,to:t})):g instanceof Error?f(g):zS(g)?f(Zi(2,{from:t,to:g})):(u&&s.enterCallbacks[o]===u&&typeof g=="function"&&u.push(g),c())},h=l(()=>e.call(s&&s.instances[o],t,r,p));let m=Promise.resolve(h);e.length<3&&(m=m.then(p)),m.catch(g=>f(g))})}function wu(e,t,r,s,o=l=>l()){const l=[];for(const u of e)for(const c in u.components){let f=u.components[c];if(!(t!=="beforeRouteEnter"&&!u.instances[c]))if(fk(f)){const h=(f.__vccOpts||f)[t];h&&l.push(Tr(h,r,s,u,c,o))}else{let p=f();l.push(()=>p.then(h=>{if(!h)return Promise.reject(new Error(`Couldn't resolve component "${c}" at "${u.path}"`));const m=vS(h)?h.default:h;u.components[c]=m;const y=(m.__vccOpts||m)[t];return y&&Tr(y,r,s,u,c,o)()}))}}return l}function fk(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Cp(e){const t=on(za),r=on(Tc),s=Ve(()=>t.resolve(oe(e.to))),o=Ve(()=>{const{matched:f}=s.value,{length:p}=f,h=f[p-1],m=r.matched;if(!h||!m.length)return-1;const g=m.findIndex(Yi.bind(null,h));if(g>-1)return g;const y=Ep(f[p-2]);return p>1&&Ep(h)===y&&m[m.length-1].path!==y?m.findIndex(Yi.bind(null,f[p-2])):g}),l=Ve(()=>o.value>-1&&mk(r.params,s.value.params)),u=Ve(()=>o.value>-1&&o.value===r.matched.length-1&&$g(r.params,s.value.params));function c(f={}){return pk(f)?t[oe(e.replace)?"replace":"push"](oe(e.to)).catch(Ds):Promise.resolve()}return{route:s,href:Ve(()=>s.value.href),isActive:l,isExactActive:u,navigate:c}}const dk=Ge({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:Cp,setup(e,{slots:t}){const r=Xi(Cp(e)),{options:s}=on(za),o=Ve(()=>({[Sp(e.activeClass,s.linkActiveClass,"router-link-active")]:r.isActive,[Sp(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const l=t.default&&t.default(r);return e.custom?l:wc("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:o.value},l)}}}),hk=dk;function pk(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 mk(e,t){for(const r in t){const s=t[r],o=e[r];if(typeof s=="string"){if(s!==o)return!1}else if(!$n(o)||o.length!==s.length||s.some((l,u)=>l!==o[u]))return!1}return!0}function Ep(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Sp=(e,t,r)=>e??t??r,gk=Ge({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const s=on(Xu),o=Ve(()=>e.route||s.value),l=on(Pp,0),u=Ve(()=>{let p=oe(l);const{matched:h}=o.value;let m;for(;(m=h[p])&&!m.components;)p++;return p}),c=Ve(()=>o.value.matched[u.value]);Ir(Pp,Ve(()=>u.value+1)),Ir(ck,c),Ir(Xu,o);const f=Pe();return st(()=>[f.value,c.value,e.name],([p,h,m],[g,y,S])=>{h&&(h.instances[m]=p,y&&y!==h&&p&&p===g&&(h.leaveGuards.size||(h.leaveGuards=y.leaveGuards),h.updateGuards.size||(h.updateGuards=y.updateGuards))),p&&h&&(!y||!Yi(h,y)||!g)&&(h.enterCallbacks[m]||[]).forEach(x=>x(p))},{flush:"post"}),()=>{const p=o.value,h=e.name,m=c.value,g=m&&m.components[h];if(!g)return kp(r.default,{Component:g,route:p});const y=m.props[h],S=y?y===!0?p.params:typeof y=="function"?y(p):y:null,T=wc(g,ut({},S,t,{onVnodeUnmounted:V=>{V.component.isUnmounted&&(m.instances[h]=null)},ref:f}));return kp(r.default,{Component:T,route:p})||T}}});function kp(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const vk=gk;function yk(e){const t=ik(e.routes,e),r=e.parseQuery||lk,s=e.stringifyQuery||xp,o=e.history,l=ws(),u=ws(),c=ws(),f=xx(Pr);let p=Pr;Ti&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const h=_u.bind(null,X=>""+X),m=_u.bind(null,RS),g=_u.bind(null,zs);function y(X,se){let he,Ae;return Ng(X)?(he=t.getRecordMatcher(X),Ae=se):Ae=X,t.addRoute(Ae,he)}function S(X){const se=t.getRecordMatcher(X);se&&t.removeRoute(se)}function x(){return t.getRoutes().map(X=>X.record)}function T(X){return!!t.getRecordMatcher(X)}function V(X,se){if(se=ut({},se||f.value),typeof X=="string"){const L=bu(r,X,se.path),J=t.resolve({path:L.path},se),ue=o.createHref(L.fullPath);return ut(L,J,{params:g(J.params),hash:zs(L.hash),redirectedFrom:void 0,href:ue})}let he;if(X.path!=null)he=ut({},X,{path:bu(r,X.path,se.path).path});else{const L=ut({},X.params);for(const J in L)L[J]==null&&delete L[J];he=ut({},X,{params:m(L)}),se.params=m(se.params)}const Ae=t.resolve(he,se),Oe=X.hash||"";Ae.params=h(g(Ae.params));const je=MS(s,ut({},X,{hash:SS(Oe),path:Ae.path})),O=o.createHref(je);return ut({fullPath:je,hash:Oe,query:s===xp?uk(X.query):X.query||{}},Ae,{redirectedFrom:void 0,href:O})}function B(X){return typeof X=="string"?bu(r,X,f.value.path):ut({},X)}function P(X,se){if(p!==X)return Zi(8,{from:se,to:X})}function k(X){return q(X)}function R(X){return k(ut(B(X),{replace:!0}))}function M(X){const se=X.matched[X.matched.length-1];if(se&&se.redirect){const{redirect:he}=se;let Ae=typeof he=="function"?he(X):he;return typeof Ae=="string"&&(Ae=Ae.includes("?")||Ae.includes("#")?Ae=B(Ae):{path:Ae},Ae.params={}),ut({query:X.query,hash:X.hash,params:Ae.path!=null?{}:X.params},Ae)}}function q(X,se){const he=p=V(X),Ae=f.value,Oe=X.state,je=X.force,O=X.replace===!0,L=M(he);if(L)return q(ut(B(L),{state:typeof L=="object"?ut({},Oe,L.state):Oe,force:je,replace:O}),se||he);const J=he;J.redirectedFrom=se;let ue;return!je&&LS(s,Ae,he)&&(ue=Zi(16,{to:J,from:Ae}),b(Ae,Ae,!0,!1)),(ue?Promise.resolve(ue):U(J,Ae)).catch(ne=>rr(ne)?rr(ne,2)?ne:N(ne):_(ne,J,Ae)).then(ne=>{if(ne){if(rr(ne,2))return q(ut({replace:O},B(ne.to),{state:typeof ne.to=="object"?ut({},Oe,ne.to.state):Oe,force:je}),se||J)}else ne=K(J,Ae,!0,O,Oe);return G(J,Ae,ne),ne})}function W(X,se){const he=P(X,se);return he?Promise.reject(he):Promise.resolve()}function j(X){const se=Ce.values().next().value;return se&&typeof se.runWithContext=="function"?se.runWithContext(X):X()}function U(X,se){let he;const[Ae,Oe,je]=_k(X,se);he=wu(Ae.reverse(),"beforeRouteLeave",X,se);for(const L of Ae)L.leaveGuards.forEach(J=>{he.push(Tr(J,X,se))});const O=W.bind(null,X,se);return he.push(O),ke(he).then(()=>{he=[];for(const L of l.list())he.push(Tr(L,X,se));return he.push(O),ke(he)}).then(()=>{he=wu(Oe,"beforeRouteUpdate",X,se);for(const L of Oe)L.updateGuards.forEach(J=>{he.push(Tr(J,X,se))});return he.push(O),ke(he)}).then(()=>{he=[];for(const L of je)if(L.beforeEnter)if($n(L.beforeEnter))for(const J of L.beforeEnter)he.push(Tr(J,X,se));else he.push(Tr(L.beforeEnter,X,se));return he.push(O),ke(he)}).then(()=>(X.matched.forEach(L=>L.enterCallbacks={}),he=wu(je,"beforeRouteEnter",X,se,j),he.push(O),ke(he))).then(()=>{he=[];for(const L of u.list())he.push(Tr(L,X,se));return he.push(O),ke(he)}).catch(L=>rr(L,8)?L:Promise.reject(L))}function G(X,se,he){c.list().forEach(Ae=>j(()=>Ae(X,se,he)))}function K(X,se,he,Ae,Oe){const je=P(X,se);if(je)return je;const O=se===Pr,L=Ti?history.state:{};he&&(Ae||O?o.replace(X.fullPath,ut({scroll:O&&L&&L.scroll},Oe)):o.push(X.fullPath,Oe)),f.value=X,b(X,se,he,O),N()}let H;function E(){H||(H=o.listen((X,se,he)=>{if(!_e.listening)return;const Ae=V(X),Oe=M(Ae);if(Oe){q(ut(Oe,{replace:!0}),Ae).catch(Ds);return}p=Ae;const je=f.value;Ti&&HS(mp(je.fullPath,he.delta),Ga()),U(Ae,je).catch(O=>rr(O,12)?O:rr(O,2)?(q(O.to,Ae).then(L=>{rr(L,20)&&!he.delta&&he.type===Ys.pop&&o.go(-1,!1)}).catch(Ds),Promise.reject()):(he.delta&&o.go(-he.delta,!1),_(O,Ae,je))).then(O=>{O=O||K(Ae,je,!1),O&&(he.delta&&!rr(O,8)?o.go(-he.delta,!1):he.type===Ys.pop&&rr(O,20)&&o.go(-1,!1)),G(Ae,je,O)}).catch(Ds)}))}let I=ws(),D=ws(),A;function _(X,se,he){N(X);const Ae=D.list();return Ae.length?Ae.forEach(Oe=>Oe(X,se,he)):console.error(X),Promise.reject(X)}function Y(){return A&&f.value!==Pr?Promise.resolve():new Promise((X,se)=>{I.add([X,se])})}function N(X){return A||(A=!X,E(),I.list().forEach(([se,he])=>X?he(X):se()),I.reset()),X}function b(X,se,he,Ae){const{scrollBehavior:Oe}=e;if(!Ti||!Oe)return Promise.resolve();const je=!he&&US(mp(X.fullPath,0))||(Ae||!he)&&history.state&&history.state.scroll||null;return Kn().then(()=>Oe(X,se,je)).then(O=>O&&FS(O)).catch(O=>_(O,X,se))}const Q=X=>o.go(X);let de;const Ce=new Set,_e={currentRoute:f,listening:!0,addRoute:y,removeRoute:S,hasRoute:T,getRoutes:x,resolve:V,options:e,push:k,replace:R,go:Q,back:()=>Q(-1),forward:()=>Q(1),beforeEach:l.add,beforeResolve:u.add,afterEach:c.add,onError:D.add,isReady:Y,install(X){const se=this;X.component("RouterLink",hk),X.component("RouterView",vk),X.config.globalProperties.$router=se,Object.defineProperty(X.config.globalProperties,"$route",{enumerable:!0,get:()=>oe(f)}),Ti&&!de&&f.value===Pr&&(de=!0,k(o.location).catch(Oe=>{}));const he={};for(const Oe in Pr)Object.defineProperty(he,Oe,{get:()=>f.value[Oe],enumerable:!0});X.provide(za,se),X.provide(Tc,am(he)),X.provide(Xu,f);const Ae=X.unmount;Ce.add(X),X.unmount=function(){Ce.delete(X),Ce.size<1&&(p=Pr,H&&H(),H=null,f.value=Pr,de=!1,A=!1),Ae()}}};function ke(X){return X.reduce((se,he)=>se.then(()=>j(he)),Promise.resolve())}return _e}function _k(e,t){const r=[],s=[],o=[],l=Math.max(t.matched.length,e.matched.length);for(let u=0;uYi(p,c))?s.push(c):r.push(c));const f=e.matched[u];f&&(t.matched.find(p=>Yi(p,f))||o.push(f))}return[r,s,o]}function bk(){return on(za)}function Ic(){return on(Tc)}const wk=[{path:"/",component:()=>pt(()=>import("./index-1ea7a167.js"),["assets/index-1ea7a167.js","assets/PlaylistCard-915b2cc1.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/TrackCompact-28e1b8fb.js","assets/TrackCompact-79c8b159.css","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/PlaylistEntry-7f3947eb.css","assets/spotify-2bf3aeb7.js","assets/index-0ded4f06.css"])},{path:"/discover",component:()=>pt(()=>import("./Explore-0f64f4c4.js"),["assets/Explore-0f64f4c4.js","assets/Explore-d8c77810.css"]),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:()=>pt(()=>import("./index-0388f272.js"),["assets/index-0388f272.js","assets/index-2f9f0259.css"]),meta:{title:"Search - reAudioPlayer One"}},{path:"/collection/albums",component:()=>pt(()=>import("./index-faf92038.js"),["assets/index-faf92038.js","assets/FullShelf-b2b7ffe5.js","assets/FullShelf-62d1d109.css","assets/Error-e5e93467.js","assets/Error-f18c7956.css","assets/PlaylistCard-915b2cc1.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/artists",component:()=>pt(()=>import("./index-faf92038.js"),["assets/index-faf92038.js","assets/FullShelf-b2b7ffe5.js","assets/FullShelf-62d1d109.css","assets/Error-e5e93467.js","assets/Error-f18c7956.css","assets/PlaylistCard-915b2cc1.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/playlists",component:()=>pt(()=>import("./index-faf92038.js"),["assets/index-faf92038.js","assets/FullShelf-b2b7ffe5.js","assets/FullShelf-62d1d109.css","assets/Error-e5e93467.js","assets/Error-f18c7956.css","assets/PlaylistCard-915b2cc1.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/releases",component:()=>pt(()=>import("./index-faf92038.js"),["assets/index-faf92038.js","assets/FullShelf-b2b7ffe5.js","assets/FullShelf-62d1d109.css","assets/Error-e5e93467.js","assets/Error-f18c7956.css","assets/PlaylistCard-915b2cc1.js","assets/playerInPicture-af203fdf.js","assets/PlaylistCard-03dfa529.css","assets/index-06802400.css"]),meta:{title:"Releases - reAudioPlayer One"}},{path:"/collection/tracks",component:()=>pt(()=>import("./Liked-cf20cd13.js"),["assets/Liked-cf20cd13.js","assets/Template-96d3b86b.js","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-c5c8aeea.js","assets/FactCard-07fe2677.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-56b8a233.js","assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js","assets/Markdown-d883632e.css","assets/Template-b827c26f.css"]),meta:{title:"Liked Songs - reAudioPlayer One"}},{path:"/collection/tracks/breaking",component:()=>pt(()=>import("./Breaking-bca7f1ee.js"),["assets/Breaking-bca7f1ee.js","assets/Template-96d3b86b.js","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-c5c8aeea.js","assets/FactCard-07fe2677.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-56b8a233.js","assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js","assets/Markdown-d883632e.css","assets/Template-b827c26f.css"]),meta:{title:"Breaking Songs - reAudioPlayer One"}},{path:"/playlist/create",component:()=>pt(()=>import("./Create-5e460494.js"),["assets/Create-5e460494.js","assets/Create-8ab3526b.css"]),meta:{title:"Create Playlist - reAudioPlayer One"}},{path:"/playlist/:id/edit",component:()=>pt(()=>import("./Editor-2ef03efe.js"),["assets/Editor-2ef03efe.js","assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-c5c8aeea.js","assets/Editor-133a20fa.css"]),meta:{title:"Smart Playlist Editor - reAudioPlayer One"}},{path:"/playlist/:id",component:()=>pt(()=>import("./Normal-9226385f.js"),["assets/Normal-9226385f.js","assets/Template-96d3b86b.js","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-c5c8aeea.js","assets/FactCard-07fe2677.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-56b8a233.js","assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js","assets/Markdown-d883632e.css","assets/Template-b827c26f.css"]),meta:{title:"Playlist - reAudioPlayer One"}},{path:"/track/:hash",component:()=>pt(()=>import("./Track-77a6581d.js"),["assets/Track-77a6581d.js","assets/FactCard-07fe2677.js","assets/FactCard-3c5d1fcf.css","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/spotify-2bf3aeb7.js","assets/Track-c081b8b5.css"]),meta:{title:"Track - reAudioPlayer One"}},{path:"/artist/:name",component:()=>pt(()=>import("./Artist-d789cf52.js"),["assets/Artist-d789cf52.js","assets/FactCard-07fe2677.js","assets/FactCard-3c5d1fcf.css","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/spotify-2bf3aeb7.js","assets/Artist-c9fc4a3d.css"]),meta:{title:"Artist - reAudioPlayer One"}},{path:"/album/:hash",component:()=>pt(()=>import("./Album-1148dcd6.js"),["assets/Album-1148dcd6.js","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/Album-8d95da06.css"]),meta:{title:"Album - reAudioPlayer One"}},{path:"/preferences",component:()=>pt(()=>import("./index-26fd52a1.js"),["assets/index-26fd52a1.js","assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js","assets/Markdown-d883632e.css","assets/TrackCompact-28e1b8fb.js","assets/TrackCompact-79c8b159.css","assets/gistClient-56b8a233.js","assets/index-d4cfeb9f.css"]),meta:{title:"Preferences - reAudioPlayer One"}},{path:"/import",component:()=>pt(()=>import("./Import-2ae5cf6c.js"),["assets/Import-2ae5cf6c.js","assets/gistClient-56b8a233.js","assets/Import-15b3ffd5.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/import/:id",component:()=>pt(()=>import("./ImportLink-33e77c3a.js"),["assets/ImportLink-33e77c3a.js","assets/ImportLink-fa9af2ae.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/export",component:()=>pt(()=>import("./Export-b9da4cc1.js"),["assets/Export-b9da4cc1.js","assets/gistClient-56b8a233.js","assets/Export-a03f6dd4.css"]),meta:{title:"Export - reAudioPlayer One"}},{path:"/sing-along",component:()=>pt(()=>import("./index-7c86ad75.js"),["assets/index-7c86ad75.js","assets/index-fd630165.css"]),meta:{title:"Sing Along - reAudioPlayer One"}},{path:"/download",component:()=>pt(()=>import("./index-da602f8b.js"),["assets/index-da602f8b.js","assets/index-fd8d909d.css"]),meta:{title:"Download - reAudioPlayer One"}},{path:"/welcome",component:()=>pt(()=>import("./Welcome-9f07aa8e.js"),["assets/Welcome-9f07aa8e.js","assets/Welcome-5b21c29e.css"]),meta:{title:"Welcome to reAudioPlayer One"}},{path:"/news",component:()=>pt(()=>import("./News-a755b729.js"),["assets/News-a755b729.js","assets/FullShelf-b2b7ffe5.js","assets/FullShelf-62d1d109.css","assets/News-eb982e2f.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/sports",component:()=>pt(()=>import("./Sports-47b2f775.js"),["assets/Sports-47b2f775.js","assets/FullShelf-b2b7ffe5.js","assets/FullShelf-62d1d109.css","assets/Sports-ad2591fa.css"]),meta:{title:"Sports - reAudioPlayer One"}},{path:"/news/:url",component:()=>pt(()=>import("./NewsArticle-6976bfba.js"),["assets/NewsArticle-6976bfba.js","assets/Error-e5e93467.js","assets/Error-f18c7956.css","assets/NewsArticle-2facc133.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/player/insights",component:()=>pt(()=>import("./Insight-02bf27fd.js"),["assets/Insight-02bf27fd.js","assets/Insight-ab13ce31.css"]),meta:{title:"Insights - reAudioPlayer One"}},{path:"/player",component:()=>pt(()=>import("./BigPlayer-87137347.js"),["assets/BigPlayer-87137347.js","assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js","assets/PlaylistEntry-4f48a6f3.js","assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/vuedraggable.umd-c5c8aeea.js","assets/PlaylistCard-915b2cc1.js","assets/PlaylistCard-03dfa529.css","assets/BigPlayer-199abb6d.css"]),meta:{title:"reAudioPlayer One"}}],Ii=yk({history:GS(),routes:wk}),Ak=["placeholder","type"],xk=Ge({__name:"TextInputWithIcon",props:{icon:String,placeholder:String,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:r}){const s=e,o=Pe(s.modelValue);st(()=>s.modelValue,p=>{o.value=p});const l=r,u=()=>{l("update:modelValue",o.value),l("change",o.value)},c=p=>{s.onKeyUp&&s.onKeyUp(p)||p.key==="Enter"&&l("submit",o)},f=Pe();return t({focus:()=>{f.value.focus()}}),(p,h)=>(re(),ye("div",{class:Je(["text-input-with-icon rounded-3xl flex items-center px-4",{expanded:e.expanded}])},[te("span",{class:Je([{"cursor-pointer":e.onClick},"material-symbols-rounded ms-wght-200"]),onClick:h[0]||(h[0]=(...m)=>e.onClick&&e.onClick(...m))},De(e.icon),3),js(te("input",{"onUpdate:modelValue":h[1]||(h[1]=m=>o.value=m),placeholder:e.placeholder,type:e.type,onInput:u,onKeyup:c,onFocusout:h[2]||(h[2]=m=>p.$emit("focusout")),ref_key:"element",ref:f},null,40,Ak),[[xc,o.value]])],2))}});const Qu=at(xk,[["__scopeId","data-v-4b2cd9f3"]]);var As=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Pk(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function fI(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function s(){return this instanceof s?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(s){var o=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(r,s,o.get?o:{enumerable:!0,get:function(){return e[s]}})}),r}var Sa={exports:{}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors diff --git a/src/ui/dist/assets/index-a96016e0.js.gz b/src/ui/dist/assets/index-4a15a213.js.gz similarity index 55% rename from src/ui/dist/assets/index-a96016e0.js.gz rename to src/ui/dist/assets/index-4a15a213.js.gz index 7164f97f..ec96de6e 100644 Binary files a/src/ui/dist/assets/index-a96016e0.js.gz and b/src/ui/dist/assets/index-4a15a213.js.gz differ diff --git a/src/ui/dist/assets/index-66efdb37.js.gz b/src/ui/dist/assets/index-66efdb37.js.gz deleted file mode 100644 index e56d737e..00000000 Binary files a/src/ui/dist/assets/index-66efdb37.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-72186d7f.js.gz b/src/ui/dist/assets/index-72186d7f.js.gz deleted file mode 100644 index 0f06a7a6..00000000 Binary files a/src/ui/dist/assets/index-72186d7f.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-dff95c16.js b/src/ui/dist/assets/index-7c86ad75.js similarity index 99% rename from src/ui/dist/assets/index-dff95c16.js rename to src/ui/dist/assets/index-7c86ad75.js index eefdacee..e4495942 100644 --- a/src/ui/dist/assets/index-dff95c16.js +++ b/src/ui/dist/assets/index-7c86ad75.js @@ -1 +1 @@ -import{e as U,a6 as W,o as p,c as w,g as N,u as f,a7 as H,t as x,i as B,d as C,a as I,I as K,F as j,h as G,O as P,b as $,N as F,L as V,_ as q}from"./index-a96016e0.js";var T={d:(s,r)=>{for(var o in r)T.o(r,o)&&!T.o(s,o)&&Object.defineProperty(s,o,{enumerable:!0,get:r[o]})},o:(s,r)=>Object.prototype.hasOwnProperty.call(s,r)},v={};T.d(v,{Ce:()=>L,ZP:()=>Z,j1:()=>z,Eb:()=>R,e6:()=>E,Iu:()=>O});var g={from:"auto",to:"en",hl:"en",tld:"com",rpcids:"MkEWBc"};function z(s){var r=s===void 0?{}:s,o=r.rpcids,a=o===void 0?g.rpcids:o,n=r.hl,l=n===void 0?g.hl:n,i=r.tld,c=i===void 0?g.tld:i;if(!function(t){return!!t.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 R=function(s){return!!D[s]};function E(s,r){r===void 0&&(r=!1);var o=s.match(/"\[.*]"/),a=null;if(o){var n=o[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 o,a=r===void 0?{}:r,n=a.rpcids,l=n===void 0?g.rpcids:n,i=a.from,c=i===void 0?g.from:i,d=a.to,t=d===void 0?g.to:d,e=encodeURIComponent('[[["'.concat(l,'","[[\\"').concat((o=s,o.replace(/["]/g,"\\\\\\$&")),'\\",\\"').concat(c,'\\",\\"').concat(t,'\\",1],[]]",null,"generic"]]]'));return"f.req=".concat(e,"&")}var _=function(){return _=Object.assign||function(s){for(var r,o=1,a=arguments.length;o0&&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[t],h=parseInt(u.startTimeMs),y=parseInt(u.endTimeMs)?parseInt(u.endTimeMs):parseInt((b=r.lyrics.lyrics[t+1])==null?void 0:b.startTimeMs);if(e>=h&&e=y?"past":"future"},a=t=>{r.lyrics.lyrics[t].originalWorlds?l(t):n(t)},n=async t=>{const e=r.lyrics.lyrics[t];if(e.originalWorlds)return;const u=await X(e.words,{to:"en",corsUrl:"http://localhost:1234/api/cors/"});e.originalWorlds=e.words,e.words=u.text},l=t=>{const e=r.lyrics.lyrics[t];e.originalWorlds&&(e.words=e.originalWorlds,e.originalWorlds=null)},i=()=>{var t,e;(e=(t=r.lyrics)==null?void 0:t.lyrics)==null||e.forEach((u,h)=>{n(h)})},c=()=>{var t,e;(e=(t=r.lyrics)==null?void 0:t.lyrics)==null||e.forEach((u,h)=>{l(h)})},d=()=>{var e,u,h,y;const t=(u=(e=r.lyrics)==null?void 0:e.lyrics)==null?void 0:u.filter(m=>m.originalWorlds).length;return t&&t>((y=(h=r.lyrics)==null?void 0:h.lyrics)==null?void 0:y.length)/2};return(t,e)=>{var u,h,y,m,b,k;return p(),w(j,null,[N(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,x((y=f(r).lyrics)==null?void 0:y.error),1)):(p(),B(V,{key:1}))])):C("",!0),I("div",re,[(m=f(r).lyrics)!=null&&m.lyrics?(p(),B(K,{key:0,icon:"translate",label:d()?"Show original":"Translate all",class:"mr-2",onClick:e[0]||(e[0]=S=>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,(S,M)=>(p(),w("div",{class:P(["line",o(M)]),onClick:A=>f(r).seek(parseInt(S.startTimeMs)/1e3)},[$(x(S.words)+" ",1),I("span",{class:P(["material-symbols-rounded translate",{translated:S.originalWorlds}]),onClick:F(A=>a(M),["stop"])}," translate ",10,te)],10,ae))),256))])):C("",!0)],64)}}});const se=q(oe,[["__scopeId","data-v-9121f15d"]]);export{se as default}; +import{e as U,a6 as W,o as p,c as w,g as N,u as f,a7 as H,t as x,i as B,d as C,a as I,I as K,F as j,h as G,O as P,b as $,N as F,L as V,_ as q}from"./index-4a15a213.js";var T={d:(s,r)=>{for(var o in r)T.o(r,o)&&!T.o(s,o)&&Object.defineProperty(s,o,{enumerable:!0,get:r[o]})},o:(s,r)=>Object.prototype.hasOwnProperty.call(s,r)},v={};T.d(v,{Ce:()=>L,ZP:()=>Z,j1:()=>z,Eb:()=>R,e6:()=>E,Iu:()=>O});var g={from:"auto",to:"en",hl:"en",tld:"com",rpcids:"MkEWBc"};function z(s){var r=s===void 0?{}:s,o=r.rpcids,a=o===void 0?g.rpcids:o,n=r.hl,l=n===void 0?g.hl:n,i=r.tld,c=i===void 0?g.tld:i;if(!function(t){return!!t.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 R=function(s){return!!D[s]};function E(s,r){r===void 0&&(r=!1);var o=s.match(/"\[.*]"/),a=null;if(o){var n=o[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 o,a=r===void 0?{}:r,n=a.rpcids,l=n===void 0?g.rpcids:n,i=a.from,c=i===void 0?g.from:i,d=a.to,t=d===void 0?g.to:d,e=encodeURIComponent('[[["'.concat(l,'","[[\\"').concat((o=s,o.replace(/["]/g,"\\\\\\$&")),'\\",\\"').concat(c,'\\",\\"').concat(t,'\\",1],[]]",null,"generic"]]]'));return"f.req=".concat(e,"&")}var _=function(){return _=Object.assign||function(s){for(var r,o=1,a=arguments.length;o0&&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[t],h=parseInt(u.startTimeMs),y=parseInt(u.endTimeMs)?parseInt(u.endTimeMs):parseInt((b=r.lyrics.lyrics[t+1])==null?void 0:b.startTimeMs);if(e>=h&&e=y?"past":"future"},a=t=>{r.lyrics.lyrics[t].originalWorlds?l(t):n(t)},n=async t=>{const e=r.lyrics.lyrics[t];if(e.originalWorlds)return;const u=await X(e.words,{to:"en",corsUrl:"http://localhost:1234/api/cors/"});e.originalWorlds=e.words,e.words=u.text},l=t=>{const e=r.lyrics.lyrics[t];e.originalWorlds&&(e.words=e.originalWorlds,e.originalWorlds=null)},i=()=>{var t,e;(e=(t=r.lyrics)==null?void 0:t.lyrics)==null||e.forEach((u,h)=>{n(h)})},c=()=>{var t,e;(e=(t=r.lyrics)==null?void 0:t.lyrics)==null||e.forEach((u,h)=>{l(h)})},d=()=>{var e,u,h,y;const t=(u=(e=r.lyrics)==null?void 0:e.lyrics)==null?void 0:u.filter(m=>m.originalWorlds).length;return t&&t>((y=(h=r.lyrics)==null?void 0:h.lyrics)==null?void 0:y.length)/2};return(t,e)=>{var u,h,y,m,b,k;return p(),w(j,null,[N(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,x((y=f(r).lyrics)==null?void 0:y.error),1)):(p(),B(V,{key:1}))])):C("",!0),I("div",re,[(m=f(r).lyrics)!=null&&m.lyrics?(p(),B(K,{key:0,icon:"translate",label:d()?"Show original":"Translate all",class:"mr-2",onClick:e[0]||(e[0]=S=>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,(S,M)=>(p(),w("div",{class:P(["line",o(M)]),onClick:A=>f(r).seek(parseInt(S.startTimeMs)/1e3)},[$(x(S.words)+" ",1),I("span",{class:P(["material-symbols-rounded translate",{translated:S.originalWorlds}]),onClick:F(A=>a(M),["stop"])}," translate ",10,te)],10,ae))),256))])):C("",!0)],64)}}});const se=q(oe,[["__scopeId","data-v-9121f15d"]]);export{se as default}; diff --git a/src/ui/dist/assets/index-7c86ad75.js.gz b/src/ui/dist/assets/index-7c86ad75.js.gz new file mode 100644 index 00000000..03fdb156 Binary files /dev/null and b/src/ui/dist/assets/index-7c86ad75.js.gz differ diff --git a/src/ui/dist/assets/index-b34db81f.js b/src/ui/dist/assets/index-b34db81f.js deleted file mode 100644 index 8e981648..00000000 --- a/src/ui/dist/assets/index-b34db81f.js +++ /dev/null @@ -1 +0,0 @@ -import{e as S,o,c as _,t as b,O as T,_ as V,n as y,y as Q,D,i as k,d as C,a as t,b as N,F as x,l as B,m as U,a6 as X,g as m,I as $,h as I,w as G,H as ee,M as q,u as f,C as R,as as te,at as M,au as F,av as Y,aw as J,ax as E,E as j,a2 as ae,ay as le,Z as se,ar as oe,B as ne,q as ie,R as ce}from"./index-a96016e0.js";import{_ as re}from"./Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js";import{T as W}from"./TrackCompact-8cd47625.js";import{G as ue}from"./gistClient-de41c06b.js";const de=S({__name:"TabButton",props:{name:{type:String,required:!0},active:{type:Boolean,default:!1}},setup(l){return(e,s)=>(o(),_("button",{class:T(["btn",{active:l.active}])},b(l.name),3))}});const pe=V(de,[["__scopeId","data-v-3f038910"]]),_e="0.11.49",z=l=>(B("data-v-6c134c33"),l=l(),U(),l),me={class:"flex flex-col"},ve={key:0,class:"text-sm flex items-center gap-2 latest"},he=z(()=>t("span",{class:"material-symbols-rounded"},"check",-1)),ye={key:1,class:"text-sm flex items-center gap-2 update"},fe=z(()=>t("span",{class:"material-symbols-rounded"},"update",-1)),H="0.11.2",be=S({__name:"About",setup(l){const e=y(""),s=y("");Q(async()=>{const i=await(await fetch("https://api.github.com/repos/reAudioPlayer/one/releases/latest")).json();e.value=i.tag_name,s.value=i.body});const p=D(()=>e.value===H),n=D(()=>_e.split(".").pop()),d=y(null);return(a,i)=>(o(),_("div",me,[s.value?(o(),k(re,{key:0,content:s.value,title:"What's new in "+e.value,ref_key:"changelog",ref:d,onClose:i[0]||(i[0]=()=>s.value="")},null,8,["content","title"])):C("",!0),t("span",null,[t("strong",null,"v"+b(H)),N(" (Build "+b(n.value)+") ",1)]),e.value?(o(),_(x,{key:1},[p.value?(o(),_("span",ve,[he,N(" You're on the latest version "),t("a",{class:"cursor-pointer",onClick:i[1]||(i[1]=h=>{var r;return(r=d.value)==null?void 0:r.show()})}," What's changed? ")])):(o(),_("span",ye,[fe,N(" Update available: "+b(e.value)+" ",1),t("a",{class:"cursor-pointer",onClick:i[2]||(i[2]=h=>{var r;return(r=d.value)==null?void 0:r.show()})}," What's changed? ")]))],64)):C("",!0)]))}});const ge=V(be,[["__scopeId","data-v-6c134c33"]]);const O=l=>(B("data-v-9bd09bb6"),l=l(),U(),l),ke={class:"wrap"},we=O(()=>t("h3",null,"Browser Data",-1)),xe=O(()=>t("h3",null,"Import / Export",-1)),$e={class:"flex gap-4 mb-4"},Se={class:"covers mb-2"},Ce=O(()=>t("h3",null,"Local covers",-1)),Ve={key:0,class:"items gap-4"},Pe={class:"flex justify-between w-full mb-4"},Ie={class:"overflow-hidden"},Ae=["onClick"],De={key:1,class:"text-muted italic"},Ne={class:"tracks"},Te=O(()=>t("h3",null,"Local tracks",-1)),Be={key:0,class:"items gap-4"},Ue={class:"flex justify-between w-full mb-4"},Ee={class:"overflow-hidden"},Oe=["onClick"],Le={class:"flex justify-center w-full mb-4"},Ge=["src"],Re={key:1,class:"text-muted italic"},je={__name:"LocalData",setup(l){const e=y([]),s=y([]),p=X(),n=()=>{fetch("/api/config/images").then(r=>r.json()).then(r=>e.value=r),fetch("/api/config/tracks").then(r=>r.json()).then(r=>s.value=r)},d=async r=>{await fetch("/api/config/images",{method:"DELETE",body:JSON.stringify({name:r})}),n()},a=async r=>{fetch("/api/config/tracks",{method:"DELETE",body:JSON.stringify({name:r})}),n()},i=r=>{p.loadPlaylist("track",r)};n();const h=()=>{localStorage.clear(),sessionStorage.clear(),window.location.reload()};return(r,w)=>(o(),_("div",ke,[we,m($,{class:"mb-4",icon:"delete",label:"Clean browser settings",onClick:h}),xe,t("div",$e,[m($,{icon:"backup",label:"Back up / Export",onClick:w[0]||(w[0]=v=>r.$router.push("/export"))}),m($,{icon:"cloud_download",label:"Import",onClick:w[1]||(w[1]=v=>r.$router.push("/import"))})]),t("div",Se,[Ce,e.value.length?(o(),_("div",Ve,[(o(!0),_(x,null,I(e.value,(v,P)=>(o(),k(R,{key:P,class:"cover-wrapper p-4"},{default:G(()=>[m(ee,{src:v.name,class:"rounded-xl mb-4"},null,8,["src"]),t("div",Pe,[t("p",Ie,[m(q,{text:v.name},null,8,["text"])]),t("span",{class:"ml-2 material-symbols-rounded cursor-pointer",onClick:c=>d(v.name)},"delete",8,Ae)]),(o(!0),_(x,null,I(v.songs,(c,u)=>(o(),k(f(W),{id:c.id,key:u,artist:c.artist,cover:c.cover,title:c.title,onPlay:g=>i(c.id)},null,8,["id","artist","cover","title","onPlay"]))),128))]),_:2},1024))),128))])):(o(),_("span",De,"No local covers"))]),t("div",Ne,[Te,s.value.length?(o(),_("div",Be,[(o(!0),_(x,null,I(s.value,(v,P)=>(o(),k(R,{key:P,class:"track p-4"},{default:G(()=>[t("div",Ue,[t("p",Ee,[m(q,{text:v.name},null,8,["text"])]),t("span",{class:"material-symbols-rounded cursor-pointer",onClick:c=>a(v.name)},"delete",8,Oe)]),t("div",Le,[t("audio",{src:"/api/"+v.name.replace("local:","/src/tracks/"),controls:""},null,8,Ge)]),(o(!0),_(x,null,I(v.songs,(c,u)=>(o(),k(f(W),{id:c.id,key:u,artist:c.artist,cover:c.cover,title:c.title,onPlay:g=>i(c.id)},null,8,["id","artist","cover","title","onPlay"]))),128))]),_:2},1024))),128))])):(o(),_("span",Re,"No local tracks"))])]))}},qe=V(je,[["__scopeId","data-v-9bd09bb6"]]),Je={class:"markdown-body"},We=te("

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),He=[We],Me={__name:"Privacy",setup(l,{expose:e}){return e({frontmatter:{}}),(p,n)=>(o(),_("div",Je,He))}},Fe={class:"material-symbols-rounded ms-wght-300 cursor-pointer"},Ye={class:"checkbox__label"},ze={class:"checkbox__label__title"},Ke={class:"checkbox__label__sublabel italic"},Ze=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(l,{emit:e}){const s=l,p=e,n=a=>p("update:modelValue",a),d=()=>{s.disabled||n(!s.modelValue)};return(a,i)=>(o(),_("div",{class:T([{"opacity-50":l.disabled},"checkbox"]),onClick:d},[t("span",Fe,b(l.modelValue?"check_box":"check_box_outline_blank"),1),t("div",Ye,[t("div",ze,b(l.label),1),t("div",Ke,b(l.sublabel),1)])],2))}});const A=V(Ze,[["__scopeId","data-v-be9fa887"]]),Qe={class:"relative"},Xe=S({__name:"Cache",setup(l){const e=y(null),s=y("");M().then(d=>{e.value=d,s.value=JSON.stringify(d)});const p=D(()=>e.value?JSON.stringify(e.value)!==s.value:!1),n=async()=>{p.value&&(await Y(e.value),s.value=JSON.stringify(e.value))};return(d,a)=>(o(),_("div",Qe,[e.value?(o(),k(A,{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"])):C("",!0),e.value?(o(),k(A,{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"])):C("",!0),e.value?(o(),k(F,{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"])):C("",!0),m($,{disabled:!e.value||!p.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:n},null,8,["disabled"])]))}});const et={name:"Theme",props:{name:String},methods:{selected(){return J.getCurrentTheme()==this.name},select(){J.setTheme(this.name),this.$emit("selected")}}},tt=["src"];function at(l,e,s,p,n,d){return o(),_("div",{onClick:e[0]||(e[0]=(...a)=>d.select&&d.select(...a)),class:"wrapper"},[t("p",{class:T(["mb-4",{selected:d.selected()}])},b(s.name),3),t("img",{src:`/assets/img/themes/${this.name}.svg`,class:T({selected:d.selected()})},null,10,tt)])}const lt=V(et,[["render",at],["__scopeId","data-v-74855c2d"]]),K=l=>(B("data-v-5cc6477c"),l=l(),U(),l),st=K(()=>t("h3",{class:"mt-[10px]"},"Theme",-1)),ot={class:"themes"},nt=K(()=>t("h3",{class:"mt-[10px]"},"Sidebar",-1)),it=S({__name:"Appearance",setup(l){const e=E(),s=["dynamic","light","dark"];return(p,n)=>(o(),_(x,null,[st,m(A,{modelValue:f(e).ambient,"onUpdate:modelValue":n[0]||(n[0]=d=>f(e).ambient=d),disabled:!f(e).themeSupportsAmbient,label:"Ambient"},null,8,["modelValue","disabled"]),t("div",ot,[(o(),_(x,null,I(s,(d,a)=>m(lt,{key:a,name:d},null,8,["name"])),64))]),nt,m(A,{modelValue:f(e).sidebar.news,"onUpdate:modelValue":n[1]||(n[1]=d=>f(e).sidebar.news=d),label:"Show 'News' Tab"},null,8,["modelValue"]),m(A,{modelValue:f(e).sidebar.sports,"onUpdate:modelValue":n[2]||(n[2]=d=>f(e).sidebar.sports=d),label:"Show 'Sports' Tab"},null,8,["modelValue"])],64))}});const ct=V(it,[["__scopeId","data-v-5cc6477c"]]),rt={class:"relative"},ut=S({__name:"Player",setup(l){const e=E();return(s,p)=>(o(),_("div",rt,[m(A,{modelValue:f(e).player.pictureInPicture,"onUpdate:modelValue":p[0]||(p[0]=n=>f(e).player.pictureInPicture=n),label:"Support Picture in Picture",sublabel:"this will slightly reduce performance"},null,8,["modelValue"]),m(F,{modelValue:f(e).player.type,"onUpdate:modelValue":p[1]||(p[1]=n=>f(e).player.type=n),options:[{value:"web",label:"Native player",icon:"horizontal_rule"},{value:"web/wave",label:"Wave player",icon:"graphic_eq"}],icon:"music_note"},null,8,["modelValue"])]))}});const dt={key:0,class:"material-symbols-rounded"},pt=["disabled","placeholder","type"],_t={__name:"PasswordInputWithIcon",props:{icon:String,placeholder:String,modelValue:String,disabled:Boolean},emits:["update:modelValue","change","submit"],setup(l,{emit:e}){const s=l,p=y(s.modelValue);j(()=>s.modelValue,h=>{p.value=h});const n=e,d=()=>{n("update:modelValue",p.value),n("change",p.value)},a=h=>{h.key==="Enter"&&n("submit",p)},i=y(!1);return(h,r)=>(o(),_("div",{class:T([{disabled:l.disabled},"text-input-with-icon rounded-3xl flex items-center px-4"])},[l.icon?(o(),_("span",dt,b(l.icon),1)):C("",!0),ae(t("input",{"onUpdate:modelValue":r[0]||(r[0]=w=>p.value=w),disabled:l.disabled,placeholder:l.placeholder,type:i.value?"text":"password",onInput:d,onKeyup:a},null,40,pt),[[le,p.value]]),t("span",{class:"material-symbols-rounded cursor-pointer",onClick:r[1]||(r[1]=w=>i.value=!i.value)},b(i.value?"visibility":"visibility_off"),1)],2))}},L=V(_t,[["__scopeId","data-v-5e026540"]]),Z="reAudioPlayer One",mt=`https://audius.co/oauth/auth?scope=read&app_name=${Z}&redirect_uri=`,vt="/audius/callback",ht=()=>{const l=encodeURIComponent(`${window.location.origin}${vt}`),e=`${mt}${l}`;window.open(e,Z,"width=500,height=800")},yt=t("summary",{class:"cursor-pointer"},"How to",-1),ft=t("p",null,[N(" 1) Head over to the "),t("a",{href:"https://developer.spotify.com/dashboard/applications",target:"_blank"},"spotify developer dashboard")],-1),bt=t("p",null,"2) Create An App",-1),gt=t("p",null,"3) Enter any name and any description",-1),kt=t("p",null," 5) Copy and enter the client id and secret into the corresponding input field ",-1),wt=t("hr",{class:"my-4"},null,-1),xt=t("h5",null,"Client ID:",-1),$t=t("h5",{class:"mt-4"},"Client Secret:",-1),St=t("h3",{class:"mt-[10px]"},"Github",-1),Ct=t("h5",{class:"mt-4"},"PAT:",-1),Vt=t("h5",{class:"mt-4"},"Gist ID:",-1),Pt={class:"flex gap-4 justify-end mt-4"},It=t("h3",{class:"mt-[10px]"},"Audius",-1),At=S({__name:"Integration",setup(l){const e=y(!1),s=y({id:"",secret:""}),p=D(()=>e.value?Object.values(s.value).some(c=>c==="")?!1:s.value.id!==n.value.id||s.value.secret!==n.value.secret||e.value!==n.value.enabled:n.value.enabled),n=y({id:"",secret:"",enabled:!1});fetch("/api/config/spotify").then(async c=>{let u={id:"",secret:"",enabled:!1};if(c.status==200)u=await c.json();else if([204,401].includes(c.status))u={id:"restricted",secret:"restricted",enabled:!1};else throw new Error("Failed to fetch spotify config");n.value=u,n.value.enabled=![u.id,u.secret].includes("restricted"),e.value=n.value.enabled,s.value.id=u.id.replace("restricted",""),s.value.secret=u.secret.replace("restricted","")});const d=async()=>{if(!p.value)return;let c=s.value.id,u=s.value.secret;e.value||(u=c="restricted"),(await fetch("/api/config/spotify",{method:"POST",body:JSON.stringify({id:c,secret:u})})).ok&&(n.value={id:c,secret:u,enabled:e.value})},a=y(null),i=y("");M().then(c=>{a.value=c,i.value=JSON.stringify(c)});const h=D(()=>a.value?JSON.stringify(a.value)!==i.value:!1),r=async()=>{h.value&&(await Y(a.value),i.value=JSON.stringify(a.value))},v=`http://${window.location.host}/api/spotify/callback`,P=async()=>{var c,u;(u=(c=a.value)==null?void 0:c.github)!=null&&u.githubPat&&(a.value.github.gistId||(a.value.github.gistId=await ue.search(a.value.github.githubPat),a.value.github.gistId||oe.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 j(()=>{var c,u;return(u=(c=a.value)==null?void 0:c.github)==null?void 0:u.githubPat},P),(c,u)=>(o(),_(x,null,[m(A,{modelValue:e.value,"onUpdate:modelValue":u[0]||(u[0]=g=>e.value=g),class:"h3 mb-2",label:"Spotify"},null,8,["modelValue"]),t("details",null,[yt,ft,bt,gt,t("p",null,[N(" 4) Edit the settings: set the redirect url to "),t("a",{href:v},b(v))]),kt]),wt,xt,m(L,{modelValue:s.value.id,"onUpdate:modelValue":u[1]||(u[1]=g=>s.value.id=g),disabled:!e.value,icon:"token"},null,8,["modelValue","disabled"]),$t,m(L,{modelValue:s.value.secret,"onUpdate:modelValue":u[2]||(u[2]=g=>s.value.secret=g),disabled:!e.value,icon:"lock"},null,8,["modelValue","disabled"]),m($,{disabled:!p.value,class:"ml-auto mt-4",icon:"save",label:"Save",onClick:d},null,8,["disabled"]),St,Ct,a.value?(o(),k(L,{key:0,modelValue:a.value.github.githubPat,"onUpdate:modelValue":u[3]||(u[3]=g=>a.value.github.githubPat=g),icon:"lock"},null,8,["modelValue"])):C("",!0),Vt,a.value?(o(),k(se,{key:1,modelValue:a.value.github.gistId,"onUpdate:modelValue":u[4]||(u[4]=g=>a.value.github.gistId=g),icon:"numbers"},null,8,["modelValue"])):C("",!0),t("div",Pt,[m($,{disabled:!a.value||!a.value.github.githubPat||!!a.value.github.gistId,icon:"search",label:"Search",onClick:P},null,8,["disabled"]),m($,{disabled:!a.value||!h.value,icon:"save",label:"Save",onClick:r},null,8,["disabled"])]),It,m($,{icon:"link",label:"Connect",onClick:f(ht)},null,8,["onClick"])],64))}}),Dt={class:"flex items-center gap-2"},Nt=S({__name:"Developer",setup(l){E();const e=()=>{fetch("/api/system/kill")},s=()=>{fetch("/api/system/restart/nginx")};return(p,n)=>(o(),_("div",Dt,[m($,{icon:"refresh",label:"Restart",onClick:e,type:"danger"}),m($,{icon:"refresh",label:"Restart Nginx",onClick:s})]))}}),Tt=l=>(B("data-v-2a5c5e34"),l=l(),U(),l),Bt={class:"p-[10px] preferences"},Ut=Tt(()=>t("h1",{class:"w-full"},"Preferences",-1)),Et={class:"wrapper"},Ot={class:"sections flex flex-col"},Lt={class:"section p-2"},Gt={class:"h5 text-sm"},Rt=S({__name:"index",setup(l){const e=E(),s={About:ge,Privacy:Me,"Local Data":qe,Integrations:At,"Cache Policy":Xe,Appearance:ct,Player:ut,Developer:Nt},p=D(()=>{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}),n=ne(),d=ie();let a=n.query.tab;const i=y("About");return Object.keys(s).includes(a)&&(i.value=a),j(i,h=>{const r={tab:h};d.replace({query:r})}),(h,r)=>(o(),_("div",Bt,[Ut,t("div",Et,[t("div",Ot,[(o(!0),_(x,null,I(p.value,w=>(o(),_("div",Lt,[t("span",Gt,b(w.name),1),(o(!0),_(x,null,I(w.items,v=>(o(),k(pe,{key:v,name:v,active:i.value===v,onClick:P=>i.value=v},null,8,["name","active","onClick"]))),128))]))),256))]),m(R,{class:"content h-max p-4 pt-0"},{default:G(()=>[t("h2",null,b(i.value),1),(o(),k(ce(s[i.value])))]),_:1})])]))}});const Ht=V(Rt,[["__scopeId","data-v-2a5c5e34"]]);export{Ht as default}; diff --git a/src/ui/dist/assets/index-b34db81f.js.gz b/src/ui/dist/assets/index-b34db81f.js.gz deleted file mode 100644 index cc3c0253..00000000 Binary files a/src/ui/dist/assets/index-b34db81f.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-09bbebd0.css b/src/ui/dist/assets/index-d4cfeb9f.css similarity index 93% rename from src/ui/dist/assets/index-09bbebd0.css rename to src/ui/dist/assets/index-d4cfeb9f.css index ccdef744..27915ff5 100644 --- a/src/ui/dist/assets/index-09bbebd0.css +++ b/src/ui/dist/assets/index-d4cfeb9f.css @@ -1 +1 @@ -.btn[data-v-3f038910]{width:100%;text-align:left;padding:.5em 1em;border-radius:.5em;font-size:.9rem;border:1px solid transparent}.btn.active[data-v-3f038910]{background:var(--bg-base-lt);border:var(--border-container)}.latest[data-v-6c134c33]{--color: var(--success)}.update[data-v-6c134c33]{--color: var(--warning)}span[data-v-6c134c33]{color:var(--color)}a[data-v-6c134c33]:hover{color:inherit;font-weight:700}.items[data-v-9bd09bb6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(30ch,1fr))}.checkbox[data-v-be9fa887]{display:flex;align-items:center;margin:10px 0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.checkbox .checkbox__label[data-v-be9fa887]{margin-left:10px}.checkbox .checkbox__label .checkbox__label__title[data-v-be9fa887]{font-size:1em}.checkbox .checkbox__label .checkbox__label__sublabel[data-v-be9fa887]{font-size:.85em;color:var(--font-darker)}.checkbox .checkbox__checkbox[data-v-be9fa887]{font-size:1.5em;font-variation-settings:"FILL" 0,"WEIGHT" 500,"WIDTH" 100}p[data-v-74855c2d]{margin:0 0 .5em;font-size:.8em;color:var(--fg-base-dk);text-transform:capitalize}p.selected[data-v-74855c2d]{color:var(--fg-secondary)}.wrapper[data-v-74855c2d]{grid-column:span 2}.wrapper[data-v-74855c2d]:hover{cursor:pointer}img[data-v-74855c2d]{width:100%;border-radius:8px}img.selected[data-v-74855c2d]{border:2px solid var(--fg-secondary)}.themes[data-v-5cc6477c]{display:flex;flex-direction:row;flex-wrap:wrap;gap:1em}.themes .wrapper[data-v-5cc6477c]{max-width:200px}.text-input-with-icon[data-v-5e026540]{background:var(--bg-base-lt);border:1px solid var(--border-base);color:var(--fg-base-dk)}.text-input-with-icon.disabled[data-v-5e026540],.text-input-with-icon.disabled input[data-v-5e026540]{cursor:not-allowed!important}.text-input-with-icon input[data-v-5e026540]{color:var(--fg-base-dk)}.text-input-with-iconfocus[data-v-5e026540],.text-input-with-icon[data-v-5e026540]:focus-within,.text-input-with-icon[data-v-5e026540]:hover{border-color:var(--fg-base);color:var(--fg-base)}.text-input-with-iconfocus input[data-v-5e026540],.text-input-with-icon:focus-within input[data-v-5e026540],.text-input-with-icon:hover input[data-v-5e026540]{color:var(--fg-base)}input[data-v-5e026540]{background:none!important;border:none!important}ul{margin-left:2em;list-style-type:disc}.markdown-body{line-height:1.5}.preferences[data-v-2a5c5e34]{display:flex;flex-direction:column;align-items:center}.section[data-v-2a5c5e34]:not(:last-child){border-bottom:var(--border-container)}.btn[data-v-2a5c5e34]{width:100%;text-align:left;padding:.5em 1em;border-radius:.5em;font-size:.9rem;border:1px solid transparent}.btn.active[data-v-2a5c5e34]{background:var(--bg-base-lt);border:var(--border-container)}.preferences>*[data-v-2a5c5e34]{max-width:1000px;width:100%}.wrapper[data-v-2a5c5e34]{display:grid;grid-template-columns:200px 1fr;gap:1em} +.btn[data-v-3f038910]{width:100%;text-align:left;padding:.5em 1em;border-radius:.5em;font-size:.9rem;border:1px solid transparent}.btn.active[data-v-3f038910]{background:var(--bg-base-lt);border:var(--border-container)}.latest[data-v-823f6937]{--color: var(--success)}.update[data-v-823f6937]{--color: var(--warning)}span[data-v-823f6937]{color:var(--color)}a[data-v-823f6937]:hover{color:inherit;font-weight:700}.items[data-v-9bd09bb6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(30ch,1fr))}.checkbox[data-v-be9fa887]{display:flex;align-items:center;margin:10px 0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.checkbox .checkbox__label[data-v-be9fa887]{margin-left:10px}.checkbox .checkbox__label .checkbox__label__title[data-v-be9fa887]{font-size:1em}.checkbox .checkbox__label .checkbox__label__sublabel[data-v-be9fa887]{font-size:.85em;color:var(--font-darker)}.checkbox .checkbox__checkbox[data-v-be9fa887]{font-size:1.5em;font-variation-settings:"FILL" 0,"WEIGHT" 500,"WIDTH" 100}p[data-v-74855c2d]{margin:0 0 .5em;font-size:.8em;color:var(--fg-base-dk);text-transform:capitalize}p.selected[data-v-74855c2d]{color:var(--fg-secondary)}.wrapper[data-v-74855c2d]{grid-column:span 2}.wrapper[data-v-74855c2d]:hover{cursor:pointer}img[data-v-74855c2d]{width:100%;border-radius:8px}img.selected[data-v-74855c2d]{border:2px solid var(--fg-secondary)}.themes[data-v-5cc6477c]{display:flex;flex-direction:row;flex-wrap:wrap;gap:1em}.themes .wrapper[data-v-5cc6477c]{max-width:200px}.text-input-with-icon[data-v-5e026540]{background:var(--bg-base-lt);border:1px solid var(--border-base);color:var(--fg-base-dk)}.text-input-with-icon.disabled[data-v-5e026540],.text-input-with-icon.disabled input[data-v-5e026540]{cursor:not-allowed!important}.text-input-with-icon input[data-v-5e026540]{color:var(--fg-base-dk)}.text-input-with-iconfocus[data-v-5e026540],.text-input-with-icon[data-v-5e026540]:focus-within,.text-input-with-icon[data-v-5e026540]:hover{border-color:var(--fg-base);color:var(--fg-base)}.text-input-with-iconfocus input[data-v-5e026540],.text-input-with-icon:focus-within input[data-v-5e026540],.text-input-with-icon:hover input[data-v-5e026540]{color:var(--fg-base)}input[data-v-5e026540]{background:none!important;border:none!important}ul{margin-left:2em;list-style-type:disc}.markdown-body{line-height:1.5}.preferences[data-v-2a5c5e34]{display:flex;flex-direction:column;align-items:center}.section[data-v-2a5c5e34]:not(:last-child){border-bottom:var(--border-container)}.btn[data-v-2a5c5e34]{width:100%;text-align:left;padding:.5em 1em;border-radius:.5em;font-size:.9rem;border:1px solid transparent}.btn.active[data-v-2a5c5e34]{background:var(--bg-base-lt);border:var(--border-container)}.preferences>*[data-v-2a5c5e34]{max-width:1000px;width:100%}.wrapper[data-v-2a5c5e34]{display:grid;grid-template-columns:200px 1fr;gap:1em} diff --git a/src/ui/dist/assets/index-d4cfeb9f.css.gz b/src/ui/dist/assets/index-d4cfeb9f.css.gz new file mode 100644 index 00000000..9351878c Binary files /dev/null and b/src/ui/dist/assets/index-d4cfeb9f.css.gz differ diff --git a/src/ui/dist/assets/index-66efdb37.js b/src/ui/dist/assets/index-da602f8b.js similarity index 98% rename from src/ui/dist/assets/index-66efdb37.js rename to src/ui/dist/assets/index-da602f8b.js index 4582531a..b0a4a872 100644 --- a/src/ui/dist/assets/index-66efdb37.js +++ b/src/ui/dist/assets/index-da602f8b.js @@ -1 +1 @@ -import{e as N,aI as S,n as x,a8 as q,o as s,c as n,a as o,F as r,h as B,i as C,w as h,b as t,t as a,C as y,g as p,H as F,d,u as f,aJ as I,z as O,L as T,O as V,v as $,I as z,ar as L,l as j,m as A,_ as E}from"./index-a96016e0.js";const i=v=>(j("data-v-9623d76a"),v=v(),A(),v),H={class:"downloader py-2 pr-2 grid gap-4 grid-cols-2 items-start"},J={class:"downloads"},M={class:"main"},P={class:"m-0 mb-4"},Y={class:"status"},G={class:"flex flex-col"},K={key:0,class:"info"},Q=i(()=>o("span",{class:"material-symbols-rounded"},"cloud",-1)),R={key:1,class:"info"},U=i(()=>o("span",{class:"material-symbols-rounded"},"file_download",-1)),W={class:"info"},X=i(()=>o("span",{class:"material-symbols-rounded"},"percent",-1)),Z={key:2,class:"info"},ee=i(()=>o("span",{class:"material-symbols-rounded"},"speed",-1)),oe={key:3,class:"info"},se=i(()=>o("span",{class:"material-symbols-rounded"},"timer",-1)),ne=i(()=>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)),ae={key:0,class:"info"},le=i(()=>o("span",{class:"material-symbols-rounded"},"link",-1)),de=["href"],re={class:"wrap-progress"},te=["aria-valuenow"],ie={key:1,class:"material-symbols-rounded downloading"},ce=["onClick"],ue=["onClick"],_e=["onClick"],me={key:1,class:"col-span-2 flex flex-row justify-center items-center"},pe={class:"new-download"},fe=N({__name:"index",setup(v){const _=S(),g=l=>{L.addYesNo("Are you sure you want to redownload this song?",null,null,()=>{console.log("[downloader] reDownload",l),_.downloadFromDb(l)})},m={title:"",artist:"",album:{name:"",href:"",id:""},cover:"",source:"",href:""},w=x(null),c=x([{name:"source",type:"text",accept:"audio/mp3",required:!0,onChange:async l=>{const u=await q(l);c.value.find(e=>e.name==="title").value=u.title,c.value.find(e=>e.name==="artist").value=u.artist,c.value.find(e=>e.name==="album").value=u.album,c.value.find(e=>e.name==="cover").value=u.cover,c.value.find(e=>e.name==="source").value=u.source},value:m.source},{name:"title",type:"text",icon:"title",required:!0,value:m.title},{name:"artist",type:"text",icon:"person",required:!0,value:m.artist},{name:"album",type:"text",icon:"album",value:m.album.name},{name:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:m.cover}]),D=async()=>{const l=w.value.toObject();l.id=new Date().getTime(),console.log("[downloader] requestDownload",l),_.downloadOther(l)};return(l,u)=>(s(),n("div",H,[o("div",J,[(s(!0),n(r,null,B(f(_).states,e=>{var k;return s(),n(r,{key:e.songId},[e.internal?d("",!0):(s(),C(y,{key:0,class:V([["song",{downloading:((k=f(_).states[e.songId])==null?void 0:k.status)=="downloading"}],"p-4 card items-center"])},{default:h(()=>[e.status!=="pending"?(s(),n(r,{key:0},[o("main",M,[o("h2",P,[e.song?(s(),n(r,{key:0},[t(a(e.song.title),1)],64)):(s(),n(r,{key:1},[t(a(e.filename),1)],64))]),o("div",Y,[e.song?(s(),C(y,{key:0,class:"info p-4"},{default:h(()=>[p(F,{src:e.song.cover,class:"cover"},null,8,["src"]),o("div",G,[o("span",null,a(e.song.album.name),1),o("span",null,a(e.song.artist),1)])]),_:2},1024)):d("",!0),e.status!=="error"?(s(),n(r,{key:1},[e.downloaded||e.total?(s(),n("div",K,[Q,t(" "+a(f(I)(e.downloaded))+" / "+a(f(I)(e.total)),1)])):d("",!0),e.chunk?(s(),n("div",R,[U,t(" "+a(e.chunk),1)])):d("",!0),o("div",W,[X,t(" "+a(e.status==="downloading"?e.percent:100)+"% ",1)]),e.speed!=="0"?(s(),n("div",Z,[ee,t(" "+a(e.speed),1)])):d("",!0),e.elapsed!=="0"||e.eta!==0?(s(),n("div",oe,[se,t(" "+a(e.elapsed)+" / "+a(e.eta)+"s ",1)])):d("",!0)],64)):(s(),n(r,{key:2},[ne,e.song?(s(),n("div",ae,[le,o("a",{href:e.song.source,target:"_blank",rel:"noopener noreferrer"},a(e.song.source),9,de)])):d("",!0)],64))])]),o("aside",null,[o("div",re,[e.status=="downloading"?(s(),n("div",{key:0,class:"progress-bar",role:"progressbar","aria-valuenow":e.percent,"aria-valuemin":"0","aria-valuemax":"100",style:O({"--progress":e.percent+"%"})},null,12,te)):d("",!0),e.status=="downloading"?(s(),n("span",ie," south ")):e.status=="finished"?(s(),n("span",{key:2,class:"material-symbols-rounded cursor-pointer finished",onClick:b=>f(_).download(e.songId)}," download_for_offline ",8,ce)):e.status=="downloaded"?(s(),n("span",{key:3,class:"material-symbols-rounded cursor-pointer downloaded",onClick:b=>g(e.songId)}," download_done ",8,ue)):e.status=="error"?(s(),n("span",{key:4,class:"material-symbols-rounded cursor-pointer error",onClick:b=>g(e.songId)}," error ",8,_e)):d("",!0)])])],64)):(s(),n("div",me,[p(T)]))]),_:2},1032,["class"]))],64)}),128))]),o("div",pe,[p(y,{class:"custom p-4 flex flex-col"},{default:h(()=>[p($,{ref_key:"form",ref:w,options:c.value},null,8,["options"]),p(z,{icon:"download_for_offline",label:"Download",class:"w-full mt-8",onClick:D})]),_:1})])]))}});const he=E(fe,[["__scopeId","data-v-9623d76a"]]);export{he as default}; +import{e as N,aI as S,n as x,a8 as q,o as s,c as n,a as o,F as r,h as B,i as C,w as h,b as t,t as a,C as y,g as p,H as F,d,u as f,aJ as I,z as O,L as T,O as V,v as $,I as z,ar as L,l as j,m as A,_ as E}from"./index-4a15a213.js";const i=v=>(j("data-v-9623d76a"),v=v(),A(),v),H={class:"downloader py-2 pr-2 grid gap-4 grid-cols-2 items-start"},J={class:"downloads"},M={class:"main"},P={class:"m-0 mb-4"},Y={class:"status"},G={class:"flex flex-col"},K={key:0,class:"info"},Q=i(()=>o("span",{class:"material-symbols-rounded"},"cloud",-1)),R={key:1,class:"info"},U=i(()=>o("span",{class:"material-symbols-rounded"},"file_download",-1)),W={class:"info"},X=i(()=>o("span",{class:"material-symbols-rounded"},"percent",-1)),Z={key:2,class:"info"},ee=i(()=>o("span",{class:"material-symbols-rounded"},"speed",-1)),oe={key:3,class:"info"},se=i(()=>o("span",{class:"material-symbols-rounded"},"timer",-1)),ne=i(()=>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)),ae={key:0,class:"info"},le=i(()=>o("span",{class:"material-symbols-rounded"},"link",-1)),de=["href"],re={class:"wrap-progress"},te=["aria-valuenow"],ie={key:1,class:"material-symbols-rounded downloading"},ce=["onClick"],ue=["onClick"],_e=["onClick"],me={key:1,class:"col-span-2 flex flex-row justify-center items-center"},pe={class:"new-download"},fe=N({__name:"index",setup(v){const _=S(),g=l=>{L.addYesNo("Are you sure you want to redownload this song?",null,null,()=>{console.log("[downloader] reDownload",l),_.downloadFromDb(l)})},m={title:"",artist:"",album:{name:"",href:"",id:""},cover:"",source:"",href:""},w=x(null),c=x([{name:"source",type:"text",accept:"audio/mp3",required:!0,onChange:async l=>{const u=await q(l);c.value.find(e=>e.name==="title").value=u.title,c.value.find(e=>e.name==="artist").value=u.artist,c.value.find(e=>e.name==="album").value=u.album,c.value.find(e=>e.name==="cover").value=u.cover,c.value.find(e=>e.name==="source").value=u.source},value:m.source},{name:"title",type:"text",icon:"title",required:!0,value:m.title},{name:"artist",type:"text",icon:"person",required:!0,value:m.artist},{name:"album",type:"text",icon:"album",value:m.album.name},{name:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:m.cover}]),D=async()=>{const l=w.value.toObject();l.id=new Date().getTime(),console.log("[downloader] requestDownload",l),_.downloadOther(l)};return(l,u)=>(s(),n("div",H,[o("div",J,[(s(!0),n(r,null,B(f(_).states,e=>{var k;return s(),n(r,{key:e.songId},[e.internal?d("",!0):(s(),C(y,{key:0,class:V([["song",{downloading:((k=f(_).states[e.songId])==null?void 0:k.status)=="downloading"}],"p-4 card items-center"])},{default:h(()=>[e.status!=="pending"?(s(),n(r,{key:0},[o("main",M,[o("h2",P,[e.song?(s(),n(r,{key:0},[t(a(e.song.title),1)],64)):(s(),n(r,{key:1},[t(a(e.filename),1)],64))]),o("div",Y,[e.song?(s(),C(y,{key:0,class:"info p-4"},{default:h(()=>[p(F,{src:e.song.cover,class:"cover"},null,8,["src"]),o("div",G,[o("span",null,a(e.song.album.name),1),o("span",null,a(e.song.artist),1)])]),_:2},1024)):d("",!0),e.status!=="error"?(s(),n(r,{key:1},[e.downloaded||e.total?(s(),n("div",K,[Q,t(" "+a(f(I)(e.downloaded))+" / "+a(f(I)(e.total)),1)])):d("",!0),e.chunk?(s(),n("div",R,[U,t(" "+a(e.chunk),1)])):d("",!0),o("div",W,[X,t(" "+a(e.status==="downloading"?e.percent:100)+"% ",1)]),e.speed!=="0"?(s(),n("div",Z,[ee,t(" "+a(e.speed),1)])):d("",!0),e.elapsed!=="0"||e.eta!==0?(s(),n("div",oe,[se,t(" "+a(e.elapsed)+" / "+a(e.eta)+"s ",1)])):d("",!0)],64)):(s(),n(r,{key:2},[ne,e.song?(s(),n("div",ae,[le,o("a",{href:e.song.source,target:"_blank",rel:"noopener noreferrer"},a(e.song.source),9,de)])):d("",!0)],64))])]),o("aside",null,[o("div",re,[e.status=="downloading"?(s(),n("div",{key:0,class:"progress-bar",role:"progressbar","aria-valuenow":e.percent,"aria-valuemin":"0","aria-valuemax":"100",style:O({"--progress":e.percent+"%"})},null,12,te)):d("",!0),e.status=="downloading"?(s(),n("span",ie," south ")):e.status=="finished"?(s(),n("span",{key:2,class:"material-symbols-rounded cursor-pointer finished",onClick:b=>f(_).download(e.songId)}," download_for_offline ",8,ce)):e.status=="downloaded"?(s(),n("span",{key:3,class:"material-symbols-rounded cursor-pointer downloaded",onClick:b=>g(e.songId)}," download_done ",8,ue)):e.status=="error"?(s(),n("span",{key:4,class:"material-symbols-rounded cursor-pointer error",onClick:b=>g(e.songId)}," error ",8,_e)):d("",!0)])])],64)):(s(),n("div",me,[p(T)]))]),_:2},1032,["class"]))],64)}),128))]),o("div",pe,[p(y,{class:"custom p-4 flex flex-col"},{default:h(()=>[p($,{ref_key:"form",ref:w,options:c.value},null,8,["options"]),p(z,{icon:"download_for_offline",label:"Download",class:"w-full mt-8",onClick:D})]),_:1})])]))}});const he=E(fe,[["__scopeId","data-v-9623d76a"]]);export{he as default}; diff --git a/src/ui/dist/assets/index-da602f8b.js.gz b/src/ui/dist/assets/index-da602f8b.js.gz new file mode 100644 index 00000000..71025dd0 Binary files /dev/null and b/src/ui/dist/assets/index-da602f8b.js.gz differ diff --git a/src/ui/dist/assets/index-dff95c16.js.gz b/src/ui/dist/assets/index-dff95c16.js.gz deleted file mode 100644 index fbad0da0..00000000 Binary files a/src/ui/dist/assets/index-dff95c16.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-24d50f88.js b/src/ui/dist/assets/index-faf92038.js similarity index 98% rename from src/ui/dist/assets/index-24d50f88.js rename to src/ui/dist/assets/index-faf92038.js index ccc0ee45..ccce7b47 100644 --- a/src/ui/dist/assets/index-24d50f88.js +++ b/src/ui/dist/assets/index-faf92038.js @@ -1 +1 @@ -import{_ as I,f as E,o,c as _,g as v,w as h,l as te,m as se,a as t,C as Q,H as K,i as y,t as b,d as x,e as M,n as f,y as j,E as P,r as ie,L as le,h as A,F as D,j as re,D as L,q as ue,J as ce,M as X,K as Z,N as C,O as R,b as de,Q as ee,B as _e,R as pe}from"./index-a96016e0.js";import{F}from"./FullShelf-26be5033.js";import{E as ve}from"./Error-2928541c.js";import{P as Y}from"./PlaylistCard-200edd27.js";import{p as me}from"./playerInPicture-af203fdf.js";const fe={name:"CollectionHeader",props:{href:String}},q=c=>(te("data-v-a26d5560"),c=c(),se(),c),he={class:"wrapper"},ye=q(()=>t("div",{class:"collection"},"Playlists",-1)),ge=q(()=>t("div",{class:"collection"},"Releases",-1)),xe=q(()=>t("div",{class:"collection"},"Artists",-1)),we=q(()=>t("div",{class:"collection"},"Albums",-1));function ke(c,i,e,d,m,n){const u=E("router-link");return o(),_("div",he,[v(u,{class:"link",to:"/collection/playlists"},{default:h(()=>[ye]),_:1}),v(u,{class:"link",to:"/collection/releases"},{default:h(()=>[ge]),_:1}),v(u,{class:"link",to:"/collection/artists"},{default:h(()=>[xe]),_:1}),v(u,{class:"link",to:"/collection/albums"},{default:h(()=>[we]),_:1})])}const $e=I(fe,[["render",ke],["__scopeId","data-v-a26d5560"]]),Ce={components:{Card:Q,Cover:K},name:"CardWithImageAndText",props:{cover:String,title:String,description:String,playlistType:{type:String,default:null},imageType:{type:String,default:"playlist"}}};const be={class:"item"},Se={class:"title"},Ie={key:0,class:"material-symbols-rounded"},Te=["title"],Ae=["title","innerHTML"];function De(c,i,e,d,m,n){const u=E("Cover"),l=E("Card");return o(),y(l,{class:"wrapper drop-shadow-md","with-hover":""},{default:h(()=>[t("div",be,[v(u,{src:e.cover,type:e.imageType,name:e.title},null,8,["src","type","name"]),t("div",null,[t("div",Se,[[null,"classic"].includes(e.playlistType)?x("",!0):(o(),_("span",Ie,b(e.playlistType=="smart"?"neurology":"bolt"),1)),t("h4",{title:e.title},b(e.title),9,Te)]),t("p",{class:"text-muted text-xs hideIfMobile",title:e.description,innerHTML:e.description},null,8,Ae)])])]),_:1})}const ae=I(Ce,[["render",De],["__scopeId","data-v-19795e3d"]]),B=M({__name:"FetchLoader",props:{response:{type:Promise,required:!0},error:{type:Function,default:c=>`Failed to fetch (${c.status})`}},setup(c){const i=c,e=f(!1),d=f(""),m=async()=>{if(!i.response)return;e.value=!0,d.value="";const n=await i.response;e.value=!1,n.ok||(d.value=i.error(n))};return j(m),P(()=>i.response,m),(n,u)=>e.value?(o(),y(le,{key:0})):d.value?(o(),y(ve,{key:1,msg:d.value},null,8,["msg"])):c.response?ie(n.$slots,"default",{key:2}):x("",!0)}}),Me={class:"albums"},Re=M({__name:"Albums",setup(c){const i=f([]),e=f(null);return j(async()=>{e.value=fetch("/api/albums");const m=await(await e.value).json();i.value=m.sort((n,u)=>n.name.localeCompare(u.name))}),(d,m)=>(o(),y(B,{response:e.value},{default:h(()=>[t("div",Me,[v(F,{heading:"In your library"},{default:h(()=>[(o(!0),_(D,null,A(i.value,n=>(o(),y(ae,{title:n.name,description:n.artists.join(", "),cover:n.image,onClick:u=>d.$router.push(n.href),imageType:"album"},null,8,["title","description","cover","onClick"]))),256))]),_:1})])]),_:1},8,["response"]))}});const Pe=I(Re,[["__scopeId","data-v-d9f5e245"]]),Ee={class:"playlists"},Fe=M({__name:"Playlists",setup(c){const i=re(),e=L(()=>i.playlists),d=f([]),m=f(null);return j(async()=>{m.value=fetch("/api/spotify/playlists");const u=await(await m.value).json();d.value=u}),(n,u)=>(o(),_("div",Ee,[e.value.length?(o(),y(F,{key:0,heading:"Playlists"},{default:h(()=>[(o(!0),_(D,null,A(e.value,l=>(o(),y(Y,{playlist:l},null,8,["playlist"]))),256))]),_:1})):x("",!0),v(B,{response:m.value,error:l=>`Failed to fetch Spotify playlists (${l.status})`},{default:h(()=>[d.value.length?(o(),y(F,{key:0,heading:"Import From Spotify"},{default:h(()=>[v(Y,{playlist:{href:"/liked",name:"Liked",description:"your liked tracks",type:"classic",cover:null,id:"liked",plays:0},"is-spotify":""}),(o(!0),_(D,null,A(d.value,l=>(o(),y(Y,{playlist:{...l,href:`https://open.spotify.com/playlist/${l.id}`,type:"classic"},"is-spotify":""},null,8,["playlist"]))),256))]),_:1})):x("",!0)]),_:1},8,["response","error"])]))}}),W=c=>(te("data-v-a22e8b2e"),c=c(),se(),c),je={key:0,class:"fill-page"},Ne={key:1,class:"p-4 overflow-hidden h-full"},Le={class:"releases w-full"},Be={class:"current"},qe={key:0,class:"w-max flex flex-col gap-4"},He={class:"flex justify-between w-full items-center"},Oe={class:"flex gap-4 items-center"},Ye={class:"info"},Je={key:0},Ve={key:1,class:"m-0 text-muted text-sm"},Ke=["title"],Qe={class:"actions"},We={key:1,class:"h-96 flex flex-col justify-center"},ze=W(()=>t("span",{class:"italic text-sm text-muted"}," Nothing to preview ",-1)),Ue=[ze],Ge={class:"flex items-center gap-4 w-max"},Xe={key:0,class:"flex justify-end mb-2"},Ze=W(()=>t("span",{class:"material-symbols-rounded"}," done_all ",-1)),et={class:"entries overflow-y-auto flex flex-col gap-2"},tt=["onClick"],st={class:"info overflow-hidden"},lt={class:"m-0 overflow-hidden"},at={class:"m-0 overflow-hidden text-sm text-muted"},ot=["title"],nt=["onClick"],it=["onClick"],rt=["onClick"],ut={key:1,class:"flex flex-col items-center"},ct=W(()=>t("span",{class:"italic text-sm text-muted"}," No releases in this queue ",-1)),dt=[ct],J="reap.releases.seen",V="reap.releases.remember",_t=M({__name:"Releases",setup(c){const i=f(!0),e=f("unseen"),d=a=>{const s=new Date(a),g=Math.floor((Date.now()-s.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`:s.toLocaleDateString()},m=ue();P(e,a=>{const s={queue:a};m.replace({query:s})});const n=L(()=>{switch(e.value){case"unseen":return T.value.filter(a=>!$.value.includes(a.url));case"out-today":return oe.value;case"watching":return k.value;case"all":return T.value;case"seen":return $.value.map(a=>T.value.find(s=>s.url==a)).filter(a=>a)}}),u=a=>{me(a.artist,a.title,a.url)},l=f(null),w=f(null),H=new Date,T=f([]),z=a=>{l.value=a,ee(()=>{var s;(s=w.value)==null||s.show()})},oe=L(()=>T.value.filter(a=>{const s=new Date(a.releaseDate);return H.getMonth()==s.getMonth()&&H.getDate()==s.getDate()&&H.getFullYear()==s.getFullYear()})),U=a=>{k.value.find(s=>s.url==a.url)||k.value.push(a)},G=a=>{k.value=k.value.filter(s=>s.url!=a.url)},O=a=>{var g;let s=!1;a.url===((g=p.value)==null?void 0:g.url)&&(s=!0),$.value.includes(a.url)||$.value.push(a.url),s&&ee(()=>u(p.value))},$=f([]),k=f([]),p=f(null);return j(async()=>{var s;i.value=!0;const a=await fetch("/api/releases");T.value=await a.json(),i.value=!1,$.value=((s=localStorage.getItem(J))==null?void 0:s.split(","))??[],$.value=$.value.filter(g=>T.value.find(N=>N.url==g)),k.value=JSON.parse(localStorage.getItem(V)??"[]")}),P(n,a=>{p.value=a[0]??null}),P($,a=>{a.length?localStorage.setItem(J,a.join(",")):localStorage.removeItem(J)},{deep:!0}),P(k,a=>{a.length?localStorage.setItem(V,JSON.stringify(a)):localStorage.removeItem(V)},{deep:!0}),(a,s)=>{var g,N;return i.value?(o(),_("div",je,[v(le)])):(o(),_("div",Ne,[l.value?(o(),y(ce,{key:0,id:(g=l.value.url)==null?void 0:g.replace("https://open.spotify.com/album/",""),ref_key:"addReleaseRef",ref:w,album:{id:(N=l.value.url)==null?void 0:N.replace("https://open.spotify.com/album/",""),title:l.value.title,artist:l.value.artists.join(", "),cover:l.value.cover,href:l.value.url,releaseDate:l.value.releaseDate},artist:l.value.artist,cover:l.value.cover,href:l.value.url,title:l.value.title},null,8,["id","album","artist","cover","href","title"])):x("",!0),t("div",Le,[t("div",Be,[p.value?(o(),_("div",qe,[p.value?(o(),y(K,{key:0,class:"rounded-3xl",src:p.value.cover},null,8,["src"])):x("",!0),t("div",He,[t("div",Oe,[t("span",{class:"preview material-symbols-rounded ms-fill text-5xl cursor-pointer",onClick:s[0]||(s[0]=r=>u(p.value))}," play_circle "),t("div",Ye,[p.value?(o(),_("h3",Je,[v(X,{text:p.value.title},null,8,["text"])])):x("",!0),p.value?(o(),_("p",Ve,[v(Z,{artist:p.value.artist},null,8,["artist"])])):x("",!0),p.value?(o(),_("p",{key:2,class:"m-0 text-muted text-xs",title:p.value.releaseDate},b(d(p.value.releaseDate)),9,Ke)):x("",!0)])]),t("div",Qe,[t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:s[1]||(s[1]=C(r=>z(p.value),["stop"])),title:"Add to playlist"}," add "),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:s[2]||(s[2]=C(r=>k.value.find(S=>S.url===p.value.url)?G(p.value):U(p.value),["stop"])),title:"Pin"},b(k.value.find(r=>r.url===p.value.url)?"playlist_remove":"push_pin"),1),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:s[3]||(s[3]=C(r=>O(p.value),["stop"])),title:"Mark as seen"}," done_all ")])])])):(o(),_("div",We,Ue))]),v(Q,{class:"queue w-full p-2 h-full flex flex-col gap-2 relative"},{default:h(()=>[t("div",Ge,[t("h5",{class:R(["cursor-pointer",{selected:e.value=="unseen"}]),onClick:s[4]||(s[4]=r=>e.value="unseen")}," Unseen ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="out-today"}]),onClick:s[5]||(s[5]=r=>e.value="out-today")}," Out Today ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="watching"}]),onClick:s[6]||(s[6]=r=>e.value="watching")}," Pinned ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="seen"}]),onClick:s[7]||(s[7]=r=>e.value="seen")}," Seen ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="all"}]),onClick:s[8]||(s[8]=r=>e.value="all")}," All ",2)]),e.value==="unseen"&&n.value.length?(o(),_("div",Xe,[t("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:s[9]||(s[9]=r=>n.value.forEach(O))},[de(" Mark all as seen "),Ze])])):x("",!0),t("div",et,[n.value.length?(o(!0),_(D,{key:0},A(n.value,r=>(o(),_("div",{class:"entry",onClick:S=>{p.value=r,u(r)}},[v(K,{class:"rounded-xl",src:r.cover},null,8,["src"]),t("div",st,[t("p",lt,[v(X,{text:r.title},null,8,["text"])]),t("p",at,[v(Z,{artist:r.artist},null,8,["artist"])])]),t("p",{class:"text-sm m-0 text-muted",title:r.releaseDate},b(d(r.releaseDate)),9,ot),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:C(S=>z(r),["stop"]),title:"Add to playlist"}," add ",8,nt),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:C(S=>k.value.find(ne=>ne.url===r.url)?G(r):U(r),["stop"]),title:"Pin"},b(k.value.find(S=>S.url===r.url)?"playlist_remove":"push_pin"),9,it),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:C(S=>O(r),["stop"]),title:"Mark as seen"}," done_all ",8,rt)],8,tt))),256)):x("",!0)]),n.value.length?x("",!0):(o(),_("div",ut,dt))]),_:1})])]))}}});const pt=I(_t,[["__scopeId","data-v-a22e8b2e"]]);const vt={components:{Card:Q},name:"ArtistItem",methods:{follow(c){c.stopPropagation();const i=this.following?"DELETE":"POST";fetch("/api/spotify/following",{method:i,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}},mt={class:"item"},ft=["src"],ht={class:"flex gap-2 items-center justify-between"},yt=["innerHTML"];function gt(c,i,e,d,m,n){const u=E("add-artist-to-playlist"),l=E("Card");return o(),y(l,{class:"wrapper","with-hover":"",onClick:i[1]||(i[1]=C(w=>c.$router.push("/artist/"+e.name),["stop"]))},{default:h(()=>[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"]),t("div",mt,[t("img",{src:e.cover},null,8,ft),t("div",ht,[t("div",null,[t("h4",null,b(e.name),1),t("p",{innerHTML:e.description},null,8,yt)]),e.showFollowButton?(o(),_("span",{key:0,class:"material-symbols-rounded text-muted text-md",onClick:i[0]||(i[0]=C((...w)=>n.follow&&n.follow(...w),["stop"]))},b(m.following?"person_check":"person_add"),1)):x("",!0)])])]),_:1})}const xt=I(vt,[["render",gt],["__scopeId","data-v-8fde1a37"]]),wt={class:"artists"},kt=M({__name:"Artists",setup(c){const i=f([]),e=f([]),d=f(null),m=f(null);return j(async()=>{d.value=fetch("/api/artists");let n=await d.value,u=await n.json();e.value=u.sort((l,w)=>l.name.localeCompare(w.name)),m.value=fetch("/api/spotify/artists"),n=await m.value,u=await n.json(),i.value=u.sort((l,w)=>l.name.localeCompare(w.name))}),(n,u)=>(o(),_("div",wt,[v(B,{response:d.value},{default:h(()=>[v(F,{heading:"In your library"},{default:h(()=>[(o(!0),_(D,null,A(e.value,l=>(o(),y(ae,{title:l.name,cover:l.image,onClick:w=>n.$router.push(`/artist/${l.name}`),imageType:"artist"},null,8,["title","cover","onClick"]))),256))]),_:1})]),_:1},8,["response"]),v(B,{response:m.value},{default:h(()=>[v(F,{heading:"Following on Spotify"},{default:h(()=>[(o(!0),_(D,null,A(i.value,(l,w)=>(o(),y(xt,{id:l.id,key:w,cover:l.cover,description:l.description,name:l.name,"initially-following":"","show-follow-button":""},null,8,["id","cover","description","name"]))),128))]),_:1})]),_:1},8,["response"])]))}});const $t=I(kt,[["__scopeId","data-v-16f47b6f"]]),Ct={class:"parent"},bt={class:"collection"},St=M({__name:"index",setup(c){const i=_e(),e=L(()=>{switch(i.path.split("/")[2]){case"albums":return Pe;case"playlists":return Fe;case"releases":return pt;case"artists":return $t}});return(d,m)=>(o(),_("div",Ct,[v($e,{class:"header"}),t("main",bt,[(o(),y(pe(e.value)))])]))}});const Rt=I(St,[["__scopeId","data-v-433b7137"]]);export{Rt as default}; +import{_ as I,f as E,o,c as _,g as v,w as h,l as te,m as se,a as t,C as Q,H as K,i as y,t as b,d as x,e as M,n as f,y as j,E as P,r as ie,L as le,h as A,F as D,j as re,D as L,q as ue,J as ce,M as X,K as Z,N as C,O as R,b as de,Q as ee,B as _e,R as pe}from"./index-4a15a213.js";import{F}from"./FullShelf-b2b7ffe5.js";import{E as ve}from"./Error-e5e93467.js";import{P as Y}from"./PlaylistCard-915b2cc1.js";import{p as me}from"./playerInPicture-af203fdf.js";const fe={name:"CollectionHeader",props:{href:String}},q=c=>(te("data-v-a26d5560"),c=c(),se(),c),he={class:"wrapper"},ye=q(()=>t("div",{class:"collection"},"Playlists",-1)),ge=q(()=>t("div",{class:"collection"},"Releases",-1)),xe=q(()=>t("div",{class:"collection"},"Artists",-1)),we=q(()=>t("div",{class:"collection"},"Albums",-1));function ke(c,i,e,d,m,n){const u=E("router-link");return o(),_("div",he,[v(u,{class:"link",to:"/collection/playlists"},{default:h(()=>[ye]),_:1}),v(u,{class:"link",to:"/collection/releases"},{default:h(()=>[ge]),_:1}),v(u,{class:"link",to:"/collection/artists"},{default:h(()=>[xe]),_:1}),v(u,{class:"link",to:"/collection/albums"},{default:h(()=>[we]),_:1})])}const $e=I(fe,[["render",ke],["__scopeId","data-v-a26d5560"]]),Ce={components:{Card:Q,Cover:K},name:"CardWithImageAndText",props:{cover:String,title:String,description:String,playlistType:{type:String,default:null},imageType:{type:String,default:"playlist"}}};const be={class:"item"},Se={class:"title"},Ie={key:0,class:"material-symbols-rounded"},Te=["title"],Ae=["title","innerHTML"];function De(c,i,e,d,m,n){const u=E("Cover"),l=E("Card");return o(),y(l,{class:"wrapper drop-shadow-md","with-hover":""},{default:h(()=>[t("div",be,[v(u,{src:e.cover,type:e.imageType,name:e.title},null,8,["src","type","name"]),t("div",null,[t("div",Se,[[null,"classic"].includes(e.playlistType)?x("",!0):(o(),_("span",Ie,b(e.playlistType=="smart"?"neurology":"bolt"),1)),t("h4",{title:e.title},b(e.title),9,Te)]),t("p",{class:"text-muted text-xs hideIfMobile",title:e.description,innerHTML:e.description},null,8,Ae)])])]),_:1})}const ae=I(Ce,[["render",De],["__scopeId","data-v-19795e3d"]]),B=M({__name:"FetchLoader",props:{response:{type:Promise,required:!0},error:{type:Function,default:c=>`Failed to fetch (${c.status})`}},setup(c){const i=c,e=f(!1),d=f(""),m=async()=>{if(!i.response)return;e.value=!0,d.value="";const n=await i.response;e.value=!1,n.ok||(d.value=i.error(n))};return j(m),P(()=>i.response,m),(n,u)=>e.value?(o(),y(le,{key:0})):d.value?(o(),y(ve,{key:1,msg:d.value},null,8,["msg"])):c.response?ie(n.$slots,"default",{key:2}):x("",!0)}}),Me={class:"albums"},Re=M({__name:"Albums",setup(c){const i=f([]),e=f(null);return j(async()=>{e.value=fetch("/api/albums");const m=await(await e.value).json();i.value=m.sort((n,u)=>n.name.localeCompare(u.name))}),(d,m)=>(o(),y(B,{response:e.value},{default:h(()=>[t("div",Me,[v(F,{heading:"In your library"},{default:h(()=>[(o(!0),_(D,null,A(i.value,n=>(o(),y(ae,{title:n.name,description:n.artists.join(", "),cover:n.image,onClick:u=>d.$router.push(n.href),imageType:"album"},null,8,["title","description","cover","onClick"]))),256))]),_:1})])]),_:1},8,["response"]))}});const Pe=I(Re,[["__scopeId","data-v-d9f5e245"]]),Ee={class:"playlists"},Fe=M({__name:"Playlists",setup(c){const i=re(),e=L(()=>i.playlists),d=f([]),m=f(null);return j(async()=>{m.value=fetch("/api/spotify/playlists");const u=await(await m.value).json();d.value=u}),(n,u)=>(o(),_("div",Ee,[e.value.length?(o(),y(F,{key:0,heading:"Playlists"},{default:h(()=>[(o(!0),_(D,null,A(e.value,l=>(o(),y(Y,{playlist:l},null,8,["playlist"]))),256))]),_:1})):x("",!0),v(B,{response:m.value,error:l=>`Failed to fetch Spotify playlists (${l.status})`},{default:h(()=>[d.value.length?(o(),y(F,{key:0,heading:"Import From Spotify"},{default:h(()=>[v(Y,{playlist:{href:"/liked",name:"Liked",description:"your liked tracks",type:"classic",cover:null,id:"liked",plays:0},"is-spotify":""}),(o(!0),_(D,null,A(d.value,l=>(o(),y(Y,{playlist:{...l,href:`https://open.spotify.com/playlist/${l.id}`,type:"classic"},"is-spotify":""},null,8,["playlist"]))),256))]),_:1})):x("",!0)]),_:1},8,["response","error"])]))}}),W=c=>(te("data-v-a22e8b2e"),c=c(),se(),c),je={key:0,class:"fill-page"},Ne={key:1,class:"p-4 overflow-hidden h-full"},Le={class:"releases w-full"},Be={class:"current"},qe={key:0,class:"w-max flex flex-col gap-4"},He={class:"flex justify-between w-full items-center"},Oe={class:"flex gap-4 items-center"},Ye={class:"info"},Je={key:0},Ve={key:1,class:"m-0 text-muted text-sm"},Ke=["title"],Qe={class:"actions"},We={key:1,class:"h-96 flex flex-col justify-center"},ze=W(()=>t("span",{class:"italic text-sm text-muted"}," Nothing to preview ",-1)),Ue=[ze],Ge={class:"flex items-center gap-4 w-max"},Xe={key:0,class:"flex justify-end mb-2"},Ze=W(()=>t("span",{class:"material-symbols-rounded"}," done_all ",-1)),et={class:"entries overflow-y-auto flex flex-col gap-2"},tt=["onClick"],st={class:"info overflow-hidden"},lt={class:"m-0 overflow-hidden"},at={class:"m-0 overflow-hidden text-sm text-muted"},ot=["title"],nt=["onClick"],it=["onClick"],rt=["onClick"],ut={key:1,class:"flex flex-col items-center"},ct=W(()=>t("span",{class:"italic text-sm text-muted"}," No releases in this queue ",-1)),dt=[ct],J="reap.releases.seen",V="reap.releases.remember",_t=M({__name:"Releases",setup(c){const i=f(!0),e=f("unseen"),d=a=>{const s=new Date(a),g=Math.floor((Date.now()-s.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`:s.toLocaleDateString()},m=ue();P(e,a=>{const s={queue:a};m.replace({query:s})});const n=L(()=>{switch(e.value){case"unseen":return T.value.filter(a=>!$.value.includes(a.url));case"out-today":return oe.value;case"watching":return k.value;case"all":return T.value;case"seen":return $.value.map(a=>T.value.find(s=>s.url==a)).filter(a=>a)}}),u=a=>{me(a.artist,a.title,a.url)},l=f(null),w=f(null),H=new Date,T=f([]),z=a=>{l.value=a,ee(()=>{var s;(s=w.value)==null||s.show()})},oe=L(()=>T.value.filter(a=>{const s=new Date(a.releaseDate);return H.getMonth()==s.getMonth()&&H.getDate()==s.getDate()&&H.getFullYear()==s.getFullYear()})),U=a=>{k.value.find(s=>s.url==a.url)||k.value.push(a)},G=a=>{k.value=k.value.filter(s=>s.url!=a.url)},O=a=>{var g;let s=!1;a.url===((g=p.value)==null?void 0:g.url)&&(s=!0),$.value.includes(a.url)||$.value.push(a.url),s&&ee(()=>u(p.value))},$=f([]),k=f([]),p=f(null);return j(async()=>{var s;i.value=!0;const a=await fetch("/api/releases");T.value=await a.json(),i.value=!1,$.value=((s=localStorage.getItem(J))==null?void 0:s.split(","))??[],$.value=$.value.filter(g=>T.value.find(N=>N.url==g)),k.value=JSON.parse(localStorage.getItem(V)??"[]")}),P(n,a=>{p.value=a[0]??null}),P($,a=>{a.length?localStorage.setItem(J,a.join(",")):localStorage.removeItem(J)},{deep:!0}),P(k,a=>{a.length?localStorage.setItem(V,JSON.stringify(a)):localStorage.removeItem(V)},{deep:!0}),(a,s)=>{var g,N;return i.value?(o(),_("div",je,[v(le)])):(o(),_("div",Ne,[l.value?(o(),y(ce,{key:0,id:(g=l.value.url)==null?void 0:g.replace("https://open.spotify.com/album/",""),ref_key:"addReleaseRef",ref:w,album:{id:(N=l.value.url)==null?void 0:N.replace("https://open.spotify.com/album/",""),title:l.value.title,artist:l.value.artists.join(", "),cover:l.value.cover,href:l.value.url,releaseDate:l.value.releaseDate},artist:l.value.artist,cover:l.value.cover,href:l.value.url,title:l.value.title},null,8,["id","album","artist","cover","href","title"])):x("",!0),t("div",Le,[t("div",Be,[p.value?(o(),_("div",qe,[p.value?(o(),y(K,{key:0,class:"rounded-3xl",src:p.value.cover},null,8,["src"])):x("",!0),t("div",He,[t("div",Oe,[t("span",{class:"preview material-symbols-rounded ms-fill text-5xl cursor-pointer",onClick:s[0]||(s[0]=r=>u(p.value))}," play_circle "),t("div",Ye,[p.value?(o(),_("h3",Je,[v(X,{text:p.value.title},null,8,["text"])])):x("",!0),p.value?(o(),_("p",Ve,[v(Z,{artist:p.value.artist},null,8,["artist"])])):x("",!0),p.value?(o(),_("p",{key:2,class:"m-0 text-muted text-xs",title:p.value.releaseDate},b(d(p.value.releaseDate)),9,Ke)):x("",!0)])]),t("div",Qe,[t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:s[1]||(s[1]=C(r=>z(p.value),["stop"])),title:"Add to playlist"}," add "),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:s[2]||(s[2]=C(r=>k.value.find(S=>S.url===p.value.url)?G(p.value):U(p.value),["stop"])),title:"Pin"},b(k.value.find(r=>r.url===p.value.url)?"playlist_remove":"push_pin"),1),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:s[3]||(s[3]=C(r=>O(p.value),["stop"])),title:"Mark as seen"}," done_all ")])])])):(o(),_("div",We,Ue))]),v(Q,{class:"queue w-full p-2 h-full flex flex-col gap-2 relative"},{default:h(()=>[t("div",Ge,[t("h5",{class:R(["cursor-pointer",{selected:e.value=="unseen"}]),onClick:s[4]||(s[4]=r=>e.value="unseen")}," Unseen ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="out-today"}]),onClick:s[5]||(s[5]=r=>e.value="out-today")}," Out Today ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="watching"}]),onClick:s[6]||(s[6]=r=>e.value="watching")}," Pinned ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="seen"}]),onClick:s[7]||(s[7]=r=>e.value="seen")}," Seen ",2),t("h5",{class:R(["cursor-pointer",{selected:e.value=="all"}]),onClick:s[8]||(s[8]=r=>e.value="all")}," All ",2)]),e.value==="unseen"&&n.value.length?(o(),_("div",Xe,[t("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:s[9]||(s[9]=r=>n.value.forEach(O))},[de(" Mark all as seen "),Ze])])):x("",!0),t("div",et,[n.value.length?(o(!0),_(D,{key:0},A(n.value,r=>(o(),_("div",{class:"entry",onClick:S=>{p.value=r,u(r)}},[v(K,{class:"rounded-xl",src:r.cover},null,8,["src"]),t("div",st,[t("p",lt,[v(X,{text:r.title},null,8,["text"])]),t("p",at,[v(Z,{artist:r.artist},null,8,["artist"])])]),t("p",{class:"text-sm m-0 text-muted",title:r.releaseDate},b(d(r.releaseDate)),9,ot),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:C(S=>z(r),["stop"]),title:"Add to playlist"}," add ",8,nt),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:C(S=>k.value.find(ne=>ne.url===r.url)?G(r):U(r),["stop"]),title:"Pin"},b(k.value.find(S=>S.url===r.url)?"playlist_remove":"push_pin"),9,it),t("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:C(S=>O(r),["stop"]),title:"Mark as seen"}," done_all ",8,rt)],8,tt))),256)):x("",!0)]),n.value.length?x("",!0):(o(),_("div",ut,dt))]),_:1})])]))}}});const pt=I(_t,[["__scopeId","data-v-a22e8b2e"]]);const vt={components:{Card:Q},name:"ArtistItem",methods:{follow(c){c.stopPropagation();const i=this.following?"DELETE":"POST";fetch("/api/spotify/following",{method:i,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}},mt={class:"item"},ft=["src"],ht={class:"flex gap-2 items-center justify-between"},yt=["innerHTML"];function gt(c,i,e,d,m,n){const u=E("add-artist-to-playlist"),l=E("Card");return o(),y(l,{class:"wrapper","with-hover":"",onClick:i[1]||(i[1]=C(w=>c.$router.push("/artist/"+e.name),["stop"]))},{default:h(()=>[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"]),t("div",mt,[t("img",{src:e.cover},null,8,ft),t("div",ht,[t("div",null,[t("h4",null,b(e.name),1),t("p",{innerHTML:e.description},null,8,yt)]),e.showFollowButton?(o(),_("span",{key:0,class:"material-symbols-rounded text-muted text-md",onClick:i[0]||(i[0]=C((...w)=>n.follow&&n.follow(...w),["stop"]))},b(m.following?"person_check":"person_add"),1)):x("",!0)])])]),_:1})}const xt=I(vt,[["render",gt],["__scopeId","data-v-8fde1a37"]]),wt={class:"artists"},kt=M({__name:"Artists",setup(c){const i=f([]),e=f([]),d=f(null),m=f(null);return j(async()=>{d.value=fetch("/api/artists");let n=await d.value,u=await n.json();e.value=u.sort((l,w)=>l.name.localeCompare(w.name)),m.value=fetch("/api/spotify/artists"),n=await m.value,u=await n.json(),i.value=u.sort((l,w)=>l.name.localeCompare(w.name))}),(n,u)=>(o(),_("div",wt,[v(B,{response:d.value},{default:h(()=>[v(F,{heading:"In your library"},{default:h(()=>[(o(!0),_(D,null,A(e.value,l=>(o(),y(ae,{title:l.name,cover:l.image,onClick:w=>n.$router.push(`/artist/${l.name}`),imageType:"artist"},null,8,["title","cover","onClick"]))),256))]),_:1})]),_:1},8,["response"]),v(B,{response:m.value},{default:h(()=>[v(F,{heading:"Following on Spotify"},{default:h(()=>[(o(!0),_(D,null,A(i.value,(l,w)=>(o(),y(xt,{id:l.id,key:w,cover:l.cover,description:l.description,name:l.name,"initially-following":"","show-follow-button":""},null,8,["id","cover","description","name"]))),128))]),_:1})]),_:1},8,["response"])]))}});const $t=I(kt,[["__scopeId","data-v-16f47b6f"]]),Ct={class:"parent"},bt={class:"collection"},St=M({__name:"index",setup(c){const i=_e(),e=L(()=>{switch(i.path.split("/")[2]){case"albums":return Pe;case"playlists":return Fe;case"releases":return pt;case"artists":return $t}});return(d,m)=>(o(),_("div",Ct,[v($e,{class:"header"}),t("main",bt,[(o(),y(pe(e.value)))])]))}});const Rt=I(St,[["__scopeId","data-v-433b7137"]]);export{Rt as default}; diff --git a/src/ui/dist/assets/index-faf92038.js.gz b/src/ui/dist/assets/index-faf92038.js.gz new file mode 100644 index 00000000..f7691bde Binary files /dev/null and b/src/ui/dist/assets/index-faf92038.js.gz differ diff --git a/src/ui/dist/assets/spotify-9bae3b48.js b/src/ui/dist/assets/spotify-2bf3aeb7.js similarity index 93% rename from src/ui/dist/assets/spotify-9bae3b48.js rename to src/ui/dist/assets/spotify-2bf3aeb7.js index 7a79e0f4..88d0c971 100644 --- a/src/ui/dist/assets/spotify-9bae3b48.js +++ b/src/ui/dist/assets/spotify-2bf3aeb7.js @@ -1 +1 @@ -import{o as c,c as e,a as o}from"./index-a96016e0.js";const t={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 168 168"},s=o("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.738l.001-.004zm38.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.222 5.222 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.18zm10.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.538 6.538 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.976v-.001zm.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),a=[s];function n(r,l){return c(),e("svg",t,[...a])}const _={render:n};export{_ as s}; +import{o as c,c as e,a as o}from"./index-4a15a213.js";const t={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 168 168"},s=o("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.738l.001-.004zm38.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.222 5.222 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.18zm10.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.538 6.538 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.976v-.001zm.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),a=[s];function n(r,l){return c(),e("svg",t,[...a])}const _={render:n};export{_ as s}; diff --git a/src/ui/dist/assets/spotify-2bf3aeb7.js.gz b/src/ui/dist/assets/spotify-2bf3aeb7.js.gz new file mode 100644 index 00000000..183f993d Binary files /dev/null and b/src/ui/dist/assets/spotify-2bf3aeb7.js.gz differ diff --git a/src/ui/dist/assets/spotify-9bae3b48.js.gz b/src/ui/dist/assets/spotify-9bae3b48.js.gz deleted file mode 100644 index 35d5aa3d..00000000 Binary files a/src/ui/dist/assets/spotify-9bae3b48.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/vuedraggable.umd-31c73142.js.gz b/src/ui/dist/assets/vuedraggable.umd-31c73142.js.gz deleted file mode 100644 index 6dec63b0..00000000 Binary files a/src/ui/dist/assets/vuedraggable.umd-31c73142.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/vuedraggable.umd-31c73142.js b/src/ui/dist/assets/vuedraggable.umd-c5c8aeea.js similarity index 99% rename from src/ui/dist/assets/vuedraggable.umd-31c73142.js rename to src/ui/dist/assets/vuedraggable.umd-c5c8aeea.js index c600c53e..fd4fa09f 100644 --- a/src/ui/dist/assets/vuedraggable.umd-31c73142.js +++ b/src/ui/dist/assets/vuedraggable.umd-c5c8aeea.js @@ -1,4 +1,4 @@ -import{aP as Br,aQ as Kr,aR as Hr,aS as Vr,aT as Wr,aU as Xr,aV as Yr,F as zr,aW as Jr,aX as Qr,aY as Zr,aZ as kr,a5 as qr,a_ as _r,a$ as tn,b0 as en,b1 as rn,b2 as nn,b3 as on,b4 as an,b5 as sn,b6 as ln,b7 as fn,b8 as un,b9 as cn,ba as dn,D as vn,bb as hn,i as pn,d as gn,c as mn,a as yn,bc as Sn,bd as bn,be as En,bf as xn,bg as On,as as Tn,b as In,g as Pn,bh as Dn,bi as Cn,e as An,bj as Rn,bk as Mn,bl as Nn,bm as jn,bn as wn,bo as Fn,bp as Ln,bq as Un,br as Gn,bs as $n,bt as Bn,bu as Kn,bv as Hn,bw as Vn,bx as Wn,by as Xn,bz as Yn,bA as zn,bB as Jn,bC as Qn,bD as Zn,bE as kn,bF as qn,bG as _n,bH as to,bI as eo,bJ as ro,bK as no,bL as oo,bM as ao,bN as io,bO as so,bP as lo,bQ as fo,Q as uo,O as co,bR as vo,z as ho,bS as po,bT as go,bU as mo,bV as yo,bW as So,bX as bo,y as Eo,bY as xo,bZ as Oo,b_ as To,b$ as Io,c0 as Po,c1 as Do,o as Co,m as Ao,c2 as Ro,c3 as Mo,l as No,c4 as jo,c5 as wo,c6 as Fo,n as Lo,c7 as Uo,c8 as Go,h as $o,r as Bo,f as Ko,ac as Ho,R as Vo,c9 as Wo,ca as Xo,cb as Yo,cc as zo,cd as Jo,ce as Qo,cf as Zo,cg as ko,ch as qo,ci as _o,cj as ta,t as ea,ck as ra,cl as na,cm as oa,cn as aa,co as ia,cp as sa,cq as la,cr as fa,u as ua,cs as ca,ct as da,cu as va,cv as ha,cw as pa,cx as ga,cy as ma,cz as ya,ay as Sa,cA as ba,cB as Ea,a3 as xa,ag as Oa,cC as Ta,cD as Ia,E as Pa,a1 as Da,cE as Ca,cF as Aa,cG as Ra,w as Ma,cH as Na,a2 as ja,a4 as wa,cI as Fa,N as La,cJ as Ua,aB as Pr,cK as Ga,aC as $a}from"./index-a96016e0.js";/** +import{aP as Br,aQ as Kr,aR as Hr,aS as Vr,aT as Wr,aU as Xr,aV as Yr,F as zr,aW as Jr,aX as Qr,aY as Zr,aZ as kr,a5 as qr,a_ as _r,a$ as tn,b0 as en,b1 as rn,b2 as nn,b3 as on,b4 as an,b5 as sn,b6 as ln,b7 as fn,b8 as un,b9 as cn,ba as dn,D as vn,bb as hn,i as pn,d as gn,c as mn,a as yn,bc as Sn,bd as bn,be as En,bf as xn,bg as On,as as Tn,b as In,g as Pn,bh as Dn,bi as Cn,e as An,bj as Rn,bk as Mn,bl as Nn,bm as jn,bn as wn,bo as Fn,bp as Ln,bq as Un,br as Gn,bs as $n,bt as Bn,bu as Kn,bv as Hn,bw as Vn,bx as Wn,by as Xn,bz as Yn,bA as zn,bB as Jn,bC as Qn,bD as Zn,bE as kn,bF as qn,bG as _n,bH as to,bI as eo,bJ as ro,bK as no,bL as oo,bM as ao,bN as io,bO as so,bP as lo,bQ as fo,Q as uo,O as co,bR as vo,z as ho,bS as po,bT as go,bU as mo,bV as yo,bW as So,bX as bo,y as Eo,bY as xo,bZ as Oo,b_ as To,b$ as Io,c0 as Po,c1 as Do,o as Co,m as Ao,c2 as Ro,c3 as Mo,l as No,c4 as jo,c5 as wo,c6 as Fo,n as Lo,c7 as Uo,c8 as Go,h as $o,r as Bo,f as Ko,ac as Ho,R as Vo,c9 as Wo,ca as Xo,cb as Yo,cc as zo,cd as Jo,ce as Qo,cf as Zo,cg as ko,ch as qo,ci as _o,cj as ta,t as ea,ck as ra,cl as na,cm as oa,cn as aa,co as ia,cp as sa,cq as la,cr as fa,u as ua,cs as ca,ct as da,cu as va,cv as ha,cw as pa,cx as ga,cy as ma,cz as ya,ay as Sa,cA as ba,cB as Ea,a3 as xa,ag as Oa,cC as Ta,cD as Ia,E as Pa,a1 as Da,cE as Ca,cF as Aa,cG as Ra,w as Ma,cH as Na,a2 as ja,a4 as wa,cI as Fa,N as La,cJ as Ua,aB as Pr,cK as Ga,aC as $a}from"./index-4a15a213.js";/** * vue v3.4.21 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT diff --git a/src/ui/dist/assets/vuedraggable.umd-c5c8aeea.js.gz b/src/ui/dist/assets/vuedraggable.umd-c5c8aeea.js.gz new file mode 100644 index 00000000..962fcc3d Binary files /dev/null and b/src/ui/dist/assets/vuedraggable.umd-c5c8aeea.js.gz differ diff --git a/src/ui/dist/index.html b/src/ui/dist/index.html index d9247e19..b701c044 100644 --- a/src/ui/dist/index.html +++ b/src/ui/dist/index.html @@ -48,7 +48,7 @@ reAudioPlayer One - + diff --git a/src/ui/dist/index.html.gz b/src/ui/dist/index.html.gz index bbacde27..be58a782 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 07149585..f40b6811 100644 --- a/src/ui/dist/sw.js +++ b/src/ui/dist/sw.js @@ -1 +1 @@ -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 a=s=>l(s,n),t={module:{uri:n},exports:u,require:a};e[n]=Promise.all(r.map((s=>t[s]||a(s)))).then((s=>(i(...s),u)))}}define(["./workbox-3e911b1d"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/Album-53489ebb.js",revision:null},{url:"assets/Album-8d95da06.css",revision:null},{url:"assets/Artist-a34a6707.js",revision:null},{url:"assets/Artist-c9fc4a3d.css",revision:null},{url:"assets/BigPlayer-199abb6d.css",revision:null},{url:"assets/BigPlayer-c3f89a47.js",revision:null},{url:"assets/Breaking-631b2bc3.js",revision:null},{url:"assets/Create-8ab3526b.css",revision:null},{url:"assets/Create-d963d433.js",revision:null},{url:"assets/Editor-133a20fa.css",revision:null},{url:"assets/Editor-89cea9ee.js",revision:null},{url:"assets/EditSong.vue_vue_type_script_setup_true_lang-10d68f56.js",revision:null},{url:"assets/Error-2928541c.js",revision:null},{url:"assets/Error-f18c7956.css",revision:null},{url:"assets/Explore-d53ca56f.js",revision:null},{url:"assets/Explore-d8c77810.css",revision:null},{url:"assets/Export-5d7b27d8.js",revision:null},{url:"assets/Export-a03f6dd4.css",revision:null},{url:"assets/FactCard-3c5d1fcf.css",revision:null},{url:"assets/FactCard-5b41eb1a.js",revision:null},{url:"assets/FullShelf-26be5033.js",revision:null},{url:"assets/FullShelf-62d1d109.css",revision:null},{url:"assets/gistClient-de41c06b.js",revision:null},{url:"assets/Import-15b3ffd5.css",revision:null},{url:"assets/Import-c20db5b8.js",revision:null},{url:"assets/ImportLink-8f18354c.js",revision:null},{url:"assets/ImportLink-fa9af2ae.css",revision:null},{url:"assets/index-06802400.css",revision:null},{url:"assets/index-09bbebd0.css",revision:null},{url:"assets/index-0ded4f06.css",revision:null},{url:"assets/index-24d50f88.js",revision:null},{url:"assets/index-2f9f0259.css",revision:null},{url:"assets/index-474de424.js",revision:null},{url:"assets/index-66efdb37.js",revision:null},{url:"assets/index-72186d7f.js",revision:null},{url:"assets/index-a96016e0.js",revision:null},{url:"assets/index-b34db81f.js",revision:null},{url:"assets/index-dff95c16.js",revision:null},{url:"assets/index-fd630165.css",revision:null},{url:"assets/index-fd8d909d.css",revision:null},{url:"assets/index-ff5b6ef4.css",revision:null},{url:"assets/Insight-28f80cf4.js",revision:null},{url:"assets/Insight-ab13ce31.css",revision:null},{url:"assets/Liked-a242cd86.js",revision:null},{url:"assets/Markdown-d883632e.css",revision:null},{url:"assets/Markdown.vue_vue_type_style_index_0_lang-40bffaf2.js",revision:null},{url:"assets/needles/needles-worker.js",revision:"5d9e2eedeab164e3b968a86bdf450d2f"},{url:"assets/News-a194d0da.js",revision:null},{url:"assets/News-eb982e2f.css",revision:null},{url:"assets/NewsArticle-2facc133.css",revision:null},{url:"assets/NewsArticle-606fce7c.js",revision:null},{url:"assets/Normal-acd2f729.js",revision:null},{url:"assets/playerInPicture-af203fdf.js",revision:null},{url:"assets/Playlist.vue_vue_type_script_setup_true_lang-a4641b77.js",revision:null},{url:"assets/PlaylistCard-03dfa529.css",revision:null},{url:"assets/PlaylistCard-200edd27.js",revision:null},{url:"assets/PlaylistEntry-35a3078f.js",revision:null},{url:"assets/PlaylistEntry-7f3947eb.css",revision:null},{url:"assets/Sports-0934b423.js",revision:null},{url:"assets/Sports-ad2591fa.css",revision:null},{url:"assets/spotify-9bae3b48.js",revision:null},{url:"assets/Template-b827c26f.css",revision:null},{url:"assets/Template-d00bcc07.js",revision:null},{url:"assets/Track-8198e691.js",revision:null},{url:"assets/Track-c081b8b5.css",revision:null},{url:"assets/TrackCompact-79c8b159.css",revision:null},{url:"assets/TrackCompact-8cd47625.js",revision:null},{url:"assets/vuedraggable.umd-31c73142.js",revision:null},{url:"assets/Welcome-09f50d44.js",revision:null},{url:"assets/Welcome-5b21c29e.css",revision:null},{url:"index.html",revision:"916be07fd695b4a6829479c86afd8bcc"},{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 a=s=>l(s,n),t={module:{uri:n},exports:u,require:a};e[n]=Promise.all(r.map((s=>t[s]||a(s)))).then((s=>(i(...s),u)))}}define(["./workbox-3e911b1d"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/Album-1148dcd6.js",revision:null},{url:"assets/Album-8d95da06.css",revision:null},{url:"assets/Artist-c9fc4a3d.css",revision:null},{url:"assets/Artist-d789cf52.js",revision:null},{url:"assets/BigPlayer-199abb6d.css",revision:null},{url:"assets/BigPlayer-87137347.js",revision:null},{url:"assets/Breaking-bca7f1ee.js",revision:null},{url:"assets/Create-5e460494.js",revision:null},{url:"assets/Create-8ab3526b.css",revision:null},{url:"assets/Editor-133a20fa.css",revision:null},{url:"assets/Editor-2ef03efe.js",revision:null},{url:"assets/EditSong.vue_vue_type_script_setup_true_lang-0170f423.js",revision:null},{url:"assets/Error-e5e93467.js",revision:null},{url:"assets/Error-f18c7956.css",revision:null},{url:"assets/Explore-0f64f4c4.js",revision:null},{url:"assets/Explore-d8c77810.css",revision:null},{url:"assets/Export-a03f6dd4.css",revision:null},{url:"assets/Export-b9da4cc1.js",revision:null},{url:"assets/FactCard-07fe2677.js",revision:null},{url:"assets/FactCard-3c5d1fcf.css",revision:null},{url:"assets/FullShelf-62d1d109.css",revision:null},{url:"assets/FullShelf-b2b7ffe5.js",revision:null},{url:"assets/gistClient-56b8a233.js",revision:null},{url:"assets/Import-15b3ffd5.css",revision:null},{url:"assets/Import-2ae5cf6c.js",revision:null},{url:"assets/ImportLink-33e77c3a.js",revision:null},{url:"assets/ImportLink-fa9af2ae.css",revision:null},{url:"assets/index-0388f272.js",revision:null},{url:"assets/index-06802400.css",revision:null},{url:"assets/index-0ded4f06.css",revision:null},{url:"assets/index-1ea7a167.js",revision:null},{url:"assets/index-26fd52a1.js",revision:null},{url:"assets/index-2f9f0259.css",revision:null},{url:"assets/index-4a15a213.js",revision:null},{url:"assets/index-7c86ad75.js",revision:null},{url:"assets/index-d4cfeb9f.css",revision:null},{url:"assets/index-da602f8b.js",revision:null},{url:"assets/index-faf92038.js",revision:null},{url:"assets/index-fd630165.css",revision:null},{url:"assets/index-fd8d909d.css",revision:null},{url:"assets/index-ff5b6ef4.css",revision:null},{url:"assets/Insight-02bf27fd.js",revision:null},{url:"assets/Insight-ab13ce31.css",revision:null},{url:"assets/Liked-cf20cd13.js",revision:null},{url:"assets/Markdown-d883632e.css",revision:null},{url:"assets/Markdown.vue_vue_type_style_index_0_lang-99c6b55d.js",revision:null},{url:"assets/needles/needles-worker.js",revision:"5d9e2eedeab164e3b968a86bdf450d2f"},{url:"assets/News-a755b729.js",revision:null},{url:"assets/News-eb982e2f.css",revision:null},{url:"assets/NewsArticle-2facc133.css",revision:null},{url:"assets/NewsArticle-6976bfba.js",revision:null},{url:"assets/Normal-9226385f.js",revision:null},{url:"assets/playerInPicture-af203fdf.js",revision:null},{url:"assets/Playlist.vue_vue_type_script_setup_true_lang-1d932c09.js",revision:null},{url:"assets/PlaylistCard-03dfa529.css",revision:null},{url:"assets/PlaylistCard-915b2cc1.js",revision:null},{url:"assets/PlaylistEntry-4f48a6f3.js",revision:null},{url:"assets/PlaylistEntry-7f3947eb.css",revision:null},{url:"assets/Sports-47b2f775.js",revision:null},{url:"assets/Sports-ad2591fa.css",revision:null},{url:"assets/spotify-2bf3aeb7.js",revision:null},{url:"assets/Template-96d3b86b.js",revision:null},{url:"assets/Template-b827c26f.css",revision:null},{url:"assets/Track-77a6581d.js",revision:null},{url:"assets/Track-c081b8b5.css",revision:null},{url:"assets/TrackCompact-28e1b8fb.js",revision:null},{url:"assets/TrackCompact-79c8b159.css",revision:null},{url:"assets/vuedraggable.umd-c5c8aeea.js",revision:null},{url:"assets/Welcome-5b21c29e.css",revision:null},{url:"assets/Welcome-9f07aa8e.js",revision:null},{url:"index.html",revision:"7bcc94389e55292ae1cad1b7e4bd9ceb"},{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/src/views/preferences/tabs/About.vue b/src/ui/src/views/preferences/tabs/About.vue index 702e0f0d..c4e88bdd 100644 --- a/src/ui/src/views/preferences/tabs/About.vue +++ b/src/ui/src/views/preferences/tabs/About.vue @@ -3,7 +3,7 @@ import { computed, onMounted, ref } from "vue"; import { version } from "../../../../package.json"; import Markdown from "../../../components/popups/Markdown.vue"; -const BACKEND_VERSION = "0.11.2"; +const BACKEND_VERSION = "1.0.0"; const latestVersion = ref(""); const changes = ref("");