diff --git a/src/server/db/table/albums.py b/src/server/db/table/albums.py index 9d8ed2c94..7494d2c35 100644 --- a/src/server/db/table/albums.py +++ b/src/server/db/table/albums.py @@ -154,7 +154,12 @@ def _fromDict(cls, data: JDict) -> Tuple[Any, ...] | None: tracks.append(BasicSpotifyItem.fromDict(item)) releaseDateString = data.ensure("release_date", str, data.ensure("releaseDate", str)) - releaseDate = datetime.fromisoformat(releaseDateString) + releaseDate = datetime.now() + + try: + releaseDate = datetime.fromisoformat(releaseDateString) + except ValueError: + releaseDate = datetime.strptime(releaseDateString.split("-").pop(), "%Y") return ( data.ensure("id", str), @@ -341,7 +346,7 @@ def anyArtist(self) -> List[str]: """ for albums from multiple artists, with no common artist """ - return self._anyArtist.split(",") + return self._anyArtist.split(",") if self._anyArtist else [] @anyArtist.setter def anyArtist(self, value: List[str]) -> None: @@ -352,7 +357,7 @@ def allArtists(self) -> List[str]: """ for albums from common artists """ - return self._allArtists.split(",") + return self._allArtists.split(",") if self._allArtists else [] @allArtists.setter def allArtists(self, value: List[str]) -> None: @@ -393,13 +398,21 @@ def forceUpdate(self) -> None: """force update""" self._fireChanged() - def toDict(self) -> Dict[str, Any]: + def toDict(self, songs: Optional[List[Song]] = None) -> Dict[str, Any]: """return dict""" - return { + value: Dict[str, Any] = { + "id": self.hash, + "href": f"/album/{self.hash}", "name": self.name, "spotify": self.spotify, "image": self.image, + "artists": self.allArtists or self.anyArtist, } + if not value["image"] and songs and len(songs) > 0: + value["image"] = songs[0].model.cover + if songs: + value["songs"] = [song.toDict() for song in songs] + return value @staticmethod async def _fetchMetadata(spotifyId: str, spotify: Spotify) -> Optional[SpotifyAlbum]: @@ -423,11 +436,21 @@ async def _findAlbumBySong(song: Song) -> Optional[str]: return None @staticmethod - async def _findAlbumBySpotifySearch(albumName: str, spotify: Spotify) -> Optional[SpotifyAlbum]: - result = await asyncRunInThreadWithReturn(spotify.searchAlbum, albumName) + async def _findAlbumBySpotifySearch(song: Song, spotify: Spotify) -> Optional[SpotifyAlbum]: + result = await asyncRunInThreadWithReturn( + spotify.searchAlbum, f"{song.artist} {song.album}" + ) if result: albums = result.unwrap() - firstAlbum = next((x for x in albums if x.name.lower() == albumName.lower()), None) + firstAlbum = next( + ( + x + for x in albums + if x.name.lower() == song.album.lower() + and any(artist.name.lower() in song.artist.lower() for artist in x.artists) + ), + None, + ) if firstAlbum: return firstAlbum return None @@ -436,11 +459,16 @@ async def _findAlbumBySpotifySearch(albumName: str, spotify: Spotify) -> Optiona async def _createModel(cls, song: Song, spotify: Spotify, db: Database) -> Optional[AlbumModel]: logger = Logged.getLogger("createModel") logger.debug("creating model for %s", song) - logger.debug("that would be %s", song.album) - model = await db.albums.byName(song.album) - - logger.debug("model by name %s", model) + possibleModels = await db.albums.byName(song.album) + model = next( + ( + x + for x in possibleModels + if any(artist in x.allArtists for artist in song.artist.split(",")) + ), + None, + ) alreadyExists = model is not None albumId = model.spotifyModel.id if model and model.spotifyModel else None @@ -452,7 +480,7 @@ async def _createModel(cls, song: Song, spotify: Spotify, db: Database) -> Optio logger.debug("found album id: %s", albumId) if not albumId: logger.debug("album not found in db, searching spotify") - spotifyAlbum = await cls._findAlbumBySpotifySearch(song.album, spotify) + spotifyAlbum = await cls._findAlbumBySpotifySearch(song, spotify) albumId = spotifyAlbum.id if spotifyAlbum else None logger.debug("found album id: %s", albumId) if not albumId: @@ -484,8 +512,6 @@ async def _createModel(cls, song: Song, spotify: Spotify, db: Database) -> Optio if newMetadata: model.image = newMetadata.image - logger.debug("returning model %s", model) - if not alreadyExists: model.id = await db.albums.insert(model) return model @@ -512,15 +538,16 @@ class AlbumsTable(ITable[AlbumModel]): def _model(self) -> Type[AlbumModel]: return AlbumModel - async def byName(self, name: str) -> Optional[AlbumModel]: + async def byName(self, name: str) -> List[AlbumModel]: """get artist by id""" escaped = name.replace("'", "''") where = f"name = '{escaped}'" - return await self.selectOne(append=f"WHERE {where}") + return await self.select(append=f"WHERE {where}") async def byId(self, id_: str) -> Optional[AlbumModel]: """get artist by id""" - where = f"spotify LIKE '%{id_}%'" + (intId,) = hashids.decode(id_) + where = f"id = {intId}" return await self.selectOne(append=f"WHERE {where}") async def byArtist(self, artistName: str) -> List[AlbumModel]: diff --git a/src/server/db/table/songs.py b/src/server/db/table/songs.py index 74c69d4e5..13716b8b5 100644 --- a/src/server/db/table/songs.py +++ b/src/server/db/table/songs.py @@ -371,3 +371,7 @@ async def byArtist(self, artist: str) -> List[SongModel]: return await self.select( append=f"WHERE artist = '{artist}' or artist LIKE '%, {artist}, %' or artist LIKE '%, {artist}' or artist LIKE '{artist}, %' or spotify LIKE '%\"{artist}\"%' COLLATE NOCASE" # pylint: disable=line-too-long ) + + async def byAlbum(self, albumHash: str) -> List[SongModel]: + """get songs by album""" + return await self.select(append=f"WHERE albumHash = '{albumHash}'") diff --git a/src/server/handler/meta.py b/src/server/handler/meta.py index b5683b9de..b95bf965d 100644 --- a/src/server/handler/meta.py +++ b/src/server/handler/meta.py @@ -26,7 +26,7 @@ from config.customData import LocalTrack, LocalCover -class MetaHandler: +class MetaHandler: # pylint: disable=too-many-public-methods """handler for different 'meta' features (e.g. metadata, spotify, search)""" __slots__ = ("_spotify", "_dbManager", "_logger") @@ -87,7 +87,7 @@ async def putArtist( async def getArtists(self, _: web.Request) -> web.Response: """get(/api/artists)""" artists = await self._dbManager.artists.all() - return web.json_response(data = [ artist.toDict() for artist in artists ]) + return web.json_response(data=[artist.toDict() for artist in artists]) @withObjectPayload(Object({"name": String().min(1)}), inPath=True) async def getArtist( @@ -113,6 +113,39 @@ async def getArtist( } ) + @withObjectPayload(Object({"albumHash": String().min(1)}), inPath=True) + async def putAlbum( + self, payload: Dict[str, Any] + ) -> web.Response: # pylint: disable=too-many-locals + """put(/api/albums/{albumHash})""" + albumHash: str = payload["albumHash"] + tracks = Song.list(await self._dbManager.songs.byAlbum(albumHash)) + albumModel = await self._dbManager.albums.byId(albumHash) + if not albumModel: + return web.HTTPNotFound(text="album not found") + response = albumModel.toDict() + response["songs"] = [track.toDict() for track in tracks] + return web.json_response(data=response) + + @withObjectPayload(Object({"albumHash": String().min(1)}), inPath=True) + async def getAlbum( + self, payload: Dict[str, Any] + ) -> web.Response: # pylint: disable=too-many-locals + """get(/api/albums/{albumHash})""" + albumHash: str = payload["albumHash"] + tracks = Song.list(await self._dbManager.songs.byAlbum(albumHash)) + albumModel = await self._dbManager.albums.byId(albumHash) + if not albumModel: + return web.HTTPNotFound(text="album not found") + response = albumModel.toDict(tracks) + response["songs"] = [track.toDict() for track in tracks] + return web.json_response(data=response) + + async def getAlbums(self, _: web.Request) -> web.Response: + """get(/api/albums)""" + albums = await self._dbManager.albums.all() + return web.json_response(data=[album.toDict() for album in albums]) + @withObjectPayload( Object( { @@ -286,7 +319,7 @@ async def upload(self, request: web.Request) -> web.Response: if not Runtime.args.withDocker: return web.HTTPExpectationFailed(text="must run in docker") - async for obj in (await request.multipart()): + async for obj in await request.multipart(): if obj.filename: file = LocalCover.createNew(obj.filename) file.write(await obj.read()) @@ -298,7 +331,7 @@ async def uploadSong(self, request: web.Request) -> web.Response: if not Runtime.args.withDocker: return web.HTTPExpectationFailed(text="must run in docker") - async for obj in (await request.multipart()): + async for obj in await request.multipart(): if obj.filename: file = LocalTrack.createNew(obj.filename) file.write(await obj.read()) diff --git a/src/server/handler/player.py b/src/server/handler/player.py index 36d04a712..3edec1a89 100644 --- a/src/server/handler/player.py +++ b/src/server/handler/player.py @@ -40,6 +40,7 @@ async def getPrevious(self, _: web.Request) -> web.Response: Object({"type": String().enum("playlist"), "id": String()}), Object({"type": String().enum("track"), "id": Integer()}), Object({"type": String().enum("artist"), "name": String()}), + Object({"type": String().enum("album"), "id": String()}), ), inBody=True, ) @@ -70,6 +71,13 @@ async def loadPlaylist(self, payload: Dict[str, str]) -> web.Response: asyncio.create_task(self._player.loadPlaylist(playlist)) return web.Response() + if type_ == "album": + assert isinstance(id_, str) + playlist = await SongListPlayerPlaylist.album(id_) + await playlist.waitForLoad() + asyncio.create_task(self._player.loadPlaylist(playlist)) + return web.Response() + return web.HTTPBadRequest(text="invalid type") @withObjectPayload( diff --git a/src/server/player/playlistManager.py b/src/server/player/playlistManager.py index 0b0196f36..35f60dcc1 100644 --- a/src/server/player/playlistManager.py +++ b/src/server/player/playlistManager.py @@ -89,10 +89,9 @@ async def _implement(song: Song) -> None: playlists = self._playlists.values() for playlist in playlists: for song in playlist: - self._logger.debug("fetch album for %s", song) if song.albumInDb: - self._logger.debug("song album is already in db %s", song) continue + self._logger.debug("fetch album for %s", song) await _implement(song) async def addToPlaylist(self, playlistId: str, song: Song) -> bool: diff --git a/src/server/player/smartPlayerPlaylist.py b/src/server/player/smartPlayerPlaylist.py index 1f96815c9..aedda8c6b 100644 --- a/src/server/player/smartPlayerPlaylist.py +++ b/src/server/player/smartPlayerPlaylist.py @@ -201,3 +201,15 @@ async def artist(cls, artist: str) -> SongListPlayerPlaylist: f"/artist/{artist}", songs, ) + + @classmethod + async def album(cls, albumHash: str) -> SongListPlayerPlaylist: + """playlist from a single artist""" + songs = Song.list(await Database().songs.byAlbum(albumHash)) + return cls( + "Album", + "Album", + albumHash, + f"/album/{albumHash}", + songs, + ) diff --git a/src/server/router/router.py b/src/server/router/router.py index 59df8e25d..c0711e7d2 100644 --- a/src/server/router/router.py +++ b/src/server/router/router.py @@ -133,6 +133,11 @@ def applyRoutes( # pylint: disable=too-many-statements, too-many-arguments app.router.add_get("/api/artists/{name}", metaHandler.getArtist) app.router.add_put("/api/artists/{name}", metaHandler.putArtist) + # /api/albums + app.router.add_get("/api/albums", metaHandler.getAlbums) + app.router.add_get("/api/albums/{albumHash}", metaHandler.getAlbum) + app.router.add_put("/api/albums/{albumHash}", metaHandler.putAlbum) + # /api/playlists/ app.router.add_get("/api/playlists/new", playlistHandler.createPlaylist) app.router.add_get("/api/playlists", playlistHandler.getPlaylists) diff --git a/src/ui/dist/assets/Album-1f347aa1.css b/src/ui/dist/assets/Album-1f347aa1.css new file mode 100644 index 000000000..e1099ad60 --- /dev/null +++ b/src/ui/dist/assets/Album-1f347aa1.css @@ -0,0 +1 @@ +.artist .spotify-enable{width:24px;height:24px;cursor:pointer}.artist .spotify-enable path{fill:var(--fg-base)!important}.artist .spotify-enable.enabled path{fill:var(--fg-secondary)!important}.related[data-v-cfca2882]{max-height:calc(768px + 1rem)}.spotify-infos[data-v-cfca2882]{display:grid;grid-template-columns:fit-content(100%) 24px 1fr 24px;gap:1rem;align-items:center;height:calc(46px + 1.5rem)}.spotify-infos .meta[data-v-cfca2882]{display:grid;grid-template-columns:repeat(3,fit-content(100%))}.spotify-infos .meta>*[data-v-cfca2882]:not(:last-child){margin-right:1rem}.spotify-suggestions[data-v-cfca2882]{display:grid;grid-template-columns:2fr 1fr;align-items:start;gap:2rem}.artist__data .upper[data-v-cfca2882]{display:grid;grid-template-columns:fit-content(100%) minmax(500px,1fr);gap:2rem}.wrap[data-v-cfca2882]{grid-template-columns:1fr;display:grid;align-items:start} diff --git a/src/ui/dist/assets/Album-c485014b.js b/src/ui/dist/assets/Album-c485014b.js new file mode 100644 index 000000000..e61baf4b8 --- /dev/null +++ b/src/ui/dist/assets/Album-c485014b.js @@ -0,0 +1 @@ +import{i as g,B as w,s as k,D as I,q as c,G as h,E as S,o as t,c as r,f as y,cg as $,d as A,g as d,L as B,a,h as N,N as j,t as C,P as E,F as b,j as P,c1 as V,cp as D,bV as L,m as M,n as U,_ as q}from"./index-9ce0501a.js";import{P as F}from"./PlaylistEntry-6dd545f8.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.js";const H=n=>(M("data-v-cfca2882"),n=n(),U(),n),R={key:1,class:"fill-page"},z={key:2,class:"artist p-4"},G={class:"wrap"},J={class:"artist__data"},O={class:"upper"},K={class:"track__info__details flex flex-col justify-end"},Q={class:"text-secondary my-0 text-2xl font-bold"},T={class:"trac__info__details__normal"},W={class:"flex flew-row items-center"},X={class:"font-black text-5xl"},Y=H(()=>a("hr",{class:"mb-4"},null,-1)),Z={class:"items"},ss=g({__name:"Album",setup(n){const p=w();k();const x=I(()=>p.params.hash),s=c(null),l=c(null),u=c(null),_=c("url"),m=c(!1),f=async()=>{const e=await(await fetch(`/api/albums/${x.value}`)).json();e.spotify=e.spotify?JSON.parse(e.spotify):null,s.value=e,l.value=null,u.value="",m.value=!1,s.value.spotify.url.length&&(u.value=s.value.spotify.url,m.value=!0),_.value="link"};return h(u,()=>{var o,e;if(((e=(o=s.value)==null?void 0:o.spotify)==null?void 0:e.id)==D(u.value,"album")){_.value="link";return}_.value="save"}),S(f),h(()=>p.params.name,()=>{s.value=null,f()}),(o,e)=>(t(),r(b,null,[s.value?(t(),y($,{key:0,src:s.value.image,class:"-z-10"},null,8,["src"])):A("",!0),s.value?(t(),r("div",z,[a("div",G,[a("div",J,[a("div",O,[d(N,{src:s.value.image,class:"max-w-sm rounded-xl",placeholder:"library_music"},null,8,["src"]),a("div",K,[a("h3",Q,[d(j,{artist:s.value.artists.join(", "),class:"inline"},null,8,["artist"])]),a("div",T,[a("div",W,[a("h1",X,C(s.value.name),1)])])])]),d(E,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),Y,a("div",Z,[(t(!0),r(b,null,P(s.value.songs,i=>V((t(),y(F,{index:s.value.songs.findIndex(v=>v.source==i.source),selected:l.value==i.id,song:i,"playlist-id":"album","with-album":"","with-cover":"","with-more":"",album:s.value.id,onClick:v=>l.value==i.id?l.value=-1:l.value=i.id,onUpdate:e[0]||(e[0]=v=>o.$emit("update"))},null,8,["index","selected","song","album","onClick"])),[[L,!0]])),256))])])])])):(t(),r("div",R,[d(B)]))],64))}});const os=q(ss,[["__scopeId","data-v-cfca2882"]]);export{os as default}; diff --git a/src/ui/dist/assets/Album-c485014b.js.gz b/src/ui/dist/assets/Album-c485014b.js.gz new file mode 100644 index 000000000..8490332f7 Binary files /dev/null and b/src/ui/dist/assets/Album-c485014b.js.gz differ diff --git a/src/ui/dist/assets/Albums-9b5db7b3.css b/src/ui/dist/assets/Albums-9b5db7b3.css deleted file mode 100644 index 3fcdd3712..000000000 --- a/src/ui/dist/assets/Albums-9b5db7b3.css +++ /dev/null @@ -1 +0,0 @@ -.padding-20[data-v-c5689964]{padding:20px} diff --git a/src/ui/dist/assets/Albums-c2cb712e.css b/src/ui/dist/assets/Albums-c2cb712e.css new file mode 100644 index 000000000..bbecf896b --- /dev/null +++ b/src/ui/dist/assets/Albums-c2cb712e.css @@ -0,0 +1 @@ +.padding-20[data-v-8e421abc]{padding:20px} diff --git a/src/ui/dist/assets/Albums-f18ee055.js b/src/ui/dist/assets/Albums-f18ee055.js new file mode 100644 index 000000000..b35791f78 --- /dev/null +++ b/src/ui/dist/assets/Albums-f18ee055.js @@ -0,0 +1 @@ +import{F as l}from"./FullShelf-ee955822.js";import{C as i}from"./CollectionHeader-65e61737.js";import{C as _}from"./CardWithImageAndText-6d2d3cec.js";import{i as d,q as u,E as m,o as a,c as n,g as c,a as p,w as f,F as h,j as v,f as b,_ as C}from"./index-9ce0501a.js";const g={class:"padding-20"},y={class:"albums"},k=d({__name:"Albums",setup(x){const s=u([]);return m(async()=>{const o=await(await fetch("/api/albums")).json();s.value=o.sort((e,r)=>e.name.localeCompare(r.name))}),(t,o)=>(a(),n("div",g,[c(i),p("div",y,[c(l,{heading:"In your library"},{default:f(()=>[(a(!0),n(h,null,v(s.value,e=>(a(),b(_,{title:e.name,description:e.artists.join(", "),cover:e.image,onClick:r=>t.$router.push(e.href),imageType:"album"},null,8,["title","description","cover","onClick"]))),256))]),_:1})])]))}});const j=C(k,[["__scopeId","data-v-8e421abc"]]);export{j as default}; diff --git a/src/ui/dist/assets/Albums-fcb1e7f2.js b/src/ui/dist/assets/Albums-fcb1e7f2.js deleted file mode 100644 index 3915b022c..000000000 --- a/src/ui/dist/assets/Albums-fcb1e7f2.js +++ /dev/null @@ -1 +0,0 @@ -import{C as s}from"./CollectionHeader-eecd1a8a.js";import{_ as c,c as t,g as a,e as n,o as _,m as d,n as p,a as l}from"./index-8ac6a0d2.js";const r={components:{CollectionHeader:s},name:"Albums"},m=e=>(d("data-v-c5689964"),e=e(),p(),e),i={class:"padding-20"},u=m(()=>l("div",{class:"albums"}," Albums ",-1));function f(e,v,b,h,C,x){const o=n("CollectionHeader");return _(),t("div",i,[a(o),u])}const $=c(r,[["render",f],["__scopeId","data-v-c5689964"]]);export{$ as default}; diff --git a/src/ui/dist/assets/Artist-435bb7d5.js b/src/ui/dist/assets/Artist-097652ba.js similarity index 94% rename from src/ui/dist/assets/Artist-435bb7d5.js rename to src/ui/dist/assets/Artist-097652ba.js index 03f4a02c0..bed56f271 100644 --- a/src/ui/dist/assets/Artist-435bb7d5.js +++ b/src/ui/dist/assets/Artist-097652ba.js @@ -1 +1 @@ -import{i as F,o as t,f as n,w as x,b as j,t as v,C as w,_ as L,B as q,s as D,D as H,q as h,G as N,E as R,c as o,cg as z,d as i,g as y,L as M,a,h as U,O as B,F as p,j as g,u as O,Y,P as G,c1 as J,cl as W,cp as E,cq as K,bV as Q,m as X,n as Z}from"./index-8ac6a0d2.js";import{F as A}from"./FactCard-20171310.js";import{P as ee}from"./PlaylistEntry-de6133b2.js";import{s as te}from"./spotify-40ad401f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import"./playerInPicture-af203fdf.js";const ae=F({__name:"Tag",props:{tag:{type:String,required:!0},withHash:{type:Boolean,default:!1}},setup(d){return(b,C)=>(t(),n(w,{class:"tag px-4 py-2 cursor-pointer","with-hover":""},{default:x(()=>[j(v(d.withHash?"#":"")+v(d.tag),1)]),_:1}))}});const se=L(ae,[["__scopeId","data-v-2712639d"]]),k=d=>(X("data-v-58a94783"),d=d(),Z(),d),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"},ce={key:0,class:"mt-0 mb-2 flex flex-row gap-2"},de={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(d){const b=q();D();const C=H(()=>b.params.name),e=h(null),m=h(null),u=h(null),f=h("url"),c=h(!1),$=async()=>{const r=await fetch(`/api/artists/${C.value}`);e.value=await r.json(),m.value=null,u.value="",c.value=!1,e.value.metadata.id.length==22&&(u.value="https://open.spotify.com/artist/"+e.value.metadata.id,c.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 $()};N(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"){K(u.value);return}I(E(u.value,"artist"))};return R($),N(()=>b.params.name,()=>{e.value=null,$()}),(r,l)=>{var S,T,V;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(U,{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",ce,[(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",de,[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:c.value},"spotify-enable"]),onClick:l[0]||(l[0]=s=>c.value=!c.value)},null,8,["class"]),c.value?(t(),n(Y,{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=>c.value?I(!1):I(!0))},v(c.value?"delete":"search"),1)])],64)):i("",!0)],2)]),y(G,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),ge,a("div",xe,[(t(!0),o(p,null,g(e.value.songs,s=>J((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"])),[[Q,!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(W,{index:_,song:s,"can-import":"","cannot-add":"","with-album":"","with-cover":"","with-more":"",onUpdate:l[4]||(l[4]=Ve=>r.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):i("",!0),(V=e.value.metadata.related)!=null&&V.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(U,{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-58a94783"]]);export{Le as default}; +import{i as F,o as t,f as n,w as x,b as j,t as v,C as w,_ as L,B as q,s as D,D as H,q as h,G as N,E as R,c as o,cg as z,d as i,g as y,L as M,a,h as U,O as B,F as p,j as g,u as O,Y,P as G,c1 as J,cl as W,cp as E,cq as K,bV as Q,m as X,n as Z}from"./index-9ce0501a.js";import{F as A}from"./FactCard-fd04f9e5.js";import{P as ee}from"./PlaylistEntry-6dd545f8.js";import{s as te}from"./spotify-b1867f20.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.js";const ae=F({__name:"Tag",props:{tag:{type:String,required:!0},withHash:{type:Boolean,default:!1}},setup(d){return(b,C)=>(t(),n(w,{class:"tag px-4 py-2 cursor-pointer","with-hover":""},{default:x(()=>[j(v(d.withHash?"#":"")+v(d.tag),1)]),_:1}))}});const se=L(ae,[["__scopeId","data-v-2712639d"]]),k=d=>(X("data-v-58a94783"),d=d(),Z(),d),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"},ce={key:0,class:"mt-0 mb-2 flex flex-row gap-2"},de={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(d){const b=q();D();const C=H(()=>b.params.name),e=h(null),m=h(null),u=h(null),f=h("url"),c=h(!1),$=async()=>{const r=await fetch(`/api/artists/${C.value}`);e.value=await r.json(),m.value=null,u.value="",c.value=!1,e.value.metadata.id.length==22&&(u.value="https://open.spotify.com/artist/"+e.value.metadata.id,c.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 $()};N(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"){K(u.value);return}I(E(u.value,"artist"))};return R($),N(()=>b.params.name,()=>{e.value=null,$()}),(r,l)=>{var S,T,V;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(U,{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",ce,[(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",de,[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:c.value},"spotify-enable"]),onClick:l[0]||(l[0]=s=>c.value=!c.value)},null,8,["class"]),c.value?(t(),n(Y,{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=>c.value?I(!1):I(!0))},v(c.value?"delete":"search"),1)])],64)):i("",!0)],2)]),y(G,{class:"hideIfMobile mt-8","with-album":"","with-more":""}),ge,a("div",xe,[(t(!0),o(p,null,g(e.value.songs,s=>J((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"])),[[Q,!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(W,{index:_,song:s,"can-import":"","cannot-add":"","with-album":"","with-cover":"","with-more":"",onUpdate:l[4]||(l[4]=Ve=>r.$emit("update"))},null,8,["index","song"]))),256))])]),_:1})):i("",!0),(V=e.value.metadata.related)!=null&&V.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(U,{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-58a94783"]]);export{Le as default}; diff --git a/src/ui/dist/assets/Artist-097652ba.js.gz b/src/ui/dist/assets/Artist-097652ba.js.gz new file mode 100644 index 000000000..b60ca733c Binary files /dev/null and b/src/ui/dist/assets/Artist-097652ba.js.gz differ diff --git a/src/ui/dist/assets/Artist-435bb7d5.js.gz b/src/ui/dist/assets/Artist-435bb7d5.js.gz deleted file mode 100644 index 59e1534e3..000000000 Binary files a/src/ui/dist/assets/Artist-435bb7d5.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Artists-443e36b5.js b/src/ui/dist/assets/Artists-443e36b5.js new file mode 100644 index 000000000..733307cad --- /dev/null +++ b/src/ui/dist/assets/Artists-443e36b5.js @@ -0,0 +1 @@ +import{F as m}from"./FullShelf-ee955822.js";import{_ as C,C as k,e as p,o as s,f as _,w as u,g as c,a as l,t as w,c as d,J as h,d as B,i as S,q as g,E as b,F as v,j as y}from"./index-9ce0501a.js";import{C as A}from"./CollectionHeader-65e61737.js";import{C as I}from"./CardWithImageAndText-6d2d3cec.js";const x={components:{Card:k},name:"ArtistItem",methods:{follow(r){r.stopPropagation();const e=this.following?"DELETE":"POST";fetch("/api/spotify/following",{method:e,body:JSON.stringify({artistId:this.id})}).then(o=>{o.status==200&&(this.following=!this.following)})}},data(){return{following:this.initiallyFollowing}},props:{cover:String,name:String,description:String,id:String,initiallyFollowing:Boolean,showFollowButton:Boolean}},T={class:"item"},E=["src"],L=["innerHTML"];function M(r,e,o,n,a,t){const i=p("add-artist-to-playlist"),F=p("Card");return s(),_(F,{class:"wrapper","with-hover":"",onClick:e[1]||(e[1]=h(f=>r.$router.push("/artist/"+o.name),["stop"]))},{default:u(()=>[c(i,{ref:"import",artist:{id:o.id,name:o.name,href:`https://open.spotify.com/artist/${o.id}`,image:o.cover}},null,8,["artist"]),l("div",T,[l("img",{src:o.cover},null,8,E),l("h4",null,w(o.name),1),l("p",{innerHTML:o.description},null,8,L),o.showFollowButton?(s(),d("button",{key:0,class:"followButton",onClick:e[0]||(e[0]=h((...f)=>t.follow&&t.follow(...f),["stop"]))},w(a.following?"unfollow":"Follow"),1)):B("",!0)])]),_:1})}const N=C(x,[["render",M],["__scopeId","data-v-353b4692"]]),j={class:"padding-20"},H={class:"artists"},V=S({__name:"Artists",setup(r){const e=g([]),o=g([]);return b(async()=>{let n=await fetch("/api/spotify/artists"),a=await n.json();e.value=a.sort((t,i)=>t.name.localeCompare(i.name)),n=await fetch("/api/artists"),a=await n.json(),o.value=a.sort((t,i)=>t.name.localeCompare(i.name))}),(n,a)=>(s(),d("div",j,[c(A),l("div",H,[c(m,{heading:"In your library"},{default:u(()=>[(s(!0),d(v,null,y(o.value,t=>(s(),_(I,{title:t.name,cover:t.image,onClick:i=>n.$router.push(`/artist/${t.name}`),imageType:"artist"},null,8,["title","cover","onClick"]))),256))]),_:1}),c(m,{heading:"Following on Spotify"},{default:u(()=>[(s(!0),d(v,null,y(e.value,(t,i)=>(s(),_(N,{id:t.id,key:i,cover:t.cover,description:t.description,name:t.name,"initially-following":"","show-follow-button":""},null,8,["id","cover","description","name"]))),128))]),_:1})])]))}});const q=C(V,[["__scopeId","data-v-2b99d27f"]]);export{q as default}; diff --git a/src/ui/dist/assets/Artists-443e36b5.js.gz b/src/ui/dist/assets/Artists-443e36b5.js.gz new file mode 100644 index 000000000..4bbc9de79 Binary files /dev/null and b/src/ui/dist/assets/Artists-443e36b5.js.gz differ diff --git a/src/ui/dist/assets/Artists-502bde9d.css b/src/ui/dist/assets/Artists-502bde9d.css deleted file mode 100644 index f63bb702e..000000000 --- a/src/ui/dist/assets/Artists-502bde9d.css +++ /dev/null @@ -1 +0,0 @@ -.followButton[data-v-353b4692]{color:var(--fg-base);background:none;border:1px solid var(--border-base);border-radius:2px;font-family:var(--ff-base);text-transform:uppercase;margin-top:5px;padding:5px 10px;font-weight:700;letter-spacing:1px}.followButton[data-v-353b4692]:hover{cursor:pointer}p.note[data-v-353b4692]{font-size:.7em}.wrapper[data-v-353b4692]{background:var(--bg-base-lt);border-radius:20px;min-height:10vh;margin:10px;padding:20px;position:relative;text-decoration:none!important;height:calc(100% - 20px)}.wrapper[data-v-353b4692]:hover{cursor:pointer;background:var(--bg-hover-dk)}.item[data-v-353b4692]{height:calc(100% - 40px)}img[data-v-353b4692]{width:100%;border-radius:12px;margin-bottom:1em}h4[data-v-353b4692]{margin:0}p[data-v-353b4692]{margin:0;color:var(--fg-base-dk);font-size:.8em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}p.note[data-v-847f5a33]{font-size:.7em}div.title[data-v-847f5a33]{display:flex;flex-direction:row;align-items:center;margin-top:1rem;margin-bottom:.25rem;gap:.5em}div.title h4[data-v-847f5a33]{margin-top:0}div.title span[data-v-847f5a33]{color:var(--fg-secondary)}.wrapper[data-v-847f5a33]{background:var(--bg-base-lt);border-radius:20px;min-height:10vh;margin:10px}.wrapper[data-v-847f5a33]:hover{cursor:pointer;background:var(--bg-hover-dk)}.item[data-v-847f5a33]{padding:20px;height:calc(100% - 40px)}@media screen and (max-width: 950px){.item[data-v-847f5a33]{display:flex;flex-direction:row;align-items:center;height:100%}}img[data-v-847f5a33]{width:100%;border-radius:12px}@media screen and (max-width: 950px){img[data-v-847f5a33]{width:20%}}h4[data-v-847f5a33]{margin-bottom:0}@media screen and (max-width: 950px){h4[data-v-847f5a33]{margin-left:20px;margin-top:0}}p[data-v-847f5a33]{margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.padding-20[data-v-2b99d27f]{padding:20px} diff --git a/src/ui/dist/assets/Artists-502bde9d.css.gz b/src/ui/dist/assets/Artists-502bde9d.css.gz deleted file mode 100644 index c51fced54..000000000 Binary files a/src/ui/dist/assets/Artists-502bde9d.css.gz and /dev/null differ diff --git a/src/ui/dist/assets/Artists-98f3caad.js b/src/ui/dist/assets/Artists-98f3caad.js deleted file mode 100644 index d868585c0..000000000 --- a/src/ui/dist/assets/Artists-98f3caad.js +++ /dev/null @@ -1 +0,0 @@ -import{F as g}from"./FullShelf-006a7dde.js";import{_ as h,C as S,e as _,o as s,f as u,w as m,g as c,a as i,t as p,c as d,J as v,d as x,h as I,i as b,q as w,E as k,F as C,j as T}from"./index-8ac6a0d2.js";import{C as A}from"./CollectionHeader-eecd1a8a.js";const F={components:{Card:S},name:"ArtistItem",methods:{follow(r){r.stopPropagation();const o=this.following?"DELETE":"POST";fetch("/api/spotify/following",{method:o,body:JSON.stringify({artistId:this.id})}).then(t=>{t.status==200&&(this.following=!this.following)})}},data(){return{following:this.initiallyFollowing}},props:{cover:String,name:String,description:String,id:String,initiallyFollowing:Boolean,showFollowButton:Boolean}},B={class:"item"},M=["src"],L=["innerHTML"];function E(r,o,t,a,l,e){const n=_("add-artist-to-playlist"),f=_("Card");return s(),u(f,{class:"wrapper","with-hover":"",onClick:o[1]||(o[1]=v(y=>r.$router.push("/artist/"+t.name),["stop"]))},{default:m(()=>[c(n,{ref:"import",artist:{id:t.id,name:t.name,href:`https://open.spotify.com/artist/${t.id}`,image:t.cover}},null,8,["artist"]),i("div",B,[i("img",{src:t.cover},null,8,M),i("h4",null,p(t.name),1),i("p",{innerHTML:t.description},null,8,L),t.showFollowButton?(s(),d("button",{key:0,class:"followButton",onClick:o[0]||(o[0]=v((...y)=>e.follow&&e.follow(...y),["stop"]))},p(l.following?"unfollow":"Follow"),1)):x("",!0)])]),_:1})}const H=h(F,[["render",E],["__scopeId","data-v-353b4692"]]),N={components:{Card:S,Cover:I},name:"CardWithImageAndText",props:{cover:String,title:String,description:String,playlistType:{type:String,default:null},imageType:{type:String,default:"playlist"}}};const $={class:"item"},j={class:"title"},V={key:0,class:"material-symbols-rounded"},W=["innerHTML"];function D(r,o,t,a,l,e){const n=_("Cover"),f=_("Card");return s(),u(f,{class:"wrapper drop-shadow-md","with-hover":""},{default:m(()=>[i("div",$,[c(n,{src:t.cover,type:t.imageType,name:t.title},null,8,["src","type","name"]),i("div",j,[[null,"classic"].includes(t.playlistType)?x("",!0):(s(),d("span",V,p(t.playlistType=="smart"?"neurology":"bolt"),1)),i("h4",null,p(t.title),1)]),i("p",{class:"text-muted text-xs hideIfMobile",innerHTML:t.description},null,8,W)])]),_:1})}const J=h(N,[["render",D],["__scopeId","data-v-847f5a33"]]),O={class:"padding-20"},P={class:"artists"},q=b({__name:"Artists",setup(r){const o=w([]),t=w([]);return k(async()=>{let a=await fetch("/api/spotify/artists"),l=await a.json();o.value=l.sort((e,n)=>e.name.localeCompare(n.name)),a=await fetch("/api/artists"),l=await a.json(),t.value=l.sort((e,n)=>e.name.localeCompare(n.name))}),(a,l)=>(s(),d("div",O,[c(A),i("div",P,[c(g,{heading:"In your library"},{default:m(()=>[(s(!0),d(C,null,T(t.value,e=>(s(),u(J,{title:e.name,cover:e.image,onClick:n=>a.$router.push(`/artist/${e.name}`),imageType:"artist"},null,8,["title","cover","onClick"]))),256))]),_:1}),c(g,{heading:"Following on Spotify"},{default:m(()=>[(s(!0),d(C,null,T(o.value,(e,n)=>(s(),u(H,{id:e.id,key:n,cover:e.cover,description:e.description,name:e.name,"initially-following":"","show-follow-button":""},null,8,["id","cover","description","name"]))),128))]),_:1})])]))}});const Q=h(q,[["__scopeId","data-v-2b99d27f"]]);export{Q as default}; diff --git a/src/ui/dist/assets/Artists-98f3caad.js.gz b/src/ui/dist/assets/Artists-98f3caad.js.gz deleted file mode 100644 index 30a40c285..000000000 Binary files a/src/ui/dist/assets/Artists-98f3caad.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Artists-bd87c507.css b/src/ui/dist/assets/Artists-bd87c507.css new file mode 100644 index 000000000..ec1eb22dd --- /dev/null +++ b/src/ui/dist/assets/Artists-bd87c507.css @@ -0,0 +1 @@ +.followButton[data-v-353b4692]{color:var(--fg-base);background:none;border:1px solid var(--border-base);border-radius:2px;font-family:var(--ff-base);text-transform:uppercase;margin-top:5px;padding:5px 10px;font-weight:700;letter-spacing:1px}.followButton[data-v-353b4692]:hover{cursor:pointer}p.note[data-v-353b4692]{font-size:.7em}.wrapper[data-v-353b4692]{background:var(--bg-base-lt);border-radius:20px;min-height:10vh;margin:10px;padding:20px;position:relative;text-decoration:none!important;height:calc(100% - 20px)}.wrapper[data-v-353b4692]:hover{cursor:pointer;background:var(--bg-hover-dk)}.item[data-v-353b4692]{height:calc(100% - 40px)}img[data-v-353b4692]{width:100%;border-radius:12px;margin-bottom:1em}h4[data-v-353b4692]{margin:0}p[data-v-353b4692]{margin:0;color:var(--fg-base-dk);font-size:.8em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.padding-20[data-v-2b99d27f]{padding:20px} diff --git a/src/ui/dist/assets/BigPlayer-aac773a1.js.gz b/src/ui/dist/assets/BigPlayer-aac773a1.js.gz deleted file mode 100644 index 823a6fa9c..000000000 Binary files a/src/ui/dist/assets/BigPlayer-aac773a1.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/BigPlayer-aac773a1.js b/src/ui/dist/assets/BigPlayer-f2952b73.js similarity index 91% rename from src/ui/dist/assets/BigPlayer-aac773a1.js rename to src/ui/dist/assets/BigPlayer-f2952b73.js index 56ec4112e..41d0e352a 100644 --- a/src/ui/dist/assets/BigPlayer-aac773a1.js +++ b/src/ui/dist/assets/BigPlayer-f2952b73.js @@ -1 +1 @@ -import{i as T,ce as z,k as D,D as c,q as m,G as E,E as M,e as V,o as n,c as p,u as a,F as h,a as e,g as k,O as w,h as q,f as B,w as F,d as O,t as C,z as j,j as A,J as G,m as J,n as L,_ as H}from"./index-8ac6a0d2.js";import{_ as K}from"./Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js";import{P as Q}from"./PlaylistItem-378aa73f.js";import"./PlaylistEntry-de6133b2.js";import"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import"./playerInPicture-af203fdf.js";const _=r=>(J("data-v-d54d73f0"),r=r(),L(),r),R={class:"bigPlayer"},U={class:"upNow"},W=_(()=>e("div",{style:{"animation-delay":"0s"},class:"block"},null,-1)),X=_(()=>e("div",{style:{"animation-delay":".25s"},class:"block"},null,-1)),Y=_(()=>e("div",{style:{"animation-delay":".5s"},class:"block"},null,-1)),Z=[W,X,Y],ee={class:"settings"},se={key:1,class:"no-playlist-selected"},te={class:"wrapper"},ae=_(()=>e("h2",null,"Nothing playing yet...",-1)),oe={class:"playlists"},le=T({__name:"BigPlayer",emits:["maximise"],setup(r,{emit:x}){const s=z(),b=D(),v=c(()=>s.playing),P=c(()=>s.song.cover),S=c(()=>s.song.id),f=c(()=>s.loaded?`${s.song.title} • ${s.song.artist}`:"reAudioPlayer One"),$=c(()=>b.playlists),g=m(null),I=x;document.title=f.value,E(f,o=>{document.title=o}),M(()=>{window.setTimeout(()=>{var t,u;if((t=g.value)!=null&&t.scrollTop)return;const o=(u=document.getElementById(`bplayer-entry-${S.value}`))==null?void 0:u.offsetTop;o>=354&&(g.value.scrollTop=o-354)},1e3)});let d=m(!1);const N=()=>{d.value=!d.value,I("maximise",d.value)},y=m(!1),i=m(!1);return(o,t)=>{const u=V("Card");return n(),p("div",R,[a(s).loaded?(n(),p(h,{key:0},[e("div",U,[k(q,{class:w([{playing:v.value,animate:i.value},"drop-shadow-2xl"]),src:P.value,type:"track","with-ambient":"",name:a(s).song.title},null,8,["class","src","name"]),e("div",{class:w([{playing:v.value,animate:i.value},"blocks"])},Z,2)]),a(s).playlist?(n(),B(u,{class:"playlist-overflow drop-shadow-2xl relative",key:a(s).playlist.id},{default:F(()=>[k(K,{playlist:a(s).playlist,"use-queue":""},null,8,["playlist"])]),_:1})):O("",!0),e("div",ee,[e("span",{class:"iconButton material-symbols-rounded",onClick:N},C(a(d)?"fullscreen_exit":"fullscreen"),1),e("span",{style:j({transform:`rotate(${y.value?0:180}deg)`}),class:"iconButton material-symbols-rounded",onClick:t[0]||(t[0]=()=>y.value=!y.value)},"menu_open",4),e("span",{class:"iconButton material-symbols-rounded",onClick:t[1]||(t[1]=()=>i.value=!i.value)},C(i.value?"motion_photos_off":"animation"),1),e("span",{class:"iconButton material-symbols-rounded",onClick:t[2]||(t[2]=l=>o.$router.push("/player/insights"))}," insights ")])],64)):(n(),p("div",se,[e("div",te,[ae,e("div",oe,[(n(!0),p(h,null,A($.value,l=>(n(),B(Q,{key:l.id,cover:l.cover,description:l.description,title:l.name,onClick:G(()=>a(s).loadPlaylist(l.id),["stop"])},null,8,["cover","description","title","onClick"]))),128))])])]))])}}});const me=H(le,[["__scopeId","data-v-d54d73f0"]]);export{me as default}; +import{i as T,ce as z,k as D,D as c,q as m,G as E,E as M,e as V,o as n,c as p,u as a,F as h,a as e,g as k,O as w,h as q,f as B,w as F,d as O,t as C,z as j,j as A,J as G,m as J,n as L,_ as H}from"./index-9ce0501a.js";import{_ as K}from"./Playlist.vue_vue_type_script_setup_true_lang-96743295.js";import{P as Q}from"./PlaylistItem-48685cba.js";import"./PlaylistEntry-6dd545f8.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.js";const _=r=>(J("data-v-d54d73f0"),r=r(),L(),r),R={class:"bigPlayer"},U={class:"upNow"},W=_(()=>e("div",{style:{"animation-delay":"0s"},class:"block"},null,-1)),X=_(()=>e("div",{style:{"animation-delay":".25s"},class:"block"},null,-1)),Y=_(()=>e("div",{style:{"animation-delay":".5s"},class:"block"},null,-1)),Z=[W,X,Y],ee={class:"settings"},se={key:1,class:"no-playlist-selected"},te={class:"wrapper"},ae=_(()=>e("h2",null,"Nothing playing yet...",-1)),oe={class:"playlists"},le=T({__name:"BigPlayer",emits:["maximise"],setup(r,{emit:x}){const s=z(),b=D(),v=c(()=>s.playing),P=c(()=>s.song.cover),S=c(()=>s.song.id),f=c(()=>s.loaded?`${s.song.title} • ${s.song.artist}`:"reAudioPlayer One"),$=c(()=>b.playlists),g=m(null),I=x;document.title=f.value,E(f,o=>{document.title=o}),M(()=>{window.setTimeout(()=>{var t,u;if((t=g.value)!=null&&t.scrollTop)return;const o=(u=document.getElementById(`bplayer-entry-${S.value}`))==null?void 0:u.offsetTop;o>=354&&(g.value.scrollTop=o-354)},1e3)});let d=m(!1);const N=()=>{d.value=!d.value,I("maximise",d.value)},y=m(!1),i=m(!1);return(o,t)=>{const u=V("Card");return n(),p("div",R,[a(s).loaded?(n(),p(h,{key:0},[e("div",U,[k(q,{class:w([{playing:v.value,animate:i.value},"drop-shadow-2xl"]),src:P.value,type:"track","with-ambient":"",name:a(s).song.title},null,8,["class","src","name"]),e("div",{class:w([{playing:v.value,animate:i.value},"blocks"])},Z,2)]),a(s).playlist?(n(),B(u,{class:"playlist-overflow drop-shadow-2xl relative",key:a(s).playlist.id},{default:F(()=>[k(K,{playlist:a(s).playlist,"use-queue":""},null,8,["playlist"])]),_:1})):O("",!0),e("div",ee,[e("span",{class:"iconButton material-symbols-rounded",onClick:N},C(a(d)?"fullscreen_exit":"fullscreen"),1),e("span",{style:j({transform:`rotate(${y.value?0:180}deg)`}),class:"iconButton material-symbols-rounded",onClick:t[0]||(t[0]=()=>y.value=!y.value)},"menu_open",4),e("span",{class:"iconButton material-symbols-rounded",onClick:t[1]||(t[1]=()=>i.value=!i.value)},C(i.value?"motion_photos_off":"animation"),1),e("span",{class:"iconButton material-symbols-rounded",onClick:t[2]||(t[2]=l=>o.$router.push("/player/insights"))}," insights ")])],64)):(n(),p("div",se,[e("div",te,[ae,e("div",oe,[(n(!0),p(h,null,A($.value,l=>(n(),B(Q,{key:l.id,cover:l.cover,description:l.description,title:l.name,onClick:G(()=>a(s).loadPlaylist(l.id),["stop"])},null,8,["cover","description","title","onClick"]))),128))])])]))])}}});const me=H(le,[["__scopeId","data-v-d54d73f0"]]);export{me as default}; diff --git a/src/ui/dist/assets/BigPlayer-f2952b73.js.gz b/src/ui/dist/assets/BigPlayer-f2952b73.js.gz new file mode 100644 index 000000000..383a28cdd Binary files /dev/null and b/src/ui/dist/assets/BigPlayer-f2952b73.js.gz differ diff --git a/src/ui/dist/assets/Breaking-00b932ae.js b/src/ui/dist/assets/Breaking-00b932ae.js new file mode 100644 index 000000000..039f96f9a --- /dev/null +++ b/src/ui/dist/assets/Breaking-00b932ae.js @@ -0,0 +1 @@ +import{T as r}from"./Template-15080c8f.js";import{f as o,o as t}from"./index-9ce0501a.js";import"./PlaylistEntry-6dd545f8.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.js";import"./FactCard-fd04f9e5.js";import"./gistClient-e7b09d22.js";import"./Markdown.vue_vue_type_style_index_0_lang-99a7139c.js";const k={__name:"Breaking",setup(e){return(p,i)=>(t(),o(r,{id:"breaking","cover-icon":"trending_up"}))}};export{k as default}; diff --git a/src/ui/dist/assets/Breaking-45731b5e.js b/src/ui/dist/assets/Breaking-45731b5e.js deleted file mode 100644 index e80a2b0b9..000000000 --- a/src/ui/dist/assets/Breaking-45731b5e.js +++ /dev/null @@ -1 +0,0 @@ -import{T as r}from"./Template-432d76e5.js";import{f as o,o as t}from"./index-8ac6a0d2.js";import"./PlaylistEntry-de6133b2.js";import"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import"./playerInPicture-af203fdf.js";import"./FactCard-20171310.js";import"./gistClient-e7ab47a2.js";import"./Markdown.vue_vue_type_style_index_0_lang-2360dd37.js";const k={__name:"Breaking",setup(e){return(p,i)=>(t(),o(r,{id:"breaking","cover-icon":"trending_up"}))}};export{k as default}; diff --git a/src/ui/dist/assets/CardWithImageAndText-6d2d3cec.js b/src/ui/dist/assets/CardWithImageAndText-6d2d3cec.js new file mode 100644 index 000000000..1193f2455 --- /dev/null +++ b/src/ui/dist/assets/CardWithImageAndText-6d2d3cec.js @@ -0,0 +1 @@ +import{C as c,h as l,_ as r,e as a,o as s,f as d,w as _,a as t,g as m,c as p,t as n,d as y}from"./index-9ce0501a.js";const u={components:{Card:c,Cover:l},name:"CardWithImageAndText",props:{cover:String,title:String,description:String,playlistType:{type:String,default:null},imageType:{type:String,default:"playlist"}}};const h={class:"item"},g={class:"title"},C={key:0,class:"material-symbols-rounded"},f=["innerHTML"];function v(x,T,e,S,w,I){const o=a("Cover"),i=a("Card");return s(),d(i,{class:"wrapper drop-shadow-md","with-hover":""},{default:_(()=>[t("div",h,[m(o,{src:e.cover,type:e.imageType,name:e.title},null,8,["src","type","name"]),t("div",g,[[null,"classic"].includes(e.playlistType)?y("",!0):(s(),p("span",C,n(e.playlistType=="smart"?"neurology":"bolt"),1)),t("h4",null,n(e.title),1)]),t("p",{class:"text-muted text-xs hideIfMobile",innerHTML:e.description},null,8,f)])]),_:1})}const B=r(u,[["render",v],["__scopeId","data-v-847f5a33"]]);export{B as C}; diff --git a/src/ui/dist/assets/CardWithImageAndText-af12f13a.css b/src/ui/dist/assets/CardWithImageAndText-af12f13a.css new file mode 100644 index 000000000..649c1c6a9 --- /dev/null +++ b/src/ui/dist/assets/CardWithImageAndText-af12f13a.css @@ -0,0 +1 @@ +p.note[data-v-847f5a33]{font-size:.7em}div.title[data-v-847f5a33]{display:flex;flex-direction:row;align-items:center;margin-top:1rem;margin-bottom:.25rem;gap:.5em}div.title h4[data-v-847f5a33]{margin-top:0}div.title span[data-v-847f5a33]{color:var(--fg-secondary)}.wrapper[data-v-847f5a33]{background:var(--bg-base-lt);border-radius:20px;min-height:10vh;margin:10px}.wrapper[data-v-847f5a33]:hover{cursor:pointer;background:var(--bg-hover-dk)}.item[data-v-847f5a33]{padding:20px;height:calc(100% - 40px)}@media screen and (max-width: 950px){.item[data-v-847f5a33]{display:flex;flex-direction:row;align-items:center;height:100%}}img[data-v-847f5a33]{width:100%;border-radius:12px}@media screen and (max-width: 950px){img[data-v-847f5a33]{width:20%}}h4[data-v-847f5a33]{margin-bottom:0}@media screen and (max-width: 950px){h4[data-v-847f5a33]{margin-left:20px;margin-top:0}}p[data-v-847f5a33]{margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis} diff --git a/src/ui/dist/assets/CollectionHeader-65e61737.js b/src/ui/dist/assets/CollectionHeader-65e61737.js new file mode 100644 index 000000000..2842d2d46 --- /dev/null +++ b/src/ui/dist/assets/CollectionHeader-65e61737.js @@ -0,0 +1 @@ +import{_ as a,e as n,o as i,c as _,g as o,w as t,m as d,n as r,a as c}from"./index-9ce0501a.js";const p={name:"CollectionHeader",props:{href:String}},l=e=>(d("data-v-a26d5560"),e=e(),r(),e),u={class:"wrapper"},f=l(()=>c("div",{class:"collection"},"Playlists",-1)),h=l(()=>c("div",{class:"collection"},"Releases",-1)),m=l(()=>c("div",{class:"collection"},"Artists",-1)),v=l(()=>c("div",{class:"collection"},"Albums",-1));function k(e,C,x,w,y,I){const s=n("router-link");return i(),_("div",u,[o(s,{class:"link",to:"/collection/playlists"},{default:t(()=>[f]),_:1}),o(s,{class:"link",to:"/collection/releases"},{default:t(()=>[h]),_:1}),o(s,{class:"link",to:"/collection/artists"},{default:t(()=>[m]),_:1}),o(s,{class:"link",to:"/collection/albums"},{default:t(()=>[v]),_:1})])}const $=a(p,[["render",k],["__scopeId","data-v-a26d5560"]]);export{$ as C}; diff --git a/src/ui/dist/assets/CollectionHeader-eecd1a8a.js b/src/ui/dist/assets/CollectionHeader-eecd1a8a.js deleted file mode 100644 index d17fe6ecb..000000000 --- a/src/ui/dist/assets/CollectionHeader-eecd1a8a.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l,e as n,o as d,c as _,g as s,w as t,d as i,m as r,n as p,a as c}from"./index-8ac6a0d2.js";const u={name:"CollectionHeader",props:{href:String}},a=e=>(r("data-v-d975419d"),e=e(),p(),e),m={class:"wrapper"},f=a(()=>c("div",{class:"collection"},"Playlists",-1)),h=a(()=>c("div",{class:"collection"},"Releases",-1)),v=a(()=>c("div",{class:"collection"},"Artists",-1));function k(e,C,x,w,y,I){const o=n("router-link");return d(),_("div",m,[s(o,{class:"link",to:"/collection/playlists"},{default:t(()=>[f]),_:1}),s(o,{class:"link",to:"/collection/releases"},{default:t(()=>[h]),_:1}),s(o,{class:"link",to:"/collection/artists"},{default:t(()=>[v]),_:1}),i("",!0)])}const $=l(u,[["render",k],["__scopeId","data-v-d975419d"]]);export{$ as C}; diff --git a/src/ui/dist/assets/CollectionHeader-f7f1bd89.css b/src/ui/dist/assets/CollectionHeader-f7f1bd89.css new file mode 100644 index 000000000..dcf9d8505 --- /dev/null +++ b/src/ui/dist/assets/CollectionHeader-f7f1bd89.css @@ -0,0 +1 @@ +.wrapper[data-v-a26d5560]{display:flex;flex-direction:row;margin-bottom:20px}.link[data-v-a26d5560]{text-decoration:none}.collection[data-v-a26d5560]{padding:.5em 1em;border-radius:1000vmax;font-weight:700;color:var(--fg-base);margin-right:10px;font-size:.85em;border:var(--border-container);transition:all .2s ease-in-out}.collection[data-v-a26d5560]:hover{background:var(--bg-hover-dk);border-color:var(--fg-secondary)}.router-link-active div.collection[data-v-a26d5560]{background:var(--fg-secondary);color:var(--fg-contrast)} diff --git a/src/ui/dist/assets/CollectionHeader-fcda14ed.css b/src/ui/dist/assets/CollectionHeader-fcda14ed.css deleted file mode 100644 index 0d9fe75cb..000000000 --- a/src/ui/dist/assets/CollectionHeader-fcda14ed.css +++ /dev/null @@ -1 +0,0 @@ -.wrapper[data-v-d975419d]{display:flex;flex-direction:row;margin-bottom:20px}.link[data-v-d975419d]{text-decoration:none}.collection[data-v-d975419d]{padding:.5em 1em;border-radius:1000vmax;font-weight:700;color:var(--fg-base);margin-right:10px;font-size:.85em;border:var(--border-container);transition:all .2s ease-in-out}.collection[data-v-d975419d]:hover{background:var(--bg-hover-dk);border-color:var(--fg-secondary)}.router-link-active div.collection[data-v-d975419d]{background:var(--fg-secondary);color:var(--fg-contrast)} diff --git a/src/ui/dist/assets/Create-c4da9747.js b/src/ui/dist/assets/Create-939d7c74.js similarity index 94% rename from src/ui/dist/assets/Create-c4da9747.js rename to src/ui/dist/assets/Create-939d7c74.js index 74edf0195..9b506c12d 100644 --- a/src/ui/dist/assets/Create-c4da9747.js +++ b/src/ui/dist/assets/Create-939d7c74.js @@ -1 +1 @@ -import{i as d,s as p,B as y,E as m,o as f,c as x,a as e,g as n,w as r,C as i,R as h,m as v,n as C,_ as w}from"./index-8ac6a0d2.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)),P=s(()=>e("p",{class:"text-sm text-muted"}," Define rules to automatically update your playlist ",-1)),R=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,P]),_:1})])]))}});const E=w(R,[["__scopeId","data-v-907ec981"]]);export{E as default}; +import{i as d,s as p,B as y,E as m,o as f,c as x,a as e,g as n,w as r,C as i,R as h,m as v,n as C,_ as w}from"./index-9ce0501a.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)),P=s(()=>e("p",{class:"text-sm text-muted"}," Define rules to automatically update your playlist ",-1)),R=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,P]),_:1})])]))}});const E=w(R,[["__scopeId","data-v-907ec981"]]);export{E as default}; diff --git a/src/ui/dist/assets/Create-939d7c74.js.gz b/src/ui/dist/assets/Create-939d7c74.js.gz new file mode 100644 index 000000000..77d319220 Binary files /dev/null and b/src/ui/dist/assets/Create-939d7c74.js.gz differ diff --git a/src/ui/dist/assets/Create-c4da9747.js.gz b/src/ui/dist/assets/Create-c4da9747.js.gz deleted file mode 100644 index 508b1879e..000000000 Binary files a/src/ui/dist/assets/Create-c4da9747.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js.gz b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js.gz deleted file mode 100644 index 68ab1c06c..000000000 Binary files a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js similarity index 96% rename from src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js rename to src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js index f082d7937..74defac00 100644 --- a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js +++ b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js @@ -1 +1 @@ -import{i as w,q as s,G as y,o as b,f as x,w as _,g as h,x as S,c9 as k,cQ as q,cw as F}from"./index-8ac6a0d2.js";const j=w({__name:"EditSong",props:{song:{type:Object,required:!0}},emits:["close","update"],setup(u,{expose:l,emit:p}){const a=u,m=p,i=async(t,e)=>{const o=new FormData,v="."+e.name.split(".").pop();var f=e.slice(0,e.size,e.type),g=new File([f],a.song.id+v,{type:e.type});return o.append("file",g),await(await fetch(t,{method:"POST",body:o})).text()},n=s([{name:"source",type:"upload",icon:"music_note",accept:"audio/mp3",required:!0,onUpload:t=>{i("/api/config/tracks",t).then(e=>n.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:"cover",type:"upload",icon:"art_track",accept:"image/*",imagePreview:!0,value:a.song.cover,onUpload:t=>{i("/api/config/images",t).then(e=>n.value.find(o=>o.name=="cover").value=e)}}]),d=async()=>{const t=c.value.toObject();await q({...a.song,...t}),m("update"),F.addSuccess(t.title,"Updated",3e3)},r=s(null),c=s(null);return l({show:()=>{r.value.show()}}),y(a,()=>{var t;for(const e of n.value.map(o=>o.name))n.value.find(o=>o.name==e).value=(t=a.song)==null?void 0:t[e]},{deep:!0}),(t,e)=>(b(),x(k,{ref_key:"modal",ref:r,submit:{label:"Save",icon:"save"},name:"Edit Song",onClose:e[0]||(e[0]=o=>t.$emit("close")),onSubmit:d},{default:_(()=>[h(S,{ref_key:"form",ref:c,options:n.value},null,8,["options"])]),_:1},512))}});export{j as _}; +import{i as w,q as s,G as y,o as b,f as x,w as _,g as h,x as S,c9 as k,cQ as q,cw as F}from"./index-9ce0501a.js";const j=w({__name:"EditSong",props:{song:{type:Object,required:!0}},emits:["close","update"],setup(u,{expose:l,emit:p}){const a=u,m=p,i=async(t,e)=>{const o=new FormData,v="."+e.name.split(".").pop();var f=e.slice(0,e.size,e.type),g=new File([f],a.song.id+v,{type:e.type});return o.append("file",g),await(await fetch(t,{method:"POST",body:o})).text()},n=s([{name:"source",type:"upload",icon:"music_note",accept:"audio/mp3",required:!0,onUpload:t=>{i("/api/config/tracks",t).then(e=>n.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:"cover",type:"upload",icon:"art_track",accept:"image/*",imagePreview:!0,value:a.song.cover,onUpload:t=>{i("/api/config/images",t).then(e=>n.value.find(o=>o.name=="cover").value=e)}}]),d=async()=>{const t=c.value.toObject();await q({...a.song,...t}),m("update"),F.addSuccess(t.title,"Updated",3e3)},r=s(null),c=s(null);return l({show:()=>{r.value.show()}}),y(a,()=>{var t;for(const e of n.value.map(o=>o.name))n.value.find(o=>o.name==e).value=(t=a.song)==null?void 0:t[e]},{deep:!0}),(t,e)=>(b(),x(k,{ref_key:"modal",ref:r,submit:{label:"Save",icon:"save"},name:"Edit Song",onClose:e[0]||(e[0]=o=>t.$emit("close")),onSubmit:d},{default:_(()=>[h(S,{ref_key:"form",ref:c,options:n.value},null,8,["options"])]),_:1},512))}});export{j as _}; diff --git a/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js.gz b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js.gz new file mode 100644 index 000000000..3a653b546 Binary files /dev/null and b/src/ui/dist/assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js.gz differ diff --git a/src/ui/dist/assets/Editor-f0e93882.js b/src/ui/dist/assets/Editor-003ff424.js similarity index 91% rename from src/ui/dist/assets/Editor-f0e93882.js rename to src/ui/dist/assets/Editor-003ff424.js index 8d58402e5..1258b1e02 100644 --- a/src/ui/dist/assets/Editor-f0e93882.js +++ b/src/ui/dist/assets/Editor-003ff424.js @@ -1 +1 @@ -import{i as S,B as x,s as I,D as E,k as B,q as _,G as U,U as $,V as A,E as F,W as R,o as i,c as n,a as l,g as s,I as d,X as L,t as f,Y as y,F as b,j as h,w as M,C as N,Z as O,$ as T,_ as W}from"./index-8ac6a0d2.js";import{_ as j}from"./Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js";import"./PlaylistEntry-de6133b2.js";import"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import"./playerInPicture-af203fdf.js";const q={class:"playlist-editor"},G={class:"editor"},X={class:"sort my-2"},Y={class:"filters"},Z={class:"uppercase mt-0"},z={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),c=B(),e=_({name:"",description:"",direction:"asc",sort:"id",filter:{title:[],artist:[],album:[],duration:{}}}),p=_();U([()=>e.value.sort,()=>e.value.filter,()=>e.value.direction],$.debounce(async()=>{p.value=await A(e.value)},3*1e3),{deep:!0});const 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:"id",label:"Added",icon:"date_range"}],m=["title","artist","album"],C={title:"title",artist:"person",album:"album"};F(async()=>{e.value=await R(r.value),e.value.filter||(e.value.filter={});const o=e.value.filter;for(const a of m)o[a]||(o[a]=[]);e.value.filter=o});const g=async()=>{await O(r.value,e.value),c.fetchPlaylists()},D=async()=>{await T(r.value),c.fetchPlaylists(),V.push("/")};return(o,a)=>(i(),n("div",q,[l("div",G,[l("div",X,[s(d,{label:"Save",icon:"save",type:"success",class:"!mt-0",onClick:g}),s(d,{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:k,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",Y,[(i(),n(b,null,h(m,t=>s(N,{class:"filter"},{default:M(()=>[l("h4",Z,f(t),1),l("div",z,[(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:C[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(d,{label:"OR",icon:"add",onClick:P=>e.value.filter[t].push("")},null,8,["onClick"])])]),_:2},1024)),64))])]),l("div",K,[s(j,{playlist:p.value},null,8,["playlist"])])]))}});const ie=W(Q,[["__scopeId","data-v-51eda3dd"]]);export{ie as default}; +import{i as S,B as x,s as I,D as E,k as B,q as _,G as U,U as $,V as A,E as F,W as R,o as i,c as n,a as l,g as s,I as d,X as L,t as f,Y as y,F as b,j as h,w as M,C as N,Z as O,$ as T,_ as W}from"./index-9ce0501a.js";import{_ as j}from"./Playlist.vue_vue_type_script_setup_true_lang-96743295.js";import"./PlaylistEntry-6dd545f8.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.js";const q={class:"playlist-editor"},G={class:"editor"},X={class:"sort my-2"},Y={class:"filters"},Z={class:"uppercase mt-0"},z={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),c=B(),e=_({name:"",description:"",direction:"asc",sort:"id",filter:{title:[],artist:[],album:[],duration:{}}}),p=_();U([()=>e.value.sort,()=>e.value.filter,()=>e.value.direction],$.debounce(async()=>{p.value=await A(e.value)},3*1e3),{deep:!0});const 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:"id",label:"Added",icon:"date_range"}],m=["title","artist","album"],C={title:"title",artist:"person",album:"album"};F(async()=>{e.value=await R(r.value),e.value.filter||(e.value.filter={});const o=e.value.filter;for(const a of m)o[a]||(o[a]=[]);e.value.filter=o});const g=async()=>{await O(r.value,e.value),c.fetchPlaylists()},D=async()=>{await T(r.value),c.fetchPlaylists(),V.push("/")};return(o,a)=>(i(),n("div",q,[l("div",G,[l("div",X,[s(d,{label:"Save",icon:"save",type:"success",class:"!mt-0",onClick:g}),s(d,{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:k,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",Y,[(i(),n(b,null,h(m,t=>s(N,{class:"filter"},{default:M(()=>[l("h4",Z,f(t),1),l("div",z,[(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:C[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(d,{label:"OR",icon:"add",onClick:P=>e.value.filter[t].push("")},null,8,["onClick"])])]),_:2},1024)),64))])]),l("div",K,[s(j,{playlist:p.value},null,8,["playlist"])])]))}});const ie=W(Q,[["__scopeId","data-v-51eda3dd"]]);export{ie as default}; diff --git a/src/ui/dist/assets/Editor-003ff424.js.gz b/src/ui/dist/assets/Editor-003ff424.js.gz new file mode 100644 index 000000000..1e6cb3f5d Binary files /dev/null and b/src/ui/dist/assets/Editor-003ff424.js.gz differ diff --git a/src/ui/dist/assets/Editor-f0e93882.js.gz b/src/ui/dist/assets/Editor-f0e93882.js.gz deleted file mode 100644 index 9592ea800..000000000 Binary files a/src/ui/dist/assets/Editor-f0e93882.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Explore-c4d854bf.js.gz b/src/ui/dist/assets/Explore-c4d854bf.js.gz deleted file mode 100644 index 6309f561d..000000000 Binary files a/src/ui/dist/assets/Explore-c4d854bf.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Explore-c4d854bf.js b/src/ui/dist/assets/Explore-d2d855b0.js similarity index 96% rename from src/ui/dist/assets/Explore-c4d854bf.js rename to src/ui/dist/assets/Explore-d2d855b0.js index 4457b17b3..546aabe8f 100644 --- a/src/ui/dist/assets/Explore-c4d854bf.js +++ b/src/ui/dist/assets/Explore-d2d855b0.js @@ -1 +1 @@ -import{_,o as n,c as r,a as t,r as u,z as h,m as f,n as m,F as y,j as k,p,A as v,e as g,g as a,w as c,M as d,u as S}from"./index-8ac6a0d2.js";const $={props:{src:String}},x=s=>(f("data-v-0c755b69"),s=s(),m(),s),C=x(()=>t("div",{class:"filter"},null,-1)),I={class:"info"};function b(s,o,l,i,e,B){return n(),r("div",{class:"image",style:h({backgroundImage:"url("+l.src+")"})},[C,t("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(){console.log("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/${v(s.id)}`},loadPlaylist(s){console.log(s),fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:s,type:"track"})})}}},j=Object.assign(P,{__name:"Explore",setup(s){return(o,l)=>{const i=g("router-link");return n(),r("div",{ref:"container",class:"explore",onScroll:l[0]||(l[0]=(...e)=>o.onScroll&&o.onScroll(...e))},[(n(!0),r(y,null,k(o.picks,e=>(n(),r("div",{key:e.name,class:"item"},[a(O,{src:S(p)(e.cover)},{default:c(()=>[t("div",w,[t("div",E,[t("span",{id:"loadPlaylist",class:"material-symbols-rounded play",onClick:()=>o.loadPlaylist(e.id)},"play_circle",8,H)]),t("div",M,[a(i,{to:o.href(e),class:"linkOnHover"},{default:c(()=>[t("h1",null,[a(d,{text:e.title},null,8,["text"])])]),_:2},1032,["to"]),a(i,{to:`/search/${e.artist}`,class:"linkOnHover"},{default:c(()=>[t("p",null,[a(d,{text:e.artist},null,8,["text"])])]),_:2},1032,["to"])])])]),_:2},1032,["src"])]))),128))],544)}}}),T=_(j,[["__scopeId","data-v-579c8068"]]);export{T as default}; +import{_,o as n,c as r,a as t,r as u,z as h,m as f,n as m,F as y,j as k,p,A as v,e as g,g as a,w as c,M as d,u as S}from"./index-9ce0501a.js";const $={props:{src:String}},x=s=>(f("data-v-0c755b69"),s=s(),m(),s),C=x(()=>t("div",{class:"filter"},null,-1)),I={class:"info"};function b(s,o,l,i,e,B){return n(),r("div",{class:"image",style:h({backgroundImage:"url("+l.src+")"})},[C,t("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(){console.log("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/${v(s.id)}`},loadPlaylist(s){console.log(s),fetch("/api/player/load",{method:"POST",body:JSON.stringify({id:s,type:"track"})})}}},j=Object.assign(P,{__name:"Explore",setup(s){return(o,l)=>{const i=g("router-link");return n(),r("div",{ref:"container",class:"explore",onScroll:l[0]||(l[0]=(...e)=>o.onScroll&&o.onScroll(...e))},[(n(!0),r(y,null,k(o.picks,e=>(n(),r("div",{key:e.name,class:"item"},[a(O,{src:S(p)(e.cover)},{default:c(()=>[t("div",w,[t("div",E,[t("span",{id:"loadPlaylist",class:"material-symbols-rounded play",onClick:()=>o.loadPlaylist(e.id)},"play_circle",8,H)]),t("div",M,[a(i,{to:o.href(e),class:"linkOnHover"},{default:c(()=>[t("h1",null,[a(d,{text:e.title},null,8,["text"])])]),_:2},1032,["to"]),a(i,{to:`/search/${e.artist}`,class:"linkOnHover"},{default:c(()=>[t("p",null,[a(d,{text:e.artist},null,8,["text"])])]),_:2},1032,["to"])])])]),_:2},1032,["src"])]))),128))],544)}}}),T=_(j,[["__scopeId","data-v-579c8068"]]);export{T as default}; diff --git a/src/ui/dist/assets/Explore-d2d855b0.js.gz b/src/ui/dist/assets/Explore-d2d855b0.js.gz new file mode 100644 index 000000000..1de693246 Binary files /dev/null and b/src/ui/dist/assets/Explore-d2d855b0.js.gz differ diff --git a/src/ui/dist/assets/Export-59966bf7.js.gz b/src/ui/dist/assets/Export-59966bf7.js.gz deleted file mode 100644 index b8d2dae80..000000000 Binary files a/src/ui/dist/assets/Export-59966bf7.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Export-59966bf7.js b/src/ui/dist/assets/Export-8dfc6448.js similarity index 99% rename from src/ui/dist/assets/Export-59966bf7.js rename to src/ui/dist/assets/Export-8dfc6448.js index c2744eec7..9827a872a 100644 --- a/src/ui/dist/assets/Export-59966bf7.js +++ b/src/ui/dist/assets/Export-8dfc6448.js @@ -1,4 +1,4 @@ -import{h as Yt,C as qt,p as Wt,cb as Jt,_ as wt,f as xt,w as Ht,e 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,cz as dt,cd as Xt,k as zt,I as Kt,j as Zt,m as Qt,n as vt}from"./index-8ac6a0d2.js";import{G as Q}from"./gistClient-e7ab47a2.js";var gt={},J={};J.byteLength=ir;J.toByteArray=nr;J.fromByteArray=ur;var R=[],T=[],tr=typeof Uint8Array<"u"?Uint8Array:Array,v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var D=0,rr=v.length;D0)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,cb as Jt,_ as wt,f as xt,w as Ht,e 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,cz as dt,cd as Xt,k as zt,I as Kt,j as Zt,m as Qt,n as vt}from"./index-9ce0501a.js";import{G as Q}from"./gistClient-e7b09d22.js";var gt={},J={};J.byteLength=ir;J.toByteArray=nr;J.fromByteArray=ur;var R=[],T=[],tr=typeof Uint8Array<"u"?Uint8Array:Array,v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var D=0,rr=v.length;D0)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-8dfc6448.js.gz b/src/ui/dist/assets/Export-8dfc6448.js.gz new file mode 100644 index 000000000..4e4b3ef97 Binary files /dev/null and b/src/ui/dist/assets/Export-8dfc6448.js.gz differ diff --git a/src/ui/dist/assets/FactCard-20171310.js b/src/ui/dist/assets/FactCard-fd04f9e5.js similarity index 88% rename from src/ui/dist/assets/FactCard-20171310.js rename to src/ui/dist/assets/FactCard-fd04f9e5.js index 937119488..8f0fa4b2f 100644 --- a/src/ui/dist/assets/FactCard-20171310.js +++ b/src/ui/dist/assets/FactCard-fd04f9e5.js @@ -1 +1 @@ -import{i as s,o as t,f as c,w as o,a as r,t as a,c as d,d as n,C as l,_}from"./index-8ac6a0d2.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 f=_(p,[["__scopeId","data-v-23b147ec"]]);export{f as F}; +import{i as s,o as t,f as c,w as o,a as r,t as a,c as d,d as n,C as l,_}from"./index-9ce0501a.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 f=_(p,[["__scopeId","data-v-23b147ec"]]);export{f as F}; diff --git a/src/ui/dist/assets/FullShelf-006a7dde.js b/src/ui/dist/assets/FullShelf-ee955822.js similarity index 87% rename from src/ui/dist/assets/FullShelf-006a7dde.js rename to src/ui/dist/assets/FullShelf-ee955822.js index b90b3e9fa..71cdebcb0 100644 --- a/src/ui/dist/assets/FullShelf-006a7dde.js +++ b/src/ui/dist/assets/FullShelf-ee955822.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-8ac6a0d2.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-9ce0501a.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-55b2d529.js.gz b/src/ui/dist/assets/Import-55b2d529.js.gz deleted file mode 100644 index 219d5a8d1..000000000 Binary files a/src/ui/dist/assets/Import-55b2d529.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Import-55b2d529.js b/src/ui/dist/assets/Import-9bf651ae.js similarity index 98% rename from src/ui/dist/assets/Import-55b2d529.js rename to src/ui/dist/assets/Import-9bf651ae.js index 24e23b7cf..0e14a8c9d 100644 --- a/src/ui/dist/assets/Import-55b2d529.js +++ b/src/ui/dist/assets/Import-9bf651ae.js @@ -1,4 +1,4 @@ -import{i as M,D as F,o as d,c as m,g as P,h as V,a as r,M as W,N as H,t as k,F as B,j as D,O as N,d as h,_ as G,f as C,w as q,b as j,C as I,q as S,k as K,G as Z,E as Q,I as R,L as U,cz as X,y as Y,Z as ee,$ as te,m as se,n as ae,cA as le,cB as ne,cC as oe}from"./index-8ac6a0d2.js";import{G as J}from"./gistClient-e7ab47a2.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=F(()=>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,w;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"?(w=y==null?void 0:y.spotify)==null?void 0:w.id:y};return(o,x)=>{var v,y;return!e.isBase&&a.value=="removed"?h("",!0):(d(),m("div",{key:0,class:N([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(W,{text:e.song.title},null,8,["text"])]),P(H,{artist:e.song.artist,class:"artist text-muted"},null,8,["artist"])]),r("span",{class:"material-symbols-rounded cursor-pointer",onClick:l},k(((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,w;return r("div",{key:_,class:N([{modified:(w=(b=e.diff.modified.find($=>$.source===e.song.source))==null?void 0:b.changed)==null?void 0:w[_]},"info__table"])},[r("span",pe,k(_),1),r("span",ye,k(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"},ke={key:0,class:"text-very-muted"},Se={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=F(()=>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(I,{class:N([a.value,"playlist p-4 rounded-xl relative"])},{default:q(()=>{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,k(e.playlist.type=="smart"?"neurology":"bolt"),1)):h("",!0),r("h2",null,k(e.playlist.name),1)]),e.playlist.description?(d(),m("p",_e,k(e.playlist.description),1)):h("",!0),r("div",be,[e.playlist.type==="classic"?(d(),m("p",ke,[r("strong",null,k((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},k(e.expanded?"expand_less":"expand_more"),1)])]),e.expanded?(d(),C(I,{key:0,class:"col-span-2 flex flex-col gap-2 z-10 p-4"},{default:q(()=>[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",Se,` +import{i as M,D as F,o as d,c as m,g as P,h as V,a as r,M as W,N as H,t as k,F as B,j as D,O as N,d as h,_ as G,f as C,w as q,b as j,C as I,q as S,k as K,G as Z,E as Q,I as R,L as U,cz as X,y as Y,Z as ee,$ as te,m as se,n as ae,cA as le,cB as ne,cC as oe}from"./index-9ce0501a.js";import{G as J}from"./gistClient-e7b09d22.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=F(()=>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,w;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"?(w=y==null?void 0:y.spotify)==null?void 0:w.id:y};return(o,x)=>{var v,y;return!e.isBase&&a.value=="removed"?h("",!0):(d(),m("div",{key:0,class:N([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(W,{text:e.song.title},null,8,["text"])]),P(H,{artist:e.song.artist,class:"artist text-muted"},null,8,["artist"])]),r("span",{class:"material-symbols-rounded cursor-pointer",onClick:l},k(((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,w;return r("div",{key:_,class:N([{modified:(w=(b=e.diff.modified.find($=>$.source===e.song.source))==null?void 0:b.changed)==null?void 0:w[_]},"info__table"])},[r("span",pe,k(_),1),r("span",ye,k(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"},ke={key:0,class:"text-very-muted"},Se={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=F(()=>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(I,{class:N([a.value,"playlist p-4 rounded-xl relative"])},{default:q(()=>{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,k(e.playlist.type=="smart"?"neurology":"bolt"),1)):h("",!0),r("h2",null,k(e.playlist.name),1)]),e.playlist.description?(d(),m("p",_e,k(e.playlist.description),1)):h("",!0),r("div",be,[e.playlist.type==="classic"?(d(),m("p",ke,[r("strong",null,k((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},k(e.expanded?"expand_less":"expand_more"),1)])]),e.expanded?(d(),C(I,{key:0,class:"col-span-2 flex flex-col gap-2 z-10 p-4"},{default:q(()=>[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",Se,` `+k(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-cda0dc11"]]),L=e=>(se("data-v-5b4910f3"),e=e(),ae(),e),we={class:"pb-4 pr-4 flex flex-col gap-4 h-full"},Ee={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=S(!1),t=S(null),a=S({}),i=S({}),l=F(()=>ce(a.value,i.value)),f=K();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 X(n),p=!1};Z(()=>f.playlists,o),Q(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=S(null),y=S(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},w=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 E of Object.keys(u.changed))n.push(oe(u.id,E,u.changed[E].to))};for(const s of l.value.added)a.value.collection.push(s),n.push(Y(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)},$=S(!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()},A=async()=>{i.value=await J.getContent(),t.value="gist"};return S(null),(n,g)=>(d(),m("div",we,[r("div",Ee,[P(R,{icon:"merge",label:"Merge",onClick:w})]),t.value?(d(),m(B,{key:0},[c.value?(d(),m("div",Be,[P(U)])):(d(),m(B,{key:0},[$e,(d(!0),m(B,null,D(a.value.collection,s=>{var u,E;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:((E=v.value)==null?void 0:E.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(E=>E.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(I,{"with-hover":"",class:"cursor-pointer",onClick:z},{default:q(()=>[Oe]),_:1}),P(I,{disabled:!$.value,"with-hover":"",class:"cursor-pointer",onClick:A},{default:q(()=>[je]),_:1},8,["disabled"])]))]))}});const Te=G(De,[["__scopeId","data-v-5b4910f3"]]);export{Te as default}; diff --git a/src/ui/dist/assets/Import-9bf651ae.js.gz b/src/ui/dist/assets/Import-9bf651ae.js.gz new file mode 100644 index 000000000..f758c445b Binary files /dev/null and b/src/ui/dist/assets/Import-9bf651ae.js.gz differ diff --git a/src/ui/dist/assets/ImportLink-38684500.js.gz b/src/ui/dist/assets/ImportLink-38684500.js.gz deleted file mode 100644 index 79e3fc772..000000000 Binary files a/src/ui/dist/assets/ImportLink-38684500.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/ImportLink-38684500.js b/src/ui/dist/assets/ImportLink-431b2fd4.js similarity index 95% rename from src/ui/dist/assets/ImportLink-38684500.js rename to src/ui/dist/assets/ImportLink-431b2fd4.js index 9f7f185b3..0dba1ed2e 100644 --- a/src/ui/dist/assets/ImportLink-38684500.js +++ b/src/ui/dist/assets/ImportLink-431b2fd4.js @@ -1 +1 @@ -import{i as w,B as b,s as C,q as _,E as B,o as a,c as n,a as s,t as c,b as d,f as I,w as j,F as $,j as L,g as f,I as m,u as N,C as R,cD as V,_ as D}from"./index-8ac6a0d2.js";const E={class:"max-w-[60ch] w-full h-full flex items-center justify-center"},F={class:"flex-col"},S={key:0,class:"text-muted italic text-sm"},q={class:"ml-0"},A={class:"flex gap-2 items-center"},M={class:"text-muted uppercase text-sm"},O=["onClick"],T={class:"buttons flex gap-2"},z=w({__name:"ImportLink",setup(G){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,g]=u,y=`https://gist.githubusercontent.com/${p}/${v}/raw/${g}`,k=await(await fetch(y)).json();e.value=[k],r.value=p}});const x=async()=>{await V(e.value),l.push("/")};return(i,o)=>(a(),n("div",E,[s("div",F,[s("strong",null,c(r.value),1),d(" wants to share: "),e.value.length==0?(a(),n("span",S,"Nothing")):(a(),I(R,{key:1,class:"p-4 mt-4 w-max flex flex-col gap-4"},{default:j(()=>[s("ul",q,[(a(!0),n($,null,L(e.value,t=>(a(),n("li",A,[s("span",M,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,O)]))),256))]),s("div",T,[f(m,{type:"success",icon:"check",label:"Accept",onClick:x}),f(m,{type:"danger",icon:"close",label:"Reject",onClick:o[0]||(o[0]=t=>N(l).push("/"))})])]),_:1}))])]))}});const K=D(z,[["__scopeId","data-v-608ea9fa"]]);export{K as default}; +import{i as w,B as b,s as C,q as _,E as B,o as a,c as n,a as s,t as c,b as d,f as I,w as j,F as $,j as L,g as f,I as m,u as N,C as R,cD as V,_ as D}from"./index-9ce0501a.js";const E={class:"max-w-[60ch] w-full h-full flex items-center justify-center"},F={class:"flex-col"},S={key:0,class:"text-muted italic text-sm"},q={class:"ml-0"},A={class:"flex gap-2 items-center"},M={class:"text-muted uppercase text-sm"},O=["onClick"],T={class:"buttons flex gap-2"},z=w({__name:"ImportLink",setup(G){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,g]=u,y=`https://gist.githubusercontent.com/${p}/${v}/raw/${g}`,k=await(await fetch(y)).json();e.value=[k],r.value=p}});const x=async()=>{await V(e.value),l.push("/")};return(i,o)=>(a(),n("div",E,[s("div",F,[s("strong",null,c(r.value),1),d(" wants to share: "),e.value.length==0?(a(),n("span",S,"Nothing")):(a(),I(R,{key:1,class:"p-4 mt-4 w-max flex flex-col gap-4"},{default:j(()=>[s("ul",q,[(a(!0),n($,null,L(e.value,t=>(a(),n("li",A,[s("span",M,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,O)]))),256))]),s("div",T,[f(m,{type:"success",icon:"check",label:"Accept",onClick:x}),f(m,{type:"danger",icon:"close",label:"Reject",onClick:o[0]||(o[0]=t=>N(l).push("/"))})])]),_:1}))])]))}});const K=D(z,[["__scopeId","data-v-608ea9fa"]]);export{K as default}; diff --git a/src/ui/dist/assets/ImportLink-431b2fd4.js.gz b/src/ui/dist/assets/ImportLink-431b2fd4.js.gz new file mode 100644 index 000000000..fea265f3b Binary files /dev/null and b/src/ui/dist/assets/ImportLink-431b2fd4.js.gz differ diff --git a/src/ui/dist/assets/Insight-7c680bf3.js b/src/ui/dist/assets/Insight-64ef2117.js similarity index 99% rename from src/ui/dist/assets/Insight-7c680bf3.js rename to src/ui/dist/assets/Insight-64ef2117.js index ee27916fb..10bccc8c1 100644 --- a/src/ui/dist/assets/Insight-7c680bf3.js +++ b/src/ui/dist/assets/Insight-64ef2117.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{i as Gn,q as Zt,ce as Zn,cI as Qn,E as Jn,o as to,c as eo,g as wt,u as Mt,cg as io,a as I,w as Vt,C as Nt,t as ei,F as so,m as no,n as oo,_ as ao}from"./index-8ac6a0d2.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{i as Gn,q as Zt,ce as Zn,cI as Qn,E as Jn,o as to,c as eo,g as wt,u as Mt,cg as io,a as I,w as Vt,C as Nt,t as ei,F as so,m as no,n as oo,_ as ao}from"./index-9ce0501a.js";/*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela diff --git a/src/ui/dist/assets/Insight-64ef2117.js.gz b/src/ui/dist/assets/Insight-64ef2117.js.gz new file mode 100644 index 000000000..0dfe1efb9 Binary files /dev/null and b/src/ui/dist/assets/Insight-64ef2117.js.gz differ diff --git a/src/ui/dist/assets/Insight-7c680bf3.js.gz b/src/ui/dist/assets/Insight-7c680bf3.js.gz deleted file mode 100644 index e71900628..000000000 Binary files a/src/ui/dist/assets/Insight-7c680bf3.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Liked-4879dfc1.js b/src/ui/dist/assets/Liked-4879dfc1.js deleted file mode 100644 index 79de7bd35..000000000 --- a/src/ui/dist/assets/Liked-4879dfc1.js +++ /dev/null @@ -1 +0,0 @@ -import{T as o}from"./Template-432d76e5.js";import{f as r,o as t}from"./index-8ac6a0d2.js";import"./PlaylistEntry-de6133b2.js";import"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import"./playerInPicture-af203fdf.js";import"./FactCard-20171310.js";import"./gistClient-e7ab47a2.js";import"./Markdown.vue_vue_type_style_index_0_lang-2360dd37.js";const d={__name:"Liked",setup(e){return(p,m)=>(t(),r(o,{id:"liked"}))}};export{d as default}; diff --git a/src/ui/dist/assets/Liked-fc8dae6c.js b/src/ui/dist/assets/Liked-fc8dae6c.js new file mode 100644 index 000000000..2e0df5079 --- /dev/null +++ b/src/ui/dist/assets/Liked-fc8dae6c.js @@ -0,0 +1 @@ +import{T as o}from"./Template-15080c8f.js";import{f as r,o as t}from"./index-9ce0501a.js";import"./PlaylistEntry-6dd545f8.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.js";import"./FactCard-fd04f9e5.js";import"./gistClient-e7b09d22.js";import"./Markdown.vue_vue_type_style_index_0_lang-99a7139c.js";const d={__name:"Liked",setup(e){return(p,m)=>(t(),r(o,{id:"liked"}))}};export{d as default}; diff --git a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js similarity index 99% rename from src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js rename to src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js index 169ab9f91..ac66e33c8 100644 --- a/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js +++ b/src/ui/dist/assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js @@ -1,4 +1,4 @@ -import{c5 as Ht,c7 as Zt,i as Jt,q as Wt,o as Yt,f as Qt,w as Kt,a as Xt,u as nr,c9 as tr}from"./index-8ac6a0d2.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{c5 as Ht,c7 as Zt,i as Jt,q as Wt,o as Yt,f as Qt,w as Kt,a as Xt,u as nr,c9 as tr}from"./index-9ce0501a.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(),a("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(`${u.updatedTimestamp}, ${t.source}`),1)]),_:1},8,["onClick"])}const D=f(x,[["render",L],["__scopeId","data-v-95eced2f"]]);const U={components:{Loader:N,FullShelf:C,NewsItemBig:D},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]})}})}},H=e=>(k("data-v-dc6d7520"),e=e(),I(),e),b={class:"padding-20"},A={class:"news"},J=H(()=>c("h1",null,"News",-1)),V={key:0,class:"fillPage"};function j(e,s,t,i,d,u){const _=r("Loader"),S=r("news-item-big"),v=r("full-shelf");return n(),a("div",b,[c("div",A,[J,d.news.length?y("",!0):(n(),a("div",V,[$(_)])),(n(!0),a(h,null,g(d.news,l=>(n(),m(v,{key:l.source,heading:l.source,class:"mt-10"},{default:w(()=>[(n(!0),a(h,null,g(l.items,o=>(n(),m(S,{key:o.url,href:o.link,image:o.image,source:o.source,summary:o.summary,title:o.title,updated:o.updated},null,8,["href","image","source","summary","title","updated"]))),128))]),_:2},1032,["heading"]))),128))])])}const E=f(U,[["render",j],["__scopeId","data-v-dc6d7520"]]);export{E as default}; +import{F as C}from"./FullShelf-ee955822.js";import{_ as f,C as T,e as r,o as n,f as m,w,c as a,d as y,a as c,t as p,L as N,g as $,F as h,j as g,m as k,n as I}from"./index-9ce0501a.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,d,u){const _=r("Card");return n(),m(_,{class:"p-4 col-span-2 cursor-pointer","with-hover":"",onClick:u.redirect},{default:w(()=>[t.image?(n(),a("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(`${u.updatedTimestamp}, ${t.source}`),1)]),_:1},8,["onClick"])}const D=f(x,[["render",L],["__scopeId","data-v-95eced2f"]]);const U={components:{Loader:N,FullShelf:C,NewsItemBig:D},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]})}})}},H=e=>(k("data-v-dc6d7520"),e=e(),I(),e),b={class:"padding-20"},A={class:"news"},J=H(()=>c("h1",null,"News",-1)),V={key:0,class:"fillPage"};function j(e,s,t,i,d,u){const _=r("Loader"),S=r("news-item-big"),v=r("full-shelf");return n(),a("div",b,[c("div",A,[J,d.news.length?y("",!0):(n(),a("div",V,[$(_)])),(n(!0),a(h,null,g(d.news,l=>(n(),m(v,{key:l.source,heading:l.source,class:"mt-10"},{default:w(()=>[(n(!0),a(h,null,g(l.items,o=>(n(),m(S,{key:o.url,href:o.link,image:o.image,source:o.source,summary:o.summary,title:o.title,updated:o.updated},null,8,["href","image","source","summary","title","updated"]))),128))]),_:2},1032,["heading"]))),128))])])}const E=f(U,[["render",j],["__scopeId","data-v-dc6d7520"]]);export{E as default}; diff --git a/src/ui/dist/assets/News-4388050d.js.gz b/src/ui/dist/assets/News-4388050d.js.gz new file mode 100644 index 000000000..b2033556b Binary files /dev/null and b/src/ui/dist/assets/News-4388050d.js.gz differ diff --git a/src/ui/dist/assets/News-4e6e4aea.js.gz b/src/ui/dist/assets/News-4e6e4aea.js.gz deleted file mode 100644 index ad263deae..000000000 Binary files a/src/ui/dist/assets/News-4e6e4aea.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/NewsArticle-f8724657.js b/src/ui/dist/assets/NewsArticle-6def32c5.js similarity index 97% rename from src/ui/dist/assets/NewsArticle-f8724657.js rename to src/ui/dist/assets/NewsArticle-6def32c5.js index baa758ed2..7287746ad 100644 --- a/src/ui/dist/assets/NewsArticle-f8724657.js +++ b/src/ui/dist/assets/NewsArticle-6def32c5.js @@ -1 +1 @@ -import{_ as p,o as i,c as _,a as r,L as m,f as d,t as a,b as y,d as h,O as g,e as u}from"./index-8ac6a0d2.js";const w={name:"Error",props:{msg:String},methods:{toggleSidebar(){this.$emit("toggleSidebar")}}},v={class:"error"},b=["innerHTML"];function L(s,t,o,l,e,c){return i(),_("div",v,[r("h1",{innerHTML:o.msg},null,8,b)])}const k=p(w,[["render",L],["__scopeId","data-v-99b2e9f2"]]);const x={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 o=this.article.href.split("/")[2],l=t.map(e=>"https://"+o+e);for(const e in t){let c=l[e];fetch("/api/news/articles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:l[e]})}).then(async n=>{n.status==200?c=await n.text():console.error(await n.text()),this.article.body=this.article.body.replaceAll(t[e],c)})}return}this.error=s.statusText})}},mounted(){this.updateData()}},T={key:2,class:"padding-20 newsArticle"},N=["innerHTML"],H={class:"leading-tight headline"},M=["innerHTML"],A={key:0,class:"date"},E=["href"],S={key:1,class:"my-4"},W=["innerHTML"];function C(s,t,o,l,e,c){const n=u("Error"),f=u("Loader");return e.error?(i(),d(n,{key:0,msg:e.error},null,8,["msg"])):e.article.headline?(i(),_("div",T,[r("span",{class:"toggleWidth material-icons-round",onClick:t[0]||(t[0]=B=>e.fullWidth=!e.fullWidth)},a(e.fullWidth?"close_fullscreen":"open_in_full"),1),r("div",{class:g([{slim:!e.fullWidth},"wrapper"])},[r("h6",{class:"accentLink topic",innerHTML:e.article.topic},null,8,N),r("h1",H,a(e.article.headline),1),r("h4",{class:"standfirst",innerHTML:e.article.standfirst},null,8,M),e.article.date?(i(),_("h6",A,[y(a(e.article.date)+", ",1),r("a",{href:e.article.href},a(e.article.href),9,E)])):h("",!0),e.article.body?(i(),_("hr",S)):h("",!0),r("div",{class:"body leading-relaxed text-md",innerHTML:e.article.body},null,8,W)],2)])):(i(),d(f,{key:1}))}const O=p(x,[["render",C],["__scopeId","data-v-32bc12c0"]]);export{O as default}; +import{_ as p,o as i,c as _,a as r,L as m,f as d,t as a,b as y,d as h,O as g,e as u}from"./index-9ce0501a.js";const w={name:"Error",props:{msg:String},methods:{toggleSidebar(){this.$emit("toggleSidebar")}}},v={class:"error"},b=["innerHTML"];function L(s,t,o,l,e,c){return i(),_("div",v,[r("h1",{innerHTML:o.msg},null,8,b)])}const k=p(w,[["render",L],["__scopeId","data-v-99b2e9f2"]]);const x={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 o=this.article.href.split("/")[2],l=t.map(e=>"https://"+o+e);for(const e in t){let c=l[e];fetch("/api/news/articles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:l[e]})}).then(async n=>{n.status==200?c=await n.text():console.error(await n.text()),this.article.body=this.article.body.replaceAll(t[e],c)})}return}this.error=s.statusText})}},mounted(){this.updateData()}},T={key:2,class:"padding-20 newsArticle"},N=["innerHTML"],H={class:"leading-tight headline"},M=["innerHTML"],A={key:0,class:"date"},E=["href"],S={key:1,class:"my-4"},W=["innerHTML"];function C(s,t,o,l,e,c){const n=u("Error"),f=u("Loader");return e.error?(i(),d(n,{key:0,msg:e.error},null,8,["msg"])):e.article.headline?(i(),_("div",T,[r("span",{class:"toggleWidth material-icons-round",onClick:t[0]||(t[0]=B=>e.fullWidth=!e.fullWidth)},a(e.fullWidth?"close_fullscreen":"open_in_full"),1),r("div",{class:g([{slim:!e.fullWidth},"wrapper"])},[r("h6",{class:"accentLink topic",innerHTML:e.article.topic},null,8,N),r("h1",H,a(e.article.headline),1),r("h4",{class:"standfirst",innerHTML:e.article.standfirst},null,8,M),e.article.date?(i(),_("h6",A,[y(a(e.article.date)+", ",1),r("a",{href:e.article.href},a(e.article.href),9,E)])):h("",!0),e.article.body?(i(),_("hr",S)):h("",!0),r("div",{class:"body leading-relaxed text-md",innerHTML:e.article.body},null,8,W)],2)])):(i(),d(f,{key:1}))}const O=p(x,[["render",C],["__scopeId","data-v-32bc12c0"]]);export{O as default}; diff --git a/src/ui/dist/assets/NewsArticle-6def32c5.js.gz b/src/ui/dist/assets/NewsArticle-6def32c5.js.gz new file mode 100644 index 000000000..861a38c96 Binary files /dev/null and b/src/ui/dist/assets/NewsArticle-6def32c5.js.gz differ diff --git a/src/ui/dist/assets/NewsArticle-f8724657.js.gz b/src/ui/dist/assets/NewsArticle-f8724657.js.gz deleted file mode 100644 index 10372f6a2..000000000 Binary files a/src/ui/dist/assets/NewsArticle-f8724657.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Normal-5ddfa169.js b/src/ui/dist/assets/Normal-5ddfa169.js deleted file mode 100644 index 3fa7fdcb4..000000000 --- a/src/ui/dist/assets/Normal-5ddfa169.js +++ /dev/null @@ -1 +0,0 @@ -import{i as n,B as i,k as p,D as m,o as c,f as l}from"./index-8ac6a0d2.js";import{T as d}from"./Template-432d76e5.js";import"./PlaylistEntry-de6133b2.js";import"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import"./playerInPicture-af203fdf.js";import"./FactCard-20171310.js";import"./gistClient-e7ab47a2.js";import"./Markdown.vue_vue_type_style_index_0_lang-2360dd37.js";const B=n({__name:"Normal",setup(u){const e=i(),s=p(),t=m(()=>e.params.id),r=async(a,o)=>{await fetch(`/api/playlists/${t.value}/tracks`,{method:"PUT",body:JSON.stringify({songOldIndex:a,songNewIndex:o})}),await s.fetchPlaylists()};return(a,o)=>(c(),l(d,{id:t.value,onRearrange:r},null,8,["id"]))}});export{B as default}; diff --git a/src/ui/dist/assets/Normal-9a43bf76.js b/src/ui/dist/assets/Normal-9a43bf76.js new file mode 100644 index 000000000..8449a0d9b --- /dev/null +++ b/src/ui/dist/assets/Normal-9a43bf76.js @@ -0,0 +1 @@ +import{i as n,B as i,k as p,D as m,o as c,f as l}from"./index-9ce0501a.js";import{T as d}from"./Template-15080c8f.js";import"./PlaylistEntry-6dd545f8.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.js";import"./FactCard-fd04f9e5.js";import"./gistClient-e7b09d22.js";import"./Markdown.vue_vue_type_style_index_0_lang-99a7139c.js";const B=n({__name:"Normal",setup(u){const e=i(),s=p(),t=m(()=>e.params.id),r=async(a,o)=>{await fetch(`/api/playlists/${t.value}/tracks`,{method:"PUT",body:JSON.stringify({songOldIndex:a,songNewIndex:o})}),await s.fetchPlaylists()};return(a,o)=>(c(),l(d,{id:t.value,onRearrange:r},null,8,["id"]))}});export{B as default}; diff --git a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-96743295.js similarity index 81% rename from src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js rename to src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-96743295.js index 088f9713e..7822bbd16 100644 --- a/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js +++ b/src/ui/dist/assets/Playlist.vue_vue_type_script_setup_true_lang-96743295.js @@ -1 +1 @@ -import{P as i}from"./PlaylistEntry-de6133b2.js";import{i as o,q as c,o as l,c as t,g as n,P as u,F as d,j as y,f,d as p}from"./index-8ac6a0d2.js";const k={key:0,ref:"playlist-scroll",class:"playlist"},B=o({__name:"Playlist",props:{playlist:{type:Object,required:!1},useQueue:{type:Boolean,required:!1,default:!1}},setup(s){const a=c(-1);return(v,g)=>s.playlist?(l(),t("div",k,[n(u),(l(!0),t(d,null,y(s.useQueue?s.playlist.queue:s.playlist.songs,(e,r)=>(l(),f(i,{id:"bplayer-entry-"+e.id,key:e.source,index:r,selected:a.value==e.id,song:e,"with-cover":"",onClick:m=>a.value==e.id?a.value=-1:a.value=e.id},null,8,["id","index","selected","song","onClick"]))),128))],512)):p("",!0)}});export{B as _}; +import{P as i}from"./PlaylistEntry-6dd545f8.js";import{i as o,q as c,o as l,c as t,g as n,P as u,F as d,j as y,f,d as p}from"./index-9ce0501a.js";const k={key:0,ref:"playlist-scroll",class:"playlist"},B=o({__name:"Playlist",props:{playlist:{type:Object,required:!1},useQueue:{type:Boolean,required:!1,default:!1}},setup(s){const a=c(-1);return(v,g)=>s.playlist?(l(),t("div",k,[n(u),(l(!0),t(d,null,y(s.useQueue?s.playlist.queue:s.playlist.songs,(e,r)=>(l(),f(i,{id:"bplayer-entry-"+e.id,key:e.source,index:r,selected:a.value==e.id,song:e,"with-cover":"",onClick:m=>a.value==e.id?a.value=-1:a.value=e.id},null,8,["id","index","selected","song","onClick"]))),128))],512)):p("",!0)}});export{B as _}; diff --git a/src/ui/dist/assets/PlaylistEntry-1ba48776.css b/src/ui/dist/assets/PlaylistEntry-1ba48776.css deleted file mode 100644 index 3a1134c02..000000000 --- a/src/ui/dist/assets/PlaylistEntry-1ba48776.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Copyright (c) 2023, reAudioPlayer ONE. - * Licenced under the GNU General Public License v3.0 - */.playlist-entry[data-v-295b92cf]{display:grid;grid-template-columns:50px 40px 1fr 1fr 40px 60px;gap:10px;padding:10px 0;border-radius:20px;border:1px solid transparent}.playlist-entry .artist-title[data-v-295b92cf]{grid-column:3/4}.playlist-entry:not(.withCover) .artist-title[data-v-295b92cf]{grid-column-start:2}.playlist-entry:not(.withAlbum) .artist-title[data-v-295b92cf]{grid-column-end:5}.playlist-entry div[data-v-295b92cf]{overflow:hidden}.playlist-entry .index[data-v-295b92cf],.playlist-entry .album[data-v-295b92cf],.playlist-entry .duration[data-v-295b92cf],.playlist-entry .icon[data-v-295b92cf]{margin:auto 0;font-size:.9rem;color:var(--fg-base-dk)}.playlist-entry .index.index[data-v-295b92cf],.playlist-entry .album.index[data-v-295b92cf],.playlist-entry .duration.index[data-v-295b92cf],.playlist-entry .icon.index[data-v-295b92cf]{cursor:pointer}.playlist-entry .index.icon[data-v-295b92cf],.playlist-entry .album.icon[data-v-295b92cf],.playlist-entry .duration.icon[data-v-295b92cf],.playlist-entry .icon.icon[data-v-295b92cf]{font-size:1.3rem;cursor:pointer;font-variation-settings:"wght" 500}.playlist-entry .index.icon.favourite[data-v-295b92cf],.playlist-entry .album.icon.favourite[data-v-295b92cf],.playlist-entry .duration.icon.favourite[data-v-295b92cf],.playlist-entry .icon.icon.favourite[data-v-295b92cf]{font-variation-settings:"FILL" 1}.playlist-entry.hovering[data-v-295b92cf]{background-color:var(--bg-hover-dk);border:var(--border-container)}.playlist-entry.hovering .index[data-v-295b92cf]{font-size:1.5rem;font-variation-settings:"FILL" 1}.playlist-entry.selected[data-v-295b92cf]{background-color:var(--bg-hover)}.playlist-entry .favourite-icon[data-v-295b92cf]{grid-column:5}.playlist-entry .duration[data-v-295b92cf]{grid-column:6}.playlist-entry .cover[data-v-295b92cf]{display:flex;justify-content:center;border-radius:4px}.playlist-entry img[data-v-295b92cf]{margin:auto 0}.playlist-entry .artist-title[data-v-295b92cf]{display:grid;grid-template-rows:1fr 1fr}.playlist-entry .artist-title .artist[data-v-295b92cf]{font-size:.8rem;color:var(--fg-base-dk)}.playlist-entry .artist-title span[data-v-295b92cf]{max-width:-moz-min-content;max-width:min-content;overflow:hidden}.playlist-entry.playing .title[data-v-295b92cf],.playlist-entry.playing .index[data-v-295b92cf]{color:var(--fg-secondary)}.playlist-entry.hovering .artist[data-v-295b92cf],.playlist-entry.hovering .album[data-v-295b92cf],.playlist-entry.selected .artist[data-v-295b92cf],.playlist-entry.selected .album[data-v-295b92cf]{color:var(--fg-base)}@media screen and (max-width: 768px){.playlist-entry[data-v-295b92cf]{padding:5px 0;border-radius:10px;grid-template-columns:30px 40px 1fr 1fr 30px 40px}.playlist-entry .index[data-v-295b92cf],.playlist-entry .duration[data-v-295b92cf]{font-size:.7rem}.playlist-entry .artist-title[data-v-295b92cf]{grid-column-end:5;font-size:.8rem}.playlist-entry .artist-title .artist[data-v-295b92cf]{font-size:.65rem}} diff --git a/src/ui/dist/assets/PlaylistEntry-1ba48776.css.gz b/src/ui/dist/assets/PlaylistEntry-1ba48776.css.gz deleted file mode 100644 index e1a10f37c..000000000 Binary files a/src/ui/dist/assets/PlaylistEntry-1ba48776.css.gz and /dev/null differ diff --git a/src/ui/dist/assets/PlaylistEntry-6dd545f8.js b/src/ui/dist/assets/PlaylistEntry-6dd545f8.js new file mode 100644 index 000000000..2525876f9 --- /dev/null +++ b/src/ui/dist/assets/PlaylistEntry-6dd545f8.js @@ -0,0 +1 @@ +import{i as V,k as X,D as p,q as I,e as S,bo as G,c1 as J,o as u,c as f,r as K,g as o,w as s,b as d,F as T,j as L,f as A,t as k,d as B,u as $,cj as Q,cL as Z,cb as ee,cw as te,y as oe,cB as ne,cM as se,cd as ae,cE as le,ce as ie,a as b,cN as ue,O as j,h as re,M as U,A as de,N as ce,cO as ve,ci as ge,cP as fe,_ as me}from"./index-9ce0501a.js";import{_ as ye}from"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import{p as pe}from"./playerInPicture-af203fdf.js";const ke=V({__name:"SongContext",props:{song:{type:Object,required:!0},playlistId:{type:String,required:!1,default:""}},emits:["update","edit"],setup(t,{expose:N,emit:E}){const a=X(),C=p(()=>a.playlists.filter(n=>n.type==="classic")),e=t,m=E,v=p(()=>e.playlistId==-1),_=()=>{pe(e.song.artist,e.song.title,e.song.source)},g=async n=>{var l;n!=-1&&(await ee(n,e.song),te.addSuccess(e.song.title,`Added to ${(l=C.value.find(i=>i.id==n))==null?void 0:l.name}`,3e3),m("update"))},q=async()=>{const n=await oe(e.song.title,e.song.artist,e.song.cover);await g(n),m("update")},P=async()=>{await ne(e.playlistId,e.song.id),m("update")},M=I(null),y=I(null),F=()=>{y.value.visible?D():c()},D=()=>{y.value.hide()},c=()=>{const n=M.value.getBoundingClientRect(),l={top:n.height+n.top+window.scrollY,left:n.width+n.left+window.scrollX};y.value.show(l)};N({show:c,toggle:F,hide:D});const w=p(()=>({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}`})),x=()=>{m("edit")},R=n=>{window.open(w.value[n]),x()},H=()=>{const n=se(e.song);ae(n,`${e.song.artist} - ${e.song.title}`)};return(n,l)=>{const i=S("v-contextmenu-item"),O=S("v-contextmenu-submenu"),h=S("v-contextmenu-divider"),Y=S("v-contextmenu"),z=G("contextmenu");return J((u(),f("div",{ref_key:"box",ref:M},[K(n.$slots,"default"),o(Y,{ref_key:"contextmenu",ref:y},{default:s(()=>[o(i,{onClick:_},{default:s(()=>[d(" Preview ")]),_:1}),o(O,{title:"Find source"},{default:s(()=>[(u(!0),f(T,null,L(Object.keys(w.value),r=>(u(),A(i,{key:r,onClick:W=>R(r)},{default:s(()=>[d(k(r),1)]),_:2},1032,["onClick"]))),128))]),_:1}),o(h),o(i,{onClick:l[0]||(l[0]=r=>n.$emit("like"))},{default:s(()=>[d(k((t.song.favourite?"Remove from":"Save to")+" your Liked Songs"),1)]),_:1}),v.value?B("",!0):(u(),A(i,{key:0,onClick:P},{default:s(()=>[d(" Remove from this playlist ")]),_:1})),o(O,{title:"Add to playlist"},{default:s(()=>[o(i,{onClick:q},{default:s(()=>[d("Add to new playlist")]),_:1}),o(h),(u(!0),f(T,null,L(C.value,r=>(u(),A(i,{key:r.id,onClick:W=>g(r.id)},{default:s(()=>[d(k(r.name),1)]),_:2},1032,["onClick"]))),128))]),_:1}),o(h),o(i,{onClick:x},{default:s(()=>[d(" Update Metadata ")]),_:1}),o(h),o(i,{onClick:l[1]||(l[1]=r=>$(Q)(t.song.id))},{default:s(()=>[d(" Download ")]),_:1}),o(i,{onClick:l[2]||(l[2]=r=>$(Z)(t.song.id))},{default:s(()=>[d(" Uncache ")]),_:1}),o(h),o(O,{title:"Export..."},{default:s(()=>[o(i,{onClick:l[3]||(l[3]=r=>H())},{default:s(()=>[d(" to file ")]),_:1})]),_:1})]),_:1},512)])),[[z,void 0,"contextmenu"]])}}}),we={key:0,class:"index text-right downloading"},xe={key:2,class:"cover"},he={class:"artist-title"},be={class:"title"},Se={class:"artist"},$e={key:3,class:"album"},Ce={class:"duration text-center"},_e=V({__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(t,{emit:N}){const E=le(),a=t,C=N,e=ie(),m=p(()=>a.song.id==e.song.id),v=I(!1),_=()=>{a.song.favourite=!a.song.favourite,fe(a.song.id,a.song.favourite)},g=p(()=>a.playlistId==null?e.playlist.id:a.playlistId),q=async()=>{if(g.value=="track"){e.loadPlaylist("track",a.song.id);return}if(g.value=="artist"){await e.loadPlaylist("artist",a.artist),e.loadSong(null,a.index);return}if(g.value=="album"){await e.loadPlaylist("album",a.album),e.loadSong(null,a.index);return}e.loadSong(g.value,a.index)},P=I(null),M=()=>{P.value.show()},y=()=>{C("update")},F=p(()=>E.isSongDownloading(a.song.id));return(D,c)=>{const w=S("router-link");return u(),A(ke,{ref:"ctxMenu",liked:t.song.favourite,playlistId:g.value,song:t.song,onEdit:M,onLike:_,onUpdate:y},{default:s(()=>[o(ye,{ref_key:"updatePopup",ref:P,song:t.song,onUpdate:c[0]||(c[0]=x=>D.$emit("update"))},null,8,["song"]),b("div",{class:j([{playing:m.value,selected:t.selected,hovering:v.value,withCover:t.withCover,withAlbum:t.withAlbum,withMore:t.withMore},"playlist-entry"]),onDblclick:q,onMouseenter:c[1]||(c[1]=x=>v.value=!0),onMouseleave:c[2]||(c[2]=x=>v.value=!1)},[F.value?(u(),f("div",we,[o(ue)])):(u(),f("div",{key:1,class:j([{"material-symbols-rounded":v.value},"index text-right"]),onClick:q},k(v.value?"play_arrow":t.index+1),3)),t.withCover?(u(),f("div",xe,[o(re,{src:t.song.cover,type:"track"},null,8,["src"])])):B("",!0),b("div",he,[b("span",be,[o(w,{to:`/track/${$(de)(t.song.id)}`,class:"linkOnHover"},{default:s(()=>[o(U,{text:t.song.title},null,8,["text"])]),_:1},8,["to"])]),b("span",Se,[o(ce,{artist:t.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),t.withAlbum&&!$(ve)?(u(),f("div",$e,[o(w,{to:t.song.album.href,class:"linkOnHover"},{default:s(()=>[o(U,{text:t.song.album.name},null,8,["text"])]),_:1},8,["to"])])):B("",!0),t.selected||v.value||t.song.favourite?(u(),f("div",{key:4,class:j([{favourite:t.song.favourite},"favourite-icon icon text-right material-symbols-rounded"]),onClick:_},k(t.song.favourite?"favorite":"heart_plus"),3)):B("",!0),b("div",Ce,k($(ge)(t.song.duration)),1)],34)]),_:1},8,["liked","playlistId","song"])}}});const De=me(_e,[["__scopeId","data-v-67cfb148"]]);export{De as P}; diff --git a/src/ui/dist/assets/PlaylistEntry-6dd545f8.js.gz b/src/ui/dist/assets/PlaylistEntry-6dd545f8.js.gz new file mode 100644 index 000000000..24747fe1b Binary files /dev/null and b/src/ui/dist/assets/PlaylistEntry-6dd545f8.js.gz differ diff --git a/src/ui/dist/assets/PlaylistEntry-7f3947eb.css b/src/ui/dist/assets/PlaylistEntry-7f3947eb.css new file mode 100644 index 000000000..5070170e0 --- /dev/null +++ b/src/ui/dist/assets/PlaylistEntry-7f3947eb.css @@ -0,0 +1,4 @@ +/*! + * Copyright (c) 2023, reAudioPlayer ONE. + * Licenced under the GNU General Public License v3.0 + */.playlist-entry[data-v-67cfb148]{display:grid;grid-template-columns:50px 40px 1fr 1fr 40px 60px;gap:10px;padding:10px 0;border-radius:20px;border:1px solid transparent}.playlist-entry .artist-title[data-v-67cfb148]{grid-column:3/4}.playlist-entry:not(.withCover) .artist-title[data-v-67cfb148]{grid-column-start:2}.playlist-entry:not(.withAlbum) .artist-title[data-v-67cfb148]{grid-column-end:5}.playlist-entry div[data-v-67cfb148]{overflow:hidden}.playlist-entry .index[data-v-67cfb148],.playlist-entry .album[data-v-67cfb148],.playlist-entry .duration[data-v-67cfb148],.playlist-entry .icon[data-v-67cfb148]{margin:auto 0;font-size:.9rem;color:var(--fg-base-dk)}.playlist-entry .index.index[data-v-67cfb148],.playlist-entry .album.index[data-v-67cfb148],.playlist-entry .duration.index[data-v-67cfb148],.playlist-entry .icon.index[data-v-67cfb148]{cursor:pointer}.playlist-entry .index.icon[data-v-67cfb148],.playlist-entry .album.icon[data-v-67cfb148],.playlist-entry .duration.icon[data-v-67cfb148],.playlist-entry .icon.icon[data-v-67cfb148]{font-size:1.3rem;cursor:pointer;font-variation-settings:"wght" 500}.playlist-entry .index.icon.favourite[data-v-67cfb148],.playlist-entry .album.icon.favourite[data-v-67cfb148],.playlist-entry .duration.icon.favourite[data-v-67cfb148],.playlist-entry .icon.icon.favourite[data-v-67cfb148]{font-variation-settings:"FILL" 1}.playlist-entry.hovering[data-v-67cfb148]{background-color:var(--bg-hover-dk);border:var(--border-container)}.playlist-entry.hovering .index[data-v-67cfb148]{font-size:1.5rem;font-variation-settings:"FILL" 1}.playlist-entry.selected[data-v-67cfb148]{background-color:var(--bg-hover)}.playlist-entry .favourite-icon[data-v-67cfb148]{grid-column:5}.playlist-entry .duration[data-v-67cfb148]{grid-column:6}.playlist-entry .cover[data-v-67cfb148]{display:flex;justify-content:center;border-radius:4px}.playlist-entry img[data-v-67cfb148]{margin:auto 0}.playlist-entry .artist-title[data-v-67cfb148]{display:grid;grid-template-rows:1fr 1fr}.playlist-entry .artist-title .artist[data-v-67cfb148]{font-size:.8rem;color:var(--fg-base-dk)}.playlist-entry .artist-title span[data-v-67cfb148]{max-width:-moz-min-content;max-width:min-content;overflow:hidden}.playlist-entry.playing .title[data-v-67cfb148],.playlist-entry.playing .index[data-v-67cfb148]{color:var(--fg-secondary)}.playlist-entry.hovering .artist[data-v-67cfb148],.playlist-entry.hovering .album[data-v-67cfb148],.playlist-entry.selected .artist[data-v-67cfb148],.playlist-entry.selected .album[data-v-67cfb148]{color:var(--fg-base)}@media screen and (max-width: 768px){.playlist-entry[data-v-67cfb148]{padding:5px 0;border-radius:10px;grid-template-columns:30px 40px 1fr 1fr 30px 40px}.playlist-entry .index[data-v-67cfb148],.playlist-entry .duration[data-v-67cfb148]{font-size:.7rem}.playlist-entry .artist-title[data-v-67cfb148]{grid-column-end:5;font-size:.8rem}.playlist-entry .artist-title .artist[data-v-67cfb148]{font-size:.65rem}} diff --git a/src/ui/dist/assets/PlaylistEntry-7f3947eb.css.gz b/src/ui/dist/assets/PlaylistEntry-7f3947eb.css.gz new file mode 100644 index 000000000..74820faea Binary files /dev/null and b/src/ui/dist/assets/PlaylistEntry-7f3947eb.css.gz differ diff --git a/src/ui/dist/assets/PlaylistEntry-de6133b2.js b/src/ui/dist/assets/PlaylistEntry-de6133b2.js deleted file mode 100644 index 4cdcedee3..000000000 --- a/src/ui/dist/assets/PlaylistEntry-de6133b2.js +++ /dev/null @@ -1 +0,0 @@ -import{i as V,k as X,D as p,q as I,e as b,bo as G,c1 as J,o as u,c as g,r as K,g as o,w as s,b as d,F as T,j as L,f as A,t as k,d as B,u as $,cj as Q,cL as Z,cb as ee,cw as te,y as oe,cB as ne,cM as se,cd as ae,cE as ie,ce as le,a as S,cN as ue,O as j,h as re,M as U,A as de,N as ce,cO as ve,ci as ge,cP as fe,_ as me}from"./index-8ac6a0d2.js";import{_ as ye}from"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import{p as pe}from"./playerInPicture-af203fdf.js";const ke=V({__name:"SongContext",props:{song:{type:Object,required:!0},playlistId:{type:String,required:!1,default:""}},emits:["update","edit"],setup(t,{expose:N,emit:E}){const a=X(),C=p(()=>a.playlists.filter(n=>n.type==="classic")),e=t,m=E,v=p(()=>e.playlistId==-1),_=()=>{pe(e.song.artist,e.song.title,e.song.source)},f=async n=>{var i;n!=-1&&(await ee(n,e.song),te.addSuccess(e.song.title,`Added to ${(i=C.value.find(l=>l.id==n))==null?void 0:i.name}`,3e3),m("update"))},q=async()=>{const n=await oe(e.song.title,e.song.artist,e.song.cover);await f(n),m("update")},P=async()=>{await ne(e.playlistId,e.song.id),m("update")},M=I(null),y=I(null),F=()=>{y.value.visible?D():c()},D=()=>{y.value.hide()},c=()=>{const n=M.value.getBoundingClientRect(),i={top:n.height+n.top+window.scrollY,left:n.width+n.left+window.scrollX};y.value.show(i)};N({show:c,toggle:F,hide:D});const w=p(()=>({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}`})),x=()=>{m("edit")},R=n=>{window.open(w.value[n]),x()},H=()=>{const n=se(e.song);ae(n,`${e.song.artist} - ${e.song.title}`)};return(n,i)=>{const l=b("v-contextmenu-item"),O=b("v-contextmenu-submenu"),h=b("v-contextmenu-divider"),Y=b("v-contextmenu"),z=G("contextmenu");return J((u(),g("div",{ref_key:"box",ref:M},[K(n.$slots,"default"),o(Y,{ref_key:"contextmenu",ref:y},{default:s(()=>[o(l,{onClick:_},{default:s(()=>[d(" Preview ")]),_:1}),o(O,{title:"Find source"},{default:s(()=>[(u(!0),g(T,null,L(Object.keys(w.value),r=>(u(),A(l,{key:r,onClick:W=>R(r)},{default:s(()=>[d(k(r),1)]),_:2},1032,["onClick"]))),128))]),_:1}),o(h),o(l,{onClick:i[0]||(i[0]=r=>n.$emit("like"))},{default:s(()=>[d(k((t.song.favourite?"Remove from":"Save to")+" your Liked Songs"),1)]),_:1}),v.value?B("",!0):(u(),A(l,{key:0,onClick:P},{default:s(()=>[d(" Remove from this playlist ")]),_:1})),o(O,{title:"Add to playlist"},{default:s(()=>[o(l,{onClick:q},{default:s(()=>[d("Add to new playlist")]),_:1}),o(h),(u(!0),g(T,null,L(C.value,r=>(u(),A(l,{key:r.id,onClick:W=>f(r.id)},{default:s(()=>[d(k(r.name),1)]),_:2},1032,["onClick"]))),128))]),_:1}),o(h),o(l,{onClick:x},{default:s(()=>[d(" Update Metadata ")]),_:1}),o(h),o(l,{onClick:i[1]||(i[1]=r=>$(Q)(t.song.id))},{default:s(()=>[d(" Download ")]),_:1}),o(l,{onClick:i[2]||(i[2]=r=>$(Z)(t.song.id))},{default:s(()=>[d(" Uncache ")]),_:1}),o(h),o(O,{title:"Export..."},{default:s(()=>[o(l,{onClick:i[3]||(i[3]=r=>H())},{default:s(()=>[d(" to file ")]),_:1})]),_:1})]),_:1},512)])),[[z,void 0,"contextmenu"]])}}}),we={key:0,class:"index text-right downloading"},xe={key:2,class:"cover"},he={class:"artist-title"},Se={class:"title"},be={class:"artist"},$e={key:3,class:"album"},Ce={class:"duration text-center"},_e=V({__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}},emits:["update"],setup(t,{emit:N}){const E=ie(),a=t,C=N,e=le(),m=p(()=>a.song.id==e.song.id),v=I(!1),_=()=>{a.song.favourite=!a.song.favourite,fe(a.song.id,a.song.favourite)},f=p(()=>a.playlistId==null?e.playlist.id:a.playlistId),q=async()=>{if(f.value=="track"){e.loadPlaylist("track",a.song.id);return}if(f.value=="artist"){await e.loadPlaylist("artist",a.artist),e.loadSong(null,a.index);return}e.loadSong(f.value,a.index)},P=I(null),M=()=>{P.value.show()},y=()=>{C("update")},F=p(()=>E.isSongDownloading(a.song.id));return(D,c)=>{const w=b("router-link");return u(),A(ke,{ref:"ctxMenu",liked:t.song.favourite,playlistId:f.value,song:t.song,onEdit:M,onLike:_,onUpdate:y},{default:s(()=>[o(ye,{ref_key:"updatePopup",ref:P,song:t.song,onUpdate:c[0]||(c[0]=x=>D.$emit("update"))},null,8,["song"]),S("div",{class:j([{playing:m.value,selected:t.selected,hovering:v.value,withCover:t.withCover,withAlbum:t.withAlbum,withMore:t.withMore},"playlist-entry"]),onDblclick:q,onMouseenter:c[1]||(c[1]=x=>v.value=!0),onMouseleave:c[2]||(c[2]=x=>v.value=!1)},[F.value?(u(),g("div",we,[o(ue)])):(u(),g("div",{key:1,class:j([{"material-symbols-rounded":v.value},"index text-right"]),onClick:q},k(v.value?"play_arrow":t.index+1),3)),t.withCover?(u(),g("div",xe,[o(re,{src:t.song.cover,type:"track"},null,8,["src"])])):B("",!0),S("div",he,[S("span",Se,[o(w,{to:`/track/${$(de)(t.song.id)}`,class:"linkOnHover"},{default:s(()=>[o(U,{text:t.song.title},null,8,["text"])]),_:1},8,["to"])]),S("span",be,[o(ce,{artist:t.song.artist,class:"text-muted text-xs"},null,8,["artist"])])]),t.withAlbum&&!$(ve)?(u(),g("div",$e,[o(w,{to:t.song.album.href,class:"linkOnHover"},{default:s(()=>[o(U,{text:t.song.album.name},null,8,["text"])]),_:1},8,["to"])])):B("",!0),t.selected||v.value||t.song.favourite?(u(),g("div",{key:4,class:j([{favourite:t.song.favourite},"favourite-icon icon text-right material-symbols-rounded"]),onClick:_},k(t.song.favourite?"favorite":"heart_plus"),3)):B("",!0),S("div",Ce,k($(ge)(t.song.duration)),1)],34)]),_:1},8,["liked","playlistId","song"])}}});const De=me(_e,[["__scopeId","data-v-295b92cf"]]);export{De as P}; diff --git a/src/ui/dist/assets/PlaylistEntry-de6133b2.js.gz b/src/ui/dist/assets/PlaylistEntry-de6133b2.js.gz deleted file mode 100644 index f529ed974..000000000 Binary files a/src/ui/dist/assets/PlaylistEntry-de6133b2.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/PlaylistItem-378aa73f.js.gz b/src/ui/dist/assets/PlaylistItem-378aa73f.js.gz deleted file mode 100644 index c1065d1f2..000000000 Binary files a/src/ui/dist/assets/PlaylistItem-378aa73f.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/PlaylistItem-378aa73f.js b/src/ui/dist/assets/PlaylistItem-48685cba.js similarity index 97% rename from src/ui/dist/assets/PlaylistItem-378aa73f.js rename to src/ui/dist/assets/PlaylistItem-48685cba.js index 52c43d7b4..85234d9cb 100644 --- a/src/ui/dist/assets/PlaylistItem-378aa73f.js +++ b/src/ui/dist/assets/PlaylistItem-48685cba.js @@ -1 +1 @@ -import{i as S,k as x,q as p,o as y,f as v,w as k,g as u,cJ as A,u as I,cq as T,x as B,cK as j,c9 as q,a as r,cb as D,y as M,_ as N,C as O,h as V,p as E,e as _,d as b,c as H,t as g}from"./index-8ac6a0d2.js";import{p as L}from"./playerInPicture-af203fdf.js";const F=r("br",null,null,-1),J=S({__name:"ImportSpotifyPlaylist",props:{playlist:{type:Object,required:!0}},setup(n,{expose:c}){const e=x(),l=n,d=p([{name:"playlist",type:"dropdown",required:!0,value:null,options:e.playlistsAsDropdown}]),o=p(null),i=p(null),s=p([]),m=async()=>{if(o.value.load(),s.value.length==0){const t=l.playlist.id==="liked"?"/api/spotify/tracks":`/api/spotify/playlists/${l.playlist.id}`,a=await fetch(t);s.value=await a.json()}o.value.show()},f=()=>{L("Spotify Playlist",l.playlist.name,l.playlist.href)},h=async t=>{if(t==="new"){const a=await M("classic",l.playlist.name,l.playlist.description,l.playlist.cover);return d.value[0].options=e.playlistsAsDropdown,d.value[0].value=a,a}return t},w=async(t,a=null)=>{s.value[t].added||(a??(a=i.value.toObject().playlist),a=await h(a),await D(a,s.value[t]),s.value[t].added=!0)},P=async()=>{let t=i.value.toObject().playlist;t=await h(t),s.value.forEach((a,C)=>{w(C,t)})};return c({show:m}),(t,a)=>(y(),v(q,{ref_key:"modal",ref:o,submit:{label:"Add All",icon:"add"},name:"Import Playlist",onClose:a[0]||(a[0]=C=>t.$emit("close")),onSubmit:P},{default:k(()=>[u(A,{cover:n.playlist.cover,icons:[{name:"share",onClick:()=>I(T)(n.playlist.href)},{name:"play_arrow",onClick:f}],title:n.playlist.name},null,8,["cover","icons","title"]),u(B,{ref_key:"form",ref:i,options:d.value},null,8,["options"]),F,u(j,{songs:s.value,onAdd:w},null,8,["songs"])]),_:1},512))}});const K={components:{Card:O,Cover:V,AddPlaylistToPlaylist:J},name:"PlaylistItem",methods:{parseCover:E,redirect(){this.spotify?this.$refs.import.show():this.$router.push(this.href)}},props:{cover:String,title:String,description:String,href:String,spotify:Boolean,id:String,type:{type:String,default:"classic"}}},W={class:"title"},z={key:0,class:"material-symbols-rounded"},G=["innerHTML"];function Q(n,c,e,l,d,o){const i=_("add-playlist-to-playlist"),s=_("Cover"),m=_("Card");return y(),v(m,{class:"wrapper drop-shadow-md","with-hover":""},{default:k(()=>[e.spotify?(y(),v(i,{key:0,ref:"import",playlist:{cover:e.cover,name:e.title,description:e.description,id:e.id,href:e.href}},null,8,["playlist"])):b("",!0),r("div",{class:"item",onClick:c[0]||(c[0]=(...f)=>o.redirect&&o.redirect(...f))},[u(s,{src:o.parseCover(e.cover),type:"playlist",name:e.title},null,8,["src","name"]),r("div",W,[e.type!="classic"?(y(),H("span",z,g(e.type=="smart"?"neurology":"bolt"),1)):b("",!0),r("h4",null,g(e.title),1)]),r("p",{class:"text-muted text-xs hideIfMobile",innerHTML:e.description},null,8,G)])]),_:1})}const X=N(K,[["render",Q],["__scopeId","data-v-254ebb4a"]]);export{X as P}; +import{i as S,k as x,q as p,o as y,f as v,w as k,g as u,cJ as A,u as I,cq as T,x as B,cK as j,c9 as q,a as r,cb as D,y as M,_ as N,C as O,h as V,p as E,e as _,d as b,c as H,t as g}from"./index-9ce0501a.js";import{p as L}from"./playerInPicture-af203fdf.js";const F=r("br",null,null,-1),J=S({__name:"ImportSpotifyPlaylist",props:{playlist:{type:Object,required:!0}},setup(n,{expose:c}){const e=x(),l=n,d=p([{name:"playlist",type:"dropdown",required:!0,value:null,options:e.playlistsAsDropdown}]),o=p(null),i=p(null),s=p([]),m=async()=>{if(o.value.load(),s.value.length==0){const t=l.playlist.id==="liked"?"/api/spotify/tracks":`/api/spotify/playlists/${l.playlist.id}`,a=await fetch(t);s.value=await a.json()}o.value.show()},f=()=>{L("Spotify Playlist",l.playlist.name,l.playlist.href)},h=async t=>{if(t==="new"){const a=await M("classic",l.playlist.name,l.playlist.description,l.playlist.cover);return d.value[0].options=e.playlistsAsDropdown,d.value[0].value=a,a}return t},w=async(t,a=null)=>{s.value[t].added||(a??(a=i.value.toObject().playlist),a=await h(a),await D(a,s.value[t]),s.value[t].added=!0)},P=async()=>{let t=i.value.toObject().playlist;t=await h(t),s.value.forEach((a,C)=>{w(C,t)})};return c({show:m}),(t,a)=>(y(),v(q,{ref_key:"modal",ref:o,submit:{label:"Add All",icon:"add"},name:"Import Playlist",onClose:a[0]||(a[0]=C=>t.$emit("close")),onSubmit:P},{default:k(()=>[u(A,{cover:n.playlist.cover,icons:[{name:"share",onClick:()=>I(T)(n.playlist.href)},{name:"play_arrow",onClick:f}],title:n.playlist.name},null,8,["cover","icons","title"]),u(B,{ref_key:"form",ref:i,options:d.value},null,8,["options"]),F,u(j,{songs:s.value,onAdd:w},null,8,["songs"])]),_:1},512))}});const K={components:{Card:O,Cover:V,AddPlaylistToPlaylist:J},name:"PlaylistItem",methods:{parseCover:E,redirect(){this.spotify?this.$refs.import.show():this.$router.push(this.href)}},props:{cover:String,title:String,description:String,href:String,spotify:Boolean,id:String,type:{type:String,default:"classic"}}},W={class:"title"},z={key:0,class:"material-symbols-rounded"},G=["innerHTML"];function Q(n,c,e,l,d,o){const i=_("add-playlist-to-playlist"),s=_("Cover"),m=_("Card");return y(),v(m,{class:"wrapper drop-shadow-md","with-hover":""},{default:k(()=>[e.spotify?(y(),v(i,{key:0,ref:"import",playlist:{cover:e.cover,name:e.title,description:e.description,id:e.id,href:e.href}},null,8,["playlist"])):b("",!0),r("div",{class:"item",onClick:c[0]||(c[0]=(...f)=>o.redirect&&o.redirect(...f))},[u(s,{src:o.parseCover(e.cover),type:"playlist",name:e.title},null,8,["src","name"]),r("div",W,[e.type!="classic"?(y(),H("span",z,g(e.type=="smart"?"neurology":"bolt"),1)):b("",!0),r("h4",null,g(e.title),1)]),r("p",{class:"text-muted text-xs hideIfMobile",innerHTML:e.description},null,8,G)])]),_:1})}const X=N(K,[["render",Q],["__scopeId","data-v-254ebb4a"]]);export{X as P}; diff --git a/src/ui/dist/assets/PlaylistItem-48685cba.js.gz b/src/ui/dist/assets/PlaylistItem-48685cba.js.gz new file mode 100644 index 000000000..6e1830652 Binary files /dev/null and b/src/ui/dist/assets/PlaylistItem-48685cba.js.gz differ diff --git a/src/ui/dist/assets/Playlists-152359c7.js.gz b/src/ui/dist/assets/Playlists-152359c7.js.gz deleted file mode 100644 index 963fc5f6b..000000000 Binary files a/src/ui/dist/assets/Playlists-152359c7.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Playlists-152359c7.js b/src/ui/dist/assets/Playlists-f552ebd0.js similarity index 80% rename from src/ui/dist/assets/Playlists-152359c7.js rename to src/ui/dist/assets/Playlists-f552ebd0.js index f91831789..9422c33ad 100644 --- a/src/ui/dist/assets/Playlists-152359c7.js +++ b/src/ui/dist/assets/Playlists-f552ebd0.js @@ -1 +1 @@ -import{F as p}from"./FullShelf-006a7dde.js";import{P as r}from"./PlaylistItem-378aa73f.js";import{C as h}from"./CollectionHeader-eecd1a8a.js";import{i as v,k as m,D as k,q as g,o as e,c as l,g as d,a as P,f as a,w as n,F as u,j as y,d as _,_ as x}from"./index-8ac6a0d2.js";import"./playerInPicture-af203fdf.js";const C={class:"padding-20"},F={class:"playlists"},B=v({__name:"Playlists",setup(S){const f=m(),c=k(()=>f.playlists),o=g([]);return fetch("/api/spotify/playlists").then(s=>s.json()).then(s=>{o.value=s}),(s,I)=>(e(),l("div",C,[d(h),P("div",F,[c.value.length?(e(),a(p,{key:0,heading:"Playlists"},{default:n(()=>[(e(!0),l(u,null,y(c.value,(t,i)=>(e(),a(r,{key:i,href:t.href,cover:t.cover,description:t.description,title:t.name,type:t.type,spotify:!1},null,8,["href","cover","description","title","type"]))),128))]),_:1})):_("",!0),o.value.length?(e(),a(p,{key:1,heading:"Import From Spotify"},{default:n(()=>[d(r,{title:"Liked",description:"your liked tracks",spotify:!0,id:"liked"}),(e(!0),l(u,null,y(o.value,(t,i)=>(e(),a(r,{key:i,cover:t.cover,description:t.description,title:t.name,id:t.id,spotify:!0,href:`https://open.spotify.com/playlist/${t.id}`},null,8,["cover","description","title","id","href"]))),128))]),_:1})):_("",!0)])]))}});const D=x(B,[["__scopeId","data-v-b823c599"]]);export{D as default}; +import{F as p}from"./FullShelf-ee955822.js";import{P as r}from"./PlaylistItem-48685cba.js";import{C as h}from"./CollectionHeader-65e61737.js";import{i as v,k as m,D as k,q as g,o as e,c as l,g as d,a as P,f as a,w as n,F as u,j as y,d as _,_ as x}from"./index-9ce0501a.js";import"./playerInPicture-af203fdf.js";const C={class:"padding-20"},F={class:"playlists"},B=v({__name:"Playlists",setup(S){const f=m(),c=k(()=>f.playlists),o=g([]);return fetch("/api/spotify/playlists").then(s=>s.json()).then(s=>{o.value=s}),(s,I)=>(e(),l("div",C,[d(h),P("div",F,[c.value.length?(e(),a(p,{key:0,heading:"Playlists"},{default:n(()=>[(e(!0),l(u,null,y(c.value,(t,i)=>(e(),a(r,{key:i,href:t.href,cover:t.cover,description:t.description,title:t.name,type:t.type,spotify:!1},null,8,["href","cover","description","title","type"]))),128))]),_:1})):_("",!0),o.value.length?(e(),a(p,{key:1,heading:"Import From Spotify"},{default:n(()=>[d(r,{title:"Liked",description:"your liked tracks",spotify:!0,id:"liked"}),(e(!0),l(u,null,y(o.value,(t,i)=>(e(),a(r,{key:i,cover:t.cover,description:t.description,title:t.name,id:t.id,spotify:!0,href:`https://open.spotify.com/playlist/${t.id}`},null,8,["cover","description","title","id","href"]))),128))]),_:1})):_("",!0)])]))}});const D=x(B,[["__scopeId","data-v-b823c599"]]);export{D as default}; diff --git a/src/ui/dist/assets/Playlists-f552ebd0.js.gz b/src/ui/dist/assets/Playlists-f552ebd0.js.gz new file mode 100644 index 000000000..97983aa97 Binary files /dev/null and b/src/ui/dist/assets/Playlists-f552ebd0.js.gz differ diff --git a/src/ui/dist/assets/Releases-af8ef2a4.js.gz b/src/ui/dist/assets/Releases-af8ef2a4.js.gz deleted file mode 100644 index 82a1031d4..000000000 Binary files a/src/ui/dist/assets/Releases-af8ef2a4.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Releases-af8ef2a4.js b/src/ui/dist/assets/Releases-c156a97c.js similarity index 98% rename from src/ui/dist/assets/Releases-af8ef2a4.js rename to src/ui/dist/assets/Releases-c156a97c.js index 7334d767c..2dc508ae7 100644 --- a/src/ui/dist/assets/Releases-af8ef2a4.js +++ b/src/ui/dist/assets/Releases-c156a97c.js @@ -1 +1 @@ -import{i as Q,q as p,s as z,G as w,D as T,E as G,o as u,c,g as m,L as H,d,a as s,f as B,K as U,h as Y,M as A,N as F,t as C,J as x,w as W,O as y,b as X,F as L,j as Z,C as ee,Q as O,m as te,n as se,_ as le}from"./index-8ac6a0d2.js";import{C as ae}from"./CollectionHeader-eecd1a8a.js";import{p as oe}from"./playerInPicture-af203fdf.js";const I=g=>(te("data-v-777ab322"),g=g(),se(),g),re={key:0,class:"fill-page"},ne={class:"p-4 overflow-hidden h-full"},ue={class:"releases w-full"},ie={class:"current"},ce={key:0,class:"w-max flex flex-col gap-4"},de={class:"flex justify-between w-full items-center"},ve={class:"flex gap-4 items-center"},pe={class:"info"},me={key:0},fe={key:1,class:"m-0 text-muted text-sm"},_e=["title"],he={class:"actions"},xe={key:1,class:"h-96 flex flex-col justify-center"},ye=I(()=>s("span",{class:"italic text-sm text-muted"}," Nothing to preview ",-1)),ge=[ye],ke={class:"flex items-center gap-4 w-max"},we={key:0,class:"flex justify-end mb-2"},Ce=I(()=>s("span",{class:"material-symbols-rounded"}," done_all ",-1)),be={class:"entries overflow-y-auto flex flex-col gap-2"},De=["onClick"],$e={class:"info overflow-hidden"},Re={class:"m-0 overflow-hidden"},Se={class:"m-0 overflow-hidden text-sm text-muted"},Me=["title"],Ie=["onClick"],Ee=["onClick"],Ne=["onClick"],qe={key:1,class:"flex flex-col items-center"},je=I(()=>s("span",{class:"italic text-sm text-muted"}," No releases in this queue ",-1)),Pe=[je],S="reap.releases.seen",M="reap.releases.remember",Te=Q({__name:"Releases",setup(g){const b=p(!0),r=p("unseen"),E=t=>{const e=new Date(t),o=Math.floor((Date.now()-e.getTime())/1e3/60/60/24);return o==0?"Today":o==1?"Yesterday":o<100?`${o} days ago`:o<365?`${Math.floor(o/30)} months ago`:e.toLocaleDateString()},V=z();w(r,t=>{const e={queue:t};V.replace({query:e})});const _=T(()=>{switch(r.value){case"unseen":return h.value.filter(t=>!v.value.includes(t.url));case"out-today":return J.value;case"watching":return i.value;case"all":return h.value;case"seen":return v.value.map(t=>h.value.find(e=>e.url==t)).filter(t=>t)}}),D=t=>{oe(t.artist,t.title,t.url)},n=p(null),N=p(null),$=new Date,h=p([]),q=t=>{n.value=t,O(()=>{var e;(e=N.value)==null||e.show()})},J=T(()=>h.value.filter(t=>{const e=new Date(t.releaseDate);return $.getMonth()==e.getMonth()&&$.getDate()==e.getDate()&&$.getFullYear()==e.getFullYear()})),j=t=>{i.value.find(e=>e.url==t.url)||i.value.push(t)},P=t=>{i.value=i.value.filter(e=>e.url!=t.url)},R=t=>{var o;let e=!1;t.url===((o=a.value)==null?void 0:o.url)&&(e=!0),v.value.includes(t.url)||v.value.push(t.url),e&&O(()=>D(a.value))},v=p([]),i=p([]),a=p(null);return G(async()=>{var e;b.value=!0;const t=await fetch("/api/releases");h.value=await t.json(),b.value=!1,v.value=((e=localStorage.getItem(S))==null?void 0:e.split(","))??[],v.value=v.value.filter(o=>h.value.find(k=>k.url==o)),i.value=JSON.parse(localStorage.getItem(M)??"[]")}),w(_,t=>{a.value=t[0]??null}),w(v,t=>{t.length?localStorage.setItem(S,t.join(",")):localStorage.removeItem(S)},{deep:!0}),w(i,t=>{t.length?localStorage.setItem(M,JSON.stringify(t)):localStorage.removeItem(M)},{deep:!0}),(t,e)=>{var o,k;return u(),c(L,null,[b.value?(u(),c("div",re,[m(H)])):d("",!0),s("div",ne,[n.value?(u(),B(U,{key:0,id:(o=n.value.url)==null?void 0:o.replace("https://open.spotify.com/album/",""),ref_key:"addReleaseRef",ref:N,album:{id:(k=n.value.url)==null?void 0:k.replace("https://open.spotify.com/album/",""),title:n.value.title,artist:n.value.artists.join(", "),cover:n.value.cover,href:n.value.url,releaseDate:n.value.releaseDate},artist:n.value.artist,cover:n.value.cover,href:n.value.url,title:n.value.title},null,8,["id","album","artist","cover","href","title"])):d("",!0),m(ae),s("div",ue,[s("div",ie,[a.value?(u(),c("div",ce,[a.value?(u(),B(Y,{key:0,class:"rounded-3xl",src:a.value.cover},null,8,["src"])):d("",!0),s("div",de,[s("div",ve,[s("span",{class:"preview material-symbols-rounded ms-fill text-5xl cursor-pointer",onClick:e[0]||(e[0]=l=>D(a.value))}," play_circle "),s("div",pe,[a.value?(u(),c("h3",me,[m(A,{text:a.value.title},null,8,["text"])])):d("",!0),a.value?(u(),c("p",fe,[m(F,{artist:a.value.artist},null,8,["artist"])])):d("",!0),a.value?(u(),c("p",{key:2,class:"m-0 text-muted text-xs",title:a.value.releaseDate},C(E(a.value.releaseDate)),9,_e)):d("",!0)])]),s("div",he,[s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:e[1]||(e[1]=x(l=>q(a.value),["stop"])),title:"Add to playlist"}," add "),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:e[2]||(e[2]=x(l=>i.value.find(f=>f.url===a.value.url)?P(a.value):j(a.value),["stop"])),title:"Pin"},C(i.value.find(l=>l.url===a.value.url)?"playlist_remove":"push_pin"),1),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:e[3]||(e[3]=x(l=>R(a.value),["stop"])),title:"Mark as seen"}," done_all ")])])])):(u(),c("div",xe,ge))]),m(ee,{class:"queue w-full p-2 h-full flex flex-col gap-2 relative"},{default:W(()=>[s("div",ke,[s("h5",{class:y(["cursor-pointer",{selected:r.value=="unseen"}]),onClick:e[4]||(e[4]=l=>r.value="unseen")}," Unseen ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="out-today"}]),onClick:e[5]||(e[5]=l=>r.value="out-today")}," Out Today ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="watching"}]),onClick:e[6]||(e[6]=l=>r.value="watching")}," Pinned ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="seen"}]),onClick:e[7]||(e[7]=l=>r.value="seen")}," Seen ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="all"}]),onClick:e[8]||(e[8]=l=>r.value="all")}," All ",2)]),r.value==="unseen"&&_.value.length?(u(),c("div",we,[s("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:e[9]||(e[9]=l=>_.value.forEach(R))},[X(" Mark all as seen "),Ce])])):d("",!0),s("div",be,[_.value.length?(u(!0),c(L,{key:0},Z(_.value,l=>(u(),c("div",{class:"entry",onClick:f=>{a.value=l,D(l)}},[m(Y,{class:"rounded-xl",src:l.cover},null,8,["src"]),s("div",$e,[s("p",Re,[m(A,{text:l.title},null,8,["text"])]),s("p",Se,[m(F,{artist:l.artist},null,8,["artist"])])]),s("p",{class:"text-sm m-0 text-muted",title:l.releaseDate},C(E(l.releaseDate)),9,Me),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:x(f=>q(l),["stop"]),title:"Add to playlist"}," add ",8,Ie),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:x(f=>i.value.find(K=>K.url===l.url)?P(l):j(l),["stop"]),title:"Pin"},C(i.value.find(f=>f.url===l.url)?"playlist_remove":"push_pin"),9,Ee),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:x(f=>R(l),["stop"]),title:"Mark as seen"}," done_all ",8,Ne)],8,De))),256)):d("",!0)]),_.value.length?d("",!0):(u(),c("div",qe,Pe))]),_:1})])])],64)}}});const Fe=le(Te,[["__scopeId","data-v-777ab322"]]);export{Fe as default}; +import{i as Q,q as p,s as z,G as w,D as T,E as G,o as u,c,g as m,L as H,d,a as s,f as B,K as U,h as Y,M as A,N as F,t as C,J as x,w as W,O as y,b as X,F as L,j as Z,C as ee,Q as O,m as te,n as se,_ as le}from"./index-9ce0501a.js";import{C as ae}from"./CollectionHeader-65e61737.js";import{p as oe}from"./playerInPicture-af203fdf.js";const I=g=>(te("data-v-777ab322"),g=g(),se(),g),re={key:0,class:"fill-page"},ne={class:"p-4 overflow-hidden h-full"},ue={class:"releases w-full"},ie={class:"current"},ce={key:0,class:"w-max flex flex-col gap-4"},de={class:"flex justify-between w-full items-center"},ve={class:"flex gap-4 items-center"},pe={class:"info"},me={key:0},fe={key:1,class:"m-0 text-muted text-sm"},_e=["title"],he={class:"actions"},xe={key:1,class:"h-96 flex flex-col justify-center"},ye=I(()=>s("span",{class:"italic text-sm text-muted"}," Nothing to preview ",-1)),ge=[ye],ke={class:"flex items-center gap-4 w-max"},we={key:0,class:"flex justify-end mb-2"},Ce=I(()=>s("span",{class:"material-symbols-rounded"}," done_all ",-1)),be={class:"entries overflow-y-auto flex flex-col gap-2"},De=["onClick"],$e={class:"info overflow-hidden"},Re={class:"m-0 overflow-hidden"},Se={class:"m-0 overflow-hidden text-sm text-muted"},Me=["title"],Ie=["onClick"],Ee=["onClick"],Ne=["onClick"],qe={key:1,class:"flex flex-col items-center"},je=I(()=>s("span",{class:"italic text-sm text-muted"}," No releases in this queue ",-1)),Pe=[je],S="reap.releases.seen",M="reap.releases.remember",Te=Q({__name:"Releases",setup(g){const b=p(!0),r=p("unseen"),E=t=>{const e=new Date(t),o=Math.floor((Date.now()-e.getTime())/1e3/60/60/24);return o==0?"Today":o==1?"Yesterday":o<100?`${o} days ago`:o<365?`${Math.floor(o/30)} months ago`:e.toLocaleDateString()},V=z();w(r,t=>{const e={queue:t};V.replace({query:e})});const _=T(()=>{switch(r.value){case"unseen":return h.value.filter(t=>!v.value.includes(t.url));case"out-today":return J.value;case"watching":return i.value;case"all":return h.value;case"seen":return v.value.map(t=>h.value.find(e=>e.url==t)).filter(t=>t)}}),D=t=>{oe(t.artist,t.title,t.url)},n=p(null),N=p(null),$=new Date,h=p([]),q=t=>{n.value=t,O(()=>{var e;(e=N.value)==null||e.show()})},J=T(()=>h.value.filter(t=>{const e=new Date(t.releaseDate);return $.getMonth()==e.getMonth()&&$.getDate()==e.getDate()&&$.getFullYear()==e.getFullYear()})),j=t=>{i.value.find(e=>e.url==t.url)||i.value.push(t)},P=t=>{i.value=i.value.filter(e=>e.url!=t.url)},R=t=>{var o;let e=!1;t.url===((o=a.value)==null?void 0:o.url)&&(e=!0),v.value.includes(t.url)||v.value.push(t.url),e&&O(()=>D(a.value))},v=p([]),i=p([]),a=p(null);return G(async()=>{var e;b.value=!0;const t=await fetch("/api/releases");h.value=await t.json(),b.value=!1,v.value=((e=localStorage.getItem(S))==null?void 0:e.split(","))??[],v.value=v.value.filter(o=>h.value.find(k=>k.url==o)),i.value=JSON.parse(localStorage.getItem(M)??"[]")}),w(_,t=>{a.value=t[0]??null}),w(v,t=>{t.length?localStorage.setItem(S,t.join(",")):localStorage.removeItem(S)},{deep:!0}),w(i,t=>{t.length?localStorage.setItem(M,JSON.stringify(t)):localStorage.removeItem(M)},{deep:!0}),(t,e)=>{var o,k;return u(),c(L,null,[b.value?(u(),c("div",re,[m(H)])):d("",!0),s("div",ne,[n.value?(u(),B(U,{key:0,id:(o=n.value.url)==null?void 0:o.replace("https://open.spotify.com/album/",""),ref_key:"addReleaseRef",ref:N,album:{id:(k=n.value.url)==null?void 0:k.replace("https://open.spotify.com/album/",""),title:n.value.title,artist:n.value.artists.join(", "),cover:n.value.cover,href:n.value.url,releaseDate:n.value.releaseDate},artist:n.value.artist,cover:n.value.cover,href:n.value.url,title:n.value.title},null,8,["id","album","artist","cover","href","title"])):d("",!0),m(ae),s("div",ue,[s("div",ie,[a.value?(u(),c("div",ce,[a.value?(u(),B(Y,{key:0,class:"rounded-3xl",src:a.value.cover},null,8,["src"])):d("",!0),s("div",de,[s("div",ve,[s("span",{class:"preview material-symbols-rounded ms-fill text-5xl cursor-pointer",onClick:e[0]||(e[0]=l=>D(a.value))}," play_circle "),s("div",pe,[a.value?(u(),c("h3",me,[m(A,{text:a.value.title},null,8,["text"])])):d("",!0),a.value?(u(),c("p",fe,[m(F,{artist:a.value.artist},null,8,["artist"])])):d("",!0),a.value?(u(),c("p",{key:2,class:"m-0 text-muted text-xs",title:a.value.releaseDate},C(E(a.value.releaseDate)),9,_e)):d("",!0)])]),s("div",he,[s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:e[1]||(e[1]=x(l=>q(a.value),["stop"])),title:"Add to playlist"}," add "),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:e[2]||(e[2]=x(l=>i.value.find(f=>f.url===a.value.url)?P(a.value):j(a.value),["stop"])),title:"Pin"},C(i.value.find(l=>l.url===a.value.url)?"playlist_remove":"push_pin"),1),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:e[3]||(e[3]=x(l=>R(a.value),["stop"])),title:"Mark as seen"}," done_all ")])])])):(u(),c("div",xe,ge))]),m(ee,{class:"queue w-full p-2 h-full flex flex-col gap-2 relative"},{default:W(()=>[s("div",ke,[s("h5",{class:y(["cursor-pointer",{selected:r.value=="unseen"}]),onClick:e[4]||(e[4]=l=>r.value="unseen")}," Unseen ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="out-today"}]),onClick:e[5]||(e[5]=l=>r.value="out-today")}," Out Today ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="watching"}]),onClick:e[6]||(e[6]=l=>r.value="watching")}," Pinned ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="seen"}]),onClick:e[7]||(e[7]=l=>r.value="seen")}," Seen ",2),s("h5",{class:y(["cursor-pointer",{selected:r.value=="all"}]),onClick:e[8]||(e[8]=l=>r.value="all")}," All ",2)]),r.value==="unseen"&&_.value.length?(u(),c("div",we,[s("span",{class:"cursor-pointer text-sm text-muted hover:text-primary flex items-center gap-2",onClick:e[9]||(e[9]=l=>_.value.forEach(R))},[X(" Mark all as seen "),Ce])])):d("",!0),s("div",be,[_.value.length?(u(!0),c(L,{key:0},Z(_.value,l=>(u(),c("div",{class:"entry",onClick:f=>{a.value=l,D(l)}},[m(Y,{class:"rounded-xl",src:l.cover},null,8,["src"]),s("div",$e,[s("p",Re,[m(A,{text:l.title},null,8,["text"])]),s("p",Se,[m(F,{artist:l.artist},null,8,["artist"])])]),s("p",{class:"text-sm m-0 text-muted",title:l.releaseDate},C(E(l.releaseDate)),9,Me),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:x(f=>q(l),["stop"]),title:"Add to playlist"}," add ",8,Ie),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:x(f=>i.value.find(K=>K.url===l.url)?P(l):j(l),["stop"]),title:"Pin"},C(i.value.find(f=>f.url===l.url)?"playlist_remove":"push_pin"),9,Ee),s("span",{class:"material-symbols-rounded cursor-pointer text-muted hover:text-primary",onClick:x(f=>R(l),["stop"]),title:"Mark as seen"}," done_all ",8,Ne)],8,De))),256)):d("",!0)]),_.value.length?d("",!0):(u(),c("div",qe,Pe))]),_:1})])])],64)}}});const Fe=le(Te,[["__scopeId","data-v-777ab322"]]);export{Fe as default}; diff --git a/src/ui/dist/assets/Releases-c156a97c.js.gz b/src/ui/dist/assets/Releases-c156a97c.js.gz new file mode 100644 index 000000000..56bf5dd67 Binary files /dev/null and b/src/ui/dist/assets/Releases-c156a97c.js.gz differ diff --git a/src/ui/dist/assets/Sports-1ccf2e89.js.gz b/src/ui/dist/assets/Sports-1ccf2e89.js.gz deleted file mode 100644 index c10242037..000000000 Binary files a/src/ui/dist/assets/Sports-1ccf2e89.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Sports-1ccf2e89.js b/src/ui/dist/assets/Sports-47cd98e8.js similarity index 97% rename from src/ui/dist/assets/Sports-1ccf2e89.js rename to src/ui/dist/assets/Sports-47cd98e8.js index 13258d8d2..dc4edfaf4 100644 --- a/src/ui/dist/assets/Sports-1ccf2e89.js +++ b/src/ui/dist/assets/Sports-47cd98e8.js @@ -1 +1 @@ -import{F as C}from"./FullShelf-006a7dde.js";import{_ as k,C as D,e as v,o as p,f as w,w as M,a as o,t as _,O as A,Y as b,cw as F,c as m,g as N,F as S,j as y,d as O,m as V,n as j}from"./index-8ac6a0d2.js";const B={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 Y(e,s,t,c,n,r){const h=v("Card");return p(),w(h,{class:"itemBig","with-hover":""},{default:M(()=>{var u;return[o("div",{class:"item",onClick:s[1]||(s[1]=(...i)=>r.redirect&&r.redirect(...i))},[o("div",H,[o("p",null,_(t.competition),1),o("p",{class:A([{accent:(u=t.progress)==null?void 0:u.includes("'")},"right progress"])},_(t.progress),3)]),o("div",L,[o("p",{class:"team",innerHTML:t.team1},null,8,J),o("h4",{class:"result",innerHTML:t.result},null,8,P),o("p",{class:"team",innerHTML:t.team2},null,8,U)]),o("div",W,[o("p",$,_(t.date)+", "+_(t.href),1),o("span",{class:"deleteIcon small material-icons-round",onClick:s[0]||(s[0]=(...i)=>r.remove&&r.remove(...i))},"clear")])])]}),_:1})}const E=k(B,[["render",Y],["__scopeId","data-v-b3cf3eea"]]);const K={components:{TextInputWithIcon:b,FullShelf:C,FootballItem:E},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}F.addError("unsupported source")},addSource(){this.watchMatches.push(this.sourceToAdd),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches)),this.sourceToAdd=""},updateMatches(){if(!(this.$route.path=="/sports"||this.$route.path=="/sports/")){console.log("not update",this.$route.path);return}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("-"),r=r.replace("Today",a(i)).split("/").reverse().join("-"),r=r.replace("Tomorrow",a(l)).split("/").reverse().join("-"),r=r.replace("Yesterday",a(d)).split("/").reverse().join("-");let f=new Date(`${n}T${h}`.replace(" ","")),I=new Date(`${r}T${u}`.replace(" ",""));return f>I?-1:f==I?0:1})}),setTimeout(this.updateMatches,1e3*45)}}},T=e=>(V("data-v-2339d0be"),e=e(),j(),e),R={class:"news"},z=T(()=>o("div",{class:"padding-20"},[o("h1",null,"Sports")],-1)),q=T(()=>o("hr",null,null,-1)),G={class:"padding-20"},Q={class:"small"},X={class:"addWrapper"},Z=T(()=>o("hr",null,null,-1)),ee=["src"],te=["onClick"];function se(e,s,t,c,n,r){const h=v("TextInputWithIcon"),u=v("football-item"),i=v("full-shelf");return p(),m("div",R,[z,q,o("div",G,[o("p",Q,"Supported urls: "+_(n.supportedSources.join("*, ")),1),o("div",X,[N(h,{modelValue:n.sourceToAdd,"onUpdate:modelValue":s[0]||(s[0]=l=>n.sourceToAdd=l),icon:"link",onKeyup:e.enterText},null,8,["modelValue","onKeyup"]),o("span",{id:"addToPlaylist",class:"material-icons-outlined",onClick:s[1]||(s[1]=(...l)=>r.tryAddSource&&r.tryAddSource(...l))},"add_circle")]),Z,(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:()=>r.removeSource(a.sref,d,f)},null,8,["competition","date","href","oref","progress","result","team1","team2","onRemove"]))),128))]),_:2},1032,["heading","icon"]))),128)),r.volleyMatches.length?(p(),w(i,{key:0,heading:"Volleyball",icon:"sports_volleyball"},{default:M(()=>[(p(!0),m(S,null,y(r.volleyMatches,(l,d)=>(p(),m("div",{key:d,class:"wrapIframe"},[o("iframe",{src:`https://cev-nex.tk/#/embed?match=${l.src}`},null,8,ee),o("span",{class:"deleteIcon small material-symbols-rounded",onClick:()=>r.removeSourceD(l.ref)},"clear",8,te)]))),128))]),_:1})):O("",!0)])])}const ae=k(K,[["render",se],["__scopeId","data-v-2339d0be"]]);export{ae as default}; +import{F as C}from"./FullShelf-ee955822.js";import{_ as k,C as D,e as v,o as p,f as w,w as M,a as o,t as _,O as A,Y as b,cw as F,c as m,g as N,F as S,j as y,d as O,m as V,n as j}from"./index-9ce0501a.js";const B={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 Y(e,s,t,c,n,r){const h=v("Card");return p(),w(h,{class:"itemBig","with-hover":""},{default:M(()=>{var u;return[o("div",{class:"item",onClick:s[1]||(s[1]=(...i)=>r.redirect&&r.redirect(...i))},[o("div",H,[o("p",null,_(t.competition),1),o("p",{class:A([{accent:(u=t.progress)==null?void 0:u.includes("'")},"right progress"])},_(t.progress),3)]),o("div",L,[o("p",{class:"team",innerHTML:t.team1},null,8,J),o("h4",{class:"result",innerHTML:t.result},null,8,P),o("p",{class:"team",innerHTML:t.team2},null,8,U)]),o("div",W,[o("p",$,_(t.date)+", "+_(t.href),1),o("span",{class:"deleteIcon small material-icons-round",onClick:s[0]||(s[0]=(...i)=>r.remove&&r.remove(...i))},"clear")])])]}),_:1})}const E=k(B,[["render",Y],["__scopeId","data-v-b3cf3eea"]]);const K={components:{TextInputWithIcon:b,FullShelf:C,FootballItem:E},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}F.addError("unsupported source")},addSource(){this.watchMatches.push(this.sourceToAdd),window.localStorage.setItem("sports.watchMatches",JSON.stringify(this.watchMatches)),this.sourceToAdd=""},updateMatches(){if(!(this.$route.path=="/sports"||this.$route.path=="/sports/")){console.log("not update",this.$route.path);return}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("-"),r=r.replace("Today",a(i)).split("/").reverse().join("-"),r=r.replace("Tomorrow",a(l)).split("/").reverse().join("-"),r=r.replace("Yesterday",a(d)).split("/").reverse().join("-");let f=new Date(`${n}T${h}`.replace(" ","")),I=new Date(`${r}T${u}`.replace(" ",""));return f>I?-1:f==I?0:1})}),setTimeout(this.updateMatches,1e3*45)}}},T=e=>(V("data-v-2339d0be"),e=e(),j(),e),R={class:"news"},z=T(()=>o("div",{class:"padding-20"},[o("h1",null,"Sports")],-1)),q=T(()=>o("hr",null,null,-1)),G={class:"padding-20"},Q={class:"small"},X={class:"addWrapper"},Z=T(()=>o("hr",null,null,-1)),ee=["src"],te=["onClick"];function se(e,s,t,c,n,r){const h=v("TextInputWithIcon"),u=v("football-item"),i=v("full-shelf");return p(),m("div",R,[z,q,o("div",G,[o("p",Q,"Supported urls: "+_(n.supportedSources.join("*, ")),1),o("div",X,[N(h,{modelValue:n.sourceToAdd,"onUpdate:modelValue":s[0]||(s[0]=l=>n.sourceToAdd=l),icon:"link",onKeyup:e.enterText},null,8,["modelValue","onKeyup"]),o("span",{id:"addToPlaylist",class:"material-icons-outlined",onClick:s[1]||(s[1]=(...l)=>r.tryAddSource&&r.tryAddSource(...l))},"add_circle")]),Z,(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:()=>r.removeSource(a.sref,d,f)},null,8,["competition","date","href","oref","progress","result","team1","team2","onRemove"]))),128))]),_:2},1032,["heading","icon"]))),128)),r.volleyMatches.length?(p(),w(i,{key:0,heading:"Volleyball",icon:"sports_volleyball"},{default:M(()=>[(p(!0),m(S,null,y(r.volleyMatches,(l,d)=>(p(),m("div",{key:d,class:"wrapIframe"},[o("iframe",{src:`https://cev-nex.tk/#/embed?match=${l.src}`},null,8,ee),o("span",{class:"deleteIcon small material-symbols-rounded",onClick:()=>r.removeSourceD(l.ref)},"clear",8,te)]))),128))]),_:1})):O("",!0)])])}const ae=k(K,[["render",se],["__scopeId","data-v-2339d0be"]]);export{ae as default}; diff --git a/src/ui/dist/assets/Sports-47cd98e8.js.gz b/src/ui/dist/assets/Sports-47cd98e8.js.gz new file mode 100644 index 000000000..f3957aade Binary files /dev/null and b/src/ui/dist/assets/Sports-47cd98e8.js.gz differ diff --git a/src/ui/dist/assets/Template-432d76e5.js b/src/ui/dist/assets/Template-15080c8f.js similarity index 99% rename from src/ui/dist/assets/Template-432d76e5.js rename to src/ui/dist/assets/Template-15080c8f.js index 75d9342ab..87107751a 100644 --- a/src/ui/dist/assets/Template-432d76e5.js +++ b/src/ui/dist/assets/Template-15080c8f.js @@ -1,4 +1,4 @@ -import{a0 as Nr,a1 as Fr,a2 as jr,a3 as Lr,a4 as $r,a5 as Ur,a6 as Gr,F as He,a7 as Br,a8 as Vr,a9 as Kr,aa as Hr,ab as ur,ac as Wr,ad as Xr,ae as Yr,af as zr,ag as Jr,ah as Qr,ai as Zr,aj as kr,ak as qr,al as _r,am as to,an as eo,ao as no,D as zt,ap as ro,f as Jt,d as Rt,c as dt,a as _,aq as oo,ar as ao,as as io,at as so,au as lo,av as uo,b as ie,g as ot,aw as co,ax as fo,i as ue,ay as vo,az as po,aA as ho,aB as mo,aC as go,aD as yo,aE as bo,aF as So,aG as xo,aH as Eo,aI as Oo,aJ as To,aK as Io,aL as Po,aM as Co,aN as Do,aO as Ao,aP as wo,aQ as Ro,aR as Mo,aS as No,aT as Fo,aU as jo,aV as Lo,aW as $o,aX as Uo,aY as Go,aZ as Bo,a_ as Vo,a$ as Ko,b0 as Ho,b1 as Wo,b2 as Xo,b3 as Yo,Q as $n,O as We,b4 as zo,z as cr,b5 as Jo,b6 as Qo,b7 as Zo,b8 as ko,b9 as qo,ba as _o,E as pn,bb as ta,bc as ea,bd as na,be as ra,bf as oa,bg as aa,o as tt,n as Un,bh as ia,bi as sa,m as Gn,bj as la,bk as ua,bl as ca,q as rt,bm as fa,bn as da,j as wn,r as Bn,e as $e,bo as Vn,bp as va,bq as pa,br as ha,bs as ma,bt as ga,bu as ya,bv as ba,bw as Sa,bx as xa,by as Ea,bz as Oa,bA as Ta,t as Bt,bB as Ia,bC as Pa,bD as Ca,bE as Da,bF as Aa,bG as wa,bH as Ra,bI as Ma,u as Yt,bJ as Na,bK as Fa,bL as ja,bM as La,bN as $a,bO as Ua,bP as Ga,bQ as Ba,bR as Va,bS as Ka,bT as Ha,bU as fr,bV as dr,bW as Wa,bX as Xa,G as le,bY as vr,bZ as Ya,b_ as za,b$ as Ja,w as Mt,c0 as Qa,c1 as Xe,c2 as Rn,c3 as Za,J as me,c4 as ka,c5 as pr,c6 as qa,c7 as _a,_ as Ye,P as hr,B as ti,c8 as ei,x as ni,c9 as mr,A as ri,ca as oi,cb as ai,I as zn,k as Kn,s as gr,$ as ii,cc as Jn,cd as si,ce as li,h as ui,C as Qn,Y as ci,X as fi,cf as Zn,cg as di}from"./index-8ac6a0d2.js";import{P as vi}from"./PlaylistEntry-de6133b2.js";import{F as yn}from"./FactCard-20171310.js";import{G as pi}from"./gistClient-e7ab47a2.js";import{M as hi,_ as mi}from"./Markdown.vue_vue_type_style_index_0_lang-2360dd37.js";/** +import{a0 as Nr,a1 as Fr,a2 as jr,a3 as Lr,a4 as $r,a5 as Ur,a6 as Gr,F as He,a7 as Br,a8 as Vr,a9 as Kr,aa as Hr,ab as ur,ac as Wr,ad as Xr,ae as Yr,af as zr,ag as Jr,ah as Qr,ai as Zr,aj as kr,ak as qr,al as _r,am as to,an as eo,ao as no,D as zt,ap as ro,f as Jt,d as Rt,c as dt,a as _,aq as oo,ar as ao,as as io,at as so,au as lo,av as uo,b as ie,g as ot,aw as co,ax as fo,i as ue,ay as vo,az as po,aA as ho,aB as mo,aC as go,aD as yo,aE as bo,aF as So,aG as xo,aH as Eo,aI as Oo,aJ as To,aK as Io,aL as Po,aM as Co,aN as Do,aO as Ao,aP as wo,aQ as Ro,aR as Mo,aS as No,aT as Fo,aU as jo,aV as Lo,aW as $o,aX as Uo,aY as Go,aZ as Bo,a_ as Vo,a$ as Ko,b0 as Ho,b1 as Wo,b2 as Xo,b3 as Yo,Q as $n,O as We,b4 as zo,z as cr,b5 as Jo,b6 as Qo,b7 as Zo,b8 as ko,b9 as qo,ba as _o,E as pn,bb as ta,bc as ea,bd as na,be as ra,bf as oa,bg as aa,o as tt,n as Un,bh as ia,bi as sa,m as Gn,bj as la,bk as ua,bl as ca,q as rt,bm as fa,bn as da,j as wn,r as Bn,e as $e,bo as Vn,bp as va,bq as pa,br as ha,bs as ma,bt as ga,bu as ya,bv as ba,bw as Sa,bx as xa,by as Ea,bz as Oa,bA as Ta,t as Bt,bB as Ia,bC as Pa,bD as Ca,bE as Da,bF as Aa,bG as wa,bH as Ra,bI as Ma,u as Yt,bJ as Na,bK as Fa,bL as ja,bM as La,bN as $a,bO as Ua,bP as Ga,bQ as Ba,bR as Va,bS as Ka,bT as Ha,bU as fr,bV as dr,bW as Wa,bX as Xa,G as le,bY as vr,bZ as Ya,b_ as za,b$ as Ja,w as Mt,c0 as Qa,c1 as Xe,c2 as Rn,c3 as Za,J as me,c4 as ka,c5 as pr,c6 as qa,c7 as _a,_ as Ye,P as hr,B as ti,c8 as ei,x as ni,c9 as mr,A as ri,ca as oi,cb as ai,I as zn,k as Kn,s as gr,$ as ii,cc as Jn,cd as si,ce as li,h as ui,C as Qn,Y as ci,X as fi,cf as Zn,cg as di}from"./index-9ce0501a.js";import{P as vi}from"./PlaylistEntry-6dd545f8.js";import{F as yn}from"./FactCard-fd04f9e5.js";import{G as pi}from"./gistClient-e7b09d22.js";import{M as hi,_ as mi}from"./Markdown.vue_vue_type_style_index_0_lang-99a7139c.js";/** * vue v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT diff --git a/src/ui/dist/assets/Template-15080c8f.js.gz b/src/ui/dist/assets/Template-15080c8f.js.gz new file mode 100644 index 000000000..e908d0bd6 Binary files /dev/null and b/src/ui/dist/assets/Template-15080c8f.js.gz differ diff --git a/src/ui/dist/assets/Template-432d76e5.js.gz b/src/ui/dist/assets/Template-432d76e5.js.gz deleted file mode 100644 index 5ddbea600..000000000 Binary files a/src/ui/dist/assets/Template-432d76e5.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Track-0537b97a.js b/src/ui/dist/assets/Track-0537b97a.js new file mode 100644 index 000000000..ff2e936d5 --- /dev/null +++ b/src/ui/dist/assets/Track-0537b97a.js @@ -0,0 +1 @@ +import{i as U,q as m,G as B,E as L,o as a,c as _,_ as q,f as n,w as P,a as s,t as f,d as r,C as I,B as O,ce as R,D as A,e as K,cg as W,g as y,h as G,O as M,N as Y,b as N,u as k,F as $,ch as J,ci as Q,cj as X,ck as Z,Y as ee,j as T,cl as ae,cm as te,cn as se,co as le,cp as j,cq as oe,L as ne,m as ue,n as re}from"./index-9ce0501a.js";import{F as b}from"./FactCard-fd04f9e5.js";import{_ as ie}from"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import{s as ce}from"./spotify-b1867f20.js";const de=["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 c=v.modelValue/v.max*100;i.value.style.setProperty("--progress",`${c}%`),i.value.innerHTML=v.displayValue}};B(v,w,{deep:!0});const l=()=>{i.value&&(i.value.style.height=i.value.offsetWidth+"px")};return L(()=>{l(),w()}),window.addEventListener("resize",l),(c,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,de))}});const D=q(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 E=q(me,[["__scopeId","data-v-98bfdf17"]]),z=u=>(ue("data-v-ea0397be"),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=z(()=>s("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),qe={class:"font-bold"},Me={class:"relative w-full mt-4"},Ne={class:"spotify__features__circles"},Te={class:"text-muted mb-0 text-center text-sm capitalize flex justify-center"},je={class:"material-symbols-rounded mr-2"},De=z(()=>s("h2",{class:"!text-left"},"Similar Songs",-1)),Ee=U({__name:"Track",setup(u){const v=O(),i=R(),w=A(()=>v.params.hash),l=m(null),c=m(null),x=m("url"),e=m(null),C=m([]),S=m([]),g=m(!1),F={acousticness:"piano",danceability:"nightlife",energy:"electric_bolt",happiness:"mood",instrumentalness:"mic_off",liveness:"groups_2",speechiness:"mic",loudness:"volume_up"},V=async(d=null)=>{var 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,!!d,d),c.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:F[p]}))};L(V),B(v,()=>V(),{deep:!0}),B(c,()=>{var d,o;if(((o=(d=e.value)==null?void 0:d.spotify)==null?void 0:o.id)==j(c.value,"track")){x.value="link";return}x.value="save"});const H=()=>{if(x.value==="save"){const d=j(c.value,"track");if(!d)return;V(d);return}oe(c.value)};return(d,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(G,{src:l.value.cover,class:"max-w-sm rounded-xl"},null,8,["src"]),s("div",{class:M([{"justify-end":e.value,"justify-center":!e.value},"track__info__details flex flex-col"])},[s("div",ke,[s("h3",ge,[y(Y,{artist:l.value.artist,class:"inline"},null,8,["artist"]),s("span",be,[y(p,{to:l.value.album.href,class:"linkOnHover"},{default:P(()=>[N(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(E,{icon:"edit",label:"Edit",onClick:o[2]||(o[2]=t=>d.$refs.updatePopup.show())}),y(E,{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(Z)(e.value.spotify.releaseDate)),1),e.value.spotify.explicit?(a(),_("span",Be,"explicit")):r("",!0),s("span",Ie,[Ue,s("span",qe,f(e.value.spotify.popularity),1)])]),y(k(ce),{class:M([{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:c.value,"onUpdate:modelValue":o[5]||(o[5]=t=>c.value=t),icon:x.value,onClick:H},null,8,["modelValue","icon"])):r("",!0)])],64)):r("",!0)],2)])]),s("div",Me,[s("div",Ne,[(a(!0),_($,null,T(S.value,t=>(a(),n(I,{class:"p-2"},{default:P(()=>[t.key==="loudness"?(a(),n(D,{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(D,{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",Te,[s("span",je,f(t.icon),1),N(" "+f(t.key),1)])]),_:2},1024))),256))])]),C.value.length?(a(),n(I,{key:0,class:"p-4 mt-4"},{default:P(()=>[De,(a(!0),_($,null,T(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=q(Ee,[["__scopeId","data-v-ea0397be"]]);export{Oe as default}; diff --git a/src/ui/dist/assets/Track-0537b97a.js.gz b/src/ui/dist/assets/Track-0537b97a.js.gz new file mode 100644 index 000000000..126d37868 Binary files /dev/null and b/src/ui/dist/assets/Track-0537b97a.js.gz differ diff --git a/src/ui/dist/assets/Track-7c1d0a5c.css b/src/ui/dist/assets/Track-5eeebad7.css similarity index 55% rename from src/ui/dist/assets/Track-7c1d0a5c.css rename to src/ui/dist/assets/Track-5eeebad7.css index 1d0e1ac3a..2eb33b748 100644 --- a/src/ui/dist/assets/Track-7c1d0a5c.css +++ b/src/ui/dist/assets/Track-5eeebad7.css @@ -1 +1 @@ -.radialProgress[data-v-6e1a8d6b]{--holesize: 55%;--progress: 20%;min-width:2px;min-height:2px;display:grid;align-items:center;justify-items:center;place-items:center;position:relative}.radialProgress[data-v-6e1a8d6b]:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;border-radius:50%;background:conic-gradient(var(--fg-secondary),var(--fg-secondary),var(--fg-secondary) var(--progress),var(--fg-base-dk) var(--progress) 100%);-webkit-mask-image:radial-gradient(transparent var(--holesize),black calc(var(--holesize) + .5px));mask-image:radial-gradient(transparent var(--holesize),black calc(var(--holesize) + .5px))}span.material-symbols-rounded[data-v-98bfdf17]{font-size:3rem;border-radius:1000vmax;width:70px;line-height:70px;text-align:center;vertical-align:middle;cursor:pointer;margin-bottom:1.25rem;transition:all .2s ease-in-out}span.material-symbols-rounded[data-v-98bfdf17]:hover{background:var(--bg-hover-lt);color:var(--fg-secondary);transition:none}.track__data .spotify-enable{width:24px;height:24px;cursor:pointer}.track__data .spotify-enable path{fill:var(--fg-base)!important}.track__data .spotify-enable.enabled path{fill:var(--fg-secondary)!important}.track__data .upper[data-v-56a3b0f7]{display:grid;grid-template-columns:fit-content(100%) minmax(500px,1fr);gap:2rem}.track__data .upper .cover[data-v-56a3b0f7]{min-width:384px;aspect-ratio:1/1}@media (max-width: 1000px){.track__data .upper[data-v-56a3b0f7]{grid-template-columns:1fr;justify-items:center;overflow:hidden}.track__data .upper .cover[data-v-56a3b0f7]{min-width:20vw}.track__data .upper .track__info__details[data-v-56a3b0f7]{overflow:auto;width:100%}}.spotify-infos[data-v-56a3b0f7]{display:grid;grid-template-columns:fit-content(100%) 24px 1fr;gap:1rem;align-items:center;height:46px}.spotify-infos .meta[data-v-56a3b0f7]{display:grid;grid-template-columns:repeat(3,fit-content(100%))}.spotify-infos .meta>*[data-v-56a3b0f7]:not(:last-child){margin-right:1rem}.features div[data-v-56a3b0f7]{min-width:150px}.card p[data-v-56a3b0f7],.card h2[data-v-56a3b0f7]{text-align:center}.spotify__features__circles[data-v-56a3b0f7]{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:flex-end;gap:1rem}.spotify__features__circles div[data-v-56a3b0f7]{min-width:100px;flex:1}.spotify__features__circles .circle[data-v-56a3b0f7]{width:50%;margin-left:auto;margin-right:auto}.spotify__features__circles p[data-v-56a3b0f7]{text-align:center} +.radialProgress[data-v-6e1a8d6b]{--holesize: 55%;--progress: 20%;min-width:2px;min-height:2px;display:grid;align-items:center;justify-items:center;place-items:center;position:relative}.radialProgress[data-v-6e1a8d6b]:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;border-radius:50%;background:conic-gradient(var(--fg-secondary),var(--fg-secondary),var(--fg-secondary) var(--progress),var(--fg-base-dk) var(--progress) 100%);-webkit-mask-image:radial-gradient(transparent var(--holesize),black calc(var(--holesize) + .5px));mask-image:radial-gradient(transparent var(--holesize),black calc(var(--holesize) + .5px))}span.material-symbols-rounded[data-v-98bfdf17]{font-size:3rem;border-radius:1000vmax;width:70px;line-height:70px;text-align:center;vertical-align:middle;cursor:pointer;margin-bottom:1.25rem;transition:all .2s ease-in-out}span.material-symbols-rounded[data-v-98bfdf17]:hover{background:var(--bg-hover-lt);color:var(--fg-secondary);transition:none}.track__data .spotify-enable{width:24px;height:24px;cursor:pointer}.track__data .spotify-enable path{fill:var(--fg-base)!important}.track__data .spotify-enable.enabled path{fill:var(--fg-secondary)!important}.track__data .upper[data-v-ea0397be]{display:grid;grid-template-columns:fit-content(100%) minmax(500px,1fr);gap:2rem}.track__data .upper .cover[data-v-ea0397be]{min-width:384px;aspect-ratio:1/1}@media (max-width: 1000px){.track__data .upper[data-v-ea0397be]{grid-template-columns:1fr;justify-items:center;overflow:hidden}.track__data .upper .cover[data-v-ea0397be]{min-width:20vw}.track__data .upper .track__info__details[data-v-ea0397be]{overflow:auto;width:100%}}.spotify-infos[data-v-ea0397be]{display:grid;grid-template-columns:fit-content(100%) 24px 1fr;gap:1rem;align-items:center;height:46px}.spotify-infos .meta[data-v-ea0397be]{display:grid;grid-template-columns:repeat(3,fit-content(100%))}.spotify-infos .meta>*[data-v-ea0397be]:not(:last-child){margin-right:1rem}.features div[data-v-ea0397be]{min-width:150px}.card p[data-v-ea0397be],.card h2[data-v-ea0397be]{text-align:center}.spotify__features__circles[data-v-ea0397be]{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:flex-end;gap:1rem}.spotify__features__circles div[data-v-ea0397be]{min-width:100px;flex:1}.spotify__features__circles .circle[data-v-ea0397be]{width:50%;margin-left:auto;margin-right:auto}.spotify__features__circles p[data-v-ea0397be]{text-align:center} diff --git a/src/ui/dist/assets/Track-5eeebad7.css.gz b/src/ui/dist/assets/Track-5eeebad7.css.gz new file mode 100644 index 000000000..1f3472003 Binary files /dev/null and b/src/ui/dist/assets/Track-5eeebad7.css.gz differ diff --git a/src/ui/dist/assets/Track-794404ac.js b/src/ui/dist/assets/Track-794404ac.js deleted file mode 100644 index 92a9fa0f8..000000000 --- a/src/ui/dist/assets/Track-794404ac.js +++ /dev/null @@ -1 +0,0 @@ -import{i as I,q as m,G as P,E as D,o as t,c as _,_ as U,f as n,w as S,a as s,t as f,d as r,C as B,B as F,ce as A,D as H,cg as O,g as x,h as K,O as q,N as R,u as h,F as V,ch as W,ci as G,cj as Y,ck as J,Y as Q,j as M,b as X,cl as Z,cm as ee,cn as ae,co as te,cp as N,cq as se,L as le,m as oe,n as ne}from"./index-8ac6a0d2.js";import{F as g}from"./FactCard-20171310.js";import{_ as ue}from"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import{s as re}from"./spotify-40ad401f.js";const ie=["aria-valuemax","aria-valuenow"],ce=I({__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,c=m(null),b=()=>{if(c.value){const d=v.modelValue/v.max*100;c.value.style.setProperty("--progress",`${d}%`),c.value.innerHTML=v.displayValue}};P(v,b,{deep:!0});const l=()=>{c.value&&(c.value.style.height=c.value.offsetWidth+"px")};return D(()=>{l(),b()}),window.addEventListener("resize",l),(d,y)=>(t(),_("div",{ref_key:"radialProgress",ref:c,"aria-valuemax":u.max,"aria-valuenow":u.modelValue,"aria-valuemin":"0",class:"radialProgress",role:"progressbar"},null,8,ie))}});const T=U(ce,[["__scopeId","data-v-6e1a8d6b"]]),de={class:"material-symbols-rounded ms-fill"},pe={key:0,class:"text-muted"},_e=I({__name:"ButtonCard",props:{icon:{type:String,required:!0},label:{type:String,required:!1}},setup(u){return(v,c)=>(t(),n(B,{class:"p-4 flex flex-col w-full items-center justify-center"},{default:S(()=>[s("span",de,f(u.icon),1),u.label?(t(),_("span",pe,f(u.label),1)):r("",!0)]),_:1}))}});const j=U(_e,[["__scopeId","data-v-98bfdf17"]]),E=u=>(oe("data-v-56a3b0f7"),u=u(),ne(),u),ve={class:"track p-4"},me={key:2},fe={class:"track__data"},ye={class:"upper"},xe={class:"trac__info__details__normal"},he={class:"text-secondary my-0 text-2xl font-bold"},ke={class:"text-muted text-base ml-4 font-light"},ge={class:"flex flew-row items-center"},be={class:"font-black text-5xl ml-4"},we={key:0,class:"features flex flex-row gap-4 pt-4 pb-2 overflow-x-auto"},Ce={class:"spotify-infos mt-4"},Ve={class:"meta items-center"},$e={class:"text-muted"},Pe={key:0,class:"material-symbols-rounded ms-fill"},Se={class:"flex flex-row align-items"},Be=E(()=>s("span",{class:"material-symbols-rounded ms-fill mr-2"},"local_fire_department",-1)),Ie={class:"font-bold"},Ue={class:"relative w-full mt-4"},qe={class:"spotify__features__circles"},Me={class:"text-muted mb-0 text-center text-sm capitalize flex justify-center"},Ne={class:"material-symbols-rounded mr-2"},Te=E(()=>s("h2",{class:"!text-left"},"Similar Songs",-1)),je=I({__name:"Track",setup(u){const v=F(),c=A(),b=H(()=>v.params.hash),l=m(null),d=m(null),y=m("url"),a=m(null),w=m([]),$=m([]),k=m(!1),L={acousticness:"piano",danceability:"nightlife",energy:"electric_bolt",happiness:"mood",instrumentalness:"mic_off",liveness:"groups_2",speechiness:"mic",loudness:"volume_up"},C=async(p=null)=>{var o;l.value=null,a.value=null,w.value=[],l.value=await ee(b.value),window.document.title=`${l.value.title} - reAudioPlayer One`,a.value=await ae(l.value.id,!!p,p),d.value=`https://open.spotify.com/track/${a.value.spotify.id}`,y.value="link",k.value=((o=a.value.spotify.id)==null?void 0:o.length)==22,w.value=await te(l.value.id),$.value=[];for(let[e,i]of Object.entries(a.value.spotify.features))["key","mode","tempo","duration_ms","time_signature"].includes(e)||typeof i=="number"&&(e=e.replaceAll("_"," "),e=e.replace("valence","happiness"),e==="loudness"&&(i=60+i),$.value.push({key:e,value:i,icon:L[e]}))};D(C),P(v,()=>C(),{deep:!0}),P(d,()=>{var p,o;if(((o=(p=a.value)==null?void 0:p.spotify)==null?void 0:o.id)==N(d.value,"track")){y.value="link";return}y.value="save"});const z=()=>{if(y.value==="save"){const p=N(d.value,"track");if(!p)return;C(p);return}se(d.value)};return(p,o)=>(t(),_(V,null,[l.value?(t(),n(O,{key:0,src:l.value.cover,class:"-z-10"},null,8,["src"])):r("",!0),s("div",ve,[l.value?(t(),n(ue,{key:0,ref:"updatePopup",song:l.value,onUpdate:o[0]||(o[0]=()=>C())},null,8,["song"])):r("",!0),l.value?(t(),_("div",me,[s("div",fe,[s("div",ye,[x(K,{src:l.value.cover,class:"max-w-sm rounded-xl"},null,8,["src"]),s("div",{class:q([{"justify-end":a.value,"justify-center":!a.value},"track__info__details flex flex-col"])},[s("div",xe,[s("h3",he,[x(R,{artist:l.value.artist,class:"inline"},null,8,["artist"]),s("span",ke,f(l.value.album),1)]),s("div",ge,[s("span",{class:"text-5xl cursor-pointer material-symbols-rounded ms-fill my-auto",onClick:o[1]||(o[1]=e=>h(c).loadPlaylist("track",l.value.id))}," play_circle "),s("h1",be,f(l.value.title),1)])]),a.value&&a.value.spotify.features?(t(),_(V,{key:0},[a.value&&a.value.spotify.features?(t(),_("div",we,[a.value?(t(),n(g,{key:0,"primary-text":a.value.spotify.features.key+" "+a.value.spotify.features.mode,class:"w-full","secondary-text":"Key"},null,8,["primary-text"])):r("",!0),a.value?(t(),n(g,{key:1,"primary-text":h(W)(a.value),class:"w-full","secondary-text":"Camelot"},null,8,["primary-text"])):r("",!0),a.value?(t(),n(g,{key:2,"primary-text":Math.round(a.value.spotify.features.tempo),class:"w-full","secondary-text":"BPM"},null,8,["primary-text"])):r("",!0),x(g,{"primary-text":h(G)(l.value.duration),class:"w-full","secondary-text":"Duration"},null,8,["primary-text"]),a.value?(t(),n(g,{key:3,"primary-text":a.value.plays,class:"w-full","secondary-text":"Plays"},null,8,["primary-text"])):r("",!0),x(j,{icon:"edit",label:"Edit",onClick:o[2]||(o[2]=e=>p.$refs.updatePopup.show())}),x(j,{icon:"download",label:"Download",onClick:o[3]||(o[3]=e=>h(Y)(l.value.id))})])):r("",!0),s("div",Ce,[s("div",Ve,[s("span",$e,f(h(J)(a.value.spotify.releaseDate)),1),a.value.spotify.explicit?(t(),_("span",Pe,"explicit")):r("",!0),s("span",Se,[Be,s("span",Ie,f(a.value.spotify.popularity),1)])]),x(h(re),{class:q([{enabled:k.value},"spotify-enable"]),onClick:o[4]||(o[4]=e=>k.value=!k.value)},null,8,["class"]),k.value?(t(),n(Q,{key:0,modelValue:d.value,"onUpdate:modelValue":o[5]||(o[5]=e=>d.value=e),icon:y.value,onClick:z},null,8,["modelValue","icon"])):r("",!0)])],64)):r("",!0)],2)])]),s("div",Ue,[s("div",qe,[(t(!0),_(V,null,M($.value,e=>(t(),n(B,{class:"p-2"},{default:S(()=>[e.key==="loudness"?(t(),n(T,{key:0,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,"display-value":Math.round(-60+e.value)+"dB",class:"circle",max:"60"},null,8,["modelValue","onUpdate:modelValue","display-value"])):(t(),n(T,{key:1,modelValue:e.value,"onUpdate:modelValue":i=>e.value=i,"display-value":Math.round(e.value*100)+"%",class:"circle",max:"1"},null,8,["modelValue","onUpdate:modelValue","display-value"])),s("p",Me,[s("span",Ne,f(e.icon),1),X(" "+f(e.key),1)])]),_:2},1024))),256))])]),w.value.length?(t(),n(B,{key:0,class:"p-4 mt-4"},{default:S(()=>[Te,(t(!0),_(V,null,M(w.value,(e,i)=>(t(),n(Z,{key:i,index:i,song:e,"can-import":"","cannot-add":"","with-album":"","with-cover":""},null,8,["index","song"]))),128))]),_:1})):r("",!0)])):(t(),n(le,{key:1}))])],64))}});const Fe=U(je,[["__scopeId","data-v-56a3b0f7"]]);export{Fe as default}; diff --git a/src/ui/dist/assets/Track-794404ac.js.gz b/src/ui/dist/assets/Track-794404ac.js.gz deleted file mode 100644 index 5161cf8a0..000000000 Binary files a/src/ui/dist/assets/Track-794404ac.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Track-7c1d0a5c.css.gz b/src/ui/dist/assets/Track-7c1d0a5c.css.gz deleted file mode 100644 index d183df692..000000000 Binary files a/src/ui/dist/assets/Track-7c1d0a5c.css.gz and /dev/null differ diff --git a/src/ui/dist/assets/TrackCompact-89783a72.js b/src/ui/dist/assets/TrackCompact-8352124a.js similarity index 94% rename from src/ui/dist/assets/TrackCompact-89783a72.js rename to src/ui/dist/assets/TrackCompact-8352124a.js index 439545117..13e5ee5e4 100644 --- a/src/ui/dist/assets/TrackCompact-89783a72.js +++ b/src/ui/dist/assets/TrackCompact-8352124a.js @@ -1 +1 @@ -import{_ as T,s as B,A as D,q as n,G as H,D as N,cx as i,e as M,o as r,c as b,f as d,K as O,d as p,cy as R,g as l,w as u,a,z as V,u as _,M as S,t as q,C as z,m as A,n as E}from"./index-8ac6a0d2.js";const G=e=>(A("data-v-d34b4deb"),e=e(),E(),e),K={class:"home-track-compact-wrapper"},P=["src"],j=G(()=>a("div",{class:"play"},[a("span",{class:"material-symbols-rounded"},"play_arrow")],-1)),F={class:"info"},J={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,x=C,w=B(),m=`/track/${D(String(t.id))}`,f=n(null),h=n(null),I=c=>{c.stopPropagation(),x("play")},$=()=>{var c,o;if(!((c=t==null?void 0:t.href)!=null&&c.includes("spotify.com"))){w.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=M("router-link");return r(),b("div",K,[(y=e.href)!=null&&y.includes("spotify.com/album/")?(r(),d(O,{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(R,{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(z,{class:"home-track-compact","with-hover":"",onClick:$},{default:u(()=>[a("div",{style:V({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,P),j],4),a("div",F,[a("span",J,[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,q(e.artist),1)]),_:1},8,["to"])])]),_:1})])}}},Z=T(U,[["__scopeId","data-v-d34b4deb"]]);export{Z as T}; +import{_ as T,s as B,A as D,q as n,G as H,D as N,cx as i,e as M,o as r,c as b,f as d,K as O,d as p,cy as R,g as l,w as u,a,z as V,u as _,M as S,t as q,C as z,m as A,n as E}from"./index-9ce0501a.js";const G=e=>(A("data-v-d34b4deb"),e=e(),E(),e),K={class:"home-track-compact-wrapper"},P=["src"],j=G(()=>a("div",{class:"play"},[a("span",{class:"material-symbols-rounded"},"play_arrow")],-1)),F={class:"info"},J={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,x=C,w=B(),m=`/track/${D(String(t.id))}`,f=n(null),h=n(null),I=c=>{c.stopPropagation(),x("play")},$=()=>{var c,o;if(!((c=t==null?void 0:t.href)!=null&&c.includes("spotify.com"))){w.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=M("router-link");return r(),b("div",K,[(y=e.href)!=null&&y.includes("spotify.com/album/")?(r(),d(O,{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(R,{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(z,{class:"home-track-compact","with-hover":"",onClick:$},{default:u(()=>[a("div",{style:V({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,P),j],4),a("div",F,[a("span",J,[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,q(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-8352124a.js.gz b/src/ui/dist/assets/TrackCompact-8352124a.js.gz new file mode 100644 index 000000000..dd343313c Binary files /dev/null and b/src/ui/dist/assets/TrackCompact-8352124a.js.gz differ diff --git a/src/ui/dist/assets/TrackCompact-89783a72.js.gz b/src/ui/dist/assets/TrackCompact-89783a72.js.gz deleted file mode 100644 index cf64a543a..000000000 Binary files a/src/ui/dist/assets/TrackCompact-89783a72.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Welcome-7b34553a.js.gz b/src/ui/dist/assets/Welcome-7b34553a.js.gz deleted file mode 100644 index fcaab352f..000000000 Binary files a/src/ui/dist/assets/Welcome-7b34553a.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/Welcome-7b34553a.js b/src/ui/dist/assets/Welcome-9add315f.js similarity index 98% rename from src/ui/dist/assets/Welcome-7b34553a.js rename to src/ui/dist/assets/Welcome-9add315f.js index a083715a8..4d1402f4d 100644 --- a/src/ui/dist/assets/Welcome-7b34553a.js +++ b/src/ui/dist/assets/Welcome-9add315f.js @@ -1 +1 @@ -import{_ as p,cu as r,o as i,c,a as e,O as v,cG as C,v as g,cH as S,F as T,j as k,b as u,c1 as h,bU as _,d as b,e as w,f as I,m as R,n as x}from"./index-8ac6a0d2.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"},U=t(()=>e("p",null,"Welcome to",-1)),D=t(()=>e("h1",null,"reAudioPlayer ONE",-1)),F=[U,D],H={key:1,class:"first centred-column"},L=t(()=>e("p",null,"The free audio player with the most extensive catalogue",-1)),P=t(()=>e("h1",null,"ARE YOU READY?",-1)),W=[L,P],G={key:2,class:"first centred-column"},M=t(()=>e("h1",null,"Almost There",-1)),j=t(()=>e("p",null,"After a few configurations you're ready to go",-1)),z=[M,j],J={key:3,class:"permanent centred-column"},q=t(()=>e("h1",null,"Pick a Theme",-1)),K=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=w("theme-small");return i(),c("div",V,[o.mode==0?(i(),c("div",Y,F)):o.mode==1?(i(),c("div",H,W)):o.mode==2?(i(),c("div",G,z)):o.mode==3?(i(),c("div",J,[q,K,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)):b("",!0)])}const Ce=p(O,[["render",ye],["__scopeId","data-v-9aa97202"]]);export{Ce as default}; +import{_ as p,cu as r,o as i,c,a as e,O as v,cG as C,v as g,cH as S,F as T,j as k,b as u,c1 as h,bU as _,d as b,e as w,f as I,m as R,n as x}from"./index-9ce0501a.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"},U=t(()=>e("p",null,"Welcome to",-1)),D=t(()=>e("h1",null,"reAudioPlayer ONE",-1)),F=[U,D],H={key:1,class:"first centred-column"},L=t(()=>e("p",null,"The free audio player with the most extensive catalogue",-1)),P=t(()=>e("h1",null,"ARE YOU READY?",-1)),W=[L,P],G={key:2,class:"first centred-column"},M=t(()=>e("h1",null,"Almost There",-1)),j=t(()=>e("p",null,"After a few configurations you're ready to go",-1)),z=[M,j],J={key:3,class:"permanent centred-column"},q=t(()=>e("h1",null,"Pick a Theme",-1)),K=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=w("theme-small");return i(),c("div",V,[o.mode==0?(i(),c("div",Y,F)):o.mode==1?(i(),c("div",H,W)):o.mode==2?(i(),c("div",G,z)):o.mode==3?(i(),c("div",J,[q,K,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)):b("",!0)])}const Ce=p(O,[["render",ye],["__scopeId","data-v-9aa97202"]]);export{Ce as default}; diff --git a/src/ui/dist/assets/Welcome-9add315f.js.gz b/src/ui/dist/assets/Welcome-9add315f.js.gz new file mode 100644 index 000000000..84c4b7c6a Binary files /dev/null and b/src/ui/dist/assets/Welcome-9add315f.js.gz differ diff --git a/src/ui/dist/assets/gistClient-e7ab47a2.js.gz b/src/ui/dist/assets/gistClient-e7ab47a2.js.gz deleted file mode 100644 index c21e1cb20..000000000 Binary files a/src/ui/dist/assets/gistClient-e7ab47a2.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/gistClient-e7ab47a2.js b/src/ui/dist/assets/gistClient-e7b09d22.js similarity index 97% rename from src/ui/dist/assets/gistClient-e7ab47a2.js rename to src/ui/dist/assets/gistClient-e7b09d22.js index d35183bcb..f59da4ea9 100644 --- a/src/ui/dist/assets/gistClient-e7ab47a2.js +++ b/src/ui/dist/assets/gistClient-e7b09d22.js @@ -1,4 +1,4 @@ -import{cr as w,cw as d}from"./index-8ac6a0d2.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{cr as w,cw as d}from"./index-9ce0501a.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-e7b09d22.js.gz b/src/ui/dist/assets/gistClient-e7b09d22.js.gz new file mode 100644 index 000000000..7155658f7 Binary files /dev/null and b/src/ui/dist/assets/gistClient-e7b09d22.js.gz differ diff --git a/src/ui/dist/assets/index-f53aaddd.css b/src/ui/dist/assets/index-16d261c5.css similarity index 99% rename from src/ui/dist/assets/index-f53aaddd.css rename to src/ui/dist/assets/index-16d261c5.css index a9ac895db..e95f16a7d 100644 --- a/src/ui/dist/assets/index-f53aaddd.css +++ b/src/ui/dist/assets/index-16d261c5.css @@ -4,4 +4,4 @@ */.bg-bg[data-v-b68d33f1]{background-color:var(--background)}.bg-fg[data-v-b68d33f1]{background-color:var(--font-colour)}.text-bg[data-v-b68d33f1]{color:var(--background)}.text-fg[data-v-b68d33f1]{color:var(--font-colour)}button span.material-symbols-rounded[data-v-b68d33f1]{font-variation-settings:"wght" 400}button.disabled[data-v-b68d33f1]{cursor:not-allowed}button.positive[data-v-b68d33f1]{background-color:var(--bg-base);color:var(--fg-base)}button.positive.disabled[data-v-b68d33f1]{background-color:var(--fg-base-dk);color:var(--bg-hover-ltr)}button.negative[data-v-b68d33f1]{background-color:var(--bg-contrast);color:var(--fg-contrast)}button.negative.disabled[data-v-b68d33f1]{background-color:var(--fg-base-dk);color:var(--bg-hover-ltr)}button.danger[data-v-b68d33f1]{color:#f5f5f5;background-color:#c73c3c}button.danger.disabled[data-v-b68d33f1]{background-color:#a22e2e;color:#a9a9a9}button.success[data-v-b68d33f1]{color:#f5f5f5;background-color:var(--fg-secondary)}button.success[data-v-b68d33f1]:hover{background-color:var(--fg-secondary-dk)}button.success.disabled[data-v-b68d33f1]{background-color:#a9a9a9;color:var(--fg-base)}.modal[data-v-e243c458]{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1000;background-color:#000000b3;animation:fadeIn-e243c458 .2s ease-in-out forwards;display:flex;justify-content:center;align-items:center}.error[data-v-e243c458]{color:var(--danger)}@keyframes fadeIn-e243c458{0%{opacity:0}to{opacity:1}}.modal-content[data-v-e243c458]{cursor:default;display:flex;flex-direction:column;width:40%;max-height:80vh;background:var(--fg-contrast);border-radius:1rem;color:var(--fg-base)}.confirm[data-v-e243c458]{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.header[data-v-e243c458]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;margin-bottom:20px}.title[data-v-e243c458]{color:#fff}.dropdown[data-v-186027d9]{position:relative;display:inline-block;width:100%;height:100%}.dropdown__selected[data-v-186027d9]{background:var(--bg-base-lt);border:var(--border-container);border-radius:1000vmax;color:var(--font-colour);padding:10px;width:auto;flex-grow:1;font-family:var(--ff-base);cursor:pointer;display:flex;flex-direction:row;justify-content:space-between}.dropdown__selected.expanded[data-v-186027d9]{border-radius:1em 1em 0 0}.dropdown__selected[data-v-186027d9]:focus-within,.dropdown__selected[data-v-186027d9]:hover{border-color:var(--fg-base);color:var(--fg-base)}.dropdown__options[data-v-186027d9]{position:absolute;left:0;z-index:1001;width:max(100%,20rem);max-height:20rem;overflow-y:auto;background:var(--bg-base);border-radius:0 0 1em 1em;filter:var(--drop-shadow);border:var(--border-container)}.dropdown__options .dropdown__option[data-v-186027d9]{padding:.5rem;cursor:pointer;transition:all .2s ease-in-out;display:grid;grid-template-columns:35px 1fr 20px}.dropdown__options .dropdown__option[data-v-186027d9]:hover{background:var(--bg-hover)}.content[data-v-f7f90291]{display:flex;flex-direction:row}.content .icon-button[data-v-f7f90291]{margin-right:10px;background:var(--bg-contrast);color:var(--fg-contrast);border-radius:1000vmax;padding:11px;cursor:pointer;font-variation-settings:"wght" 300}.content .imagePreview[data-v-f7f90291]{min-width:42px;max-width:42px;margin-left:10px}.content .imagePreview .cover[data-v-f7f90291]{border-radius:5px}.content .imagePreview .cover[data-v-f7f90291]:hover{cursor:pointer;filter:grayscale(.4) blur(2px)}.playlisteditor[data-v-48fc92c4]{display:flex;flex-direction:row;margin-bottom:20px;align-items:center}.playlisteditor img[data-v-48fc92c4]{width:20%;margin-right:20px;border-radius:5px}@media screen and (max-width: 950px){.playlisteditor[data-v-48fc92c4]{flex-direction:column}.playlisteditor img[data-v-48fc92c4]{align-self:center;width:40%;margin-right:0}}.playlisteditor>.details[data-v-48fc92c4]{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-self:end}.playlisteditor>.details>h1[data-v-48fc92c4]{font-size:2em;margin-top:10px;margin-bottom:10px}@media screen and (max-width: 950px){.playlisteditor>.details>h1[data-v-48fc92c4]{font-size:1.4em}}.playlisteditor>.details>.detailswrapper[data-v-48fc92c4]{font-size:.8em;display:flex;flex-direction:row;justify-content:flex-start}@media screen and (max-width: 950px){.playlisteditor>.details>.detailswrapper[data-v-48fc92c4]{justify-content:center}}.playlisteditor>.details>.detailswrapper>.material-icons-round[data-v-48fc92c4]{line-height:15px;font-size:15px;cursor:pointer}.playlisteditor>.details>.detailswrapper>.material-icons-round[data-v-48fc92c4]:not(:first-child){margin-left:10px}.playlisteditor>.details>h5[data-v-48fc92c4]{font-size:.8em;margin:0}.playlist-header[data-v-f8e4524a]{display:grid;grid-template-columns:50px 40px 1fr 1fr 40px 60px;gap:10px}.playlist-header .index[data-v-f8e4524a]{margin:auto 0}.playlist-header .artist-title[data-v-f8e4524a]{grid-column:2/span 2}.playlist-header .duration[data-v-f8e4524a]{text-align:center;grid-column-start:6}.playlist-header:not(.withMore) .duration[data-v-f8e4524a]{grid-column-start:7}.playlist-header div[data-v-f8e4524a]{margin:auto 0;color:var(--fg-base-dk);font-size:.9rem;text-transform:uppercase}.hidden[data-v-ad7138e8]{display:none}@keyframes marquee-ad7138e8{0%{transform:translate(0)}20%{transform:translate(0)}to{transform:translate(calc(-100% - 30px))}}div[data-v-ad7138e8]{white-space:nowrap;overflow:hidden;box-sizing:border-box}.marqueeWrapper[data-v-ad7138e8],.marqueeWrapper *[data-v-ad7138e8]{text-decoration:inherit}.marqueeWrapper[data-v-ad7138e8]{position:relative;margin:0}.replacer[data-v-ad7138e8]{position:absolute;top:0;left:calc(100% + 30px)}span[data-v-ad7138e8]{width:auto;margin:0;white-space:nowrap;display:inherit;overflow:hidden}span.marquee[data-v-ad7138e8]{position:relative;animation:marquee-ad7138e8 15s linear infinite;overflow:unset;text-overflow:unset;display:table-cell}.overlay[data-v-ad7138e8]{position:absolute;bottom:0;left:0;width:100%;text-align:center;padding:30px;pointer-events:none}.artist[data-v-156468cf]:not(:last-child):after{content:", "}.artist>a[data-v-156468cf]{color:inherit;text-decoration:none}.artist>a[data-v-156468cf]:active,.artist>a[data-v-156468cf]:hover{color:inherit;text-decoration:underline}/*! * Copyright (c) 2023, reAudioPlayer ONE. * Licenced under the GNU General Public License v3.0 -*/.playlist-entry[data-v-2482bde4]{display:grid;grid-template-columns:50px 40px 1fr 1fr 40px;gap:10px;padding:10px 0;border-radius:20px;border:1px solid transparent}.playlist-entry .artist-title[data-v-2482bde4]{grid-column:3/4}.playlist-entry:not(.withCover) .artist-title[data-v-2482bde4]{grid-column-start:2}.playlist-entry:not(.withAlbum) .artist-title[data-v-2482bde4]{grid-column-end:5}.playlist-entry div[data-v-2482bde4]{overflow:hidden}.playlist-entry .index[data-v-2482bde4],.playlist-entry .album[data-v-2482bde4],.playlist-entry .duration[data-v-2482bde4],.playlist-entry .icon[data-v-2482bde4]{margin:auto 0;font-size:.9rem;color:var(--fg-base-dk)}.playlist-entry .index.index[data-v-2482bde4],.playlist-entry .album.index[data-v-2482bde4],.playlist-entry .duration.index[data-v-2482bde4],.playlist-entry .icon.index[data-v-2482bde4]{cursor:pointer}.playlist-entry .index.icon[data-v-2482bde4],.playlist-entry .album.icon[data-v-2482bde4],.playlist-entry .duration.icon[data-v-2482bde4],.playlist-entry .icon.icon[data-v-2482bde4]{font-size:1.3rem;cursor:pointer;font-variation-settings:"wght" 500}.playlist-entry .index.icon.favourite[data-v-2482bde4],.playlist-entry .album.icon.favourite[data-v-2482bde4],.playlist-entry .duration.icon.favourite[data-v-2482bde4],.playlist-entry .icon.icon.favourite[data-v-2482bde4]{font-variation-settings:"FILL" 1}.playlist-entry.hovering[data-v-2482bde4]{background-color:var(--bg-hover-dk);border:var(--border-container)}.playlist-entry.hovering .index[data-v-2482bde4]{font-size:1.5rem;font-variation-settings:"FILL" 1}.playlist-entry.selected[data-v-2482bde4]{background-color:var(--bg-hover)}.playlist-entry .favourite-icon[data-v-2482bde4]{grid-column:5}.playlist-entry .duration[data-v-2482bde4]{grid-column:6}.playlist-entry .cover[data-v-2482bde4]{display:flex;justify-content:center}.playlist-entry img[data-v-2482bde4]{border-radius:4px;margin:auto 0}.playlist-entry .artist-title[data-v-2482bde4]{display:grid;grid-template-rows:1fr 1fr}.playlist-entry .artist-title .artist[data-v-2482bde4]{font-size:.8rem;color:var(--fg-base-dk)}.playlist-entry .artist-title span[data-v-2482bde4]{max-width:-moz-min-content;max-width:min-content;overflow:hidden}.playlist-entry.playing .title[data-v-2482bde4],.playlist-entry.playing .index[data-v-2482bde4]{color:var(--fg-secondary)}.playlist-entry.hovering .artist[data-v-2482bde4],.playlist-entry.hovering .album[data-v-2482bde4],.playlist-entry.selected .artist[data-v-2482bde4],.playlist-entry.selected .album[data-v-2482bde4]{color:var(--fg-base)}@media screen and (max-width: 768px){.playlist-entry[data-v-2482bde4]{padding:5px 0;border-radius:10px;grid-template-columns:30px 40px 1fr 1fr 30px 40px}.playlist-entry .index[data-v-2482bde4],.playlist-entry .duration[data-v-2482bde4]{font-size:.7rem}.playlist-entry .artist-title[data-v-2482bde4]{grid-column-end:5;font-size:.8rem}.playlist-entry .artist-title .artist[data-v-2482bde4]{font-size:.65rem}}.playlist[data-v-a918d839]{position:relative}.playlist .entries[data-v-a918d839]{position:relative;overflow-y:auto;display:flex;flex-direction:column;height:100%;max-height:30vh}.item[data-v-4496fc3d]{display:flex;align-items:flex-end;gap:1rem;padding:10px;border-radius:20px}.item img[data-v-4496fc3d]{width:50px;height:50px;border-radius:.5em;-o-object-fit:cover;object-fit:cover}.item .tag[data-v-4496fc3d]{padding:.2rem .5rem;border-radius:.5rem;background:var(--bg-base-lt);border:var(--border-container)}.item .info[data-v-4496fc3d]{display:flex;align-items:center;width:100%;gap:.5em}.item .name[data-v-4496fc3d]{font-weight:900;font-size:1rem}.item.large[data-v-4496fc3d]{min-width:40ch;background:var(--bg-base-lt);border:var(--border-container);border-radius:1em;padding:1em}.item.large .info[data-v-4496fc3d]{flex-direction:column;align-items:flex-start}.item.large .name[data-v-4496fc3d]{font-size:1.2rem}.item.large img[data-v-4496fc3d]{width:150px;height:150px}.item[data-v-4496fc3d]:not(.nohover):hover{background:var(--bg-hover-dk);cursor:pointer}.download-anim[data-v-2bea1460]{color:var(--fg-base-dk);animation:anim-2bea1460 .5s ease-out forwards}@keyframes anim-2bea1460{0%{opacity:1;transform:translateY(500px)}to{opacity:0;transform:translateY(0)}}.suggestion[data-v-2bea1460]{display:grid;gap:1em;width:100%}.suggestion .cover[data-v-2bea1460]{border-radius:.5em}.suggestion[data-v-2bea1460]:hover,.suggestion.selected[data-v-2bea1460]{background:var(--bg-hover-dk);cursor:pointer}.suggestion span[data-v-2bea1460]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.suggestion span[data-v-2bea1460]:last-child{color:var(--fg-base-dk);font-size:.8rem}.header[data-v-2bea1460]{background:var(--bg-base-dk);height:var(--h-header);display:flex;flex-direction:row;justify-content:space-between;align-items:center;box-shadow:0 0 10px 0 var(--shadow);z-index:10;border-bottom:var(--border-container)}.logo[data-v-2bea1460]{fill:var(--fg-base);padding:10px;translate:5px 5px;height:100%}.logo[data-v-2bea1460]:hover{cursor:pointer}.header .search{width:100%;display:flex;flex-direction:row;justify-content:center;margin:0 1em}.header .search .input-with-autocomplete{max-width:800px;width:100%;flex:1}.header .search .text-input-with-icon{width:100%}.startup[data-v-24a52185]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.startup .wrap[data-v-24a52185]{width:80%}.startup .logo[data-v-24a52185]{display:flex;flex-direction:row;justify-content:center;width:100%;align-items:center}.startup .logo svg[data-v-24a52185]{fill:var(--fg-base);padding:10px;translate:5px 5px;height:100%;max-width:400px}.startup .logo p[data-v-24a52185]{font-size:1em;color:var(--fg-base);z-index:1;margin-left:50px}.card[data-v-04b9eb92]{background:var(--bg-base-lt);border-radius:1em;border:var(--border-container);position:relative}.card[data-v-04b9eb92]:before{content:"";border-radius:1em;box-shadow:0 0 10px #0000001a;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.card.withHover[data-v-04b9eb92]:hover{background:var(--bg-hover-dk)}.card.disabled[data-v-04b9eb92]{opacity:.5;cursor:not-allowed!important}.notification[data-v-49e9d059]{padding:.5em 1em;display:flex;flex-direction:row;gap:2em;align-items:center;justify-content:space-between;color:#fff;filter:var(--drop-shadow)}.notification.success[data-v-49e9d059]{background-color:var(--success)}.notification.error[data-v-49e9d059]{background-color:var(--fail)}.notification.info[data-v-49e9d059]{background-color:var(--info)}.notification.warning[data-v-49e9d059]{background-color:var(--warning)}.notification h4[data-v-49e9d059],.notification p[data-v-49e9d059]{margin:0}.notification .details[data-v-49e9d059]{font-size:.8em}.close[data-v-49e9d059]{cursor:pointer}.notification[data-v-4dd7578e]{gap:2em;align-items:center;color:var(--fg-base);overflow:hidden;filter:var(--drop-shadow);background:var(--fg-contrast)}.notification .message[data-v-4dd7578e]{padding:.5em 1em}.notification .message h4[data-v-4dd7578e]{margin:0}.notification .message .details[data-v-4dd7578e]{font-size:.8em}.yes-no[data-v-4dd7578e]{display:flex;flex-direction:row}.yes-no .option[data-v-4dd7578e]{flex:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.yes-no .option.yes[data-v-4dd7578e]{background-color:var(--success)}.yes-no .option.no[data-v-4dd7578e]{background-color:var(--fail)}.notifications[data-v-ca1aa49b]{position:absolute;inset:auto auto 0 0;z-index:10;margin:2em 2em calc(var(--h-player) + 10px) calc(var(--w-sidebar) + 40px);display:flex;flex-direction:column;gap:1em;align-items:flex-start}.notifications .notification[data-v-ca1aa49b]{min-width:200px;max-width:400px}@font-face{font-family:v-contextmenu;src:url(data:application/vnd.ms-fontobject;base64,AAgAAFgHAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAr5f4wwAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kgMAAABfAAAAFZjbWFwmcAGvgAAAeAAAAGGZ2x5ZodVRJIAAANwAAABPGhlYWQPY7HCAAAA4AAAADZoaGVhB94DhAAAALwAAAAkaG10eAvpAAAAAAHUAAAADGxvY2EAdgCeAAADaAAAAAhtYXhwARIAXQAAARgAAAAgbmFtZT5U/n0AAASsAAACbXBvc3RBG9LpAAAHHAAAADkAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAMAAQAAAAEAAMP4l69fDzz1AAsEAAAAAADWIjbmAAAAANYiNuYAAP/hBAADGAAAAAgAAgAAAAAAAAABAAAAAwBRAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP4AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjmIgOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAV4AAQAAAAAAWAADAAEAAAAsAAMACgAAAV4ABAAsAAAABgAEAAEAAgB45iL//wAAAHjmIv//AAAAAAABAAYABgAAAAEAAgAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAKAAAAAAAAAACAAAAeAAAAHgAAAABAADmIgAA5iIAAAACAAAAAAAAAHYAngAFAAD/4QO8AxgAEwAoADEARABQAAABBisBIg4CHQEhJzQuAisBFSEFFRcUDgMnIychByMiLgM9ARciBhQWMjY0JhcGBwYPAQ4BHgEzITI2Jy4CJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIxwPPi3+SSw/FDIgEwh3DBISGRISjAgGBQUIAgIEDw4BbRcWCQUJCgb+pAUPGhW8HykCHwEMGScaTFkNIBsSYYg0bh0lFwkBAYCAARMbIA6nPxEaEREaEXwaFhMSGQcQDQgYGg0jJBQBd+QLGBMMHSbjAAAAAAEAAAAAAtYC8AARAAABFAcBBi4BNjcJAS4BPgEXARYC1Q3+qQ4hGAENATj+yA0BGCINAVcNAYASDP66CwEZIQ0BJwEnDSEZAQv+ugwAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAIABUAAQAAAAAAAgAHAB0AAQAAAAAAAwAIACQAAQAAAAAABAAIACwAAQAAAAAABQALADQAAQAAAAAABgAIAD8AAQAAAAAACgArAEcAAQAAAAAACwATAHIAAwABBAkAAAAqAIUAAwABBAkAAQAQAK8AAwABBAkAAgAOAL8AAwABBAkAAwAQAM0AAwABBAkABAAQAN0AAwABBAkABQAWAO0AAwABBAkABgAQAQMAAwABBAkACgBWARMAAwABBAkACwAmAWkKQ3JlYXRlZCBieSBpY29uZm9udAppY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQIBAwEEAAF4C2Fycm93LXJpZ2h0AAAAAAA=);src:url(data:application/vnd.ms-fontobject;base64,AAgAAFgHAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAr5f4wwAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kgMAAABfAAAAFZjbWFwmcAGvgAAAeAAAAGGZ2x5ZodVRJIAAANwAAABPGhlYWQPY7HCAAAA4AAAADZoaGVhB94DhAAAALwAAAAkaG10eAvpAAAAAAHUAAAADGxvY2EAdgCeAAADaAAAAAhtYXhwARIAXQAAARgAAAAgbmFtZT5U/n0AAASsAAACbXBvc3RBG9LpAAAHHAAAADkAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAMAAQAAAAEAAMP4l69fDzz1AAsEAAAAAADWIjbmAAAAANYiNuYAAP/hBAADGAAAAAgAAgAAAAAAAAABAAAAAwBRAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP4AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjmIgOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAV4AAQAAAAAAWAADAAEAAAAsAAMACgAAAV4ABAAsAAAABgAEAAEAAgB45iL//wAAAHjmIv//AAAAAAABAAYABgAAAAEAAgAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAKAAAAAAAAAACAAAAeAAAAHgAAAABAADmIgAA5iIAAAACAAAAAAAAAHYAngAFAAD/4QO8AxgAEwAoADEARABQAAABBisBIg4CHQEhJzQuAisBFSEFFRcUDgMnIychByMiLgM9ARciBhQWMjY0JhcGBwYPAQ4BHgEzITI2Jy4CJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIxwPPi3+SSw/FDIgEwh3DBISGRISjAgGBQUIAgIEDw4BbRcWCQUJCgb+pAUPGhW8HykCHwEMGScaTFkNIBsSYYg0bh0lFwkBAYCAARMbIA6nPxEaEREaEXwaFhMSGQcQDQgYGg0jJBQBd+QLGBMMHSbjAAAAAAEAAAAAAtYC8AARAAABFAcBBi4BNjcJAS4BPgEXARYC1Q3+qQ4hGAENATj+yA0BGCINAVcNAYASDP66CwEZIQ0BJwEnDSEZAQv+ugwAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAIABUAAQAAAAAAAgAHAB0AAQAAAAAAAwAIACQAAQAAAAAABAAIACwAAQAAAAAABQALADQAAQAAAAAABgAIAD8AAQAAAAAACgArAEcAAQAAAAAACwATAHIAAwABBAkAAAAqAIUAAwABBAkAAQAQAK8AAwABBAkAAgAOAL8AAwABBAkAAwAQAM0AAwABBAkABAAQAN0AAwABBAkABQAWAO0AAwABBAkABgAQAQMAAwABBAkACgBWARMAAwABBAkACwAmAWkKQ3JlYXRlZCBieSBpY29uZm9udAppY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQIBAwEEAAF4C2Fycm93LXJpZ2h0AAAAAAA=#iefix) format("embedded-opentype"),url(data:font/woff;base64,d09GRgABAAAAAAUAAAsAAAAAB1gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kgMY21hcAAAAYAAAABeAAABhpnABr5nbHlmAAAB4AAAAS4AAAE8h1VEkmhlYWQAAAMQAAAALwAAADYPY7HCaGhlYQAAA0AAAAAcAAAAJAfeA4RobXR4AAADXAAAAAwAAAAMC+kAAGxvY2EAAANoAAAACAAAAAgAdgCebWF4cAAAA3AAAAAfAAAAIAESAF1uYW1lAAADkAAAAUUAAAJtPlT+fXBvc3QAAATYAAAAKAAAADlBG9LpeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sE4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDxTYm7438AQw9zA0AAUZgTJAQAl4gyOeJzFkMENgDAMAy9t6QMxRV88GIgXc3TirlFMKA8mqCXHimMpUYAFiOIhJrAL48Ep19yPrO4nz2SpEait9K7+U0U0y65BJTMNNm/1H5vXfXT6CnVQJ7byknADpO8MFwAAeJwVjL1Kw1AARu93Y/7a3MTe/KdN2yS2V6kGjLEKYru4KA6Cgzj6ALp2cegiODj4DCKIr1D6AL6A7qIP4BNE48fhwFk+IhPy+yktpYDYZJ1skyNyRgiUEVKTxkhEmdMR3ER2fceURCYSNUtz6RB+qjheMS6HvqIqFkx0sZMUY5FTgd1yQg9QeDEQtqNzPuhw6RGNQHTvqhP6BLeXdazJVnW8OXWKvq3NDM5Dzh80RZY1SlcsE9e+p8t6Q6meZStyl70N2oMRiuj0kvXb/Oq+vIkHvg7M57DbffNl2opaNbeRZ/NQXWVaELFszcHsuxnYRjz8IvXwL/pBf0irDkeFkmO8pyPHBD48+s6qVzMJwLBfvTEEKcMFw5wb1aKJMGEQECwJ0awWRv30B+KIMJEAAHicY2BkYGAA4sM/urfH89t8ZeBmYQCBa0pmzxD0/4csDMwSQC4HAxNIFABNGgrfAHicY2BkYGBu+N/AEMPCAAJAkpEBFTADAEcJAmwEAAAAA+kAAAQAAAAAAAAAAHYAnnicY2BkYGBgZghkYGUAASYg5gJCBob/YD4DABD3AXAAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicY2BigAAuBuyAmZGJkZmRhYGxgjuxqCi/XLcoMz2jhIEBAC8dBRY=) format("woff"),url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kgMAAABfAAAAFZjbWFwmcAGvgAAAeAAAAGGZ2x5ZodVRJIAAANwAAABPGhlYWQPY7HCAAAA4AAAADZoaGVhB94DhAAAALwAAAAkaG10eAvpAAAAAAHUAAAADGxvY2EAdgCeAAADaAAAAAhtYXhwARIAXQAAARgAAAAgbmFtZT5U/n0AAASsAAACbXBvc3RBG9LpAAAHHAAAADkAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAMAAQAAAAEAAMP4i7dfDzz1AAsEAAAAAADWIjbmAAAAANYiNuYAAP/hBAADGAAAAAgAAgAAAAAAAAABAAAAAwBRAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP4AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjmIgOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAV4AAQAAAAAAWAADAAEAAAAsAAMACgAAAV4ABAAsAAAABgAEAAEAAgB45iL//wAAAHjmIv//AAAAAAABAAYABgAAAAEAAgAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAKAAAAAAAAAACAAAAeAAAAHgAAAABAADmIgAA5iIAAAACAAAAAAAAAHYAngAFAAD/4QO8AxgAEwAoADEARABQAAABBisBIg4CHQEhJzQuAisBFSEFFRcUDgMnIychByMiLgM9ARciBhQWMjY0JhcGBwYPAQ4BHgEzITI2Jy4CJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIxwPPi3+SSw/FDIgEwh3DBISGRISjAgGBQUIAgIEDw4BbRcWCQUJCgb+pAUPGhW8HykCHwEMGScaTFkNIBsSYYg0bh0lFwkBAYCAARMbIA6nPxEaEREaEXwaFhMSGQcQDQgYGg0jJBQBd+QLGBMMHSbjAAAAAAEAAAAAAtYC8AARAAABFAcBBi4BNjcJAS4BPgEXARYC1Q3+qQ4hGAENATj+yA0BGCINAVcNAYASDP66CwEZIQ0BJwEnDSEZAQv+ugwAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAIABUAAQAAAAAAAgAHAB0AAQAAAAAAAwAIACQAAQAAAAAABAAIACwAAQAAAAAABQALADQAAQAAAAAABgAIAD8AAQAAAAAACgArAEcAAQAAAAAACwATAHIAAwABBAkAAAAqAIUAAwABBAkAAQAQAK8AAwABBAkAAgAOAL8AAwABBAkAAwAQAM0AAwABBAkABAAQAN0AAwABBAkABQAWAO0AAwABBAkABgAQAQMAAwABBAkACgBWARMAAwABBAkACwAmAWkKQ3JlYXRlZCBieSBpY29uZm9udAppY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQIBAwEEAAF4C2Fycm93LXJpZ2h0AAAAAAA=) format("truetype"),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20standalone%3D%22no%22%3F%3E%0A%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%20%3E%0A%3C!--%0A2013-9-30%3A%20Created.%0A--%3E%0A%3Csvg%3E%0A%3Cmetadata%3E%0ACreated%20by%20iconfont%0A%3C%2Fmetadata%3E%0A%3Cdefs%3E%0A%0A%3Cfont%20id%3D%22iconfont%22%20horiz-adv-x%3D%221024%22%20%3E%0A%20%20%3Cfont-face%0A%20%20%20%20font-family%3D%22iconfont%22%0A%20%20%20%20font-weight%3D%22500%22%0A%20%20%20%20font-stretch%3D%22normal%22%0A%20%20%20%20units-per-em%3D%221024%22%0A%20%20%20%20ascent%3D%22896%22%0A%20%20%20%20descent%3D%22-128%22%0A%20%20%2F%3E%0A%20%20%20%20%3Cmissing-glyph%20%2F%3E%0A%20%20%20%20%0A%20%20%20%20%3Cglyph%20glyph-name%3D%22x%22%20unicode%3D%22x%22%20horiz-adv-x%3D%221001%22%0Ad%3D%22M281%20543q-27%20-1%20-53%20-1h-83q-18%200%20-36.5%20-6t-32.5%20-18.5t-23%20-32t-9%20-45.5v-76h912v41q0%2016%20-0.5%2030t-0.5%2018q0%2013%20-5%2029t-17%2029.5t-31.5%2022.5t-49.5%209h-133v-97h-438v97zM955%20310v-52q0%20-23%200.5%20-52t0.5%20-58t-10.5%20-47.5t-26%20-30t-33%20-16t-31.5%20-4.5q-14%20-1%20-29.5%20-0.5%0At-29.5%200.5h-32l-45%20128h-439l-44%20-128h-29h-34q-20%200%20-45%201q-25%200%20-41%209.5t-25.5%2023t-13.5%2029.5t-4%2030v167h911zM163%20247q-12%200%20-21%20-8.5t-9%20-21.5t9%20-21.5t21%20-8.5q13%200%2022%208.5t9%2021.5t-9%2021.5t-22%208.5zM316%20123q-8%20-26%20-14%20-48q-5%20-19%20-10.5%20-37t-7.5%20-25t-3%20-15t1%20-14.5%0At9.5%20-10.5t21.5%20-4h37h67h81h80h64h36q23%200%2034%2012t2%2038q-5%2013%20-9.5%2030.5t-9.5%2034.5q-5%2019%20-11%2039h-368zM336%20498v228q0%2011%202.5%2023t10%2021.5t20.5%2015.5t34%206h188q31%200%2051.5%20-14.5t20.5%20-52.5v-227h-327z%22%20%2F%3E%0A%20%20%20%20%0A%0A%20%20%20%20%0A%20%20%20%20%3Cglyph%20glyph-name%3D%22arrow-right%22%20unicode%3D%22%26%2358914%3B%22%20d%3D%22M725.3399071604938%20383.8342991012345a41.425224691358025%2041.425224691358025%200%200%200-12.924670103703681-30.074713125925918l-343.82936493827134-325.2708642765434a41.425224691358025%2041.425224691358025%200%200%200-56.91825872592596%2060.23227670123452l312.0976428246912%20295.1961511506175-312.0976428246914%20295.4447024987654a41.50807514074074%2041.50807514074074%200%200%200-1.6570089876543506%2058.575267713580246c15.74158538271605%2016.570089876543207%2042.00517783703699%2017.315743920987664%2058.575267713580246%201.6570089876543506l343.8293649382716-325.6022660740737a41.425224691358025%2041.425224691358025%200%200%200%2012.924670103703713-30.15756357530862z%22%20%20horiz-adv-x%3D%221024%22%20%2F%3E%0A%0A%20%20%20%20%0A%0A%0A%20%20%3C%2Ffont%3E%0A%3C%2Fdefs%3E%3C%2Fsvg%3E%0A) format("svg")}.v-contextmenu-icon{font-family:v-contextmenu!important;font-size:inherit;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.v-contextmenu-icon-right-arrow:before{content:""}.v-contextmenu{position:absolute;background-color:#fff;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:2px 2px 8px 0 rgba(150,150,150,.2);box-shadow:2px 2px 8px #96969633;font-size:14px;white-space:nowrap;line-height:1;z-index:2020;-webkit-tap-highlight-color:transparent}.v-contextmenu-inner{padding:5px 0;margin:0;list-style:none}.v-contextmenu-item{padding:5px 14px;line-height:1;color:#333;cursor:pointer}.v-contextmenu-item--hover{color:#fff;background-color:#2d3035}.v-contextmenu-item--disabled{color:#3336;cursor:not-allowed}.v-contextmenu-divider{height:0;margin:5px 0;border-bottom:1px solid #e8e8e8}.v-contextmenu-group__title{padding:5px 14px 2.5px;color:#3333338c;font-size:60%}.v-contextmenu-group__menus{padding:0 5px;margin:0;list-style:none}.v-contextmenu-group__menus .v-contextmenu-item{display:inline-block;padding:5px 9px}.v-contextmenu-submenu{position:relative}.v-contextmenu-submenu__title{padding-right:22.4px}.v-contextmenu-submenu__menus{position:absolute}.v-contextmenu-submenu__menus--left{left:0;-webkit-transform:translateX(-100%);transform:translate(-100%)}.v-contextmenu-submenu__menus--right{right:0;-webkit-transform:translateX(100%);transform:translate(100%)}.v-contextmenu-submenu__menus--top{top:-6px}.v-contextmenu-submenu__menus--bottom{bottom:-6px}.v-contextmenu-submenu__arrow{position:absolute;right:5px}.v-contextmenu-enter-active{-webkit-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.v-contextmenu-leave-active{-webkit-transition:opacity .3s cubic-bezier(1,.5,.8,1);transition:opacity .3s cubic-bezier(1,.5,.8,1)}.v-contextmenu-enter-from,.v-contextmenu-leave-to{opacity:0}.logo[data-v-cc71c038]{fill:var(--fg-base);padding:10px;width:60%}.logo[data-v-cc71c038]:hover{cursor:pointer}.collapseSidebar[data-v-cc71c038]{display:flex;flex-direction:row;justify-content:center;align-items:center;height:40px}.collapseSidebar.minimised[data-v-cc71c038]{justify-content:center}.collapseSidebar .clickSymbol[data-v-cc71c038]{border-radius:5px}.collapseSidebar .clickSymbol[data-v-cc71c038]:hover{cursor:pointer;background:var(--hover-2)}.static[data-v-cc71c038]{flex-shrink:0;flex-grow:0}@media screen and (max-width: 750px){.static[data-v-cc71c038]{display:flex;flex-direction:row;justify-content:space-between;width:100%}}h2[data-v-cc71c038]{margin-bottom:0}.cover[data-v-cc71c038]{position:absolute;bottom:10px;width:100%;transform:translate(-10px,10px)}.playlistList[data-v-cc71c038]{flex-grow:1;display:flex;flex-direction:column;overflow-y:auto}.playlistList.expanded[data-v-cc71c038]{padding:0 10px}.playlistList>a[data-v-cc71c038]{font-size:.92em;text-decoration:none;color:var(--font-darker);margin-bottom:4px;margin-top:4px}.playlistList>a[data-v-cc71c038]:hover{color:var(--font-colour)}hr[data-v-cc71c038]{width:100%}div.sidebar[data-v-cc71c038]{background:var(--bg-base-dk);width:calc(var(--w-sidebar) + 20px);min-width:calc(var(--w-sidebar) + 20px);max-width:calc(var(--w-sidebar) + 20px);display:flex;flex-direction:column;padding:10px;margin:10px;border-radius:8px;max-height:100%;z-index:1;position:relative;overflow:hidden;border:var(--border-container)}@media screen and (max-width: 750px){div.sidebar[data-v-cc71c038]{flex-direction:row;width:100vw;position:absolute;bottom:0;margin:0;max-width:100vw;border-radius:0}}h2[data-v-cc71c038]:hover{cursor:pointer}h2[data-v-cc71c038]{margin:0;padding:10px}div.body[data-v-85e4fc55]{flex-grow:1;overflow-y:auto;overflow-x:hidden;max-width:calc(100vw - var(--sidebar-width));max-height:calc(100vh - var(--player-height) - var(--header-height))}div.body.maximised[data-v-85e4fc55]{max-width:100vw;max-height:100vh}@media screen and (max-width: 950px){div.body[data-v-85e4fc55]{max-width:100vw;max-height:calc(100vh - var(--player-height-mobile) - var(--sidebar-height) - var(--header-height))}}.progressBar__track[data-v-a9b735d7]{position:relative;width:100%;height:5px;margin:10px 0;border-radius:1000vmax;background-color:var(--fg-base-dkr)}.progressBar__progress[data-v-a9b735d7]{position:relative;height:5px;border-radius:1000vmax;background-color:var(--fg-base)}.progressBar__progress.hover[data-v-a9b735d7]{background-color:var(--fg-secondary)}.progressBar__progress.hover[data-v-a9b735d7]:after{content:""}.progressBar__progress[data-v-a9b735d7]:after{position:absolute;top:-5px;right:-5px;width:15px;height:15px;border-radius:50%;background-color:var(--fg-base)}.dropdown[data-v-b20d4971]{position:relative;display:inline-block}.dropdown__selected[data-v-b20d4971]{color:var(--fg-base-dk);cursor:pointer;font-size:1.5rem;border-radius:10px;padding:5px}.dropdown__selected[data-v-b20d4971]:hover{background:var(--bg-hover-lt);color:var(--fg-secondary)}.dropdown__options[data-v-b20d4971]{position:absolute;z-index:999;width:max(100%,20rem);max-height:20rem;overflow-y:auto;background:var(--bg-base);border-radius:5px;filter:var(--drop-shadow)}.dropdown__options .dropdown__option[data-v-b20d4971]{padding:.5rem;cursor:pointer;transition:all .2s ease-in-out;display:grid;grid-template-columns:35px 1fr 20px}.dropdown__options .dropdown__option[data-v-b20d4971]:hover{background:var(--bg-hover)}.loader[data-v-ed1fd951]{width:20px;height:20px;margin:auto;border:3px solid var(--fg-base-dk);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation-ed1fd951 1s linear infinite}@keyframes rotation-ed1fd951{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#waveform wave,#waveform canvas{width:100%;height:calc(var(--h-player) / 2 - 1em)!important}.player .on-this-device>.material-symbols-rounded{color:var(--fg-secondary)}.player[data-v-aaf20643]{background:var(--bg-base-lt);border-top:1px solid var(--border-base);z-index:2}.icon[data-v-aaf20643]{color:var(--fg-base-dk)}.icon[data-v-aaf20643]:hover{color:var(--fg-base)}.desktop[data-v-aaf20643]{display:grid;height:calc(var(--h-player) - 1px);grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);grid-template-areas:"song-info controls aux";gap:10px}.desktop .song-info[data-v-aaf20643]{grid-area:song-info;display:grid;align-items:center;grid-template-columns:calc(var(--h-player) - 40px) fit-content(100%) 20px 20px;gap:10px;overflow:hidden}.desktop .song-info .title-artist[data-v-aaf20643]{overflow:hidden}.desktop .song-info div[data-v-aaf20643]{margin:auto 0}.desktop .controls[data-v-aaf20643]{grid-area:controls;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto}.desktop .controls .top[data-v-aaf20643]{display:grid;grid-template-columns:repeat(2,20px) 40px repeat(2,20px);gap:1.5em;justify-content:center}.desktop .controls .top span[data-v-aaf20643]{margin:auto 0;font-size:1.5rem}.desktop .controls .top span[data-v-aaf20643]:nth-child(3){font-size:2.5rem}.desktop .controls .bottom .display[data-v-aaf20643]{display:grid;grid-template-columns:1fr 10fr 1fr;gap:.5em;margin-bottom:.5em;align-items:center}.desktop .aux[data-v-aaf20643]{grid-area:aux;justify-content:end;display:grid;grid-template-columns:20px 20px 20px minmax(auto,8vw);gap:1em;align-items:center}.desktop .aux a.icon[data-v-aaf20643]{display:flex;text-decoration:none}.desktop .aux a.icon.router-link-active[data-v-aaf20643]{color:var(--fg-secondary)}.mobile .small[data-v-aaf20643]{display:grid;grid-template-columns:calc(var(--h-player-mobile) - 1em) 1fr 30px 30px;gap:1em;margin:.5em;align-items:center;max-width:calc(100vw - 2em)}.mobile .small .cover[data-v-aaf20643]{border-radius:10px;background:var(--bg-base-dk);margin:auto 0}.mobile .full[data-v-aaf20643]{position:absolute;top:0;left:0;width:100vw;height:calc(100vh - var(--h-sidebar));max-height:calc(100vh - var(--h-sidebar));overflow:hidden;background:var(--bg-base);padding:2em;display:grid;grid-template-columns:1fr;grid-template-rows:30px 1fr fit-content(100%)}.mobile .full .cover[data-v-aaf20643]{filter:drop-shadow(0 25px 25px rgba(0,0,0,.3))}.mobile .full .controls[data-v-aaf20643]{display:flex;flex-direction:column-reverse}.mobile .full .controls .top[data-v-aaf20643]{display:grid;grid-template-columns:repeat(5,1fr);gap:1.5em;justify-content:center}.mobile .full .controls .top span[data-v-aaf20643]{margin:auto 0;font-size:2rem}.mobile .full .controls .top span[data-v-aaf20643]:nth-child(3){font-size:3rem}.dropzone *[data-v-c5853362]{pointer-events:none}.dropzone.drophover[data-v-c5853362]:after{content:" ";display:block;text-align:center;color:var(--text-muted);font-style:italic;font-size:.8rem;background:rgba(0,0,0,.5);border-radius:1rem;position:absolute;top:0;right:0;bottom:0;left:0;margin-top:1em;margin-bottom:1em;margin-right:1em;z-index:1000}.noLink{text-decoration:none;color:unset}.noLink:hover{text-decoration:none;cursor:default;color:unset}.linkOnHover{text-decoration:none;color:unset}.linkOnHover:hover{text-decoration:underline;cursor:pointer;color:var(--fg-base)}.v-contextmenu{background:var(--fg-contrast)!important;font-family:var(--ff-base)!important;border:1px solid var(--bg-hover-dk);box-shadow:none;--webkit-box-shadow: none;color:var(--fg-base)!important}.v-contextmenu-divider{border-color:var(--border-base)}.v-contextmenu-item{color:var(--fg-base)!important;margin:5px;padding:10px 22px 10px 15px;border-radius:5px}.v-contextmenu-item--hover{background:var(--bg-hover-dk)!important}::-webkit-scrollbar{width:var(--w-scrollbar);height:var(--w-scrollbar);padding:0;margin:0;z-index:101}::-webkit-scrollbar-track{border-radius:var(--w-scrollbar)}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:var(--w-scrollbar)}::-webkit-scrollbar-thumb:hover{background:var(--bg-hover-dk)}:root{--fg-secondary: #1ed760;--fg-secondary-dk: #217e41;--bg-contrast: white;--fg-contrast: #121212;--fg-base: white;--fg-base-dk: #a7a7a7;--fg-base-dkr: #999;--bg-hover-ltr: #242424;--bg-hover-lt: hsla(0,0%,100%,.04);--bg-hover: hsla(0,0%,100%,.3);--bg-hover-dk: hsla(0,0%,100%,.1);--border-base: hsla(0,0%,100%,.1);--border-container: var(--border-base);--bg-gradient: linear-gradient(to left bottom, #1ed760, #217e41);--bg-base: #121212;--bg-base-lt: #181818;--bg-base-dk: black;--bg-fixedPlaylistHeader: var(--bg-base-lt);--border-fixedPlaylistHeader: #303030;--bg-input: var(--background-light);--ff-base: Poppins, sans-serif;--h-playlistEntry: 64px;--h-player: 88px;--h-player-mobile: 64px;--h-header: 64px;--w-sidebar: 44px;--h-sidebar: 64px;--w-scrollbar: 8px;--drop-shadow: drop-shadow(0 0 .5rem rgba(0, 0, 0, .2));--background: #1e1e1e;--neutral: #374148;--success: #00c48b;--fail: #e85454;--warning: #c7aa19;--info: #189de4}.showIfMobile{display:none!important}.hideIfMobile{display:inherit}@media only screen and (max-width: 750px){.showIfMobile{display:inherit!important}.hideIfMobile{display:none!important}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}h1{margin-top:.5rem;margin-bottom:.5rem;font-size:1.875rem;line-height:2.25rem;font-weight:900}h2{margin-top:1.25rem;margin-bottom:1.25rem;font-size:1.5rem;line-height:2rem;font-weight:700}h3{font-size:1.125rem;line-height:1.75rem;font-weight:700}h4{margin-top:1rem;margin-bottom:1rem;font-weight:700}h5{color:var(--fg-base-dk);text-transform:uppercase}h6{color:var(--fg-base-dk);margin-top:.5rem;margin-bottom:.5rem;font-size:.875rem;line-height:1.25rem}a{text-decoration-line:underline}a:hover{color:var(--fg-secondary)}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.text-base{color:var(--fg-base)}.text-muted{color:var(--fg-base-dk)}.text-very-muted{color:var(--fg-base-dkr)}.text-secondary{color:var(--fg-secondary)}.bg-secondary{background-color:var(--fg-secondary)}p{margin-top:.5rem;margin-bottom:.5rem}.h1{margin-top:.5rem;margin-bottom:.5rem;font-size:1.875rem;line-height:2.25rem;font-weight:900}.h2{margin-top:1.25rem;margin-bottom:1.25rem;font-size:1.5rem;line-height:2rem;font-weight:700}.h3{font-size:1.125rem;line-height:1.75rem;font-weight:700}.h5{color:var(--fg-base-dk);text-transform:uppercase}.h6{color:var(--fg-base-dk);margin-top:.5rem;margin-bottom:.5rem;font-size:.875rem;line-height:1.25rem}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.left-0{left:0}.z-\[1000\]{z-index:1000}.-z-10{z-index:-10}.z-10{z-index:10}.col-span-2{grid-column:span 2 / span 2}.m-0{margin:0}.mx-4{margin-left:1rem;margin-right:1rem}.my-0{margin-top:0;margin-bottom:0}.my-4{margin-top:1rem;margin-bottom:1rem}.my-auto{margin-top:auto;margin-bottom:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mb-2{margin-bottom:.5rem}.ml-4{margin-left:1rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.mb-4{margin-bottom:1rem}.mt-10{margin-top:2.5rem}.mb-0{margin-bottom:0}.ml-2{margin-left:.5rem}.ml-8{margin-left:2rem}.mr-4{margin-right:1rem}.ml-0{margin-left:0}.\!mt-0{margin-top:0!important}.mt-\[10px\]{margin-top:10px}.ml-auto{margin-left:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.grid{display:grid}.\!grid{display:grid!important}.hidden{display:none}.h-8{height:2rem}.h-12{height:3rem}.h-full{height:100%}.h-96{height:24rem}.h-max{height:-moz-max-content;height:max-content}.w-full{width:100%}.w-8{width:2rem}.w-max{width:-moz-max-content;width:max-content}.w-1\/2{width:50%}.w-1{width:.25rem}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-\[40vw\]{min-width:40vw}.max-w-sm{max-width:24rem}.max-w-\[60ch\]{max-width:60ch}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\!grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.rounded-xl{border-radius:.75rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.rounded-3xl{border-radius:1.5rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.border{border-width:1px}.p-4{padding:1rem}.p-2{padding:.5rem}.p-\[10px\]{padding:10px}.p-3{padding:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-4{padding-top:1rem}.pb-2{padding-bottom:.5rem}.pr-2{padding-right:.5rem}.pt-0{padding-top:0}.pb-4{padding-bottom:1rem}.pr-4{padding-right:1rem}.\!text-left{text-align:left!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-xs{font-size:.75rem;line-height:1rem}.text-5xl{font-size:3rem;line-height:1}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-9xl{font-size:8rem;line-height:1}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-light{font-weight:300}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-md{--tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / .07)) drop-shadow(0 2px 2px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-xl{--tw-drop-shadow: drop-shadow(0 20px 13px rgb(0 0 0 / .03)) drop-shadow(0 8px 5px rgb(0 0 0 / .08));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-2xl{--tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / .15));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}*{--tw-invert: 0}.fill-page{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.ms-wght-100{font-variation-settings:"wght" 100}.ms-wght-200{font-variation-settings:"wght" 200}.ms-wght-300{font-variation-settings:"wght" 300}.ms-wght-400{font-variation-settings:"wght" 400}.ms-wght-500{font-variation-settings:"wght" 500}.ms-wght-600{font-variation-settings:"wght" 600}.ms-wght-700{font-variation-settings:"wght" 700}.ms-wght-800{font-variation-settings:"wght" 800}.ms-wght-900{font-variation-settings:"wght" 900}.ms-fill{font-variation-settings:"FILL" 1}#app{font-family:var(--ff-base)!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-base);color:var(--fg-base)!important}hr{border-color:var(--border-base)}div.interface{display:flex;flex-direction:row;flex-grow:1;z-index:2;max-height:calc(100vh - var(--h-player) - var(--h-header))}@media only screen and (max-width: 750px){div.interface{max-height:calc(100vh - var(--h-player-mobile) - var(--h-header) - var(--h-sidebar))}}div.appRoot{display:flex;flex-direction:column;width:100vw;height:100vh}html,body{margin:0;padding:0}.bgImageWrapper{position:fixed;top:0;left:0;height:100%;width:100%;z-index:0!important;background:black}.bgImage{height:100%;width:100%;z-index:0!important;filter:blur(100px) brightness(.75);background-position:center;background-repeat:no-repeat;background-size:cover;transform:scale(1.1)}.mobileMenu{display:flex;flex-direction:row;justify-content:center}input[type=text],input[type=password]{background:var(--hover-2);border:1px solid var(--hover-3);border-radius:5px;color:var(--font-colour);padding:10px;width:auto;flex-grow:1;font-family:var(--font-family)}input[type=text]:focus,input[type=password]:focus{outline:none}input[type=text]:hover,input[type=password]:hover{background:var(--hover-1);border:1px solid var(--font-colour)}.hover\:text-primary:hover{color:var(--fg-base)}@media (min-width: 640px){.sm\:ml-0{margin-left:0}}@media (min-width: 768px){.md\:\!w-96{width:24rem!important}} +*/.playlist-entry[data-v-2482bde4]{display:grid;grid-template-columns:50px 40px 1fr 1fr 40px;gap:10px;padding:10px 0;border-radius:20px;border:1px solid transparent}.playlist-entry .artist-title[data-v-2482bde4]{grid-column:3/4}.playlist-entry:not(.withCover) .artist-title[data-v-2482bde4]{grid-column-start:2}.playlist-entry:not(.withAlbum) .artist-title[data-v-2482bde4]{grid-column-end:5}.playlist-entry div[data-v-2482bde4]{overflow:hidden}.playlist-entry .index[data-v-2482bde4],.playlist-entry .album[data-v-2482bde4],.playlist-entry .duration[data-v-2482bde4],.playlist-entry .icon[data-v-2482bde4]{margin:auto 0;font-size:.9rem;color:var(--fg-base-dk)}.playlist-entry .index.index[data-v-2482bde4],.playlist-entry .album.index[data-v-2482bde4],.playlist-entry .duration.index[data-v-2482bde4],.playlist-entry .icon.index[data-v-2482bde4]{cursor:pointer}.playlist-entry .index.icon[data-v-2482bde4],.playlist-entry .album.icon[data-v-2482bde4],.playlist-entry .duration.icon[data-v-2482bde4],.playlist-entry .icon.icon[data-v-2482bde4]{font-size:1.3rem;cursor:pointer;font-variation-settings:"wght" 500}.playlist-entry .index.icon.favourite[data-v-2482bde4],.playlist-entry .album.icon.favourite[data-v-2482bde4],.playlist-entry .duration.icon.favourite[data-v-2482bde4],.playlist-entry .icon.icon.favourite[data-v-2482bde4]{font-variation-settings:"FILL" 1}.playlist-entry.hovering[data-v-2482bde4]{background-color:var(--bg-hover-dk);border:var(--border-container)}.playlist-entry.hovering .index[data-v-2482bde4]{font-size:1.5rem;font-variation-settings:"FILL" 1}.playlist-entry.selected[data-v-2482bde4]{background-color:var(--bg-hover)}.playlist-entry .favourite-icon[data-v-2482bde4]{grid-column:5}.playlist-entry .duration[data-v-2482bde4]{grid-column:6}.playlist-entry .cover[data-v-2482bde4]{display:flex;justify-content:center}.playlist-entry img[data-v-2482bde4]{border-radius:4px;margin:auto 0}.playlist-entry .artist-title[data-v-2482bde4]{display:grid;grid-template-rows:1fr 1fr}.playlist-entry .artist-title .artist[data-v-2482bde4]{font-size:.8rem;color:var(--fg-base-dk)}.playlist-entry .artist-title span[data-v-2482bde4]{max-width:-moz-min-content;max-width:min-content;overflow:hidden}.playlist-entry.playing .title[data-v-2482bde4],.playlist-entry.playing .index[data-v-2482bde4]{color:var(--fg-secondary)}.playlist-entry.hovering .artist[data-v-2482bde4],.playlist-entry.hovering .album[data-v-2482bde4],.playlist-entry.selected .artist[data-v-2482bde4],.playlist-entry.selected .album[data-v-2482bde4]{color:var(--fg-base)}@media screen and (max-width: 768px){.playlist-entry[data-v-2482bde4]{padding:5px 0;border-radius:10px;grid-template-columns:30px 40px 1fr 1fr 30px 40px}.playlist-entry .index[data-v-2482bde4],.playlist-entry .duration[data-v-2482bde4]{font-size:.7rem}.playlist-entry .artist-title[data-v-2482bde4]{grid-column-end:5;font-size:.8rem}.playlist-entry .artist-title .artist[data-v-2482bde4]{font-size:.65rem}}.playlist[data-v-a918d839]{position:relative}.playlist .entries[data-v-a918d839]{position:relative;overflow-y:auto;display:flex;flex-direction:column;height:100%;max-height:30vh}.item[data-v-4496fc3d]{display:flex;align-items:flex-end;gap:1rem;padding:10px;border-radius:20px}.item img[data-v-4496fc3d]{width:50px;height:50px;border-radius:.5em;-o-object-fit:cover;object-fit:cover}.item .tag[data-v-4496fc3d]{padding:.2rem .5rem;border-radius:.5rem;background:var(--bg-base-lt);border:var(--border-container)}.item .info[data-v-4496fc3d]{display:flex;align-items:center;width:100%;gap:.5em}.item .name[data-v-4496fc3d]{font-weight:900;font-size:1rem}.item.large[data-v-4496fc3d]{min-width:40ch;background:var(--bg-base-lt);border:var(--border-container);border-radius:1em;padding:1em}.item.large .info[data-v-4496fc3d]{flex-direction:column;align-items:flex-start}.item.large .name[data-v-4496fc3d]{font-size:1.2rem}.item.large img[data-v-4496fc3d]{width:150px;height:150px}.item[data-v-4496fc3d]:not(.nohover):hover{background:var(--bg-hover-dk);cursor:pointer}.download-anim[data-v-2bea1460]{color:var(--fg-base-dk);animation:anim-2bea1460 .5s ease-out forwards}@keyframes anim-2bea1460{0%{opacity:1;transform:translateY(500px)}to{opacity:0;transform:translateY(0)}}.suggestion[data-v-2bea1460]{display:grid;gap:1em;width:100%}.suggestion .cover[data-v-2bea1460]{border-radius:.5em}.suggestion[data-v-2bea1460]:hover,.suggestion.selected[data-v-2bea1460]{background:var(--bg-hover-dk);cursor:pointer}.suggestion span[data-v-2bea1460]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.suggestion span[data-v-2bea1460]:last-child{color:var(--fg-base-dk);font-size:.8rem}.header[data-v-2bea1460]{background:var(--bg-base-dk);height:var(--h-header);display:flex;flex-direction:row;justify-content:space-between;align-items:center;box-shadow:0 0 10px 0 var(--shadow);z-index:10;border-bottom:var(--border-container)}.logo[data-v-2bea1460]{fill:var(--fg-base);padding:10px;translate:5px 5px;height:100%}.logo[data-v-2bea1460]:hover{cursor:pointer}.header .search{width:100%;display:flex;flex-direction:row;justify-content:center;margin:0 1em}.header .search .input-with-autocomplete{max-width:800px;width:100%;flex:1}.header .search .text-input-with-icon{width:100%}.startup[data-v-24a52185]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.startup .wrap[data-v-24a52185]{width:80%}.startup .logo[data-v-24a52185]{display:flex;flex-direction:row;justify-content:center;width:100%;align-items:center}.startup .logo svg[data-v-24a52185]{fill:var(--fg-base);padding:10px;translate:5px 5px;height:100%;max-width:400px}.startup .logo p[data-v-24a52185]{font-size:1em;color:var(--fg-base);z-index:1;margin-left:50px}.card[data-v-04b9eb92]{background:var(--bg-base-lt);border-radius:1em;border:var(--border-container);position:relative}.card[data-v-04b9eb92]:before{content:"";border-radius:1em;box-shadow:0 0 10px #0000001a;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.card.withHover[data-v-04b9eb92]:hover{background:var(--bg-hover-dk)}.card.disabled[data-v-04b9eb92]{opacity:.5;cursor:not-allowed!important}.notification[data-v-49e9d059]{padding:.5em 1em;display:flex;flex-direction:row;gap:2em;align-items:center;justify-content:space-between;color:#fff;filter:var(--drop-shadow)}.notification.success[data-v-49e9d059]{background-color:var(--success)}.notification.error[data-v-49e9d059]{background-color:var(--fail)}.notification.info[data-v-49e9d059]{background-color:var(--info)}.notification.warning[data-v-49e9d059]{background-color:var(--warning)}.notification h4[data-v-49e9d059],.notification p[data-v-49e9d059]{margin:0}.notification .details[data-v-49e9d059]{font-size:.8em}.close[data-v-49e9d059]{cursor:pointer}.notification[data-v-4dd7578e]{gap:2em;align-items:center;color:var(--fg-base);overflow:hidden;filter:var(--drop-shadow);background:var(--fg-contrast)}.notification .message[data-v-4dd7578e]{padding:.5em 1em}.notification .message h4[data-v-4dd7578e]{margin:0}.notification .message .details[data-v-4dd7578e]{font-size:.8em}.yes-no[data-v-4dd7578e]{display:flex;flex-direction:row}.yes-no .option[data-v-4dd7578e]{flex:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.yes-no .option.yes[data-v-4dd7578e]{background-color:var(--success)}.yes-no .option.no[data-v-4dd7578e]{background-color:var(--fail)}.notifications[data-v-ca1aa49b]{position:absolute;inset:auto auto 0 0;z-index:10;margin:2em 2em calc(var(--h-player) + 10px) calc(var(--w-sidebar) + 40px);display:flex;flex-direction:column;gap:1em;align-items:flex-start}.notifications .notification[data-v-ca1aa49b]{min-width:200px;max-width:400px}@font-face{font-family:v-contextmenu;src:url(data:application/vnd.ms-fontobject;base64,AAgAAFgHAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAr5f4wwAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kgMAAABfAAAAFZjbWFwmcAGvgAAAeAAAAGGZ2x5ZodVRJIAAANwAAABPGhlYWQPY7HCAAAA4AAAADZoaGVhB94DhAAAALwAAAAkaG10eAvpAAAAAAHUAAAADGxvY2EAdgCeAAADaAAAAAhtYXhwARIAXQAAARgAAAAgbmFtZT5U/n0AAASsAAACbXBvc3RBG9LpAAAHHAAAADkAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAMAAQAAAAEAAMP4l69fDzz1AAsEAAAAAADWIjbmAAAAANYiNuYAAP/hBAADGAAAAAgAAgAAAAAAAAABAAAAAwBRAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP4AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjmIgOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAV4AAQAAAAAAWAADAAEAAAAsAAMACgAAAV4ABAAsAAAABgAEAAEAAgB45iL//wAAAHjmIv//AAAAAAABAAYABgAAAAEAAgAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAKAAAAAAAAAACAAAAeAAAAHgAAAABAADmIgAA5iIAAAACAAAAAAAAAHYAngAFAAD/4QO8AxgAEwAoADEARABQAAABBisBIg4CHQEhJzQuAisBFSEFFRcUDgMnIychByMiLgM9ARciBhQWMjY0JhcGBwYPAQ4BHgEzITI2Jy4CJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIxwPPi3+SSw/FDIgEwh3DBISGRISjAgGBQUIAgIEDw4BbRcWCQUJCgb+pAUPGhW8HykCHwEMGScaTFkNIBsSYYg0bh0lFwkBAYCAARMbIA6nPxEaEREaEXwaFhMSGQcQDQgYGg0jJBQBd+QLGBMMHSbjAAAAAAEAAAAAAtYC8AARAAABFAcBBi4BNjcJAS4BPgEXARYC1Q3+qQ4hGAENATj+yA0BGCINAVcNAYASDP66CwEZIQ0BJwEnDSEZAQv+ugwAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAIABUAAQAAAAAAAgAHAB0AAQAAAAAAAwAIACQAAQAAAAAABAAIACwAAQAAAAAABQALADQAAQAAAAAABgAIAD8AAQAAAAAACgArAEcAAQAAAAAACwATAHIAAwABBAkAAAAqAIUAAwABBAkAAQAQAK8AAwABBAkAAgAOAL8AAwABBAkAAwAQAM0AAwABBAkABAAQAN0AAwABBAkABQAWAO0AAwABBAkABgAQAQMAAwABBAkACgBWARMAAwABBAkACwAmAWkKQ3JlYXRlZCBieSBpY29uZm9udAppY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQIBAwEEAAF4C2Fycm93LXJpZ2h0AAAAAAA=);src:url(data:application/vnd.ms-fontobject;base64,AAgAAFgHAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAr5f4wwAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kgMAAABfAAAAFZjbWFwmcAGvgAAAeAAAAGGZ2x5ZodVRJIAAANwAAABPGhlYWQPY7HCAAAA4AAAADZoaGVhB94DhAAAALwAAAAkaG10eAvpAAAAAAHUAAAADGxvY2EAdgCeAAADaAAAAAhtYXhwARIAXQAAARgAAAAgbmFtZT5U/n0AAASsAAACbXBvc3RBG9LpAAAHHAAAADkAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAMAAQAAAAEAAMP4l69fDzz1AAsEAAAAAADWIjbmAAAAANYiNuYAAP/hBAADGAAAAAgAAgAAAAAAAAABAAAAAwBRAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP4AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjmIgOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAV4AAQAAAAAAWAADAAEAAAAsAAMACgAAAV4ABAAsAAAABgAEAAEAAgB45iL//wAAAHjmIv//AAAAAAABAAYABgAAAAEAAgAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAKAAAAAAAAAACAAAAeAAAAHgAAAABAADmIgAA5iIAAAACAAAAAAAAAHYAngAFAAD/4QO8AxgAEwAoADEARABQAAABBisBIg4CHQEhJzQuAisBFSEFFRcUDgMnIychByMiLgM9ARciBhQWMjY0JhcGBwYPAQ4BHgEzITI2Jy4CJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIxwPPi3+SSw/FDIgEwh3DBISGRISjAgGBQUIAgIEDw4BbRcWCQUJCgb+pAUPGhW8HykCHwEMGScaTFkNIBsSYYg0bh0lFwkBAYCAARMbIA6nPxEaEREaEXwaFhMSGQcQDQgYGg0jJBQBd+QLGBMMHSbjAAAAAAEAAAAAAtYC8AARAAABFAcBBi4BNjcJAS4BPgEXARYC1Q3+qQ4hGAENATj+yA0BGCINAVcNAYASDP66CwEZIQ0BJwEnDSEZAQv+ugwAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAIABUAAQAAAAAAAgAHAB0AAQAAAAAAAwAIACQAAQAAAAAABAAIACwAAQAAAAAABQALADQAAQAAAAAABgAIAD8AAQAAAAAACgArAEcAAQAAAAAACwATAHIAAwABBAkAAAAqAIUAAwABBAkAAQAQAK8AAwABBAkAAgAOAL8AAwABBAkAAwAQAM0AAwABBAkABAAQAN0AAwABBAkABQAWAO0AAwABBAkABgAQAQMAAwABBAkACgBWARMAAwABBAkACwAmAWkKQ3JlYXRlZCBieSBpY29uZm9udAppY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQIBAwEEAAF4C2Fycm93LXJpZ2h0AAAAAAA=#iefix) format("embedded-opentype"),url(data:font/woff;base64,d09GRgABAAAAAAUAAAsAAAAAB1gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kgMY21hcAAAAYAAAABeAAABhpnABr5nbHlmAAAB4AAAAS4AAAE8h1VEkmhlYWQAAAMQAAAALwAAADYPY7HCaGhlYQAAA0AAAAAcAAAAJAfeA4RobXR4AAADXAAAAAwAAAAMC+kAAGxvY2EAAANoAAAACAAAAAgAdgCebWF4cAAAA3AAAAAfAAAAIAESAF1uYW1lAAADkAAAAUUAAAJtPlT+fXBvc3QAAATYAAAAKAAAADlBG9LpeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sE4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDxTYm7438AQw9zA0AAUZgTJAQAl4gyOeJzFkMENgDAMAy9t6QMxRV88GIgXc3TirlFMKA8mqCXHimMpUYAFiOIhJrAL48Ep19yPrO4nz2SpEait9K7+U0U0y65BJTMNNm/1H5vXfXT6CnVQJ7byknADpO8MFwAAeJwVjL1Kw1AARu93Y/7a3MTe/KdN2yS2V6kGjLEKYru4KA6Cgzj6ALp2cegiODj4DCKIr1D6AL6A7qIP4BNE48fhwFk+IhPy+yktpYDYZJ1skyNyRgiUEVKTxkhEmdMR3ER2fceURCYSNUtz6RB+qjheMS6HvqIqFkx0sZMUY5FTgd1yQg9QeDEQtqNzPuhw6RGNQHTvqhP6BLeXdazJVnW8OXWKvq3NDM5Dzh80RZY1SlcsE9e+p8t6Q6meZStyl70N2oMRiuj0kvXb/Oq+vIkHvg7M57DbffNl2opaNbeRZ/NQXWVaELFszcHsuxnYRjz8IvXwL/pBf0irDkeFkmO8pyPHBD48+s6qVzMJwLBfvTEEKcMFw5wb1aKJMGEQECwJ0awWRv30B+KIMJEAAHicY2BkYGAA4sM/urfH89t8ZeBmYQCBa0pmzxD0/4csDMwSQC4HAxNIFABNGgrfAHicY2BkYGBu+N/AEMPCAAJAkpEBFTADAEcJAmwEAAAAA+kAAAQAAAAAAAAAAHYAnnicY2BkYGBgZghkYGUAASYg5gJCBob/YD4DABD3AXAAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicY2BigAAuBuyAmZGJkZmRhYGxgjuxqCi/XLcoMz2jhIEBAC8dBRY=) format("woff"),url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kgMAAABfAAAAFZjbWFwmcAGvgAAAeAAAAGGZ2x5ZodVRJIAAANwAAABPGhlYWQPY7HCAAAA4AAAADZoaGVhB94DhAAAALwAAAAkaG10eAvpAAAAAAHUAAAADGxvY2EAdgCeAAADaAAAAAhtYXhwARIAXQAAARgAAAAgbmFtZT5U/n0AAASsAAACbXBvc3RBG9LpAAAHHAAAADkAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAMAAQAAAAEAAMP4i7dfDzz1AAsEAAAAAADWIjbmAAAAANYiNuYAAP/hBAADGAAAAAgAAgAAAAAAAAABAAAAAwBRAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP4AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjmIgOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAV4AAQAAAAAAWAADAAEAAAAsAAMACgAAAV4ABAAsAAAABgAEAAEAAgB45iL//wAAAHjmIv//AAAAAAABAAYABgAAAAEAAgAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAKAAAAAAAAAACAAAAeAAAAHgAAAABAADmIgAA5iIAAAACAAAAAAAAAHYAngAFAAD/4QO8AxgAEwAoADEARABQAAABBisBIg4CHQEhJzQuAisBFSEFFRcUDgMnIychByMiLgM9ARciBhQWMjY0JhcGBwYPAQ4BHgEzITI2Jy4CJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIxwPPi3+SSw/FDIgEwh3DBISGRISjAgGBQUIAgIEDw4BbRcWCQUJCgb+pAUPGhW8HykCHwEMGScaTFkNIBsSYYg0bh0lFwkBAYCAARMbIA6nPxEaEREaEXwaFhMSGQcQDQgYGg0jJBQBd+QLGBMMHSbjAAAAAAEAAAAAAtYC8AARAAABFAcBBi4BNjcJAS4BPgEXARYC1Q3+qQ4hGAENATj+yA0BGCINAVcNAYASDP66CwEZIQ0BJwEnDSEZAQv+ugwAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQAIABUAAQAAAAAAAgAHAB0AAQAAAAAAAwAIACQAAQAAAAAABAAIACwAAQAAAAAABQALADQAAQAAAAAABgAIAD8AAQAAAAAACgArAEcAAQAAAAAACwATAHIAAwABBAkAAAAqAIUAAwABBAkAAQAQAK8AAwABBAkAAgAOAL8AAwABBAkAAwAQAM0AAwABBAkABAAQAN0AAwABBAkABQAWAO0AAwABBAkABgAQAQMAAwABBAkACgBWARMAAwABBAkACwAmAWkKQ3JlYXRlZCBieSBpY29uZm9udAppY29uZm9udFJlZ3VsYXJpY29uZm9udGljb25mb250VmVyc2lvbiAxLjBpY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQIBAwEEAAF4C2Fycm93LXJpZ2h0AAAAAAA=) format("truetype"),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20standalone%3D%22no%22%3F%3E%0A%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%20%3E%0A%3C!--%0A2013-9-30%3A%20Created.%0A--%3E%0A%3Csvg%3E%0A%3Cmetadata%3E%0ACreated%20by%20iconfont%0A%3C%2Fmetadata%3E%0A%3Cdefs%3E%0A%0A%3Cfont%20id%3D%22iconfont%22%20horiz-adv-x%3D%221024%22%20%3E%0A%20%20%3Cfont-face%0A%20%20%20%20font-family%3D%22iconfont%22%0A%20%20%20%20font-weight%3D%22500%22%0A%20%20%20%20font-stretch%3D%22normal%22%0A%20%20%20%20units-per-em%3D%221024%22%0A%20%20%20%20ascent%3D%22896%22%0A%20%20%20%20descent%3D%22-128%22%0A%20%20%2F%3E%0A%20%20%20%20%3Cmissing-glyph%20%2F%3E%0A%20%20%20%20%0A%20%20%20%20%3Cglyph%20glyph-name%3D%22x%22%20unicode%3D%22x%22%20horiz-adv-x%3D%221001%22%0Ad%3D%22M281%20543q-27%20-1%20-53%20-1h-83q-18%200%20-36.5%20-6t-32.5%20-18.5t-23%20-32t-9%20-45.5v-76h912v41q0%2016%20-0.5%2030t-0.5%2018q0%2013%20-5%2029t-17%2029.5t-31.5%2022.5t-49.5%209h-133v-97h-438v97zM955%20310v-52q0%20-23%200.5%20-52t0.5%20-58t-10.5%20-47.5t-26%20-30t-33%20-16t-31.5%20-4.5q-14%20-1%20-29.5%20-0.5%0At-29.5%200.5h-32l-45%20128h-439l-44%20-128h-29h-34q-20%200%20-45%201q-25%200%20-41%209.5t-25.5%2023t-13.5%2029.5t-4%2030v167h911zM163%20247q-12%200%20-21%20-8.5t-9%20-21.5t9%20-21.5t21%20-8.5q13%200%2022%208.5t9%2021.5t-9%2021.5t-22%208.5zM316%20123q-8%20-26%20-14%20-48q-5%20-19%20-10.5%20-37t-7.5%20-25t-3%20-15t1%20-14.5%0At9.5%20-10.5t21.5%20-4h37h67h81h80h64h36q23%200%2034%2012t2%2038q-5%2013%20-9.5%2030.5t-9.5%2034.5q-5%2019%20-11%2039h-368zM336%20498v228q0%2011%202.5%2023t10%2021.5t20.5%2015.5t34%206h188q31%200%2051.5%20-14.5t20.5%20-52.5v-227h-327z%22%20%2F%3E%0A%20%20%20%20%0A%0A%20%20%20%20%0A%20%20%20%20%3Cglyph%20glyph-name%3D%22arrow-right%22%20unicode%3D%22%26%2358914%3B%22%20d%3D%22M725.3399071604938%20383.8342991012345a41.425224691358025%2041.425224691358025%200%200%200-12.924670103703681-30.074713125925918l-343.82936493827134-325.2708642765434a41.425224691358025%2041.425224691358025%200%200%200-56.91825872592596%2060.23227670123452l312.0976428246912%20295.1961511506175-312.0976428246914%20295.4447024987654a41.50807514074074%2041.50807514074074%200%200%200-1.6570089876543506%2058.575267713580246c15.74158538271605%2016.570089876543207%2042.00517783703699%2017.315743920987664%2058.575267713580246%201.6570089876543506l343.8293649382716-325.6022660740737a41.425224691358025%2041.425224691358025%200%200%200%2012.924670103703713-30.15756357530862z%22%20%20horiz-adv-x%3D%221024%22%20%2F%3E%0A%0A%20%20%20%20%0A%0A%0A%20%20%3C%2Ffont%3E%0A%3C%2Fdefs%3E%3C%2Fsvg%3E%0A) format("svg")}.v-contextmenu-icon{font-family:v-contextmenu!important;font-size:inherit;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.v-contextmenu-icon-right-arrow:before{content:""}.v-contextmenu{position:absolute;background-color:#fff;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:2px 2px 8px 0 rgba(150,150,150,.2);box-shadow:2px 2px 8px #96969633;font-size:14px;white-space:nowrap;line-height:1;z-index:2020;-webkit-tap-highlight-color:transparent}.v-contextmenu-inner{padding:5px 0;margin:0;list-style:none}.v-contextmenu-item{padding:5px 14px;line-height:1;color:#333;cursor:pointer}.v-contextmenu-item--hover{color:#fff;background-color:#2d3035}.v-contextmenu-item--disabled{color:#3336;cursor:not-allowed}.v-contextmenu-divider{height:0;margin:5px 0;border-bottom:1px solid #e8e8e8}.v-contextmenu-group__title{padding:5px 14px 2.5px;color:#3333338c;font-size:60%}.v-contextmenu-group__menus{padding:0 5px;margin:0;list-style:none}.v-contextmenu-group__menus .v-contextmenu-item{display:inline-block;padding:5px 9px}.v-contextmenu-submenu{position:relative}.v-contextmenu-submenu__title{padding-right:22.4px}.v-contextmenu-submenu__menus{position:absolute}.v-contextmenu-submenu__menus--left{left:0;-webkit-transform:translateX(-100%);transform:translate(-100%)}.v-contextmenu-submenu__menus--right{right:0;-webkit-transform:translateX(100%);transform:translate(100%)}.v-contextmenu-submenu__menus--top{top:-6px}.v-contextmenu-submenu__menus--bottom{bottom:-6px}.v-contextmenu-submenu__arrow{position:absolute;right:5px}.v-contextmenu-enter-active{-webkit-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.v-contextmenu-leave-active{-webkit-transition:opacity .3s cubic-bezier(1,.5,.8,1);transition:opacity .3s cubic-bezier(1,.5,.8,1)}.v-contextmenu-enter-from,.v-contextmenu-leave-to{opacity:0}.logo[data-v-cc71c038]{fill:var(--fg-base);padding:10px;width:60%}.logo[data-v-cc71c038]:hover{cursor:pointer}.collapseSidebar[data-v-cc71c038]{display:flex;flex-direction:row;justify-content:center;align-items:center;height:40px}.collapseSidebar.minimised[data-v-cc71c038]{justify-content:center}.collapseSidebar .clickSymbol[data-v-cc71c038]{border-radius:5px}.collapseSidebar .clickSymbol[data-v-cc71c038]:hover{cursor:pointer;background:var(--hover-2)}.static[data-v-cc71c038]{flex-shrink:0;flex-grow:0}@media screen and (max-width: 750px){.static[data-v-cc71c038]{display:flex;flex-direction:row;justify-content:space-between;width:100%}}h2[data-v-cc71c038]{margin-bottom:0}.cover[data-v-cc71c038]{position:absolute;bottom:10px;width:100%;transform:translate(-10px,10px)}.playlistList[data-v-cc71c038]{flex-grow:1;display:flex;flex-direction:column;overflow-y:auto}.playlistList.expanded[data-v-cc71c038]{padding:0 10px}.playlistList>a[data-v-cc71c038]{font-size:.92em;text-decoration:none;color:var(--font-darker);margin-bottom:4px;margin-top:4px}.playlistList>a[data-v-cc71c038]:hover{color:var(--font-colour)}hr[data-v-cc71c038]{width:100%}div.sidebar[data-v-cc71c038]{background:var(--bg-base-dk);width:calc(var(--w-sidebar) + 20px);min-width:calc(var(--w-sidebar) + 20px);max-width:calc(var(--w-sidebar) + 20px);display:flex;flex-direction:column;padding:10px;margin:10px;border-radius:8px;max-height:100%;z-index:1;position:relative;overflow:hidden;border:var(--border-container)}@media screen and (max-width: 750px){div.sidebar[data-v-cc71c038]{flex-direction:row;width:100vw;position:absolute;bottom:0;margin:0;max-width:100vw;border-radius:0}}h2[data-v-cc71c038]:hover{cursor:pointer}h2[data-v-cc71c038]{margin:0;padding:10px}div.body[data-v-85e4fc55]{flex-grow:1;overflow-y:auto;overflow-x:hidden;max-width:calc(100vw - var(--sidebar-width));max-height:calc(100vh - var(--player-height) - var(--header-height))}div.body.maximised[data-v-85e4fc55]{max-width:100vw;max-height:100vh}@media screen and (max-width: 950px){div.body[data-v-85e4fc55]{max-width:100vw;max-height:calc(100vh - var(--player-height-mobile) - var(--sidebar-height) - var(--header-height))}}.progressBar__track[data-v-a9b735d7]{position:relative;width:100%;height:5px;margin:10px 0;border-radius:1000vmax;background-color:var(--fg-base-dkr)}.progressBar__progress[data-v-a9b735d7]{position:relative;height:5px;border-radius:1000vmax;background-color:var(--fg-base)}.progressBar__progress.hover[data-v-a9b735d7]{background-color:var(--fg-secondary)}.progressBar__progress.hover[data-v-a9b735d7]:after{content:""}.progressBar__progress[data-v-a9b735d7]:after{position:absolute;top:-5px;right:-5px;width:15px;height:15px;border-radius:50%;background-color:var(--fg-base)}.dropdown[data-v-b20d4971]{position:relative;display:inline-block}.dropdown__selected[data-v-b20d4971]{color:var(--fg-base-dk);cursor:pointer;font-size:1.5rem;border-radius:10px;padding:5px}.dropdown__selected[data-v-b20d4971]:hover{background:var(--bg-hover-lt);color:var(--fg-secondary)}.dropdown__options[data-v-b20d4971]{position:absolute;z-index:999;width:max(100%,20rem);max-height:20rem;overflow-y:auto;background:var(--bg-base);border-radius:5px;filter:var(--drop-shadow)}.dropdown__options .dropdown__option[data-v-b20d4971]{padding:.5rem;cursor:pointer;transition:all .2s ease-in-out;display:grid;grid-template-columns:35px 1fr 20px}.dropdown__options .dropdown__option[data-v-b20d4971]:hover{background:var(--bg-hover)}.loader[data-v-ed1fd951]{width:20px;height:20px;margin:auto;border:3px solid var(--fg-base-dk);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation-ed1fd951 1s linear infinite}@keyframes rotation-ed1fd951{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#waveform wave,#waveform canvas{width:100%;height:calc(var(--h-player) / 2 - 1em)!important}.player .on-this-device>.material-symbols-rounded{color:var(--fg-secondary)}.player[data-v-aaf20643]{background:var(--bg-base-lt);border-top:1px solid var(--border-base);z-index:2}.icon[data-v-aaf20643]{color:var(--fg-base-dk)}.icon[data-v-aaf20643]:hover{color:var(--fg-base)}.desktop[data-v-aaf20643]{display:grid;height:calc(var(--h-player) - 1px);grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);grid-template-areas:"song-info controls aux";gap:10px}.desktop .song-info[data-v-aaf20643]{grid-area:song-info;display:grid;align-items:center;grid-template-columns:calc(var(--h-player) - 40px) fit-content(100%) 20px 20px;gap:10px;overflow:hidden}.desktop .song-info .title-artist[data-v-aaf20643]{overflow:hidden}.desktop .song-info div[data-v-aaf20643]{margin:auto 0}.desktop .controls[data-v-aaf20643]{grid-area:controls;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto}.desktop .controls .top[data-v-aaf20643]{display:grid;grid-template-columns:repeat(2,20px) 40px repeat(2,20px);gap:1.5em;justify-content:center}.desktop .controls .top span[data-v-aaf20643]{margin:auto 0;font-size:1.5rem}.desktop .controls .top span[data-v-aaf20643]:nth-child(3){font-size:2.5rem}.desktop .controls .bottom .display[data-v-aaf20643]{display:grid;grid-template-columns:1fr 10fr 1fr;gap:.5em;margin-bottom:.5em;align-items:center}.desktop .aux[data-v-aaf20643]{grid-area:aux;justify-content:end;display:grid;grid-template-columns:20px 20px 20px minmax(auto,8vw);gap:1em;align-items:center}.desktop .aux a.icon[data-v-aaf20643]{display:flex;text-decoration:none}.desktop .aux a.icon.router-link-active[data-v-aaf20643]{color:var(--fg-secondary)}.mobile .small[data-v-aaf20643]{display:grid;grid-template-columns:calc(var(--h-player-mobile) - 1em) 1fr 30px 30px;gap:1em;margin:.5em;align-items:center;max-width:calc(100vw - 2em)}.mobile .small .cover[data-v-aaf20643]{border-radius:10px;background:var(--bg-base-dk);margin:auto 0}.mobile .full[data-v-aaf20643]{position:absolute;top:0;left:0;width:100vw;height:calc(100vh - var(--h-sidebar));max-height:calc(100vh - var(--h-sidebar));overflow:hidden;background:var(--bg-base);padding:2em;display:grid;grid-template-columns:1fr;grid-template-rows:30px 1fr fit-content(100%)}.mobile .full .cover[data-v-aaf20643]{filter:drop-shadow(0 25px 25px rgba(0,0,0,.3))}.mobile .full .controls[data-v-aaf20643]{display:flex;flex-direction:column-reverse}.mobile .full .controls .top[data-v-aaf20643]{display:grid;grid-template-columns:repeat(5,1fr);gap:1.5em;justify-content:center}.mobile .full .controls .top span[data-v-aaf20643]{margin:auto 0;font-size:2rem}.mobile .full .controls .top span[data-v-aaf20643]:nth-child(3){font-size:3rem}.dropzone *[data-v-c5853362]{pointer-events:none}.dropzone.drophover[data-v-c5853362]:after{content:" ";display:block;text-align:center;color:var(--text-muted);font-style:italic;font-size:.8rem;background:rgba(0,0,0,.5);border-radius:1rem;position:absolute;top:0;right:0;bottom:0;left:0;margin-top:1em;margin-bottom:1em;margin-right:1em;z-index:1000}.noLink{text-decoration:none;color:unset}.noLink:hover{text-decoration:none;cursor:default;color:unset}.linkOnHover{text-decoration:none;color:unset}.linkOnHover:hover{text-decoration:underline;cursor:pointer;color:var(--fg-base)}.v-contextmenu{background:var(--fg-contrast)!important;font-family:var(--ff-base)!important;border:1px solid var(--bg-hover-dk);box-shadow:none;--webkit-box-shadow: none;color:var(--fg-base)!important}.v-contextmenu-divider{border-color:var(--border-base)}.v-contextmenu-item{color:var(--fg-base)!important;margin:5px;padding:10px 22px 10px 15px;border-radius:5px}.v-contextmenu-item--hover{background:var(--bg-hover-dk)!important}::-webkit-scrollbar{width:var(--w-scrollbar);height:var(--w-scrollbar);padding:0;margin:0;z-index:101}::-webkit-scrollbar-track{border-radius:var(--w-scrollbar)}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:var(--w-scrollbar)}::-webkit-scrollbar-thumb:hover{background:var(--bg-hover-dk)}:root{--fg-secondary: #1ed760;--fg-secondary-dk: #217e41;--bg-contrast: white;--fg-contrast: #121212;--fg-base: white;--fg-base-dk: #a7a7a7;--fg-base-dkr: #999;--bg-hover-ltr: #242424;--bg-hover-lt: hsla(0,0%,100%,.04);--bg-hover: hsla(0,0%,100%,.3);--bg-hover-dk: hsla(0,0%,100%,.1);--border-base: hsla(0,0%,100%,.1);--border-container: var(--border-base);--bg-gradient: linear-gradient(to left bottom, #1ed760, #217e41);--bg-base: #121212;--bg-base-lt: #181818;--bg-base-dk: black;--bg-fixedPlaylistHeader: var(--bg-base-lt);--border-fixedPlaylistHeader: #303030;--bg-input: var(--background-light);--ff-base: Poppins, sans-serif;--h-playlistEntry: 64px;--h-player: 88px;--h-player-mobile: 64px;--h-header: 64px;--w-sidebar: 44px;--h-sidebar: 64px;--w-scrollbar: 8px;--drop-shadow: drop-shadow(0 0 .5rem rgba(0, 0, 0, .2));--background: #1e1e1e;--neutral: #374148;--success: #00c48b;--fail: #e85454;--warning: #c7aa19;--info: #189de4}.showIfMobile{display:none!important}.hideIfMobile{display:inherit}@media only screen and (max-width: 750px){.showIfMobile{display:inherit!important}.hideIfMobile{display:none!important}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}h1{margin-top:.5rem;margin-bottom:.5rem;font-size:1.875rem;line-height:2.25rem;font-weight:900}h2{margin-top:1.25rem;margin-bottom:1.25rem;font-size:1.5rem;line-height:2rem;font-weight:700}h3{font-size:1.125rem;line-height:1.75rem;font-weight:700}h4{margin-top:1rem;margin-bottom:1rem;font-weight:700}h5{color:var(--fg-base-dk);text-transform:uppercase}h6{color:var(--fg-base-dk);margin-top:.5rem;margin-bottom:.5rem;font-size:.875rem;line-height:1.25rem}a{text-decoration-line:underline}a:hover{color:var(--fg-secondary)}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.text-base{color:var(--fg-base)}.text-muted{color:var(--fg-base-dk)}.text-very-muted{color:var(--fg-base-dkr)}.text-secondary{color:var(--fg-secondary)}.bg-secondary{background-color:var(--fg-secondary)}p{margin-top:.5rem;margin-bottom:.5rem}.h1{margin-top:.5rem;margin-bottom:.5rem;font-size:1.875rem;line-height:2.25rem;font-weight:900}.h2{margin-top:1.25rem;margin-bottom:1.25rem;font-size:1.5rem;line-height:2rem;font-weight:700}.h3{font-size:1.125rem;line-height:1.75rem;font-weight:700}.h5{color:var(--fg-base-dk);text-transform:uppercase}.h6{color:var(--fg-base-dk);margin-top:.5rem;margin-bottom:.5rem;font-size:.875rem;line-height:1.25rem}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.left-0{left:0}.z-\[1000\]{z-index:1000}.-z-10{z-index:-10}.z-10{z-index:10}.col-span-2{grid-column:span 2 / span 2}.m-0{margin:0}.mx-4{margin-left:1rem;margin-right:1rem}.my-0{margin-top:0;margin-bottom:0}.my-4{margin-top:1rem;margin-bottom:1rem}.my-auto{margin-top:auto;margin-bottom:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mr-2{margin-right:.5rem}.mt-8{margin-top:2rem}.mb-4{margin-bottom:1rem}.mt-0{margin-top:0}.mb-2{margin-bottom:.5rem}.ml-4{margin-left:1rem}.mt-4{margin-top:1rem}.mt-10{margin-top:2.5rem}.mb-0{margin-bottom:0}.ml-2{margin-left:.5rem}.ml-8{margin-left:2rem}.mr-4{margin-right:1rem}.ml-0{margin-left:0}.\!mt-0{margin-top:0!important}.mt-\[10px\]{margin-top:10px}.ml-auto{margin-left:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.grid{display:grid}.\!grid{display:grid!important}.hidden{display:none}.h-8{height:2rem}.h-12{height:3rem}.h-full{height:100%}.h-96{height:24rem}.h-max{height:-moz-max-content;height:max-content}.w-full{width:100%}.w-8{width:2rem}.w-max{width:-moz-max-content;width:max-content}.w-1\/2{width:50%}.w-1{width:.25rem}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-\[40vw\]{min-width:40vw}.max-w-sm{max-width:24rem}.max-w-\[60ch\]{max-width:60ch}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\!grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.rounded-xl{border-radius:.75rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.rounded-3xl{border-radius:1.5rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.border{border-width:1px}.p-4{padding:1rem}.p-2{padding:.5rem}.p-\[10px\]{padding:10px}.p-3{padding:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-4{padding-top:1rem}.pb-2{padding-bottom:.5rem}.pr-2{padding-right:.5rem}.pt-0{padding-top:0}.pb-4{padding-bottom:1rem}.pr-4{padding-right:1rem}.\!text-left{text-align:left!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-xs{font-size:.75rem;line-height:1rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-5xl{font-size:3rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-9xl{font-size:8rem;line-height:1}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-bold{font-weight:700}.font-black{font-weight:900}.font-light{font-weight:300}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-md{--tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / .07)) drop-shadow(0 2px 2px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-xl{--tw-drop-shadow: drop-shadow(0 20px 13px rgb(0 0 0 / .03)) drop-shadow(0 8px 5px rgb(0 0 0 / .08));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-2xl{--tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / .15));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}*{--tw-invert: 0}.fill-page{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.ms-wght-100{font-variation-settings:"wght" 100}.ms-wght-200{font-variation-settings:"wght" 200}.ms-wght-300{font-variation-settings:"wght" 300}.ms-wght-400{font-variation-settings:"wght" 400}.ms-wght-500{font-variation-settings:"wght" 500}.ms-wght-600{font-variation-settings:"wght" 600}.ms-wght-700{font-variation-settings:"wght" 700}.ms-wght-800{font-variation-settings:"wght" 800}.ms-wght-900{font-variation-settings:"wght" 900}.ms-fill{font-variation-settings:"FILL" 1}#app{font-family:var(--ff-base)!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-base);color:var(--fg-base)!important}hr{border-color:var(--border-base)}div.interface{display:flex;flex-direction:row;flex-grow:1;z-index:2;max-height:calc(100vh - var(--h-player) - var(--h-header))}@media only screen and (max-width: 750px){div.interface{max-height:calc(100vh - var(--h-player-mobile) - var(--h-header) - var(--h-sidebar))}}div.appRoot{display:flex;flex-direction:column;width:100vw;height:100vh}html,body{margin:0;padding:0}.bgImageWrapper{position:fixed;top:0;left:0;height:100%;width:100%;z-index:0!important;background:black}.bgImage{height:100%;width:100%;z-index:0!important;filter:blur(100px) brightness(.75);background-position:center;background-repeat:no-repeat;background-size:cover;transform:scale(1.1)}.mobileMenu{display:flex;flex-direction:row;justify-content:center}input[type=text],input[type=password]{background:var(--hover-2);border:1px solid var(--hover-3);border-radius:5px;color:var(--font-colour);padding:10px;width:auto;flex-grow:1;font-family:var(--font-family)}input[type=text]:focus,input[type=password]:focus{outline:none}input[type=text]:hover,input[type=password]:hover{background:var(--hover-1);border:1px solid var(--font-colour)}.hover\:text-primary:hover{color:var(--fg-base)}@media (min-width: 640px){.sm\:ml-0{margin-left:0}}@media (min-width: 768px){.md\:\!w-96{width:24rem!important}} diff --git a/src/ui/dist/assets/index-16d261c5.css.gz b/src/ui/dist/assets/index-16d261c5.css.gz new file mode 100644 index 000000000..859306213 Binary files /dev/null and b/src/ui/dist/assets/index-16d261c5.css.gz differ diff --git a/src/ui/dist/assets/index-b57d7504.js b/src/ui/dist/assets/index-1873d3cb.js similarity index 97% rename from src/ui/dist/assets/index-b57d7504.js rename to src/ui/dist/assets/index-1873d3cb.js index 42422f001..318b4d00e 100644 --- a/src/ui/dist/assets/index-b57d7504.js +++ b/src/ui/dist/assets/index-1873d3cb.js @@ -1 +1 @@ -import{i as C,B as E,q as m,D as o,S as N,T as P,E as T,G as A,o as s,c as a,g as B,L,a as n,t as I,F as c,H as d,d as _,j as f,f as y,m as O,n as V,_ as D}from"./index-8ac6a0d2.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"},H=i(()=>n("h1",null,"Something went wrong",-1)),J={class:"top flex gap-8"},M={class:"top min-w-max"},Y=i(()=>n("h2",null,"Top Result",-1)),z={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=C({__name:"index",setup(v){const R=E(),g=m(!0),p=m(null),h=m(!1),u=m(null),j=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),q=o(()=>[...N,...P]),b=async()=>{g.value=!0,p.value=null;const e=await fetch("/api/search",{method:"POST",body:JSON.stringify({query:k.value,scope:q.value})});if(g.value=!1,!e.ok){p.value=await e.text();return}const t=await e.json();u.value=t};return T(b),A(k,b),(e,t)=>(s(),a("div",F,[g.value?(s(),a("div",$,[B(L)])):p.value?(s(),a("div",G,[H,n("p",null,I(p.value),1)])):(s(),a(c,{key:2},[n("div",J,[n("div",M,[Y,B(d,{item:j.value,large:""},null,8,["item"])]),r.value.length?(s(),a("div",z,[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,f(h.value?r.value:r.value.slice(0,4),l=>(s(),y(d,{item:l},null,8,["item"]))),256))])):_("",!0)]),n("div",U,[x.value.length?(s(),a("div",W,[X,(s(!0),a(c,null,f(x.value,l=>(s(),y(d,{item:l},null,8,["item"]))),256))])):_("",!0),w.value.length?(s(),a("div",Z,[ee,(s(!0),a(c,null,f(w.value,l=>(s(),y(d,{item:l},null,8,["item"]))),256))])):_("",!0),S.value.length?(s(),a("div",te,[se,(s(!0),a(c,null,f(S.value,l=>(s(),y(d,{item:l},null,8,["item"]))),256))])):_("",!0)])],64))]))}});const ne=D(le,[["__scopeId","data-v-28db7468"]]);export{ne as default}; +import{i as C,B as E,q as m,D as o,S as N,T as P,E as T,G as A,o as s,c as a,g as B,L,a as n,t as I,F as c,H as d,d as _,j as f,f as y,m as O,n as V,_ as D}from"./index-9ce0501a.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"},H=i(()=>n("h1",null,"Something went wrong",-1)),J={class:"top flex gap-8"},M={class:"top min-w-max"},Y=i(()=>n("h2",null,"Top Result",-1)),z={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=C({__name:"index",setup(v){const R=E(),g=m(!0),p=m(null),h=m(!1),u=m(null),j=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),q=o(()=>[...N,...P]),b=async()=>{g.value=!0,p.value=null;const e=await fetch("/api/search",{method:"POST",body:JSON.stringify({query:k.value,scope:q.value})});if(g.value=!1,!e.ok){p.value=await e.text();return}const t=await e.json();u.value=t};return T(b),A(k,b),(e,t)=>(s(),a("div",F,[g.value?(s(),a("div",$,[B(L)])):p.value?(s(),a("div",G,[H,n("p",null,I(p.value),1)])):(s(),a(c,{key:2},[n("div",J,[n("div",M,[Y,B(d,{item:j.value,large:""},null,8,["item"])]),r.value.length?(s(),a("div",z,[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,f(h.value?r.value:r.value.slice(0,4),l=>(s(),y(d,{item:l},null,8,["item"]))),256))])):_("",!0)]),n("div",U,[x.value.length?(s(),a("div",W,[X,(s(!0),a(c,null,f(x.value,l=>(s(),y(d,{item:l},null,8,["item"]))),256))])):_("",!0),w.value.length?(s(),a("div",Z,[ee,(s(!0),a(c,null,f(w.value,l=>(s(),y(d,{item:l},null,8,["item"]))),256))])):_("",!0),S.value.length?(s(),a("div",te,[se,(s(!0),a(c,null,f(S.value,l=>(s(),y(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-1873d3cb.js.gz b/src/ui/dist/assets/index-1873d3cb.js.gz new file mode 100644 index 000000000..19519aca9 Binary files /dev/null and b/src/ui/dist/assets/index-1873d3cb.js.gz differ diff --git a/src/ui/dist/assets/index-b4997df0.js b/src/ui/dist/assets/index-3e9200e5.js similarity index 98% rename from src/ui/dist/assets/index-b4997df0.js rename to src/ui/dist/assets/index-3e9200e5.js index 362465d8a..77e4e6ff0 100644 --- a/src/ui/dist/assets/index-b4997df0.js +++ b/src/ui/dist/assets/index-3e9200e5.js @@ -1 +1 @@ -import{i as S,o,c as _,t as b,O as T,_ as V,q as y,E as X,D,f as k,d as C,a as t,b as N,F as $,m as B,n as U,ce as Z,g as v,I as x,j as I,w as G,h as ee,M as q,u as f,C as j,av as te,cr as M,cs as F,ct as Y,cu as J,cv as E,G as R,c1 as ae,bR as le,Y as se,cw as oe,B as ne,s as ie,bp as ce}from"./index-8ac6a0d2.js";import{_ as re}from"./Markdown.vue_vue_type_style_index_0_lang-2360dd37.js";import{T as W}from"./TrackCompact-89783a72.js";import{G as ue}from"./gistClient-e7ab47a2.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.32",z=l=>(B("data-v-6c134c33"),l=l(),U(),l),ve={class:"flex flex-col"},me={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("");X(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",ve,[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(),_($,{key:1},[p.value?(o(),_("span",me,[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-16d50c59"),l=l(),U(),l),ke={class:"wrap"},we=O(()=>t("h3",null,"Browser Data",-1)),$e=O(()=>t("h3",null,"Import / Export",-1)),xe={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"],je={key:1,class:"text-muted italic"},Re={__name:"LocalData",setup(l){const e=y([]),s=y([]),p=Z(),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,v(x,{class:"mb-4",icon:"delete",label:"Clean browser settings",onClick:h}),$e,t("div",xe,[v(x,{icon:"backup",label:"Back up / Export",onClick:w[0]||(w[0]=m=>r.$router.push("/export"))}),v(x,{icon:"cloud_download",label:"Import",onClick:w[1]||(w[1]=m=>r.$router.push("/import"))})]),t("div",Se,[Ce,e.value.length?(o(),_("div",Ve,[(o(!0),_($,null,I(e.value,(m,P)=>(o(),k(j,{key:P,class:"cover-wrapper p-4"},{default:G(()=>[v(ee,{src:m.name,class:"rounded-xl mb-4"},null,8,["src"]),t("div",Pe,[t("p",Ie,[v(q,{text:m.name},null,8,["text"])]),t("span",{class:"ml-2 material-symbols-rounded cursor-pointer",onClick:c=>d(m.name)},"delete",8,Ae)]),(o(!0),_($,null,I(m.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),_($,null,I(s.value,(m,P)=>(o(),k(j,{key:P,class:"track p-4"},{default:G(()=>[t("div",Ue,[t("p",Ee,[v(q,{text:m.name},null,8,["text"])]),t("span",{class:"material-symbols-rounded cursor-pointer",onClick:c=>a(m.name)},"delete",8,Oe)]),t("div",Le,[t("audio",{src:"/api/"+m.name.replace("local:","/src/tracks/"),controls:""},null,8,Ge)]),(o(!0),_($,null,I(m.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",je,"No local tracks"))])]))}},qe=V(Re,[["__scopeId","data-v-16d50c59"]]),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"},Qe=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(Qe,[["__scopeId","data-v-be9fa887"]]),Xe={class:"relative"},Ze=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",Xe,[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),v(x,{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(),_($,null,[st,v(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(),_($,null,I(s,(d,a)=>v(lt,{key:a,name:d},null,8,["name"])),64))]),nt,v(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"]),v(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,[v(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"]),v(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);R(()=>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"]]),Q="reAudioPlayer One",vt=`https://audius.co/oauth/auth?scope=read&app_name=${Q}&redirect_uri=`,mt="/audius/callback",ht=()=>{const l=encodeURIComponent(`${window.location.origin}${mt}`),e=`${vt}${l}`;window.open(e,Q,"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),$t=t("h5",null,"Client ID:",-1),xt=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))},m=`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 R(()=>{var c,u;return(u=(c=a.value)==null?void 0:c.github)==null?void 0:u.githubPat},P),(c,u)=>(o(),_($,null,[v(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:m},b(m))]),kt]),wt,$t,v(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"]),xt,v(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"]),v(x,{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,[v(x,{disabled:!a.value||!a.value.github.githubPat||!!a.value.github.gistId,icon:"search",label:"Search",onClick:P},null,8,["disabled"]),v(x,{disabled:!a.value||!h.value,icon:"save",label:"Save",onClick:r},null,8,["disabled"])]),It,v(x,{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,[v(x,{icon:"refresh",label:"Restart",onClick:e,type:"danger"}),v(x,{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"},jt=S({__name:"index",setup(l){const e=E(),s={About:ge,Privacy:Me,"Local Data":qe,Integrations:At,"Cache Policy":Ze,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),R(i,h=>{const r={tab:h};d.replace({query:r})}),(h,r)=>(o(),_("div",Bt,[Ut,t("div",Et,[t("div",Ot,[(o(!0),_($,null,I(p.value,w=>(o(),_("div",Lt,[t("span",Gt,b(w.name),1),(o(!0),_($,null,I(w.items,m=>(o(),k(pe,{key:m,name:m,active:i.value===m,onClick:P=>i.value=m},null,8,["name","active","onClick"]))),128))]))),256))]),v(j,{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(jt,[["__scopeId","data-v-2a5c5e34"]]);export{Ht as default}; +import{i as S,o,c as _,t as b,O as T,_ as V,q as y,E as X,D,f as k,d as C,a as t,b as N,F as $,m as B,n as U,ce as Z,g as v,I as x,j as I,w as G,h as ee,M as q,u as f,C as j,av as te,cr as M,cs as F,ct as Y,cu as J,cv as E,G as R,c1 as ae,bR as le,Y as se,cw as oe,B as ne,s as ie,bp as ce}from"./index-9ce0501a.js";import{_ as re}from"./Markdown.vue_vue_type_style_index_0_lang-99a7139c.js";import{T as W}from"./TrackCompact-8352124a.js";import{G as ue}from"./gistClient-e7b09d22.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.33",z=l=>(B("data-v-6c134c33"),l=l(),U(),l),ve={class:"flex flex-col"},me={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("");X(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",ve,[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(),_($,{key:1},[p.value?(o(),_("span",me,[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-16d50c59"),l=l(),U(),l),ke={class:"wrap"},we=O(()=>t("h3",null,"Browser Data",-1)),$e=O(()=>t("h3",null,"Import / Export",-1)),xe={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"],je={key:1,class:"text-muted italic"},Re={__name:"LocalData",setup(l){const e=y([]),s=y([]),p=Z(),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,v(x,{class:"mb-4",icon:"delete",label:"Clean browser settings",onClick:h}),$e,t("div",xe,[v(x,{icon:"backup",label:"Back up / Export",onClick:w[0]||(w[0]=m=>r.$router.push("/export"))}),v(x,{icon:"cloud_download",label:"Import",onClick:w[1]||(w[1]=m=>r.$router.push("/import"))})]),t("div",Se,[Ce,e.value.length?(o(),_("div",Ve,[(o(!0),_($,null,I(e.value,(m,P)=>(o(),k(j,{key:P,class:"cover-wrapper p-4"},{default:G(()=>[v(ee,{src:m.name,class:"rounded-xl mb-4"},null,8,["src"]),t("div",Pe,[t("p",Ie,[v(q,{text:m.name},null,8,["text"])]),t("span",{class:"ml-2 material-symbols-rounded cursor-pointer",onClick:c=>d(m.name)},"delete",8,Ae)]),(o(!0),_($,null,I(m.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),_($,null,I(s.value,(m,P)=>(o(),k(j,{key:P,class:"track p-4"},{default:G(()=>[t("div",Ue,[t("p",Ee,[v(q,{text:m.name},null,8,["text"])]),t("span",{class:"material-symbols-rounded cursor-pointer",onClick:c=>a(m.name)},"delete",8,Oe)]),t("div",Le,[t("audio",{src:"/api/"+m.name.replace("local:","/src/tracks/"),controls:""},null,8,Ge)]),(o(!0),_($,null,I(m.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",je,"No local tracks"))])]))}},qe=V(Re,[["__scopeId","data-v-16d50c59"]]),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"},Qe=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(Qe,[["__scopeId","data-v-be9fa887"]]),Xe={class:"relative"},Ze=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",Xe,[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),v(x,{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(),_($,null,[st,v(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(),_($,null,I(s,(d,a)=>v(lt,{key:a,name:d},null,8,["name"])),64))]),nt,v(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"]),v(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,[v(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"]),v(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);R(()=>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"]]),Q="reAudioPlayer One",vt=`https://audius.co/oauth/auth?scope=read&app_name=${Q}&redirect_uri=`,mt="/audius/callback",ht=()=>{const l=encodeURIComponent(`${window.location.origin}${mt}`),e=`${vt}${l}`;window.open(e,Q,"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),$t=t("h5",null,"Client ID:",-1),xt=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))},m=`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 R(()=>{var c,u;return(u=(c=a.value)==null?void 0:c.github)==null?void 0:u.githubPat},P),(c,u)=>(o(),_($,null,[v(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:m},b(m))]),kt]),wt,$t,v(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"]),xt,v(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"]),v(x,{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,[v(x,{disabled:!a.value||!a.value.github.githubPat||!!a.value.github.gistId,icon:"search",label:"Search",onClick:P},null,8,["disabled"]),v(x,{disabled:!a.value||!h.value,icon:"save",label:"Save",onClick:r},null,8,["disabled"])]),It,v(x,{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,[v(x,{icon:"refresh",label:"Restart",onClick:e,type:"danger"}),v(x,{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"},jt=S({__name:"index",setup(l){const e=E(),s={About:ge,Privacy:Me,"Local Data":qe,Integrations:At,"Cache Policy":Ze,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),R(i,h=>{const r={tab:h};d.replace({query:r})}),(h,r)=>(o(),_("div",Bt,[Ut,t("div",Et,[t("div",Ot,[(o(!0),_($,null,I(p.value,w=>(o(),_("div",Lt,[t("span",Gt,b(w.name),1),(o(!0),_($,null,I(w.items,m=>(o(),k(pe,{key:m,name:m,active:i.value===m,onClick:P=>i.value=m},null,8,["name","active","onClick"]))),128))]))),256))]),v(j,{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(jt,[["__scopeId","data-v-2a5c5e34"]]);export{Ht as default}; diff --git a/src/ui/dist/assets/index-3e9200e5.js.gz b/src/ui/dist/assets/index-3e9200e5.js.gz new file mode 100644 index 000000000..777b78aae Binary files /dev/null and b/src/ui/dist/assets/index-3e9200e5.js.gz differ diff --git a/src/ui/dist/assets/index-8ac6a0d2.js.gz b/src/ui/dist/assets/index-8ac6a0d2.js.gz deleted file mode 100644 index 36414f4aa..000000000 Binary files a/src/ui/dist/assets/index-8ac6a0d2.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-8ac6a0d2.js b/src/ui/dist/assets/index-9ce0501a.js similarity index 92% rename from src/ui/dist/assets/index-8ac6a0d2.js rename to src/ui/dist/assets/index-9ce0501a.js index 1236cc666..178b35f83 100644 --- a/src/ui/dist/assets/index-8ac6a0d2.js +++ b/src/ui/dist/assets/index-9ce0501a.js @@ -18,19 +18,19 @@ var N2=Object.defineProperty;var B2=(e,t,r)=>t in e?N2(e,t,{enumerable:!0,config * pinia v2.1.7 * (c) 2023 Eduardo San Martin Morote * @license MIT - */let pg;const Ua=e=>pg=e,mg=Symbol();function qu(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Ms;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Ms||(Ms={}));function IP(){const e=Kp(!0),t=e.run(()=>Ce({}));let r=[],s=[];const o=La({install(l){Ua(o),o._a=l,l.provide(mg,o),l.config.globalProperties.$pinia=o,s.forEach(u=>r.push(u)),s=[]},use(l){return!this._a&&!TP?s.push(l):r.push(l),this},_p:r,_a:null,_e:e,_s:new Map,state:t});return o}const gg=()=>{};function ep(e,t,r,s=gg){e.push(t);const o=()=>{const l=e.indexOf(t);l>-1&&(e.splice(l,1),s())};return!r&&zp()&&eA(o),o}function Ti(e,...t){e.slice().forEach(r=>{r(...t)})}const MP=e=>e();function ju(e,t){e instanceof Map&&t instanceof Map&&t.forEach((r,s)=>e.set(s,r)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const r in t){if(!t.hasOwnProperty(r))continue;const s=t[r],o=e[r];qu(o)&&qu(s)&&e.hasOwnProperty(r)&&!Pt(s)&&!$r(s)?e[r]=ju(o,s):e[r]=s}return e}const LP=Symbol();function $P(e){return!qu(e)||!e.hasOwnProperty(LP)}const{assign:Sr}=Object;function DP(e){return!!(Pt(e)&&e.effect)}function NP(e,t,r,s){const{state:o,actions:l,getters:u}=t,c=r.state.value[e];let f;function h(){c||(r.state.value[e]=o?o():{});const p=SA(r.state.value[e]);return Sr(p,l,Object.keys(u||{}).reduce((m,g)=>(m[g]=La(Ve(()=>{Ua(r);const y=r._s.get(e);return u[g].call(y,y)})),m),{}))}return f=vg(e,h,t,r,s,!0),f}function vg(e,t,r={},s,o,l){let u;const c=Sr({actions:{}},r),f={deep:!0};let h,p,m=[],g=[],y;const S=s.state.value[e];!l&&!S&&(s.state.value[e]={}),Ce({});let w;function T(W){let j;h=p=!1,typeof W=="function"?(W(s.state.value[e]),j={type:Ms.patchFunction,storeId:e,events:y}):(ju(s.state.value[e],W),j={type:Ms.patchObject,payload:W,storeId:e,events:y});const U=w=Symbol();Kn().then(()=>{w===U&&(h=!0)}),p=!0,Ti(m,j,s.state.value[e])}const V=l?function(){const{state:j}=r,U=j?j():{};this.$patch(G=>{Sr(G,U)})}:gg;function B(){u.stop(),m=[],g=[],s._s.delete(e)}function P(W,j){return function(){Ua(s);const U=Array.from(arguments),G=[],K=[];function H(D){G.push(D)}function E(D){K.push(D)}Ti(g,{args:U,name:W,store:R,after:H,onError:E});let I;try{I=j.apply(this&&this.$id===e?this:R,U)}catch(D){throw Ti(K,D),D}return I instanceof Promise?I.then(D=>(Ti(G,D),D)).catch(D=>(Ti(K,D),Promise.reject(D))):(Ti(G,I),I)}}const k={_p:s,$id:e,$onAction:ep.bind(null,g),$patch:T,$reset:V,$subscribe(W,j={}){const U=ep(m,W,j.detached,()=>G()),G=u.run(()=>ot(()=>s.state.value[e],K=>{(j.flush==="sync"?p:h)&&W({storeId:e,type:Ms.direct,events:y},K)},Sr({},f,j)));return U},$dispose:B},R=Xi(k);s._s.set(e,R);const q=(s._a&&s._a.runWithContext||MP)(()=>s._e.run(()=>(u=Kp()).run(t)));for(const W in q){const j=q[W];if(Pt(j)&&!DP(j)||$r(j))l||(S&&$P(j)&&(Pt(j)?j.value=S[W]:ju(j,S[W])),s.state.value[e][W]=j);else if(typeof j=="function"){const U=P(W,j);q[W]=U,c.actions[W]=j}}return Sr(R,q),Sr(nt(R),q),Object.defineProperty(R,"$state",{get:()=>s.state.value[e],set:W=>{T(j=>{Sr(j,W)})}}),s._p.forEach(W=>{Sr(R,u.run(()=>W({store:R,app:s._a,pinia:s,options:c})))}),S&&l&&r.hydrate&&r.hydrate(R.$state,S),h=!0,p=!0,R}function Qs(e,t,r){let s,o;const l=typeof t=="function";typeof e=="string"?(s=e,o=l?r:t):(o=e,s=e.id);function u(c,f){const h=_x();return c=c||(h?on(mg,null):null),c&&Ua(c),c=pg,c._s.has(s)||(l?vg(s,t,o,c):NP(s,o,c)),c._s.get(s)}return u.$id=s,u}const BP=e=>[...new Set(e)],VP=(e,t)=>e.filter(r=>!t.includes(r)),WP=(e,t)=>e.filter(r=>t.includes(r)),FP=e=>typeof e=="bigint"||!Number.isNaN(Number(e))&&Math.floor(Number(e))===e,HP=e=>typeof e=="bigint"||e>=0&&Number.isSafeInteger(e);function vs(e,t){if(t.length===0)return e;let r;const s=[...e];for(let o=s.length-1,l=0,u=0;o>0;o--,l++){l%=t.length,u+=r=t[l].codePointAt(0);const c=(r+l+u)%o,f=s[o],h=s[c];s[c]=f,s[o]=h}return s}const UP=(e,t)=>{const r=[];let s=e;if(typeof s=="bigint"){const o=BigInt(t.length);do r.unshift(t[Number(s%o)]),s/=o;while(s>BigInt(0))}else do r.unshift(t[s%t.length]),s=Math.floor(s/t.length);while(s>0);return r},qP=(e,t)=>e.reduce((r,s)=>{const o=t.indexOf(s);if(o===-1)throw new Error(`The provided ID (${e.join("")}) is invalid, as it contains characters that do not exist in the alphabet (${t.join("")})`);if(typeof r=="bigint")return r*BigInt(t.length)+BigInt(o);const l=r*t.length+o;if(Number.isSafeInteger(l))return l;if(typeof BigInt=="function")return BigInt(r)*BigInt(t.length)+BigInt(o);throw new Error("Unable to decode the provided string, due to lack of support for BigInt numbers in the current environment")},0),jP=/^\+?\d+$/,KP=e=>jP.test(e)?Number.parseInt(e,10):Number.NaN,GP=(e,t,r)=>Array.from({length:Math.ceil(e.length/t)},(s,o)=>r(e.slice(o*t,(o+1)*t))),tp=e=>new RegExp(e.map(t=>yg(t)).sort((t,r)=>r.length-t.length).join("|")),zP=e=>new RegExp(`^[${e.map(t=>yg(t)).sort((t,r)=>r.length-t.length).join("")}]+$`),yg=e=>e.replace(/[\s#$()*+,.?[\\\]^{|}-]/g,"\\$&"),np=16,rp=3.5,ZP=12,ip=16,YP=12,sp=100;class _g{constructor(t="",r=0,s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",o="cfhistuCFHISTU"){if(this.minLength=r,typeof r!="number")throw new TypeError(`Hashids: Provided 'minLength' has to be a number (is ${typeof r})`);if(typeof t!="string")throw new TypeError(`Hashids: Provided 'salt' has to be a string (is ${typeof t})`);if(typeof s!="string")throw new TypeError(`Hashids: Provided alphabet has to be a string (is ${typeof s})`);const l=Array.from(t),u=Array.from(s),c=Array.from(o);this.salt=l;const f=BP(u);if(f.lengthrp)&&(p=Math.ceil(this.alphabet.length/rp),p>this.seps.length&&(m=p-this.seps.length,this.seps.push(...this.alphabet.slice(0,m)),this.alphabet=this.alphabet.slice(m))),this.alphabet=vs(this.alphabet,l);const g=Math.ceil(this.alphabet.length/ZP);this.alphabet.length<3?(this.guards=this.seps.slice(0,g),this.seps=this.seps.slice(g)):(this.guards=this.alphabet.slice(0,g),this.alphabet=this.alphabet.slice(g)),this.guardsRegExp=tp(this.guards),this.sepsRegExp=tp(this.seps),this.allowedCharsRegExp=zP([...this.alphabet,...this.guards,...this.seps])}encode(t,...r){const s="";let o=Array.isArray(t)?t:[...t!=null?[t]:[],...r];return o.length===0||(o.every(FP)||(o=o.map(l=>typeof l=="bigint"||typeof l=="number"?l:KP(String(l)))),!o.every(HP))?s:this._encode(o).join("")}decode(t){return!t||typeof t!="string"||t.length===0?[]:this._decode(t)}encodeHex(t){let r=t;switch(typeof r){case"bigint":r=r.toString(ip);break;case"string":if(!/^[\dA-Fa-f]+$/.test(r))return"";break;default:throw new Error(`Hashids: The provided value is neither a string, nor a BigInt (got: ${typeof r})`)}const s=GP(r,YP,o=>Number.parseInt(`1${o}`,16));return this.encode(s)}decodeHex(t){return this.decode(t).map(r=>r.toString(ip).slice(1)).join("")}isValidId(t){return this.allowedCharsRegExp.test(t)}_encode(t){let{alphabet:r}=this;const s=t.reduce((h,p,m)=>h+(typeof p=="bigint"?Number(p%BigInt(m+sp)):p%(m+sp)),0);let o=[r[s%r.length]];const l=[...o],{seps:u}=this,{guards:c}=this;if(t.forEach((h,p)=>{const m=l.concat(this.salt,r);r=vs(r,m);const g=UP(h,r);if(o.push(...g),p+10){const p=h/2;o=o.slice(p,p+this.minLength)}}return o}_decode(t){if(!this.isValidId(t))throw new Error(`The provided ID (${t}) is invalid, as it contains characters that do not exist in the alphabet (${this.guards.join("")}${this.seps.join("")}${this.alphabet.join("")})`);const r=t.split(this.guardsRegExp),s=r.length===3||r.length===2?1:0,o=r[s];if(o.length===0)return[];const l=o[Symbol.iterator]().next().value,u=o.slice(l.length).split(this.sepsRegExp);let c=this.alphabet;const f=[];for(const h of u){const p=[l,...this.salt,...c],m=vs(c,p.slice(0,c.length));f.push(qP(Array.from(h),m)),c=m}return this._encode(f).join("")!==t?[]:f}}new _g("reapOne.playlist",22);const bg=new _g("reapOne.track",22),op=e=>bg.encode(String(e)),JP=e=>{const t=bg.decode(e);return Number(t[0])},Ku=(e,t)=>String(e).padStart(t,"0"),Aa=e=>e?e.startsWith("local:")?e.replace("local:","/src/covers/"):e:null,XP=e=>e?e.startsWith("local:")?e.replace("local:","/src/covers/"):e:null,wg=(e,t="track")=>(t=="playlist"?XP:Aa)(e),QP=e=>e.replace(/\w\S*/g,t=>t.charAt(0).toUpperCase()+t.substring(1).toLowerCase()),Pc=e=>window.open(e,"_blank"),Gu=Ve(()=>window.innerWidth<768),q6=e=>/^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$/i.test(e),j6=e=>{const{key:t,mode:r}=e.spotify.features,s=["B","F#","C#","G#","D#","A#","F","C","G","D","A","E"],o=["A","D#","A#","F","C","G","D","A","E","B","F#","C#"];return`${(r=="Major"?s:o).indexOf(t)+1}${r=="Major"?"B":"A"}`},K6=(e,t=null)=>{t||(e.includes("track")&&(t="track"),e.includes("album")&&(t="album"),e.includes("playlist")&&(t="playlist"));const r=new RegExp(`https://open.spotify.com/${t}/([a-zA-Z0-9]+)`),s=e.match(r);return s?s[1]:null},G6=e=>new Date(e).toLocaleDateString("en-GB",{year:"numeric",month:"short",day:"numeric"}),z6=e=>{if(e<=0)return"N/A";const t=Math.floor(e/60),r=Ku(Math.floor(e%60),2);return`${t}:${r}`},Z6=e=>{const t=["B","KB","MB","GB","TB"];let r=0;for(;e>1e3&&r{await Zt().fetchPlaylists()},e5=e=>Zt().getPlaylistById(e),t5=async e=>{await fetch(`/api/playlists/${e.id}`,{method:"POST",body:JSON.stringify({name:e.name,description:e.description,cover:e.cover})}),await eo()},n5=async()=>await(await fetch("/api/playlists")).json(),r5=async e=>await(await fetch(`/api/playlists/${e}`)).json(),Y6=e=>e5(e),J6=async e=>(await fetch(`/api/playlists/${e}`,{method:"DELETE"})).ok?(await eo(),!0):!1,Cc=async(e="classic")=>{const r=await(await fetch(`/api/playlists/new?type=${e}`)).text();return await eo(),r},Ec=async(e="classic",t,r="",s="")=>{const l=(await Cc(e)).split("/").pop();return await t5({id:l,name:t,description:r,cover:s,plays:0,type:e}),l},X6=async(e,t)=>{await fetch(`/api/playlists/${e}/tracks`,{method:"DELETE",body:JSON.stringify({songId:t})}),await eo()},Q6=async e=>await(await fetch("/api/playlists/smart/peek",{method:"POST",body:JSON.stringify(e)})).json(),i5=async e=>await(await fetch(`/api/playlists/smart/${e}`)).json(),s5=async(e,t)=>{await fetch(`/api/playlists/smart/${e}`,{method:"PUT",body:JSON.stringify({definition:t})}),await eo()},Zt=Qs({id:"data",state:()=>({playlists:[]}),getters:{notEmpty(){return!this.empty},empty(){return this.playlists.length===0},playlistsAsDropdown(e=!0){const t=this.playlists.filter(r=>r.type==="classic").map(r=>({value:r.id,label:r.name}));return e&&t.push({value:"new",label:"(new playlist)"}),t},getPlaylistById(){return e=>this.playlists.find(t=>t.id===e)}},actions:{setPlaylists(e){this.playlists=e},initialise(){this.fetchPlaylists()},async fetchPlaylists(...e){if(e){console.log("fetching playlists",e);for(const r of e){const s=this.playlists.findIndex(o=>o.id===r);if(s===-1)return;this.playlists[s]=await r5(r)}}const t=await n5();this.setPlaylists(t)}}}),o5=class{constructor(){Ri(this,"ws",null);Ri(this,"connections",Ce([]));Ri(this,"player",null);Ri(this,"me",null);Ri(this,"sendInfoTask",null);this.connect()}connect(){console.log("attempting reconnect");const e=window.location.hostname,t=window.location.port=="5173"?1234:window.location.port;this.ws=new WebSocket(`ws://${e}:${t}/player/ws`);const r=Bt();this.sendInfoTask&&clearInterval(this.sendInfoTask),this.sendInfoTask=setInterval(()=>this.sendInfo(),300),this.ws.onclose=()=>{console.log("disconnected"),setTimeout(()=>this.connect(),1e3)},this.ws.onopen=()=>{console.log("connected")};const s=o=>{if(typeof o=="string")switch(o){case"play":r.play();break;case"pause":r.pause();break}if(typeof o=="object")switch(o.command){case"seek":r.seek(o.time);break;case"set volume":r.setVolume(o.volume);break;case"set repeat":r.setRepeat(o.repeat);break;case"set mute":r.setMute(o.mute);break}};this.ws.onmessage=o=>{switch(o=JSON.parse(o.data),o.type){case"info":if(typeof o.data=="boolean")return;r.playing=o.data.playing,r.progress=o.data.progress,r.volume=o.data.volume,r.repeat=o.data.repeat;break;case"new client":console.log("new client",o.data);break;case"client disconnected":break;case"player disconnected":break;case"connections":this.updateConnections(o.data);break;case"command":s(o.data);break}}}sendInfo(){var r,s;if(((s=(r=this.me)==null?void 0:r.type)==null?void 0:s.toLowerCase())!=="player")return;const e=Bt(),t={playing:e.playing,progress:e.progress,volume:e.volume,repeat:e.repeat};this.send("info",t)}updateConnections(e){this.connections.value=e,this.me=e.find(t=>t.friendlyName.includes("(You)"))}send(e,t){var r;(r=this.ws)==null||r.send(JSON.stringify({type:e,data:t}))}sendCommand(e){this.send("command",e)}setPlayer(e){this.send("set player",e.id)}makeMePlayer(){this.send("type","Player")}play(){this.sendCommand("play")}pause(){this.sendCommand("pause")}seek(e){this.sendCommand({command:"seek",time:e})}setVolume(e){this.sendCommand({command:"set volume",volume:e})}setRepeat(e){this.sendCommand({command:"set repeat",repeat:e})}setMute(e){this.sendCommand({command:"set mute",mute:e})}},a5=()=>{fetch("/api/player/next")},l5=()=>{fetch("/api/player/previous")},u5=e=>{fetch("/api/player/shuffle",{method:"POST",body:JSON.stringify(e)})},c5=()=>fetch("/api/player/shuffle").then(e=>e.json()),Sc=Qs({id:"downloader",state:()=>({ws:null,states:{},onDownload:[]}),getters:{empty(){return Object.keys(this.states).length===0}},actions:{_fireDownload(e){this.onDownload.forEach(t=>t(e))},initialise(){const e=()=>{console.log("[downloader] attempting reconnect");const t=window.location.hostname,r=window.location.port==="5173"?1234:window.location.port;this.ws=new WebSocket(`ws://${t}:${r}/download/ws`),this.ws.onclose=()=>{console.log("[downloader] ws closed"),setTimeout(()=>e(),1e3)},this.ws.onopen=()=>{console.log("[downloader] ws connected")},this.ws.onmessage=s=>{const o=JSON.parse(s.data);if(!o.action){if(o.status=="finished"){this.states[o.songId]={...this.states[o.songId],...o};return}this.states[o.songId]=o}}};e()},send(e){var t;(t=this.ws)==null||t.send(JSON.stringify(e))},downloadFromDb(e){this.send({action:"download",source:"db",songId:e}),this.states[e]={songId:e,status:"pending"},this._fireDownload(e)},downloadOther(e){this.send({action:"download",source:"other",...e}),this.states[e.id]={songId:e.id,status:"pending"},this._fireDownload(e.id)},download(e){window.open(`/api/tracks/${e}/download`,"_blank","noopener noreferrer"),this.states[e].status="downloaded"},isSongDownloading(e){const t=this.states[e];return t!=null&&t.internal?t.status==="downloading":!1}}}),to=async()=>{await Zt().fetchPlaylists()},eO=async e=>{await fetch(`/api/tracks/${e.id}`,{method:"PUT",body:JSON.stringify({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover})}),await to()},tO=async(e,t,r)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({[t]:r})}),await to()},nO=async e=>await(await fetch("/api/browse/track",{method:"POST",body:JSON.stringify({url:e})})).json(),Ag=e=>({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover,spotify:e.metadata?JSON.stringify(e.metadata.spotify):""}),xg=async(e,t)=>{e==="new"&&(e=await Cc()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(Ag(t))}),await to()},Pg=async(e,t)=>{e==="new"&&(e=await Cc()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(t.map(r=>Ag(r)))}),await to()},rO=async(e,t=!0)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({favourite:t})}),await to()},iO=e=>{Sc().downloadFromDb(e)},f5=async e=>await(await fetch(`/api/tracks/${e}`)).json(),sO=async e=>{const t=JP(e);return await f5(t)},d5=async(e,t=!1,r=null)=>{const s={id:e};return t&&(s.forceFetch=!0),r&&(s.spotifyId=r),await(await fetch("/api/spotify/meta",{method:"POST",body:JSON.stringify(s)})).json()},oO=async e=>await(await fetch(`/api/spotify/recommendations/${e}`)).json(),aO=async e=>{await fetch(`/api/player/stream/${e}`,{method:"DELETE"})},h5=async e=>{const r=await(await fetch("https://spotify-lyric-api-984e7b4face0.herokuapp.com/?trackid="+e)).json();return{error:r.message,lyrics:r.lines}},p5=async(e=!1)=>{var o,l;const r=Bt().song;let s=(o=r.metadata.spotify)==null?void 0:o.id;return!s&&e&&(s=(l=(await d5(r.id)).spotify)==null?void 0:l.id),s?await h5(s):{error:"Spotify equivalent unknown."}},Bt=Qs({id:"player",state:()=>({playing:!1,progress:0,ready:!1,muted:!1,shuffle:!1,song:{title:null,artist:null,album:null,cover:Aa(null),source:null,duration:null,favourite:!1,id:-1,metadata:{plays:0,spotify:{id:null}}},playlistId:null,lyrics:null,volume:50,repeat:"repeat",sharedPlayer:null,player:null}),actions:{playPause(){this.playing?this.pause():this.play()},toggleRepeat(){var e;switch(this.repeat){case"repeat":this.repeat="repeat_on";break;case"repeat_on":this.repeat="repeat_one_on";break;case"repeat_one_on":this.repeat="repeat";break}localStorage.setItem("reap.repeat",this.repeat),(e=this.player)==null||e.setRepeat(this.repeat)},setRepeat(e){this.repeat=e},setMute(e){var t;this.muted=e,(t=this.player)==null||t.setMute(e)},toggleMute(){this.setMute(!this.muted)},setShuffle(e){this.shuffle=e,u5(e),Zt().fetchPlaylists()},toggleShuffle(){this.setShuffle(!this.shuffle)},onSongEnded(){if(this.repeat==="repeat_one_on")this.play();else{if(this.repeat==="repeat"&&this.playlist.index.value===this.playlist.songs.length-1)return;this.next()}},play(){this.player.play()},pause(){this.player.pause()},next(){a5()},previous(){l5()},setPlayer(e){e&&this.player!==e&&(this.player=e)},async setSong(e){e.id!=this.song.id&&(this.song=e,this.song.cover=Aa(e.cover),this.progress=0,this.lyrics=null,this.lyrics=await p5(!0))},setReady(e){this.ready!==e&&(this.ready=e,e?Zt().initialise():(this.$reset(),Zt().$reset()))},setDuration(e){this.song.duration=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({duration:e})})},setPlaying(e){this.playing=e},seek(e){this.player.seek(e)},seekPercent(e){this.seek(this.durationSeconds*e/100)},setProgress(e){this.progress=Math.round(e)},setFavourite(e){this.song.favourite=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({favourite:e})})},setPlaylist(e){this.playlistId=e},setVolume(e){var t;e!=this.volume&&(this.volume=e,localStorage.setItem("reap.volume",e),this.player.setVolume&&((t=this.player)==null||t.setVolume(e)))},toggleFavourite(){this.setFavourite(!this.song.favourite)},async initialise(){this.volume=localStorage.getItem("reap.volume")||50,this.repeat=localStorage.getItem("reap.repeat")||"repeat_on",this.sharedPlayer=new o5,this.shuffle=await c5()},async loadPlaylist(e,t=null){const r={type:"playlist",id:e};e==="track"&&(r.type=e,r.id=t),e==="artist"&&(r.type=e,r.name=t,delete r.id),await fetch("/api/player/load",{method:"POST",body:JSON.stringify(r)})},loadSong(e,t){const r={index:t};e==="track"?r.type=e:r.playlist=e,fetch("/api/player/at",{method:"POST",body:JSON.stringify(r)})}},getters:{playlist(e){return Zt().playlists.find(t=>t.id===e.playlistId)},hasLyrics(e){var t;return(t=e.lyrics)==null?void 0:t.lyrics},durationSeconds(e){return e.song.duration},displayDuration(e){const t=e.song.duration;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Ku(Math.floor(t%60),2)}`},stream(e){return`/api/player/stream/${e.song.id}`},cover(e){return e.song.cover},progressPercent(e){return e.progress/this.durationSeconds*1e3},displayProgress(e){const t=e.progress;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Ku(Math.floor(t%60),2)}`},loaded(e){return e.song.id!=-1},shuffleIcon(e){return e.shuffle?"shuffle_on":"shuffle"},muteIcon(e){return e.muted?"volume_off":e.volume>50?"volume_up":e.volume>0?"volume_down":"volume_mute"}}});const m5=(e,t,r)=>{const s=new CustomEvent("player.play",{detail:{title:e,artist:t,source:r}});window.dispatchEvent(s)},g5={components:{Marquee:sr},name:"PlayerInPicture",props:{expandCover:Boolean},watch:{disabled(){this.disabled||this.$nextTick(()=>{this.$refs.player.addEventListener("mousedown",this.mouseDown,!1),window.addEventListener("mouseup",this.mouseUp,!1)})}},methods:{mouseDown(e){const t=this.$refs.player,r=document.getElementById("appRoot");e=e||window.event;var s=e.clientX,o=e.clientY,l=t.offsetTop,u=t.offsetLeft,c=parseInt(t.offsetWidth),f=parseInt(t.offsetHeight),h=parseInt(r.offsetWidth)-8,p=parseInt(r.offsetHeight)-8;r.style.cursor="move";var m=s-u,g=o-l;document.onmousemove=y=>{y=y||window.event,y.preventDefault(),y.stopPropagation();var S=y.clientX,w=y.clientY,T=S-m,V=w-g;T<8&&(T=8),V<8&&(V=8),T+c>h&&(T=h-c),V+f>p&&(V=p-f),this.divMove(t,T,V)}},mouseUp(){document.getElementById("appRoot").style.cursor="default",document.onmousemove=function(){}},divMove(e,t,r){e.style.bottom="auto",e.style.right="auto",e.style.left=t+"px",e.style.top=r+"px"}},data(){const e=Bt();return window.addEventListener("player.play",t=>{const r=t.detail,s=r.source;if(this.name=`${r.artist} - ${r.title}`,e.pause(),s.includes("youtu")){var o=/youtu(?:.*\/v\/|.*v\=|\.be\/)([A-Za-z0-9_\-]{11})/;const l=s.match(o);if(l!=null&&l[1]){this.el=``,this.minimised=!1,this.disabled=!1;return}}if(s.includes("audius")){var o=/audius.co\/([A-Za-z0-9]+)\/([A-Za-z0-9\-]+)/;const u=s.match(o);if(console.log(u,s),u!=null&&u[1]&&(u!=null&&u[2])){fetch(`https://blockdaemon-audius-discovery-01.bdnodes.net/v1/full/tracks?handle=${u[1]}&slug=${u[2]}`).then(c=>c.json()).then(c=>{const f=c.data.id;this.el=``}),this.minimised=!1,this.disabled=!1;return}}if(s.includes("spotify")){var o=/spotify(?:.*\/(album|track|playlist)\/)([A-Za-z0-9_\-]{22})/;const u=s.match(o);if(u!=null&&u[1]){console.log(u),this.el=``,this.minimised=!1,this.disabled=!1;return}}s.includes("soundcloud")&&(fetch(`https://soundcloud.com/oembed?url=${s}&format=json`).then(l=>l.json()).then(l=>{this.el=l.html.replace('height="400"','height="70"').replace("&show_artwork=true","&show_artwork=true&auto_play=true").replace("o.minimised=!o.minimised)},De(o.minimised?"zoom_out_map":"zoom_in_map"),1),te("span",{class:"material-symbols-rounded ms-wght-500",onClick:t[1]||(t[1]=c=>o.disabled=!o.disabled)},"close")])],2),te("div",{class:Xe([{minimised:o.minimised},"frame"]),innerHTML:o.el},null,10,b5)],512))}const A5=at(g5,[["render",w5]]),x5={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 809.48 395.8"},P5=te("path",{d:"M80.09 254.67c-4.84 0-9.04-1.72-12.6-5.16-3.57-3.43-5.35-7.7-5.35-12.79V79.04c0-4.84 1.78-8.97 5.35-12.41 3.56-3.44 7.76-5.16 12.6-5.16s8.97 1.72 12.41 5.16c3.43 3.43 5.15 7.57 5.15 12.41v157.68c0 5.09-1.72 9.36-5.15 12.79-3.44 3.44-7.58 5.16-12.41 5.16Zm70.63 61.47c-4.84 0-8.97-1.78-12.41-5.34-3.44-3.57-5.16-7.77-5.16-12.6V17.57c0-4.58 1.72-8.66 5.16-12.22 3.43-3.56 7.57-5.34 12.41-5.34s9.04 1.78 12.6 5.34c3.56 3.57 5.34 7.64 5.34 12.22V298.2c0 4.83-1.78 9.03-5.34 12.6-3.56 3.56-7.76 5.34-12.6 5.34ZM17.38 193.2c-4.79 0-8.88-1.7-12.27-5.1-3.4-3.4-5.1-7.61-5.1-12.65v-35.13c0-4.79 1.7-8.88 5.1-12.27 3.4-3.4 7.49-5.1 12.27-5.1s9 1.7 12.66 5.1c3.65 3.4 5.48 7.49 5.48 12.27v35.33c0 3.92-1.25 7.85-3.85 10.77-4.01 4.51-8.78 6.77-14.28 6.77Zm195.29 60.46c-4.78 0-8.87-1.7-12.28-5.11-3.4-3.4-5.1-7.62-5.1-12.66V79.86c0-4.79 1.7-8.88 5.1-12.28 3.4-3.4 7.5-5.11 12.28-5.11s9.01 1.7 12.66 5.11c3.65 3.4 5.48 7.49 5.48 12.28V235.9c0 5.04-1.76 9.26-5.29 12.66-3.52 3.4-7.81 5.11-12.85 5.11Zm62.52-60.46c-4.78 0-8.94-1.7-12.46-5.1-3.52-3.4-5.29-7.61-5.29-12.65v-35.13c0-4.79 1.76-8.88 5.29-12.27 3.53-3.4 7.68-5.1 12.46-5.1s8.94 1.7 12.46 5.1c3.53 3.4 5.29 7.49 5.29 12.27v35.13c0 5.03-1.76 9.25-5.29 12.65-3.52 3.4-7.68 5.1-12.46 5.1ZM436.15 266.18c-10.94-6.13-19.61-14.63-26-25.51-6.39-10.88-9.59-23.17-9.59-36.88s3.2-26 9.59-36.88c6.39-10.88 15.06-19.34 26-25.41 10.94-6.06 22.94-9.1 35.99-9.1s25.21 3.03 36.09 9.1c10.88 6.06 19.48 14.53 25.8 25.41 6.33 10.88 9.49 23.17 9.49 36.88s-3.16 26-9.49 36.88-14.96 19.38-25.9 25.51c-10.94 6.13-22.94 9.19-35.99 9.19s-25.05-3.06-35.99-9.19Zm59.42-36.48c5.73-6.46 8.6-15.09 8.6-25.9s-2.87-19.8-8.6-26.2c-5.73-6.39-13.54-9.59-23.43-9.59s-17.87 3.2-23.53 9.59c-5.67 6.4-8.5 15.13-8.5 26.2s2.83 19.61 8.5 26c5.67 6.4 13.51 9.59 23.53 9.59s17.7-3.23 23.43-9.69ZM690.05 273.99h-38.76l-51.61-77.91v77.91h-38.76V134.58h38.76l51.61 78.9v-78.9h38.76v139.41ZM750.95 165.63v22.74h44.49v29.46h-44.49v25.11h50.42v31.04h-89.18v-139.4h89.18v31.04h-50.42ZM414.68 76.05c1.71-1 3.8-1.5 6.27-1.5v5.43h-1.39c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22ZM455.71 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59 1.52-1.06 2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.52-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96c2.31 1.31 4.09 3.11 5.34 5.4 1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.686 8.686 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54s-2.94 4.04-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM486.61 97.82h-17.56l-3.23 8.95h-5.54l14.55-40.02h6.06l14.5 40.02h-5.54l-3.23-8.95Zm-1.5-4.27-7.28-20.33-7.28 20.33h14.55ZM529.81 75.13v31.65h-5.25v-4.68c-1 1.62-2.4 2.88-4.19 3.78-1.79.9-3.76 1.36-5.92 1.36-2.46 0-4.68-.51-6.64-1.53s-3.51-2.55-4.65-4.59c-1.14-2.04-1.7-4.52-1.7-7.45V75.13h5.2v17.85c0 3.12.79 5.52 2.37 7.19 1.58 1.67 3.73 2.51 6.47 2.51s5.02-.87 6.64-2.6 2.43-4.25 2.43-7.57V75.13h5.25ZM538.7 82.32c1.31-2.44 3.11-4.34 5.4-5.69 2.29-1.35 4.86-2.02 7.71-2.02 2.46 0 4.75.57 6.87 1.7 2.12 1.14 3.73 2.63 4.85 4.48V64.04h5.31v42.74h-5.31v-5.95c-1.04 1.89-2.58 3.44-4.62 4.65s-4.43 1.82-7.16 1.82-5.36-.69-7.65-2.08c-2.29-1.39-4.09-3.33-5.4-5.83-1.31-2.5-1.96-5.35-1.96-8.55s.65-6.07 1.96-8.52Zm23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07-1.64-.94-3.44-1.42-5.4-1.42s-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04-1.44 3.85-1.44 6.24.48 4.53 1.44 6.32 2.25 3.16 3.87 4.1c1.62.94 3.41 1.42 5.37 1.42s3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1.96-1.79 1.44-3.88 1.44-6.27s-.48-4.47-1.44-6.24ZM577.91 68.95c-.69-.69-1.04-1.54-1.04-2.54s.35-1.85 1.04-2.54 1.54-1.04 2.54-1.04 1.78.35 2.45 1.04 1.01 1.54 1.01 2.54-.34 1.85-1.01 2.54-1.49 1.04-2.45 1.04-1.85-.35-2.54-1.04Zm5.08 6.18v31.65h-5.25V75.13h5.25ZM597.69 105.27c-2.41-1.35-4.29-3.26-5.66-5.75-1.37-2.48-2.05-5.36-2.05-8.63s.7-6.09 2.11-8.58 3.32-4.39 5.75-5.72 5.14-1.99 8.14-1.99 5.72.66 8.14 1.99 4.34 3.23 5.75 5.69c1.41 2.46 2.11 5.33 2.11 8.6s-.72 6.15-2.17 8.63c-1.44 2.48-3.4 4.4-5.86 5.75-2.46 1.35-5.2 2.02-8.2 2.02s-5.65-.67-8.06-2.02Zm13.37-3.93c1.65-.89 2.99-2.21 4.01-3.98 1.02-1.77 1.53-3.93 1.53-6.47s-.5-4.7-1.5-6.47c-1-1.77-2.31-3.09-3.93-3.96-1.62-.87-3.37-1.3-5.25-1.3s-3.69.43-5.28 1.3c-1.6.87-2.88 2.19-3.84 3.96s-1.44 3.93-1.44 6.47.47 4.76 1.41 6.53c.94 1.77 2.2 3.09 3.78 3.96 1.58.87 3.31 1.3 5.2 1.3s3.66-.44 5.31-1.33ZM652.38 86.65c-2.29 2.21-5.79 3.32-10.48 3.32h-7.74v16.81h-5.25V66.53h12.99c4.54 0 8 1.1 10.37 3.29 2.37 2.19 3.55 5.02 3.55 8.49s-1.15 6.13-3.44 8.35Zm-4.01-2.92c1.39-1.27 2.08-3.08 2.08-5.43 0-4.97-2.85-7.45-8.55-7.45h-7.74v14.78h7.74c2.93 0 5.08-.64 6.47-1.91ZM667.6 64.04v42.74h-5.25V64.04h5.25ZM676.55 82.32c1.31-2.44 3.11-4.34 5.4-5.69 2.29-1.35 4.84-2.02 7.65-2.02s5.18.6 7.22 1.79 3.56 2.7 4.56 4.5v-5.78h5.31v31.65h-5.31v-5.89c-1.04 1.85-2.59 3.38-4.65 4.59-2.06 1.21-4.46 1.82-7.19 1.82s-5.35-.69-7.62-2.08c-2.27-1.39-4.06-3.33-5.37-5.83-1.31-2.5-1.96-5.35-1.96-8.55s.65-6.07 1.96-8.52Zm23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07-1.64-.94-3.44-1.42-5.4-1.42s-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04-1.44 3.85-1.44 6.24.48 4.53 1.44 6.32 2.25 3.16 3.87 4.1c1.62.94 3.41 1.42 5.37 1.42s3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1.96-1.79 1.44-3.88 1.44-6.27s-.48-4.47-1.44-6.24ZM742.85 75.13l-19.06 46.55h-5.43l6.24-15.25-12.76-31.3h5.83l9.93 25.64 9.82-25.64h5.43ZM776.8 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59 1.52-1.06 2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.51-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96c2.31 1.31 4.09 3.11 5.34 5.4 1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.686 8.686 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54s-2.94 4.04-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM793.12 76.05c1.71-1 3.8-1.5 6.27-1.5v5.43H798c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22Z"},null,-1),C5=[P5];function E5(e,t){return re(),ye("svg",x5,[...C5])}const S5={render:E5},k5=2,ap=window.localStorage.getItem("renderedIcons"),gu=ap?new Map(JSON.parse(ap)):new Map,xa=(e,t,r=500)=>e||kc(t,r),O5="/assets/img/bg-1024x1024.png",kc=async(e,t=1024)=>{await document.fonts.ready;const r=`${k5}-${e}-${t}`;if(gu.has(r))return gu.get(r);const s=document.createElement("canvas"),o=s.getContext("2d");s.style.position="fixed",s.style.top="0",s.style.left="0",s.style.opacity="0",document.body.appendChild(s),s.height=t,s.width=t,s.style.height=t+"px",s.style.width=t+"px";const l=new Image;return l.src=O5,await new Promise(u=>{l.onload=()=>{o.drawImage(l,0,0,s.width,s.height),o.fillStyle="white",o.font="900 100px 'Poppins'",o.textAlign="center",o.shadowColor="rgba(0, 0, 0, 0.7)",o.shadowBlur=50,o.fillText(e,s.width/2,s.height/2+72/2,s.width),o.fillStyle="white",o.fillRect(0,0,s.width,14),o.fillStyle="black",o.font="400 italic 8px 'Poppins'",o.textAlign="left",o.fillText(" reAudioPlayer ".repeat(100),2,8+2);const c=30;o.fillStyle="white",o.font="600 14px 'Poppins'",o.textAlign="left",o.fillText((e==null?void 0:e.toUpperCase())??e,c,s.height-35+8+2);const f=o.measureText(e).width+c+16;o.fillStyle="white",o.fillRect(f,s.height-30,s.width-f-c,2);const h=s.toDataURL();gu.set(r,h),u(h)}})};/*! Fast Average Color | © 2023 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color */function R5(e){var t=e.toString(16);return t.length===1?"0"+t:t}function lp(e){return"#"+e.map(R5).join("")}function T5(e){var t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128}function I5(e){return e?M5(e)?e:[e]:[]}function M5(e){return Array.isArray(e[0])}function Oc(e,t,r){for(var s=0;s=t-r&&e<=t+r}function N5(e,t,r){var s=r[0],o=r[1],l=r[2],u=r[3],c=r[4],f=e[t+3],h=ia(f,u,c);return u?!!(!f&&h||ia(e[t],s,c)&&ia(e[t+1],o,c)&&ia(e[t+2],l,c)&&h):h}var B5=24;function V5(e,t,r){for(var s={},o=r.dominantDivider||B5,l=r.ignoredColor,u=r.step,c=[0,0,0,0,0],f=0;fl?(f=o/l,u=zu,c=Math.round(u/f)):(f=l/o,c=zu,u=Math.round(c/f)),(u>o||c>l||u"u";function Y5(){return Z5?Eg?new OffscreenCanvas(1,1):null:document.createElement("canvas")}var J5="FastAverageColor: ";function Wn(e){return Error(J5+e)}function ys(e,t){t||console.error(e)}var X5=function(){function e(){this.canvas=null,this.ctx=null}return e.prototype.getColorAsync=function(t,r){if(!t)return Promise.reject(Wn("call .getColorAsync() without resource"));if(typeof t=="string"){if(typeof Image>"u")return Promise.reject(Wn("resource as string is not supported in this environment"));var s=new Image;return s.crossOrigin=r&&r.crossOrigin||"",s.src=t,this.bindImageEvents(s,r)}else{if(Cg(t)&&!t.complete)return this.bindImageEvents(t,r);var o=this.getColor(t,r);return o.error?Promise.reject(o.error):Promise.resolve(o)}},e.prototype.getColor=function(t,r){r=r||{};var s=up(r);if(!t){var o=Wn("call .getColor() without resource");return ys(o,r.silent),this.prepareResult(s,o)}var l=U5(t),u=z5(l,r);if(!u.srcWidth||!u.srcHeight||!u.destWidth||!u.destHeight){var o=Wn('incorrect sizes for resource "'.concat(fp(t),'"'));return ys(o,r.silent),this.prepareResult(s,o)}if(!this.canvas&&(this.canvas=Y5(),!this.canvas)){var o=Wn("OffscreenCanvas is not supported in this browser");return ys(o,r.silent),this.prepareResult(s,o)}if(!this.ctx){if(this.ctx=this.canvas.getContext("2d",{willReadFrequently:!0}),!this.ctx){var o=Wn("Canvas Context 2D is not supported in this browser");return ys(o,r.silent),this.prepareResult(s)}this.ctx.imageSmoothingEnabled=!1}this.canvas.width=u.destWidth,this.canvas.height=u.destHeight;try{this.ctx.clearRect(0,0,u.destWidth,u.destHeight),this.ctx.drawImage(t,u.srcLeft,u.srcTop,u.srcWidth,u.srcHeight,0,0,u.destWidth,u.destHeight);var c=this.ctx.getImageData(0,0,u.destWidth,u.destHeight).data;return this.prepareResult(this.getColorFromArray4(c,r))}catch(f){var o=Wn("security error (CORS) for resource ".concat(fp(t),`. -Details: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image`));return ys(o,r.silent),!r.silent&&console.error(f),this.prepareResult(s,o)}},e.prototype.getColorFromArray4=function(t,r){r=r||{};var s=4,o=t.length,l=up(r);if(o{localStorage.setItem(Sg,JSON.stringify({sidebar:e.sidebar,player:e.player,theme:e.theme,ambient:e.ambient}))},e4={sidebar:{sports:!1,news:!1,collapsed:!1},player:{expandedCover:!1,pictureInPicture:!1,type:"web"},theme:Q5,ambient:!0},Cs=()=>JSON.parse(localStorage.getItem(Sg)||JSON.stringify(e4)),t4=()=>{const e=Cs();console.log("migrateSettings",e);const t=localStorage.getItem("sidebar.showSportsTab"),r=localStorage.getItem("sidebar.showNewsTab"),s=localStorage.getItem("player.inBrowser"),o=localStorage.getItem("player.collapsedSidebar"),l=localStorage.getItem("player.exapndCover"),u=localStorage.getItem("theme");t&&(e.sidebar.sports=t==="true",localStorage.removeItem("sidebar.showSportsTab")),r&&(e.sidebar.news=r==="true",localStorage.removeItem("sidebar.showNewsTab")),s&&localStorage.removeItem("player.inBrowser"),o&&(e.sidebar.collapsed=o==="true",localStorage.removeItem("player.collapsedSidebar")),l&&(e.player.expandedCover=l==="true",localStorage.removeItem("player.exapndCover")),u&&(e.theme=u,localStorage.removeItem("theme")),kg(e)},n4="production",Ur=Qs("settings",()=>{t4();const e=Ce(Cs().player),t=Ce(Cs().sidebar),r=Ce(Cs().theme),s=Ce(Cs().ambient),o=Ce(n4),l=()=>{kg({player:e.value,sidebar:t.value,theme:r.value,ambient:s.value})};ot(()=>e,l,{deep:!0}),ot(()=>t,l,{deep:!0}),ot(()=>r,l,{deep:!0}),ot(()=>s,l,{deep:!0});const u=Ve(()=>window.getCurrentThemeProperty&&window.getCurrentThemeProperty("supportsAmbient"));return{player:e,sidebar:t,theme:r,ambient:s,themeSupportsAmbient:u,mode:{mode:o,dev:Ve(()=>o.value==="development"),prod:Ve(()=>o.value==="production"),toggle:()=>{o.value==="development"?o.value="production":o.value="development"}}}}),Es=new X5,Ss=(e,t)=>{const r=e.hex,s=Math.round(t*255).toString(16);return r+s},r4=async(e,t,r=.25)=>{if(!Ur().ambient)return;var o=e.width/100,l=e.height/100,u=e.naturalWidth,c=e.naturalHeight;const f=await Promise.all([Es.getColorAsync(t,{height:l}),Es.getColorAsync(t,{left:u-o,width:o}),Es.getColorAsync(t,{width:o}),Es.getColorAsync(t,{top:c-l,height:l})]);o*=40,l*=40;var h=Ss(f[0],r),p=Ss(f[1],r),m=Ss(f[2],r),g=Ss(f[3],r);const y=" 10px",S=` ${o}px `,w=o+"px",T=l+"px";e.style.boxShadow=["0 -".concat(T," ").concat(S," ").concat(y," ").concat(h),"".concat(w," 0 ").concat(S," ").concat(y," ").concat(p),"0 ".concat(T," ").concat(S," ").concat(y," ").concat(m),"-".concat(w," 0 ").concat(S," ").concat(y," ").concat(g)].join(", ")},i4=async(e,t,r="to top right",s=.2)=>{if(!Ur().ambient)return;const l=await Es.getColorAsync(t),u=Ss(l,s),c=`linear-gradient(${r}, ${u}, transparent)`;e.style.background=c},s4={dark:!1,dynamic:!0},o4={dark:!0,dynamic:!1},li={"fg-secondary":{dark:"#1ed760",dynamic:"#00c48b",light:"#18a74b"},"fg-secondary-dk":{dark:"#217e41",dynamic:"#00c48b",light:"#80dda0"},"bg-contrast":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-contrast":{dark:"#121212",dynamic:"#1e1e1e",light:"white"},"fg-base":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-base-dk":{dark:"#a7a7a7",dynamic:"#c2bebe",light:"#8b8c91"},"fg-base-dkr":{dark:"#999",light:"#8b8c91",dynamic:"#999"},"bg-hover-ltr":{dark:"#242424"},"bg-hover-lt":{dark:"hsla(0,0%,100%,0.04)",light:"#b3b3b31f"},"bg-hover":{dark:"hsla(0,0%,100%,0.3)",dynamic:"#00c48b82",light:"#7c828f5e"},"bg-hover-dk":{dark:"hsla(0,0%,100%,0.1)",dynamic:"#00c48b42",light:"#E3E7EB"},"bg-gradient":{dark:"linear-gradient(to left bottom, #1ed760, #217e41)",dynamic:"linear-gradient(to left bottom, #00a53c, #00297f)",light:"linear-gradient(to left bottom, #18a74b, #80dda0)"},"bg-gradient-placeholder":{dark:"linear-gradient(to left bottom, #00a53c, #00297f)"},"bg-base":{dark:"#121212",light:"white"},"bg-base-lt":{dark:"#181818",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-base-dk":{dark:"black",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-input":{dark:"var(--background-light)",light:"var(--background)"},"bg-fixedPlaylistHeader":{dark:"var(--bg-base-lt)",dynamic:"#374148"},"border-fixedPlaylistHeader":{dark:"#303030",dynamic:"none",light:"#D0D0D0"},"border-base":{dark:"hsla(0,0%,100%,0.1)",light:"#E3E7EB"},"border-container":{dark:"1px solid var(--border-base)",light:"1px solid var(--border-base)",dynamic:"1px solid transparent"},"ff-base":{dark:"Poppins, sans-serif"},"h-playlistEntry":{dark:"64px"},"h-player":{dark:"88px"},"h-player-mobile":{dark:"64px"},"h-header":{dark:"64px"},coverAsBackground:s4,supportsAmbient:o4},qa=()=>Ur();window.getThemes=()=>{window.themes=[];for(const e of Object.keys(li))for(const t of Object.keys(li[e]))window.themes.includes(t)||window.themes.push(t);return window.themes};window.getCurrentTheme=()=>qa().theme;window.setTheme=e=>{if(window.getThemes().includes(e)){qa().theme=e;for(const t of Object.keys(li)){const r=li[t];t!="coverAsBackground"&&document.documentElement.style.setProperty(`--${t}`,r[e]??r.dark)}}};window.restoreTheme=()=>window.setTheme(qa().theme||"dynamic");window.getCurrentThemeProperty=e=>{const t=li[e];return t[qa().theme]??t.dark};const Og=window,a4=["alt","src"],Nr=Ze({__name:"Cover",props:{src:{type:String,required:!0},type:{type:String,required:!1,default:"track"},placeholder:{type:String,required:!1},withAmbient:{type:Boolean,required:!1,default:!1},ambientOpacity:{type:Number,required:!1,default:.2},name:{type:String,required:!1}},setup(e){const t=e,r=Ce(null),s=async()=>{if(r.value=await kc(t.name),!r.value){setTimeout(()=>{s()},100);return}},o=()=>{r.value=wg(t.src,t.type),r.value||s()};ot(()=>t.src,o),o();const l=Ce(null),u=async()=>{if(!t.withAmbient||!l.value||!Og.getCurrentThemeProperty("supportsAmbient"))return;const c=await xa(r.value,t.name);r4(l.value,c,t.ambientOpacity)};return(c,f)=>(re(),ye("img",{ref_key:"element",ref:l,alt:t.type,src:oe(xa)(r.value,e.name),class:"cover rounded-md",onError:s,onLoad:u},null,40,a4))}});const l4={name:"NavEntry",components:{Cover:Nr},props:{icon:String,img:String,name:String,href:String,hasChildSites:Boolean,parentHref:String,minimised:Boolean},computed:{showImg(){return this.img?!0:/^\/playlist\/\w{22}$/.exec(this.href)},active(){return this.hasChildSites?this.$route.path.includes(this.href)?!0:(console.log(this.parentHref),this.parentHref&&this.$route.path.includes(this.parentHref)):!1}}},u4={key:0,class:"material-icons-round icon"},c4={key:2,class:"name hideIfMobile"};function f4(e,t,r,s,o,l){const u=Ui("Cover"),c=Ui("router-link");return re(),Ge(c,{to:r.href,class:"link"},{default:Rt(()=>[te("div",{class:Xe([{active:l.active,img:l.showImg},"navEntry"])},[r.icon?(re(),ye("span",u4,De(r.icon),1)):Be("",!0),l.showImg?(re(),Ge(u,{key:1,src:r.img,class:"icon",type:"playlist",name:r.name},null,8,["src","name"])):Be("",!0),r.minimised?Be("",!0):(re(),ye("span",c4,De(r.name),1))],2)]),_:1},8,["to"])}const Hn=at(l4,[["render",f4],["__scopeId","data-v-2ced8467"]]),d4="modulepreload",h4=function(e){return"/"+e},dp={},mt=function(t,r,s){if(!r||r.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(r.map(l=>{if(l=h4(l),l in dp)return;dp[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!s)for(let p=o.length-1;p>=0;p--){const m=o[p];if(m.href===l&&(!u||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const h=document.createElement("link");if(h.rel=u?"stylesheet":d4,u||(h.as="script",h.crossOrigin=""),h.href=l,document.head.appendChild(h),u)return new Promise((p,m)=>{h.addEventListener("load",p),h.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})})).then(()=>t()).catch(l=>{const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=l,window.dispatchEvent(u),!u.defaultPrevented)throw l})};/*! + */let pg;const Ua=e=>pg=e,mg=Symbol();function qu(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Ms;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Ms||(Ms={}));function IP(){const e=Kp(!0),t=e.run(()=>Ce({}));let r=[],s=[];const o=La({install(l){Ua(o),o._a=l,l.provide(mg,o),l.config.globalProperties.$pinia=o,s.forEach(u=>r.push(u)),s=[]},use(l){return!this._a&&!TP?s.push(l):r.push(l),this},_p:r,_a:null,_e:e,_s:new Map,state:t});return o}const gg=()=>{};function ep(e,t,r,s=gg){e.push(t);const o=()=>{const l=e.indexOf(t);l>-1&&(e.splice(l,1),s())};return!r&&zp()&&eA(o),o}function Ti(e,...t){e.slice().forEach(r=>{r(...t)})}const MP=e=>e();function ju(e,t){e instanceof Map&&t instanceof Map&&t.forEach((r,s)=>e.set(s,r)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const r in t){if(!t.hasOwnProperty(r))continue;const s=t[r],o=e[r];qu(o)&&qu(s)&&e.hasOwnProperty(r)&&!Pt(s)&&!$r(s)?e[r]=ju(o,s):e[r]=s}return e}const LP=Symbol();function $P(e){return!qu(e)||!e.hasOwnProperty(LP)}const{assign:Sr}=Object;function DP(e){return!!(Pt(e)&&e.effect)}function NP(e,t,r,s){const{state:o,actions:l,getters:u}=t,c=r.state.value[e];let f;function h(){c||(r.state.value[e]=o?o():{});const p=SA(r.state.value[e]);return Sr(p,l,Object.keys(u||{}).reduce((m,g)=>(m[g]=La(Ve(()=>{Ua(r);const y=r._s.get(e);return u[g].call(y,y)})),m),{}))}return f=vg(e,h,t,r,s,!0),f}function vg(e,t,r={},s,o,l){let u;const c=Sr({actions:{}},r),f={deep:!0};let h,p,m=[],g=[],y;const S=s.state.value[e];!l&&!S&&(s.state.value[e]={}),Ce({});let w;function T(W){let j;h=p=!1,typeof W=="function"?(W(s.state.value[e]),j={type:Ms.patchFunction,storeId:e,events:y}):(ju(s.state.value[e],W),j={type:Ms.patchObject,payload:W,storeId:e,events:y});const U=w=Symbol();Kn().then(()=>{w===U&&(h=!0)}),p=!0,Ti(m,j,s.state.value[e])}const V=l?function(){const{state:j}=r,U=j?j():{};this.$patch(G=>{Sr(G,U)})}:gg;function B(){u.stop(),m=[],g=[],s._s.delete(e)}function P(W,j){return function(){Ua(s);const U=Array.from(arguments),G=[],K=[];function H(D){G.push(D)}function E(D){K.push(D)}Ti(g,{args:U,name:W,store:R,after:H,onError:E});let I;try{I=j.apply(this&&this.$id===e?this:R,U)}catch(D){throw Ti(K,D),D}return I instanceof Promise?I.then(D=>(Ti(G,D),D)).catch(D=>(Ti(K,D),Promise.reject(D))):(Ti(G,I),I)}}const k={_p:s,$id:e,$onAction:ep.bind(null,g),$patch:T,$reset:V,$subscribe(W,j={}){const U=ep(m,W,j.detached,()=>G()),G=u.run(()=>ot(()=>s.state.value[e],K=>{(j.flush==="sync"?p:h)&&W({storeId:e,type:Ms.direct,events:y},K)},Sr({},f,j)));return U},$dispose:B},R=Xi(k);s._s.set(e,R);const q=(s._a&&s._a.runWithContext||MP)(()=>s._e.run(()=>(u=Kp()).run(t)));for(const W in q){const j=q[W];if(Pt(j)&&!DP(j)||$r(j))l||(S&&$P(j)&&(Pt(j)?j.value=S[W]:ju(j,S[W])),s.state.value[e][W]=j);else if(typeof j=="function"){const U=P(W,j);q[W]=U,c.actions[W]=j}}return Sr(R,q),Sr(nt(R),q),Object.defineProperty(R,"$state",{get:()=>s.state.value[e],set:W=>{T(j=>{Sr(j,W)})}}),s._p.forEach(W=>{Sr(R,u.run(()=>W({store:R,app:s._a,pinia:s,options:c})))}),S&&l&&r.hydrate&&r.hydrate(R.$state,S),h=!0,p=!0,R}function Qs(e,t,r){let s,o;const l=typeof t=="function";typeof e=="string"?(s=e,o=l?r:t):(o=e,s=e.id);function u(c,f){const h=_x();return c=c||(h?on(mg,null):null),c&&Ua(c),c=pg,c._s.has(s)||(l?vg(s,t,o,c):NP(s,o,c)),c._s.get(s)}return u.$id=s,u}const BP=e=>[...new Set(e)],VP=(e,t)=>e.filter(r=>!t.includes(r)),WP=(e,t)=>e.filter(r=>t.includes(r)),FP=e=>typeof e=="bigint"||!Number.isNaN(Number(e))&&Math.floor(Number(e))===e,HP=e=>typeof e=="bigint"||e>=0&&Number.isSafeInteger(e);function vs(e,t){if(t.length===0)return e;let r;const s=[...e];for(let o=s.length-1,l=0,u=0;o>0;o--,l++){l%=t.length,u+=r=t[l].codePointAt(0);const c=(r+l+u)%o,f=s[o],h=s[c];s[c]=f,s[o]=h}return s}const UP=(e,t)=>{const r=[];let s=e;if(typeof s=="bigint"){const o=BigInt(t.length);do r.unshift(t[Number(s%o)]),s/=o;while(s>BigInt(0))}else do r.unshift(t[s%t.length]),s=Math.floor(s/t.length);while(s>0);return r},qP=(e,t)=>e.reduce((r,s)=>{const o=t.indexOf(s);if(o===-1)throw new Error(`The provided ID (${e.join("")}) is invalid, as it contains characters that do not exist in the alphabet (${t.join("")})`);if(typeof r=="bigint")return r*BigInt(t.length)+BigInt(o);const l=r*t.length+o;if(Number.isSafeInteger(l))return l;if(typeof BigInt=="function")return BigInt(r)*BigInt(t.length)+BigInt(o);throw new Error("Unable to decode the provided string, due to lack of support for BigInt numbers in the current environment")},0),jP=/^\+?\d+$/,KP=e=>jP.test(e)?Number.parseInt(e,10):Number.NaN,GP=(e,t,r)=>Array.from({length:Math.ceil(e.length/t)},(s,o)=>r(e.slice(o*t,(o+1)*t))),tp=e=>new RegExp(e.map(t=>yg(t)).sort((t,r)=>r.length-t.length).join("|")),zP=e=>new RegExp(`^[${e.map(t=>yg(t)).sort((t,r)=>r.length-t.length).join("")}]+$`),yg=e=>e.replace(/[\s#$()*+,.?[\\\]^{|}-]/g,"\\$&"),np=16,rp=3.5,ZP=12,ip=16,YP=12,sp=100;class _g{constructor(t="",r=0,s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",o="cfhistuCFHISTU"){if(this.minLength=r,typeof r!="number")throw new TypeError(`Hashids: Provided 'minLength' has to be a number (is ${typeof r})`);if(typeof t!="string")throw new TypeError(`Hashids: Provided 'salt' has to be a string (is ${typeof t})`);if(typeof s!="string")throw new TypeError(`Hashids: Provided alphabet has to be a string (is ${typeof s})`);const l=Array.from(t),u=Array.from(s),c=Array.from(o);this.salt=l;const f=BP(u);if(f.lengthrp)&&(p=Math.ceil(this.alphabet.length/rp),p>this.seps.length&&(m=p-this.seps.length,this.seps.push(...this.alphabet.slice(0,m)),this.alphabet=this.alphabet.slice(m))),this.alphabet=vs(this.alphabet,l);const g=Math.ceil(this.alphabet.length/ZP);this.alphabet.length<3?(this.guards=this.seps.slice(0,g),this.seps=this.seps.slice(g)):(this.guards=this.alphabet.slice(0,g),this.alphabet=this.alphabet.slice(g)),this.guardsRegExp=tp(this.guards),this.sepsRegExp=tp(this.seps),this.allowedCharsRegExp=zP([...this.alphabet,...this.guards,...this.seps])}encode(t,...r){const s="";let o=Array.isArray(t)?t:[...t!=null?[t]:[],...r];return o.length===0||(o.every(FP)||(o=o.map(l=>typeof l=="bigint"||typeof l=="number"?l:KP(String(l)))),!o.every(HP))?s:this._encode(o).join("")}decode(t){return!t||typeof t!="string"||t.length===0?[]:this._decode(t)}encodeHex(t){let r=t;switch(typeof r){case"bigint":r=r.toString(ip);break;case"string":if(!/^[\dA-Fa-f]+$/.test(r))return"";break;default:throw new Error(`Hashids: The provided value is neither a string, nor a BigInt (got: ${typeof r})`)}const s=GP(r,YP,o=>Number.parseInt(`1${o}`,16));return this.encode(s)}decodeHex(t){return this.decode(t).map(r=>r.toString(ip).slice(1)).join("")}isValidId(t){return this.allowedCharsRegExp.test(t)}_encode(t){let{alphabet:r}=this;const s=t.reduce((h,p,m)=>h+(typeof p=="bigint"?Number(p%BigInt(m+sp)):p%(m+sp)),0);let o=[r[s%r.length]];const l=[...o],{seps:u}=this,{guards:c}=this;if(t.forEach((h,p)=>{const m=l.concat(this.salt,r);r=vs(r,m);const g=UP(h,r);if(o.push(...g),p+10){const p=h/2;o=o.slice(p,p+this.minLength)}}return o}_decode(t){if(!this.isValidId(t))throw new Error(`The provided ID (${t}) is invalid, as it contains characters that do not exist in the alphabet (${this.guards.join("")}${this.seps.join("")}${this.alphabet.join("")})`);const r=t.split(this.guardsRegExp),s=r.length===3||r.length===2?1:0,o=r[s];if(o.length===0)return[];const l=o[Symbol.iterator]().next().value,u=o.slice(l.length).split(this.sepsRegExp);let c=this.alphabet;const f=[];for(const h of u){const p=[l,...this.salt,...c],m=vs(c,p.slice(0,c.length));f.push(qP(Array.from(h),m)),c=m}return this._encode(f).join("")!==t?[]:f}}new _g("reapOne.playlist",22);const bg=new _g("reapOne.track",22),op=e=>bg.encode(String(e)),JP=e=>{const t=bg.decode(e);return Number(t[0])},Ku=(e,t)=>String(e).padStart(t,"0"),Aa=e=>e?e.startsWith("local:")?e.replace("local:","/src/covers/"):e:null,XP=e=>e?e.startsWith("local:")?e.replace("local:","/src/covers/"):e:null,wg=(e,t="track")=>(t=="playlist"?XP:Aa)(e),QP=e=>e.replace(/\w\S*/g,t=>t.charAt(0).toUpperCase()+t.substring(1).toLowerCase()),Pc=e=>window.open(e,"_blank"),Gu=Ve(()=>window.innerWidth<768),q6=e=>/^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$/i.test(e),j6=e=>{const{key:t,mode:r}=e.spotify.features,s=["B","F#","C#","G#","D#","A#","F","C","G","D","A","E"],o=["A","D#","A#","F","C","G","D","A","E","B","F#","C#"];return`${(r=="Major"?s:o).indexOf(t)+1}${r=="Major"?"B":"A"}`},K6=(e,t=null)=>{t||(e.includes("track")&&(t="track"),e.includes("album")&&(t="album"),e.includes("playlist")&&(t="playlist"));const r=new RegExp(`https://open.spotify.com/${t}/([a-zA-Z0-9]+)`),s=e.match(r);return s?s[1]:null},G6=e=>new Date(e).toLocaleDateString("en-GB",{year:"numeric",month:"short",day:"numeric"}),z6=e=>{if(e<=0)return"N/A";const t=Math.floor(e/60),r=Ku(Math.floor(e%60),2);return`${t}:${r}`},Z6=e=>{const t=["B","KB","MB","GB","TB"];let r=0;for(;e>1e3&&r{await Zt().fetchPlaylists()},e5=e=>Zt().getPlaylistById(e),t5=async e=>{await fetch(`/api/playlists/${e.id}`,{method:"POST",body:JSON.stringify({name:e.name,description:e.description,cover:e.cover})}),await eo()},n5=async()=>await(await fetch("/api/playlists")).json(),r5=async e=>await(await fetch(`/api/playlists/${e}`)).json(),Y6=e=>e5(e),J6=async e=>(await fetch(`/api/playlists/${e}`,{method:"DELETE"})).ok?(await eo(),!0):!1,Cc=async(e="classic")=>{const r=await(await fetch(`/api/playlists/new?type=${e}`)).text();return await eo(),r},Ec=async(e="classic",t,r="",s="")=>{const l=(await Cc(e)).split("/").pop();return await t5({id:l,name:t,description:r,cover:s,plays:0,type:e}),l},X6=async(e,t)=>{await fetch(`/api/playlists/${e}/tracks`,{method:"DELETE",body:JSON.stringify({songId:t})}),await eo()},Q6=async e=>await(await fetch("/api/playlists/smart/peek",{method:"POST",body:JSON.stringify(e)})).json(),i5=async e=>await(await fetch(`/api/playlists/smart/${e}`)).json(),s5=async(e,t)=>{await fetch(`/api/playlists/smart/${e}`,{method:"PUT",body:JSON.stringify({definition:t})}),await eo()},Zt=Qs({id:"data",state:()=>({playlists:[]}),getters:{notEmpty(){return!this.empty},empty(){return this.playlists.length===0},playlistsAsDropdown(e=!0){const t=this.playlists.filter(r=>r.type==="classic").map(r=>({value:r.id,label:r.name}));return e&&t.push({value:"new",label:"(new playlist)"}),t},getPlaylistById(){return e=>this.playlists.find(t=>t.id===e)}},actions:{setPlaylists(e){this.playlists=e},initialise(){this.fetchPlaylists()},async fetchPlaylists(...e){if(e){console.log("fetching playlists",e);for(const r of e){const s=this.playlists.findIndex(o=>o.id===r);if(s===-1)return;this.playlists[s]=await r5(r)}}const t=await n5();this.setPlaylists(t)}}}),o5=class{constructor(){Ri(this,"ws",null);Ri(this,"connections",Ce([]));Ri(this,"player",null);Ri(this,"me",null);Ri(this,"sendInfoTask",null);this.connect()}connect(){console.log("attempting reconnect");const e=window.location.hostname,t=window.location.port=="5173"?1234:window.location.port;this.ws=new WebSocket(`ws://${e}:${t}/player/ws`);const r=Bt();this.sendInfoTask&&clearInterval(this.sendInfoTask),this.sendInfoTask=setInterval(()=>this.sendInfo(),300),this.ws.onclose=()=>{console.log("disconnected"),setTimeout(()=>this.connect(),1e3)},this.ws.onopen=()=>{console.log("connected")};const s=o=>{if(typeof o=="string")switch(o){case"play":r.play();break;case"pause":r.pause();break}if(typeof o=="object")switch(o.command){case"seek":r.seek(o.time);break;case"set volume":r.setVolume(o.volume);break;case"set repeat":r.setRepeat(o.repeat);break;case"set mute":r.setMute(o.mute);break}};this.ws.onmessage=o=>{switch(o=JSON.parse(o.data),o.type){case"info":if(typeof o.data=="boolean")return;r.playing=o.data.playing,r.progress=o.data.progress,r.volume=o.data.volume,r.repeat=o.data.repeat;break;case"new client":console.log("new client",o.data);break;case"client disconnected":break;case"player disconnected":break;case"connections":this.updateConnections(o.data);break;case"command":s(o.data);break}}}sendInfo(){var r,s;if(((s=(r=this.me)==null?void 0:r.type)==null?void 0:s.toLowerCase())!=="player")return;const e=Bt(),t={playing:e.playing,progress:e.progress,volume:e.volume,repeat:e.repeat};this.send("info",t)}updateConnections(e){this.connections.value=e,this.me=e.find(t=>t.friendlyName.includes("(You)"))}send(e,t){var r;(r=this.ws)==null||r.send(JSON.stringify({type:e,data:t}))}sendCommand(e){this.send("command",e)}setPlayer(e){this.send("set player",e.id)}makeMePlayer(){this.send("type","Player")}play(){this.sendCommand("play")}pause(){this.sendCommand("pause")}seek(e){this.sendCommand({command:"seek",time:e})}setVolume(e){this.sendCommand({command:"set volume",volume:e})}setRepeat(e){this.sendCommand({command:"set repeat",repeat:e})}setMute(e){this.sendCommand({command:"set mute",mute:e})}},a5=()=>{fetch("/api/player/next")},l5=()=>{fetch("/api/player/previous")},u5=e=>{fetch("/api/player/shuffle",{method:"POST",body:JSON.stringify(e)})},c5=()=>fetch("/api/player/shuffle").then(e=>e.json()),Sc=Qs({id:"downloader",state:()=>({ws:null,states:{},onDownload:[]}),getters:{empty(){return Object.keys(this.states).length===0}},actions:{_fireDownload(e){this.onDownload.forEach(t=>t(e))},initialise(){const e=()=>{console.log("[downloader] attempting reconnect");const t=window.location.hostname,r=window.location.port==="5173"?1234:window.location.port;this.ws=new WebSocket(`ws://${t}:${r}/download/ws`),this.ws.onclose=()=>{console.log("[downloader] ws closed"),setTimeout(()=>e(),1e3)},this.ws.onopen=()=>{console.log("[downloader] ws connected")},this.ws.onmessage=s=>{const o=JSON.parse(s.data);if(!o.action){if(o.status=="finished"){this.states[o.songId]={...this.states[o.songId],...o};return}this.states[o.songId]=o}}};e()},send(e){var t;(t=this.ws)==null||t.send(JSON.stringify(e))},downloadFromDb(e){this.send({action:"download",source:"db",songId:e}),this.states[e]={songId:e,status:"pending"},this._fireDownload(e)},downloadOther(e){this.send({action:"download",source:"other",...e}),this.states[e.id]={songId:e.id,status:"pending"},this._fireDownload(e.id)},download(e){window.open(`/api/tracks/${e}/download`,"_blank","noopener noreferrer"),this.states[e].status="downloaded"},isSongDownloading(e){const t=this.states[e];return t!=null&&t.internal?t.status==="downloading":!1}}}),to=async()=>{await Zt().fetchPlaylists()},eO=async e=>{await fetch(`/api/tracks/${e.id}`,{method:"PUT",body:JSON.stringify({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover})}),await to()},tO=async(e,t,r)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({[t]:r})}),await to()},nO=async e=>await(await fetch("/api/browse/track",{method:"POST",body:JSON.stringify({url:e})})).json(),Ag=e=>({source:e.source,title:e.title,artist:e.artist,album:e.album,cover:e.cover,spotify:e.metadata?JSON.stringify(e.metadata.spotify):""}),xg=async(e,t)=>{e==="new"&&(e=await Cc()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(Ag(t))}),await to()},Pg=async(e,t)=>{e==="new"&&(e=await Cc()),await fetch(`/api/playlists/${e}/tracks`,{method:"POST",body:JSON.stringify(t.map(r=>Ag(r)))}),await to()},rO=async(e,t=!0)=>{await fetch(`/api/tracks/${e}`,{method:"PUT",body:JSON.stringify({favourite:t})}),await to()},iO=e=>{Sc().downloadFromDb(e)},f5=async e=>await(await fetch(`/api/tracks/${e}`)).json(),sO=async e=>{const t=JP(e);return await f5(t)},d5=async(e,t=!1,r=null)=>{const s={id:e};return t&&(s.forceFetch=!0),r&&(s.spotifyId=r),await(await fetch("/api/spotify/meta",{method:"POST",body:JSON.stringify(s)})).json()},oO=async e=>await(await fetch(`/api/spotify/recommendations/${e}`)).json(),aO=async e=>{await fetch(`/api/player/stream/${e}`,{method:"DELETE"})},h5=async e=>{const r=await(await fetch("https://spotify-lyric-api-984e7b4face0.herokuapp.com/?trackid="+e)).json();return{error:r.message,lyrics:r.lines}},p5=async(e=!1)=>{var o,l;const r=Bt().song;let s=(o=r.metadata.spotify)==null?void 0:o.id;return!s&&e&&(s=(l=(await d5(r.id)).spotify)==null?void 0:l.id),s?await h5(s):{error:"Spotify equivalent unknown."}},Bt=Qs({id:"player",state:()=>({playing:!1,progress:0,ready:!1,muted:!1,shuffle:!1,song:{title:null,artist:null,album:null,cover:Aa(null),source:null,duration:null,favourite:!1,id:-1,metadata:{plays:0,spotify:{id:null}}},playlistId:null,lyrics:null,volume:50,repeat:"repeat",sharedPlayer:null,player:null}),actions:{playPause(){this.playing?this.pause():this.play()},toggleRepeat(){var e;switch(this.repeat){case"repeat":this.repeat="repeat_on";break;case"repeat_on":this.repeat="repeat_one_on";break;case"repeat_one_on":this.repeat="repeat";break}localStorage.setItem("reap.repeat",this.repeat),(e=this.player)==null||e.setRepeat(this.repeat)},setRepeat(e){this.repeat=e},setMute(e){var t;this.muted=e,(t=this.player)==null||t.setMute(e)},toggleMute(){this.setMute(!this.muted)},setShuffle(e){this.shuffle=e,u5(e),Zt().fetchPlaylists()},toggleShuffle(){this.setShuffle(!this.shuffle)},onSongEnded(){if(this.repeat==="repeat_one_on")this.play();else{if(this.repeat==="repeat"&&this.playlist.index.value===this.playlist.songs.length-1)return;this.next()}},play(){this.player.play()},pause(){this.player.pause()},next(){a5()},previous(){l5()},setPlayer(e){e&&this.player!==e&&(this.player=e)},async setSong(e){e.id!=this.song.id&&(this.song=e,this.song.cover=Aa(e.cover),this.progress=0,this.lyrics=null,this.lyrics=await p5(!0))},setReady(e){this.ready!==e&&(this.ready=e,e?Zt().initialise():(this.$reset(),Zt().$reset()))},setDuration(e){this.song.duration=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({duration:e})})},setPlaying(e){this.playing=e},seek(e){this.player.seek(e)},seekPercent(e){this.seek(this.durationSeconds*e/100)},setProgress(e){this.progress=Math.round(e)},setFavourite(e){this.song.favourite=e,fetch(`/api/tracks/${this.song.id}`,{method:"PUT",body:JSON.stringify({favourite:e})})},setPlaylist(e){this.playlistId=e},setVolume(e){var t;e!=this.volume&&(this.volume=e,localStorage.setItem("reap.volume",e),this.player.setVolume&&((t=this.player)==null||t.setVolume(e)))},toggleFavourite(){this.setFavourite(!this.song.favourite)},async initialise(){this.volume=localStorage.getItem("reap.volume")||50,this.repeat=localStorage.getItem("reap.repeat")||"repeat_on",this.sharedPlayer=new o5,this.shuffle=await c5()},async loadPlaylist(e,t=null){const r={type:"playlist",id:e};["track","album"].includes(e)&&(r.type=e,r.id=t),e==="artist"&&(r.type=e,r.name=t,delete r.id),await fetch("/api/player/load",{method:"POST",body:JSON.stringify(r)})},loadSong(e,t){const r={index:t};e==="track"?r.type=e:r.playlist=e,fetch("/api/player/at",{method:"POST",body:JSON.stringify(r)})}},getters:{playlist(e){return Zt().playlists.find(t=>t.id===e.playlistId)},hasLyrics(e){var t;return(t=e.lyrics)==null?void 0:t.lyrics},durationSeconds(e){return e.song.duration},displayDuration(e){const t=e.song.duration;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Ku(Math.floor(t%60),2)}`},stream(e){return`/api/player/stream/${e.song.id}`},cover(e){return e.song.cover},progressPercent(e){return e.progress/this.durationSeconds*1e3},displayProgress(e){const t=e.progress;return isNaN(t)?"0:00":`${Math.floor(t/60)}:${Ku(Math.floor(t%60),2)}`},loaded(e){return e.song.id!=-1},shuffleIcon(e){return e.shuffle?"shuffle_on":"shuffle"},muteIcon(e){return e.muted?"volume_off":e.volume>50?"volume_up":e.volume>0?"volume_down":"volume_mute"}}});const m5=(e,t,r)=>{const s=new CustomEvent("player.play",{detail:{title:e,artist:t,source:r}});window.dispatchEvent(s)},g5={components:{Marquee:sr},name:"PlayerInPicture",props:{expandCover:Boolean},watch:{disabled(){this.disabled||this.$nextTick(()=>{this.$refs.player.addEventListener("mousedown",this.mouseDown,!1),window.addEventListener("mouseup",this.mouseUp,!1)})}},methods:{mouseDown(e){const t=this.$refs.player,r=document.getElementById("appRoot");e=e||window.event;var s=e.clientX,o=e.clientY,l=t.offsetTop,u=t.offsetLeft,c=parseInt(t.offsetWidth),f=parseInt(t.offsetHeight),h=parseInt(r.offsetWidth)-8,p=parseInt(r.offsetHeight)-8;r.style.cursor="move";var m=s-u,g=o-l;document.onmousemove=y=>{y=y||window.event,y.preventDefault(),y.stopPropagation();var S=y.clientX,w=y.clientY,T=S-m,V=w-g;T<8&&(T=8),V<8&&(V=8),T+c>h&&(T=h-c),V+f>p&&(V=p-f),this.divMove(t,T,V)}},mouseUp(){document.getElementById("appRoot").style.cursor="default",document.onmousemove=function(){}},divMove(e,t,r){e.style.bottom="auto",e.style.right="auto",e.style.left=t+"px",e.style.top=r+"px"}},data(){const e=Bt();return window.addEventListener("player.play",t=>{const r=t.detail,s=r.source;if(this.name=`${r.artist} - ${r.title}`,e.pause(),s.includes("youtu")){var o=/youtu(?:.*\/v\/|.*v\=|\.be\/)([A-Za-z0-9_\-]{11})/;const l=s.match(o);if(l!=null&&l[1]){this.el=``,this.minimised=!1,this.disabled=!1;return}}if(s.includes("audius")){var o=/audius.co\/([A-Za-z0-9]+)\/([A-Za-z0-9\-]+)/;const u=s.match(o);if(console.log(u,s),u!=null&&u[1]&&(u!=null&&u[2])){fetch(`https://blockdaemon-audius-discovery-01.bdnodes.net/v1/full/tracks?handle=${u[1]}&slug=${u[2]}`).then(c=>c.json()).then(c=>{const f=c.data.id;this.el=``}),this.minimised=!1,this.disabled=!1;return}}if(s.includes("spotify")){var o=/spotify(?:.*\/(album|track|playlist)\/)([A-Za-z0-9_\-]{22})/;const u=s.match(o);if(u!=null&&u[1]){console.log(u),this.el=``,this.minimised=!1,this.disabled=!1;return}}s.includes("soundcloud")&&(fetch(`https://soundcloud.com/oembed?url=${s}&format=json`).then(l=>l.json()).then(l=>{this.el=l.html.replace('height="400"','height="70"').replace("&show_artwork=true","&show_artwork=true&auto_play=true").replace("o.minimised=!o.minimised)},De(o.minimised?"zoom_out_map":"zoom_in_map"),1),te("span",{class:"material-symbols-rounded ms-wght-500",onClick:t[1]||(t[1]=c=>o.disabled=!o.disabled)},"close")])],2),te("div",{class:Xe([{minimised:o.minimised},"frame"]),innerHTML:o.el},null,10,b5)],512))}const A5=at(g5,[["render",w5]]),x5={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 809.48 395.8"},P5=te("path",{d:"M80.09 254.67c-4.84 0-9.04-1.72-12.6-5.16-3.57-3.43-5.35-7.7-5.35-12.79V79.04c0-4.84 1.78-8.97 5.35-12.41 3.56-3.44 7.76-5.16 12.6-5.16s8.97 1.72 12.41 5.16c3.43 3.43 5.15 7.57 5.15 12.41v157.68c0 5.09-1.72 9.36-5.15 12.79-3.44 3.44-7.58 5.16-12.41 5.16Zm70.63 61.47c-4.84 0-8.97-1.78-12.41-5.34-3.44-3.57-5.16-7.77-5.16-12.6V17.57c0-4.58 1.72-8.66 5.16-12.22 3.43-3.56 7.57-5.34 12.41-5.34s9.04 1.78 12.6 5.34c3.56 3.57 5.34 7.64 5.34 12.22V298.2c0 4.83-1.78 9.03-5.34 12.6-3.56 3.56-7.76 5.34-12.6 5.34ZM17.38 193.2c-4.79 0-8.88-1.7-12.27-5.1-3.4-3.4-5.1-7.61-5.1-12.65v-35.13c0-4.79 1.7-8.88 5.1-12.27 3.4-3.4 7.49-5.1 12.27-5.1s9 1.7 12.66 5.1c3.65 3.4 5.48 7.49 5.48 12.27v35.33c0 3.92-1.25 7.85-3.85 10.77-4.01 4.51-8.78 6.77-14.28 6.77Zm195.29 60.46c-4.78 0-8.87-1.7-12.28-5.11-3.4-3.4-5.1-7.62-5.1-12.66V79.86c0-4.79 1.7-8.88 5.1-12.28 3.4-3.4 7.5-5.11 12.28-5.11s9.01 1.7 12.66 5.11c3.65 3.4 5.48 7.49 5.48 12.28V235.9c0 5.04-1.76 9.26-5.29 12.66-3.52 3.4-7.81 5.11-12.85 5.11Zm62.52-60.46c-4.78 0-8.94-1.7-12.46-5.1-3.52-3.4-5.29-7.61-5.29-12.65v-35.13c0-4.79 1.76-8.88 5.29-12.27 3.53-3.4 7.68-5.1 12.46-5.1s8.94 1.7 12.46 5.1c3.53 3.4 5.29 7.49 5.29 12.27v35.13c0 5.03-1.76 9.25-5.29 12.65-3.52 3.4-7.68 5.1-12.46 5.1ZM436.15 266.18c-10.94-6.13-19.61-14.63-26-25.51-6.39-10.88-9.59-23.17-9.59-36.88s3.2-26 9.59-36.88c6.39-10.88 15.06-19.34 26-25.41 10.94-6.06 22.94-9.1 35.99-9.1s25.21 3.03 36.09 9.1c10.88 6.06 19.48 14.53 25.8 25.41 6.33 10.88 9.49 23.17 9.49 36.88s-3.16 26-9.49 36.88-14.96 19.38-25.9 25.51c-10.94 6.13-22.94 9.19-35.99 9.19s-25.05-3.06-35.99-9.19Zm59.42-36.48c5.73-6.46 8.6-15.09 8.6-25.9s-2.87-19.8-8.6-26.2c-5.73-6.39-13.54-9.59-23.43-9.59s-17.87 3.2-23.53 9.59c-5.67 6.4-8.5 15.13-8.5 26.2s2.83 19.61 8.5 26c5.67 6.4 13.51 9.59 23.53 9.59s17.7-3.23 23.43-9.69ZM690.05 273.99h-38.76l-51.61-77.91v77.91h-38.76V134.58h38.76l51.61 78.9v-78.9h38.76v139.41ZM750.95 165.63v22.74h44.49v29.46h-44.49v25.11h50.42v31.04h-89.18v-139.4h89.18v31.04h-50.42ZM414.68 76.05c1.71-1 3.8-1.5 6.27-1.5v5.43h-1.39c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22ZM455.71 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59 1.52-1.06 2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.52-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96c2.31 1.31 4.09 3.11 5.34 5.4 1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.686 8.686 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54s-2.94 4.04-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM486.61 97.82h-17.56l-3.23 8.95h-5.54l14.55-40.02h6.06l14.5 40.02h-5.54l-3.23-8.95Zm-1.5-4.27-7.28-20.33-7.28 20.33h14.55ZM529.81 75.13v31.65h-5.25v-4.68c-1 1.62-2.4 2.88-4.19 3.78-1.79.9-3.76 1.36-5.92 1.36-2.46 0-4.68-.51-6.64-1.53s-3.51-2.55-4.65-4.59c-1.14-2.04-1.7-4.52-1.7-7.45V75.13h5.2v17.85c0 3.12.79 5.52 2.37 7.19 1.58 1.67 3.73 2.51 6.47 2.51s5.02-.87 6.64-2.6 2.43-4.25 2.43-7.57V75.13h5.25ZM538.7 82.32c1.31-2.44 3.11-4.34 5.4-5.69 2.29-1.35 4.86-2.02 7.71-2.02 2.46 0 4.75.57 6.87 1.7 2.12 1.14 3.73 2.63 4.85 4.48V64.04h5.31v42.74h-5.31v-5.95c-1.04 1.89-2.58 3.44-4.62 4.65s-4.43 1.82-7.16 1.82-5.36-.69-7.65-2.08c-2.29-1.39-4.09-3.33-5.4-5.83-1.31-2.5-1.96-5.35-1.96-8.55s.65-6.07 1.96-8.52Zm23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07-1.64-.94-3.44-1.42-5.4-1.42s-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04-1.44 3.85-1.44 6.24.48 4.53 1.44 6.32 2.25 3.16 3.87 4.1c1.62.94 3.41 1.42 5.37 1.42s3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1.96-1.79 1.44-3.88 1.44-6.27s-.48-4.47-1.44-6.24ZM577.91 68.95c-.69-.69-1.04-1.54-1.04-2.54s.35-1.85 1.04-2.54 1.54-1.04 2.54-1.04 1.78.35 2.45 1.04 1.01 1.54 1.01 2.54-.34 1.85-1.01 2.54-1.49 1.04-2.45 1.04-1.85-.35-2.54-1.04Zm5.08 6.18v31.65h-5.25V75.13h5.25ZM597.69 105.27c-2.41-1.35-4.29-3.26-5.66-5.75-1.37-2.48-2.05-5.36-2.05-8.63s.7-6.09 2.11-8.58 3.32-4.39 5.75-5.72 5.14-1.99 8.14-1.99 5.72.66 8.14 1.99 4.34 3.23 5.75 5.69c1.41 2.46 2.11 5.33 2.11 8.6s-.72 6.15-2.17 8.63c-1.44 2.48-3.4 4.4-5.86 5.75-2.46 1.35-5.2 2.02-8.2 2.02s-5.65-.67-8.06-2.02Zm13.37-3.93c1.65-.89 2.99-2.21 4.01-3.98 1.02-1.77 1.53-3.93 1.53-6.47s-.5-4.7-1.5-6.47c-1-1.77-2.31-3.09-3.93-3.96-1.62-.87-3.37-1.3-5.25-1.3s-3.69.43-5.28 1.3c-1.6.87-2.88 2.19-3.84 3.96s-1.44 3.93-1.44 6.47.47 4.76 1.41 6.53c.94 1.77 2.2 3.09 3.78 3.96 1.58.87 3.31 1.3 5.2 1.3s3.66-.44 5.31-1.33ZM652.38 86.65c-2.29 2.21-5.79 3.32-10.48 3.32h-7.74v16.81h-5.25V66.53h12.99c4.54 0 8 1.1 10.37 3.29 2.37 2.19 3.55 5.02 3.55 8.49s-1.15 6.13-3.44 8.35Zm-4.01-2.92c1.39-1.27 2.08-3.08 2.08-5.43 0-4.97-2.85-7.45-8.55-7.45h-7.74v14.78h7.74c2.93 0 5.08-.64 6.47-1.91ZM667.6 64.04v42.74h-5.25V64.04h5.25ZM676.55 82.32c1.31-2.44 3.11-4.34 5.4-5.69 2.29-1.35 4.84-2.02 7.65-2.02s5.18.6 7.22 1.79 3.56 2.7 4.56 4.5v-5.78h5.31v31.65h-5.31v-5.89c-1.04 1.85-2.59 3.38-4.65 4.59-2.06 1.21-4.46 1.82-7.19 1.82s-5.35-.69-7.62-2.08c-2.27-1.39-4.06-3.33-5.37-5.83-1.31-2.5-1.96-5.35-1.96-8.55s.65-6.07 1.96-8.52Zm23.39 2.34c-.96-1.77-2.26-3.13-3.9-4.07-1.64-.94-3.44-1.42-5.4-1.42s-3.75.46-5.37 1.39-2.91 2.27-3.87 4.04-1.44 3.85-1.44 6.24.48 4.53 1.44 6.32 2.25 3.16 3.87 4.1c1.62.94 3.41 1.42 5.37 1.42s3.76-.47 5.4-1.42c1.64-.94 2.94-2.31 3.9-4.1.96-1.79 1.44-3.88 1.44-6.27s-.48-4.47-1.44-6.24ZM742.85 75.13l-19.06 46.55h-5.43l6.24-15.25-12.76-31.3h5.83l9.93 25.64 9.82-25.64h5.43ZM776.8 92.91h-25.29c.19 3.12 1.26 5.55 3.21 7.31 1.94 1.75 4.3 2.63 7.07 2.63 2.27 0 4.17-.53 5.69-1.59 1.52-1.06 2.59-2.47 3.21-4.24h5.66c-.85 3.04-2.54 5.52-5.08 7.42s-5.7 2.86-9.47 2.86c-3 0-5.69-.67-8.06-2.02s-4.23-3.26-5.57-5.75c-1.35-2.48-2.02-5.36-2.02-8.63s.65-6.14 1.96-8.6 3.15-4.36 5.51-5.69 5.09-1.99 8.17-1.99 5.66.65 7.97 1.96c2.31 1.31 4.09 3.11 5.34 5.4 1.25 2.29 1.88 4.88 1.88 7.77 0 1-.06 2.06-.17 3.18Zm-6.58-9.44a8.686 8.686 0 0 0-3.61-3.29c-1.52-.75-3.21-1.13-5.05-1.13-2.66 0-4.92.85-6.79 2.54s-2.94 4.04-3.21 7.05h19.98c0-2-.44-3.72-1.33-5.17ZM793.12 76.05c1.71-1 3.8-1.5 6.27-1.5v5.43H798c-5.89 0-8.84 3.2-8.84 9.59v17.21h-5.25V75.13h5.25v5.14c.92-1.81 2.24-3.21 3.96-4.22Z"},null,-1),C5=[P5];function E5(e,t){return re(),ye("svg",x5,[...C5])}const S5={render:E5},k5=2,ap=window.localStorage.getItem("renderedIcons"),gu=ap?new Map(JSON.parse(ap)):new Map,xa=(e,t,r=500)=>e||kc(t,r),O5="/assets/img/bg-1024x1024.png",kc=async(e,t=1024)=>{await document.fonts.ready;const r=`${k5}-${e}-${t}`;if(gu.has(r))return gu.get(r);const s=document.createElement("canvas"),o=s.getContext("2d");s.style.position="fixed",s.style.top="0",s.style.left="0",s.style.opacity="0",document.body.appendChild(s),s.height=t,s.width=t,s.style.height=t+"px",s.style.width=t+"px";const l=new Image;return l.src=O5,await new Promise(u=>{l.onload=()=>{o.drawImage(l,0,0,s.width,s.height),o.fillStyle="white",o.font="900 100px 'Poppins'",o.textAlign="center",o.shadowColor="rgba(0, 0, 0, 0.7)",o.shadowBlur=50,o.fillText(e,s.width/2,s.height/2+72/2,s.width),o.fillStyle="white",o.fillRect(0,0,s.width,14),o.fillStyle="black",o.font="400 italic 8px 'Poppins'",o.textAlign="left",o.fillText(" reAudioPlayer ".repeat(100),2,8+2);const c=30;o.fillStyle="white",o.font="600 14px 'Poppins'",o.textAlign="left",o.fillText((e==null?void 0:e.toUpperCase())??e,c,s.height-35+8+2);const f=o.measureText(e).width+c+16;o.fillStyle="white",o.fillRect(f,s.height-30,s.width-f-c,2);const h=s.toDataURL();gu.set(r,h),u(h)}})};/*! Fast Average Color | © 2023 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color */function R5(e){var t=e.toString(16);return t.length===1?"0"+t:t}function lp(e){return"#"+e.map(R5).join("")}function T5(e){var t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128}function I5(e){return e?M5(e)?e:[e]:[]}function M5(e){return Array.isArray(e[0])}function Oc(e,t,r){for(var s=0;s=t-r&&e<=t+r}function N5(e,t,r){var s=r[0],o=r[1],l=r[2],u=r[3],c=r[4],f=e[t+3],h=ia(f,u,c);return u?!!(!f&&h||ia(e[t],s,c)&&ia(e[t+1],o,c)&&ia(e[t+2],l,c)&&h):h}var B5=24;function V5(e,t,r){for(var s={},o=r.dominantDivider||B5,l=r.ignoredColor,u=r.step,c=[0,0,0,0,0],f=0;fl?(f=o/l,u=zu,c=Math.round(u/f)):(f=l/o,c=zu,u=Math.round(c/f)),(u>o||c>l||u"u";function Y5(){return Z5?Eg?new OffscreenCanvas(1,1):null:document.createElement("canvas")}var J5="FastAverageColor: ";function Wn(e){return Error(J5+e)}function ys(e,t){t||console.error(e)}var X5=function(){function e(){this.canvas=null,this.ctx=null}return e.prototype.getColorAsync=function(t,r){if(!t)return Promise.reject(Wn("call .getColorAsync() without resource"));if(typeof t=="string"){if(typeof Image>"u")return Promise.reject(Wn("resource as string is not supported in this environment"));var s=new Image;return s.crossOrigin=r&&r.crossOrigin||"",s.src=t,this.bindImageEvents(s,r)}else{if(Cg(t)&&!t.complete)return this.bindImageEvents(t,r);var o=this.getColor(t,r);return o.error?Promise.reject(o.error):Promise.resolve(o)}},e.prototype.getColor=function(t,r){r=r||{};var s=up(r);if(!t){var o=Wn("call .getColor() without resource");return ys(o,r.silent),this.prepareResult(s,o)}var l=U5(t),u=z5(l,r);if(!u.srcWidth||!u.srcHeight||!u.destWidth||!u.destHeight){var o=Wn('incorrect sizes for resource "'.concat(fp(t),'"'));return ys(o,r.silent),this.prepareResult(s,o)}if(!this.canvas&&(this.canvas=Y5(),!this.canvas)){var o=Wn("OffscreenCanvas is not supported in this browser");return ys(o,r.silent),this.prepareResult(s,o)}if(!this.ctx){if(this.ctx=this.canvas.getContext("2d",{willReadFrequently:!0}),!this.ctx){var o=Wn("Canvas Context 2D is not supported in this browser");return ys(o,r.silent),this.prepareResult(s)}this.ctx.imageSmoothingEnabled=!1}this.canvas.width=u.destWidth,this.canvas.height=u.destHeight;try{this.ctx.clearRect(0,0,u.destWidth,u.destHeight),this.ctx.drawImage(t,u.srcLeft,u.srcTop,u.srcWidth,u.srcHeight,0,0,u.destWidth,u.destHeight);var c=this.ctx.getImageData(0,0,u.destWidth,u.destHeight).data;return this.prepareResult(this.getColorFromArray4(c,r))}catch(f){var o=Wn("security error (CORS) for resource ".concat(fp(t),`. +Details: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image`));return ys(o,r.silent),!r.silent&&console.error(f),this.prepareResult(s,o)}},e.prototype.getColorFromArray4=function(t,r){r=r||{};var s=4,o=t.length,l=up(r);if(o{localStorage.setItem(Sg,JSON.stringify({sidebar:e.sidebar,player:e.player,theme:e.theme,ambient:e.ambient}))},e4={sidebar:{sports:!1,news:!1,collapsed:!1},player:{expandedCover:!1,pictureInPicture:!1,type:"web"},theme:Q5,ambient:!0},Cs=()=>JSON.parse(localStorage.getItem(Sg)||JSON.stringify(e4)),t4=()=>{const e=Cs();console.log("migrateSettings",e);const t=localStorage.getItem("sidebar.showSportsTab"),r=localStorage.getItem("sidebar.showNewsTab"),s=localStorage.getItem("player.inBrowser"),o=localStorage.getItem("player.collapsedSidebar"),l=localStorage.getItem("player.exapndCover"),u=localStorage.getItem("theme");t&&(e.sidebar.sports=t==="true",localStorage.removeItem("sidebar.showSportsTab")),r&&(e.sidebar.news=r==="true",localStorage.removeItem("sidebar.showNewsTab")),s&&localStorage.removeItem("player.inBrowser"),o&&(e.sidebar.collapsed=o==="true",localStorage.removeItem("player.collapsedSidebar")),l&&(e.player.expandedCover=l==="true",localStorage.removeItem("player.exapndCover")),u&&(e.theme=u,localStorage.removeItem("theme")),kg(e)},n4="production",Ur=Qs("settings",()=>{t4();const e=Ce(Cs().player),t=Ce(Cs().sidebar),r=Ce(Cs().theme),s=Ce(Cs().ambient),o=Ce(n4),l=()=>{kg({player:e.value,sidebar:t.value,theme:r.value,ambient:s.value})};ot(()=>e,l,{deep:!0}),ot(()=>t,l,{deep:!0}),ot(()=>r,l,{deep:!0}),ot(()=>s,l,{deep:!0});const u=Ve(()=>window.getCurrentThemeProperty&&window.getCurrentThemeProperty("supportsAmbient"));return{player:e,sidebar:t,theme:r,ambient:s,themeSupportsAmbient:u,mode:{mode:o,dev:Ve(()=>o.value==="development"),prod:Ve(()=>o.value==="production"),toggle:()=>{o.value==="development"?o.value="production":o.value="development"}}}}),Es=new X5,Ss=(e,t)=>{const r=e.hex,s=Math.round(t*255).toString(16);return r+s},r4=async(e,t,r=.25)=>{if(!Ur().ambient)return;var o=e.width/100,l=e.height/100,u=e.naturalWidth,c=e.naturalHeight;const f=await Promise.all([Es.getColorAsync(t,{height:l}),Es.getColorAsync(t,{left:u-o,width:o}),Es.getColorAsync(t,{width:o}),Es.getColorAsync(t,{top:c-l,height:l})]);o*=40,l*=40;var h=Ss(f[0],r),p=Ss(f[1],r),m=Ss(f[2],r),g=Ss(f[3],r);const y=" 10px",S=` ${o}px `,w=o+"px",T=l+"px";e.style.boxShadow=["0 -".concat(T," ").concat(S," ").concat(y," ").concat(h),"".concat(w," 0 ").concat(S," ").concat(y," ").concat(p),"0 ".concat(T," ").concat(S," ").concat(y," ").concat(m),"-".concat(w," 0 ").concat(S," ").concat(y," ").concat(g)].join(", ")},i4=async(e,t,r="to top right",s=.2)=>{if(!Ur().ambient)return;const l=await Es.getColorAsync(t),u=Ss(l,s),c=`linear-gradient(${r}, ${u}, transparent)`;e.style.background=c},s4={dark:!1,dynamic:!0},o4={dark:!0,dynamic:!1},li={"fg-secondary":{dark:"#1ed760",dynamic:"#00c48b",light:"#18a74b"},"fg-secondary-dk":{dark:"#217e41",dynamic:"#00c48b",light:"#80dda0"},"bg-contrast":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-contrast":{dark:"#121212",dynamic:"#1e1e1e",light:"white"},"fg-base":{dark:"white",dynamic:"whitesmoke",light:"#181c2f"},"fg-base-dk":{dark:"#a7a7a7",dynamic:"#c2bebe",light:"#8b8c91"},"fg-base-dkr":{dark:"#999",light:"#8b8c91",dynamic:"#999"},"bg-hover-ltr":{dark:"#242424"},"bg-hover-lt":{dark:"hsla(0,0%,100%,0.04)",light:"#b3b3b31f"},"bg-hover":{dark:"hsla(0,0%,100%,0.3)",dynamic:"#00c48b82",light:"#7c828f5e"},"bg-hover-dk":{dark:"hsla(0,0%,100%,0.1)",dynamic:"#00c48b42",light:"#E3E7EB"},"bg-gradient":{dark:"linear-gradient(to left bottom, #1ed760, #217e41)",dynamic:"linear-gradient(to left bottom, #00a53c, #00297f)",light:"linear-gradient(to left bottom, #18a74b, #80dda0)"},"bg-gradient-placeholder":{dark:"linear-gradient(to left bottom, #00a53c, #00297f)"},"bg-base":{dark:"#121212",light:"white"},"bg-base-lt":{dark:"#181818",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-base-dk":{dark:"black",dynamic:"linear-gradient(to right bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.3))",light:"#f3f7fb"},"bg-input":{dark:"var(--background-light)",light:"var(--background)"},"bg-fixedPlaylistHeader":{dark:"var(--bg-base-lt)",dynamic:"#374148"},"border-fixedPlaylistHeader":{dark:"#303030",dynamic:"none",light:"#D0D0D0"},"border-base":{dark:"hsla(0,0%,100%,0.1)",light:"#E3E7EB"},"border-container":{dark:"1px solid var(--border-base)",light:"1px solid var(--border-base)",dynamic:"1px solid transparent"},"ff-base":{dark:"Poppins, sans-serif"},"h-playlistEntry":{dark:"64px"},"h-player":{dark:"88px"},"h-player-mobile":{dark:"64px"},"h-header":{dark:"64px"},coverAsBackground:s4,supportsAmbient:o4},qa=()=>Ur();window.getThemes=()=>{window.themes=[];for(const e of Object.keys(li))for(const t of Object.keys(li[e]))window.themes.includes(t)||window.themes.push(t);return window.themes};window.getCurrentTheme=()=>qa().theme;window.setTheme=e=>{if(window.getThemes().includes(e)){qa().theme=e;for(const t of Object.keys(li)){const r=li[t];t!="coverAsBackground"&&document.documentElement.style.setProperty(`--${t}`,r[e]??r.dark)}}};window.restoreTheme=()=>window.setTheme(qa().theme||"dynamic");window.getCurrentThemeProperty=e=>{const t=li[e];return t[qa().theme]??t.dark};const Og=window,a4=["alt","src"],Nr=Ze({__name:"Cover",props:{src:{type:String,required:!0},type:{type:String,required:!1,default:"track"},placeholder:{type:String,required:!1},withAmbient:{type:Boolean,required:!1,default:!1},ambientOpacity:{type:Number,required:!1,default:.2},name:{type:String,required:!1}},setup(e){const t=e,r=Ce(null),s=async()=>{if(r.value=await kc(t.name),!r.value){setTimeout(()=>{s()},100);return}},o=()=>{r.value=wg(t.src,t.type),r.value||s()};ot(()=>t.src,o),o();const l=Ce(null),u=async()=>{if(!t.withAmbient||!l.value||!Og.getCurrentThemeProperty("supportsAmbient"))return;const c=await xa(r.value,t.name);r4(l.value,c,t.ambientOpacity)};return(c,f)=>(re(),ye("img",{ref_key:"element",ref:l,alt:t.type,src:oe(xa)(r.value,e.name),class:"cover rounded-md",onError:s,onLoad:u,lazy:""},null,40,a4))}});const l4={name:"NavEntry",components:{Cover:Nr},props:{icon:String,img:String,name:String,href:String,hasChildSites:Boolean,parentHref:String,minimised:Boolean},computed:{showImg(){return this.img?!0:/^\/playlist\/\w{22}$/.exec(this.href)},active(){return this.hasChildSites?this.$route.path.includes(this.href)?!0:(console.log(this.parentHref),this.parentHref&&this.$route.path.includes(this.parentHref)):!1}}},u4={key:0,class:"material-icons-round icon"},c4={key:2,class:"name hideIfMobile"};function f4(e,t,r,s,o,l){const u=Ui("Cover"),c=Ui("router-link");return re(),Ge(c,{to:r.href,class:"link"},{default:Rt(()=>[te("div",{class:Xe([{active:l.active,img:l.showImg},"navEntry"])},[r.icon?(re(),ye("span",u4,De(r.icon),1)):Be("",!0),l.showImg?(re(),Ge(u,{key:1,src:r.img,class:"icon",type:"playlist",name:r.name},null,8,["src","name"])):Be("",!0),r.minimised?Be("",!0):(re(),ye("span",c4,De(r.name),1))],2)]),_:1},8,["to"])}const Hn=at(l4,[["render",f4],["__scopeId","data-v-2ced8467"]]),d4="modulepreload",h4=function(e){return"/"+e},dp={},pt=function(t,r,s){if(!r||r.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(r.map(l=>{if(l=h4(l),l in dp)return;dp[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!s)for(let p=o.length-1;p>=0;p--){const m=o[p];if(m.href===l&&(!u||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const h=document.createElement("link");if(h.rel=u?"stylesheet":d4,u||(h.as="script",h.crossOrigin=""),h.href=l,document.head.appendChild(h),u)return new Promise((p,m)=>{h.addEventListener("load",p),h.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})})).then(()=>t()).catch(l=>{const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=l,window.dispatchEvent(u),!u.defaultPrevented)throw l})};/*! * vue-router v4.2.5 * (c) 2023 Eduardo San Martin Morote * @license MIT - */const Mi=typeof window<"u";function p4(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ut=Object.assign;function vu(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 Ls=()=>{},$n=Array.isArray,m4=/\/$/,g4=e=>e.replace(m4,"");function yu(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=b4(s??t,r),{fullPath:s+(l&&"?")+l+u,path:s,query:o,hash:u}}function v4(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 y4(e,t,r){const s=t.matched.length-1,o=r.matched.length-1;return s>-1&&s===o&&Zi(t.matched[s],r.matched[o])&&Rg(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function Zi(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Rg(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!_4(e[r],t[r]))return!1;return!0}function _4(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 b4(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-(u===s.length?1:0)).join("/")}var Gs;(function(e){e.pop="pop",e.push="push"})(Gs||(Gs={}));var $s;(function(e){e.back="back",e.forward="forward",e.unknown=""})($s||($s={}));function w4(e){if(!e)if(Mi){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),g4(e)}const A4=/^[^#]+#/;function x4(e,t){return e.replace(A4,"#")+t}function P4(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 ja=()=>({left:window.pageXOffset,top:window.pageYOffset});function C4(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=P4(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function mp(e,t){return(history.state?history.state.position-t:-1)+e}const Zu=new Map;function E4(e,t){Zu.set(e,t)}function S4(e){const t=Zu.get(e);return Zu.delete(e),t}let k4=()=>location.protocol+"//"+location.host;function Tg(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 O4(e,t,r,s){let o=[],l=[],u=null;const c=({state:g})=>{const y=Tg(e,location),S=r.value,w=t.value;let T=0;if(g){if(r.value=y,t.value=g,u&&u===S){u=null;return}T=w?g.position-w.position:0}else s(y);o.forEach(V=>{V(r.value,S,{delta:T,type:Gs.pop,direction:T?T>0?$s.forward:$s.back:$s.unknown})})};function f(){u=r.value}function h(g){o.push(g);const y=()=>{const S=o.indexOf(g);S>-1&&o.splice(S,1)};return l.push(y),y}function p(){const{history:g}=window;g.state&&g.replaceState(ut({},g.state,{scroll:ja()}),"")}function m(){for(const g of l)g();l=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",p)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",p,{passive:!0}),{pauseListeners:f,listen:h,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?ja():null}}function R4(e){const{history:t,location:r}=window,s={value:Tg(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,h,p){const m=e.indexOf("#"),g=m>-1?(r.host&&document.querySelector("base")?e:e.slice(m))+f:k4()+e+f;try{t[p?"replaceState":"pushState"](h,"",g),o.value=h}catch(y){console.error(y),r[p?"replace":"assign"](g)}}function u(f,h){const p=ut({},t.state,gp(o.value.back,f,o.value.forward,!0),h,{position:o.value.position});l(f,p,!0),s.value=f}function c(f,h){const p=ut({},o.value,t.state,{forward:f,scroll:ja()});l(p.current,p,!0);const m=ut({},gp(s.value,f,null),{position:p.position+1},h);l(f,m,!1),s.value=f}return{location:s,state:o,push:c,replace:u}}function T4(e){e=w4(e);const t=R4(e),r=O4(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:x4.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 I4(e){return typeof e=="string"||e&&typeof e=="object"}function Ig(e){return typeof e=="string"||typeof e=="symbol"}const Cr={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Mg=Symbol("");var vp;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(vp||(vp={}));function Yi(e,t){return ut(new Error,{type:e,[Mg]:!0},t)}function rr(e,t){return e instanceof Error&&Mg in e&&(t==null||!!(e.type&t))}const yp="[^/]+?",M4={sensitive:!1,strict:!1,start:!0,end:!0},L4=/[.+*?^${}()[\]/\\]/g;function $4(e,t){const r=ut({},M4,t),s=[];let o=r.start?"^":"";const l=[];for(const h of e){const p=h.length?[]:[90];r.strict&&!h.length&&(o+="/");for(let m=0;mt.length?t.length===1&&t[0]===40+40?1:-1:0}function N4(e,t){let r=0;const s=e.score,o=t.score;for(;r0&&t[t.length-1]<0}const B4={type:0,value:""},V4=/[a-zA-Z0-9_]/;function W4(e){if(!e)return[[]];if(e==="/")return[[B4]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(y){throw new Error(`ERR (${r})/"${h}": ${y}`)}let r=0,s=r;const o=[];let l;function u(){l&&o.push(l),l=[]}let c=0,f,h="",p="";function m(){h&&(r===0?l.push({type:0,value:h}):r===1||r===2||r===3?(l.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${h}) must be alone in its segment. eg: '/:ids+.`),l.push({type:1,value:h,regexp:p,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),h="")}function g(){h+=f}for(;c{u(B)}:Ls}function u(p){if(Ig(p)){const m=s.get(p);m&&(s.delete(p),r.splice(r.indexOf(m),1),m.children.forEach(u),m.alias.forEach(u))}else{const m=r.indexOf(p);m>-1&&(r.splice(m,1),p.record.name&&s.delete(p.record.name),p.children.forEach(u),p.alias.forEach(u))}}function c(){return r}function f(p){let m=0;for(;m=0&&(p.record.path!==r[m].record.path||!Lg(p,r[m]));)m++;r.splice(m,0,p),p.record.name&&!wp(p)&&s.set(p.record.name,p)}function h(p,m){let g,y={},S,w;if("name"in p&&p.name){if(g=s.get(p.name),!g)throw Yi(1,{location:p});w=g.record.name,y=ut(bp(m.params,g.keys.filter(B=>!B.optional).map(B=>B.name)),p.params&&bp(p.params,g.keys.map(B=>B.name))),S=g.stringify(y)}else if("path"in p)S=p.path,g=r.find(B=>B.re.test(S)),g&&(y=g.parse(S),w=g.record.name);else{if(g=m.name?s.get(m.name):r.find(B=>B.re.test(m.path)),!g)throw Yi(1,{location:p,currentLocation:m});w=g.record.name,y=ut({},m.params,p.params),S=g.stringify(y)}const T=[];let V=g;for(;V;)T.unshift(V.record),V=V.parent;return{name:w,path:S,params:y,matched:T,meta:j4(T)}}return e.forEach(p=>l(p)),{addRoute:l,resolve:h,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 U4(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:q4(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 q4(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 j4(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 Lg(e,t){return t.children.some(r=>r===e||Lg(e,r))}const $g=/#/g,K4=/&/g,G4=/\//g,z4=/=/g,Z4=/\?/g,Dg=/\+/g,Y4=/%5B/g,J4=/%5D/g,Ng=/%5E/g,X4=/%60/g,Bg=/%7B/g,Q4=/%7C/g,Vg=/%7D/g,eC=/%20/g;function Rc(e){return encodeURI(""+e).replace(Q4,"|").replace(Y4,"[").replace(J4,"]")}function tC(e){return Rc(e).replace(Bg,"{").replace(Vg,"}").replace(Ng,"^")}function Yu(e){return Rc(e).replace(Dg,"%2B").replace(eC,"+").replace($g,"%23").replace(K4,"%26").replace(X4,"`").replace(Bg,"{").replace(Vg,"}").replace(Ng,"^")}function nC(e){return Yu(e).replace(z4,"%3D")}function rC(e){return Rc(e).replace($g,"%23").replace(Z4,"%3F")}function iC(e){return e==null?"":rC(e).replace(G4,"%2F")}function Pa(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function sC(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;ol&&Yu(l)):[s&&Yu(s)]).forEach(l=>{l!==void 0&&(t+=(t.length?"&":"")+r,l!=null&&(t+="="+l))})}return t}function oC(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 aC=Symbol(""),Pp=Symbol(""),Ka=Symbol(""),Tc=Symbol(""),Ju=Symbol("");function _s(){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 Ir(e,t,r,s,o){const l=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((u,c)=>{const f=m=>{m===!1?c(Yi(4,{from:r,to:t})):m instanceof Error?c(m):I4(m)?c(Yi(2,{from:t,to:m})):(l&&s.enterCallbacks[o]===l&&typeof m=="function"&&l.push(m),u())},h=e.call(s&&s.instances[o],t,r,f);let p=Promise.resolve(h);e.length<3&&(p=p.then(f)),p.catch(m=>c(m))})}function _u(e,t,r,s){const o=[];for(const l of e)for(const u in l.components){let c=l.components[u];if(!(t!=="beforeRouteEnter"&&!l.instances[u]))if(lC(c)){const h=(c.__vccOpts||c)[t];h&&o.push(Ir(h,r,s,l,u))}else{let f=c();o.push(()=>f.then(h=>{if(!h)return Promise.reject(new Error(`Couldn't resolve component "${u}" at "${l.path}"`));const p=p4(h)?h.default:h;l.components[u]=p;const g=(p.__vccOpts||p)[t];return g&&Ir(g,r,s,l,u)()}))}}return o}function lC(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Cp(e){const t=on(Ka),r=on(Tc),s=Ve(()=>t.resolve(oe(e.to))),o=Ve(()=>{const{matched:f}=s.value,{length:h}=f,p=f[h-1],m=r.matched;if(!p||!m.length)return-1;const g=m.findIndex(Zi.bind(null,p));if(g>-1)return g;const y=Ep(f[h-2]);return h>1&&Ep(p)===y&&m[m.length-1].path!==y?m.findIndex(Zi.bind(null,f[h-2])):g}),l=Ve(()=>o.value>-1&&dC(r.params,s.value.params)),u=Ve(()=>o.value>-1&&o.value===r.matched.length-1&&Rg(r.params,s.value.params));function c(f={}){return fC(f)?t[oe(e.replace)?"replace":"push"](oe(e.to)).catch(Ls):Promise.resolve()}return{route:s,href:Ve(()=>s.value.href),isActive:l,isExactActive:u,navigate:c}}const uC=Ze({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(Ka),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:bc("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:o.value},l)}}}),cC=uC;function fC(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 dC(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,hC=Ze({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const s=on(Ju),o=Ve(()=>e.route||s.value),l=on(Pp,0),u=Ve(()=>{let h=oe(l);const{matched:p}=o.value;let m;for(;(m=p[h])&&!m.components;)h++;return h}),c=Ve(()=>o.value.matched[u.value]);Mr(Pp,Ve(()=>u.value+1)),Mr(aC,c),Mr(Ju,o);const f=Ce();return ot(()=>[f.value,c.value,e.name],([h,p,m],[g,y,S])=>{p&&(p.instances[m]=h,y&&y!==p&&h&&h===g&&(p.leaveGuards.size||(p.leaveGuards=y.leaveGuards),p.updateGuards.size||(p.updateGuards=y.updateGuards))),h&&p&&(!y||!Zi(p,y)||!g)&&(p.enterCallbacks[m]||[]).forEach(w=>w(h))},{flush:"post"}),()=>{const h=o.value,p=e.name,m=c.value,g=m&&m.components[p];if(!g)return kp(r.default,{Component:g,route:h});const y=m.props[p],S=y?y===!0?h.params:typeof y=="function"?y(h):y:null,T=bc(g,ut({},S,t,{onVnodeUnmounted:V=>{V.component.isUnmounted&&(m.instances[p]=null)},ref:f}));return kp(r.default,{Component:T,route:h})||T}}});function kp(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const pC=hC;function mC(e){const t=H4(e.routes,e),r=e.parseQuery||sC,s=e.stringifyQuery||xp,o=e.history,l=_s(),u=_s(),c=_s(),f=AA(Cr);let h=Cr;Mi&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=vu.bind(null,X=>""+X),m=vu.bind(null,iC),g=vu.bind(null,Pa);function y(X,se){let he,Ae;return Ig(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 w(){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=yu(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:Pa(L.hash),redirectedFrom:void 0,href:ue})}let he;if("path"in X)he=ut({},X,{path:yu(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=p(g(Ae.params));const je=v4(s,ut({},X,{hash:tC(Oe),path:Ae.path})),O=o.createHref(je);return ut({fullPath:je,hash:Oe,query:s===xp?oC(X.query):X.query||{}},Ae,{redirectedFrom:void 0,href:O})}function B(X){return typeof X=="string"?yu(r,X,f.value.path):ut({},X)}function P(X,se){if(h!==X)return Yi(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:"path"in Ae?{}:X.params},Ae)}}function q(X,se){const he=h=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&&y4(s,Ae,he)&&(ue=Yi(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=Pe.values().next().value;return se&&typeof se.runWithContext=="function"?se.runWithContext(X):X()}function U(X,se){let he;const[Ae,Oe,je]=gC(X,se);he=_u(Ae.reverse(),"beforeRouteLeave",X,se);for(const L of Ae)L.leaveGuards.forEach(J=>{he.push(Ir(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(Ir(L,X,se));return he.push(O),ke(he)}).then(()=>{he=_u(Oe,"beforeRouteUpdate",X,se);for(const L of Oe)L.updateGuards.forEach(J=>{he.push(Ir(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(Ir(J,X,se));else he.push(Ir(L.beforeEnter,X,se));return he.push(O),ke(he)}).then(()=>(X.matched.forEach(L=>L.enterCallbacks={}),he=_u(je,"beforeRouteEnter",X,se),he.push(O),ke(he))).then(()=>{he=[];for(const L of u.list())he.push(Ir(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===Cr,L=Mi?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(Ls);return}h=Ae;const je=f.value;Mi&&E4(mp(je.fullPath,he.delta),ja()),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===Gs.pop&&o.go(-1,!1)}).catch(Ls),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===Gs.pop&&rr(O,20)&&o.go(-1,!1)),G(Ae,je,O)}).catch(Ls)}))}let I=_s(),D=_s(),x;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 Z(){return x&&f.value!==Cr?Promise.resolve():new Promise((X,se)=>{I.add([X,se])})}function N(X){return x||(x=!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(!Mi||!Oe)return Promise.resolve();const je=!he&&S4(mp(X.fullPath,0))||(Ae||!he)&&history.state&&history.state.scroll||null;return Kn().then(()=>Oe(X,se,je)).then(O=>O&&C4(O)).catch(O=>_(O,X,se))}const Q=X=>o.go(X);let de;const Pe=new Set,_e={currentRoute:f,listening:!0,addRoute:y,removeRoute:S,hasRoute:T,getRoutes:w,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:Z,install(X){const se=this;X.component("RouterLink",cC),X.component("RouterView",pC),X.config.globalProperties.$router=se,Object.defineProperty(X.config.globalProperties,"$route",{enumerable:!0,get:()=>oe(f)}),Mi&&!de&&f.value===Cr&&(de=!0,k(o.location).catch(Oe=>{}));const he={};for(const Oe in Cr)Object.defineProperty(he,Oe,{get:()=>f.value[Oe],enumerable:!0});X.provide(Ka,se),X.provide(Tc,um(he)),X.provide(Ju,f);const Ae=X.unmount;Pe.add(X),X.unmount=function(){Pe.delete(X),Pe.size<1&&(h=Cr,H&&H(),H=null,f.value=Cr,de=!1,x=!1),Ae()}}};function ke(X){return X.reduce((se,he)=>se.then(()=>j(he)),Promise.resolve())}return _e}function gC(e,t){const r=[],s=[],o=[],l=Math.max(t.matched.length,e.matched.length);for(let u=0;uZi(h,c))?s.push(c):r.push(c));const f=e.matched[u];f&&(t.matched.find(h=>Zi(h,f))||o.push(f))}return[r,s,o]}function vC(){return on(Ka)}function Ic(){return on(Tc)}const yC=[{path:"/",component:()=>mt(()=>import("./index-d667419a.js"),["assets/index-d667419a.js","assets/TrackCompact-89783a72.js","assets/TrackCompact-79c8b159.css","assets/PlaylistEntry-de6133b2.js","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-1ba48776.css","assets/spotify-40ad401f.js","assets/PlaylistItem-378aa73f.js","assets/PlaylistItem-1de8bde1.css","assets/index-bd89c879.css"])},{path:"/discover",component:()=>mt(()=>import("./Explore-c4d854bf.js"),["assets/Explore-c4d854bf.js","assets/Explore-1b45015b.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:()=>mt(()=>import("./index-b57d7504.js"),["assets/index-b57d7504.js","assets/index-2f9f0259.css"]),meta:{title:"Search - reAudioPlayer One"}},{path:"/collection/albums",component:()=>mt(()=>import("./Albums-fcb1e7f2.js"),["assets/Albums-fcb1e7f2.js","assets/CollectionHeader-eecd1a8a.js","assets/CollectionHeader-fcda14ed.css","assets/Albums-9b5db7b3.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/artists",component:()=>mt(()=>import("./Artists-98f3caad.js"),["assets/Artists-98f3caad.js","assets/FullShelf-006a7dde.js","assets/FullShelf-62d1d109.css","assets/CollectionHeader-eecd1a8a.js","assets/CollectionHeader-fcda14ed.css","assets/Artists-502bde9d.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/playlists",component:()=>mt(()=>import("./Playlists-152359c7.js"),["assets/Playlists-152359c7.js","assets/FullShelf-006a7dde.js","assets/FullShelf-62d1d109.css","assets/PlaylistItem-378aa73f.js","assets/playerInPicture-af203fdf.js","assets/PlaylistItem-1de8bde1.css","assets/CollectionHeader-eecd1a8a.js","assets/CollectionHeader-fcda14ed.css","assets/Playlists-cb788b08.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/releases",component:()=>mt(()=>import("./Releases-af8ef2a4.js"),["assets/Releases-af8ef2a4.js","assets/CollectionHeader-eecd1a8a.js","assets/CollectionHeader-fcda14ed.css","assets/playerInPicture-af203fdf.js","assets/Releases-1241d86a.css"]),meta:{title:"Releases - reAudioPlayer One"}},{path:"/collection/tracks",component:()=>mt(()=>import("./Liked-4879dfc1.js"),["assets/Liked-4879dfc1.js","assets/Template-432d76e5.js","assets/PlaylistEntry-de6133b2.js","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-1ba48776.css","assets/FactCard-20171310.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-e7ab47a2.js","assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js","assets/Markdown-d883632e.css","assets/Template-01e8e5fe.css"]),meta:{title:"Liked Songs - reAudioPlayer One"}},{path:"/collection/tracks/breaking",component:()=>mt(()=>import("./Breaking-45731b5e.js"),["assets/Breaking-45731b5e.js","assets/Template-432d76e5.js","assets/PlaylistEntry-de6133b2.js","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-1ba48776.css","assets/FactCard-20171310.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-e7ab47a2.js","assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js","assets/Markdown-d883632e.css","assets/Template-01e8e5fe.css"]),meta:{title:"Breaking Songs - reAudioPlayer One"}},{path:"/playlist/create",component:()=>mt(()=>import("./Create-c4da9747.js"),["assets/Create-c4da9747.js","assets/Create-8ab3526b.css"]),meta:{title:"Create Playlist - reAudioPlayer One"}},{path:"/playlist/:id/edit",component:()=>mt(()=>import("./Editor-f0e93882.js"),["assets/Editor-f0e93882.js","assets/Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js","assets/PlaylistEntry-de6133b2.js","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-1ba48776.css","assets/Editor-29aa8a80.css"]),meta:{title:"Smart Playlist Editor - reAudioPlayer One"}},{path:"/playlist/:id",component:()=>mt(()=>import("./Normal-5ddfa169.js"),["assets/Normal-5ddfa169.js","assets/Template-432d76e5.js","assets/PlaylistEntry-de6133b2.js","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-1ba48776.css","assets/FactCard-20171310.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-e7ab47a2.js","assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js","assets/Markdown-d883632e.css","assets/Template-01e8e5fe.css"]),meta:{title:"Playlist - reAudioPlayer One"}},{path:"/track/:hash",component:()=>mt(()=>import("./Track-794404ac.js"),["assets/Track-794404ac.js","assets/FactCard-20171310.js","assets/FactCard-3c5d1fcf.css","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/spotify-40ad401f.js","assets/Track-7c1d0a5c.css"]),meta:{title:"Track - reAudioPlayer One"}},{path:"/artist/:name",component:()=>mt(()=>import("./Artist-435bb7d5.js"),["assets/Artist-435bb7d5.js","assets/FactCard-20171310.js","assets/FactCard-3c5d1fcf.css","assets/PlaylistEntry-de6133b2.js","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-1ba48776.css","assets/spotify-40ad401f.js","assets/Artist-a6b528f5.css"]),meta:{title:"Artist - reAudioPlayer One"}},{path:"/preferences",component:()=>mt(()=>import("./index-b4997df0.js"),["assets/index-b4997df0.js","assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js","assets/Markdown-d883632e.css","assets/TrackCompact-89783a72.js","assets/TrackCompact-79c8b159.css","assets/gistClient-e7ab47a2.js","assets/index-8e12dc4a.css"]),meta:{title:"Preferences - reAudioPlayer One"}},{path:"/import",component:()=>mt(()=>import("./Import-55b2d529.js"),["assets/Import-55b2d529.js","assets/gistClient-e7ab47a2.js","assets/Import-5bb9c089.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/import/:id",component:()=>mt(()=>import("./ImportLink-38684500.js"),["assets/ImportLink-38684500.js","assets/ImportLink-fa9af2ae.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/export",component:()=>mt(()=>import("./Export-59966bf7.js"),["assets/Export-59966bf7.js","assets/gistClient-e7ab47a2.js","assets/Export-a03f6dd4.css"]),meta:{title:"Export - reAudioPlayer One"}},{path:"/sing-along",component:()=>mt(()=>import("./index-a9adc40e.js"),["assets/index-a9adc40e.js","assets/index-58d888b4.css"]),meta:{title:"Sing Along - reAudioPlayer One"}},{path:"/download",component:()=>mt(()=>import("./index-ae325741.js"),["assets/index-ae325741.js","assets/index-3d76937e.css"]),meta:{title:"Download - reAudioPlayer One"}},{path:"/welcome",component:()=>mt(()=>import("./Welcome-7b34553a.js"),["assets/Welcome-7b34553a.js","assets/Welcome-5b21c29e.css"]),meta:{title:"Welcome to reAudioPlayer One"}},{path:"/news",component:()=>mt(()=>import("./News-4e6e4aea.js"),["assets/News-4e6e4aea.js","assets/FullShelf-006a7dde.js","assets/FullShelf-62d1d109.css","assets/News-99169f9d.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/sports",component:()=>mt(()=>import("./Sports-1ccf2e89.js"),["assets/Sports-1ccf2e89.js","assets/FullShelf-006a7dde.js","assets/FullShelf-62d1d109.css","assets/Sports-385f73f9.css"]),meta:{title:"Sports - reAudioPlayer One"}},{path:"/news/:url",component:()=>mt(()=>import("./NewsArticle-f8724657.js"),["assets/NewsArticle-f8724657.js","assets/NewsArticle-03a45240.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/player/insights",component:()=>mt(()=>import("./Insight-7c680bf3.js"),["assets/Insight-7c680bf3.js","assets/Insight-8c46a3d4.css"]),meta:{title:"Insights - reAudioPlayer One"}},{path:"/player",component:()=>mt(()=>import("./BigPlayer-aac773a1.js"),["assets/BigPlayer-aac773a1.js","assets/Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js","assets/PlaylistEntry-de6133b2.js","assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-1ba48776.css","assets/PlaylistItem-378aa73f.js","assets/PlaylistItem-1de8bde1.css","assets/BigPlayer-aabd95ce.css"]),meta:{title:"reAudioPlayer One"}}],Li=mC({history:T4(),routes:yC}),_C=["placeholder","type"],bC=Ze({__name:"TextInputWithIcon",props:{icon:String,placeholder:String,modelValue:String,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=Ce(s.modelValue);ot(()=>s.modelValue,h=>{o.value=h});const l=r,u=()=>{l("update:modelValue",o.value),l("change",o.value)},c=h=>{s.onKeyUp&&s.onKeyUp(h)||h.key==="Enter"&&l("submit",o)},f=Ce();return t({focus:()=>{f.value.focus()}}),(h,p)=>(re(),ye("div",{class:Xe(["text-input-with-icon rounded-3xl flex items-center px-4",{expanded:e.expanded}])},[te("span",{class:Xe([{"cursor-pointer":e.onClick},"material-symbols-rounded ms-wght-200"]),onClick:p[0]||(p[0]=(...m)=>e.onClick&&e.onClick(...m))},De(e.icon),3),Us(te("input",{"onUpdate:modelValue":p[1]||(p[1]=m=>o.value=m),placeholder:e.placeholder,type:e.type,onInput:u,onKeyup:c,onFocusout:p[2]||(p[2]=m=>h.$emit("focusout")),ref_key:"element",ref:f},null,40,_C),[[xc,o.value]])],2))}});const Xu=at(bC,[["__scopeId","data-v-18a674c5"]]);var bs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wC(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function lO(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 Ca={exports:{}};/** + */const Mi=typeof window<"u";function p4(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ut=Object.assign;function vu(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 Ls=()=>{},$n=Array.isArray,m4=/\/$/,g4=e=>e.replace(m4,"");function yu(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=b4(s??t,r),{fullPath:s+(l&&"?")+l+u,path:s,query:o,hash:u}}function v4(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 y4(e,t,r){const s=t.matched.length-1,o=r.matched.length-1;return s>-1&&s===o&&Zi(t.matched[s],r.matched[o])&&Rg(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function Zi(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Rg(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!_4(e[r],t[r]))return!1;return!0}function _4(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 b4(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-(u===s.length?1:0)).join("/")}var Gs;(function(e){e.pop="pop",e.push="push"})(Gs||(Gs={}));var $s;(function(e){e.back="back",e.forward="forward",e.unknown=""})($s||($s={}));function w4(e){if(!e)if(Mi){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),g4(e)}const A4=/^[^#]+#/;function x4(e,t){return e.replace(A4,"#")+t}function P4(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 ja=()=>({left:window.pageXOffset,top:window.pageYOffset});function C4(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=P4(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function mp(e,t){return(history.state?history.state.position-t:-1)+e}const Zu=new Map;function E4(e,t){Zu.set(e,t)}function S4(e){const t=Zu.get(e);return Zu.delete(e),t}let k4=()=>location.protocol+"//"+location.host;function Tg(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 O4(e,t,r,s){let o=[],l=[],u=null;const c=({state:g})=>{const y=Tg(e,location),S=r.value,w=t.value;let T=0;if(g){if(r.value=y,t.value=g,u&&u===S){u=null;return}T=w?g.position-w.position:0}else s(y);o.forEach(V=>{V(r.value,S,{delta:T,type:Gs.pop,direction:T?T>0?$s.forward:$s.back:$s.unknown})})};function f(){u=r.value}function h(g){o.push(g);const y=()=>{const S=o.indexOf(g);S>-1&&o.splice(S,1)};return l.push(y),y}function p(){const{history:g}=window;g.state&&g.replaceState(ut({},g.state,{scroll:ja()}),"")}function m(){for(const g of l)g();l=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",p)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",p,{passive:!0}),{pauseListeners:f,listen:h,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?ja():null}}function R4(e){const{history:t,location:r}=window,s={value:Tg(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,h,p){const m=e.indexOf("#"),g=m>-1?(r.host&&document.querySelector("base")?e:e.slice(m))+f:k4()+e+f;try{t[p?"replaceState":"pushState"](h,"",g),o.value=h}catch(y){console.error(y),r[p?"replace":"assign"](g)}}function u(f,h){const p=ut({},t.state,gp(o.value.back,f,o.value.forward,!0),h,{position:o.value.position});l(f,p,!0),s.value=f}function c(f,h){const p=ut({},o.value,t.state,{forward:f,scroll:ja()});l(p.current,p,!0);const m=ut({},gp(s.value,f,null),{position:p.position+1},h);l(f,m,!1),s.value=f}return{location:s,state:o,push:c,replace:u}}function T4(e){e=w4(e);const t=R4(e),r=O4(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:x4.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 I4(e){return typeof e=="string"||e&&typeof e=="object"}function Ig(e){return typeof e=="string"||typeof e=="symbol"}const Cr={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Mg=Symbol("");var vp;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(vp||(vp={}));function Yi(e,t){return ut(new Error,{type:e,[Mg]:!0},t)}function rr(e,t){return e instanceof Error&&Mg in e&&(t==null||!!(e.type&t))}const yp="[^/]+?",M4={sensitive:!1,strict:!1,start:!0,end:!0},L4=/[.+*?^${}()[\]/\\]/g;function $4(e,t){const r=ut({},M4,t),s=[];let o=r.start?"^":"";const l=[];for(const h of e){const p=h.length?[]:[90];r.strict&&!h.length&&(o+="/");for(let m=0;mt.length?t.length===1&&t[0]===40+40?1:-1:0}function N4(e,t){let r=0;const s=e.score,o=t.score;for(;r0&&t[t.length-1]<0}const B4={type:0,value:""},V4=/[a-zA-Z0-9_]/;function W4(e){if(!e)return[[]];if(e==="/")return[[B4]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(y){throw new Error(`ERR (${r})/"${h}": ${y}`)}let r=0,s=r;const o=[];let l;function u(){l&&o.push(l),l=[]}let c=0,f,h="",p="";function m(){h&&(r===0?l.push({type:0,value:h}):r===1||r===2||r===3?(l.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${h}) must be alone in its segment. eg: '/:ids+.`),l.push({type:1,value:h,regexp:p,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),h="")}function g(){h+=f}for(;c{u(B)}:Ls}function u(p){if(Ig(p)){const m=s.get(p);m&&(s.delete(p),r.splice(r.indexOf(m),1),m.children.forEach(u),m.alias.forEach(u))}else{const m=r.indexOf(p);m>-1&&(r.splice(m,1),p.record.name&&s.delete(p.record.name),p.children.forEach(u),p.alias.forEach(u))}}function c(){return r}function f(p){let m=0;for(;m=0&&(p.record.path!==r[m].record.path||!Lg(p,r[m]));)m++;r.splice(m,0,p),p.record.name&&!wp(p)&&s.set(p.record.name,p)}function h(p,m){let g,y={},S,w;if("name"in p&&p.name){if(g=s.get(p.name),!g)throw Yi(1,{location:p});w=g.record.name,y=ut(bp(m.params,g.keys.filter(B=>!B.optional).map(B=>B.name)),p.params&&bp(p.params,g.keys.map(B=>B.name))),S=g.stringify(y)}else if("path"in p)S=p.path,g=r.find(B=>B.re.test(S)),g&&(y=g.parse(S),w=g.record.name);else{if(g=m.name?s.get(m.name):r.find(B=>B.re.test(m.path)),!g)throw Yi(1,{location:p,currentLocation:m});w=g.record.name,y=ut({},m.params,p.params),S=g.stringify(y)}const T=[];let V=g;for(;V;)T.unshift(V.record),V=V.parent;return{name:w,path:S,params:y,matched:T,meta:j4(T)}}return e.forEach(p=>l(p)),{addRoute:l,resolve:h,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 U4(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:q4(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 q4(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 j4(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 Lg(e,t){return t.children.some(r=>r===e||Lg(e,r))}const $g=/#/g,K4=/&/g,G4=/\//g,z4=/=/g,Z4=/\?/g,Dg=/\+/g,Y4=/%5B/g,J4=/%5D/g,Ng=/%5E/g,X4=/%60/g,Bg=/%7B/g,Q4=/%7C/g,Vg=/%7D/g,eC=/%20/g;function Rc(e){return encodeURI(""+e).replace(Q4,"|").replace(Y4,"[").replace(J4,"]")}function tC(e){return Rc(e).replace(Bg,"{").replace(Vg,"}").replace(Ng,"^")}function Yu(e){return Rc(e).replace(Dg,"%2B").replace(eC,"+").replace($g,"%23").replace(K4,"%26").replace(X4,"`").replace(Bg,"{").replace(Vg,"}").replace(Ng,"^")}function nC(e){return Yu(e).replace(z4,"%3D")}function rC(e){return Rc(e).replace($g,"%23").replace(Z4,"%3F")}function iC(e){return e==null?"":rC(e).replace(G4,"%2F")}function Pa(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function sC(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;ol&&Yu(l)):[s&&Yu(s)]).forEach(l=>{l!==void 0&&(t+=(t.length?"&":"")+r,l!=null&&(t+="="+l))})}return t}function oC(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 aC=Symbol(""),Pp=Symbol(""),Ka=Symbol(""),Tc=Symbol(""),Ju=Symbol("");function _s(){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 Ir(e,t,r,s,o){const l=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((u,c)=>{const f=m=>{m===!1?c(Yi(4,{from:r,to:t})):m instanceof Error?c(m):I4(m)?c(Yi(2,{from:t,to:m})):(l&&s.enterCallbacks[o]===l&&typeof m=="function"&&l.push(m),u())},h=e.call(s&&s.instances[o],t,r,f);let p=Promise.resolve(h);e.length<3&&(p=p.then(f)),p.catch(m=>c(m))})}function _u(e,t,r,s){const o=[];for(const l of e)for(const u in l.components){let c=l.components[u];if(!(t!=="beforeRouteEnter"&&!l.instances[u]))if(lC(c)){const h=(c.__vccOpts||c)[t];h&&o.push(Ir(h,r,s,l,u))}else{let f=c();o.push(()=>f.then(h=>{if(!h)return Promise.reject(new Error(`Couldn't resolve component "${u}" at "${l.path}"`));const p=p4(h)?h.default:h;l.components[u]=p;const g=(p.__vccOpts||p)[t];return g&&Ir(g,r,s,l,u)()}))}}return o}function lC(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Cp(e){const t=on(Ka),r=on(Tc),s=Ve(()=>t.resolve(oe(e.to))),o=Ve(()=>{const{matched:f}=s.value,{length:h}=f,p=f[h-1],m=r.matched;if(!p||!m.length)return-1;const g=m.findIndex(Zi.bind(null,p));if(g>-1)return g;const y=Ep(f[h-2]);return h>1&&Ep(p)===y&&m[m.length-1].path!==y?m.findIndex(Zi.bind(null,f[h-2])):g}),l=Ve(()=>o.value>-1&&dC(r.params,s.value.params)),u=Ve(()=>o.value>-1&&o.value===r.matched.length-1&&Rg(r.params,s.value.params));function c(f={}){return fC(f)?t[oe(e.replace)?"replace":"push"](oe(e.to)).catch(Ls):Promise.resolve()}return{route:s,href:Ve(()=>s.value.href),isActive:l,isExactActive:u,navigate:c}}const uC=Ze({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(Ka),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:bc("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:o.value},l)}}}),cC=uC;function fC(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 dC(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,hC=Ze({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const s=on(Ju),o=Ve(()=>e.route||s.value),l=on(Pp,0),u=Ve(()=>{let h=oe(l);const{matched:p}=o.value;let m;for(;(m=p[h])&&!m.components;)h++;return h}),c=Ve(()=>o.value.matched[u.value]);Mr(Pp,Ve(()=>u.value+1)),Mr(aC,c),Mr(Ju,o);const f=Ce();return ot(()=>[f.value,c.value,e.name],([h,p,m],[g,y,S])=>{p&&(p.instances[m]=h,y&&y!==p&&h&&h===g&&(p.leaveGuards.size||(p.leaveGuards=y.leaveGuards),p.updateGuards.size||(p.updateGuards=y.updateGuards))),h&&p&&(!y||!Zi(p,y)||!g)&&(p.enterCallbacks[m]||[]).forEach(w=>w(h))},{flush:"post"}),()=>{const h=o.value,p=e.name,m=c.value,g=m&&m.components[p];if(!g)return kp(r.default,{Component:g,route:h});const y=m.props[p],S=y?y===!0?h.params:typeof y=="function"?y(h):y:null,T=bc(g,ut({},S,t,{onVnodeUnmounted:V=>{V.component.isUnmounted&&(m.instances[p]=null)},ref:f}));return kp(r.default,{Component:T,route:h})||T}}});function kp(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const pC=hC;function mC(e){const t=H4(e.routes,e),r=e.parseQuery||sC,s=e.stringifyQuery||xp,o=e.history,l=_s(),u=_s(),c=_s(),f=AA(Cr);let h=Cr;Mi&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=vu.bind(null,X=>""+X),m=vu.bind(null,iC),g=vu.bind(null,Pa);function y(X,se){let he,Ae;return Ig(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 w(){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=yu(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:Pa(L.hash),redirectedFrom:void 0,href:ue})}let he;if("path"in X)he=ut({},X,{path:yu(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=p(g(Ae.params));const je=v4(s,ut({},X,{hash:tC(Oe),path:Ae.path})),O=o.createHref(je);return ut({fullPath:je,hash:Oe,query:s===xp?oC(X.query):X.query||{}},Ae,{redirectedFrom:void 0,href:O})}function B(X){return typeof X=="string"?yu(r,X,f.value.path):ut({},X)}function P(X,se){if(h!==X)return Yi(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:"path"in Ae?{}:X.params},Ae)}}function q(X,se){const he=h=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&&y4(s,Ae,he)&&(ue=Yi(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=Pe.values().next().value;return se&&typeof se.runWithContext=="function"?se.runWithContext(X):X()}function U(X,se){let he;const[Ae,Oe,je]=gC(X,se);he=_u(Ae.reverse(),"beforeRouteLeave",X,se);for(const L of Ae)L.leaveGuards.forEach(J=>{he.push(Ir(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(Ir(L,X,se));return he.push(O),ke(he)}).then(()=>{he=_u(Oe,"beforeRouteUpdate",X,se);for(const L of Oe)L.updateGuards.forEach(J=>{he.push(Ir(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(Ir(J,X,se));else he.push(Ir(L.beforeEnter,X,se));return he.push(O),ke(he)}).then(()=>(X.matched.forEach(L=>L.enterCallbacks={}),he=_u(je,"beforeRouteEnter",X,se),he.push(O),ke(he))).then(()=>{he=[];for(const L of u.list())he.push(Ir(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===Cr,L=Mi?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(Ls);return}h=Ae;const je=f.value;Mi&&E4(mp(je.fullPath,he.delta),ja()),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===Gs.pop&&o.go(-1,!1)}).catch(Ls),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===Gs.pop&&rr(O,20)&&o.go(-1,!1)),G(Ae,je,O)}).catch(Ls)}))}let I=_s(),D=_s(),x;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 Z(){return x&&f.value!==Cr?Promise.resolve():new Promise((X,se)=>{I.add([X,se])})}function N(X){return x||(x=!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(!Mi||!Oe)return Promise.resolve();const je=!he&&S4(mp(X.fullPath,0))||(Ae||!he)&&history.state&&history.state.scroll||null;return Kn().then(()=>Oe(X,se,je)).then(O=>O&&C4(O)).catch(O=>_(O,X,se))}const Q=X=>o.go(X);let de;const Pe=new Set,_e={currentRoute:f,listening:!0,addRoute:y,removeRoute:S,hasRoute:T,getRoutes:w,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:Z,install(X){const se=this;X.component("RouterLink",cC),X.component("RouterView",pC),X.config.globalProperties.$router=se,Object.defineProperty(X.config.globalProperties,"$route",{enumerable:!0,get:()=>oe(f)}),Mi&&!de&&f.value===Cr&&(de=!0,k(o.location).catch(Oe=>{}));const he={};for(const Oe in Cr)Object.defineProperty(he,Oe,{get:()=>f.value[Oe],enumerable:!0});X.provide(Ka,se),X.provide(Tc,um(he)),X.provide(Ju,f);const Ae=X.unmount;Pe.add(X),X.unmount=function(){Pe.delete(X),Pe.size<1&&(h=Cr,H&&H(),H=null,f.value=Cr,de=!1,x=!1),Ae()}}};function ke(X){return X.reduce((se,he)=>se.then(()=>j(he)),Promise.resolve())}return _e}function gC(e,t){const r=[],s=[],o=[],l=Math.max(t.matched.length,e.matched.length);for(let u=0;uZi(h,c))?s.push(c):r.push(c));const f=e.matched[u];f&&(t.matched.find(h=>Zi(h,f))||o.push(f))}return[r,s,o]}function vC(){return on(Ka)}function Ic(){return on(Tc)}const yC=[{path:"/",component:()=>pt(()=>import("./index-ea4be681.js"),["assets/index-ea4be681.js","assets/TrackCompact-8352124a.js","assets/TrackCompact-79c8b159.css","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/spotify-b1867f20.js","assets/PlaylistItem-48685cba.js","assets/PlaylistItem-1de8bde1.css","assets/index-bd89c879.css"])},{path:"/discover",component:()=>pt(()=>import("./Explore-d2d855b0.js"),["assets/Explore-d2d855b0.js","assets/Explore-1b45015b.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-1873d3cb.js"),["assets/index-1873d3cb.js","assets/index-2f9f0259.css"]),meta:{title:"Search - reAudioPlayer One"}},{path:"/collection/albums",component:()=>pt(()=>import("./Albums-f18ee055.js"),["assets/Albums-f18ee055.js","assets/FullShelf-ee955822.js","assets/FullShelf-62d1d109.css","assets/CollectionHeader-65e61737.js","assets/CollectionHeader-f7f1bd89.css","assets/CardWithImageAndText-6d2d3cec.js","assets/CardWithImageAndText-af12f13a.css","assets/Albums-c2cb712e.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/artists",component:()=>pt(()=>import("./Artists-443e36b5.js"),["assets/Artists-443e36b5.js","assets/FullShelf-ee955822.js","assets/FullShelf-62d1d109.css","assets/CollectionHeader-65e61737.js","assets/CollectionHeader-f7f1bd89.css","assets/CardWithImageAndText-6d2d3cec.js","assets/CardWithImageAndText-af12f13a.css","assets/Artists-bd87c507.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/playlists",component:()=>pt(()=>import("./Playlists-f552ebd0.js"),["assets/Playlists-f552ebd0.js","assets/FullShelf-ee955822.js","assets/FullShelf-62d1d109.css","assets/PlaylistItem-48685cba.js","assets/playerInPicture-af203fdf.js","assets/PlaylistItem-1de8bde1.css","assets/CollectionHeader-65e61737.js","assets/CollectionHeader-f7f1bd89.css","assets/Playlists-cb788b08.css"]),meta:{title:"Your Library - reAudioPlayer One"}},{path:"/collection/releases",component:()=>pt(()=>import("./Releases-c156a97c.js"),["assets/Releases-c156a97c.js","assets/CollectionHeader-65e61737.js","assets/CollectionHeader-f7f1bd89.css","assets/playerInPicture-af203fdf.js","assets/Releases-1241d86a.css"]),meta:{title:"Releases - reAudioPlayer One"}},{path:"/collection/tracks",component:()=>pt(()=>import("./Liked-fc8dae6c.js"),["assets/Liked-fc8dae6c.js","assets/Template-15080c8f.js","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/FactCard-fd04f9e5.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-e7b09d22.js","assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js","assets/Markdown-d883632e.css","assets/Template-01e8e5fe.css"]),meta:{title:"Liked Songs - reAudioPlayer One"}},{path:"/collection/tracks/breaking",component:()=>pt(()=>import("./Breaking-00b932ae.js"),["assets/Breaking-00b932ae.js","assets/Template-15080c8f.js","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/FactCard-fd04f9e5.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-e7b09d22.js","assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js","assets/Markdown-d883632e.css","assets/Template-01e8e5fe.css"]),meta:{title:"Breaking Songs - reAudioPlayer One"}},{path:"/playlist/create",component:()=>pt(()=>import("./Create-939d7c74.js"),["assets/Create-939d7c74.js","assets/Create-8ab3526b.css"]),meta:{title:"Create Playlist - reAudioPlayer One"}},{path:"/playlist/:id/edit",component:()=>pt(()=>import("./Editor-003ff424.js"),["assets/Editor-003ff424.js","assets/Playlist.vue_vue_type_script_setup_true_lang-96743295.js","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/Editor-29aa8a80.css"]),meta:{title:"Smart Playlist Editor - reAudioPlayer One"}},{path:"/playlist/:id",component:()=>pt(()=>import("./Normal-9a43bf76.js"),["assets/Normal-9a43bf76.js","assets/Template-15080c8f.js","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/FactCard-fd04f9e5.js","assets/FactCard-3c5d1fcf.css","assets/gistClient-e7b09d22.js","assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js","assets/Markdown-d883632e.css","assets/Template-01e8e5fe.css"]),meta:{title:"Playlist - reAudioPlayer One"}},{path:"/track/:hash",component:()=>pt(()=>import("./Track-0537b97a.js"),["assets/Track-0537b97a.js","assets/FactCard-fd04f9e5.js","assets/FactCard-3c5d1fcf.css","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/spotify-b1867f20.js","assets/Track-5eeebad7.css"]),meta:{title:"Track - reAudioPlayer One"}},{path:"/artist/:name",component:()=>pt(()=>import("./Artist-097652ba.js"),["assets/Artist-097652ba.js","assets/FactCard-fd04f9e5.js","assets/FactCard-3c5d1fcf.css","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/spotify-b1867f20.js","assets/Artist-a6b528f5.css"]),meta:{title:"Artist - reAudioPlayer One"}},{path:"/album/:hash",component:()=>pt(()=>import("./Album-c485014b.js"),["assets/Album-c485014b.js","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/Album-1f347aa1.css"]),meta:{title:"Album - reAudioPlayer One"}},{path:"/preferences",component:()=>pt(()=>import("./index-3e9200e5.js"),["assets/index-3e9200e5.js","assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js","assets/Markdown-d883632e.css","assets/TrackCompact-8352124a.js","assets/TrackCompact-79c8b159.css","assets/gistClient-e7b09d22.js","assets/index-8e12dc4a.css"]),meta:{title:"Preferences - reAudioPlayer One"}},{path:"/import",component:()=>pt(()=>import("./Import-9bf651ae.js"),["assets/Import-9bf651ae.js","assets/gistClient-e7b09d22.js","assets/Import-5bb9c089.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/import/:id",component:()=>pt(()=>import("./ImportLink-431b2fd4.js"),["assets/ImportLink-431b2fd4.js","assets/ImportLink-fa9af2ae.css"]),meta:{title:"Import - reAudioPlayer One"}},{path:"/export",component:()=>pt(()=>import("./Export-8dfc6448.js"),["assets/Export-8dfc6448.js","assets/gistClient-e7b09d22.js","assets/Export-a03f6dd4.css"]),meta:{title:"Export - reAudioPlayer One"}},{path:"/sing-along",component:()=>pt(()=>import("./index-b3475b66.js"),["assets/index-b3475b66.js","assets/index-58d888b4.css"]),meta:{title:"Sing Along - reAudioPlayer One"}},{path:"/download",component:()=>pt(()=>import("./index-bb802307.js"),["assets/index-bb802307.js","assets/index-3d76937e.css"]),meta:{title:"Download - reAudioPlayer One"}},{path:"/welcome",component:()=>pt(()=>import("./Welcome-9add315f.js"),["assets/Welcome-9add315f.js","assets/Welcome-5b21c29e.css"]),meta:{title:"Welcome to reAudioPlayer One"}},{path:"/news",component:()=>pt(()=>import("./News-4388050d.js"),["assets/News-4388050d.js","assets/FullShelf-ee955822.js","assets/FullShelf-62d1d109.css","assets/News-99169f9d.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/sports",component:()=>pt(()=>import("./Sports-47cd98e8.js"),["assets/Sports-47cd98e8.js","assets/FullShelf-ee955822.js","assets/FullShelf-62d1d109.css","assets/Sports-385f73f9.css"]),meta:{title:"Sports - reAudioPlayer One"}},{path:"/news/:url",component:()=>pt(()=>import("./NewsArticle-6def32c5.js"),["assets/NewsArticle-6def32c5.js","assets/NewsArticle-03a45240.css"]),meta:{title:"News - reAudioPlayer One"}},{path:"/player/insights",component:()=>pt(()=>import("./Insight-64ef2117.js"),["assets/Insight-64ef2117.js","assets/Insight-8c46a3d4.css"]),meta:{title:"Insights - reAudioPlayer One"}},{path:"/player",component:()=>pt(()=>import("./BigPlayer-f2952b73.js"),["assets/BigPlayer-f2952b73.js","assets/Playlist.vue_vue_type_script_setup_true_lang-96743295.js","assets/PlaylistEntry-6dd545f8.js","assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js","assets/playerInPicture-af203fdf.js","assets/PlaylistEntry-7f3947eb.css","assets/PlaylistItem-48685cba.js","assets/PlaylistItem-1de8bde1.css","assets/BigPlayer-aabd95ce.css"]),meta:{title:"reAudioPlayer One"}}],Li=mC({history:T4(),routes:yC}),_C=["placeholder","type"],bC=Ze({__name:"TextInputWithIcon",props:{icon:String,placeholder:String,modelValue:String,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=Ce(s.modelValue);ot(()=>s.modelValue,h=>{o.value=h});const l=r,u=()=>{l("update:modelValue",o.value),l("change",o.value)},c=h=>{s.onKeyUp&&s.onKeyUp(h)||h.key==="Enter"&&l("submit",o)},f=Ce();return t({focus:()=>{f.value.focus()}}),(h,p)=>(re(),ye("div",{class:Xe(["text-input-with-icon rounded-3xl flex items-center px-4",{expanded:e.expanded}])},[te("span",{class:Xe([{"cursor-pointer":e.onClick},"material-symbols-rounded ms-wght-200"]),onClick:p[0]||(p[0]=(...m)=>e.onClick&&e.onClick(...m))},De(e.icon),3),Us(te("input",{"onUpdate:modelValue":p[1]||(p[1]=m=>o.value=m),placeholder:e.placeholder,type:e.type,onInput:u,onKeyup:c,onFocusout:p[2]||(p[2]=m=>h.$emit("focusout")),ref_key:"element",ref:f},null,40,_C),[[xc,o.value]])],2))}});const Xu=at(bC,[["__scopeId","data-v-18a674c5"]]);var bs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wC(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function lO(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 Ca={exports:{}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */Ca.exports;(function(e,t){(function(){var r,s="4.17.21",o=200,l="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",c="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",h=500,p="__lodash_placeholder__",m=1,g=2,y=4,S=1,w=2,T=1,V=2,B=4,P=8,k=16,R=32,M=64,q=128,W=256,j=512,U=30,G="...",K=800,H=16,E=1,I=2,D=3,x=1/0,_=9007199254740991,Z=17976931348623157e292,N=0/0,b=4294967295,Q=b-1,de=b>>>1,Pe=[["ary",q],["bind",T],["bindKey",V],["curry",P],["curryRight",k],["flip",j],["partial",R],["partialRight",M],["rearg",W]],_e="[object Arguments]",ke="[object Array]",X="[object AsyncFunction]",se="[object Boolean]",he="[object Date]",Ae="[object DOMException]",Oe="[object Error]",je="[object Function]",O="[object GeneratorFunction]",L="[object Map]",J="[object Number]",ue="[object Null]",ne="[object Object]",ve="[object Promise]",be="[object Proxy]",pe="[object RegExp]",me="[object Set]",ce="[object String]",xe="[object Symbol]",Ie="[object Undefined]",Re="[object WeakMap]",We="[object WeakSet]",Ue="[object ArrayBuffer]",Qe="[object DataView]",ft="[object Float32Array]",At="[object Float64Array]",Ut="[object Int8Array]",Dn="[object Int16Array]",pi="[object Int32Array]",Gn="[object Uint8Array]",mi="[object Uint8ClampedArray]",Mt="[object Uint16Array]",Jt="[object Uint32Array]",no=/\b__p \+= '';/g,sv=/\b(__p \+=) '' \+/g,ov=/(__e\(.*?\)|\b__t\)) \+\n'';/g,$c=/&(?:amp|lt|gt|quot|#39);/g,Dc=/[&<>"']/g,av=RegExp($c.source),lv=RegExp(Dc.source),uv=/<%-([\s\S]+?)%>/g,cv=/<%([\s\S]+?)%>/g,Nc=/<%=([\s\S]+?)%>/g,fv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dv=/^\w*$/,hv=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,za=/[\\^$.*+?()[\]{}|]/g,pv=RegExp(za.source),Za=/^\s+/,mv=/\s/,gv=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,vv=/\{\n\/\* \[wrapped with (.+)\] \*/,yv=/,? & /,_v=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,bv=/[()=,{}\[\]\/\s]/,wv=/\\(\\)?/g,Av=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Bc=/\w*$/,xv=/^[-+]0x[0-9a-f]+$/i,Pv=/^0b[01]+$/i,Cv=/^\[object .+?Constructor\]$/,Ev=/^0o[0-7]+$/i,Sv=/^(?:0|[1-9]\d*)$/,kv=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ro=/($^)/,Ov=/['\n\r\u2028\u2029\\]/g,io="\\ud800-\\udfff",Rv="\\u0300-\\u036f",Tv="\\ufe20-\\ufe2f",Iv="\\u20d0-\\u20ff",Vc=Rv+Tv+Iv,Wc="\\u2700-\\u27bf",Fc="a-z\\xdf-\\xf6\\xf8-\\xff",Mv="\\xac\\xb1\\xd7\\xf7",Lv="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",$v="\\u2000-\\u206f",Dv=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Hc="A-Z\\xc0-\\xd6\\xd8-\\xde",Uc="\\ufe0e\\ufe0f",qc=Mv+Lv+$v+Dv,Ya="['’]",Nv="["+io+"]",jc="["+qc+"]",so="["+Vc+"]",Kc="\\d+",Bv="["+Wc+"]",Gc="["+Fc+"]",zc="[^"+io+qc+Kc+Wc+Fc+Hc+"]",Ja="\\ud83c[\\udffb-\\udfff]",Vv="(?:"+so+"|"+Ja+")",Zc="[^"+io+"]",Xa="(?:\\ud83c[\\udde6-\\uddff]){2}",Qa="[\\ud800-\\udbff][\\udc00-\\udfff]",gi="["+Hc+"]",Yc="\\u200d",Jc="(?:"+Gc+"|"+zc+")",Wv="(?:"+gi+"|"+zc+")",Xc="(?:"+Ya+"(?:d|ll|m|re|s|t|ve))?",Qc="(?:"+Ya+"(?:D|LL|M|RE|S|T|VE))?",ef=Vv+"?",tf="["+Uc+"]?",Fv="(?:"+Yc+"(?:"+[Zc,Xa,Qa].join("|")+")"+tf+ef+")*",Hv="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Uv="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",nf=tf+ef+Fv,qv="(?:"+[Bv,Xa,Qa].join("|")+")"+nf,jv="(?:"+[Zc+so+"?",so,Xa,Qa,Nv].join("|")+")",Kv=RegExp(Ya,"g"),Gv=RegExp(so,"g"),el=RegExp(Ja+"(?="+Ja+")|"+jv+nf,"g"),zv=RegExp([gi+"?"+Gc+"+"+Xc+"(?="+[jc,gi,"$"].join("|")+")",Wv+"+"+Qc+"(?="+[jc,gi+Jc,"$"].join("|")+")",gi+"?"+Jc+"+"+Xc,gi+"+"+Qc,Uv,Hv,Kc,qv].join("|"),"g"),Zv=RegExp("["+Yc+io+Vc+Uc+"]"),Yv=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Jv=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Xv=-1,gt={};gt[ft]=gt[At]=gt[Ut]=gt[Dn]=gt[pi]=gt[Gn]=gt[mi]=gt[Mt]=gt[Jt]=!0,gt[_e]=gt[ke]=gt[Ue]=gt[se]=gt[Qe]=gt[he]=gt[Oe]=gt[je]=gt[L]=gt[J]=gt[ne]=gt[pe]=gt[me]=gt[ce]=gt[Re]=!1;var pt={};pt[_e]=pt[ke]=pt[Ue]=pt[Qe]=pt[se]=pt[he]=pt[ft]=pt[At]=pt[Ut]=pt[Dn]=pt[pi]=pt[L]=pt[J]=pt[ne]=pt[pe]=pt[me]=pt[ce]=pt[xe]=pt[Gn]=pt[mi]=pt[Mt]=pt[Jt]=!0,pt[Oe]=pt[je]=pt[Re]=!1;var Qv={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},ey={"&":"&","<":"<",">":">",'"':""","'":"'"},ty={"&":"&","<":"<",">":">",""":'"',"'":"'"},ny={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ry=parseFloat,iy=parseInt,rf=typeof bs=="object"&&bs&&bs.Object===Object&&bs,sy=typeof self=="object"&&self&&self.Object===Object&&self,Lt=rf||sy||Function("return this")(),tl=t&&!t.nodeType&&t,qr=tl&&!0&&e&&!e.nodeType&&e,sf=qr&&qr.exports===tl,nl=sf&&rf.process,yn=function(){try{var z=qr&&qr.require&&qr.require("util").types;return z||nl&&nl.binding&&nl.binding("util")}catch{}}(),of=yn&&yn.isArrayBuffer,af=yn&&yn.isDate,lf=yn&&yn.isMap,uf=yn&&yn.isRegExp,cf=yn&&yn.isSet,ff=yn&&yn.isTypedArray;function ln(z,ie,ee){switch(ee.length){case 0:return z.call(ie);case 1:return z.call(ie,ee[0]);case 2:return z.call(ie,ee[0],ee[1]);case 3:return z.call(ie,ee[0],ee[1],ee[2])}return z.apply(ie,ee)}function oy(z,ie,ee,Ee){for(var Fe=-1,it=z==null?0:z.length;++Fe-1}function rl(z,ie,ee){for(var Ee=-1,Fe=z==null?0:z.length;++Ee-1;);return ee}function _f(z,ie){for(var ee=z.length;ee--&&vi(ie,z[ee],0)>-1;);return ee}function my(z,ie){for(var ee=z.length,Ee=0;ee--;)z[ee]===ie&&++Ee;return Ee}var gy=al(Qv),vy=al(ey);function yy(z){return"\\"+ny[z]}function _y(z,ie){return z==null?r:z[ie]}function yi(z){return Zv.test(z)}function by(z){return Yv.test(z)}function wy(z){for(var ie,ee=[];!(ie=z.next()).done;)ee.push(ie.value);return ee}function fl(z){var ie=-1,ee=Array(z.size);return z.forEach(function(Ee,Fe){ee[++ie]=[Fe,Ee]}),ee}function bf(z,ie){return function(ee){return z(ie(ee))}}function mr(z,ie){for(var ee=-1,Ee=z.length,Fe=0,it=[];++ee-1}function l_(n,i){var a=this.__data__,d=Po(a,n);return d<0?(++this.size,a.push([n,i])):a[d][1]=i,this}zn.prototype.clear=i_,zn.prototype.delete=s_,zn.prototype.get=o_,zn.prototype.has=a_,zn.prototype.set=l_;function Zn(n){var i=-1,a=n==null?0:n.length;for(this.clear();++i=i?n:i)),n}function An(n,i,a,d,v,C){var $,F=i&m,Y=i&g,ae=i&y;if(a&&($=v?a(n,d,v,C):a(n)),$!==r)return $;if(!wt(n))return n;var le=He(n);if(le){if($=d1(n),!F)return Xt(n,$)}else{var fe=Wt(n),we=fe==je||fe==O;if(wr(n))return nd(n,F);if(fe==ne||fe==_e||we&&!v){if($=Y||we?{}:wd(n),!F)return Y?t1(n,P_($,n)):e1(n,If($,n))}else{if(!pt[fe])return v?n:{};$=h1(n,fe,F)}}C||(C=new Rn);var Te=C.get(n);if(Te)return Te;C.set(n,$),Yd(n)?n.forEach(function($e){$.add(An($e,i,a,$e,n,C))}):zd(n)&&n.forEach(function($e,Ye){$.set(Ye,An($e,i,a,Ye,n,C))});var Le=ae?Y?Nl:Dl:Y?en:It,Ke=le?r:Le(n);return _n(Ke||n,function($e,Ye){Ke&&(Ye=$e,$e=n[Ye]),os($,Ye,An($e,i,a,Ye,n,C))}),$}function C_(n){var i=It(n);return function(a){return Mf(a,n,i)}}function Mf(n,i,a){var d=a.length;if(n==null)return!d;for(n=ht(n);d--;){var v=a[d],C=i[v],$=n[v];if($===r&&!(v in n)||!C($))return!1}return!0}function Lf(n,i,a){if(typeof n!="function")throw new bn(u);return hs(function(){n.apply(r,a)},i)}function as(n,i,a,d){var v=-1,C=oo,$=!0,F=n.length,Y=[],ae=i.length;if(!F)return Y;a&&(i=vt(i,un(a))),d?(C=rl,$=!1):i.length>=o&&(C=es,$=!1,i=new Gr(i));e:for(;++vv?0:v+a),d=d===r||d>v?v:qe(d),d<0&&(d+=v),d=a>d?0:Xd(d);a0&&a(F)?i>1?$t(F,i-1,a,d,v):pr(v,F):d||(v[v.length]=F)}return v}var yl=ld(),Nf=ld(!0);function Nn(n,i){return n&&yl(n,i,It)}function _l(n,i){return n&&Nf(n,i,It)}function Eo(n,i){return hr(i,function(a){return er(n[a])})}function Zr(n,i){i=_r(i,n);for(var a=0,d=i.length;n!=null&&ai}function k_(n,i){return n!=null&<.call(n,i)}function O_(n,i){return n!=null&&i in ht(n)}function R_(n,i,a){return n>=Vt(i,a)&&n=120&&le.length>=120)?new Gr($&&le):r}le=n[0];var fe=-1,we=F[0];e:for(;++fe-1;)F!==n&&vo.call(F,Y,1),vo.call(n,Y,1);return n}function zf(n,i){for(var a=n?i.length:0,d=a-1;a--;){var v=i[a];if(a==d||v!==C){var C=v;Qn(v)?vo.call(n,v,1):Ol(n,v)}}return n}function El(n,i){return n+bo(kf()*(i-n+1))}function U_(n,i,a,d){for(var v=-1,C=Ot(_o((i-n)/(a||1)),0),$=ee(C);C--;)$[d?C:++v]=n,n+=a;return $}function Sl(n,i){var a="";if(!n||i<1||i>_)return a;do i%2&&(a+=n),i=bo(i/2),i&&(n+=n);while(i);return a}function ze(n,i){return ql(Pd(n,i,tn),n+"")}function q_(n){return Tf(Oi(n))}function j_(n,i){var a=Oi(n);return No(a,zr(i,0,a.length))}function cs(n,i,a,d){if(!wt(n))return n;i=_r(i,n);for(var v=-1,C=i.length,$=C-1,F=n;F!=null&&++vv?0:v+i),a=a>v?v:a,a<0&&(a+=v),v=i>a?0:a-i>>>0,i>>>=0;for(var C=ee(v);++d>>1,$=n[C];$!==null&&!fn($)&&(a?$<=i:$=o){var ae=i?null:s1(n);if(ae)return lo(ae);$=!1,v=es,Y=new Gr}else Y=i?[]:F;e:for(;++d=d?n:xn(n,i,a)}var td=Dy||function(n){return Lt.clearTimeout(n)};function nd(n,i){if(i)return n.slice();var a=n.length,d=xf?xf(a):new n.constructor(a);return n.copy(d),d}function Ml(n){var i=new n.constructor(n.byteLength);return new mo(i).set(new mo(n)),i}function Y_(n,i){var a=i?Ml(n.buffer):n.buffer;return new n.constructor(a,n.byteOffset,n.byteLength)}function J_(n){var i=new n.constructor(n.source,Bc.exec(n));return i.lastIndex=n.lastIndex,i}function X_(n){return ss?ht(ss.call(n)):{}}function rd(n,i){var a=i?Ml(n.buffer):n.buffer;return new n.constructor(a,n.byteOffset,n.length)}function id(n,i){if(n!==i){var a=n!==r,d=n===null,v=n===n,C=fn(n),$=i!==r,F=i===null,Y=i===i,ae=fn(i);if(!F&&!ae&&!C&&n>i||C&&$&&Y&&!F&&!ae||d&&$&&Y||!a&&Y||!v)return 1;if(!d&&!C&&!ae&&n=F)return Y;var ae=a[d];return Y*(ae=="desc"?-1:1)}}return n.index-i.index}function sd(n,i,a,d){for(var v=-1,C=n.length,$=a.length,F=-1,Y=i.length,ae=Ot(C-$,0),le=ee(Y+ae),fe=!d;++F1?a[v-1]:r,$=v>2?a[2]:r;for(C=n.length>3&&typeof C=="function"?(v--,C):r,$&&jt(a[0],a[1],$)&&(C=v<3?r:C,v=1),i=ht(i);++d-1?v[C?i[$]:$]:r}}function fd(n){return Xn(function(i){var a=i.length,d=a,v=wn.prototype.thru;for(n&&i.reverse();d--;){var C=i[d];if(typeof C!="function")throw new bn(u);if(v&&!$&&$o(C)=="wrapper")var $=new wn([],!0)}for(d=$?d:a;++d1&&et.reverse(),le&&YF))return!1;var ae=C.get(n),le=C.get(i);if(ae&&le)return ae==i&&le==n;var fe=-1,we=!0,Te=a&w?new Gr:r;for(C.set(n,i),C.set(i,n);++fe1?"& ":"")+i[d],i=i.join(a>2?", ":" "),n.replace(gv,`{ + */Ca.exports;(function(e,t){(function(){var r,s="4.17.21",o=200,l="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",c="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",h=500,p="__lodash_placeholder__",m=1,g=2,y=4,S=1,w=2,T=1,V=2,B=4,P=8,k=16,R=32,M=64,q=128,W=256,j=512,U=30,G="...",K=800,H=16,E=1,I=2,D=3,x=1/0,_=9007199254740991,Z=17976931348623157e292,N=0/0,b=4294967295,Q=b-1,de=b>>>1,Pe=[["ary",q],["bind",T],["bindKey",V],["curry",P],["curryRight",k],["flip",j],["partial",R],["partialRight",M],["rearg",W]],_e="[object Arguments]",ke="[object Array]",X="[object AsyncFunction]",se="[object Boolean]",he="[object Date]",Ae="[object DOMException]",Oe="[object Error]",je="[object Function]",O="[object GeneratorFunction]",L="[object Map]",J="[object Number]",ue="[object Null]",ne="[object Object]",ve="[object Promise]",be="[object Proxy]",pe="[object RegExp]",me="[object Set]",ce="[object String]",xe="[object Symbol]",Ie="[object Undefined]",Re="[object WeakMap]",We="[object WeakSet]",Ue="[object ArrayBuffer]",Qe="[object DataView]",ft="[object Float32Array]",At="[object Float64Array]",Ut="[object Int8Array]",Dn="[object Int16Array]",pi="[object Int32Array]",Gn="[object Uint8Array]",mi="[object Uint8ClampedArray]",Mt="[object Uint16Array]",Jt="[object Uint32Array]",no=/\b__p \+= '';/g,sv=/\b(__p \+=) '' \+/g,ov=/(__e\(.*?\)|\b__t\)) \+\n'';/g,$c=/&(?:amp|lt|gt|quot|#39);/g,Dc=/[&<>"']/g,av=RegExp($c.source),lv=RegExp(Dc.source),uv=/<%-([\s\S]+?)%>/g,cv=/<%([\s\S]+?)%>/g,Nc=/<%=([\s\S]+?)%>/g,fv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dv=/^\w*$/,hv=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,za=/[\\^$.*+?()[\]{}|]/g,pv=RegExp(za.source),Za=/^\s+/,mv=/\s/,gv=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,vv=/\{\n\/\* \[wrapped with (.+)\] \*/,yv=/,? & /,_v=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,bv=/[()=,{}\[\]\/\s]/,wv=/\\(\\)?/g,Av=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Bc=/\w*$/,xv=/^[-+]0x[0-9a-f]+$/i,Pv=/^0b[01]+$/i,Cv=/^\[object .+?Constructor\]$/,Ev=/^0o[0-7]+$/i,Sv=/^(?:0|[1-9]\d*)$/,kv=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ro=/($^)/,Ov=/['\n\r\u2028\u2029\\]/g,io="\\ud800-\\udfff",Rv="\\u0300-\\u036f",Tv="\\ufe20-\\ufe2f",Iv="\\u20d0-\\u20ff",Vc=Rv+Tv+Iv,Wc="\\u2700-\\u27bf",Fc="a-z\\xdf-\\xf6\\xf8-\\xff",Mv="\\xac\\xb1\\xd7\\xf7",Lv="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",$v="\\u2000-\\u206f",Dv=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Hc="A-Z\\xc0-\\xd6\\xd8-\\xde",Uc="\\ufe0e\\ufe0f",qc=Mv+Lv+$v+Dv,Ya="['’]",Nv="["+io+"]",jc="["+qc+"]",so="["+Vc+"]",Kc="\\d+",Bv="["+Wc+"]",Gc="["+Fc+"]",zc="[^"+io+qc+Kc+Wc+Fc+Hc+"]",Ja="\\ud83c[\\udffb-\\udfff]",Vv="(?:"+so+"|"+Ja+")",Zc="[^"+io+"]",Xa="(?:\\ud83c[\\udde6-\\uddff]){2}",Qa="[\\ud800-\\udbff][\\udc00-\\udfff]",gi="["+Hc+"]",Yc="\\u200d",Jc="(?:"+Gc+"|"+zc+")",Wv="(?:"+gi+"|"+zc+")",Xc="(?:"+Ya+"(?:d|ll|m|re|s|t|ve))?",Qc="(?:"+Ya+"(?:D|LL|M|RE|S|T|VE))?",ef=Vv+"?",tf="["+Uc+"]?",Fv="(?:"+Yc+"(?:"+[Zc,Xa,Qa].join("|")+")"+tf+ef+")*",Hv="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Uv="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",nf=tf+ef+Fv,qv="(?:"+[Bv,Xa,Qa].join("|")+")"+nf,jv="(?:"+[Zc+so+"?",so,Xa,Qa,Nv].join("|")+")",Kv=RegExp(Ya,"g"),Gv=RegExp(so,"g"),el=RegExp(Ja+"(?="+Ja+")|"+jv+nf,"g"),zv=RegExp([gi+"?"+Gc+"+"+Xc+"(?="+[jc,gi,"$"].join("|")+")",Wv+"+"+Qc+"(?="+[jc,gi+Jc,"$"].join("|")+")",gi+"?"+Jc+"+"+Xc,gi+"+"+Qc,Uv,Hv,Kc,qv].join("|"),"g"),Zv=RegExp("["+Yc+io+Vc+Uc+"]"),Yv=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Jv=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Xv=-1,gt={};gt[ft]=gt[At]=gt[Ut]=gt[Dn]=gt[pi]=gt[Gn]=gt[mi]=gt[Mt]=gt[Jt]=!0,gt[_e]=gt[ke]=gt[Ue]=gt[se]=gt[Qe]=gt[he]=gt[Oe]=gt[je]=gt[L]=gt[J]=gt[ne]=gt[pe]=gt[me]=gt[ce]=gt[Re]=!1;var mt={};mt[_e]=mt[ke]=mt[Ue]=mt[Qe]=mt[se]=mt[he]=mt[ft]=mt[At]=mt[Ut]=mt[Dn]=mt[pi]=mt[L]=mt[J]=mt[ne]=mt[pe]=mt[me]=mt[ce]=mt[xe]=mt[Gn]=mt[mi]=mt[Mt]=mt[Jt]=!0,mt[Oe]=mt[je]=mt[Re]=!1;var Qv={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},ey={"&":"&","<":"<",">":">",'"':""","'":"'"},ty={"&":"&","<":"<",">":">",""":'"',"'":"'"},ny={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ry=parseFloat,iy=parseInt,rf=typeof bs=="object"&&bs&&bs.Object===Object&&bs,sy=typeof self=="object"&&self&&self.Object===Object&&self,Lt=rf||sy||Function("return this")(),tl=t&&!t.nodeType&&t,qr=tl&&!0&&e&&!e.nodeType&&e,sf=qr&&qr.exports===tl,nl=sf&&rf.process,yn=function(){try{var z=qr&&qr.require&&qr.require("util").types;return z||nl&&nl.binding&&nl.binding("util")}catch{}}(),of=yn&&yn.isArrayBuffer,af=yn&&yn.isDate,lf=yn&&yn.isMap,uf=yn&&yn.isRegExp,cf=yn&&yn.isSet,ff=yn&&yn.isTypedArray;function ln(z,ie,ee){switch(ee.length){case 0:return z.call(ie);case 1:return z.call(ie,ee[0]);case 2:return z.call(ie,ee[0],ee[1]);case 3:return z.call(ie,ee[0],ee[1],ee[2])}return z.apply(ie,ee)}function oy(z,ie,ee,Ee){for(var Fe=-1,it=z==null?0:z.length;++Fe-1}function rl(z,ie,ee){for(var Ee=-1,Fe=z==null?0:z.length;++Ee-1;);return ee}function _f(z,ie){for(var ee=z.length;ee--&&vi(ie,z[ee],0)>-1;);return ee}function my(z,ie){for(var ee=z.length,Ee=0;ee--;)z[ee]===ie&&++Ee;return Ee}var gy=al(Qv),vy=al(ey);function yy(z){return"\\"+ny[z]}function _y(z,ie){return z==null?r:z[ie]}function yi(z){return Zv.test(z)}function by(z){return Yv.test(z)}function wy(z){for(var ie,ee=[];!(ie=z.next()).done;)ee.push(ie.value);return ee}function fl(z){var ie=-1,ee=Array(z.size);return z.forEach(function(Ee,Fe){ee[++ie]=[Fe,Ee]}),ee}function bf(z,ie){return function(ee){return z(ie(ee))}}function mr(z,ie){for(var ee=-1,Ee=z.length,Fe=0,it=[];++ee-1}function l_(n,i){var a=this.__data__,d=Po(a,n);return d<0?(++this.size,a.push([n,i])):a[d][1]=i,this}zn.prototype.clear=i_,zn.prototype.delete=s_,zn.prototype.get=o_,zn.prototype.has=a_,zn.prototype.set=l_;function Zn(n){var i=-1,a=n==null?0:n.length;for(this.clear();++i=i?n:i)),n}function An(n,i,a,d,v,C){var $,F=i&m,Y=i&g,ae=i&y;if(a&&($=v?a(n,d,v,C):a(n)),$!==r)return $;if(!wt(n))return n;var le=He(n);if(le){if($=d1(n),!F)return Xt(n,$)}else{var fe=Wt(n),we=fe==je||fe==O;if(wr(n))return nd(n,F);if(fe==ne||fe==_e||we&&!v){if($=Y||we?{}:wd(n),!F)return Y?t1(n,P_($,n)):e1(n,If($,n))}else{if(!mt[fe])return v?n:{};$=h1(n,fe,F)}}C||(C=new Rn);var Te=C.get(n);if(Te)return Te;C.set(n,$),Yd(n)?n.forEach(function($e){$.add(An($e,i,a,$e,n,C))}):zd(n)&&n.forEach(function($e,Ye){$.set(Ye,An($e,i,a,Ye,n,C))});var Le=ae?Y?Nl:Dl:Y?en:It,Ke=le?r:Le(n);return _n(Ke||n,function($e,Ye){Ke&&(Ye=$e,$e=n[Ye]),os($,Ye,An($e,i,a,Ye,n,C))}),$}function C_(n){var i=It(n);return function(a){return Mf(a,n,i)}}function Mf(n,i,a){var d=a.length;if(n==null)return!d;for(n=ht(n);d--;){var v=a[d],C=i[v],$=n[v];if($===r&&!(v in n)||!C($))return!1}return!0}function Lf(n,i,a){if(typeof n!="function")throw new bn(u);return hs(function(){n.apply(r,a)},i)}function as(n,i,a,d){var v=-1,C=oo,$=!0,F=n.length,Y=[],ae=i.length;if(!F)return Y;a&&(i=vt(i,un(a))),d?(C=rl,$=!1):i.length>=o&&(C=es,$=!1,i=new Gr(i));e:for(;++vv?0:v+a),d=d===r||d>v?v:qe(d),d<0&&(d+=v),d=a>d?0:Xd(d);a0&&a(F)?i>1?$t(F,i-1,a,d,v):pr(v,F):d||(v[v.length]=F)}return v}var yl=ld(),Nf=ld(!0);function Nn(n,i){return n&&yl(n,i,It)}function _l(n,i){return n&&Nf(n,i,It)}function Eo(n,i){return hr(i,function(a){return er(n[a])})}function Zr(n,i){i=_r(i,n);for(var a=0,d=i.length;n!=null&&ai}function k_(n,i){return n!=null&<.call(n,i)}function O_(n,i){return n!=null&&i in ht(n)}function R_(n,i,a){return n>=Vt(i,a)&&n=120&&le.length>=120)?new Gr($&&le):r}le=n[0];var fe=-1,we=F[0];e:for(;++fe-1;)F!==n&&vo.call(F,Y,1),vo.call(n,Y,1);return n}function zf(n,i){for(var a=n?i.length:0,d=a-1;a--;){var v=i[a];if(a==d||v!==C){var C=v;Qn(v)?vo.call(n,v,1):Ol(n,v)}}return n}function El(n,i){return n+bo(kf()*(i-n+1))}function U_(n,i,a,d){for(var v=-1,C=Ot(_o((i-n)/(a||1)),0),$=ee(C);C--;)$[d?C:++v]=n,n+=a;return $}function Sl(n,i){var a="";if(!n||i<1||i>_)return a;do i%2&&(a+=n),i=bo(i/2),i&&(n+=n);while(i);return a}function ze(n,i){return ql(Pd(n,i,tn),n+"")}function q_(n){return Tf(Oi(n))}function j_(n,i){var a=Oi(n);return No(a,zr(i,0,a.length))}function cs(n,i,a,d){if(!wt(n))return n;i=_r(i,n);for(var v=-1,C=i.length,$=C-1,F=n;F!=null&&++vv?0:v+i),a=a>v?v:a,a<0&&(a+=v),v=i>a?0:a-i>>>0,i>>>=0;for(var C=ee(v);++d>>1,$=n[C];$!==null&&!fn($)&&(a?$<=i:$=o){var ae=i?null:s1(n);if(ae)return lo(ae);$=!1,v=es,Y=new Gr}else Y=i?[]:F;e:for(;++d=d?n:xn(n,i,a)}var td=Dy||function(n){return Lt.clearTimeout(n)};function nd(n,i){if(i)return n.slice();var a=n.length,d=xf?xf(a):new n.constructor(a);return n.copy(d),d}function Ml(n){var i=new n.constructor(n.byteLength);return new mo(i).set(new mo(n)),i}function Y_(n,i){var a=i?Ml(n.buffer):n.buffer;return new n.constructor(a,n.byteOffset,n.byteLength)}function J_(n){var i=new n.constructor(n.source,Bc.exec(n));return i.lastIndex=n.lastIndex,i}function X_(n){return ss?ht(ss.call(n)):{}}function rd(n,i){var a=i?Ml(n.buffer):n.buffer;return new n.constructor(a,n.byteOffset,n.length)}function id(n,i){if(n!==i){var a=n!==r,d=n===null,v=n===n,C=fn(n),$=i!==r,F=i===null,Y=i===i,ae=fn(i);if(!F&&!ae&&!C&&n>i||C&&$&&Y&&!F&&!ae||d&&$&&Y||!a&&Y||!v)return 1;if(!d&&!C&&!ae&&n=F)return Y;var ae=a[d];return Y*(ae=="desc"?-1:1)}}return n.index-i.index}function sd(n,i,a,d){for(var v=-1,C=n.length,$=a.length,F=-1,Y=i.length,ae=Ot(C-$,0),le=ee(Y+ae),fe=!d;++F1?a[v-1]:r,$=v>2?a[2]:r;for(C=n.length>3&&typeof C=="function"?(v--,C):r,$&&jt(a[0],a[1],$)&&(C=v<3?r:C,v=1),i=ht(i);++d-1?v[C?i[$]:$]:r}}function fd(n){return Xn(function(i){var a=i.length,d=a,v=wn.prototype.thru;for(n&&i.reverse();d--;){var C=i[d];if(typeof C!="function")throw new bn(u);if(v&&!$&&$o(C)=="wrapper")var $=new wn([],!0)}for(d=$?d:a;++d1&&et.reverse(),le&&YF))return!1;var ae=C.get(n),le=C.get(i);if(ae&&le)return ae==i&&le==n;var fe=-1,we=!0,Te=a&w?new Gr:r;for(C.set(n,i),C.set(i,n);++fe1?"& ":"")+i[d],i=i.join(a>2?", ":" "),n.replace(gv,`{ /* [wrapped with `+i+`] */ `)}function m1(n){return He(n)||Xr(n)||!!(Ef&&n&&n[Ef])}function Qn(n,i){var a=typeof n;return i=i??_,!!i&&(a=="number"||a!="symbol"&&Sv.test(n))&&n>-1&&n%1==0&&n0){if(++i>=K)return arguments[0]}else i=0;return n.apply(r,arguments)}}function No(n,i){var a=-1,d=n.length,v=d-1;for(i=i===r?d:i;++a1?n[i-1]:r;return a=typeof a=="function"?(n.pop(),a):r,Dd(n,a)});function Nd(n){var i=A(n);return i.__chain__=!0,i}function E0(n,i){return i(n),n}function Bo(n,i){return i(n)}var S0=Xn(function(n){var i=n.length,a=i?n[0]:0,d=this.__wrapped__,v=function(C){return vl(C,n)};return i>1||this.__actions__.length||!(d instanceof Je)||!Qn(a)?this.thru(v):(d=d.slice(a,+a+(i?1:0)),d.__actions__.push({func:Bo,args:[v],thisArg:r}),new wn(d,this.__chain__).thru(function(C){return i&&!C.length&&C.push(r),C}))});function k0(){return Nd(this)}function O0(){return new wn(this.value(),this.__chain__)}function R0(){this.__values__===r&&(this.__values__=Jd(this.value()));var n=this.__index__>=this.__values__.length,i=n?r:this.__values__[this.__index__++];return{done:n,value:i}}function T0(){return this}function I0(n){for(var i,a=this;a instanceof xo;){var d=Rd(a);d.__index__=0,d.__values__=r,i?v.__wrapped__=d:i=d;var v=d;a=a.__wrapped__}return v.__wrapped__=n,i}function M0(){var n=this.__wrapped__;if(n instanceof Je){var i=n;return this.__actions__.length&&(i=new Je(this)),i=i.reverse(),i.__actions__.push({func:Bo,args:[jl],thisArg:r}),new wn(i,this.__chain__)}return this.thru(jl)}function L0(){return Qf(this.__wrapped__,this.__actions__)}var $0=Ro(function(n,i,a){lt.call(n,a)?++n[a]:Yn(n,a,1)});function D0(n,i,a){var d=He(n)?df:E_;return a&&jt(n,i,a)&&(i=r),d(n,Me(i,3))}function N0(n,i){var a=He(n)?hr:Df;return a(n,Me(i,3))}var B0=cd(Td),V0=cd(Id);function W0(n,i){return $t(Vo(n,i),1)}function F0(n,i){return $t(Vo(n,i),x)}function H0(n,i,a){return a=a===r?1:qe(a),$t(Vo(n,i),a)}function Bd(n,i){var a=He(n)?_n:vr;return a(n,Me(i,3))}function Vd(n,i){var a=He(n)?ay:$f;return a(n,Me(i,3))}var U0=Ro(function(n,i,a){lt.call(n,a)?n[a].push(i):Yn(n,a,[i])});function q0(n,i,a,d){n=Qt(n)?n:Oi(n),a=a&&!d?qe(a):0;var v=n.length;return a<0&&(a=Ot(v+a,0)),qo(n)?a<=v&&n.indexOf(i,a)>-1:!!v&&vi(n,i,a)>-1}var j0=ze(function(n,i,a){var d=-1,v=typeof i=="function",C=Qt(n)?ee(n.length):[];return vr(n,function($){C[++d]=v?ln(i,$,a):ls($,i,a)}),C}),K0=Ro(function(n,i,a){Yn(n,a,i)});function Vo(n,i){var a=He(n)?vt:Hf;return a(n,Me(i,3))}function G0(n,i,a,d){return n==null?[]:(He(i)||(i=i==null?[]:[i]),a=d?r:a,He(a)||(a=a==null?[]:[a]),Kf(n,i,a))}var z0=Ro(function(n,i,a){n[a?0:1].push(i)},function(){return[[],[]]});function Z0(n,i,a){var d=He(n)?il:gf,v=arguments.length<3;return d(n,Me(i,4),a,v,vr)}function Y0(n,i,a){var d=He(n)?ly:gf,v=arguments.length<3;return d(n,Me(i,4),a,v,$f)}function J0(n,i){var a=He(n)?hr:Df;return a(n,Ho(Me(i,3)))}function X0(n){var i=He(n)?Tf:q_;return i(n)}function Q0(n,i,a){(a?jt(n,i,a):i===r)?i=1:i=qe(i);var d=He(n)?w_:j_;return d(n,i)}function eb(n){var i=He(n)?A_:G_;return i(n)}function tb(n){if(n==null)return 0;if(Qt(n))return qo(n)?_i(n):n.length;var i=Wt(n);return i==L||i==me?n.size:xl(n).length}function nb(n,i,a){var d=He(n)?sl:z_;return a&&jt(n,i,a)&&(i=r),d(n,Me(i,3))}var rb=ze(function(n,i){if(n==null)return[];var a=i.length;return a>1&&jt(n,i[0],i[1])?i=[]:a>2&&jt(i[0],i[1],i[2])&&(i=[i[0]]),Kf(n,$t(i,1),[])}),Wo=Ny||function(){return Lt.Date.now()};function ib(n,i){if(typeof i!="function")throw new bn(u);return n=qe(n),function(){if(--n<1)return i.apply(this,arguments)}}function Wd(n,i,a){return i=a?r:i,i=n&&i==null?n.length:i,Jn(n,q,r,r,r,r,i)}function Fd(n,i){var a;if(typeof i!="function")throw new bn(u);return n=qe(n),function(){return--n>0&&(a=i.apply(this,arguments)),n<=1&&(i=r),a}}var Gl=ze(function(n,i,a){var d=T;if(a.length){var v=mr(a,Si(Gl));d|=R}return Jn(n,d,i,a,v)}),Hd=ze(function(n,i,a){var d=T|V;if(a.length){var v=mr(a,Si(Hd));d|=R}return Jn(i,d,n,a,v)});function Ud(n,i,a){i=a?r:i;var d=Jn(n,P,r,r,r,r,r,i);return d.placeholder=Ud.placeholder,d}function qd(n,i,a){i=a?r:i;var d=Jn(n,k,r,r,r,r,r,i);return d.placeholder=qd.placeholder,d}function jd(n,i,a){var d,v,C,$,F,Y,ae=0,le=!1,fe=!1,we=!0;if(typeof n!="function")throw new bn(u);i=Cn(i)||0,wt(a)&&(le=!!a.leading,fe="maxWait"in a,C=fe?Ot(Cn(a.maxWait)||0,i):C,we="trailing"in a?!!a.trailing:we);function Te(Et){var In=d,nr=v;return d=v=r,ae=Et,$=n.apply(nr,In),$}function Le(Et){return ae=Et,F=hs(Ye,i),le?Te(Et):$}function Ke(Et){var In=Et-Y,nr=Et-ae,ch=i-In;return fe?Vt(ch,C-nr):ch}function $e(Et){var In=Et-Y,nr=Et-ae;return Y===r||In>=i||In<0||fe&&nr>=C}function Ye(){var Et=Wo();if($e(Et))return et(Et);F=hs(Ye,Ke(Et))}function et(Et){return F=r,we&&d?Te(Et):(d=v=r,$)}function dn(){F!==r&&td(F),ae=0,d=Y=v=F=r}function Kt(){return F===r?$:et(Wo())}function hn(){var Et=Wo(),In=$e(Et);if(d=arguments,v=this,Y=Et,In){if(F===r)return Le(Y);if(fe)return td(F),F=hs(Ye,i),Te(Y)}return F===r&&(F=hs(Ye,i)),$}return hn.cancel=dn,hn.flush=Kt,hn}var sb=ze(function(n,i){return Lf(n,1,i)}),ob=ze(function(n,i,a){return Lf(n,Cn(i)||0,a)});function ab(n){return Jn(n,j)}function Fo(n,i){if(typeof n!="function"||i!=null&&typeof i!="function")throw new bn(u);var a=function(){var d=arguments,v=i?i.apply(this,d):d[0],C=a.cache;if(C.has(v))return C.get(v);var $=n.apply(this,d);return a.cache=C.set(v,$)||C,$};return a.cache=new(Fo.Cache||Zn),a}Fo.Cache=Zn;function Ho(n){if(typeof n!="function")throw new bn(u);return function(){var i=arguments;switch(i.length){case 0:return!n.call(this);case 1:return!n.call(this,i[0]);case 2:return!n.call(this,i[0],i[1]);case 3:return!n.call(this,i[0],i[1],i[2])}return!n.apply(this,i)}}function lb(n){return Fd(2,n)}var ub=Z_(function(n,i){i=i.length==1&&He(i[0])?vt(i[0],un(Me())):vt($t(i,1),un(Me()));var a=i.length;return ze(function(d){for(var v=-1,C=Vt(d.length,a);++v=i}),Xr=Vf(function(){return arguments}())?Vf:function(n){return xt(n)&<.call(n,"callee")&&!Cf.call(n,"callee")},He=ee.isArray,Pb=of?un(of):I_;function Qt(n){return n!=null&&Uo(n.length)&&!er(n)}function Ct(n){return xt(n)&&Qt(n)}function Cb(n){return n===!0||n===!1||xt(n)&&qt(n)==se}var wr=Vy||su,Eb=af?un(af):M_;function Sb(n){return xt(n)&&n.nodeType===1&&!ps(n)}function kb(n){if(n==null)return!0;if(Qt(n)&&(He(n)||typeof n=="string"||typeof n.splice=="function"||wr(n)||ki(n)||Xr(n)))return!n.length;var i=Wt(n);if(i==L||i==me)return!n.size;if(ds(n))return!xl(n).length;for(var a in n)if(lt.call(n,a))return!1;return!0}function Ob(n,i){return us(n,i)}function Rb(n,i,a){a=typeof a=="function"?a:r;var d=a?a(n,i):r;return d===r?us(n,i,r,a):!!d}function Zl(n){if(!xt(n))return!1;var i=qt(n);return i==Oe||i==Ae||typeof n.message=="string"&&typeof n.name=="string"&&!ps(n)}function Tb(n){return typeof n=="number"&&Sf(n)}function er(n){if(!wt(n))return!1;var i=qt(n);return i==je||i==O||i==X||i==be}function Gd(n){return typeof n=="number"&&n==qe(n)}function Uo(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=_}function wt(n){var i=typeof n;return n!=null&&(i=="object"||i=="function")}function xt(n){return n!=null&&typeof n=="object"}var zd=lf?un(lf):$_;function Ib(n,i){return n===i||Al(n,i,Vl(i))}function Mb(n,i,a){return a=typeof a=="function"?a:r,Al(n,i,Vl(i),a)}function Lb(n){return Zd(n)&&n!=+n}function $b(n){if(y1(n))throw new Fe(l);return Wf(n)}function Db(n){return n===null}function Nb(n){return n==null}function Zd(n){return typeof n=="number"||xt(n)&&qt(n)==J}function ps(n){if(!xt(n)||qt(n)!=ne)return!1;var i=go(n);if(i===null)return!0;var a=lt.call(i,"constructor")&&i.constructor;return typeof a=="function"&&a instanceof a&&fo.call(a)==My}var Yl=uf?un(uf):D_;function Bb(n){return Gd(n)&&n>=-_&&n<=_}var Yd=cf?un(cf):N_;function qo(n){return typeof n=="string"||!He(n)&&xt(n)&&qt(n)==ce}function fn(n){return typeof n=="symbol"||xt(n)&&qt(n)==xe}var ki=ff?un(ff):B_;function Vb(n){return n===r}function Wb(n){return xt(n)&&Wt(n)==Re}function Fb(n){return xt(n)&&qt(n)==We}var Hb=Lo(Pl),Ub=Lo(function(n,i){return n<=i});function Jd(n){if(!n)return[];if(Qt(n))return qo(n)?On(n):Xt(n);if(ts&&n[ts])return wy(n[ts]());var i=Wt(n),a=i==L?fl:i==me?lo:Oi;return a(n)}function tr(n){if(!n)return n===0?n:0;if(n=Cn(n),n===x||n===-x){var i=n<0?-1:1;return i*Z}return n===n?n:0}function qe(n){var i=tr(n),a=i%1;return i===i?a?i-a:i:0}function Xd(n){return n?zr(qe(n),0,b):0}function Cn(n){if(typeof n=="number")return n;if(fn(n))return N;if(wt(n)){var i=typeof n.valueOf=="function"?n.valueOf():n;n=wt(i)?i+"":i}if(typeof n!="string")return n===0?n:+n;n=vf(n);var a=Pv.test(n);return a||Ev.test(n)?iy(n.slice(2),a?2:8):xv.test(n)?N:+n}function Qd(n){return Bn(n,en(n))}function qb(n){return n?zr(qe(n),-_,_):n===0?n:0}function st(n){return n==null?"":cn(n)}var jb=Ci(function(n,i){if(ds(i)||Qt(i)){Bn(i,It(i),n);return}for(var a in i)lt.call(i,a)&&os(n,a,i[a])}),eh=Ci(function(n,i){Bn(i,en(i),n)}),jo=Ci(function(n,i,a,d){Bn(i,en(i),n,d)}),Kb=Ci(function(n,i,a,d){Bn(i,It(i),n,d)}),Gb=Xn(vl);function zb(n,i){var a=Pi(n);return i==null?a:If(a,i)}var Zb=ze(function(n,i){n=ht(n);var a=-1,d=i.length,v=d>2?i[2]:r;for(v&&jt(i[0],i[1],v)&&(d=1);++a1),C}),Bn(n,Nl(n),a),d&&(a=An(a,m|g|y,o1));for(var v=i.length;v--;)Ol(a,i[v]);return a});function hw(n,i){return nh(n,Ho(Me(i)))}var pw=Xn(function(n,i){return n==null?{}:F_(n,i)});function nh(n,i){if(n==null)return{};var a=vt(Nl(n),function(d){return[d]});return i=Me(i),Gf(n,a,function(d,v){return i(d,v[0])})}function mw(n,i,a){i=_r(i,n);var d=-1,v=i.length;for(v||(v=1,n=r);++di){var d=n;n=i,i=d}if(a||n%1||i%1){var v=kf();return Vt(n+v*(i-n+ry("1e-"+((v+"").length-1))),i)}return El(n,i)}var Ew=Ei(function(n,i,a){return i=i.toLowerCase(),n+(a?sh(i):i)});function sh(n){return Ql(st(n).toLowerCase())}function oh(n){return n=st(n),n&&n.replace(kv,gy).replace(Gv,"")}function Sw(n,i,a){n=st(n),i=cn(i);var d=n.length;a=a===r?d:zr(qe(a),0,d);var v=a;return a-=i.length,a>=0&&n.slice(a,v)==i}function kw(n){return n=st(n),n&&lv.test(n)?n.replace(Dc,vy):n}function Ow(n){return n=st(n),n&&pv.test(n)?n.replace(za,"\\$&"):n}var Rw=Ei(function(n,i,a){return n+(a?"-":"")+i.toLowerCase()}),Tw=Ei(function(n,i,a){return n+(a?" ":"")+i.toLowerCase()}),Iw=ud("toLowerCase");function Mw(n,i,a){n=st(n),i=qe(i);var d=i?_i(n):0;if(!i||d>=i)return n;var v=(i-d)/2;return Mo(bo(v),a)+n+Mo(_o(v),a)}function Lw(n,i,a){n=st(n),i=qe(i);var d=i?_i(n):0;return i&&d>>0,a?(n=st(n),n&&(typeof i=="string"||i!=null&&!Yl(i))&&(i=cn(i),!i&&yi(n))?br(On(n),0,a):n.split(i,a)):[]}var Fw=Ei(function(n,i,a){return n+(a?" ":"")+Ql(i)});function Hw(n,i,a){return n=st(n),a=a==null?0:zr(qe(a),0,n.length),i=cn(i),n.slice(a,a+i.length)==i}function Uw(n,i,a){var d=A.templateSettings;a&&jt(n,i,a)&&(i=r),n=st(n),i=jo({},i,d,gd);var v=jo({},i.imports,d.imports,gd),C=It(v),$=cl(v,C),F,Y,ae=0,le=i.interpolate||ro,fe="__p += '",we=dl((i.escape||ro).source+"|"+le.source+"|"+(le===Nc?Av:ro).source+"|"+(i.evaluate||ro).source+"|$","g"),Te="//# sourceURL="+(lt.call(i,"sourceURL")?(i.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Xv+"]")+` `;n.replace(we,function($e,Ye,et,dn,Kt,hn){return et||(et=dn),fe+=n.slice(ae,hn).replace(Ov,yy),Ye&&(F=!0,fe+=`' + diff --git a/src/ui/dist/assets/index-9ce0501a.js.gz b/src/ui/dist/assets/index-9ce0501a.js.gz new file mode 100644 index 000000000..127d41145 Binary files /dev/null and b/src/ui/dist/assets/index-9ce0501a.js.gz differ diff --git a/src/ui/dist/assets/index-a9adc40e.js.gz b/src/ui/dist/assets/index-a9adc40e.js.gz deleted file mode 100644 index 4e093df1b..000000000 Binary files a/src/ui/dist/assets/index-a9adc40e.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-ae325741.js.gz b/src/ui/dist/assets/index-ae325741.js.gz deleted file mode 100644 index 198d26d91..000000000 Binary files a/src/ui/dist/assets/index-ae325741.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-a9adc40e.js b/src/ui/dist/assets/index-b3475b66.js similarity index 99% rename from src/ui/dist/assets/index-a9adc40e.js rename to src/ui/dist/assets/index-b3475b66.js index 5b462afd9..f033066ad 100644 --- a/src/ui/dist/assets/index-a9adc40e.js +++ b/src/ui/dist/assets/index-b3475b66.js @@ -1 +1 @@ -import{i as U,ce as W,o as p,c as w,g as H,u as f,cg as K,t as x,f as B,d as C,a as I,I as N,F as j,j as G,O as P,b as $,J as F,L as V,_ as q}from"./index-8ac6a0d2.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:()=>J,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 J=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 S=function(){return S=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,[H(K,{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(N,{key:0,icon:"translate",label:d()?"Show original":"Translate all",class:"mr-2",onClick:e[0]||(e[0]=_=>d()?c():i())},null,8,["label"])):C("",!0)]),(b=f(r).lyrics)!=null&&b.lyrics?(p(),w("div",ne,[(p(!0),w(j,null,G((k=f(r).lyrics)==null?void 0:k.lyrics,(_,M)=>(p(),w("div",{class:P(["line",o(M)]),onClick:A=>f(r).seek(parseInt(_.startTimeMs)/1e3)},[$(x(_.words)+" ",1),I("span",{class:P(["material-symbols-rounded translate",{translated:_.originalWorlds}]),onClick:F(A=>a(M),["stop"])}," translate ",10,te)],10,ae))),256))])):C("",!0)],64)}}});const se=q(oe,[["__scopeId","data-v-10034d1f"]]);export{se as default}; +import{i as U,ce as W,o as p,c as w,g as H,u as f,cg as K,t as x,f as B,d as C,a as I,I as N,F as j,j as G,O as P,b as $,J as F,L as V,_ as q}from"./index-9ce0501a.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:()=>J,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 J=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 S=function(){return S=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,[H(K,{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(N,{key:0,icon:"translate",label:d()?"Show original":"Translate all",class:"mr-2",onClick:e[0]||(e[0]=_=>d()?c():i())},null,8,["label"])):C("",!0)]),(b=f(r).lyrics)!=null&&b.lyrics?(p(),w("div",ne,[(p(!0),w(j,null,G((k=f(r).lyrics)==null?void 0:k.lyrics,(_,M)=>(p(),w("div",{class:P(["line",o(M)]),onClick:A=>f(r).seek(parseInt(_.startTimeMs)/1e3)},[$(x(_.words)+" ",1),I("span",{class:P(["material-symbols-rounded translate",{translated:_.originalWorlds}]),onClick:F(A=>a(M),["stop"])}," translate ",10,te)],10,ae))),256))])):C("",!0)],64)}}});const se=q(oe,[["__scopeId","data-v-10034d1f"]]);export{se as default}; diff --git a/src/ui/dist/assets/index-b3475b66.js.gz b/src/ui/dist/assets/index-b3475b66.js.gz new file mode 100644 index 000000000..d0acf9471 Binary files /dev/null and b/src/ui/dist/assets/index-b3475b66.js.gz differ diff --git a/src/ui/dist/assets/index-b4997df0.js.gz b/src/ui/dist/assets/index-b4997df0.js.gz deleted file mode 100644 index f168608d7..000000000 Binary files a/src/ui/dist/assets/index-b4997df0.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-b57d7504.js.gz b/src/ui/dist/assets/index-b57d7504.js.gz deleted file mode 100644 index fb4e87964..000000000 Binary files a/src/ui/dist/assets/index-b57d7504.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-ae325741.js b/src/ui/dist/assets/index-bb802307.js similarity index 98% rename from src/ui/dist/assets/index-ae325741.js rename to src/ui/dist/assets/index-bb802307.js index 329a61623..f3dea8973 100644 --- a/src/ui/dist/assets/index-ae325741.js +++ b/src/ui/dist/assets/index-bb802307.js @@ -1 +1 @@ -import{i as q,cE as N,q as x,c8 as S,o as s,c as n,a as o,F as r,j as B,f as C,w as y,b as t,t as a,C as h,g as p,h as F,d,u as f,cF as D,z as O,L as T,O as V,x as $,I as j,cw as z,m as L,n as E,_ as A}from"./index-8ac6a0d2.js";const i=v=>(L("data-v-cad4addf"),v=v(),E(),v),M={class:"downloader py-2 pr-2 grid gap-4 grid-cols-2 items-start"},P={class:"downloads"},Y={class:"main"},G={class:"m-0 mb-4"},H={class:"status"},J={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=q({__name:"index",setup(v){const _=N(),w=l=>{z.addYesNo("Are you sure you want to redownload this song?",null,null,()=>{console.log("[downloader] reDownload",l),_.downloadFromDb(l)})},m={title:"",artist:"",album:"",cover:"",source:"",href:""},g=x(null),c=x([{name:"source",type:"text",accept:"audio/mp3",required:!0,onChange:async l=>{const u=await S(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:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:m.cover}]),I=async()=>{const l=g.value.toObject();l.id=new Date().getTime(),console.log("[downloader] requestDownload",l),_.downloadOther(l)};return(l,u)=>(s(),n("div",M,[o("div",P,[(s(!0),n(r,null,B(f(_).states,e=>{var k;return s(),n(r,{key:e.songId},[e.internal?d("",!0):(s(),C(h,{key:0,class:V([["song",{downloading:((k=f(_).states[e.songId])==null?void 0:k.status)=="downloading"}],"p-4 card items-center"])},{default:y(()=>[e.status!=="pending"?(s(),n(r,{key:0},[o("main",Y,[o("h2",G,[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",H,[e.song?(s(),C(h,{key:0,class:"info p-4"},{default:y(()=>[p(F,{src:e.song.cover,class:"cover"},null,8,["src"]),o("div",J,[o("span",null,a(e.song.album),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(D)(e.downloaded))+" / "+a(f(D)(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=>w(e.songId)}," download_done ",8,ue)):e.status=="error"?(s(),n("span",{key:4,class:"material-symbols-rounded cursor-pointer error",onClick:b=>w(e.songId)}," error ",8,_e)):d("",!0)])])],64)):(s(),n("div",me,[p(T)]))]),_:2},1032,["class"]))],64)}),128))]),o("div",pe,[p(h,{class:"custom p-4 flex flex-col"},{default:y(()=>[p($,{ref_key:"form",ref:g,options:c.value},null,8,["options"]),p(j,{icon:"download_for_offline",label:"Download",class:"w-full mt-8",onClick:I})]),_:1})])]))}});const ye=A(fe,[["__scopeId","data-v-cad4addf"]]);export{ye as default}; +import{i as q,cE as N,q as x,c8 as S,o as s,c as n,a as o,F as r,j as B,f as C,w as y,b as t,t as a,C as h,g as p,h as F,d,u as f,cF as D,z as O,L as T,O as V,x as $,I as j,cw as z,m as L,n as E,_ as A}from"./index-9ce0501a.js";const i=v=>(L("data-v-cad4addf"),v=v(),E(),v),M={class:"downloader py-2 pr-2 grid gap-4 grid-cols-2 items-start"},P={class:"downloads"},Y={class:"main"},G={class:"m-0 mb-4"},H={class:"status"},J={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=q({__name:"index",setup(v){const _=N(),w=l=>{z.addYesNo("Are you sure you want to redownload this song?",null,null,()=>{console.log("[downloader] reDownload",l),_.downloadFromDb(l)})},m={title:"",artist:"",album:"",cover:"",source:"",href:""},g=x(null),c=x([{name:"source",type:"text",accept:"audio/mp3",required:!0,onChange:async l=>{const u=await S(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:"cover",type:"upload",accept:"image/*",imagePreview:!0,value:m.cover}]),I=async()=>{const l=g.value.toObject();l.id=new Date().getTime(),console.log("[downloader] requestDownload",l),_.downloadOther(l)};return(l,u)=>(s(),n("div",M,[o("div",P,[(s(!0),n(r,null,B(f(_).states,e=>{var k;return s(),n(r,{key:e.songId},[e.internal?d("",!0):(s(),C(h,{key:0,class:V([["song",{downloading:((k=f(_).states[e.songId])==null?void 0:k.status)=="downloading"}],"p-4 card items-center"])},{default:y(()=>[e.status!=="pending"?(s(),n(r,{key:0},[o("main",Y,[o("h2",G,[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",H,[e.song?(s(),C(h,{key:0,class:"info p-4"},{default:y(()=>[p(F,{src:e.song.cover,class:"cover"},null,8,["src"]),o("div",J,[o("span",null,a(e.song.album),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(D)(e.downloaded))+" / "+a(f(D)(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=>w(e.songId)}," download_done ",8,ue)):e.status=="error"?(s(),n("span",{key:4,class:"material-symbols-rounded cursor-pointer error",onClick:b=>w(e.songId)}," error ",8,_e)):d("",!0)])])],64)):(s(),n("div",me,[p(T)]))]),_:2},1032,["class"]))],64)}),128))]),o("div",pe,[p(h,{class:"custom p-4 flex flex-col"},{default:y(()=>[p($,{ref_key:"form",ref:g,options:c.value},null,8,["options"]),p(j,{icon:"download_for_offline",label:"Download",class:"w-full mt-8",onClick:I})]),_:1})])]))}});const ye=A(fe,[["__scopeId","data-v-cad4addf"]]);export{ye as default}; diff --git a/src/ui/dist/assets/index-bb802307.js.gz b/src/ui/dist/assets/index-bb802307.js.gz new file mode 100644 index 000000000..df61876ee Binary files /dev/null and b/src/ui/dist/assets/index-bb802307.js.gz differ diff --git a/src/ui/dist/assets/index-d667419a.js.gz b/src/ui/dist/assets/index-d667419a.js.gz deleted file mode 100644 index ed6863e34..000000000 Binary files a/src/ui/dist/assets/index-d667419a.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/index-d667419a.js b/src/ui/dist/assets/index-ea4be681.js similarity index 95% rename from src/ui/dist/assets/index-d667419a.js rename to src/ui/dist/assets/index-ea4be681.js index 21643810b..a892eb594 100644 --- a/src/ui/dist/assets/index-d667419a.js +++ b/src/ui/dist/assets/index-ea4be681.js @@ -1 +1 @@ -import{_ as k,o as s,c as i,a as n,b as m,t as v,d as _,r as j,e as I,f as d,w as r,g as l,C as P,h as B,i as D,F as h,j as p,P as x,u as w,p as E,k as F,l as b,m as H,n as q,q as S,s as T,v as R,x as V,I as G,y as L}from"./index-8ac6a0d2.js";import{T as $}from"./TrackCompact-89783a72.js";import{P as C}from"./PlaylistEntry-de6133b2.js";import{s as M}from"./spotify-40ad401f.js";import{P as J}from"./PlaylistItem-378aa73f.js";import"./EditSong.vue_vue_type_script_setup_true_lang-85602993.js";import"./playerInPicture-af203fdf.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,a,u,c,t,o){return s(),i("div",z,[n("div",A,[u.heading||u.icon?(s(),i("h2",K,[m(v(u.heading),1),u.icon?(s(),i("span",Q,v(u.icon),1)):_("",!0)])):_("",!0)]),n("div",U,[j(e.$slots,"default",{},void 0,!0)])])}const f=k(W,[["render",X],["__scopeId","data-v-3f16aa97"]]);const Y={class:"title"},Z={key:0,class:"material-symbols-rounded"},ee={__name:"Playlist",props:{name:{type:String,required:!0},cover:{type:String,required:!0},href:{type:String,required:!0},type:{type:String,default:"classic"}},setup(e){return(a,u)=>{const c=I("router-link");return s(),d(c,{to:e.href,class:"no-underline"},{default:r(()=>[l(P,{class:"home-playlist drop-shadow-md","with-hover":""},{default:r(()=>[l(B,{src:e.cover,type:"playlist",name:e.name},null,8,["src","name"]),n("div",Y,[e.type!="classic"?(s(),i("span",Z,v(e.type=="smart"?"neurology":"bolt"),1)):_("",!0),n("h4",null,v(e.name),1)])]),_:1})]),_:1},8,["to"])}}},te=k(ee,[["__scopeId","data-v-da1ad591"]]),se=e=>(H("data-v-2f517464"),e=e(),q(),e),ae={class:"home"},oe={class:"main"},ne={key:0,class:"playlists"},ie={key:1,class:"liked"},le={key:2,class:"breaking"},re={class:"side"},ce={key:0,class:"releases"},de={key:1,class:"disovery"},ue={key:2,class:"recommendations"},_e=se(()=>n("h2",null,"Recommendations",-1)),he={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:F()}},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 b("liked").songs.slice(0,3)},breaking(){return b("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 a=new CustomEvent("player.play",{detail:{artist:e.artist,title:e.title,source:e.source||e.url||e.href}});window.dispatchEvent(a)},async pick(){if(!this.data.playlists.length){setTimeout(()=>this.pick(),2e3);return}if(this.songs=this.playlists.map(e=>{var a;return((a=b(e.id))==null?void 0:a.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)})}}}},pe=D({...he,setup(e){return(a,u)=>{const c=I("router-link");return s(),i("div",ae,[n("div",oe,[a.playlists.length?(s(),i("div",ne,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/playlists"},{default:r(()=>[m("Playlists")]),_:1})]),l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.playlists,(t,o)=>(s(),d(te,{key:o,cover:t.cover,href:t==null?void 0:t.href,name:t.name,type:t.type},null,8,["cover","href","name","type"]))),128))]),_:1})])):_("",!0),a.liked.length?(s(),i("div",ie,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/tracks"},{default:r(()=>[m("Liked Songs")]),_:1})]),l(x),(s(!0),i(h,null,p(a.liked,(t,o)=>(s(),d(C,{key:o,index:o,"playlist-id":-1,song:t,"with-cover":""},null,8,["index","song"]))),128))])):_("",!0),a.breaking.length?(s(),i("div",le,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/tracks/breaking"},{default:r(()=>[m("Breaking Songs")]),_:1})]),l(x),(s(!0),i(h,null,p(a.breaking,(t,o)=>(s(),d(C,{key:o,index:o,"playlist-id":-2,song:t,"with-cover":""},null,8,["index","song"]))),128))])):_("",!0)]),n("div",re,[a.releases.length?(s(),i("div",ce,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/releases"},{default:r(()=>[m("Out now")]),_:1})]),l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.releases,(t,o)=>(s(),d($,{key:o,artist:t.artist,cover:t.cover,href:t.url,title:t.title,onPlay:()=>a.playRecommendation(t)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):_("",!0),a.picks.length?(s(),i("div",de,[n("h2",null,[l(c,{class:"linkOnHover",to:"/discover"},{default:r(()=>[m("Discover")]),_:1})]),l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.picks,(t,o)=>(s(),d($,{id:t.id,key:o,artist:t.artist,cover:w(E)(t.cover),href:t.href,title:t.title,onPlay:()=>a.playDiscover(t)},null,8,["id","artist","cover","href","title","onPlay"]))),128))]),_:1})])):_("",!0),a.recommendations.length?(s(),i("div",ue,[_e,l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.recommendations,(t,o)=>(s(),d($,{key:o,artist:t.artist,cover:t.cover,href:t.href,title:t.title,onPlay:()=>a.playRecommendation(t)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):_("",!0)])])}}});const ye=k(pe,[["__scopeId","data-v-2f517464"]]),g=e=>(H("data-v-c0ed4691"),e=e(),q(),e),me={class:"onboarding p-4"},fe=g(()=>n("h1",null,"So nice to meet you!",-1)),ve=g(()=>n("p",null,"Let's get you set up",-1)),ke={class:"grid grid-cols-2 gap-4 mt-8"},ge=g(()=>n("div",{class:"flex flex-row items-center"},[n("span",{class:"material-symbols-rounded ms-wght-700 text-4xl mr-4"},"add"),n("h2",null,"Create your first playlist")],-1)),be={class:"flex flex-row justify-end w-full"},Se={class:"flex flex-row items-center"},$e=g(()=>n("h2",null,"Import from Spotify",-1)),Pe={class:"spotify-playlists"},we=D({__name:"Onboarding",setup(e){const a=S([]),u=S(!1),c=S(null);T(),R().then(o=>{u.value=o}),fetch("/api/spotify/playlists").then(o=>o.json()).then(o=>{a.value=o});const t={fields:[{name:"name",label:"Name",placeholder:"Playlist name",icon:"title",type:"text",required:!0},{name:"description",label:"Description",placeholder:"Playlist description",icon:"description",type:"text",required:!1}],submit:{label:"Create",action:async()=>{const o=c.value.toObject();await L(o.name,o.description)}}};return(o,O)=>(s(),i("div",me,[fe,ve,n("div",ke,[l(P,{class:"p-4"},{default:r(()=>[ge,l(V,{ref_key:"createForm",ref:c,options:t.fields},null,8,["options"]),n("div",be,[l(G,{onClick:O[0]||(O[0]=y=>t.submit.action()),icon:"add",label:t.submit.label},null,8,["label"])])]),_:1}),a.value.length?(s(),d(P,{key:0,class:"p-4"},{default:r(()=>[n("div",Se,[l(w(M),{class:"spotify mr-4"}),$e]),n("div",Pe,[(s(!0),i(h,null,p(a.value,(y,N)=>(s(),d(J,{key:N,cover:y.cover,description:y.description,title:y.name,id:y.id,spotify:!0,href:`https://open.spotify.com/playlist/${y.id}`},null,8,["cover","description","title","id","href"]))),128))])]),_:1})):_("",!0)])]))}});const Oe=k(we,[["__scopeId","data-v-c0ed4691"]]),Ne={__name:"index",setup(e){const a=F();return(u,c)=>w(a).notEmpty?(s(),d(ye,{key:0})):(s(),d(Oe,{key:1}))}};export{Ne as default}; +import{_ as k,o as s,c as i,a as n,b as m,t as v,d as _,r as j,e as I,f as d,w as r,g as l,C as P,h as B,i as D,F as h,j as p,P as x,u as w,p as E,k as F,l as b,m as H,n as q,q as S,s as T,v as R,x as V,I as G,y as L}from"./index-9ce0501a.js";import{T as $}from"./TrackCompact-8352124a.js";import{P as C}from"./PlaylistEntry-6dd545f8.js";import{s as M}from"./spotify-b1867f20.js";import{P as J}from"./PlaylistItem-48685cba.js";import"./EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js";import"./playerInPicture-af203fdf.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,a,u,c,t,o){return s(),i("div",z,[n("div",A,[u.heading||u.icon?(s(),i("h2",K,[m(v(u.heading),1),u.icon?(s(),i("span",Q,v(u.icon),1)):_("",!0)])):_("",!0)]),n("div",U,[j(e.$slots,"default",{},void 0,!0)])])}const f=k(W,[["render",X],["__scopeId","data-v-3f16aa97"]]);const Y={class:"title"},Z={key:0,class:"material-symbols-rounded"},ee={__name:"Playlist",props:{name:{type:String,required:!0},cover:{type:String,required:!0},href:{type:String,required:!0},type:{type:String,default:"classic"}},setup(e){return(a,u)=>{const c=I("router-link");return s(),d(c,{to:e.href,class:"no-underline"},{default:r(()=>[l(P,{class:"home-playlist drop-shadow-md","with-hover":""},{default:r(()=>[l(B,{src:e.cover,type:"playlist",name:e.name},null,8,["src","name"]),n("div",Y,[e.type!="classic"?(s(),i("span",Z,v(e.type=="smart"?"neurology":"bolt"),1)):_("",!0),n("h4",null,v(e.name),1)])]),_:1})]),_:1},8,["to"])}}},te=k(ee,[["__scopeId","data-v-da1ad591"]]),se=e=>(H("data-v-2f517464"),e=e(),q(),e),ae={class:"home"},oe={class:"main"},ne={key:0,class:"playlists"},ie={key:1,class:"liked"},le={key:2,class:"breaking"},re={class:"side"},ce={key:0,class:"releases"},de={key:1,class:"disovery"},ue={key:2,class:"recommendations"},_e=se(()=>n("h2",null,"Recommendations",-1)),he={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:F()}},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 b("liked").songs.slice(0,3)},breaking(){return b("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 a=new CustomEvent("player.play",{detail:{artist:e.artist,title:e.title,source:e.source||e.url||e.href}});window.dispatchEvent(a)},async pick(){if(!this.data.playlists.length){setTimeout(()=>this.pick(),2e3);return}if(this.songs=this.playlists.map(e=>{var a;return((a=b(e.id))==null?void 0:a.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)})}}}},pe=D({...he,setup(e){return(a,u)=>{const c=I("router-link");return s(),i("div",ae,[n("div",oe,[a.playlists.length?(s(),i("div",ne,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/playlists"},{default:r(()=>[m("Playlists")]),_:1})]),l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.playlists,(t,o)=>(s(),d(te,{key:o,cover:t.cover,href:t==null?void 0:t.href,name:t.name,type:t.type},null,8,["cover","href","name","type"]))),128))]),_:1})])):_("",!0),a.liked.length?(s(),i("div",ie,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/tracks"},{default:r(()=>[m("Liked Songs")]),_:1})]),l(x),(s(!0),i(h,null,p(a.liked,(t,o)=>(s(),d(C,{key:o,index:o,"playlist-id":-1,song:t,"with-cover":""},null,8,["index","song"]))),128))])):_("",!0),a.breaking.length?(s(),i("div",le,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/tracks/breaking"},{default:r(()=>[m("Breaking Songs")]),_:1})]),l(x),(s(!0),i(h,null,p(a.breaking,(t,o)=>(s(),d(C,{key:o,index:o,"playlist-id":-2,song:t,"with-cover":""},null,8,["index","song"]))),128))])):_("",!0)]),n("div",re,[a.releases.length?(s(),i("div",ce,[n("h2",null,[l(c,{class:"linkOnHover",to:"/collection/releases"},{default:r(()=>[m("Out now")]),_:1})]),l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.releases,(t,o)=>(s(),d($,{key:o,artist:t.artist,cover:t.cover,href:t.url,title:t.title,onPlay:()=>a.playRecommendation(t)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):_("",!0),a.picks.length?(s(),i("div",de,[n("h2",null,[l(c,{class:"linkOnHover",to:"/discover"},{default:r(()=>[m("Discover")]),_:1})]),l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.picks,(t,o)=>(s(),d($,{id:t.id,key:o,artist:t.artist,cover:w(E)(t.cover),href:t.href,title:t.title,onPlay:()=>a.playDiscover(t)},null,8,["id","artist","cover","href","title","onPlay"]))),128))]),_:1})])):_("",!0),a.recommendations.length?(s(),i("div",ue,[_e,l(f,null,{default:r(()=>[(s(!0),i(h,null,p(a.recommendations,(t,o)=>(s(),d($,{key:o,artist:t.artist,cover:t.cover,href:t.href,title:t.title,onPlay:()=>a.playRecommendation(t)},null,8,["artist","cover","href","title","onPlay"]))),128))]),_:1})])):_("",!0)])])}}});const ye=k(pe,[["__scopeId","data-v-2f517464"]]),g=e=>(H("data-v-c0ed4691"),e=e(),q(),e),me={class:"onboarding p-4"},fe=g(()=>n("h1",null,"So nice to meet you!",-1)),ve=g(()=>n("p",null,"Let's get you set up",-1)),ke={class:"grid grid-cols-2 gap-4 mt-8"},ge=g(()=>n("div",{class:"flex flex-row items-center"},[n("span",{class:"material-symbols-rounded ms-wght-700 text-4xl mr-4"},"add"),n("h2",null,"Create your first playlist")],-1)),be={class:"flex flex-row justify-end w-full"},Se={class:"flex flex-row items-center"},$e=g(()=>n("h2",null,"Import from Spotify",-1)),Pe={class:"spotify-playlists"},we=D({__name:"Onboarding",setup(e){const a=S([]),u=S(!1),c=S(null);T(),R().then(o=>{u.value=o}),fetch("/api/spotify/playlists").then(o=>o.json()).then(o=>{a.value=o});const t={fields:[{name:"name",label:"Name",placeholder:"Playlist name",icon:"title",type:"text",required:!0},{name:"description",label:"Description",placeholder:"Playlist description",icon:"description",type:"text",required:!1}],submit:{label:"Create",action:async()=>{const o=c.value.toObject();await L(o.name,o.description)}}};return(o,O)=>(s(),i("div",me,[fe,ve,n("div",ke,[l(P,{class:"p-4"},{default:r(()=>[ge,l(V,{ref_key:"createForm",ref:c,options:t.fields},null,8,["options"]),n("div",be,[l(G,{onClick:O[0]||(O[0]=y=>t.submit.action()),icon:"add",label:t.submit.label},null,8,["label"])])]),_:1}),a.value.length?(s(),d(P,{key:0,class:"p-4"},{default:r(()=>[n("div",Se,[l(w(M),{class:"spotify mr-4"}),$e]),n("div",Pe,[(s(!0),i(h,null,p(a.value,(y,N)=>(s(),d(J,{key:N,cover:y.cover,description:y.description,title:y.name,id:y.id,spotify:!0,href:`https://open.spotify.com/playlist/${y.id}`},null,8,["cover","description","title","id","href"]))),128))])]),_:1})):_("",!0)])]))}});const Oe=k(we,[["__scopeId","data-v-c0ed4691"]]),Ne={__name:"index",setup(e){const a=F();return(u,c)=>w(a).notEmpty?(s(),d(ye,{key:0})):(s(),d(Oe,{key:1}))}};export{Ne as default}; diff --git a/src/ui/dist/assets/index-ea4be681.js.gz b/src/ui/dist/assets/index-ea4be681.js.gz new file mode 100644 index 000000000..4daecaddc Binary files /dev/null and b/src/ui/dist/assets/index-ea4be681.js.gz differ diff --git a/src/ui/dist/assets/index-f53aaddd.css.gz b/src/ui/dist/assets/index-f53aaddd.css.gz deleted file mode 100644 index a6917d35e..000000000 Binary files a/src/ui/dist/assets/index-f53aaddd.css.gz and /dev/null differ diff --git a/src/ui/dist/assets/spotify-40ad401f.js.gz b/src/ui/dist/assets/spotify-40ad401f.js.gz deleted file mode 100644 index 2b5c94e4c..000000000 Binary files a/src/ui/dist/assets/spotify-40ad401f.js.gz and /dev/null differ diff --git a/src/ui/dist/assets/spotify-40ad401f.js b/src/ui/dist/assets/spotify-b1867f20.js similarity index 93% rename from src/ui/dist/assets/spotify-40ad401f.js rename to src/ui/dist/assets/spotify-b1867f20.js index dc057867a..0bc734174 100644 --- a/src/ui/dist/assets/spotify-40ad401f.js +++ b/src/ui/dist/assets/spotify-b1867f20.js @@ -1 +1 @@ -import{o as c,c as e,a as o}from"./index-8ac6a0d2.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-9ce0501a.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-b1867f20.js.gz b/src/ui/dist/assets/spotify-b1867f20.js.gz new file mode 100644 index 000000000..6bc175953 Binary files /dev/null and b/src/ui/dist/assets/spotify-b1867f20.js.gz differ diff --git a/src/ui/dist/index.html b/src/ui/dist/index.html index 2d4afc9d1..35984996b 100644 --- a/src/ui/dist/index.html +++ b/src/ui/dist/index.html @@ -48,8 +48,8 @@ reAudioPlayer One - - + + diff --git a/src/ui/dist/index.html.gz b/src/ui/dist/index.html.gz index 0756dd38b..849982fa4 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 458d2feb2..6585c792b 100644 --- a/src/ui/dist/sw.js +++ b/src/ui/dist/sw.js @@ -1 +1 @@ -if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).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=(i,r)=>{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(i.map((s=>t[s]||a(s)))).then((s=>(r(...s),u)))}}define(["./workbox-3e911b1d"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/Albums-9b5db7b3.css",revision:null},{url:"assets/Albums-fcb1e7f2.js",revision:null},{url:"assets/Artist-435bb7d5.js",revision:null},{url:"assets/Artist-a6b528f5.css",revision:null},{url:"assets/Artists-502bde9d.css",revision:null},{url:"assets/Artists-98f3caad.js",revision:null},{url:"assets/BigPlayer-aabd95ce.css",revision:null},{url:"assets/BigPlayer-aac773a1.js",revision:null},{url:"assets/Breaking-45731b5e.js",revision:null},{url:"assets/CollectionHeader-eecd1a8a.js",revision:null},{url:"assets/CollectionHeader-fcda14ed.css",revision:null},{url:"assets/Create-8ab3526b.css",revision:null},{url:"assets/Create-c4da9747.js",revision:null},{url:"assets/Editor-29aa8a80.css",revision:null},{url:"assets/Editor-f0e93882.js",revision:null},{url:"assets/EditSong.vue_vue_type_script_setup_true_lang-85602993.js",revision:null},{url:"assets/Explore-1b45015b.css",revision:null},{url:"assets/Explore-c4d854bf.js",revision:null},{url:"assets/Export-59966bf7.js",revision:null},{url:"assets/Export-a03f6dd4.css",revision:null},{url:"assets/FactCard-20171310.js",revision:null},{url:"assets/FactCard-3c5d1fcf.css",revision:null},{url:"assets/FullShelf-006a7dde.js",revision:null},{url:"assets/FullShelf-62d1d109.css",revision:null},{url:"assets/gistClient-e7ab47a2.js",revision:null},{url:"assets/Import-55b2d529.js",revision:null},{url:"assets/Import-5bb9c089.css",revision:null},{url:"assets/ImportLink-38684500.js",revision:null},{url:"assets/ImportLink-fa9af2ae.css",revision:null},{url:"assets/index-2f9f0259.css",revision:null},{url:"assets/index-3d76937e.css",revision:null},{url:"assets/index-58d888b4.css",revision:null},{url:"assets/index-8ac6a0d2.js",revision:null},{url:"assets/index-8e12dc4a.css",revision:null},{url:"assets/index-a9adc40e.js",revision:null},{url:"assets/index-ae325741.js",revision:null},{url:"assets/index-b4997df0.js",revision:null},{url:"assets/index-b57d7504.js",revision:null},{url:"assets/index-bd89c879.css",revision:null},{url:"assets/index-d667419a.js",revision:null},{url:"assets/index-f53aaddd.css",revision:null},{url:"assets/Insight-7c680bf3.js",revision:null},{url:"assets/Insight-8c46a3d4.css",revision:null},{url:"assets/Liked-4879dfc1.js",revision:null},{url:"assets/Markdown-d883632e.css",revision:null},{url:"assets/Markdown.vue_vue_type_style_index_0_lang-2360dd37.js",revision:null},{url:"assets/needles/needles-worker.js",revision:"5d9e2eedeab164e3b968a86bdf450d2f"},{url:"assets/News-4e6e4aea.js",revision:null},{url:"assets/News-99169f9d.css",revision:null},{url:"assets/NewsArticle-03a45240.css",revision:null},{url:"assets/NewsArticle-f8724657.js",revision:null},{url:"assets/Normal-5ddfa169.js",revision:null},{url:"assets/playerInPicture-af203fdf.js",revision:null},{url:"assets/Playlist.vue_vue_type_script_setup_true_lang-cff87c91.js",revision:null},{url:"assets/PlaylistEntry-1ba48776.css",revision:null},{url:"assets/PlaylistEntry-de6133b2.js",revision:null},{url:"assets/PlaylistItem-1de8bde1.css",revision:null},{url:"assets/PlaylistItem-378aa73f.js",revision:null},{url:"assets/Playlists-152359c7.js",revision:null},{url:"assets/Playlists-cb788b08.css",revision:null},{url:"assets/Releases-1241d86a.css",revision:null},{url:"assets/Releases-af8ef2a4.js",revision:null},{url:"assets/Sports-1ccf2e89.js",revision:null},{url:"assets/Sports-385f73f9.css",revision:null},{url:"assets/spotify-40ad401f.js",revision:null},{url:"assets/Template-01e8e5fe.css",revision:null},{url:"assets/Template-432d76e5.js",revision:null},{url:"assets/Track-794404ac.js",revision:null},{url:"assets/Track-7c1d0a5c.css",revision:null},{url:"assets/TrackCompact-79c8b159.css",revision:null},{url:"assets/TrackCompact-89783a72.js",revision:null},{url:"assets/Welcome-5b21c29e.css",revision:null},{url:"assets/Welcome-7b34553a.js",revision:null},{url:"index.html",revision:"b0dc7c887ee275a823860969910dd3c1"},{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,i)=>(l=new URL(l+".js",i).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=(i,r)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(e[n])return;let u={};const t=s=>l(s,n),a={module:{uri:n},exports:u,require:t};e[n]=Promise.all(i.map((s=>a[s]||t(s)))).then((s=>(r(...s),u)))}}define(["./workbox-3e911b1d"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/Album-1f347aa1.css",revision:null},{url:"assets/Album-c485014b.js",revision:null},{url:"assets/Albums-c2cb712e.css",revision:null},{url:"assets/Albums-f18ee055.js",revision:null},{url:"assets/Artist-097652ba.js",revision:null},{url:"assets/Artist-a6b528f5.css",revision:null},{url:"assets/Artists-443e36b5.js",revision:null},{url:"assets/Artists-bd87c507.css",revision:null},{url:"assets/BigPlayer-aabd95ce.css",revision:null},{url:"assets/BigPlayer-f2952b73.js",revision:null},{url:"assets/Breaking-00b932ae.js",revision:null},{url:"assets/CardWithImageAndText-6d2d3cec.js",revision:null},{url:"assets/CardWithImageAndText-af12f13a.css",revision:null},{url:"assets/CollectionHeader-65e61737.js",revision:null},{url:"assets/CollectionHeader-f7f1bd89.css",revision:null},{url:"assets/Create-8ab3526b.css",revision:null},{url:"assets/Create-939d7c74.js",revision:null},{url:"assets/Editor-003ff424.js",revision:null},{url:"assets/Editor-29aa8a80.css",revision:null},{url:"assets/EditSong.vue_vue_type_script_setup_true_lang-fa67243e.js",revision:null},{url:"assets/Explore-1b45015b.css",revision:null},{url:"assets/Explore-d2d855b0.js",revision:null},{url:"assets/Export-8dfc6448.js",revision:null},{url:"assets/Export-a03f6dd4.css",revision:null},{url:"assets/FactCard-3c5d1fcf.css",revision:null},{url:"assets/FactCard-fd04f9e5.js",revision:null},{url:"assets/FullShelf-62d1d109.css",revision:null},{url:"assets/FullShelf-ee955822.js",revision:null},{url:"assets/gistClient-e7b09d22.js",revision:null},{url:"assets/Import-5bb9c089.css",revision:null},{url:"assets/Import-9bf651ae.js",revision:null},{url:"assets/ImportLink-431b2fd4.js",revision:null},{url:"assets/ImportLink-fa9af2ae.css",revision:null},{url:"assets/index-16d261c5.css",revision:null},{url:"assets/index-1873d3cb.js",revision:null},{url:"assets/index-2f9f0259.css",revision:null},{url:"assets/index-3d76937e.css",revision:null},{url:"assets/index-3e9200e5.js",revision:null},{url:"assets/index-58d888b4.css",revision:null},{url:"assets/index-8e12dc4a.css",revision:null},{url:"assets/index-9ce0501a.js",revision:null},{url:"assets/index-b3475b66.js",revision:null},{url:"assets/index-bb802307.js",revision:null},{url:"assets/index-bd89c879.css",revision:null},{url:"assets/index-ea4be681.js",revision:null},{url:"assets/Insight-64ef2117.js",revision:null},{url:"assets/Insight-8c46a3d4.css",revision:null},{url:"assets/Liked-fc8dae6c.js",revision:null},{url:"assets/Markdown-d883632e.css",revision:null},{url:"assets/Markdown.vue_vue_type_style_index_0_lang-99a7139c.js",revision:null},{url:"assets/needles/needles-worker.js",revision:"5d9e2eedeab164e3b968a86bdf450d2f"},{url:"assets/News-4388050d.js",revision:null},{url:"assets/News-99169f9d.css",revision:null},{url:"assets/NewsArticle-03a45240.css",revision:null},{url:"assets/NewsArticle-6def32c5.js",revision:null},{url:"assets/Normal-9a43bf76.js",revision:null},{url:"assets/playerInPicture-af203fdf.js",revision:null},{url:"assets/Playlist.vue_vue_type_script_setup_true_lang-96743295.js",revision:null},{url:"assets/PlaylistEntry-6dd545f8.js",revision:null},{url:"assets/PlaylistEntry-7f3947eb.css",revision:null},{url:"assets/PlaylistItem-1de8bde1.css",revision:null},{url:"assets/PlaylistItem-48685cba.js",revision:null},{url:"assets/Playlists-cb788b08.css",revision:null},{url:"assets/Playlists-f552ebd0.js",revision:null},{url:"assets/Releases-1241d86a.css",revision:null},{url:"assets/Releases-c156a97c.js",revision:null},{url:"assets/Sports-385f73f9.css",revision:null},{url:"assets/Sports-47cd98e8.js",revision:null},{url:"assets/spotify-b1867f20.js",revision:null},{url:"assets/Template-01e8e5fe.css",revision:null},{url:"assets/Template-15080c8f.js",revision:null},{url:"assets/Track-0537b97a.js",revision:null},{url:"assets/Track-5eeebad7.css",revision:null},{url:"assets/TrackCompact-79c8b159.css",revision:null},{url:"assets/TrackCompact-8352124a.js",revision:null},{url:"assets/Welcome-5b21c29e.css",revision:null},{url:"assets/Welcome-9add315f.js",revision:null},{url:"index.html",revision:"b8edc835e9ba43e88f7badd6db673fde"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"favicon.png",revision:"81eb710c3fadc823ae3bb676eacf1795"},{url:"manifest.webmanifest",revision:"54fda1775a89a999bda4c67bd363bb64"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/^\/api/]}))})); diff --git a/src/ui/package-lock.json b/src/ui/package-lock.json index e07448bf1..a261d5647 100644 --- a/src/ui/package-lock.json +++ b/src/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "reAudioPlayer", - "version": "0.11.32", + "version": "0.11.33", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "reAudioPlayer", - "version": "0.11.32", + "version": "0.11.33", "dependencies": { "@domchristie/needles": "^0.0.2-1", "chart.js": "^4.4.1", diff --git a/src/ui/package.json b/src/ui/package.json index 10dd30ad4..ea884ba2c 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -1,6 +1,6 @@ { "name": "reAudioPlayer", - "version": "0.11.32", + "version": "0.11.33", "scripts": { "dev": "vite", "preview": "vite preview --port 8080", diff --git a/src/ui/src/components/CollectionHeader.vue b/src/ui/src/components/CollectionHeader.vue index ac501dff0..86379650c 100644 --- a/src/ui/src/components/CollectionHeader.vue +++ b/src/ui/src/components/CollectionHeader.vue @@ -14,7 +14,7 @@
Artists
- +
Albums
diff --git a/src/ui/src/components/image/Cover.vue b/src/ui/src/components/image/Cover.vue index e0a49cdcb..179b4c4ca 100644 --- a/src/ui/src/components/image/Cover.vue +++ b/src/ui/src/components/image/Cover.vue @@ -84,5 +84,6 @@ const onLoad = async () => { class="cover rounded-md" @error="onError" @load="onLoad" + lazy /> diff --git a/src/ui/src/components/songContainers/PlaylistEntry.vue b/src/ui/src/components/songContainers/PlaylistEntry.vue index 6b916923e..6d7c5acb2 100644 --- a/src/ui/src/components/songContainers/PlaylistEntry.vue +++ b/src/ui/src/components/songContainers/PlaylistEntry.vue @@ -57,6 +57,11 @@ const props = defineProps({ required: false, default: null, }, + album: { + type: String, + required: false, + default: null, + }, }); const emit = defineEmits(["update"]); @@ -82,6 +87,11 @@ const playSong = async () => { playerStore.loadSong(null, props.index); return; } + if (playlistId.value == "album") { + await playerStore.loadPlaylist("album", props.album); + playerStore.loadSong(null, props.index); + return; + } playerStore.loadSong(playlistId.value, props.index); }; diff --git a/src/ui/src/router/index.js b/src/ui/src/router/index.js index 89490f641..fbe58d473 100644 --- a/src/ui/src/router/index.js +++ b/src/ui/src/router/index.js @@ -109,6 +109,13 @@ const routes = [{ title: "Artist - reAudioPlayer One" } }, +{ + path: '/album/:hash', + component: () => import("@/views/Album.vue"), + meta: { + title: "Album - reAudioPlayer One" + } +}, { path: '/preferences', component: () => import("@/views/preferences/index.vue"), diff --git a/src/ui/src/store/player.ts b/src/ui/src/store/player.ts index 3315d9db2..3dffa338a 100644 --- a/src/ui/src/store/player.ts +++ b/src/ui/src/store/player.ts @@ -212,7 +212,7 @@ export const usePlayerStore = defineStore({ id: playlistId as any, } as any; - if (playlistId === "track") { + if (["track", "album"].includes(playlistId)) { body.type = playlistId; body.id = id; } diff --git a/src/ui/src/views/Album.vue b/src/ui/src/views/Album.vue new file mode 100644 index 000000000..eacf1600b --- /dev/null +++ b/src/ui/src/views/Album.vue @@ -0,0 +1,222 @@ + + + + + + + + diff --git a/src/ui/src/views/Collection/Albums.vue b/src/ui/src/views/Collection/Albums.vue index fd6726838..656acaa0e 100644 --- a/src/ui/src/views/Collection/Albums.vue +++ b/src/ui/src/views/Collection/Albums.vue @@ -7,21 +7,37 @@
- Albums + + +
- diff --git a/src/ui/src/views/Track.vue b/src/ui/src/views/Track.vue index 63c1f94ca..1864b96c1 100644 --- a/src/ui/src/views/Track.vue +++ b/src/ui/src/views/Track.vue @@ -5,7 +5,12 @@ \ No newline at end of file +