Sid Gifari File Manager
🏠 Root
/
home
/
genremedia08
/
musicjukebox.overlookedtracks.com
/
public
/
build
/
assets
/
Editing: web-player-routes-bb2f14ca.js
var M=Object.defineProperty;var L=(e,t,s)=>t in e?M(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var C=(e,t,s)=>(L(e,typeof t!="symbol"?t+"":t,s),s);import{bj as QueryObserver,bk as infiniteQueryBehavior,bl as hasNextPage,bm as hasPreviousPage,bn as parseQueryArgs,bo as useBaseQuery,r as reactExports,bp as hashQueryKey,Z as apiClient,aw as useParams,j as jsxRuntimeExports,c as clsx,E as Button,T as Trans,A as AnimatePresence,o as m,P as opacityAnimation,au as ProgressCircle,bq as getFromLocalStorage,al as cjs,br as createStore,an as immer,s as setInLocalStorage,bs as useStore,W as queryClient,bt as useIsDarkMode,I as IconButton,ax as useNavigate,D as DialogTrigger,bu as useAuth,ao as useQuery,bv as getBootstrapData,V as useMutation,X as toast,m as message,Y as showHttpErrorToast,t as useDialogContext,bw as openDialog,a3 as Link,ap as useLocation,v as Dialog,x as DialogBody,am as create,bx as useCopyClipboard,aX as slugifyString,u as useSettings,p as useTrans,w as DialogHeader,J as DialogFooter,b as useIsMobileMediaQuery,G as TextField,b1 as SmallArtistImage,by as getArtistLink,b2 as ArtistLink,_ as ConfirmationDialog,bz as defaultImage$1,a as createSvgIcon,a0 as IllustratedMessage,L as Skeleton,a4 as CheckIcon,b5 as UserProfileLink,bA as getUserProfileLink,a7 as Tooltip,bB as ContentGrid,b6 as FormattedRelativeTime,bC as $62d8ded9296f3872$export$cfa2225e87938781,a$ as reactDomExports,bD as $e0b6e0b68ec7f50f$export$872b660ac5a1ff98,bE as useThemeSelector,aL as $df56164dff5785e2$export$4338b53315abf666,a5 as Chip,bF as lazyLoader,bG as Helmet,a_ as PageStatus,C as CustomMenu,az as NavLink,Q as ProgressBar,bH as useCustomMenu,bI as CustomMenuItem,i as Item,bJ as Badge,bK as PersonIcon,aD as MenuTrigger,aE as Menu,bL as NavbarAuthMenu,K as KeyboardArrowDownIcon,bM as $03deb23ff14920c4$export$4eaf04e54aa8eed6,R as React,af as __vitePreload,aU as useMediaQuery,H as SearchIcon,aY as ComboBoxForwardRef,ai as Section,bN as useListboxContext,N as Navbar,O as Outlet,aI as memoize,aT as isAbsoluteUrl,bO as ArrowDropDownIcon,a6 as FormattedDate,bP as useLocalStorage,aQ as FullPageLoader,f as useSearchParams,be as PageMetaTags,at as FileUploadProvider,bQ as ImageSelector,$ as $3ef42575df84b30b$export$9d1611c77c2fe928,aB as SiteConfigContext,aA as LinkStyle,l as $9bf71ea28793e738$export$20e40289641fbbb6,bR as getSmallArtistImage,bS as PageErrorMessage,U as StaticPageTitle,bT as PlayableMediaGridSkeleton,a2 as onFormQueryError,d as useController,aa as useValueLists,y as useForm,z as Form,a9 as FormImageSelector,q as FormTextField,bi as NotFoundPage,as as Navigate,bg as useRoutes,bh as AuthRoute}from"./main-1406e08c.js";import{h as hasNextPage$1,r as channelQueryKey,t as channelEndpoint,s as subscribeWithSelector,P as PauseIcon,T as TRACK_MODEL,l as CreatePlaylistDialog,u as usePrevious,v as getPlaylistLink,w as getGenreLink,m as PlaylistLink,n as UpdatePlaylistDialog,x as useUpdatePlaylist,U as USER_MODEL,g as PLAYLIST_MODEL,N as NameWithAvatar,M as MoreVertIcon,y as NameWithAvatarPlaceholder,p as TrendingUpIcon,f as useVirtualizer,z as observeElementOffset,A as useSlider,S as Slider,G as GenreLink,C as CHANNEL_MODEL,k as useChannel,d as downloadFileFromUrl,D as DashboardLayoutContext,i as useSearchResults,a as DashboardLayout,b as DashboardSidenav,c as DashboardContent,I as ImageZoomDialog,e as artistPageTabs,q as ImageIcon,j as useIsTouchDevice,o as useDeleteComments}from"./TrendingUp-bcf21998.js";import{v as isCtrlOrShiftPressed,w as getTrackImageSrc,P as PlayArrowFilledIcon,a as KeyboardArrowRightIcon,b as AddIcon,l as defaultImage,e as Tabs,f as TabList,g as Tab,h as TabPanels,i as TabPanel,x as ShareMediaButtons,o as TrackImage,r as AlbumImage,y as getTrackLink,z as getAlbumLink,B as useArtistPermissions,E as useAlbumPermissions,s as AlbumLink,H as ArtistLinks,I as useDeleteAlbum,J as useTrackPermissions,p as TrackLink,G as GENRE_MODEL,k as ALBUM_MODEL,j as ARTIST_MODEL,n as TableContext,T as Table,q as FormattedDuration,L as TableRow,A as Avatar,t as themeValueToHex,W as WAVE_WIDTH,M as WAVE_HEIGHT,F as FormattedNumber,N as ShareIcon,K as KeyboardArrowLeftIcon,d as dotObject,O as usePrimaryArtistForCurrentUser,Q as assignAlbumToTracks,R as useSortableTableData,V as useArtist,X as albumLayoutKey,D as DragPreview,u as useSortable,U as UserAvatar,Y as useAlbum,C as ChipList,Z as useTrack,_ as ProfileLinksForm,a0 as useIsTabletMediaQuery}from"./play-arrow-filled-8e87b0ae.js";import{M as MoreHorizIcon}from"./MoreHoriz-16b2a1fa.js";import{K as KeyboardBackspaceIcon,F as FavoriteIcon,a as FavoriteBorderIcon,S as StarIcon,b as ScheduleIcon,R as RepeatIcon,P as PlaylistAddIcon,M as MicIcon,D as DownloadIcon,c as KeyboardArrowUpIcon,A as AlbumIcon,V as ViewAgendaIcon,G as GridViewIcon,d as AudiotrackIcon,B as BookmarkBorderIcon,T as ThumbUpIcon,e as ThumbDownIcon,f as ReplyIcon,C as CommentIcon,g as SortIcon,Q as QueueMusicIcon,h as PlaylistPlayIcon,H as HistoryIcon}from"./History-20a46571.js";import{O as Options,t as tokenize}from"./linkify.es-861b0b2d.js";import{E as EditIcon}from"./Edit-4fa321e0.js";class InfiniteQueryObserver extends QueryObserver{constructor(t,s){super(t,s)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(t,s){super.setOptions({...t,behavior:infiniteQueryBehavior()},s)}getOptimisticResult(t){return t.behavior=infiniteQueryBehavior(),super.getOptimisticResult(t)}fetchNextPage({pageParam:t,...s}={}){return this.fetch({...s,meta:{fetchMore:{direction:"forward",pageParam:t}}})}fetchPreviousPage({pageParam:t,...s}={}){return this.fetch({...s,meta:{fetchMore:{direction:"backward",pageParam:t}}})}createResult(t,s){var n,i,a,o,u,l;const{state:x}=t,c=super.createResult(t,s),{isFetching:p,isRefetching:j}=c,g=p&&((n=x.fetchMeta)==null||(i=n.fetchMore)==null?void 0:i.direction)==="forward",R=p&&((a=x.fetchMeta)==null||(o=a.fetchMore)==null?void 0:o.direction)==="backward";return{...c,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:hasNextPage(s,(u=x.data)==null?void 0:u.pages),hasPreviousPage:hasPreviousPage(s,(l=x.data)==null?void 0:l.pages),isFetchingNextPage:g,isFetchingPreviousPage:R,isRefetching:j&&!g&&!R}}}function useInfiniteQuery(e,t,s){const n=parseQueryArgs(e,t,s);return useBaseQuery(n,InfiniteQueryObserver)}function buildQueryKey({queryKey:e,defaultOrderDir:t,defaultOrderBy:s,queryParams:n},i,a=""){return i.orderBy||(i.orderBy=s),i.orderDir||(i.orderDir=t),[...e,i,a,n]}function useInfiniteData(e){var E,b,v,T;const{initialPage:t,endpoint:s,defaultOrderBy:n,defaultOrderDir:i,queryParams:a,paginate:o,transformResponse:u,willSortOrFilter:l=!1}=e,[x,c]=reactExports.useState(""),[p,j]=reactExports.useState({orderBy:n,orderDir:i}),g=buildQueryKey(e,p,x),R=reactExports.useRef(hashQueryKey(g)).current,h=useInfiniteQuery({keepPreviousData:l,queryKey:g,queryFn:({pageParam:k})=>{const P={...a,perPage:(t==null?void 0:t.per_page)||(a==null?void 0:a.perPage),query:x,paginate:o,...p};return o==="cursor"?P.cursor=k:P.page=k||1,fetchData(s,P,u)},getNextPageParam:k=>{if(hasNextPage$1(k.pagination))return"next_cursor"in k.pagination?k.pagination.next_cursor:k.pagination.current_page+1},initialData:()=>{if(!(!t||hashQueryKey(g)!==R))return{pageParams:[void 0,1],pages:[{pagination:t}]}}}),y=reactExports.useMemo(()=>{var k;return((k=h.data)==null?void 0:k.pages.flatMap(P=>P.pagination.data))||[]},[(E=h.data)==null?void 0:E.pages]),d=(b=h.data)==null?void 0:b.pages[0].pagination,f=d&&"total"in d&&d.total?d.total:null;return{...h,items:y,totalItems:f,noResults:((T=(v=h.data)==null?void 0:v.pages)==null?void 0:T[0].pagination.data.length)===0,sortDescriptor:p,setSortDescriptor:j,searchQuery:x,setSearchQuery:c}}function fetchData(e,t,s){return apiClient.get(e,{params:t}).then(n=>s?s(n.data):n.data)}function usePaginatedChannelContent(e){const{filter:t}=useParams(),[s="popularity",n="desc"]=(e.config.contentOrder||"").split(":");return useInfiniteData({initialPage:e.content,queryKey:channelQueryKey(e.id,{filter:t||""}),endpoint:channelEndpoint(e.id),defaultOrderBy:s,defaultOrderDir:n,paginate:"simple",queryParams:{returnContentOnly:"true",filter:t||""}})}function InfiniteScrollSentinel({query:{isInitialLoading:e,fetchNextPage:t,isFetchingNextPage:s,hasNextPage:n},children:i,loaderMarginTop:a="mt-24",style:o,className:u,variant:l="infiniteScroll",loadMoreExtraContent:x,size:c="md"}){const p=reactExports.useRef(null),j=s||e,[g,R]=reactExports.useState(0),h=l==="loadMore"&&g<3?"loadMore":"infiniteScroll";reactExports.useEffect(()=>{const d=p.current;if(!d||h==="loadMore")return;const f=new IntersectionObserver(([E])=>{E.isIntersecting&&n&&!j&&t()});return f.observe(d),()=>{f.unobserve(d)}},[t,n,j,h]);let y;return i?y=s?i:null:h==="loadMore"?y=!e&&n&&jsxRuntimeExports.jsxs("div",{className:clsx("flex items-center gap-8",a),children:[x,jsxRuntimeExports.jsx(Button,{size:c==="md"?"sm":"xs",className:clsx(c==="sm"?"min-h-24 min-w-96":"min-h-36 min-w-112"),variant:"outline",color:"primary",onClick:()=>{t(),R(g+1)},disabled:j,children:g>=2&&!s?jsxRuntimeExports.jsx(Trans,{message:"Load all"}):jsxRuntimeExports.jsx(Trans,{message:"Show more"})})]}):y=jsxRuntimeExports.jsx(AnimatePresence,{children:s&&jsxRuntimeExports.jsx(m.div,{className:clsx("flex justify-center w-full",a),...opacityAnimation,children:jsxRuntimeExports.jsx(ProgressCircle,{size:c,isIndeterminate:!0,"aria-label":"loading"})})}),jsxRuntimeExports.jsxs("div",{style:o,className:clsx("w-full",u,n&&"min-h-36"),role:"presentation",children:[jsxRuntimeExports.jsx("div",{ref:p,"aria-hidden":!0}),y]})}function shuffleArray(e,t=!1){let s=t?e.shift():null,n=e.length,i,a;for(;n!==0;)a=Math.floor(Math.random()*n),n-=1,i=e[n],e[n]=e[a],e[a]=i;return s&&e.unshift(s),[...e]}function getPlayerStateFromLocalStorage(e,t){const s=(t==null?void 0:t.defaultVolume)||30;return{state:{muted:getFromLocalStorage(`player.${e}.muted`)??!1,repeat:getFromLocalStorage(`player.${e}.repeat`)??"all",shuffling:getFromLocalStorage(`player.${e}.shuffling`)??!1,volume:getFromLocalStorage(`player.${e}.volume`)??s},queue:getFromLocalStorage(`player.${e}.queue`,[]),cuedMediaId:getFromLocalStorage(`player.${e}.cuedMediaId`)}}function prependToArrayAtIndex(e,t,s=0){const n=[...e],i=n.splice(s+1);return[...n,...t,...i]}function resetMediaSession(){"mediaSession"in navigator&&(["play","pause","previoustrack","nexttrack","stop","seekbackward","seekforward","seekto"].forEach(t=>navigator.mediaSession.setActionHandler(t,null)),navigator.mediaSession.metadata=null,navigator.mediaSession.playbackState="none")}function playerQueue(e){const t=()=>e().cuedMedia&&e().shuffledQueue.findIndex(l=>{var x;return l.id===((x=e().cuedMedia)==null?void 0:x.id)})||0;return{getPointer:t,getCurrent:()=>e().shuffledQueue[t()],getFirst:()=>e().shuffledQueue[0],getLast:()=>e().shuffledQueue[e().shuffledQueue.length-1],getNext:()=>e().shuffledQueue[t()+1],getPrevious:()=>e().shuffledQueue[t()-1],isLast:()=>t()===e().originalQueue.length-1}}function handlePlayerKeybinds(e,t){var s;["input","textarea"].includes((s=e.target)==null?void 0:s.tagName.toLowerCase())||((e.key===" "||e.key==="k")&&(e.preventDefault(),t().isPlaying?t().pause():t().play()),e.key==="ArrowRight"&&isCtrlOrShiftPressed(e)&&(e.preventDefault(),t().playNext()),e.key==="ArrowLeft"&&isCtrlOrShiftPressed(e)&&(e.preventDefault(),t().playPrevious()))}function initPlayerMediaSession(e,t){var s;if("mediaSession"in navigator){const n={play:()=>e().play(),pause:()=>e().pause(),previoustrack:()=>e().playPrevious(),nexttrack:()=>e().playNext(),stop:()=>e().stop(),seekbackward:()=>e().seek(e().getCurrentTime()-10),seekforward:()=>e().seek(e().getCurrentTime()+10),seekto:a=>e().seek(a.seekTime||0)};for(const a in n)try{navigator.mediaSession.setActionHandler(a,n[a])}catch{}const i=e().cuedMedia;i&&((s=t.setMediaSessionMetadata)==null||s.call(t,i))}}function isSameMedia(e,t){return!e||!t?!1:e.id===t.id&&e.groupId===t.groupId}class ScreenOrientation{constructor(){C(this,"currentLock")}async lock(t="landscape"){if(!(!this.canOrientScreen()||this.currentLock))try{await screen.orientation.lock(t),this.currentLock=t}catch{}}async unlock(){!this.canOrientScreen()||!this.currentLock||await screen.orientation.unlock()}canOrientScreen(){return screen.orientation!=null&&!!screen.orientation.lock&&!!screen.orientation.unlock}}const IS_CLIENT=typeof window<"u";var w;IS_CLIENT&&((w=window.navigator)==null||w.userAgent.toLowerCase());var I;const IS_IPHONE=IS_CLIENT&&/(iPhone|iPod)/gi.test((I=window.navigator)==null?void 0:I.platform);var key={fullscreenEnabled:0,fullscreenElement:1,requestFullscreen:2,exitFullscreen:3,fullscreenchange:4,fullscreenerror:5,fullscreen:6},webkit=["webkitFullscreenEnabled","webkitFullscreenElement","webkitRequestFullscreen","webkitExitFullscreen","webkitfullscreenchange","webkitfullscreenerror","-webkit-full-screen"],moz=["mozFullScreenEnabled","mozFullScreenElement","mozRequestFullScreen","mozCancelFullScreen","mozfullscreenchange","mozfullscreenerror","-moz-full-screen"],ms=["msFullscreenEnabled","msFullscreenElement","msRequestFullscreen","msExitFullscreen","MSFullscreenChange","MSFullscreenError","-ms-fullscreen"],document$1=typeof window<"u"&&typeof window.document<"u"?window.document:{},vendor="fullscreenEnabled"in document$1&&Object.keys(key)||webkit[0]in document$1&&webkit||moz[0]in document$1&&moz||ms[0]in document$1&&ms||[],fscreen={requestFullscreen:function(e){return e[vendor[key.requestFullscreen]]()},requestFullscreenFunction:function(e){return e[vendor[key.requestFullscreen]]},get exitFullscreen(){return document$1[vendor[key.exitFullscreen]].bind(document$1)},get fullscreenPseudoClass(){return":"+vendor[key.fullscreen]},addEventListener:function(e,t,s){return document$1.addEventListener(vendor[key[e]],t,s)},removeEventListener:function(e,t,s){return document$1.removeEventListener(vendor[key[e]],t,s)},get fullscreenEnabled(){return!!document$1[vendor[key.fullscreenEnabled]]},set fullscreenEnabled(e){},get fullscreenElement(){return document$1[vendor[key.fullscreenElement]]},set fullscreenElement(e){},get onfullscreenchange(){return document$1[("on"+vendor[key.fullscreenchange]).toLowerCase()]},set onfullscreenchange(e){return document$1[("on"+vendor[key.fullscreenchange]).toLowerCase()]=e},get onfullscreenerror(){return document$1[("on"+vendor[key.fullscreenerror]).toLowerCase()]},set onfullscreenerror(e){return document$1[("on"+vendor[key.fullscreenerror]).toLowerCase()]=e}};const fscreen$1=fscreen;function createNativeFullscreenAdapter(e,t){return e=e.closest(".fullscreen-host")??e,{isFullscreen:()=>{if(fscreen$1.fullscreenElement===e)return!0;try{return e.matches(fscreen$1.fullscreenPseudoClass)}catch{return!1}},canFullScreen:()=>fscreen$1.fullscreenEnabled,enter:()=>fscreen$1.requestFullscreen(e),exit:()=>fscreen$1.exitFullscreen(),bindEvents:()=>{fscreen$1.addEventListener("fullscreenchange",t),fscreen$1.addEventListener("fullscreenerror",t)},unbindEvents:()=>{fscreen$1.removeEventListener("fullscreenchange",t),fscreen$1.removeEventListener("fullscreenerror",t)}}}function createIphoneFullscreenAdapter(e,t){return{isFullscreen:()=>e.webkitPresentationMode==="fullscreen",canFullScreen:()=>IS_IPHONE&&typeof e.webkitSetPresentationMode=="function"&&(e.webkitSupportsFullscreen??!1),enter:()=>{var s;return(s=e.webkitSetPresentationMode)==null?void 0:s.call(e,"fullscreen")},exit:()=>{var s;return(s=e.webkitSetPresentationMode)==null?void 0:s.call(e,"inline")},bindEvents:()=>{e.removeEventListener("webkitpresentationmodechanged",t)},unbindEvents:()=>{e.addEventListener("webkitpresentationmodechanged",t)}}}const iPhoneProviderBlacklist=["youtube"],createFullscreenSlice=(e,t)=>{let s;const n=new ScreenOrientation;let i;const a=async()=>{const u=i==null?void 0:i.isFullscreen();u?n.lock():n.unlock(),e({isFullscreen:u})},o=()=>IS_IPHONE&&iPhoneProviderBlacklist.includes(t().providerName)?!1:(i==null?void 0:i.canFullScreen())??!1;return{isFullscreen:!1,canFullscreen:!1,enterFullscreen:()=>{if(!(!o()||i!=null&&i.isFullscreen()))return t().isPip&&t().exitPip(),i==null?void 0:i.enter()},exitFullscreen:()=>{if(i!=null&&i.isFullscreen())return i.exit()},toggleFullscreen:()=>{t().isFullscreen?t().exitFullscreen():t().enterFullscreen()},initFullscreen:()=>{s=t().subscribe({providerReady:({el:u})=>{i==null||i.unbindEvents(),t().isFullscreen&&(i==null||i.exit()),i=IS_IPHONE?createIphoneFullscreenAdapter(u,a):createNativeFullscreenAdapter(u,a);const l=o();e({canFullscreen:l}),l&&i.bindEvents()}})},destroyFullscreen:()=>{t().exitFullscreen(),s==null||s()}}},createChromePipAdapter=(e,t)=>({isSupported:()=>canUsePiPInChrome(),isPip:()=>e===document.pictureInPictureElement,enter:()=>{if(canUsePiPInChrome())return e.requestPictureInPicture()},exit:()=>{if(canUsePiPInChrome())return document.exitPictureInPicture()},bindEvents:()=>{canUsePiPInChrome()&&(e.addEventListener("enterpictureinpicture",t),e.addEventListener("leavepictureinpicture",t))},unbindEvents:()=>{canUsePiPInChrome()&&(e.removeEventListener("enterpictureinpicture",t),e.removeEventListener("leavepictureinpicture",t))}});let _canUsePiPInChrome;const canUsePiPInChrome=()=>{if(!IS_CLIENT)return!1;if(_canUsePiPInChrome==null){const e=document.createElement("video");_canUsePiPInChrome=!!document.pictureInPictureEnabled&&!e.disablePictureInPicture}return _canUsePiPInChrome},createSafariPipAdapter=(e,t)=>({isSupported:()=>canUsePiPInSafari(),isPip:()=>e.webkitPresentationMode==="picture-in-picture",enter:()=>{var s;if(canUsePiPInSafari())return(s=e.webkitSetPresentationMode)==null?void 0:s.call(e,"picture-in-picture")},exit:()=>{var s;if(canUsePiPInSafari())return(s=e.webkitSetPresentationMode)==null?void 0:s.call(e,"inline")},bindEvents:()=>{canUsePiPInSafari()&&e.addEventListener("webkitpresentationmodechanged",t)},unbindEvents:()=>{canUsePiPInSafari()&&e.removeEventListener("webkitpresentationmodechanged",t)}});let _canUsePiPInSafari;const canUsePiPInSafari=()=>{if(!IS_CLIENT)return!1;const e=document.createElement("video");return _canUsePiPInSafari==null&&(_canUsePiPInSafari=!!e.webkitSupportsPresentationMode&&!!e.webkitSetPresentationMode&&!IS_IPHONE),_canUsePiPInSafari},adapterFactories=[createChromePipAdapter,createSafariPipAdapter],createPipSlice=(e,t)=>{let s,n=[];const i=()=>{e({isPip:n.some(o=>o.isPip())})},a=()=>t().providerName!=="htmlVideo"?!1:n.some(o=>o.isSupported());return{isPip:!1,canPip:!1,enterPip:async()=>{var o;t().isPip||!a()||await((o=n.find(u=>u.isSupported()))==null?void 0:o.enter())},exitPip:async()=>{var o;t().isPip&&await((o=n.find(u=>u.isSupported()))==null?void 0:o.exit())},togglePip:()=>{t().isPip?t().exitPip():t().enterPip()},initPip:()=>{s=t().subscribe({providerReady:({el:o})=>{n.every(l=>l.unbindEvents()),t().isPip&&n.every(l=>l.exit()),n=adapterFactories.map(l=>l(o,i));const u=a();u&&n.every(l=>l.bindEvents()),e({canPip:u})}})},destroyPip:()=>{t().exitPip(),s==null||s()}}},createPlayerStore=(e,t)=>{const s=cjs(getPlayerStateFromLocalStorage(e,t),t.initialData||{}),n=(i,a)=>{setInLocalStorage(`player.${e}.${i}`,a)};return createStore()(subscribeWithSelector(immer((i,a,o)=>{var j,g,R,h,y;const u=new Set,l={play:()=>{i(d=>{d.isPlaying=!0,d.playbackStarted=!0})},pause:()=>{i(d=>{d.isPlaying=!1,d.controlsVisible=!0})},error:()=>{i(d=>{d.isPlaying=!1})},durationChange:d=>{i({mediaDuration:d.duration})},streamTypeChange:d=>{i({streamType:d.streamType})},buffered:d=>{},playbackRateChange:d=>{i({playbackRate:d.rate})},playbackRates:({rates:d})=>{i({playbackRates:d})},playbackQualities:({qualities:d})=>{i({playbackQualities:d})},playbackQualityChange:({quality:d})=>{i({playbackQuality:d})},textTracks:({tracks:d})=>{i({textTracks:d})},currentTextTrackChange:({trackId:d})=>{i({currentTextTrack:d})},textTrackVisibilityChange:({isVisible:d})=>{i({textTrackIsVisible:d})},buffering:({isBuffering:d})=>{i({isBuffering:d})},playbackEnd:async()=>{const d=a().cuedMedia;if(!a().isSeeking){if(x.isLast()&&t.loadMoreMediaItems){const f=await t.loadMoreMediaItems(d);f!=null&&f.length&&a().appendToQueue(f)}a().playNext()}},posterLoaded:({url:d})=>{i({posterUrl:d})},providerReady:()=>{const d=a().providerApi;d&&(d.setVolume(a().volume),d.setMuted(a().muted),t.autoPlay&&d.play(),i({providerReady:!0}))}},x=playerQueue(a),c=d=>{handlePlayerKeybinds(d,a)},p=s.queue||[];return{options:t,...createFullscreenSlice(i,a),...createPipSlice(i,a),originalQueue:p,shuffledQueue:(j=s.state)!=null&&j.shuffling?shuffleArray(p):p,isPlaying:!1,isBuffering:!1,streamType:null,playbackStarted:!1,providerReady:!1,pauseWhileSeeking:t.pauseWhileSeeking??!0,isSeeking:!1,setIsSeeking:d=>{i({isSeeking:d})},controlsVisible:!0,setControlsVisible:d=>{i(f=>{f.controlsVisible=d})},volume:((g=s.state)==null?void 0:g.volume)??30,setVolume:d=>{var f;(f=a().providerApi)==null||f.setVolume(d),i(E=>{E.volume=d}),n("volume",d)},muted:((R=s.state)==null?void 0:R.muted)??!1,setMuted:d=>{var f;(f=a().providerApi)==null||f.setMuted(d),i(E=>{E.muted=d}),n("muted",d)},playbackRates:[],playbackRate:1,setPlaybackRate:d=>{var f;(f=a().providerApi)==null||f.setPlaybackRate(d)},playbackQuality:"auto",setPlaybackQuality:d=>{var f,E;(E=(f=a().providerApi)==null?void 0:f.setPlaybackQuality)==null||E.call(f,d)},playbackQualities:[],repeat:((h=s.state)==null?void 0:h.repeat)??"all",toggleRepeatMode:()=>{let d="all";const f=a().repeat;f==="all"?d="one":f==="one"&&(d=!1),i({repeat:d}),n("repeat",d)},shuffling:((y=s.state)==null?void 0:y.shuffling)??!1,toggleShuffling:()=>{let d=[];a().shuffling?d=a().originalQueue:d=shuffleArray([...a().shuffledQueue]),i(f=>{f.shuffling=!f.shuffling,f.shuffledQueue=d})},mediaDuration:0,seek:d=>{var E;const f=`${d}`;f.startsWith("+")?d=a().getCurrentTime()+Number(d):f.startsWith("-")?d=a().getCurrentTime()-Number(f.replace("-","")):d=Number(d),(E=a().providerApi)==null||E.seek(d),a().emit("seek",{time:d})},getCurrentTime:()=>{var d;return((d=a().providerApi)==null?void 0:d.getCurrentTime())||0},play:async d=>{var f,E;if(d?await a().cue(d):d=a().cuedMedia||x.getCurrent(),!d){a().stop();return}await((f=t.onBeforePlay)==null?void 0:f.call(t)),await((E=a().providerApi)==null?void 0:E.play())},pause:()=>{var d;(d=a().providerApi)==null||d.pause()},stop:()=>{a().isPlaying&&(a().pause(),a().seek(0))},playNext:async()=>{a().stop();let d=x.getCurrent();a().repeat==="all"&&x.isLast()?d=x.getFirst():a().repeat!=="one"&&(d=x.getNext()),d?await a().play(d):(a().seek(0),a().play())},playPrevious:async()=>{a().stop();let d=x.getCurrent();a().repeat==="all"&&x.getPointer()===0?d=x.getLast():a().repeat!=="one"&&(d=x.getPrevious()),d?await a().play(d):(a().seek(0),a().play())},cue:async d=>{if(!isSameMedia(d,a().cuedMedia))return a().emit("beforeCued",{previous:a().cuedMedia}),new Promise((f,E)=>{var k;const b=a().providerName,v=setTimeout(()=>{T(),f()},3e3),T=a().subscribe({cued:()=>{clearTimeout(v),T(),f()},error:()=>{clearTimeout(v),T(),E()}});i({cuedMedia:d,posterUrl:d.poster,providerName:d.provider,providerReady:b===d.provider,streamType:"streamType"in d?d.streamType:null}),d&&((k=t.setMediaSessionMetadata)==null||k.call(t,d)),t.persistQueueInLocalStorage&&n("cuedMediaId",d.id)})},async overrideQueue(d,f=0){if(!(d!=null&&d.length))return;const E=[...d];i(v=>{v.shuffledQueue=a().shuffling?shuffleArray(E,!0):E,v.originalQueue=E}),t.persistQueueInLocalStorage&&n("queue",a().originalQueue.slice(0,15));const b=f>-1?d[f]:x.getCurrent();if(b)return a().cue(b)},appendToQueue:(d,f=!0)=>{const E=a().shuffling?shuffleArray([...d]):[...d],b=f?x.getPointer():0;i(v=>{v.shuffledQueue=prependToArrayAtIndex(v.shuffledQueue,E,b),v.originalQueue=prependToArrayAtIndex(v.originalQueue,d,b)}),t.persistQueueInLocalStorage&&n("queue",a().originalQueue.slice(0,15))},removeFromQueue:d=>{i(f=>{f.shuffledQueue=f.shuffledQueue.filter(E=>!d.find(b=>isSameMedia(b,E))),f.originalQueue=f.originalQueue.filter(E=>!d.find(b=>isSameMedia(b,E)))}),t.persistQueueInLocalStorage&&n("queue",a().originalQueue.slice(0,15))},textTracks:[],currentTextTrack:-1,setCurrentTextTrack:d=>{var f,E;(E=(f=a().providerApi)==null?void 0:f.setCurrentTextTrack)==null||E.call(f,d)},textTrackIsVisible:!1,setTextTrackVisibility:d=>{var f,E;(E=(f=a().providerApi)==null?void 0:f.setTextTrackVisibility)==null||E.call(f,d)},destroy:()=>{var d;a().destroyFullscreen(),a().destroyPip(),(d=t==null?void 0:t.onDestroy)==null||d.call(t),resetMediaSession(),u.clear(),document.removeEventListener("keydown",c)},init:async()=>{var E,b,v;a().initFullscreen(),u.add(l),t.listeners&&u.add(t.listeners);const d=s.cuedMediaId||((b=(E=s.queue)==null?void 0:E[0])==null?void 0:b.id),f=(v=s.queue)==null?void 0:v.find(T=>T.id===d);f&&await a().cue(f),initPlayerMediaSession(a,t),document.addEventListener("keydown",c)},subscribe:d=>(u.add(d),()=>u.delete(d)),emit(d,f){u.forEach(E=>{var b;return(b=E[d])==null?void 0:b.call(E,{state:a(),...f})})}}})))},PlayerStoreContext=reactExports.createContext(null);function PlayerContext({children:e,id:t,options:s}){const[n]=reactExports.useState(()=>createPlayerStore(t,s));return jsxRuntimeExports.jsx(PlayerStoreContext.Provider,{value:n,children:e})}const usePlayerStore=(e,t)=>{const s=reactExports.useContext(PlayerStoreContext);return useStore(s,e,t)};function usePlayerActions(){const e=reactExports.useContext(PlayerStoreContext);return reactExports.useMemo(()=>{const t=e.getState(),s=async(n,i)=>(t.stop(),await t.overrideQueue(n,i),t.play());return{play:t.play,playNext:t.playNext,playPrevious:t.playPrevious,pause:t.pause,subscribe:t.subscribe,emit:t.emit,getCurrentTime:t.getCurrentTime,seek:t.seek,toggleRepeatMode:t.toggleRepeatMode,toggleShuffling:t.toggleShuffling,getState:e.getState,setVolume:t.setVolume,setMuted:t.setMuted,appendToQueue:t.appendToQueue,removeFromQueue:t.removeFromQueue,enterFullscreen:t.enterFullscreen,exitFullscreen:t.exitFullscreen,toggleFullscreen:t.toggleFullscreen,enterPip:t.enterPip,exitPip:t.exitPip,setTextTrackVisibility:t.setTextTrackVisibility,setCurrentTextTrack:t.setCurrentTextTrack,setIsSeeking:t.setIsSeeking,setControlsVisible:t.setControlsVisible,cue:t.cue,overrideQueueAndPlay:s,overrideQueue:t.overrideQueue,setPlaybackRate:t.setPlaybackRate,setPlaybackQuality:t.setPlaybackQuality}},[e])}async function loadMediaItemTracks(e,t){const s={queryKey:["player/tracks",{queueId:e,trackId:t==null?void 0:t.id}],queryFn:async()=>loadTracks(e,t),staleTime:1/0};try{const n=queryClient.getQueryData(s.queryKey)??await queryClient.fetchQuery(s);return(n==null?void 0:n.tracks)||[]}catch{return[]}}function loadTracks(e,t){return apiClient.post("player/tracks",{queueId:e,lastTrack:t}).then(s=>s.data)}const hlsRegex=/\.(m3u8)($|\?)/i,dashRegex=/\.(mpd)($|\?)/i,audioRegex=/\.(m4a|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\?)/i,youtubeUrlRegex=/(?:youtu\.be|youtube|youtube\.com|youtube-nocookie\.com)\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|)((?:\w|-){11})/,youtubeIdRegex=/^((?:\w|-){11})$/;function guessPlayerProvider(e){return youtubeUrlRegex.test(e)||youtubeIdRegex.test(e)?"youtube":audioRegex.test(e)?"htmlAudio":hlsRegex.test(e)?"hls":dashRegex.test(e)?"dash":"htmlVideo"}function trackToMediaItem(e,t){const s=e.src?guessPlayerProvider(e.src):"youtube";return!e.src||s==="youtube"?{id:e.id,provider:"youtube",meta:e,src:e.src?e.src:"resolve",groupId:t}:{id:e.id,src:e.src,provider:s,meta:e,poster:getTrackImageSrc(e),groupId:t}}function tracksToMediaItems(e,t,s){return e.map(n=>(s&&!n.album&&(n={...n,album:{...s,tracks:void 0}}),trackToMediaItem(n)))}const white=""+new URL("equalizer-white-29f31645.gif",import.meta.url).href,black=""+new URL("equalizer-black-498817c4.gif",import.meta.url).href;function EqualizerImage({className:e,color:t}){const s=useIsDarkMode();return t||(t=s?"white":"black"),jsxRuntimeExports.jsx("div",{className:clsx("flex items-center justify-center w-20 h-20",e),children:jsxRuntimeExports.jsx("img",{src:t==="white"?white:black,alt:"",className:"w-12 h-12","aria-hidden":!0})})}function PlaybackToggleButton({queueId:e,track:t,tracks:s,radius:n,variant:i,color:a,disabled:o,className:u,buttonType:l,equalizerColor:x=l==="text"?"white":"black",size:c}){const[p,j]=reactExports.useState(!1),g=usePlayerStore(E=>!!(E.cuedMedia&&e&&E.cuedMedia.groupId===e||E.cuedMedia&&t&&E.cuedMedia.meta.id===t.id)),h=usePlayerStore(E=>E.isPlaying)&&g,y=usePlayerActions(),d=h?p?jsxRuntimeExports.jsx(PauseIcon,{}):jsxRuntimeExports.jsx(EqualizerImage,{color:x}):jsxRuntimeExports.jsx(PlayArrowFilledIcon,{}),f={disabled:o,onPointerEnter:()=>{j(!0)},onPointerLeave:()=>{j(!1)},onClick:async()=>{if(h)y.pause();else if(g)await y.play();else{let E=[],b=0;s?(E=[...s],b=t?s.findIndex(v=>v.id===t.id):0):t?E=[t]:E=await loadMediaItemTracks(e),E.length&&await y.overrideQueueAndPlay(E.map(v=>trackToMediaItem(v,e)),b)}}};return l==="icon"?jsxRuntimeExports.jsx(IconButton,{...f,variant:i,color:a,radius:n,size:c,className:u,children:d}):jsxRuntimeExports.jsx(Button,{...f,variant:i||"flat",color:a||"primary",radius:n||"rounded-full",startIcon:d,size:c,className:u,children:h?jsxRuntimeExports.jsx(Trans,{message:"Pause"}):jsxRuntimeExports.jsx(Trans,{message:"Play"})})}function queueGroupId(e,t="*",s){let n=`${e.model_type}.${e.id}.${t}`;return s!=null&&s.orderBy&&(s!=null&&s.orderDir)&&(n+=`.${s.orderBy.replace(".","^")}|${s.orderDir}`),n}function PlayableGridItem({image:e,title:t,subtitle:s,model:n,newQueue:i,link:a,likeButton:o,contextDialog:u,radius:l="rounded"}){const x=useNavigate();return jsxRuntimeExports.jsxs("div",{className:"snap-start snap-normal",children:[jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",placement:"bottom-start",triggerOnContextMenu:!0,children:[jsxRuntimeExports.jsxs("div",{className:"w-full relative isolate group",children:[jsxRuntimeExports.jsx("div",{className:"w-full aspect-square this",onClick:()=>x(a),children:reactExports.cloneElement(e,{size:"w-full h-full",className:`${l} shadow-md z-10`})}),jsxRuntimeExports.jsx("div",{className:`absolute top-0 left-0 w-full h-full bg-gradient-to-b from-transparent to-black/75 ${l} z-20 opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none`},"bg-overlay"),jsxRuntimeExports.jsxs("div",{className:clsx("absolute bottom-0 left-0 w-full p-12 z-30 flex items-center gap-14",l==="rounded-full"&&"justify-center top-0 right-0 pointer-events-none"),children:[jsxRuntimeExports.jsx(PlaybackToggleButton,{size:l==="rounded-full"?"lg":"md",radius:"rounded-full",className:clsx("shadow-md pointer-events-auto",l==="rounded-full"&&"invisible group-hover:visible"),variant:"flat",color:"white",buttonType:"icon",track:n.model_type===TRACK_MODEL?n:void 0,tracks:i,queueId:queueGroupId(n)}),l!=="rounded-full"&&jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",children:[jsxRuntimeExports.jsx(IconButton,{className:"invisible md:group-hover:visible",color:"white",children:jsxRuntimeExports.jsx(MoreHorizIcon,{})}),u]}),l!=="rounded-full"&&o&&reactExports.cloneElement(o,{className:"invisible md:group-hover:visible ml-auto",size:"md",color:"white"})]})]}),u]}),jsxRuntimeExports.jsxs("div",{className:clsx(l==="rounded-full"&&"text-center","text-sm mt-12"),children:[jsxRuntimeExports.jsx("div",{className:"overflow-hidden overflow-ellipsis",children:t}),jsxRuntimeExports.jsx("div",{className:"text-muted mt-4 whitespace-nowrap overflow-hidden overflow-ellipsis",children:s})]})]})}function useAuthUserPlaylists(){const{isLoggedIn:e,user:t}=useAuth();return useQuery(["playlists","library",t==null?void 0:t.id,"compact"],()=>fetchPlaylists(),{enabled:e,initialData:()=>({playlists:getBootstrapData().playlists||[]})})}function fetchPlaylists(){return apiClient.get("users/me/playlists",{params:{perPage:30,orderBy:"updated_at",orderDir:"desc"}}).then(e=>({playlists:e.data.pagination.data}))}function useAddTracksToPlaylist(){return useMutation(e=>addTracks(e),{onSuccess:(e,{tracks:t})=>{toast(message("Added [one 1 track|other :count tracks] to playlist",{values:{count:t.length}})),queryClient.invalidateQueries(["playlists",e.playlist.id]),queryClient.invalidateQueries(["tracks","playlist",e.playlist.id])},onError:e=>showHttpErrorToast(e)})}function addTracks(e){const t={ids:e.tracks.map(s=>s.id)};return apiClient.post(`playlists/${e.playlistId}/tracks/add`,t).then(s=>s.data)}function useAuthClickCapture(){const e=useDialogContext(),{isLoggedIn:t}=useAuth(),s=useNavigate();return reactExports.useCallback(n=>{t||(n.preventDefault(),n.stopPropagation(),e&&e.close(),s("/login"))},[s,t,e])}function PlaylistPanel(){const{data:e}=useAuthUserPlaylists(),{user:t}=useAuth(),{close:s}=useDialogContext(),{loadTracks:n,setPlaylistPanelIsActive:i}=reactExports.useContext(ContextMenuLayoutState),a=useAddTracksToPlaylist(),o=reactExports.useMemo(()=>e.playlists.filter(u=>u.owner_id===(t==null?void 0:t.id)||u.collaborative),[e,t]);return jsxRuntimeExports.jsxs(m.div,{initial:{x:"100%",opacity:0},animate:{x:0,opacity:1},exit:{x:"-100%",opacity:0},transition:{type:"tween",duration:.14},children:[jsxRuntimeExports.jsx("div",{className:"border-b pb-10 my-10 px-10",children:jsxRuntimeExports.jsx(Button,{startIcon:jsxRuntimeExports.jsx(KeyboardBackspaceIcon,{}),onClick:()=>i(!1),children:jsxRuntimeExports.jsx(Trans,{message:"Back"})})}),jsxRuntimeExports.jsxs("ul",{className:"overflow-y-auto overflow-x-hidden max-h-350",children:[jsxRuntimeExports.jsx(ContextMenuButton,{startIcon:jsxRuntimeExports.jsx(AddIcon,{}),onClick:async()=>{s();const[u,l]=await Promise.all([openDialog(CreatePlaylistDialog),n()]);l.length&&u&&a.mutate({playlistId:u.id,tracks:l})},className:"text-primary",children:jsxRuntimeExports.jsx(Trans,{message:"New playlist"})}),o.map(u=>jsxRuntimeExports.jsx(ContextMenuButton,{onClick:async()=>{s();const l=await n();l!=null&&l.length&&!a.isLoading?a.mutate({playlistId:u.id,tracks:l}):toast(message("This item does not have tracks yet"))},children:u.name},u.id))]})]})}function PlaylistPanelButton(){const e=useAuthClickCapture(),{playlistPanelIsActive:t,setPlaylistPanelIsActive:s}=reactExports.useContext(ContextMenuLayoutState);return jsxRuntimeExports.jsx(ContextMenuButton,{endIcon:jsxRuntimeExports.jsx(KeyboardArrowRightIcon,{}),onClickCapture:e,onClick:()=>{s(!t)},children:jsxRuntimeExports.jsx(Trans,{message:"Add to playlist"})})}const ContextMenuLayoutState=reactExports.createContext(null);function ContextDialogLayout({image:e,title:t,description:s,children:n,loadTracks:i}){const[a,o]=reactExports.useState(!1),{close:u}=useDialogContext(),l=reactExports.useMemo(()=>({playlistPanelIsActive:a,setPlaylistPanelIsActive:o,loadTracks:i}),[a,i]),{pathname:x}=useLocation(),c=usePrevious(x);reactExports.useEffect(()=>{c&&c!==x&&u()},[x,c,u]);const p=e||t?jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-14 border-b p-14 mb-10",children:[e&&reactExports.cloneElement(e,{className:"w-44 h-44 rounded"}),jsxRuntimeExports.jsxs("div",{className:"whitespace-nowrap overflow-hidden overflow-ellipsis",children:[t,s&&jsxRuntimeExports.jsx("div",{className:"text-xs text-muted",children:s})]})]}):null;return jsxRuntimeExports.jsx(ContextMenuLayoutState.Provider,{value:l,children:jsxRuntimeExports.jsx(Dialog,{size:"xs",children:jsxRuntimeExports.jsx(DialogBody,{padding:"p-0",onContextMenu:j=>{j.preventDefault(),j.stopPropagation()},children:jsxRuntimeExports.jsxs("div",{className:"pb-10",children:[p,jsxRuntimeExports.jsx(AnimatePresence,{initial:!1,mode:"wait",children:a?jsxRuntimeExports.jsx(PlaylistPanel,{},"playlist-panel"):jsxRuntimeExports.jsx("ul",{className:"text-base md:text-sm",children:n},"menu")})]})})})})}const ContextMenuButton=reactExports.forwardRef(({children:e,endIcon:t,startIcon:s,className:n,type:i="button",to:a,...o},u)=>{const l=i==="button"?"button":Link;return jsxRuntimeExports.jsx("li",{children:jsxRuntimeExports.jsxs(l,{...o,to:a,ref:u,className:clsx("flex items-center gap-12 py-12 px-20 hover:bg-hover cursor-pointer outline-none focus-visible:ring focus-visible:ring-inset w-full text-left",n),children:[s,jsxRuntimeExports.jsx("span",{className:"mr-auto whitespace-nowrap overflow-hidden overflow-ellipsis min-w-0",children:e}),t]})})});function createCountableStore(e){const t=getBootstrapData()[e];return create()(immer((s,n)=>({track:(t==null?void 0:t.track)||{},album:(t==null?void 0:t.album)||{},artist:t&&"artist"in t&&(t==null?void 0:t.artist)||{},has:i=>(Array.isArray(i)?i:[i]).every(o=>n()[o.model_type][o.id]),add:i=>{const a=i[0].model_type;s(o=>{i.forEach(u=>{o[a][u.id]=!0})})},remove:i=>{const a=i[0].model_type;s(o=>{i.forEach(u=>{delete o[a][u.id]})})}})))}const useLibraryStore=createCountableStore("likes"),userLibrary=useLibraryStore.getState;function useAddItemsToLibrary(){return useMutation(e=>addToLibrary$1(e),{onSuccess:(e,t)=>{toast(getMessage$1(t.likeables[0])),userLibrary().add(t.likeables),queryClient.invalidateQueries([`${t.likeables[0].model_type}s`,"library"])},onError:e=>showHttpErrorToast(e)})}function addToLibrary$1(e){const t=e.likeables.filter(s=>!userLibrary().has(s)).map(s=>({likeable_id:s.id,likeable_type:s.model_type}));return apiClient.post("users/me/add-to-library",{likeables:t}).then(s=>s.data)}function getMessage$1(e){switch(e.model_type){case"artist":return message("Added to your artists");case"album":return message("Added to your albums");case"track":return message("Added to your liked songs")}}function useRemoveItemsFromLibrary(){return useMutation(e=>addToLibrary(e),{onSuccess:(e,t)=>{toast(getMessage(t.likeables[0])),userLibrary().remove(t.likeables),queryClient.invalidateQueries([`${t.likeables[0].model_type}s`,"library"])},onError:e=>showHttpErrorToast(e)})}function addToLibrary(e){const t=e.likeables.filter(s=>userLibrary().has(s)).map(s=>({likeable_id:s.id,likeable_type:s.model_type}));return apiClient.post("users/me/remove-from-library",{likeables:t}).then(s=>s.data)}function getMessage(e){switch(e.model_type){case"artist":return message("Removed from your artists");case"album":return message("Removed from your albums");case"track":return message("Removed from your liked songs")}}function ToggleInLibraryMenuButton({items:e}){const t=useAuthClickCapture(),{close:s}=useDialogContext(),n=useAddItemsToLibrary(),i=useRemoveItemsFromLibrary();return useLibraryStore(o=>o.has(e))?jsxRuntimeExports.jsx(ContextMenuButton,{onClickCapture:t,onClick:()=>{s(),i.mutate({likeables:e})},children:jsxRuntimeExports.jsx(Trans,{message:"Remove from your music"})}):jsxRuntimeExports.jsx(ContextMenuButton,{onClickCapture:t,onClick:()=>{s(),n.mutate({likeables:e})},children:jsxRuntimeExports.jsx(Trans,{message:"Add to your music"})})}function CopyLinkMenuButton({link:e,children:t}){const{close:s}=useDialogContext(),[,n]=useCopyClipboard(e);return jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{n(),s(),toast(message("Copied link to clipboard"))},children:t})}function useDeleteArtist(e){const{pathname:t}=useLocation(),s=useNavigate(),{getRedirectUri:n}=useAuth();return useMutation(()=>deleteArtist(e),{onSuccess:()=>{toast(message("Artist deleted")),t.startsWith(`/artist/${e}`)&&s(n()),queryClient.invalidateQueries(["tracks"]),queryClient.invalidateQueries(["albums"]),queryClient.invalidateQueries(["artists"])},onError:i=>showHttpErrorToast(i)})}function deleteArtist(e){return apiClient.delete(`artists/${e}`).then(t=>t.data)}function getRadioLink(e,{absolute:t}={}){let s=`/radio/${e.model_type}/${e.id}/${slugifyString(e.name)}`;return t&&(s=`${getBootstrapData().settings.base_url}${s}`),s}function useShouldShowRadioButton(){const{player:e,artist_provider:t}=useSettings();return!(e!=null&&e.hide_radio_button)&&t==="spotify"}function PlaylistImage({playlist:e,className:t,size:s}){const{trans:n}=useTrans();return jsxRuntimeExports.jsx("img",{className:clsx(t,s,"object-cover bg-fg-base/4"),draggable:!1,loading:"lazy",src:getPlaylistImageSrc(e),alt:n(message("Image for :name",{values:{name:e.name}}))})}function getPlaylistImageSrc(e){var s;if(e.image)return e.image;const t=(s=e.tracks)!=null&&s[0]?getTrackImageSrc(e.tracks[0]):null;return t||defaultImage}function ShareMediaDialog({item:e}){const{close:t}=useDialogContext();return jsxRuntimeExports.jsxs(Dialog,{size:"xl",children:[jsxRuntimeExports.jsx(DialogHeader,{children:jsxRuntimeExports.jsx(Trans,{message:"Share :name",values:{name:e.name}})}),jsxRuntimeExports.jsx(DialogBody,{children:e.model_type==="artist"||e.model_type==="playlist"?jsxRuntimeExports.jsx(SharePanel,{item:e}):jsxRuntimeExports.jsxs(Tabs,{children:[jsxRuntimeExports.jsxs(TabList,{children:[jsxRuntimeExports.jsx(Tab,{children:jsxRuntimeExports.jsx(Trans,{message:"Share"})}),jsxRuntimeExports.jsx(Tab,{children:jsxRuntimeExports.jsx(Trans,{message:"Embed"})})]}),jsxRuntimeExports.jsxs(TabPanels,{className:"pt-20",children:[jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(SharePanel,{item:e})}),jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(EmbedPanel,{item:e})})]})]})}),jsxRuntimeExports.jsx(DialogFooter,{children:jsxRuntimeExports.jsx(Button,{onClick:()=>t(),children:jsxRuntimeExports.jsx(Trans,{message:"Close"})})})]})}function EmbedPanel({item:e}){const t=useIsMobileMediaQuery(),s=`${getLink(e)}/embed`,n=e.model_type==="track"?174:384,i=`<iframe width="100%" height="${n}" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" src="${s}"></iframe>`;return jsxRuntimeExports.jsxs("div",{children:[!t&&jsxRuntimeExports.jsx("iframe",{src:s,width:"100%",height:n,allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0}),jsxRuntimeExports.jsx(TextField,{className:"mt-20",inputElementType:"textarea",readOnly:!0,value:i,rows:3,onClick:a=>{a.currentTarget.focus(),a.currentTarget.select()}})]})}function SharePanel({item:e}){const t=getLink(e),s=reactExports.useRef(null),[n,i]=useCopyClipboard(t,{successDuration:600});return jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-14",children:[jsxRuntimeExports.jsx(MediaImage,{item:e,size:"w-128 h-128",className:"rounded object-cover flex-shrink-0 max-md:hidden"}),jsxRuntimeExports.jsxs("div",{className:"flex-auto",children:[jsxRuntimeExports.jsx("div",{className:"text-xl mb-8",children:e.name}),jsxRuntimeExports.jsx(TextField,{className:"mb-8",inputRef:s,readOnly:!0,onClick:a=>{a.currentTarget.focus(),a.currentTarget.select()},value:t,endAppend:jsxRuntimeExports.jsx(Button,{variant:"flat",color:"primary",onClick:()=>{var a;(a=s.current)==null||a.select(),i()},children:n?jsxRuntimeExports.jsx(Trans,{message:"Copied!"}):jsxRuntimeExports.jsx(Trans,{message:"Copy"})})}),jsxRuntimeExports.jsx(ShareMediaButtons,{link:t,image:"image"in e?e.image:e.image_small,name:e.name})]})]})}function MediaImage({item:e,className:t,size:s}){switch(e.model_type){case"artist":return jsxRuntimeExports.jsx(SmallArtistImage,{size:s,className:t,wrapperClassName:"max-md:hidden",artist:e});case"album":return jsxRuntimeExports.jsx(AlbumImage,{size:s,className:t,album:e});case"track":return jsxRuntimeExports.jsx(TrackImage,{size:s,className:t,track:e});case"playlist":return jsxRuntimeExports.jsx(PlaylistImage,{size:s,className:t,playlist:e})}}function getLink(e){switch(e.model_type){case"artist":return getArtistLink(e,{absolute:!0});case"album":return getAlbumLink(e,{absolute:!0});case"track":return getTrackLink(e,{absolute:!0});case"playlist":return getPlaylistLink(e,{absolute:!0})}}function ShareMediaButton({item:e}){const{close:t}=useDialogContext();return jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{t(),openDialog(ShareMediaDialog,{item:e})},children:jsxRuntimeExports.jsx(Trans,{message:"Share"})})}function ArtistContextDialog({artist:e}){const t=useShouldShowRadioButton(),{canEdit:s}=useArtistPermissions(e),n=reactExports.useCallback(()=>loadArtistTracks(),[e]);return jsxRuntimeExports.jsxs(ContextDialogLayout,{image:jsxRuntimeExports.jsx(SmallArtistImage,{artist:e}),title:jsxRuntimeExports.jsx(ArtistLink,{artist:e}),loadTracks:n,children:[jsxRuntimeExports.jsx(ToggleInLibraryMenuButton,{items:[e]}),t&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:getRadioLink(e),children:jsxRuntimeExports.jsx(Trans,{message:"Go to artist radio"})}),jsxRuntimeExports.jsx(CopyLinkMenuButton,{link:getArtistLink(e,{absolute:!0}),children:jsxRuntimeExports.jsx(Trans,{message:"Copy artist link"})}),jsxRuntimeExports.jsx(ShareMediaButton,{item:e}),s&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:`/backstage/artists/${e.id}/insights`,children:jsxRuntimeExports.jsx(Trans,{message:"Insights"})}),s&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:`/backstage/artists/${e.id}/edit`,children:jsxRuntimeExports.jsx(Trans,{message:"Edit"})}),jsxRuntimeExports.jsx(DeleteButton$3,{artist:e})]})}function DeleteButton$3({artist:e}){const{close:t}=useDialogContext(),s=useDeleteArtist(e.id),{canDelete:n}=useArtistPermissions(e);return n?jsxRuntimeExports.jsx(ContextMenuButton,{disabled:s.isLoading,onClick:()=>{t(),openDialog(ConfirmationDialog,{isDanger:!0,title:jsxRuntimeExports.jsx(Trans,{message:"Delete artist"}),body:jsxRuntimeExports.jsx(Trans,{message:"Are you sure you want to delete this artist?"}),confirm:jsxRuntimeExports.jsx(Trans,{message:"Delete"}),onConfirm:()=>{s.mutate()}})},children:jsxRuntimeExports.jsx(Trans,{message:"Delete"})}):null}async function loadArtistTracks(e){return Promise.resolve([])}function LikeIconButton({likeable:e,size:t="sm",...s}){const n=useAuthClickCapture(),i=useAddItemsToLibrary(),a=useRemoveItemsFromLibrary(),o=useLibraryStore(l=>l.has(e)),u=i.isLoading||a.isLoading;return o?jsxRuntimeExports.jsx(IconButton,{...s,size:t,color:"primary",disabled:u,onClickCapture:n,onClick:l=>{l.stopPropagation(),a.mutate({likeables:[e]})},children:jsxRuntimeExports.jsx(FavoriteIcon,{})}):jsxRuntimeExports.jsx(IconButton,{...s,size:t,disabled:u,onClickCapture:n,onClick:l=>{l.stopPropagation(),i.mutate({likeables:[e]})},children:jsxRuntimeExports.jsx(FavoriteBorderIcon,{})})}function ArtistGridItem({artist:e,radius:t="rounded-full"}){return jsxRuntimeExports.jsx(PlayableGridItem,{image:jsxRuntimeExports.jsx(SmallArtistImage,{artist:e}),title:jsxRuntimeExports.jsx(ArtistLink,{artist:e}),model:e,link:getArtistLink(e),likeButton:jsxRuntimeExports.jsx(LikeIconButton,{likeable:e}),contextDialog:jsxRuntimeExports.jsx(ArtistContextDialog,{artist:e}),radius:t})}function AddToQueueButton({item:e,loadTracks:t}){const{close:s}=useDialogContext(),n=usePlayerActions();return jsxRuntimeExports.jsx(ContextMenuButton,{onClick:async()=>{s();const i=await t();n.appendToQueue(tracksToMediaItems(i,Array.isArray(e)?void 0:queueGroupId(e)))},children:jsxRuntimeExports.jsx(Trans,{message:"Add to queue"})})}const useRepostsStore=createCountableStore("reposts"),userReposts=useRepostsStore.getState;function useToggleRepost(){return useMutation(e=>toggleRepost(e),{onSuccess:(e,{repostable:t})=>{e.action==="added"?userReposts().add([t]):userReposts().remove([t]),queryClient.invalidateQueries(["reposts"])},onError:e=>showHttpErrorToast(e)})}function toggleRepost({repostable:e}){const t={repostable_id:e.id,repostable_type:e.model_type};return apiClient.post("reposts/toggle",t).then(s=>s.data)}function ToggleRepostMenuButton({item:e}){const t=useAuthClickCapture(),{close:s}=useDialogContext(),{player:n}=useSettings(),i=useToggleRepost(),a=useRepostsStore(o=>o.has(e));return n!=null&&n.enable_repost?jsxRuntimeExports.jsx(ContextMenuButton,{onClickCapture:t,onClick:()=>{s(),i.mutate({repostable:e})},children:a?jsxRuntimeExports.jsx(Trans,{message:"Reposted"}):jsxRuntimeExports.jsx(Trans,{message:"Repost"})}):null}function AlbumContextDialog({album:e}){var i;const{canEdit:t}=useAlbumPermissions(e),s=useIsMobileMediaQuery(),n=reactExports.useCallback(()=>loadAlbumTracks(e),[e]);return jsxRuntimeExports.jsxs(ContextDialogLayout,{image:jsxRuntimeExports.jsx(AlbumImage,{album:e}),title:jsxRuntimeExports.jsx(AlbumLink,{album:e}),description:jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists}),loadTracks:n,children:[jsxRuntimeExports.jsx(AddToQueueButton,{item:e,loadTracks:n}),jsxRuntimeExports.jsx(PlaylistPanelButton,{}),jsxRuntimeExports.jsx(ToggleInLibraryMenuButton,{items:[e]}),s&&((i=e.artists)==null?void 0:i[0])&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:getArtistLink(e.artists[0]),children:jsxRuntimeExports.jsx(Trans,{message:"Go to artist"})}),!s&&jsxRuntimeExports.jsx(CopyLinkMenuButton,{link:getAlbumLink(e,{absolute:!0}),children:jsxRuntimeExports.jsx(Trans,{message:"Copy album link"})}),jsxRuntimeExports.jsx(ShareMediaButton,{item:e}),jsxRuntimeExports.jsx(ToggleRepostMenuButton,{item:e}),t&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:`/backstage/albums/${e.id}/insights`,children:jsxRuntimeExports.jsx(Trans,{message:"Insights"})}),t&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:`/backstage/albums/${e.id}/edit`,children:jsxRuntimeExports.jsx(Trans,{message:"Edit"})}),jsxRuntimeExports.jsx(DeleteButton$2,{album:e})]})}function DeleteButton$2({album:e}){const{close:t}=useDialogContext(),s=useDeleteAlbum(),{canDelete:n}=useAlbumPermissions(e);return n?jsxRuntimeExports.jsx(ContextMenuButton,{disabled:s.isLoading,onClick:()=>{t(),openDialog(ConfirmationDialog,{isDanger:!0,title:jsxRuntimeExports.jsx(Trans,{message:"Delete album"}),body:jsxRuntimeExports.jsx(Trans,{message:"Are you sure you want to delete this album?"}),confirm:jsxRuntimeExports.jsx(Trans,{message:"Delete"}),onConfirm:()=>{s.mutate({albumId:e.id})}})},children:jsxRuntimeExports.jsx(Trans,{message:"Delete"})}):null}async function loadAlbumTracks(e){if(typeof e.tracks>"u"){const t=await loadMediaItemTracks(queueGroupId(e));return t.length||toast(message("This album has no tracks yet.")),t}return e.tracks}function AlbumGridItem({album:e}){return jsxRuntimeExports.jsx(PlayableGridItem,{image:jsxRuntimeExports.jsx(AlbumImage,{album:e}),title:jsxRuntimeExports.jsx(AlbumLink,{album:e}),subtitle:jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists}),link:getAlbumLink(e),likeButton:jsxRuntimeExports.jsx(LikeIconButton,{likeable:e}),model:e,contextDialog:jsxRuntimeExports.jsx(AlbumContextDialog,{album:e})})}function GenreImage({genre:e,className:t,size:s}){const{trans:n}=useTrans();return jsxRuntimeExports.jsx("img",{className:clsx(t,s,"object-cover bg-fg-base/4"),draggable:!1,loading:"lazy",src:getGenreImage(e),alt:n(message("Image for :name",{values:{name:e.name}}))})}function getGenreImage(e){return e!=null&&e.image?e.image:defaultImage$1}function GenreGridItem({genre:e}){return jsxRuntimeExports.jsxs(Link,{to:getGenreLink(e),className:"block relative h-max after:bg-black/50 after:top-0 after:left-0 after:w-full after:h-full after:absolute rounded overflow-hidden cursor-pointer isolate",children:[jsxRuntimeExports.jsx(GenreImage,{genre:e,className:"shadow-md w-full aspect-square"}),jsxRuntimeExports.jsx("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-xl font-semibold capitalize text-white whitespace-nowrap overflow-hidden overflow-ellipsis max-w-[86%] z-20",children:e.display_name||e.name})]})}function useDeleteTracks(){const{pathname:e}=useLocation(),t=useNavigate(),{getRedirectUri:s}=useAuth();return useMutation(n=>deleteTracks(n),{onSuccess:(n,{trackIds:i})=>{toast(message("[one track|other :count tracks] deleted",{values:{count:i.length}})),i.some(a=>e.startsWith(`/track/${a}`))&&t(s()),queryClient.invalidateQueries(["tracks"])},onError:n=>showHttpErrorToast(n)})}function deleteTracks({trackIds:e}){return apiClient.delete(`tracks/${e.join(",")}`).then(t=>t.data)}function useLyrics(e){return useQuery(["lyrics",e.id],()=>fetchLyrics(e.id))}function fetchLyrics(e){return apiClient.get(`tracks/${e}/lyrics`).then(t=>t.data)}const MediaMicrophoneIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M22.3257 15.8354C22.1263 15.8695 21.9256 15.7966 21.7826 15.6536L16.347 10.218C16.2039 10.0749 16.1311 9.87422 16.1652 9.67483C16.3448 8.62476 16.84 7.61813 17.6506 6.80752C19.7334 4.72472 23.1103 4.72472 25.193 6.80752C27.2758 8.89032 27.2758 12.2672 25.193 14.35C24.3824 15.1606 23.3758 15.6557 22.3257 15.8354Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M15.3386 12.9809C15.0613 12.7036 14.6058 12.7244 14.3549 13.0257L5.78725 23.3142C5.56666 23.5791 5.58439 23.9685 5.82814 24.2122L7.79205 26.1761C8.03586 26.42 8.42536 26.4376 8.69024 26.2169L18.9754 17.6459C19.2766 17.3949 19.2972 16.9395 19.02 16.6623L15.3386 12.9809Z"},"1")],"MediaMicrophone","0 0 32 32");function LyricsDialog({track:e}){var i,a;const{data:t,isLoading:s}=useLyrics(e);let n;return(i=t==null?void 0:t.lyric)!=null&&i.text?n=jsxRuntimeExports.jsx(m.div,{className:"text-lg w-full",...opacityAnimation,dangerouslySetInnerHTML:{__html:((a=t==null?void 0:t.lyric)==null?void 0:a.text)||""}},"lyrics"):s?n=jsxRuntimeExports.jsx(LyricSkeleton,{}):n=jsxRuntimeExports.jsx(IllustratedMessage,{image:jsxRuntimeExports.jsx(MediaMicrophoneIcon,{size:"xl"}),imageHeight:"h-auto",title:jsxRuntimeExports.jsx(Trans,{message:"We do not have lyrics for this song yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Please try again later"})}),jsxRuntimeExports.jsxs(Dialog,{size:"fullscreenTakeover",children:[jsxRuntimeExports.jsx(DialogHeader,{closeButtonSize:"lg",children:jsxRuntimeExports.jsx("div",{className:"sr-only",children:jsxRuntimeExports.jsx(Trans,{message:"Lyrics"})})}),jsxRuntimeExports.jsxs(DialogBody,{className:"flex items-stretch gap-24 h-full",padding:"p-0",children:[jsxRuntimeExports.jsx("div",{className:"hidden md:flex-[0.4_1_0%] md:flex items-center justify-end pl-40",children:jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(TrackImage,{track:e,size:"w-400 max-w-full aspect-square",className:"flex-shrink-0 shadow-md rounded"}),jsxRuntimeExports.jsx("div",{className:"mt-14 text-center text-xl",children:e.name}),jsxRuntimeExports.jsx("div",{className:"mt-4 text-center text-base text-muted",children:jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists})})]})}),jsxRuntimeExports.jsx("div",{className:"flex-auto md:flex-[0.6_1_0%] stable-scrollbar overflow-y-auto text-center pl-14 pr-14 md:pl-0 md:pr-40 pb-40",children:jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center min-h-full w-full max-w-580 mx-auto",children:jsxRuntimeExports.jsx(AnimatePresence,{children:n})})})]})]})}function LyricSkeleton(){return jsxRuntimeExports.jsx(m.div,{...opacityAnimation,className:"w-full",children:[...new Array(8).keys()].map(e=>jsxRuntimeExports.jsx(Skeleton,{variant:"text",className:"mb-20"},e))},"skeleton")}function TrackContextDialog({children:e,tracks:t,showAddToQueueButton:s=!0}){var j;const n=useIsMobileMediaQuery(),i=t[0],{canEdit:a,canDelete:o}=useTrackPermissions(t),u=useShouldShowRadioButton(),{player:l}=useSettings(),{close:x}=useDialogContext(),c=reactExports.useCallback(()=>Promise.resolve(t),[t]),p=t.length===1?{image:jsxRuntimeExports.jsx(TrackImage,{track:i}),title:jsxRuntimeExports.jsx(TrackLink,{track:i}),description:jsxRuntimeExports.jsx(ArtistLinks,{artists:i.artists})}:{};return jsxRuntimeExports.jsxs(ContextDialogLayout,{...p,loadTracks:c,children:[s&&jsxRuntimeExports.jsx(AddToQueueButton,{item:t,loadTracks:c}),jsxRuntimeExports.jsx(ToggleInLibraryMenuButton,{items:t}),e==null?void 0:e(t),jsxRuntimeExports.jsx(PlaylistPanelButton,{}),t.length===1?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[u&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:getRadioLink(i),children:jsxRuntimeExports.jsx(Trans,{message:"Go to song radio"})}),n&&jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[((j=i.artists)==null?void 0:j[0])&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:getArtistLink(i.artists[0]),children:jsxRuntimeExports.jsx(Trans,{message:"Go to artist"})}),i.album&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:getAlbumLink(i.album),children:jsxRuntimeExports.jsx(Trans,{message:"Go to album"})}),jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:getTrackLink(i),children:jsxRuntimeExports.jsx(Trans,{message:"Go to track"})})]}),!(l!=null&&l.hide_lyrics)&&t.length===1&&jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{x(),openDialog(LyricsDialog,{track:i})},children:jsxRuntimeExports.jsx(Trans,{message:"View lyrics"})}),!n&&jsxRuntimeExports.jsx(CopyLinkMenuButton,{link:getTrackLink(i,{absolute:!0}),children:jsxRuntimeExports.jsx(Trans,{message:"Copy song link"})}),t.length===1&&jsxRuntimeExports.jsx(ShareMediaButton,{item:i}),t.length===1?jsxRuntimeExports.jsx(ToggleRepostMenuButton,{item:t[0]}):null,t.length===1&&a&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:`/backstage/tracks/${i.id}/insights`,children:jsxRuntimeExports.jsx(Trans,{message:"Insights"})}),t.length===1&&a&&jsxRuntimeExports.jsx(ContextMenuButton,{type:"link",to:`/backstage/tracks/${i.id}/edit`,children:jsxRuntimeExports.jsx(Trans,{message:"Edit"})})]}):null,o&&!n&&jsxRuntimeExports.jsx(DeleteButton$1,{tracks:t})]})}function DeleteButton$1({tracks:e}){const{close:t}=useDialogContext(),s=useDeleteTracks(),{canDelete:n}=useTrackPermissions(e);return n?jsxRuntimeExports.jsx(ContextMenuButton,{disabled:s.isLoading,onClick:()=>{t(),openDialog(ConfirmationDialog,{isDanger:!0,title:jsxRuntimeExports.jsx(Trans,{message:"Delete tracks"}),body:jsxRuntimeExports.jsx(Trans,{message:"Are you sure you want to delete selected tracks?"}),confirm:jsxRuntimeExports.jsx(Trans,{message:"Delete"}),onConfirm:()=>{s.mutate({trackIds:e.map(i=>i.id)})}})},children:jsxRuntimeExports.jsx(Trans,{message:"Delete"})}):null}function TrackGridItem({track:e,newQueue:t}){return jsxRuntimeExports.jsx(PlayableGridItem,{image:jsxRuntimeExports.jsx(TrackImage,{track:e}),title:jsxRuntimeExports.jsx(TrackLink,{track:e}),subtitle:jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists}),link:getTrackLink(e),likeButton:jsxRuntimeExports.jsx(LikeIconButton,{likeable:e}),model:e,newQueue:t,contextDialog:jsxRuntimeExports.jsx(TrackContextDialog,{tracks:[e]})})}function usePlaylistPermissions(e){const{user:t}=useAuth(),s=!!(t!=null&&t.id&&t.id===e.owner_id);return{canEdit:s,canDelete:s,isCreator:s}}function useIsFollowingPlaylist(e){const{data:t}=useAuthUserPlaylists(),{user:s}=useAuth(),n=t.playlists.find(i=>i.id===+e);return!!(n&&s&&s.id!==n.owner_id)}function useDeletePlaylist(e){const{pathname:t}=useLocation(),s=useNavigate(),{getRedirectUri:n}=useAuth();return useMutation(()=>deletePlaylist(e),{onSuccess:()=>{toast(message("Playlist deleted")),queryClient.invalidateQueries(["playlists"]),t.startsWith(`/playlist/${e}`)&&s(n())},onError:i=>showHttpErrorToast(i)})}function deletePlaylist(e){return apiClient.delete(`playlists/${e}`).then(t=>t.data)}function useFollowPlaylist(e){return useMutation(()=>followPlaylist(e.id),{onSuccess:()=>{toast(message("Following :name",{values:{name:e.name}})),queryClient.invalidateQueries(["playlists"])},onError:t=>showHttpErrorToast(t)})}function followPlaylist(e){return apiClient.post(`playlists/${e}/follow`).then(t=>t.data)}function useUnfollowPlaylist(e){return useMutation(()=>unfollowPlaylist(e.id),{onSuccess:()=>{toast(message("Stopped following :name",{values:{name:e.name}})),queryClient.invalidateQueries(["playlists"])},onError:t=>showHttpErrorToast(t)})}function unfollowPlaylist(e){return apiClient.post(`playlists/${e}/unfollow`).then(t=>t.data)}function PlaylistContextDialog({playlist:e}){const{close:t}=useDialogContext(),[,s]=useCopyClipboard(getPlaylistLink(e,{absolute:!0})),{canEdit:n}=usePlaylistPermissions(e),i=reactExports.useCallback(()=>loadPlaylistTracks(e),[e]);return jsxRuntimeExports.jsxs(ContextDialogLayout,{image:jsxRuntimeExports.jsx(PlaylistImage,{playlist:e}),title:jsxRuntimeExports.jsx(PlaylistLink,{playlist:e}),description:jsxRuntimeExports.jsx(PlaylistOwnerName,{playlist:e}),loadTracks:i,children:[jsxRuntimeExports.jsx(AddToQueueButton,{item:e,loadTracks:i}),jsxRuntimeExports.jsx(TogglePublicButton,{playlist:e}),jsxRuntimeExports.jsx(ToggleCollaborativeButton,{playlist:e}),jsxRuntimeExports.jsx(FollowButtons,{playlist:e}),jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{s(),t(),toast(message("Copied link to clipboard"))},children:jsxRuntimeExports.jsx(Trans,{message:"Copy playlist link"})}),e.public&&jsxRuntimeExports.jsx(ShareMediaButton,{item:e}),n&&jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{t(),openDialog(UpdatePlaylistDialog,{playlist:e})},children:jsxRuntimeExports.jsx(Trans,{message:"Edit"})}),jsxRuntimeExports.jsx(DeleteButton,{playlist:e})]})}function FollowButtons({playlist:e}){const t=useIsFollowingPlaylist(e.id),{close:s}=useDialogContext(),n=useFollowPlaylist(e),i=useUnfollowPlaylist(e),{isCreator:a}=usePlaylistPermissions(e);return a?null:jsxRuntimeExports.jsx(reactExports.Fragment,{children:t?jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{s(),i.mutate()},children:jsxRuntimeExports.jsx(Trans,{message:"Unfollow"})}):jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{s(),n.mutate()},children:jsxRuntimeExports.jsx(Trans,{message:"Follow"})})})}function TogglePublicButton({playlist:e}){const{close:t}=useDialogContext(),s=useUpdatePlaylist({playlistId:e.id}),{isCreator:n}=usePlaylistPermissions(e);if(!n)return null;const i=()=>{t(),s.mutate({public:!e.public})};return jsxRuntimeExports.jsx(ContextMenuButton,{disabled:s.isLoading,onClick:()=>i(),children:e.public?jsxRuntimeExports.jsx(Trans,{message:"Make private"}):jsxRuntimeExports.jsx(Trans,{message:"Make public"})})}function ToggleCollaborativeButton({playlist:e}){const{close:t}=useDialogContext(),s=useUpdatePlaylist({playlistId:e.id}),{isCreator:n}=usePlaylistPermissions(e);if(!n)return null;const i=()=>{t(),s.mutate({collaborative:!e.collaborative})};return jsxRuntimeExports.jsx(ContextMenuButton,{disabled:s.isLoading,startIcon:e.collaborative?jsxRuntimeExports.jsx(CheckIcon,{}):void 0,onClick:()=>i(),children:jsxRuntimeExports.jsx(Trans,{message:"Collaborative"})})}function DeleteButton({playlist:e}){const{close:t}=useDialogContext(),s=useDeletePlaylist(e.id),{canDelete:n}=usePlaylistPermissions(e);return n?jsxRuntimeExports.jsx(ContextMenuButton,{disabled:s.isLoading,onClick:()=>{t(),openDialog(ConfirmationDialog,{isDanger:!0,title:jsxRuntimeExports.jsx(Trans,{message:"Delete playlist"}),body:jsxRuntimeExports.jsx(Trans,{message:"Are you sure you want to delete this playlist?"}),confirm:jsxRuntimeExports.jsx(Trans,{message:"Delete"}),onConfirm:()=>{s.mutate()}})},children:jsxRuntimeExports.jsx(Trans,{message:"Delete"})}):null}async function loadPlaylistTracks(e){if(typeof e.tracks>"u"){const t=await loadMediaItemTracks(queueGroupId(e));return t.length||toast(message("This playlist has no tracks yet.")),t}return e.tracks}function FollowPlaylistButton({playlist:e,size:t="sm",className:s,buttonType:n="text",radius:i}){const{isCreator:a}=usePlaylistPermissions(e),o=useFollowPlaylist(e),u=useUnfollowPlaylist(e),l=useIsFollowingPlaylist(e.id),x=o.isLoading||u.isLoading;return a?null:n==="icon"?l?jsxRuntimeExports.jsx(IconButton,{size:t,radius:i,color:"primary",className:s,disabled:x,onClick:()=>u.mutate(),children:jsxRuntimeExports.jsx(FavoriteIcon,{})}):jsxRuntimeExports.jsx(IconButton,{size:t,radius:i,disabled:x,className:s,onClick:()=>o.mutate(),children:jsxRuntimeExports.jsx(FavoriteBorderIcon,{})}):l?jsxRuntimeExports.jsx(Button,{size:t,variant:"outline",radius:i||"rounded-full",startIcon:jsxRuntimeExports.jsx(FavoriteIcon,{className:"text-primary"}),disabled:x,className:s,onClick:()=>u.mutate(),children:jsxRuntimeExports.jsx(Trans,{message:"Following"})}):jsxRuntimeExports.jsx(Button,{size:t,variant:"outline",radius:i||"rounded-full",startIcon:jsxRuntimeExports.jsx(FavoriteBorderIcon,{}),disabled:x,className:s,onClick:()=>o.mutate(),children:jsxRuntimeExports.jsx(Trans,{message:"Follow"})})}function PlaylistGridItem({playlist:e}){return jsxRuntimeExports.jsx(PlayableGridItem,{image:jsxRuntimeExports.jsx(PlaylistImage,{playlist:e}),title:jsxRuntimeExports.jsx(PlaylistLink,{playlist:e}),subtitle:jsxRuntimeExports.jsx(PlaylistOwnerName,{playlist:e}),link:getPlaylistLink(e),likeButton:jsxRuntimeExports.jsx(FollowPlaylistButton,{buttonType:"icon",size:"md",playlist:e}),model:e,contextDialog:jsxRuntimeExports.jsx(PlaylistContextDialog,{playlist:e})})}function PlaylistOwnerName({playlist:e}){var s;const t=e.owner||((s=e.editors)==null?void 0:s[0]);return t?jsxRuntimeExports.jsx(Trans,{message:"By :name",values:{name:jsxRuntimeExports.jsx(UserProfileLink,{user:t})}}):null}const userDefaultImage=""+new URL("user-default-4b239e07.svg",import.meta.url).href;function UserImage({user:e,className:t,size:s,showProBadge:n}){var o;const{trans:i}=useTrans(),a=n&&((o=e.subscriptions)==null?void 0:o.find(u=>u.valid));return jsxRuntimeExports.jsxs("div",{className:clsx("relative flex-shrink-0 isolate overflow-hidden",s,t),children:[jsxRuntimeExports.jsx("img",{className:"object-cover bg-fg-base/4 w-full h-full",draggable:!1,src:getUserImage(e),alt:i(message("Avatar for :name",{values:{name:e.display_name}}))}),a&&jsxRuntimeExports.jsxs("div",{className:"absolute bottom-12 text-sm left-0 right-0 w-max max-w-full mx-auto flex items-center gap-6 bg-black/60 text-white rounded-full py-4 px-8",color:"positive",children:[jsxRuntimeExports.jsx("div",{className:"bg-primary rounded-full p-1",children:jsxRuntimeExports.jsx(StarIcon,{className:"text-white",size:"sm"})}),jsxRuntimeExports.jsx(Trans,{message:"PRO user"})]})]})}function getUserImage(e){return e.avatar||userDefaultImage}function UserGridItem({user:e}){return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(Link,{to:getUserProfileLink(e),children:jsxRuntimeExports.jsx(UserImage,{user:e,className:"shadow-md w-full aspect-square rounded"})}),jsxRuntimeExports.jsxs("div",{className:"text-sm mt-12",children:[jsxRuntimeExports.jsx("div",{className:"overflow-hidden overflow-ellipsis",children:jsxRuntimeExports.jsx(Link,{to:getUserProfileLink(e),children:e.display_name})}),e.followers_count?jsxRuntimeExports.jsx("div",{className:"text-muted mt-4 whitespace-nowrap overflow-hidden overflow-ellipsis",children:jsxRuntimeExports.jsx(Trans,{message:":count followers",values:{count:e.followers_count}})}):null]})]})}function ChannelContentGridItem({item:e,items:t}){switch(e.model_type){case ARTIST_MODEL:return jsxRuntimeExports.jsx(ArtistGridItem,{artist:e});case ALBUM_MODEL:return jsxRuntimeExports.jsx(AlbumGridItem,{album:e});case GENRE_MODEL:return jsxRuntimeExports.jsx(GenreGridItem,{genre:e});case TRACK_MODEL:return jsxRuntimeExports.jsx(TrackGridItem,{track:e,newQueue:t});case PLAYLIST_MODEL:return jsxRuntimeExports.jsx(PlaylistGridItem,{playlist:e});case USER_MODEL:return jsxRuntimeExports.jsx(UserGridItem,{user:e});default:return null}}const AntennaIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 7.5c.69 0 1.27.23 1.76.7s.74 1.07.74 1.8c0 1.05-.5 1.81-1.5 2.28V21h-2v-8.72c-1-.47-1.5-1.23-1.5-2.28 0-.73.26-1.33.74-1.8s1.07-.7 1.76-.7m4.69-2.2c1.25 1.25 1.92 2.81 2.01 4.7 0 1.8-.67 3.38-2.01 4.72L15.5 13.5c1-.91 1.5-2.08 1.5-3.5 0-1.33-.5-2.5-1.5-3.5l1.19-1.2M6.09 4.08C4.5 5.67 3.7 7.64 3.7 10s.8 4.3 2.39 5.89l-1.17 1.22C3 15.08 2 12.7 2 10s1-5.06 2.92-7.09l1.17 1.17m12.99-1.17C21 4.94 22 7.3 22 10c0 2.8-1 5.17-2.92 7.11l-1.17-1.22C19.5 14.3 20.3 12.33 20.3 10s-.8-4.33-2.39-5.92l1.17-1.17M7.31 5.3L8.5 6.5C7.5 7.42 7 8.58 7 10c0 1.33.5 2.5 1.5 3.5l-1.19 1.22C5.97 13.38 5.3 11.8 5.3 10c0-1.8.67-3.36 2.01-4.7z"}),"Radio");function ChannelHeading({channel:e,isNested:t,margin:s=t?"mb-16 md:mb-20":"mb-20 md:mb-40"}){const n=useShouldShowRadioButton();return e.config.hideTitle?null:t?jsxRuntimeExports.jsxs("div",{className:clsx("text-xl flex items-center gap-4",s),children:[jsxRuntimeExports.jsx(NestedChannelLink,{channel:e}),jsxRuntimeExports.jsx(KeyboardArrowRightIcon,{className:"mt-4"})]}):n&&e.genre?jsxRuntimeExports.jsxs("div",{className:clsx("flex gap-24 items-center justify-between",s),children:[jsxRuntimeExports.jsx("h1",{className:"text-3xl flex-auto",children:jsxRuntimeExports.jsx(Trans,{message:e.name})}),jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Genre radio"}),children:jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0",elementType:Link,to:getRadioLink(e.genre),children:jsxRuntimeExports.jsx(AntennaIcon,{})})})]}):jsxRuntimeExports.jsx("h1",{className:clsx("text-3xl",s),children:jsxRuntimeExports.jsx(Trans,{message:e.name})})}function NestedChannelLink({channel:e}){const{filter:t}=useParams();return jsxRuntimeExports.jsx(Link,{className:"hover:underline outline-none focus-visible:underline",to:e.config.connectToGenreViaUrl&&t?`/channel/${e.slug}/${t}`:`/channel/${e.slug}`,children:jsxRuntimeExports.jsx(Trans,{message:e.name})})}function ChannelContentGrid(e){return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(ChannelHeading,{...e}),e.isNested||e.channel.config.contentType!=="listAll"?jsxRuntimeExports.jsx(SimpleGrid,{...e}):jsxRuntimeExports.jsx(PaginatedGrid,{...e})]})}function SimpleGrid({channel:e}){var s;const t=((s=e.content)==null?void 0:s.data)||[];return jsxRuntimeExports.jsx(ContentGrid,{children:t.map(n=>jsxRuntimeExports.jsx(ChannelContentGridItem,{item:n,items:t},`${n.id}-${n.model_type}`))})}function PaginatedGrid({channel:e}){const t=usePaginatedChannelContent(e),s=t.items||[];return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(ContentGrid,{children:s.map(n=>jsxRuntimeExports.jsx(ChannelContentGridItem,{item:n,items:s},`${n.id}-${n.model_type}`))}),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]})}const stableObj={};function useTrackTableMeta(){const{meta:e}=reactExports.useContext(TableContext);return e||stableObj}function useIsTrackCued(e,t){return usePlayerStore(s=>{var n,i;return!((n=s.cuedMedia)!=null&&n.meta.id)||s.cuedMedia.meta.id!==e?!1:!!(!((i=s.cuedMedia)!=null&&i.groupId)&&!t||t&&s.cuedMedia.groupId===t)})}function useIsTrackPlaying(e,t){const s=useIsTrackCued(e,t),n=usePlayerStore(i=>i.isPlaying);return s&&n}function TogglePlaybackColumn({track:e,rowIndex:t,isHovered:s}){const{queueGroupId:n}=useTrackTableMeta(),i=useIsTrackPlaying(e.id,n),a=useIsTrackCued(e.id,n);return jsxRuntimeExports.jsx("div",{className:"w-24 h-24 text-center",children:s||i?jsxRuntimeExports.jsx(TogglePlaybackButton,{track:e,trackIndex:t,isPlaying:i}):jsxRuntimeExports.jsx("span",{className:clsx(a?"text-primary":"text-muted"),children:t+1})})}function TogglePlaybackButton({track:e,trackIndex:t,isPlaying:s}){const{trans:n}=useTrans(),i=usePlayerActions(),{data:a}=reactExports.useContext(TableContext),{queueGroupId:o}=useTrackTableMeta(),[u,l]=reactExports.useState(!1);return s?jsxRuntimeExports.jsx("button",{onPointerEnter:()=>l(!0),onPointerLeave:()=>l(!1),"aria-label":n(message("Pause :name",{values:{name:e.name}})),tabIndex:0,onClick:x=>{x.stopPropagation(),i.pause()},children:u?jsxRuntimeExports.jsx(PauseIcon,{}):jsxRuntimeExports.jsx(EqualizerImage,{})}):jsxRuntimeExports.jsx("button",{"aria-label":n(message("Play :name",{values:{name:e.name}})),tabIndex:0,onClick:async x=>{x.stopPropagation();const c=a.map(p=>trackToMediaItem(p,o));i.overrideQueueAndPlay(c,t)},children:jsxRuntimeExports.jsx(PlayArrowFilledIcon,{})})}function TrackNameColumn({track:e}){var a;const t=useIsMobileMediaQuery(),{hideTrackImage:s,queueGroupId:n}=useTrackTableMeta(),i=useIsTrackCued(e.id,n);return jsxRuntimeExports.jsx(NameWithAvatar,{image:s?void 0:getTrackImageSrc(e),label:e.name,avatarSize:t?"lg":"md",description:t?(a=e.artists)==null?void 0:a.map(o=>o.name).join(", "):void 0,labelClassName:clsx(i&&"text-primary",t&&"text-[15px] leading-6")})}function TableTrackContextDialog({children:e,...t}){const{selectedRows:s,data:n}=reactExports.useContext(TableContext),i=reactExports.useMemo(()=>s.map(a=>n.find(o=>o.id===a)).filter(a=>!!a),[s,n]);return jsxRuntimeExports.jsx(TrackContextDialog,{...t,tracks:i,children:e})}function TrackOptionsColumn({track:e,isHovered:t}){const s=useIsMobileMediaQuery();return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",children:[jsxRuntimeExports.jsx(IconButton,{size:s?"sm":"md",className:clsx(s?"text-muted":"mr-8",!s&&!t&&"invisible"),children:s?jsxRuntimeExports.jsx(MoreVertIcon,{}):jsxRuntimeExports.jsx(MoreHorizIcon,{})}),jsxRuntimeExports.jsx(TrackContextDialog,{tracks:[e]})]}),!s&&jsxRuntimeExports.jsx(LikeIconButton,{size:"xs",likeable:e})]})}const columnConfig=[{key:"index",header:()=>jsxRuntimeExports.jsx("span",{children:"#"}),align:"center",width:"w-24 flex-shrink-0",body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx(Skeleton,{size:"w-20 h-20",variant:"rect"}):jsxRuntimeExports.jsx(TogglePlaybackColumn,{track:e,rowIndex:t.index,isHovered:t.isHovered})},{key:"name",allowsSorting:!0,width:"flex-3 min-w-224",visibleInMode:"all",header:()=>jsxRuntimeExports.jsx(Trans,{message:"Title"}),body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx(NameWithAvatarPlaceholder,{showDescription:!1}):jsxRuntimeExports.jsx(TrackNameColumn,{track:e})},{key:"artist",header:()=>jsxRuntimeExports.jsx(Trans,{message:"Artist"}),width:"flex-2",body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx(Skeleton,{className:"leading-3 max-w-4/5"}):jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists})},{key:"album_name",allowsSorting:!0,width:"flex-2",header:()=>jsxRuntimeExports.jsx(Trans,{message:"Album"}),body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx(Skeleton,{className:"leading-3 max-w-4/5"}):e.album?jsxRuntimeExports.jsx(AlbumLink,{album:e.album}):null},{key:"added_at",sortingKey:"likes.created_at",allowsSorting:!0,maxWidth:"max-w-112",header:()=>jsxRuntimeExports.jsx(Trans,{message:"Date added"}),body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx(Skeleton,{className:"leading-3 max-w-4/5"}):jsxRuntimeExports.jsx(FormattedRelativeTime,{date:e.added_at})},{key:"options",align:"end",width:"w-36 md:w-84",header:()=>jsxRuntimeExports.jsx(Trans,{message:"Options"}),hideHeader:!0,visibleInMode:"all",body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx("div",{className:"flex justify-end",children:jsxRuntimeExports.jsx(Skeleton,{size:"w-20 h-20",variant:"rect"})}):jsxRuntimeExports.jsx(TrackOptionsColumn,{track:e,isHovered:t.isHovered})},{key:"duration",allowsSorting:!0,className:"text-muted",maxWidth:"max-w-48",align:"end",header:()=>jsxRuntimeExports.jsx(ScheduleIcon,{}),body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx(Skeleton,{className:"leading-3"}):e.duration?jsxRuntimeExports.jsx(FormattedDuration,{ms:e.duration}):null},{key:"popularity",allowsSorting:!0,className:"text-muted",maxWidth:"max-w-54",header:()=>jsxRuntimeExports.jsx(TrendingUpIcon,{}),body:(e,t)=>t.isPlaceholder?jsxRuntimeExports.jsx(Skeleton,{className:"leading-3"}):jsxRuntimeExports.jsx("div",{className:"h-6 w-full relative bg-chip",children:jsxRuntimeExports.jsx("div",{style:{width:`${e.popularity||50}%`},className:"h-full w-0 absolute top-0 left-0 bg-black/30 dark:bg-white/30"})})}];function TrackTable({tracks:e,hideArtist:t=!1,hideAlbum:s=!1,hideHeaderRow:n=!1,hideTrackImage:i=!1,hidePopularity:a=!0,hideAddedAtColumn:o=!0,queueGroupId:u,renderRowAs:l,...x}){const c=usePlayerActions(),p=useIsMobileMediaQuery();n=n||!!p;const j=reactExports.useMemo(()=>columnConfig.filter(R=>!(R.key==="artist"&&t||R.key==="album_name"&&s||R.key==="popularity"&&a||R.key==="added_at"&&o)),[t,s,a,o]),g=reactExports.useMemo(()=>({queueGroupId:u,hideTrackImage:i}),[u,i]);return jsxRuntimeExports.jsx(Table,{closeOnInteractOutside:!0,hideHeaderRow:n,selectionStyle:"highlight",selectRowOnContextMenu:!0,renderRowAs:l||TrackTableRowWithContextMenu,columns:j,data:e,meta:g,hideBorder:!!p,onAction:(R,h)=>{const y=e.map(d=>trackToMediaItem(d,u));c.overrideQueueAndPlay(y,h)},...x})}function TrackTableRowWithContextMenu({item:e,children:t,...s}){const n=jsxRuntimeExports.jsx("div",{...s,children:t});return e.isPlaceholder?n:jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,placement:"bottom-start",children:[n,jsxRuntimeExports.jsx(TableTrackContextDialog,{})]})}function VirtualTableBody({renderRowAs:e,totalItems:t=0,query:s}){const{data:n}=reactExports.useContext(TableContext),i=t<=0?10:Math.min(t-n.length,10);return t<91?jsxRuntimeExports.jsx(Body,{placeholderRowCount:i,renderRowAs:e,query:s}):jsxRuntimeExports.jsx(VirtualizedBody,{placeholderRowCount:i,renderRowAs:e,query:s})}function Body({renderRowAs:e,placeholderRowCount:t,query:s}){const{data:n}=reactExports.useContext(TableContext);return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[n.map((i,a)=>jsxRuntimeExports.jsx(TableRow,{item:i,index:a,renderAs:e},i.id)),jsxRuntimeExports.jsx(Sentinel,{dataCount:n.length,placeholderRowCount:t,query:s})]})}function VirtualizedBody({renderRowAs:e,placeholderRowCount:t,query:s}){const{data:n}=reactExports.useContext(TableContext),i=reactExports.useRef(null),a=reactExports.useRef(null),o=reactExports.useRef(0);reactExports.useEffect(()=>{i.current&&(a.current=$62d8ded9296f3872$export$cfa2225e87938781(i.current),o.current=i.current.getBoundingClientRect().top+a.current.scrollTop)},[i]);const u=useVirtualizer({overscan:10,count:n.length,getScrollElement:()=>a.current,estimateSize:()=>48,observeElementOffset:(c,p)=>observeElementOffset(c,j=>{p(j-o.current)})}),l=u.getVirtualItems(),x=`${u.getTotalSize()+(s.isFetchingNextPage?t*48:0)}px`;return jsxRuntimeExports.jsxs("div",{ref:i,role:"presentation",className:"w-full relative",style:{height:x},children:[l.map(c=>{const p=n[c.index];return jsxRuntimeExports.jsx(TableRow,{item:p,index:c.index,renderAs:e,className:"absolute top-0 left-0 w-full",style:{height:`${c.size}px`,transform:`translateY(${c.start}px)`}},p.id)}),jsxRuntimeExports.jsx(Sentinel,{dataCount:u.range.endIndex,placeholderRowCount:t,query:s,style:{top:`${u.getTotalSize()}px`}})]})}function Sentinel({dataCount:e,placeholderRowCount:t,renderRowAs:s,query:n,style:i}){return jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:n,style:i,loaderMarginTop:"mt-0",className:"absolute left-0",children:[...new Array(Math.max(t,1)).keys()].map((a,o)=>{const u=`placeholder-${a}`;return jsxRuntimeExports.jsx(TableRow,{item:{id:u,isPlaceholder:!0},index:e+o,renderAs:s},u)})})}function ChannelTrackTable(e){return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(ChannelHeading,{...e}),e.isNested?jsxRuntimeExports.jsx(SimpleTable,{...e}):jsxRuntimeExports.jsx(PaginatedTable,{...e})]})}function SimpleTable({channel:e}){var t;return jsxRuntimeExports.jsx(TrackTable,{tracks:((t=e.content)==null?void 0:t.data)||[],enableSorting:!1})}function PaginatedTable({channel:e}){const t=usePaginatedChannelContent(e),s=e.content&&"total"in e.content?e.content.total:void 0;return jsxRuntimeExports.jsx(TrackTable,{enableSorting:!1,tracks:t.items,tableBody:jsxRuntimeExports.jsx(VirtualTableBody,{query:t,totalItems:s})})}function queryKey(e){return["tracks",+e,"wave-data"]}function invalidateWaveData(e){queryClient.invalidateQueries(queryKey(e))}function useTrackWaveData(e,{enabled:t}={}){return useQuery(queryKey(e),()=>fetchWaveData(e),{onError:s=>showHttpErrorToast(s),enabled:t})}function fetchWaveData(e){return apiClient.get(`tracks/${e}/wave`).then(t=>t.data)}function drawWaveform(e,t,s){const n=t.getContext("2d");n&&(n.clearRect(0,0,t.width,t.height),n.fillStyle=s,n.globalAlpha=.5,e.forEach(i=>{const a=.55*i[3];n.fillRect(i[0],i[1]+i[3]+1,i[2],a)}),n.fillStyle=s,n.globalAlpha=1,e.forEach(i=>{n.fillRect(i[0],i[1],i[2],i[3])}))}function useTrackSeekbar(e,t){var l;const s=usePlayerActions(),n=usePlayerStore(x=>x.cuedMedia),i=usePlayerStore(x=>x.mediaDuration),a=(n==null?void 0:n.id)===e.id&&i?i:(e.duration||0)/1e3,[o,u]=reactExports.useState(e.id===((l=s.getState().cuedMedia)==null?void 0:l.id)?s.getCurrentTime():0);return reactExports.useEffect(()=>s.subscribe({progress:({currentTime:x})=>{var c;u(e.id===((c=s.getState().cuedMedia)==null?void 0:c.id)?x:0)}}),[s,e]),{duration:a,minValue:0,maxValue:a,value:o,onPointerDown:()=>{var x;s.setIsSeeking(!0),s.pause(),((x=s.getState().cuedMedia)==null?void 0:x.id)!==e.id&&reactDomExports.flushSync(()=>{if(t!=null&&t.length){const c=t==null?void 0:t.findIndex(p=>p.id===e.id);s.overrideQueue(tracksToMediaItems(t),c)}else s.cue(trackToMediaItem(e))})},onChange:x=>{s.getState().emit("progress",{currentTime:x}),s.seek(x)},onChangeEnd:()=>{s.setIsSeeking(!1),s.play()}}}const CommentBarContext=reactExports.createContext(null);function CommentBarContextProvider({children:e,disableCommenting:t=!1}){const[s,n]=reactExports.useState(!1),i=reactExports.useRef(null),a=reactExports.useRef(0),o=reactExports.useMemo(()=>({newCommentInputRef:i,newCommentPositionRef:a,markerIsVisible:s,setMarkerIsVisible:n,disableCommenting:t}),[s,t]);return jsxRuntimeExports.jsx(CommentBarContext.Provider,{value:o,children:e})}function CommentBar({comments:e,track:t}){const{user:s,hasPermission:n}=useAuth(),{newCommentInputRef:i,newCommentPositionRef:a,markerIsVisible:o,setMarkerIsVisible:u,...l}=reactExports.useContext(CommentBarContext),x=l.disableCommenting||!n("comments.create"),{domProps:c,groupId:p,trackRef:j,getThumbPercent:g}=useSlider({onChange:()=>{u(!0),a.current=g(0)*100},onChangeEnd:()=>{var R;(R=i.current)==null||R.focus()}});return $e0b6e0b68ec7f50f$export$872b660ac5a1ff98({ref:j,onInteractOutside:R=>{var h;(h=i.current)!=null&&h.contains(R.target)||u(!1)}}),jsxRuntimeExports.jsxs("div",{className:clsx("absolute top-48 left-0 h-26 w-full isolate",!x&&"cursor-pointer"),ref:j,...x?{}:c,id:p,children:[o?jsxRuntimeExports.jsx("div",{className:"absolute top-0 left-0 z-20 overflow-hidden w-26 h-26 shadow-md -translate-x-1/2 cursor-move",style:{left:`${g(0)*100}%`},children:jsxRuntimeExports.jsx(Avatar,{src:s==null?void 0:s.avatar,size:"w-full h-full"})}):null,e.map(R=>R.user?jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnHover:!0,children:[jsxRuntimeExports.jsx("div",{style:{left:`${Math.min(99,R.position||0)}%`},className:clsx("transition-opacity duration-300 ease-in-out absolute top-0 -translate-x-1/2 cursor-pointer",o?"opacity-40":"opacity-100"),children:jsxRuntimeExports.jsx("div",{className:"bg-cover w-16 h-16 rounded shadow bg-chip",style:{backgroundImage:`url(${getUserImage(R.user)})`}})}),jsxRuntimeExports.jsx(CommentDialog,{comment:R})]},R.id):null)]})}function CommentDialog({comment:e}){return jsxRuntimeExports.jsx(Dialog,{size:"w-auto",children:jsxRuntimeExports.jsx(DialogBody,{padding:"p-8",children:jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-10",children:[e.user&&jsxRuntimeExports.jsx("div",{className:"text-primary",children:e.user.display_name}),jsxRuntimeExports.jsx("div",{children:e.content})]})})})}const durationClassName="text-[11px] absolute bottom-32 p-3 rounded text-white font-semibold z-30 pointer-events-none bg-black/80";function Waveform({track:e,queue:t,className:s}){const n=reactExports.useRef(null),i=reactExports.useRef(null),a=reactExports.useRef(null),[o,u]=reactExports.useState(!1),[l,x]=reactExports.useState(!1),{data:c}=useTrackWaveData(e.id,{enabled:o}),p=useThemeSelector();reactExports.useEffect(()=>{const T=new IntersectionObserver(k=>{k.forEach(P=>{P.isIntersecting&&P.target===n.current&&(u(!0),T.disconnect())})},{root:document.body});return n.current&&T.observe(n.current),()=>T.disconnect()},[]),reactExports.useEffect(()=>{i.current&&(c!=null&&c.waveData)&&a.current&&(drawWaveform(c.waveData,i.current,"#666"),drawWaveform(c.waveData,a.current,themeValueToHex(p.selectedTheme.colors["--be-primary"])),x(!0))},[c,p.selectedTheme]);const{value:j,onChange:g,onChangeEnd:R,duration:h,...y}=useTrackSeekbar(e,t),{domProps:d,groupId:f,thumbIds:E,trackRef:b,getThumbPercent:v}=useSlider({...y,value:[j],onChange:([T])=>g(T),onChangeEnd:()=>R()});return jsxRuntimeExports.jsx(AnimatePresence,{mode:"wait",children:jsxRuntimeExports.jsxs("section",{className:"relative max-w-full",children:[jsxRuntimeExports.jsxs("div",{id:f,role:"group",ref:n,className:clsx("relative isolate h-70 cursor-pointer overflow-hidden transition-opacity duration-200 ease-in",l?"opacity-100":"opacity-0",s),children:[jsxRuntimeExports.jsx("output",{className:clsx(durationClassName,"left-0"),htmlFor:E[0],"aria-live":"off",children:j?jsxRuntimeExports.jsx(FormattedDuration,{seconds:j}):"0:00"}),jsxRuntimeExports.jsxs("div",{...d,ref:b,children:[jsxRuntimeExports.jsx("canvas",{ref:i,width:WAVE_WIDTH,height:WAVE_HEIGHT+25}),jsxRuntimeExports.jsx("div",{className:"absolute top-0 left-0 z-20 overflow-hidden w-0",style:{width:`${v(0)*100}%`},children:jsxRuntimeExports.jsx("canvas",{ref:a,width:WAVE_WIDTH,height:WAVE_HEIGHT+25})})]},"wave"),jsxRuntimeExports.jsx("div",{className:clsx(durationClassName,"right-0"),children:jsxRuntimeExports.jsx(FormattedDuration,{seconds:h})})]}),(c==null?void 0:c.comments)&&jsxRuntimeExports.jsx(CommentBar,{comments:c.comments,track:e})]})})}function TrackSeekbar({track:e,queue:t,className:s}){const{duration:n,...i}=useTrackSeekbar(e,t);return jsxRuntimeExports.jsxs("div",{className:clsx("flex items-center gap-12",s),children:[jsxRuntimeExports.jsx("div",{className:"text-xs text-muted flex-shrink-0 min-w-40 text-right",children:i.value?jsxRuntimeExports.jsx(FormattedDuration,{seconds:i.value}):"0:00"}),jsxRuntimeExports.jsx(Slider,{trackColor:"neutral",thumbSize:"w-14 h-14",showThumbOnHoverOnly:!0,className:"flex-auto",width:"w-auto",...i}),jsxRuntimeExports.jsx("div",{className:"text-xs text-muted flex-shrink-0 min-w-40",children:jsxRuntimeExports.jsx(FormattedDuration,{seconds:n})})]})}function trackIsLocallyUploaded(e){return(e==null?void 0:e.src)!=null&&(e.src.startsWith("storage")||e.src.includes("storage/track_media"))}function useCreateComment(){return useMutation(e=>createComment(e),{onSuccess:(e,t)=>{toast(message("Comment posted")),queryClient.invalidateQueries(["comment",`${t.commentable.id}-${t.commentable.model_type}`])},onError:e=>showHttpErrorToast(e)})}function createComment({commentable:e,content:t,inReplyTo:s,...n}){const i={commentable_id:e.id,commentable_type:e.model_type,content:t,inReplyTo:s,...n};return apiClient.post("comment",i).then(a=>a.data)}function NewCommentForm({commentable:e,inReplyTo:t,onSuccess:s,className:n,autoFocus:i,payload:a,...o}){const{trans:u}=useTrans(),{user:l}=useAuth(),x=useCreateComment(),c=$df56164dff5785e2$export$4338b53315abf666(o.inputRef),[p,j]=reactExports.useState(!1),[g,R]=reactExports.useState(""),h=()=>{j(!1),c.current&&(c.current.blur(),R(""))};return jsxRuntimeExports.jsxs("form",{className:clsx("py-6 flex gap-24",n),onSubmit:y=>{y.preventDefault(),g&&!x.isLoading&&x.mutate({...a,commentable:e,content:g,inReplyTo:t},{onSuccess:()=>{h(),s==null||s()}})},children:[jsxRuntimeExports.jsx(Avatar,{size:"xl",circle:!0,src:l==null?void 0:l.avatar,label:l==null?void 0:l.display_name}),jsxRuntimeExports.jsxs("div",{className:"flex-auto",children:[jsxRuntimeExports.jsx("div",{className:"text-xs text-muted mb-10",children:jsxRuntimeExports.jsx(Trans,{message:"Comment as :name",values:{name:jsxRuntimeExports.jsx("span",{className:"font-medium text",children:l==null?void 0:l.display_name})}})}),jsxRuntimeExports.jsx(TextField,{inputRef:c,autoFocus:i,inputElementType:"textarea",inputClassName:"resize-none",value:g,onChange:y=>R(y.target.value),onFocus:()=>j(!0),onBlur:()=>{g||j(!1)},minLength:3,rows:p?3:1,placeholder:u(t?message("Write a reply"):message("Leave a comment"))}),p&&jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-12 justify-end mt-12",children:[jsxRuntimeExports.jsx(Button,{variant:"outline",onClick:()=>h(),children:jsxRuntimeExports.jsx(Trans,{message:"Cancel"})}),jsxRuntimeExports.jsx(Button,{variant:"outline",color:"primary",type:"submit",disabled:x.isLoading||g.length<3,children:jsxRuntimeExports.jsx(Trans,{message:"Comment"})})]})]})]})}function CommentBarNewCommentForm({commentable:e,className:t}){const{isLoggedIn:s}=useAuth(),{newCommentInputRef:n,newCommentPositionRef:i,setMarkerIsVisible:a}=reactExports.useContext(CommentBarContext);return s?jsxRuntimeExports.jsx(NewCommentForm,{inputRef:n,className:t,commentable:e,payload:{position:i.current},onSuccess:()=>{a(!1),invalidateWaveData(e.id)}}):null}function LikeButton({likeable:e,radius:t="rounded-full",disabled:s,...n}){const i=useAuthClickCapture(),a=useAddItemsToLibrary(),o=useRemoveItemsFromLibrary(),u=useLibraryStore(c=>c.has(e)),l=a.isLoading||o.isLoading,x=getLabels(e);return u?jsxRuntimeExports.jsx(Button,{...n,variant:"outline",radius:t,startIcon:jsxRuntimeExports.jsx(FavoriteIcon,{className:"text-primary"}),disabled:s||l,onClickCapture:i,onClick:()=>{o.mutate({likeables:[e]})},children:jsxRuntimeExports.jsx(Trans,{...x.removeLike})}):jsxRuntimeExports.jsx(Button,{...n,variant:"outline",radius:t,startIcon:jsxRuntimeExports.jsx(FavoriteBorderIcon,{}),disabled:s||l,onClickCapture:i,onClick:()=>{a.mutate({likeables:[e]})},children:jsxRuntimeExports.jsx(Trans,{...x.like})})}function getLabels(e){switch(e.model_type){case"artist":return{like:message("Follow"),removeLike:message("Following")};default:return{like:message("Like"),removeLike:message("Liked")}}}function RepostButton({item:e,className:t,size:s="xs",radius:n,disabled:i}){const a=useAuthClickCapture(),{player:o}=useSettings(),u=useToggleRepost(),l=useRepostsStore(x=>x.has(e));return o!=null&&o.enable_repost?jsxRuntimeExports.jsx(Button,{className:t,variant:"outline",size:s,radius:n,startIcon:jsxRuntimeExports.jsx(RepeatIcon,{className:clsx(l&&"text-primary")}),disabled:i||u.isLoading,onClickCapture:a,onClick:()=>u.mutate({repostable:e}),children:l?jsxRuntimeExports.jsx(Trans,{message:"Reposted"}):jsxRuntimeExports.jsx(Trans,{message:"Repost"})}):null}function MediaItemStats({item:e,className:t,showPlays:s=!0}){return jsxRuntimeExports.jsxs("div",{className:clsx("flex items-center gap-20 text-sm text-muted",t),children:[s&&jsxRuntimeExports.jsx(PlayCount,{item:e}),jsxRuntimeExports.jsx(LikesCount,{item:e}),e.model_type!=="artist"&&jsxRuntimeExports.jsx(RepostsCount,{item:e})]})}function PlayCount({item:e}){if(!e.plays)return null;const t=jsxRuntimeExports.jsx(FormattedNumber,{compactDisplay:"short",notation:"compact",value:e.plays});return jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:":count plays",values:{count:t}}),children:jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(PlayArrowFilledIcon,{size:"xs",className:"mr-4"}),t]})})}function LikesCount({item:e}){if(!e.likes_count)return null;const t=jsxRuntimeExports.jsx(FormattedNumber,{value:e.likes_count});return jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:":count likes",values:{count:t}}),children:jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(FavoriteIcon,{size:"xs",className:"mr-4"}),t]})})}function RepostsCount({item:e}){if(!e.reposts_count)return null;const t=jsxRuntimeExports.jsx(FormattedNumber,{value:e.reposts_count});return jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:":count reposts",values:{count:t}}),children:jsxRuntimeExports.jsxs("div",{className:"hidden @[566px]:block",children:[jsxRuntimeExports.jsx(RepeatIcon,{size:"xs",className:"mr-4"}),t]})})}function TrackActionsBar({item:e,managesItem:t,buttonClassName:s,buttonGap:n="mr-8",buttonSize:i="xs",buttonRadius:a="rounded",children:o,className:u}){const l=useIsMobileMediaQuery();return jsxRuntimeExports.jsxs("div",{className:clsx("flex items-center gap-24 justify-center md:justify-between overflow-hidden @container",u),children:[jsxRuntimeExports.jsxs("div",{children:[o,!l&&jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(LikeButton,{size:i,likeable:e,className:clsx(n,s),radius:a,disabled:t}),jsxRuntimeExports.jsx(RepostButton,{item:e,size:i,radius:a,disabled:t,className:clsx(n,s,"hidden @[840px]:inline-flex")})]}),!l&&jsxRuntimeExports.jsxs(DialogTrigger,{type:"modal",children:[jsxRuntimeExports.jsx(Button,{size:i,variant:"outline",startIcon:jsxRuntimeExports.jsx(ShareIcon,{}),className:clsx(n,s,"hidden @[660px]:inline-flex"),radius:a,children:jsxRuntimeExports.jsx(Trans,{message:"Share"})}),jsxRuntimeExports.jsx(ShareMediaDialog,{item:e})]}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",children:[jsxRuntimeExports.jsx(Button,{variant:"outline",size:i,startIcon:jsxRuntimeExports.jsx(MoreHorizIcon,{}),className:clsx(n,s),radius:a,children:jsxRuntimeExports.jsx(Trans,{message:"More"})}),jsxRuntimeExports.jsx(MoreDialog,{item:e})]})]}),!l&&jsxRuntimeExports.jsx(MediaItemStats,{item:e})]})}function MoreDialog({item:e}){return e.model_type==="track"?jsxRuntimeExports.jsx(TrackContextDialog,{tracks:[e]}):jsxRuntimeExports.jsx(AlbumContextDialog,{album:e})}const TrackListItem=reactExports.memo(({track:e,queue:t,reposter:s,className:n,hideArtwork:i=!1,hideActions:a=!1,linksInNewTab:o=!1})=>{var p;const{player:u}=useSettings(),l=useIsMobileMediaQuery();i=i||!!l;const{managesTrack:x}=useTrackPermissions([e]),c=(u==null?void 0:u.seekbar_type)==="waveform"&&trackIsLocallyUploaded(e);return jsxRuntimeExports.jsxs("div",{className:clsx("overflow-hidden",!i&&"flex gap-24",n),children:[!i&&jsxRuntimeExports.jsx(TrackImage,{track:e,className:"flex-shrink-0 rounded",size:"w-184 h-184"}),jsxRuntimeExports.jsxs("div",{className:"flex-auto min-w-0",children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-14",children:[jsxRuntimeExports.jsx(PlaybackToggleButton,{track:e,tracks:t,buttonType:"icon",color:"primary",variant:"flat",radius:"rounded-full",equalizerColor:"white"}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:"text-sm text-muted flex items-center gap-6",children:[jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists,target:o?"_blank":void 0}),s&&jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(RepeatIcon,{size:"xs"}),jsxRuntimeExports.jsx(UserProfileLink,{user:s,target:o?"_blank":void 0})]})]}),jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(TrackLink,{track:e,target:o?"_blank":void 0})})]}),jsxRuntimeExports.jsxs("div",{className:"ml-auto text-sm",children:[jsxRuntimeExports.jsx(FormattedRelativeTime,{date:e.created_at}),(p=e.genres)!=null&&p.length?jsxRuntimeExports.jsx(Chip,{className:"mt-6 w-max",size:"xs",children:jsxRuntimeExports.jsx(GenreLink,{genre:e.genres[0],target:o?"_blank":void 0})}):null]})]}),jsxRuntimeExports.jsx("div",{className:"mt-20",children:c?jsxRuntimeExports.jsx(CommentBarContextProvider,{disableCommenting:a,children:jsxRuntimeExports.jsx(WaveformWithComments,{track:e,queue:t})}):jsxRuntimeExports.jsx(TrackSeekbar,{track:e,queue:t})}),!a&&jsxRuntimeExports.jsx(TrackActionsBar,{item:e,managesItem:x,className:"mt-20"})]})]})});function WaveformWithComments({track:e,queue:t}){const{markerIsVisible:s}=reactExports.useContext(CommentBarContext);return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(Waveform,{track:e,queue:t}),jsxRuntimeExports.jsx(AnimatePresence,{mode:"wait",children:s&&jsxRuntimeExports.jsx(CommentBarNewCommentForm,{className:"mt-28 mb-8",commentable:e})})]})}function TrackList({tracks:e,query:t}){const s=useIsMobileMediaQuery();return e||(e=t?t.items:[]),s?t?jsxRuntimeExports.jsx(TrackTable,{tracks:e,tableBody:jsxRuntimeExports.jsx(VirtualTableBody,{query:t})}):jsxRuntimeExports.jsx(TrackTable,{tracks:e}):jsxRuntimeExports.jsxs("div",{children:[e.map(n=>jsxRuntimeExports.jsx(TrackListItem,{queue:e,track:n,className:"mb-40"},n.id)),t&&jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]})}function ChannelTrackList(e){var t;return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(ChannelHeading,{...e}),e.isNested?jsxRuntimeExports.jsx(TrackList,{tracks:(t=e.channel.content)==null?void 0:t.data}):jsxRuntimeExports.jsx(PaginatedList,{...e})]})}function PaginatedList({channel:e}){const t=usePaginatedChannelContent(e);return jsxRuntimeExports.jsx(TrackList,{query:t})}var functionDebounce=debounce;function debounce(e,t,s){var n=null,i=null,a=function(){n&&(clearTimeout(n),i=null,n=null)},o=function(){var l=i;a(),l&&l()},u=function(){if(!t)return e.apply(this,arguments);var l=this,x=arguments,c=s&&!n;if(a(),i=function(){e.apply(l,x)},n=setTimeout(function(){if(n=null,!c){var p=i;return i=null,p()}},t),c)return i()};return u.cancel=a,u.flush=o,u}function ChannelContentCarousel(e){var c;const{channel:t}=e,s=reactExports.useRef(null),n=reactExports.useRef(0),[i,a]=reactExports.useState(!1),[o,u]=reactExports.useState(!0),l=reactExports.useCallback(()=>{const p=s.current;p&&n.current&&(a(p.scrollLeft>0),u(p.scrollWidth-p.scrollLeft!==p.clientWidth))},[]);reactExports.useEffect(()=>{const p=s.current,j=functionDebounce(()=>l(),100);return p&&p.addEventListener("scroll",j),()=>p==null?void 0:p.removeEventListener("scroll",j)},[l]),reactExports.useLayoutEffect(()=>{const p=s.current;if(p){const j=p.children.item(0),g=new ResizeObserver(R=>{n.current=R[0].contentRect.width,l()});return j&&g.observe(j),()=>g.unobserve(p)}},[l]);const x=()=>n.current*(3-1);return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between gap-24 mb-14",children:[jsxRuntimeExports.jsx(ChannelHeading,{...e,margin:"mb-4"}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(IconButton,{disabled:!i,onClick:()=>{s.current&&s.current.scrollBy({left:-x()})},children:jsxRuntimeExports.jsx(KeyboardArrowLeftIcon,{})}),jsxRuntimeExports.jsx(IconButton,{disabled:!o,onClick:()=>{s.current&&s.current.scrollBy({left:x()})},children:jsxRuntimeExports.jsx(KeyboardArrowRightIcon,{})})]})]}),jsxRuntimeExports.jsx("div",{ref:s,className:"content-carousel content-grid relative w-full grid grid-flow-col grid-rows-[auto] overflow-x-auto overflow-y-hidden gap-24 snap-always snap-x snap-mandatory hidden-scrollbar scroll-smooth",children:(c=t.content)==null?void 0:c.data.map(p=>{var j;return jsxRuntimeExports.jsx(ChannelContentGridItem,{item:p,items:(j=t.content)==null?void 0:j.data},`${p.id}-${p.model_type}`)})})]})}function ChannelContent(e){const{channel:t,isNested:s}=e,n=t.config.contentModel,i=t.config.layout;return t.content?n===TRACK_MODEL&&i==="trackList"?jsxRuntimeExports.jsx(ChannelTrackList,{...e}):n===TRACK_MODEL&&i==="trackTable"?jsxRuntimeExports.jsx(ChannelTrackTable,{...e}):n===CHANNEL_MODEL?jsxRuntimeExports.jsx(NestedChannels,{...e}):t.config.carouselWhenNested&&s?jsxRuntimeExports.jsx(ChannelContentCarousel,{...e}):jsxRuntimeExports.jsx(ChannelContentGrid,{...e}):null}function NestedChannels({channel:e}){var t;return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(ChannelHeading,{channel:e}),(t=e.content)==null?void 0:t.data.map(s=>jsxRuntimeExports.jsx("div",{className:"mb-50",children:jsxRuntimeExports.jsx(ChannelContent,{channel:s,isNested:!0})},s.id))]})}function AdHost({slot:e,className:t}){var a;const s=useSettings(),{isSubscribed:n}=useAuth(),i=reactExports.useMemo(()=>dotObject.pick(`ads.${e}`,s),[e,s]);return(a=s.ads)!=null&&a.disable||n||!i?null:jsxRuntimeExports.jsx(InvariantAd,{className:t,slot:e,adCode:i})}const InvariantAd=reactExports.memo(({slot:e,adCode:t,className:s})=>{const n=reactExports.useRef(null),i=reactExports.useId();return reactExports.useEffect(()=>(n.current&&loadAdScripts(t,n.current).then(()=>{executeAdJavascript(t,i)}),()=>{delete window.google_ad_modifications}),[t,i]),jsxRuntimeExports.jsx("div",{ref:n,id:i,className:clsx("ad-host flex items-center justify-center w-full max-w-full overflow-hidden min-h-90 max-h-[600px]",`${e.replace(/\./g,"-")}-host`,s),dangerouslySetInnerHTML:{__html:getAdHtml(t)}})},()=>!1);function getAdHtml(e){return e==null?void 0:e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").trim()}function loadAdScripts(e,t){const s=[],n=/<script.*?src=['"](.*?)['"]/g;let i;for(;i=n.exec(e);)i[1]&&s.push(lazyLoader.loadAsset(i[1],{type:"js",parentEl:t}));return Promise.all(s)}function executeAdJavascript(adCode,id){const pattern=/<script\b[^>]*>([\s\S]*?)<\/script>/g;let content;for(;content=pattern.exec(adCode);)if(content[1]){const r=`var d = document.createElement('div'); d.innerHTML = $1; document.getElementById('${id}').appendChild(d.firstChild);`,toEval=content[1].replace(/document.write\((.+?)\);/,r);eval(toEval)}}function ChannelPage({slugOrId:e}){const t=useChannel(e);return t.data?jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(Helmet,{tags:t.data.seo}),jsxRuntimeExports.jsxs("div",{className:"pb-24",children:[jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsx(ChannelContent,{channel:t.data.channel},t.data.channel.id),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-34"})]})]}):jsxRuntimeExports.jsx(PageStatus,{query:t,loaderClassName:"absolute inset-0 m-auto"})}const endpoint=e=>{var s,n,i,a,o;const t=((n=(s=e.artists)==null?void 0:s[0])==null?void 0:n.name)||((o=(a=(i=e.album)==null?void 0:i.artists)==null?void 0:a[0])==null?void 0:o.name);return`search/audio/${e.id}/${doubleEncode(t)}/${doubleEncode(e.name)}`};let isSearchingForYoutubeVideo=!1;async function findYoutubeVideosForTrack(e,t){const s={queryKey:[endpoint(e)],queryFn:async()=>findMatch(e,t),staleTime:1/0},n=queryClient.getQueryData(s.queryKey)??await queryClient.fetchQuery(s);return isSearchingForYoutubeVideo=!1,(n==null?void 0:n.results)||[]}function findMatch(e,t){return isSearchingForYoutubeVideo=!0,apiClient.get(endpoint(e),{cancelToken:t==null?void 0:t.token}).then(s=>s.data)}function doubleEncode(e){return encodeURIComponent(encodeURIComponent(e))}const usePlayerOverlayStore=create()(immer((e,t)=>({isMaximized:!1,isQueueOpen:!1,open:()=>{e(s=>{s.isMaximized=!0,s.isQueueOpen=!1})},toggle:()=>{e(s=>{s.isMaximized=!s.isMaximized,s.isQueueOpen=!1})},toggleQueue:()=>{e(s=>{s.isQueueOpen=!s.isQueueOpen})}}))),playerOverlayState=usePlayerOverlayStore.getState();var YoutubeCommand=(e=>(e.Play="playVideo",e.Pause="pauseVideo",e.Stop="stopVideo",e.Seek="seekTo",e.Load="cueVideoById",e.Mute="mute",e.Unmute="unMute",e.SetVolume="setVolume",e.SetPlaybackRate="setPlaybackRate",e.SetPlaybackQuality="setPlaybackQuality",e))(YoutubeCommand||{}),YouTubePlayerState=(e=>(e[e.Unstarted=-1]="Unstarted",e[e.Ended=0]="Ended",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Buffering=3]="Buffering",e[e.Cued=5]="Cued",e))(YouTubePlayerState||{});const trackPlays=new Set,failedVideoId=" ",failedVideoIds=new Set;let tracksSkippedDueToError=0;async function resolveSrc(e){var n;const t=await findYoutubeVideosForTrack(e.meta),s=(n=t==null?void 0:t.find(i=>!failedVideoIds.has(`${i.id}`)))==null?void 0:n.id;return{...e,src:s||failedVideoId}}function setMediaSessionMetadata(e){var t,s,n,i;if("mediaSession"in navigator){const a=e.meta;if(!a)return;const o=a.image||((t=a.album)==null?void 0:t.image);navigator.mediaSession.metadata=new MediaMetadata({title:a.name,artist:(n=(s=a.artists)==null?void 0:s[0])==null?void 0:n.name,album:(i=a.album)==null?void 0:i.name,artwork:o?[{src:o,sizes:"300x300",type:"image/jpg"}]:void 0})}}var S;const playerStoreOptions={persistQueueInLocalStorage:!0,defaultVolume:(S=getBootstrapData().settings.player)==null?void 0:S.default_volume,setMediaSessionMetadata,youtube:{srcResolver:resolveSrc,onStateChange:e=>{e===YouTubePlayerState.Playing&&(tracksSkippedDueToError=0)}},onBeforePlay:()=>{var t;const e=getBootstrapData().settings.player;if((t=e==null?void 0:e.mobile)!=null&&t.auto_open_overlay&&window.matchMedia("(max-width: 768px)").matches)return playerOverlayState.open(),new Promise(s=>setTimeout(()=>s(),151))},loadMoreMediaItems:async e=>{if(e!=null&&e.groupId){const t=await loadMediaItemTracks(e.groupId,e.meta);return tracksToMediaItems(t)}},listeners:{cued:({state:{cuedMedia:e}})=>{var i;if(!e)return;const t=getBootstrapData().settings.branding.site_name;let s=`${e.meta.name}`;const n=(i=e.meta.artists)==null?void 0:i[0].name;n?s=`${s} - ${n} - ${t}`:s=`${s} - ${t}`,document.title=s},play:({state:{cuedMedia:e,pause:t}})=>{if(!userHasPlayPermission()){toast.danger(message("Your current plan does not allow music playback.")),t();return}e&&!trackPlays.has(e.meta.id)&&(trackPlays.add(e.meta.id),apiClient.post(`tracks/plays/${e.meta.id}/log`,{queueId:e.groupId}))},playbackEnd:({state:{cuedMedia:e}})=>{e&&trackPlays.delete(e.meta.id)},error:async({sourceEvent:e,state:{cuedMedia:t,providerApi:s,providerName:n,emit:i}})=>{const a=e;if(n==="youtube"&&s){logYoutubeError(a),a.videoId&&failedVideoIds.add(`${a.videoId}`);const o=t?await resolveSrc(t):null;o!=null&&o.src&&(o==null?void 0:o.src)!==failedVideoId?(await s.internalProviderApi.loadVideoById(o.src),s.play()):(tracksSkippedDueToError++,tracksSkippedDueToError<=2&&i("playbackEnd"))}else tracksSkippedDueToError=0}},onDestroy:()=>{tracksSkippedDueToError=0}};function logYoutubeError(e){const t=e==null?void 0:e.code;!e||!e.videoId||apiClient.post("youtube/log-client-error",{code:t,videoUrl:e.videoId})}function userHasPlayPermission(){const e=getBootstrapData().user,t=getBootstrapData().guest_role,s=(e==null?void 0:e.permissions)||(t==null?void 0:t.permissions);return(s==null?void 0:s.find(n=>n.name==="music.play"))!=null}const menuItemClassName=e=>clsx("h-44 px-12 mx-12 hover:bg-hover rounded-lg",e&&"text-primary");function Sidenav({className:e}){return jsxRuntimeExports.jsxs("div",{className:clsx("border-r py-12 bg-alt overflow-y-auto",e),children:[jsxRuntimeExports.jsx(Logo,{}),jsxRuntimeExports.jsx(CustomMenu,{className:"mt-24 items-stretch",menu:"sidebar-primary",orientation:"vertical",gap:"gap-none",iconClassName:"text-muted",itemClassName:({isActive:t})=>menuItemClassName(t)}),jsxRuntimeExports.jsxs("div",{className:"mt-48",children:[jsxRuntimeExports.jsx(SectionTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Your Music"})}),jsxRuntimeExports.jsx(CustomMenu,{className:"mt-12 text-sm items-stretch",menu:"sidebar-secondary",orientation:"vertical",gap:"gap-none",iconClassName:"text-muted",itemClassName:({isActive:t})=>menuItemClassName(t)}),jsxRuntimeExports.jsx(PlaylistSection,{})]})]})}function SectionTitle({children:e}){return jsxRuntimeExports.jsx("div",{className:"uppercase text-xs font-semibold text-muted mb-8 mx-24",children:e})}function Logo(){const{branding:e}=useSettings(),{trans:t}=useTrans(),n=useIsDarkMode()?e.logo_light:e.logo_dark;return jsxRuntimeExports.jsx(Link,{to:"/",className:"block flex-shrink-0 mx-18","aria-label":t({message:"Go to homepage"}),children:jsxRuntimeExports.jsx("img",{className:"block w-auto h-56 max-w-[188px] object-contain",src:n,alt:t({message:"Site logo"})})})}function PlaylistSection(){var n;const{data:e}=useAuthUserPlaylists(),t=useNavigate(),s=useAuthClickCapture();return jsxRuntimeExports.jsxs("div",{className:"mt-40",children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between mr-24",children:[jsxRuntimeExports.jsx(SectionTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Playlists"})}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"modal",onClose:i=>{i&&t(getPlaylistLink(i))},children:[jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0 text-muted",onClickCapture:s,children:jsxRuntimeExports.jsx(PlaylistAddIcon,{})}),jsxRuntimeExports.jsx(CreatePlaylistDialog,{})]})]}),(n=e==null?void 0:e.playlists)==null?void 0:n.map(i=>jsxRuntimeExports.jsx(NavLink,{to:getPlaylistLink(i),className:({isActive:a})=>clsx(menuItemClassName(a),"flex items-center text-sm"),children:jsxRuntimeExports.jsx("div",{className:"overflow-hidden overflow-ellipsis",children:i.name})},i.id))]})}function useIsMediaPlaying(e,t){return usePlayerStore(s=>{var n;return s.isPlaying&&((n=s.cuedMedia)==null?void 0:n.id)===e&&(!t||t===s.cuedMedia.groupId)})}function useMiniPlayerIsHidden(){const{player:e}=useSettings(),t=usePlayerStore(i=>i.cuedMedia!=null),s=usePlayerStore(i=>i.providerName==="htmlAudio"),n=useIsMobileMediaQuery();return(e==null?void 0:e.hide_video)||!t||n||s}function QueueTrackContextDialog({queueItems:e}){return jsxRuntimeExports.jsx(TrackContextDialog,{tracks:e.map(t=>t.meta),showAddToQueueButton:!1,children:()=>jsxRuntimeExports.jsx(RemoveFromQueueContextButton,{queueItems:e})})}function RemoveFromQueueContextButton({queueItems:e}){const{close:t}=useDialogContext(),s=usePlayerActions();return jsxRuntimeExports.jsx(ContextMenuButton,{onClick:async()=>{t(),s.removeFromQueue(e)},children:jsxRuntimeExports.jsx(Trans,{message:"Remove from queue"})})}function QueueSidenav(){const e=usePlayerStore(s=>s.shuffledQueue),t=useMiniPlayerIsHidden();return jsxRuntimeExports.jsx("div",{className:"border-l bg h-full",children:jsxRuntimeExports.jsx("div",{className:clsx("overflow-y-auto overflow-x-hidden",t?"h-full":"h-[calc(100%-213px)]"),children:e.map((s,n)=>jsxRuntimeExports.jsx(QueueItem,{media:s},`${s.id}-${n}`))})})}function QueueItem({media:e}){const t=usePlayerStore(a=>{var o;return((o=a.cuedMedia)==null?void 0:o.id)===e.id}),s=useIsMediaPlaying(e.id),[n,i]=reactExports.useState(!1);return e.meta?jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,placement:"bottom-start",children:[jsxRuntimeExports.jsxs("div",{onPointerEnter:()=>i(!0),onPointerLeave:()=>i(!1),className:clsx("flex items-center gap-10 p-8 border-b",t&&"bg-primary/80 text-white"),children:[jsxRuntimeExports.jsxs("div",{className:"relative overflow-hidden",children:[jsxRuntimeExports.jsx(TrackImage,{className:"w-34 h-34 flex-shrink-0 rounded object-cover",track:e.meta}),(n||s)&&jsxRuntimeExports.jsx(TogglePlaybackOverlay,{media:e,isHover:n})]}),jsxRuntimeExports.jsxs("div",{className:"flex-auto max-w-180 whitespace-nowrap",children:[jsxRuntimeExports.jsx("div",{className:"text-sm overflow-hidden overflow-ellipsis",children:e.meta.name}),jsxRuntimeExports.jsx(ArtistLinks,{className:"text-xs overflow-hidden overflow-ellipsis",linkClassName:t?"text-inherit":"text-muted",artists:e.meta.artists})]})]}),jsxRuntimeExports.jsx(QueueTrackContextDialog,{queueItems:[e]})]}):null}function TogglePlaybackOverlay({media:e,isHover:t}){const s=useIsMediaPlaying(e.id),{trans:n}=useTrans(),i=usePlayerActions();if(!e.meta)return null;let a;return s?a=jsxRuntimeExports.jsx("button",{"aria-label":n(message("Pause :name",{values:{name:e.meta.name}})),tabIndex:0,onClick:()=>i.pause(),children:t?jsxRuntimeExports.jsx(PauseIcon,{}):jsxRuntimeExports.jsx(EqualizerImage,{color:"white"})}):a=jsxRuntimeExports.jsx("button",{"aria-label":n(message("Play :name",{values:{name:e.meta.name}})),tabIndex:0,onClick:()=>i.play(e),children:jsxRuntimeExports.jsx(PlayArrowFilledIcon,{})}),jsxRuntimeExports.jsx("div",{className:"absolute top-0 left-0 w-full h-full bg-black/50 rounded flex items-center justify-center text-white",children:a})}function useCuedTrack(){const e=usePlayerStore(t=>t.cuedMedia);if(e)return e.meta}function useCurrentTime(){const{subscribe:e,getCurrentTime:t}=usePlayerActions(),s=usePlayerStore(a=>{var o;return a.providerName&&((o=a.cuedMedia)!=null&&o.id)?`${a.providerName}+${a.cuedMedia.id}`:null}),[n,i]=reactExports.useState(()=>t());return reactExports.useEffect(()=>e({progress:({currentTime:a})=>i(a)}),[e]),reactExports.useEffect(()=>{s&&i(t())},[s,t]),n}const MediaPlayIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M10.6667 6.6548C10.6667 6.10764 11.2894 5.79346 11.7295 6.11862L24.377 15.4634C24.7377 15.7298 24.7377 16.2692 24.3771 16.5357L11.7295 25.8813C11.2895 26.2065 10.6667 25.8923 10.6667 25.3451L10.6667 6.6548Z"}),"MediaPlay","0 0 32 32"),MediaPauseIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M8.66667 6.66667C8.29848 6.66667 8 6.96514 8 7.33333V24.6667C8 25.0349 8.29848 25.3333 8.66667 25.3333H12.6667C13.0349 25.3333 13.3333 25.0349 13.3333 24.6667V7.33333C13.3333 6.96514 13.0349 6.66667 12.6667 6.66667H8.66667Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M19.3333 6.66667C18.9651 6.66667 18.6667 6.96514 18.6667 7.33333V24.6667C18.6667 25.0349 18.9651 25.3333 19.3333 25.3333H23.3333C23.7015 25.3333 24 25.0349 24 24.6667V7.33333C24 6.96514 23.7015 6.66667 23.3333 6.66667H19.3333Z"},"1")],"MediaPause","0 0 32 32");function PlayButton({size:e="md",iconSize:t="xl",color:s,stopPropagation:n}){const i=usePlayerStore(l=>l.isPlaying),a=usePlayerStore(l=>l.providerReady),o=usePlayerActions(),u=i?jsxRuntimeExports.jsx(Trans,{message:"Pause (k)"}):jsxRuntimeExports.jsx(Trans,{message:"Play (k)"});return jsxRuntimeExports.jsx(Tooltip,{label:u,children:jsxRuntimeExports.jsx(IconButton,{color:s,size:e,iconSize:t,disabled:!a,onClick:l=>{n&&l.stopPropagation(),i?o.pause():o.play()},children:i?jsxRuntimeExports.jsx(MediaPauseIcon,{}):jsxRuntimeExports.jsx(MediaPlayIcon,{})})})}const MediaPreviousIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M25.1377 6.78532C25.5778 6.46017 26.2005 6.77434 26.2005 7.32151V24.6785C26.2005 25.2257 25.5777 25.5398 25.1377 25.2147L13.3924 16.5358C13.0317 16.2693 13.0317 15.7299 13.3924 15.4634L25.1377 6.78532Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M8 6.6667C8.36819 6.6667 8.66667 6.96518 8.66667 7.33337V24.6667C8.66667 25.0349 8.36819 25.3334 8 25.3334H6C5.63181 25.3334 5.33333 25.0349 5.33333 24.6667V7.33337C5.33333 6.96518 5.63181 6.6667 6 6.6667H8Z"},"1")],"MediaPrevious","0 0 32 32");function PreviousButton({size:e="md",iconSize:t,color:s,className:n,stopPropagation:i}){const a=usePlayerActions(),o=usePlayerStore(u=>u.providerReady);return jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Previous"}),children:jsxRuntimeExports.jsx(IconButton,{disabled:!o,size:e,color:s,iconSize:t,className:n,onClick:u=>{i&&u.stopPropagation(),a.playPrevious()},children:jsxRuntimeExports.jsx(MediaPreviousIcon,{})})})}const MediaNextIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M6.39617 6.78532C5.9561 6.46017 5.33334 6.77434 5.33334 7.32151V24.6785C5.33334 25.2257 5.95612 25.5398 6.39619 25.2147L18.1415 16.5358C18.5021 16.2693 18.5021 15.7299 18.1415 15.4634L6.39617 6.78532Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M23.5339 6.6667C23.1657 6.6667 22.8672 6.96518 22.8672 7.33337V24.6667C22.8672 25.0349 23.1657 25.3334 23.5339 25.3334H25.5339C25.902 25.3334 26.2005 25.0349 26.2005 24.6667V7.33337C26.2005 6.96518 25.902 6.6667 25.5339 6.6667H23.5339Z"},"1")],"MediaNext","0 0 32 32");function NextButton({size:e="md",iconSize:t,color:s,className:n,stopPropagation:i}){const a=usePlayerActions(),o=usePlayerStore(u=>u.providerReady);return jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Next"}),children:jsxRuntimeExports.jsx(IconButton,{disabled:!o,size:e,color:s,iconSize:t,className:n,onClick:u=>{i&&u.stopPropagation(),a.playNext()},children:jsxRuntimeExports.jsx(MediaNextIcon,{})})})}function BufferingIndicator(){const e=reactExports.useContext(PlayerStoreContext),[t,s]=reactExports.useState(!1),[n,i]=reactExports.useState(!1);return reactExports.useEffect(()=>e.subscribe(a=>a.isBuffering,a=>{a||isSearchingForYoutubeVideo?(i(!0),setTimeout(()=>{s(!0)})):s(!1)}),[e]),jsxRuntimeExports.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",fill:"none",className:clsx("absolute -top-3 -left-3 z-10 transition-opacity duration-300 pointer-events-none",t?"opacity-100":"opacity-0",n&&"animate-spin"),onTransitionEnd:()=>{t||i(!1)},children:[jsxRuntimeExports.jsx("g",{clipPath:"url(#a)",children:jsxRuntimeExports.jsx("path",{stroke:"url(#b)",strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:"10",d:"M45.72 31.644c-1.016 3.036-2.777 5.84-5.116 8.301-8.846 9.161-23.386 9.5-32.547.654-9.16-8.845-9.416-23.44-.654-32.546"})}),jsxRuntimeExports.jsxs("defs",{children:[jsxRuntimeExports.jsxs("linearGradient",{id:"b",x1:"7.863",x2:"45.527",y1:"7.178",y2:"31.53",gradientUnits:"userSpaceOnUse",children:[jsxRuntimeExports.jsx("stop",{stopColor:"currentColor"}),jsxRuntimeExports.jsx("stop",{offset:"1",stopColor:"currentColor",stopOpacity:"0"})]}),jsxRuntimeExports.jsx("clipPath",{children:jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M0 0h48v48H0z"})})]})]})}function MobilePlayerControls(){return jsxRuntimeExports.jsxs("div",{className:"fixed bottom-0 left-0 right-0 w-[calc(100%-20px)] mx-auto bg-background/95",children:[jsxRuntimeExports.jsx(PlayerControls,{}),jsxRuntimeExports.jsx(MobileNavbar,{})]})}function PlayerControls(){return usePlayerStore(t=>t.cuedMedia!=null)?jsxRuntimeExports.jsxs("div",{className:"bg-chip rounded p-6 flex items-center gap-24 justify-between shadow relative",onClick:()=>{playerOverlayState.toggle()},children:[jsxRuntimeExports.jsx(QueuedTrack$2,{}),jsxRuntimeExports.jsx(PlaybackButtons$1,{}),jsxRuntimeExports.jsx(PlayerProgressBar,{})]}):null}function QueuedTrack$2(){var t;const e=useCuedTrack();return e?jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-10 min-w-0 flex-auto",children:[jsxRuntimeExports.jsx(TrackImage,{className:"rounded w-36 h-36 object-cover",track:e}),jsxRuntimeExports.jsxs("div",{className:"flex-auto whitespace-nowrap overflow-hidden",children:[jsxRuntimeExports.jsx("div",{className:"text-sm font-medium overflow-hidden overflow-ellipsis",children:e.name}),jsxRuntimeExports.jsx("div",{className:"text-xs text-muted overflow-hidden overflow-ellipsis",children:(t=e.artists)==null?void 0:t.map(s=>s.name).join(", ")})]})]}):null}function PlaybackButtons$1(){return jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-center",children:[jsxRuntimeExports.jsx(PreviousButton,{stopPropagation:!0}),jsxRuntimeExports.jsxs("div",{className:"relative",children:[jsxRuntimeExports.jsx(BufferingIndicator,{}),jsxRuntimeExports.jsx(PlayButton,{size:"md",iconSize:"lg",stopPropagation:!0})]}),jsxRuntimeExports.jsx(NextButton,{stopPropagation:!0})]})}function PlayerProgressBar(){const e=usePlayerStore(s=>s.mediaDuration),t=useCurrentTime();return jsxRuntimeExports.jsx(ProgressBar,{size:"xs",className:"absolute left-0 right-0 bottom-0",progressColor:"bg-white",trackColor:"bg-white/10",trackHeight:"h-2",radius:"rounded-none",minValue:0,maxValue:e,value:t})}function MobileNavbar(){const e=useCustomMenu("mobile-bottom");return e?jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-center gap-30 my-12",children:[e.items.map(t=>jsxRuntimeExports.jsx(CustomMenuItem,{unstyled:!0,iconClassName:"block mx-auto mb-6",iconSize:"md",className:({isActive:s})=>clsx("text-xs whitespace-nowrap overflow-hidden",s&&"font-bold"),item:t},t.id)),jsxRuntimeExports.jsx(AccountButton,{})]}):null}function AccountButton(){const{user:e}=useAuth(),t=!!(e!=null&&e.unread_notifications_count),s=useNavigate(),{registration:n}=useSettings(),i=usePrimaryArtistForCurrentUser(),{player:a}=useSettings(),o=reactExports.useMemo(()=>i?[jsxRuntimeExports.jsx(Item,{value:"author",startIcon:jsxRuntimeExports.jsx(MicIcon,{}),onSelected:()=>{s(getArtistLink(i))},children:jsxRuntimeExports.jsx(Trans,{message:"Artist profile"})},"author")]:a!=null&&a.show_become_artist_btn?[jsxRuntimeExports.jsx(Item,{value:"author",startIcon:jsxRuntimeExports.jsx(MicIcon,{}),onSelected:()=>{s("/backstage/requests")},children:jsxRuntimeExports.jsx(Trans,{message:"Become an author"})},"author")]:[],[i,s,a==null?void 0:a.show_become_artist_btn]),u=jsxRuntimeExports.jsxs("button",{className:"text-xs",children:[jsxRuntimeExports.jsx(Badge,{badgeClassName:"mb-6",badgeLabel:e==null?void 0:e.unread_notifications_count,badgeIsVisible:t,children:jsxRuntimeExports.jsx(PersonIcon,{size:"md"})}),jsxRuntimeExports.jsx("div",{className:"text-xs",children:jsxRuntimeExports.jsx(Trans,{message:"Account"})})]});return e?jsxRuntimeExports.jsx(NavbarAuthMenu,{items:o,children:u}):jsxRuntimeExports.jsxs(MenuTrigger,{children:[u,jsxRuntimeExports.jsxs(Menu,{children:[jsxRuntimeExports.jsx(Item,{value:"login",onSelected:()=>s("/login"),children:jsxRuntimeExports.jsx(Trans,{message:"Login"})}),!n.disable&&jsxRuntimeExports.jsx(Item,{value:"register",onSelected:()=>s("/register"),children:jsxRuntimeExports.jsx(Trans,{message:"Register"})})]})]})}function Seekbar({trackColor:e,fillColor:t,className:s}){const{pause:n,seek:i,setIsSeeking:a,play:o,getState:u}=usePlayerActions(),l=usePlayerStore(g=>g.mediaDuration),x=usePlayerStore(g=>g.providerReady),c=usePlayerStore(g=>g.pauseWhileSeeking),p=useCurrentTime(),j=reactExports.useRef(!1);return jsxRuntimeExports.jsx(Slider,{fillColor:t,trackColor:e,thumbSize:"w-14 h-14",showThumbOnHoverOnly:!0,className:s,width:"w-auto",isDisabled:!x,value:p,minValue:0,maxValue:l,onPointerDown:()=>{a(!0),c&&(j.current=u().isPlaying||u().isBuffering,n())},onChange:g=>{u().emit("progress",{currentTime:g}),i(g)},onChangeEnd:()=>{a(!1),c&&j.current&&(o(),j.current=!1)}})}function FormattedCurrentTime({className:e}){const t=usePlayerStore(n=>n.mediaDuration),s=useCurrentTime();return jsxRuntimeExports.jsx("span",{className:e,children:jsxRuntimeExports.jsx(FormattedDuration,{seconds:s,addZeroToFirstUnit:t>=600})})}function FormattedPlayerDuration({className:e}){const t=usePlayerStore(s=>s.mediaDuration);return jsxRuntimeExports.jsx("span",{className:e,children:jsxRuntimeExports.jsx(FormattedDuration,{seconds:t,addZeroToFirstUnit:t>=600})})}function MainSeekbar(){return jsxRuntimeExports.jsx(reactExports.Fragment,{children:jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-12",children:[jsxRuntimeExports.jsx("div",{className:"text-xs text-muted flex-shrink-0 min-w-40 text-right",children:jsxRuntimeExports.jsx(FormattedCurrentTime,{})}),jsxRuntimeExports.jsx(Seekbar,{className:"flex-auto",trackColor:"neutral"}),jsxRuntimeExports.jsx("div",{className:"text-xs text-muted flex-shrink-0 min-w-40",children:jsxRuntimeExports.jsx(FormattedPlayerDuration,{})})]})})}const MediaShuffleIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M23.7295 5.65252C23.2894 5.32737 22.6667 5.64155 22.6667 6.18871V7.86672C22.6667 7.94036 22.607 8.00005 22.5333 8.00005H21.3333C18.6228 8.00005 16.2268 9.34843 14.7798 11.411C14.7251 11.489 14.6083 11.489 14.5536 11.411C13.1065 9.34843 10.7106 8.00005 8.00001 8.00005H6.00001C5.63182 8.00005 5.33334 8.29853 5.33334 8.66672V10.3998C5.33334 10.768 5.63182 11.0665 6.00001 11.0665H8.00001C10.724 11.0665 12.9336 13.2748 12.9336 16.0001C12.9336 18.7253 10.724 20.9336 8.00001 20.9336H6.00001C5.63182 20.9336 5.33334 21.2321 5.33334 21.6003V23.3334C5.33334 23.7016 5.63182 24.0001 6.00001 24.0001H8.00001C10.7106 24.0001 13.1065 22.6517 14.5536 20.5891C14.6083 20.5111 14.7251 20.5111 14.7798 20.5891C16.2268 22.6517 18.6228 24.0001 21.3333 24.0001H22.5333C22.607 24.0001 22.6667 24.0597 22.6667 24.1334V25.8113C22.6667 26.3585 23.2895 26.6727 23.7295 26.3475L28.2568 23.0022C28.6175 22.7357 28.6174 22.1963 28.2568 21.9298L23.7295 18.5848C23.2894 18.2597 22.6667 18.5738 22.6667 19.121V20.8003C22.6667 20.874 22.607 20.9336 22.5333 20.9336H21.3333C18.6094 20.9336 16.3997 18.7253 16.3997 16.0001C16.3997 13.2748 18.6094 11.0665 21.3333 11.0665H22.5333C22.607 11.0665 22.6667 11.1262 22.6667 11.1998V12.879C22.6667 13.4262 23.2895 13.7404 23.7295 13.4152L28.2568 10.0699C28.6175 9.8034 28.6174 9.26401 28.2568 8.99753L23.7295 5.65252Z"}),"MediaShuffle","0 0 32 32"),MediaShuffleOnIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M22.6666 6.18871C22.6666 5.64155 23.2894 5.32737 23.7295 5.65252L28.2567 8.99753C28.6174 9.26401 28.6174 9.8034 28.2568 10.0699L23.7295 13.4152C23.2894 13.7404 22.6666 13.4262 22.6666 12.879V11.1998C22.6666 11.1262 22.607 11.0665 22.5333 11.0665H21.3333C18.6094 11.0665 16.3997 13.2748 16.3997 16.0001C16.3997 18.7253 18.6094 20.9336 21.3333 20.9336H22.5333C22.607 20.9336 22.6666 20.874 22.6666 20.8003V19.121C22.6666 18.5738 23.2894 18.2597 23.7295 18.5848L28.2567 21.9298C28.6174 22.1963 28.6174 22.7357 28.2568 23.0022L23.7295 26.3475C23.2894 26.6727 22.6666 26.3585 22.6666 25.8113V24.1334C22.6666 24.0597 22.607 24.0001 22.5333 24.0001H21.3333C18.6227 24.0001 16.2268 22.6517 14.7798 20.5891C14.725 20.5111 14.6082 20.5111 14.5535 20.5891C13.1065 22.6517 10.7106 24.0001 7.99998 24.0001H5.99998C5.63179 24.0001 5.33331 23.7016 5.33331 23.3334V21.6003C5.33331 21.2321 5.63179 20.9336 5.99998 20.9336H7.99998C10.7239 20.9336 12.9336 18.7253 12.9336 16.0001C12.9336 13.2748 10.7239 11.0665 7.99998 11.0665H5.99998C5.63179 11.0665 5.33331 10.768 5.33331 10.3998V8.66672C5.33331 8.29853 5.63179 8.00005 5.99998 8.00005H7.99998C10.7106 8.00005 13.1065 9.34843 14.5535 11.411C14.6082 11.489 14.725 11.489 14.7798 11.411C16.2268 9.34843 18.6227 8.00005 21.3333 8.00005H22.5333C22.607 8.00005 22.6666 7.94036 22.6666 7.86672V6.18871Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M28.6666 18.0001C29.7712 18.0001 30.6666 17.1046 30.6666 16.0001C30.6666 14.8955 29.7712 14.0001 28.6666 14.0001C27.5621 14.0001 26.6666 14.8955 26.6666 16.0001C26.6666 17.1046 27.5621 18.0001 28.6666 18.0001Z"},"1")],"MediaShuffleOn","0 0 32 32");function ShuffleButton({size:e="md",iconSize:t,color:s,activeColor:n="primary",className:i}){const a=usePlayerStore(x=>x.providerReady),o=usePlayerStore(x=>x.shuffling),u=usePlayerActions(),l=o?jsxRuntimeExports.jsx(Trans,{message:"Disable shuffle"}):jsxRuntimeExports.jsx(Trans,{message:"Enable shuffle"});return jsxRuntimeExports.jsx(Tooltip,{label:l,children:jsxRuntimeExports.jsx(IconButton,{disabled:!a,size:e,color:o?n:s,iconSize:t,className:i,onClick:()=>{u.toggleShuffling()},children:o?jsxRuntimeExports.jsx(MediaShuffleOnIcon,{}):jsxRuntimeExports.jsx(MediaShuffleIcon,{})})})}const MediaRepeatIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M22.1969 4.98846C21.7569 4.66331 21.1341 4.97748 21.1341 5.52465V7.20266C21.1341 7.27629 21.0744 7.33599 21.0008 7.33599H11.1341C8.18859 7.33599 5.80078 9.72381 5.80078 12.6693V14.6693C5.80078 15.0375 6.09925 15.336 6.46744 15.336H8.20078C8.56897 15.336 8.86744 15.0375 8.86744 14.6693V13.0691C8.86744 11.5963 10.0613 10.4024 11.5341 10.4024H21.0008C21.0744 10.4024 21.1341 10.4621 21.1341 10.5357V12.215C21.1341 12.7621 21.7569 13.0763 22.197 12.7511L26.7242 9.40583C27.0849 9.13934 27.0849 8.59995 26.7242 8.33347L22.1969 4.98846Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M10.8652 24.7975C10.8652 24.7238 10.9249 24.6641 10.9986 24.6641H20.8652C23.8108 24.6641 26.1986 22.2763 26.1986 19.3308V17.3308C26.1986 16.9626 25.9001 16.6641 25.5319 16.6641H23.7986C23.4304 16.6641 23.1319 16.9626 23.1319 17.3308V18.931C23.1319 20.4038 21.938 21.5977 20.4652 21.5977H10.9986C10.9249 21.5977 10.8652 21.538 10.8652 21.4644V19.7851C10.8652 19.238 10.2425 18.9238 9.80239 19.249L5.27512 22.5943C4.91447 22.8608 4.91448 23.4002 5.27514 23.6666L9.80241 27.0116C10.2425 27.3368 10.8652 27.0226 10.8652 26.4755V24.7975Z"},"1")],"MediaRepeat","0 0 32 32"),MediaRepeatOnIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M22.1969 4.98846C21.7569 4.66331 21.1341 4.97748 21.1341 5.52465V7.20266C21.1341 7.27629 21.0744 7.33599 21.0008 7.33599H11.1341C8.18859 7.33599 5.80078 9.72381 5.80078 12.6693V14.6693C5.80078 15.0375 6.09925 15.336 6.46744 15.336H8.20078C8.56897 15.336 8.86744 15.0375 8.86744 14.6693V13.0691C8.86744 11.5963 10.0613 10.4024 11.5341 10.4024H21.0008C21.0744 10.4024 21.1341 10.4621 21.1341 10.5357V12.215C21.1341 12.7621 21.7569 13.0763 22.197 12.7511L26.7242 9.40583C27.0849 9.13934 27.0849 8.59995 26.7242 8.33347L22.1969 4.98846Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M16 18.0001C17.1046 18.0001 18 17.1046 18 16.0001C18 14.8955 17.1046 14.0001 16 14.0001C14.8954 14.0001 14 14.8955 14 16.0001C14 17.1046 14.8954 18.0001 16 18.0001Z"},"1"),jsxRuntimeExports.jsx("path",{d:"M20.8652 24.6641H10.9986C10.9249 24.6641 10.8652 24.7238 10.8652 24.7975V26.4755C10.8652 27.0226 10.2425 27.3368 9.80241 27.0116L5.27514 23.6666C4.91448 23.4002 4.91447 22.8608 5.27512 22.5943L9.80239 19.249C10.2425 18.9238 10.8652 19.238 10.8652 19.7851V21.4644C10.8652 21.538 10.9249 21.5977 10.9986 21.5977H20.4652C21.938 21.5977 23.1319 20.4038 23.1319 18.931V17.3308C23.1319 16.9626 23.4304 16.6641 23.7986 16.6641H25.5319C25.9001 16.6641 26.1986 16.9626 26.1986 17.3308V19.3308C26.1986 22.2763 23.8108 24.6641 20.8652 24.6641Z"},"2")],"MediaRepeatOn","0 0 32 32");function RepeatButton({size:e="md",iconSize:t,color:s,activeColor:n="primary",className:i}){const a=usePlayerStore(x=>x.providerReady),o=usePlayerStore(x=>x.repeat),u=usePlayerActions();let l;return o==="all"?l=jsxRuntimeExports.jsx(Trans,{message:"Enable repeat one"}):o==="one"?l=jsxRuntimeExports.jsx(Trans,{message:"Disable repeat"}):l=jsxRuntimeExports.jsx(Trans,{message:"Enable repeat"}),jsxRuntimeExports.jsx(Tooltip,{label:l,children:jsxRuntimeExports.jsx(IconButton,{disabled:!a,size:e,color:o?n:s,iconSize:t,className:i,onClick:()=>{u.toggleRepeatMode()},children:o==="one"?jsxRuntimeExports.jsx(MediaRepeatOnIcon,{}):jsxRuntimeExports.jsx(MediaRepeatIcon,{})})})}function PlaybackControls({className:e}){return jsxRuntimeExports.jsxs("div",{className:e,children:[jsxRuntimeExports.jsx(PlaybackButtons,{}),jsxRuntimeExports.jsx(MainSeekbar,{})]})}function PlaybackButtons(){const e=useIsMobileMediaQuery();return jsxRuntimeExports.jsxs("div",{className:clsx("flex items-center justify-center gap-6",e&&"mb-20"),children:[jsxRuntimeExports.jsx(ShuffleButton,{iconSize:e?"md":"sm"}),jsxRuntimeExports.jsx(PreviousButton,{size:"md"}),jsxRuntimeExports.jsxs("div",{className:"relative",children:[jsxRuntimeExports.jsx(BufferingIndicator,{}),jsxRuntimeExports.jsx(PlayButton,{size:"md",iconSize:"xl"})]}),jsxRuntimeExports.jsx(NextButton,{size:"md"}),jsxRuntimeExports.jsx(RepeatButton,{iconSize:e?"md":"sm"})]})}function LyricsButton(){const{player:e}=useSettings(),t=useCuedTrack();return!t||e!=null&&e.hide_lyrics?null:jsxRuntimeExports.jsxs(DialogTrigger,{type:"modal",children:[jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Lyrics"}),children:jsxRuntimeExports.jsx(IconButton,{children:jsxRuntimeExports.jsx(MediaMicrophoneIcon,{})})}),jsxRuntimeExports.jsx(LyricsDialog,{track:t})]})}function DownloadTrackButton(){const{player:e,base_url:t}=useSettings(),s=useCuedTrack(),{hasPermission:n}=useAuth();return!(e!=null&&e.enable_download)||!s||!trackIsLocallyUploaded(s)||!n("music.download")?null:jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Download"}),children:jsxRuntimeExports.jsx(IconButton,{onClick:()=>{downloadFileFromUrl(`${t}/api/v1/tracks/${s.id}/download`)},children:jsxRuntimeExports.jsx(DownloadIcon,{})})})}const MediaQueueListIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.33335 6C6.96516 6 6.66669 6.29848 6.66669 6.66667V13.3333C6.66669 13.7015 6.96516 14 7.33335 14H24.6667C25.0349 14 25.3334 13.7015 25.3334 13.3333V6.66667C25.3334 6.29848 25.0349 6 24.6667 6H7.33335ZM9.46669 8.66667C9.39305 8.66667 9.33335 8.72636 9.33335 8.8V11.2C9.33335 11.2736 9.39305 11.3333 9.46669 11.3333H22.5334C22.607 11.3333 22.6667 11.2736 22.6667 11.2V8.8C22.6667 8.72636 22.607 8.66667 22.5334 8.66667H9.46669Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M6.66669 18C6.66669 17.6318 6.96516 17.3333 7.33335 17.3333H24.6667C25.0349 17.3333 25.3334 17.6318 25.3334 18V19.3333C25.3334 19.7015 25.0349 20 24.6667 20H7.33335C6.96516 20 6.66669 19.7015 6.66669 19.3333V18Z"},"1"),jsxRuntimeExports.jsx("path",{d:"M6.66669 24C6.66669 23.6318 6.96516 23.3333 7.33335 23.3333H24.6667C25.0349 23.3333 25.3334 23.6318 25.3334 24V25.3333C25.3334 25.7015 25.0349 26 24.6667 26H7.33335C6.96516 26 6.66669 25.7015 6.66669 25.3333V24Z"},"2")],"MediaQueueList","0 0 32 32"),MediaMuteIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M17.5091 24.6594C17.5091 25.2066 16.8864 25.5208 16.4463 25.1956L9.44847 20.0252C9.42553 20.0083 9.39776 19.9991 9.36923 19.9991H4.66667C4.29848 19.9991 4 19.7006 4 19.3325V12.6658C4 12.2976 4.29848 11.9991 4.66667 11.9991H9.37115C9.39967 11.9991 9.42745 11.99 9.45039 11.973L16.4463 6.8036C16.8863 6.47842 17.5091 6.79259 17.5091 7.33977L17.5091 24.6594Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M28.8621 13.6422C29.1225 13.3818 29.1225 12.9597 28.8621 12.6994L27.9193 11.7566C27.659 11.4962 27.2368 11.4962 26.9765 11.7566L24.7134 14.0197C24.6613 14.0717 24.5769 14.0717 24.5248 14.0197L22.262 11.7568C22.0016 11.4964 21.5795 11.4964 21.3191 11.7568L20.3763 12.6996C20.116 12.9599 20.116 13.382 20.3763 13.6424L22.6392 15.9053C22.6913 15.9573 22.6913 16.0418 22.6392 16.0938L20.3768 18.3562C20.1165 18.6166 20.1165 19.0387 20.3768 19.299L21.3196 20.2419C21.58 20.5022 22.0021 20.5022 22.2624 20.2418L24.5248 17.9795C24.5769 17.9274 24.6613 17.9274 24.7134 17.9795L26.976 20.2421C27.2363 20.5024 27.6585 20.5024 27.9188 20.2421L28.8616 19.2992C29.122 19.0389 29.122 18.6168 28.8616 18.3564L26.599 16.0938C26.547 16.0418 26.547 15.9573 26.599 15.9053L28.8621 13.6422Z"},"1")],"MediaMute","0 0 32 32"),MediaVolumeLowIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M17.5091 24.6594C17.5091 25.2066 16.8864 25.5207 16.4463 25.1956L9.44847 20.0252C9.42553 20.0083 9.39776 19.9991 9.36923 19.9991H4.66667C4.29848 19.9991 4 19.7006 4 19.3324V12.6658C4 12.2976 4.29848 11.9991 4.66667 11.9991H9.37115C9.39967 11.9991 9.42745 11.99 9.45039 11.973L16.4463 6.80358C16.8863 6.4784 17.5091 6.79258 17.5091 7.33975L17.5091 24.6594Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M22.8424 12.6667C22.8424 12.2985 22.544 12 22.1758 12H20.8424C20.4743 12 20.1758 12.2985 20.1758 12.6667V19.3333C20.1758 19.7015 20.4743 20 20.8424 20H22.1758C22.544 20 22.8424 19.7015 22.8424 19.3333V12.6667Z"},"1")],"MediaVolumeLow","0 0 32 32"),MediaVolumeHighIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M17.5091 24.6595C17.5091 25.2066 16.8864 25.5208 16.4463 25.1956L9.44847 20.0252C9.42553 20.0083 9.39776 19.9992 9.36923 19.9992H4.66667C4.29848 19.9992 4 19.7007 4 19.3325V12.6658C4 12.2976 4.29848 11.9992 4.66667 11.9992H9.37115C9.39967 11.9992 9.42745 11.99 9.45039 11.9731L16.4463 6.80363C16.8863 6.47845 17.5091 6.79262 17.5091 7.3398L17.5091 24.6595Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M27.5091 9.33336C27.8773 9.33336 28.1758 9.63184 28.1758 10V22C28.1758 22.3682 27.8773 22.6667 27.5091 22.6667H26.1758C25.8076 22.6667 25.5091 22.3682 25.5091 22V10C25.5091 9.63184 25.8076 9.33336 26.1758 9.33336L27.5091 9.33336Z"},"1"),jsxRuntimeExports.jsx("path",{d:"M22.1758 12C22.544 12 22.8424 12.2985 22.8424 12.6667V19.3334C22.8424 19.7016 22.544 20 22.1758 20H20.8424C20.4743 20 20.1758 19.7016 20.1758 19.3334V12.6667C20.1758 12.2985 20.4743 12 20.8424 12H22.1758Z"},"2")],"MediaVolumeHigh","0 0 32 32");function VolumeControls({trackColor:e,fillColor:t,buttonColor:s}){const n=usePlayerStore(o=>o.volume),i=usePlayerActions(),a=usePlayerStore(o=>o.providerReady);return jsxRuntimeExports.jsxs("div",{className:"flex w-min items-center gap-4",children:[jsxRuntimeExports.jsx(ToggleMuteButton,{color:s}),jsxRuntimeExports.jsx(Slider,{isDisabled:!a,showThumbOnHoverOnly:!0,thumbSize:"w-14 h-14",trackColor:e,fillColor:t,minValue:0,maxValue:100,className:"flex-auto",width:"w-96",value:n,onChange:o=>{i.setVolume(o)}})]})}function ToggleMuteButton({color:e}){const t=usePlayerStore(a=>a.muted),s=usePlayerStore(a=>a.volume),n=usePlayerActions(),i=usePlayerStore(a=>a.providerReady);return t?jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Unmute"}),children:jsxRuntimeExports.jsx(IconButton,{disabled:!i,color:e,size:"sm",iconSize:"md",onClick:()=>n.setMuted(!1),children:jsxRuntimeExports.jsx(MediaMuteIcon,{})})}):jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Mute"}),children:jsxRuntimeExports.jsx(IconButton,{disabled:!i,color:e,size:"sm",iconSize:"md",onClick:()=>n.setMuted(!0),children:s<40?jsxRuntimeExports.jsx(MediaVolumeLowIcon,{}):jsxRuntimeExports.jsx(MediaVolumeHighIcon,{})})})}function DesktopPlayerControls(){return usePlayerStore(t=>t.cuedMedia!=null)?jsxRuntimeExports.jsxs("div",{className:"h-96 px-16 flex items-center justify-between border-t bg dashboard-grid-footer z-30",children:[jsxRuntimeExports.jsx(QueuedTrack$1,{}),jsxRuntimeExports.jsx(PlaybackControls,{className:"w-2/5 max-w-[722px]"}),jsxRuntimeExports.jsx(SecondaryControls,{})]}):null}function QueuedTrack$1(){var s;const e=useCuedTrack();let t;return e?t=jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-14",children:[jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,placement:"top",children:[jsxRuntimeExports.jsx(Link,{to:getTrackLink(e),className:"flex-shrink-0",children:jsxRuntimeExports.jsx(TrackImage,{className:"rounded w-56 h-56 object-cover",track:e})}),jsxRuntimeExports.jsx(TrackContextDialog,{tracks:[e]})]}),jsxRuntimeExports.jsxs("div",{className:"min-w-0 overflow-hidden overflow-ellipsis",children:[jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,placement:"top",children:[jsxRuntimeExports.jsx(TrackLink,{track:e,className:"text-sm whitespace-nowrap min-w-0 max-w-full"}),jsxRuntimeExports.jsx(TrackContextDialog,{tracks:[e]})]}),(s=e.artists)!=null&&s.length?jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,placement:"top",children:[jsxRuntimeExports.jsx("div",{className:"text-xs text-muted",children:jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists,className:"whitespace-nowrap"})}),jsxRuntimeExports.jsx(ArtistContextDialog,{artist:e.artists[0]})]}):null]}),jsxRuntimeExports.jsx(LikeIconButton,{likeable:e})]}):t=null,jsxRuntimeExports.jsx("div",{className:"min-w-180 w-[30%]",children:t})}function SecondaryControls(){const{rightSidenavStatus:e,setRightSidenavStatus:t}=reactExports.useContext(DashboardLayoutContext);return jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-end min-w-180 w-[30%]",children:[jsxRuntimeExports.jsx(LyricsButton,{}),jsxRuntimeExports.jsx(DownloadTrackButton,{}),jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Queue"}),children:jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0",onClick:()=>{t(e==="closed"?"open":"closed")},children:jsxRuntimeExports.jsx(MediaQueueListIcon,{})})}),jsxRuntimeExports.jsx(VolumeControls,{trackColor:"neutral"}),jsxRuntimeExports.jsx(OverlayButton,{})]})}function OverlayButton(){const e=usePlayerOverlayStore(n=>n.isMaximized),t=usePlayerStore(n=>n.providerReady),{player:s}=useSettings();return s!=null&&s.hide_video_button?null:jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Expand"}),children:jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0 ml-26",color:"chip",variant:"flat",radius:"rounded",size:"xs",iconSize:"sm",disabled:!t,onClick:()=>{playerOverlayState.toggle()},children:e?jsxRuntimeExports.jsx(KeyboardArrowDownIcon,{}):jsxRuntimeExports.jsx(KeyboardArrowUpIcon,{})})})}function isNumber$1(e){return typeof e=="number"&&!Number.isNaN(e)}const loadImage=(e,t=1)=>new Promise((s,n)=>{const i=new Image,a=()=>{delete i.onload,delete i.onerror,i.naturalWidth>=t?s(i):n(i)};Object.assign(i,{onload:a,onerror:a,src:e})}),posterCache=new Map;async function loadYoutubePoster(e){if(!e)return;if(posterCache.has(e))return posterCache.get(e);const t=s=>`https://i.ytimg.com/vi/${e}/${s}.jpg`;return loadImage(t("maxresdefault"),121).catch(()=>loadImage(t("sddefault"),121)).catch(()=>loadImage(t("hqdefault"),121)).then(s=>{const n=s.src;return posterCache.set(e,n),n})}function handleYoutubeEmbedMessage(e,t,s,n){var l,x;const a=JSON.parse(e.data).info,o=t.current,u=n.getState().emit;if(a){if((l=a.videoData)!=null&&l.video_id&&(o.videoId=a.videoData.video_id),(x=a.videoData)!=null&&x.errorCode){const c={code:a.videoData.errorCode,videoId:o.videoId};u("error",{sourceEvent:c})}if(isNumber$1(a.duration)&&a.duration!==o.duration&&(o.duration=a.duration,u("durationChange",{duration:o.duration})),isNumber$1(a.currentTime)&&a.currentTime!==o.currentTime&&(o.currentTime=a.currentTime,n.getState().isSeeking||u("progress",{currentTime:o.currentTime})),isNumber$1(a.currentTimeLastUpdated)&&(o.lastTimeUpdate=a.currentTimeLastUpdated),isNumber$1(a.playbackRate)&&(o.playbackRate!==a.playbackRate&&u("playbackRateChange",{rate:a.playbackRate}),o.playbackRate=a.playbackRate),isNumber$1(a.videoLoadedFraction)){const c=a.videoLoadedFraction*o.duration;o.buffered!==c&&u("buffered",{seconds:a.videoLoadedFraction*o.duration}),o.buffered=c}Array.isArray(a.availablePlaybackRates)&&u("playbackRates",{rates:a.availablePlaybackRates}),isNumber$1(a.playerState)&&(onYoutubeStateChange(a,t,s,n),o.state=a.playerState)}}function onYoutubeStateChange(e,t,s,n){const i=n.getState().emit,a=e.playerState,o=async()=>{var u,l;if((u=e.videoData)!=null&&u.video_id&&!((l=n.getState().cuedMedia)!=null&&l.poster)){const x=await loadYoutubePoster(e.videoData.video_id);x&&n.getState().emit("posterLoaded",{url:x})}t.current.playbackReady||(i("providerReady",{el:s.current}),t.current.playbackReady=!0),i("cued")};switch(i("youtubeStateChange",{state:a}),i("buffering",{isBuffering:a===YouTubePlayerState.Buffering}),a!==YouTubePlayerState.Ended&&(t.current.firedPlaybackEnd=!1),a){case YouTubePlayerState.Unstarted:o();break;case YouTubePlayerState.Ended:t.current.firedPlaybackEnd||(i("playbackEnd"),t.current.firedPlaybackEnd=!0);break;case YouTubePlayerState.Playing:o(),i("play");break;case YouTubePlayerState.Paused:i("pause");break;case YouTubePlayerState.Cued:o();break}}const queryString="&controls=0&disablekb=1&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&rel=0&showinfo=0";function useYoutubeProviderSrc(e){var x;const{getState:t,emit:s}=usePlayerActions(),n=usePlayerStore(c=>c.options),i=usePlayerStore(c=>c.cuedMedia),a=(x=n.youtube)!=null&&x.useCookies?"https://www.youtube.com":"https://www.youtube-nocookie.com",[o,u]=reactExports.useState(()=>{if(i!=null&&i.src&&i.src!=="resolve")return youtubeIdFromSrc(i.src)}),l=reactExports.useCallback(c=>{const p=youtubeIdFromSrc(c);p&&u(j=>j?(e(p),j):p)},[e]);return reactExports.useEffect(()=>{var c,p;i!=null&&i.src&&i.src!=="resolve"?l(i.src):i&&(s("buffering",{isBuffering:!0}),(p=(c=n.youtube)==null?void 0:c.srcResolver)==null||p.call(c,i).then(j=>{var g;j!=null&&j.src&&((g=t().cuedMedia)==null?void 0:g.id)===j.id&&l(j.src)}))},[n,l,i==null?void 0:i.id]),{initialVideoUrl:o?`${a}/embed/${o}?${queryString}&autoplay=${n.autoPlay?"1":"0"}&mute=${t().muted?"1":"0"}&start=${(i==null?void 0:i.initialTime)??0}`:void 0,origin:a}}function youtubeIdFromSrc(e){var t;return(t=e.match(/((?:\w|-){11})/))==null?void 0:t[0]}function YoutubeProvider(){const{addGlobalListener:e,removeAllGlobalListeners:t}=$03deb23ff14920c4$export$4eaf04e54aa8eed6(),s=reactExports.useRef(null),n=reactExports.useCallback((c,p)=>{var j,g;return(g=(j=s.current)==null?void 0:j.contentWindow)==null?void 0:g.postMessage(JSON.stringify({event:"command",func:c,args:p?[p]:void 0}),"*")},[]),i=reactExports.useCallback(c=>{n(YoutubeCommand.Load,c)},[n]),{initialVideoUrl:a,origin:o}=useYoutubeProviderSrc(i),u=reactExports.useContext(PlayerStoreContext),l=reactExports.useRef({duration:0,currentTime:0,lastTimeUpdate:0,playbackRate:1,state:-1,playbackReady:!1,buffered:0,firedPlaybackEnd:!1}),x=reactExports.useCallback(()=>{const c={loadVideoById:i};u.setState({providerApi:{play:()=>{n(YoutubeCommand.Play)},pause:()=>{n(YoutubeCommand.Pause)},stop:()=>{n(YoutubeCommand.Stop)},seek:p=>{p!==l.current.currentTime&&n(YoutubeCommand.Seek,p)},setVolume:p=>{n(YoutubeCommand.SetVolume,p)},setMuted:p=>{n(p?YoutubeCommand.Mute:YoutubeCommand.Unmute)},setPlaybackRate:p=>{n(YoutubeCommand.SetPlaybackRate,p)},setPlaybackQuality:p=>{n(YoutubeCommand.SetPlaybackQuality,p)},getCurrentTime:()=>l.current.currentTime,getSrc:()=>l.current.videoId,internalProviderApi:c}})},[u,i,n]);return reactExports.useEffect(()=>(e(window,"message",c=>{var j;const p=c;p.origin===o&&p.source===((j=s.current)==null?void 0:j.contentWindow)&&handleYoutubeEmbedMessage(p,l,s,u)}),x(),()=>{t()}),[e,t,u,o,x]),a?jsxRuntimeExports.jsx("iframe",{className:"w-full h-full",ref:s,src:a,allowFullScreen:!0,allow:"autoplay; encrypted-media; picture-in-picture;",onLoad:()=>{setTimeout(()=>{var c,p;(p=(c=s.current)==null?void 0:c.contentWindow)==null||p.postMessage(JSON.stringify({event:"listening"}),"*"),x()})}}):null}function createRafLoop(e){let t;function s(){isUndefined(t)&&n()}function n(){t=window.requestAnimationFrame(function(){isUndefined(t)||(e(),n())})}function i(){isNumber(t)&&window.cancelAnimationFrame(t),t=void 0}return{start:s,stop:i}}function isUndefined(e){return typeof e>"u"}function isNumber(e){return typeof e=="number"&&!Number.isNaN(e)}function useHtmlMediaInternalState(e){const t=reactExports.useContext(PlayerStoreContext),s=usePlayerStore(u=>u.cuedMedia),n=reactExports.useRef({currentTime:0,buffered:0,isMediaWaiting:!1,playbackReady:!1,timeRafLoop:createRafLoop(()=>{a(),i()})}),i=reactExports.useCallback(()=>{var x;const u=(x=e.current)==null?void 0:x.buffered,l=!u||u.length===0?0:u.end(u.length-1);n.current.buffered!==l&&(t.getState().emit("buffered",{seconds:l}),n.current.buffered=l)},[e,t]),a=reactExports.useCallback(()=>{var l;const u=((l=e.current)==null?void 0:l.currentTime)||0;n.current.currentTime!==u&&!t.getState().isSeeking&&(t.getState().emit("progress",{currentTime:u}),n.current.currentTime=u)},[n,t,e]),o=reactExports.useCallback((u,l)=>{if(!e.current)return;const{textTracks:x}=e.current;if(u===-1)Array.from(x).forEach(p=>{p.mode="disabled"});else{const p=x[t.getState().currentTextTrack];p&&(p.mode="disabled")}const c=x[u];c&&(c.mode=l?"showing":"hidden"),t.getState().emit("currentTextTrackChange",{trackId:l?u:-1}),t.getState().emit("textTrackVisibilityChange",{isVisible:l})},[e,t]);return reactExports.useEffect(()=>{const u=n.current.timeRafLoop;return()=>{u.stop()}},[]),reactExports.useEffect(()=>{var u;(u=e.current)==null||u.load()},[s==null?void 0:s.src,e]),{ref:e,internalState:n,updateCurrentTime:a,toggleTextTrackModes:o,updateBuffered:i}}const defaultPlaybackRates=[.25,.5,.75,1,1.25,1.5,1.75,2];function useHtmlMediaEvents({ref:e,updateCurrentTime:t,updateBuffered:s,internalState:n}){const i=reactExports.useContext(PlayerStoreContext),a=reactExports.useCallback(()=>{if(!e.current)return;const o=Array.from(e.current.textTracks).filter(x=>x.label&&(x.kind==="subtitles"||x.kind==="captions"));let u=-1;for(let x=0;x<o.length;x+=1)if(o[x].mode==="hidden")u=x;else if(o[x].mode==="showing"){u=x;break}const l=u!==-1&&o[u].mode==="showing";i.getState().emit("currentTextTrackChange",{trackId:u}),i.getState().emit("textTrackVisibilityChange",{isVisible:l}),i.getState().emit("textTracks",{tracks:o})},[e,i]);return reactExports.useEffect(()=>{const o=e.current;return()=>{o==null||o.textTracks.removeEventListener("change",a)}},[e,a]),reactExports.useMemo(()=>{const o=i.getState().emit;return{autoPlay:!1,onContextMenu:u=>u.preventDefault(),controlsList:"nodownload",preload:"metadata","x-webkit-airplay":"allow",onEnded:()=>{o("playbackEnd"),t(),n.current.timeRafLoop.stop()},onStalled:u=>{u.currentTarget.readyState<3&&o("buffering",{isBuffering:!0})},onWaiting:()=>{o("buffering",{isBuffering:!0})},onPlaying:()=>{o("play"),o("buffering",{isBuffering:!1})},onPause:u=>{o("pause"),o("buffering",{isBuffering:!1}),n.current.timeRafLoop.stop()},onSuspend:()=>{o("buffering",{isBuffering:!1})},onSeeking:()=>{t()},onSeeked:()=>{t()},onTimeUpdate:()=>{t()},onError:u=>{o("error",{sourceEvent:u})},onDurationChange:u=>{t(),o("durationChange",{duration:u.currentTarget.duration})},onRateChange:u=>{o("playbackRateChange",{rate:u.currentTarget.playbackRate})},onLoadedMetadata:u=>{n.current.playbackReady||(o("providerReady",{el:u.currentTarget}),n.current.playbackReady=!0,s(),a(),u.currentTarget.textTracks.addEventListener("change",()=>{a()})),o("cued"),o("playbackRates",{rates:defaultPlaybackRates})}}},[n,i,t,a,s])}function useHtmlMediaApi({ref:e,internalState:t,toggleTextTrackModes:s}){const n=reactExports.useContext(PlayerStoreContext);return reactExports.useMemo(()=>({play:async()=>{var i;try{await((i=e.current)==null?void 0:i.play())}catch(a){n.getState().emit("error",{sourceEvent:a})}t.current.timeRafLoop.start()},pause:()=>{var i;(i=e.current)==null||i.pause(),t.current.timeRafLoop.stop()},stop:()=>{e.current&&(e.current.pause(),e.current.currentTime=0)},seek:i=>{i!==t.current.currentTime&&e.current&&(e.current.currentTime=i)},setVolume:i=>{e.current&&(e.current.volume=i/100)},setMuted:i=>{e.current&&(e.current.muted=i)},setPlaybackRate:i=>{e.current&&(e.current.playbackRate=i)},setTextTrackVisibility:i=>{s(n.getState().currentTextTrack,i)},setCurrentTextTrack:i=>{s(i,n.getState().textTrackIsVisible)},getCurrentTime:()=>t.current.currentTime,getSrc:()=>{var i;return(i=e.current)==null?void 0:i.src}}),[e,n,t,s])}function HtmlVideoProvider(){var x;const e=reactExports.useRef(null),t=usePlayerStore(c=>c.options.autoPlay),s=usePlayerStore(c=>c.muted),n=usePlayerStore(c=>c.cuedMedia),i=reactExports.useContext(PlayerStoreContext),a=useHtmlMediaInternalState(e),o=useHtmlMediaEvents(a),u=useHtmlMediaApi(a);reactExports.useEffect(()=>{i.setState({providerApi:u})},[i,u]);let l=n==null?void 0:n.src;return l&&(n!=null&&n.initialTime)&&(l=`${l}#t=${n.initialTime}`),jsxRuntimeExports.jsx("video",{className:"w-full h-full",ref:e,src:l,playsInline:!0,poster:n==null?void 0:n.poster,autoPlay:t,muted:s,...o,children:(x=n==null?void 0:n.captions)==null?void 0:x.map((c,p)=>jsxRuntimeExports.jsx("track",{label:c.label,kind:"subtitles",srcLang:c.language||"en",src:c.src,default:p===0},c.id))})}function HtmlAudioProvider(){const e=reactExports.useRef(null),t=usePlayerStore(x=>x.options.autoPlay),s=usePlayerStore(x=>x.muted),n=usePlayerStore(x=>x.cuedMedia),i=reactExports.useContext(PlayerStoreContext),a=useHtmlMediaInternalState(e),o=useHtmlMediaEvents(a),u=useHtmlMediaApi(a);reactExports.useEffect(()=>{i.setState({providerApi:u})},[i,u]);let l=n==null?void 0:n.src;return l&&(n!=null&&n.initialTime)&&(l=`${l}#t=${n.initialTime}`),jsxRuntimeExports.jsx("audio",{className:"w-full h-full",ref:e,src:l,autoPlay:t,muted:s,...o})}const HlsProvider=React.lazy(()=>__vitePreload(()=>import("./hls-provider-20b8e40e.js"),["./hls-provider-20b8e40e.js","./main-1406e08c.js","./main-f52edbcd.css","./TrendingUp-bcf21998.js","./play-arrow-filled-8e87b0ae.js","./MoreHoriz-16b2a1fa.js","./History-20a46571.js","./linkify.es-861b0b2d.js","./Edit-4fa321e0.js"],import.meta.url)),DashProvider=React.lazy(()=>__vitePreload(()=>import("./dash-provider-d67cf343.js"),["./dash-provider-d67cf343.js","./main-1406e08c.js","./main-f52edbcd.css","./TrendingUp-bcf21998.js","./play-arrow-filled-8e87b0ae.js","./MoreHoriz-16b2a1fa.js","./History-20a46571.js","./linkify.es-861b0b2d.js","./Edit-4fa321e0.js"],import.meta.url)),PlayerOutlet=reactExports.memo(({className:e})=>{const{getState:t}=reactExports.useContext(PlayerStoreContext);return reactExports.useEffect(()=>(t().init(),t().destroy),[t]),jsxRuntimeExports.jsx("div",{className:e,children:jsxRuntimeExports.jsx(Provider,{})})});function Provider(){switch(usePlayerStore(t=>t.providerName)){case"youtube":return jsxRuntimeExports.jsx(YoutubeProvider,{});case"htmlVideo":return jsxRuntimeExports.jsx(HtmlVideoProvider,{});case"htmlAudio":return jsxRuntimeExports.jsx(HtmlAudioProvider,{});case"hls":return jsxRuntimeExports.jsx(reactExports.Suspense,{children:jsxRuntimeExports.jsx(HlsProvider,{})});case"dash":return jsxRuntimeExports.jsx(reactExports.Suspense,{children:jsxRuntimeExports.jsx(DashProvider,{})});default:return null}}function PlayerPoster({className:e,hideDuringPlayback:t=!0,...s}){const n=usePlayerStore(a=>a.posterUrl),i=usePlayerStore(a=>t&&a.playbackStarted&&a.providerName!=="htmlAudio");return n?jsxRuntimeExports.jsx("div",{...s,className:clsx("transition-opacity pointer-events-none flex items-center justify-center bg-black w-full max-h-full",i?"opacity-0":"opacity-100",e),children:jsxRuntimeExports.jsx("img",{loading:"lazy",src:n,alt:"",className:"w-full max-h-full object-cover flex-shrink-0"})}):null}const MediaFullscreenIcon=createSvgIcon([jsxRuntimeExports.jsx("path",{d:"M25.3299 7.26517C25.2958 6.929 25.0119 6.66666 24.6667 6.66666H19.3334C18.9652 6.66666 18.6667 6.96514 18.6667 7.33333V9.33333C18.6667 9.70152 18.9652 10 19.3334 10L21.8667 10C21.9403 10 22 10.0597 22 10.1333V12.6667C22 13.0349 22.2985 13.3333 22.6667 13.3333H24.6667C25.0349 13.3333 25.3334 13.0349 25.3334 12.6667V7.33333C25.3334 7.31032 25.3322 7.28758 25.3299 7.26517Z"},"0"),jsxRuntimeExports.jsx("path",{d:"M22 21.8667C22 21.9403 21.9403 22 21.8667 22L19.3334 22C18.9652 22 18.6667 22.2985 18.6667 22.6667V24.6667C18.6667 25.0349 18.9652 25.3333 19.3334 25.3333L24.6667 25.3333C25.0349 25.3333 25.3334 25.0349 25.3334 24.6667V19.3333C25.3334 18.9651 25.0349 18.6667 24.6667 18.6667H22.6667C22.2985 18.6667 22 18.9651 22 19.3333V21.8667Z"},"1"),jsxRuntimeExports.jsx("path",{d:"M12.6667 22H10.1334C10.0597 22 10 21.9403 10 21.8667V19.3333C10 18.9651 9.70154 18.6667 9.33335 18.6667H7.33335C6.96516 18.6667 6.66669 18.9651 6.66669 19.3333V24.6667C6.66669 25.0349 6.96516 25.3333 7.33335 25.3333H12.6667C13.0349 25.3333 13.3334 25.0349 13.3334 24.6667V22.6667C13.3334 22.2985 13.0349 22 12.6667 22Z"},"2"),jsxRuntimeExports.jsx("path",{d:"M10 12.6667V10.1333C10 10.0597 10.0597 10 10.1334 10L12.6667 10C13.0349 10 13.3334 9.70152 13.3334 9.33333V7.33333C13.3334 6.96514 13.0349 6.66666 12.6667 6.66666H7.33335C6.96516 6.66666 6.66669 6.96514 6.66669 7.33333V12.6667C6.66669 13.0349 6.96516 13.3333 7.33335 13.3333H9.33335C9.70154 13.3333 10 13.0349 10 12.6667Z"},"3")],"MediaFullscreen","0 0 32 32");function usePlayerClickHandler(){const e=reactExports.useRef(0),t=usePlayerActions(),s=reactExports.useCallback(()=>{t.getState().isPlaying?t.pause():t.play()},[t]);return reactExports.useCallback(()=>{t.getState().providerReady&&(e.current+=1,s(),e.current===1&&setTimeout(()=>{e.current>1&&t.toggleFullscreen(),e.current=0},300))},[t,s])}function PlayerOverlay(){const e=useMediaQuery("(max-width: 1024px)"),t=usePlayerOverlayStore(c=>c.isMaximized),s=usePlayerOverlayStore(c=>c.isQueueOpen),n=usePlayerStore(c=>c.isFullscreen),i=useMiniPlayerIsHidden(),a=reactExports.useRef(null),{pathname:o}=useLocation(),u=usePlayerClickHandler(),l=usePlayerStore(c=>c.providerApi!=null&&c.providerName!=="htmlAudio"),x=usePrevious(o);return reactExports.useEffect(()=>{t&&x&&o!==x&&playerOverlayState.toggle()},[o,x,t]),reactExports.useEffect(()=>{if(!t)return;const c=p=>{p.key==="Escape"&&playerOverlayState.toggle()};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[t]),jsxRuntimeExports.jsxs("div",{ref:a,className:clsx("fixed bg right-0 transition-all outline-none",i&&!t&&"hidden",t?"bottom-0 w-full h-full flex flex-col pb-50 player-overlay-bg":"bottom-96 right-0 w-256 h-[213px]"),children:[t&&jsxRuntimeExports.jsxs("div",{className:"flex items-center flex-shrink-0 p-10 mb-10",children:[jsxRuntimeExports.jsx(IconButton,{iconSize:"lg",className:"mr-auto",onClick:()=>playerOverlayState.toggle(),children:jsxRuntimeExports.jsx(KeyboardArrowDownIcon,{})}),e&&jsxRuntimeExports.jsx(LyricsButton,{}),e&&jsxRuntimeExports.jsx(DownloadTrackButton,{}),jsxRuntimeExports.jsx(IconButton,{onClick:()=>playerOverlayState.toggleQueue(),color:s?"primary":void 0,children:jsxRuntimeExports.jsx(MediaQueueListIcon,{})}),jsxRuntimeExports.jsx(FullscreenButton,{overlayRef:a})]}),jsxRuntimeExports.jsxs("div",{onClick:()=>{n||u()},className:clsx("min-h-0 max-w-full flex-auto relative",t?"mx-auto px-14 mt-auto":"w-full h-full",t&&l?"aspect-video":"aspect-square max-h-400"),children:[jsxRuntimeExports.jsx(PlayerPoster,{className:"absolute inset-0"}),jsxRuntimeExports.jsx("div",{className:l?"w-full h-full flex-auto bg-black":void 0,children:jsxRuntimeExports.jsx(PlayerOutlet,{className:"w-full h-full"})})]}),t&&jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(QueuedTrack,{}),jsxRuntimeExports.jsx(PlaybackControls,{className:"container mx-auto px-14 flex-shrink-0 mb-auto"})]}),t&&s&&jsxRuntimeExports.jsx(PlayerQueue,{})]})}function FullscreenButton({overlayRef:e}){const t=usePlayerStore(n=>n.providerReady),s=useIsMobileMediaQuery();return!fscreen$1.fullscreenEnabled||s?null:jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0 ml-12",disabled:!t,onClick:()=>{e.current&&(fscreen$1.fullscreenElement?fscreen$1.exitFullscreen():fscreen$1.requestFullscreen(e.current))},children:jsxRuntimeExports.jsx(MediaFullscreenIcon,{})})}function QueuedTrack(){const e=useCuedTrack(),t=useIsMobileMediaQuery();return e?jsxRuntimeExports.jsxs("div",{className:clsx("container mx-auto px-14 flex-shrink-0 flex items-center justify-center gap-34",t?"my-40":"my-60"),children:[jsxRuntimeExports.jsx(LikeIconButton,{likeable:e}),jsxRuntimeExports.jsxs("div",{className:"text-center min-w-0",children:[jsxRuntimeExports.jsx("div",{className:"text-base whitespace-nowrap overflow-hidden overflow-ellipsis",children:jsxRuntimeExports.jsx(TrackLink,{track:e})}),jsxRuntimeExports.jsx("div",{className:"text-sm text-muted",children:jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists})})]}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",children:[jsxRuntimeExports.jsx(IconButton,{children:jsxRuntimeExports.jsx(MoreVertIcon,{})}),jsxRuntimeExports.jsx(TrackContextDialog,{tracks:[e]})]})]}):null}function PlayerQueue(){var s;const e=usePlayerStore(n=>n.shuffledQueue),t=e.map(n=>n.meta);return jsxRuntimeExports.jsx("div",{className:"bg-inherit fixed top-70 left-0 right-0 bottom-0 px-14 md:px-50 overflow-y-auto",children:jsxRuntimeExports.jsx(TrackTable,{tracks:t,queueGroupId:(s=e[0])==null?void 0:s.groupId,renderRowAs:PlayerQueueRow})})}function PlayerQueueRow({item:e,children:t,...s}){const n=usePlayerStore(u=>u.shuffledQueue),{selectedRows:i}=reactExports.useContext(TableContext),a=reactExports.useMemo(()=>i.map(u=>n.find(l=>l.meta.id===u)).filter(u=>!!u),[n,i]),o=jsxRuntimeExports.jsx("div",{...s,children:t});return e.isPlaceholder?o:jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,placement:"bottom-start",children:[o,jsxRuntimeExports.jsx(QueueTrackContextDialog,{queueItems:a})]})}const mainSearchModels=[ARTIST_MODEL,ALBUM_MODEL,TRACK_MODEL,USER_MODEL,PLAYLIST_MODEL];function SearchAutocomplete({className:e}){const{searchQuery:t}=useParams(),{trans:s}=useTrans(),n=useNavigate(),[i,a]=reactExports.useState(t||""),[o,u]=reactExports.useState(!1),{isFetching:l,data:x}=useSearchResults({query:i,types:mainSearchModels,limit:3});return jsxRuntimeExports.jsxs("form",{onSubmit:c=>{c.preventDefault(),i.trim().length&&(u(!1),n(`/search/${i.trim()}`))},className:clsx("flex items-center gap-14 flex-auto",e),children:[jsxRuntimeExports.jsx("button",{type:"submit","aria-label":s(message("Search")),children:jsxRuntimeExports.jsx(SearchIcon,{className:"text-muted flex-shrink-0"})}),jsxRuntimeExports.jsx(ComboBoxForwardRef,{unstyled:!0,className:"w-full max-w-780 flex-auto",offset:12,inputClassName:"w-full outline-none bg-transparent h-42 placeholder:text-muted",hideEndAdornment:!0,inputBorder:"border-none",isAsync:!0,placeholder:s(message("Search")),isLoading:l,inputValue:i,onInputValueChange:a,clearInputOnItemSelection:!0,blurReferenceOnItemSelection:!0,selectionMode:"none",openMenuOnFocus:!0,floatingMaxHeight:670,isOpen:o,onOpenChange:u,children:Object.entries((x==null?void 0:x.results)||{}).map(([c,p])=>jsxRuntimeExports.jsx(Section,{label:jsxRuntimeExports.jsx(Trans,{message:c}),children:p.map(j=>{const g=`${c}-${j.id}`;switch(j.model_type){case ARTIST_MODEL:return jsxRuntimeExports.jsx(Item,{value:g,onSelected:()=>{n(getArtistLink(j))},startIcon:jsxRuntimeExports.jsx(PlayableImage,{model:j,className:"rounded-full",value:g,children:jsxRuntimeExports.jsx(SmallArtistImage,{artist:j})}),description:jsxRuntimeExports.jsx(Trans,{message:"Artist"}),textLabel:j.name,children:jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,children:[jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(ArtistLink,{artist:j})}),jsxRuntimeExports.jsx(ArtistContextDialog,{artist:j})]})},g);case ALBUM_MODEL:return jsxRuntimeExports.jsx(Item,{value:g,onSelected:()=>{n(getAlbumLink(j))},startIcon:jsxRuntimeExports.jsx(PlayableImage,{model:j,value:g,children:jsxRuntimeExports.jsx(AlbumImage,{album:j})}),description:jsxRuntimeExports.jsx(ArtistLinks,{artists:j.artists}),textLabel:j.name,children:jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,children:[jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(AlbumLink,{album:j})}),jsxRuntimeExports.jsx(AlbumContextDialog,{album:j})]})},g);case TRACK_MODEL:return jsxRuntimeExports.jsx(Item,{value:g,onSelected:()=>{n(getTrackLink(j))},startIcon:jsxRuntimeExports.jsx(PlayableImage,{model:j,value:g,children:jsxRuntimeExports.jsx(TrackImage,{track:j})}),description:jsxRuntimeExports.jsx(ArtistLinks,{artists:j.artists}),textLabel:j.name,children:jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,children:[jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(TrackLink,{track:j})}),jsxRuntimeExports.jsx(TrackContextDialog,{tracks:[j]})]})},g);case USER_MODEL:return jsxRuntimeExports.jsx(Item,{value:g,onSelected:()=>{n(getUserProfileLink(j))},startIcon:jsxRuntimeExports.jsx(UserImage,{className:"w-48 h-48",user:j}),description:j.followers_count?jsxRuntimeExports.jsx(Trans,{message:":count followers",values:{count:j.followers_count}}):null,textLabel:j.display_name,children:jsxRuntimeExports.jsx(UserProfileLink,{user:j})},g);case PLAYLIST_MODEL:return jsxRuntimeExports.jsx(Item,{value:g,onSelected:()=>{n(getPlaylistLink(j))},startIcon:jsxRuntimeExports.jsx(PlayableImage,{model:j,value:g,children:jsxRuntimeExports.jsx(PlaylistImage,{playlist:j})}),description:jsxRuntimeExports.jsx(PlaylistOwnerName,{playlist:j}),textLabel:j.name,children:jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,children:[jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(PlaylistLink,{playlist:j})}),jsxRuntimeExports.jsx(PlaylistContextDialog,{playlist:j})]})},g)}})},c))})]})}function PlayableImage({children:e,model:t,className:s,value:n}){var c;const{collection:i,state:{activeIndex:a}}=useListboxContext(),o=(c=i.get(n))==null?void 0:c.index,u=a===o,l=queueGroupId(t),x=usePlayerStore(p=>{var j;return p.isPlaying&&((j=p.originalQueue[0])==null?void 0:j.groupId)===l});return jsxRuntimeExports.jsxs("div",{className:clsx(s,"relative w-48 h-48 overflow-hidden"),onClick:p=>{p.preventDefault(),p.stopPropagation()},children:[reactExports.cloneElement(e,{size:"w-full h-full"}),jsxRuntimeExports.jsx(AnimatePresence,{children:u||x?jsxRuntimeExports.jsx(m.div,{...opacityAnimation,transition:{duration:.24},className:"absolute w-full h-full inset-0 bg-black/60 m-auto flex items-center justify-center",children:jsxRuntimeExports.jsx(PlaybackToggleButton,{buttonType:"icon",color:"white",equalizerColor:"white",track:t.model_type===TRACK_MODEL?t:void 0,queueId:l})},"play-overlay"):null})]})}function PlayerNavbar(){const e=useNavigate(),t=usePrimaryArtistForCurrentUser(),{player:s}=useSettings(),n=reactExports.useMemo(()=>t?[jsxRuntimeExports.jsx(Item,{value:"author",startIcon:jsxRuntimeExports.jsx(MicIcon,{}),onSelected:()=>{e(getArtistLink(t))},children:jsxRuntimeExports.jsx(Trans,{message:"Artist profile"})},"author")]:s!=null&&s.show_become_artist_btn?[jsxRuntimeExports.jsx(Item,{value:"author",startIcon:jsxRuntimeExports.jsx(MicIcon,{}),onSelected:()=>{e("/backstage/requests")},children:jsxRuntimeExports.jsx(Trans,{message:"Become an author"})},"author")]:[],[t,e,s==null?void 0:s.show_become_artist_btn]);return jsxRuntimeExports.jsxs(Navbar,{hideLogo:!0,color:"bg",darkModeColor:"bg",size:"sm",authMenuItems:n,className:"dashboard-grid-header",children:[jsxRuntimeExports.jsx(SearchAutocomplete,{}),jsxRuntimeExports.jsx(ActionButtons$2,{})]})}function ActionButtons$2(){const{player:e,billing:t}=useSettings(),{isLoggedIn:s,hasPermission:n,isSubscribed:i}=useAuth(),a=(e==null?void 0:e.show_upload_btn)&&s&&n("music.create"),o=(t==null?void 0:t.enable)&&n("plans.view")&&!i;return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[o?jsxRuntimeExports.jsx(Button,{variant:"outline",size:"xs",color:"primary",elementType:Link,to:"/pricing",children:jsxRuntimeExports.jsx(Trans,{message:"Try Pro"})}):null,a?jsxRuntimeExports.jsx(Button,{variant:o?"text":"outline",size:"xs",color:o?void 0:"primary",elementType:Link,to:"/backstage/upload",children:jsxRuntimeExports.jsx(Trans,{message:"Upload"})}):null]})}function WebPlayerLayout(){const{player:e}=useSettings(),t=useIsMobileMediaQuery();return jsxRuntimeExports.jsxs(PlayerContext,{id:"web-player",options:playerStoreOptions,children:[jsxRuntimeExports.jsxs(DashboardLayout,{name:"web-player",initialRightSidenavStatus:e!=null&&e.hide_queue?"closed":"open",children:[!t&&jsxRuntimeExports.jsx(PlayerNavbar,{}),!t&&jsxRuntimeExports.jsx(DashboardSidenav,{position:"left",display:"block",children:jsxRuntimeExports.jsx(Sidenav,{})}),jsxRuntimeExports.jsx(DashboardContent,{children:jsxRuntimeExports.jsx(Main,{})}),!t&&jsxRuntimeExports.jsx(RightSidenav,{}),jsxRuntimeExports.jsx(PlayerControlsBar,{})]}),jsxRuntimeExports.jsx(PlayerOverlay,{})]})}function PlayerControlsBar(){const{isMobileMode:e}=reactExports.useContext(DashboardLayoutContext);return e?jsxRuntimeExports.jsx(MobilePlayerControls,{}):jsxRuntimeExports.jsx(DesktopPlayerControls,{})}function Main({className:e}){const t=useIsMobileMediaQuery();return jsxRuntimeExports.jsx("main",{className:clsx("overflow-x-hidden relative stable-scrollbar",e,t&&"pb-124"),children:jsxRuntimeExports.jsx("div",{className:"web-player-container @container min-h-full mx-auto p-16 md:p-30",children:jsxRuntimeExports.jsx(Outlet,{})})})}function RightSidenav(){const e=useMediaQuery("(max-width: 1280px)"),t=usePlayerStore(s=>!s.shuffledQueue.length);return jsxRuntimeExports.jsx(DashboardSidenav,{position:"right",size:"w-256",mode:e?"overlay":void 0,overlayPosition:"absolute",display:"block",forceClosed:t,children:jsxRuntimeExports.jsx(QueueSidenav,{})})}function MediaPageHeaderLayout({className:e,image:t,title:s,subtitle:n,description:i,actionButtons:a,footer:o,centerItems:u=!1}){return jsxRuntimeExports.jsxs("header",{className:clsx("flex flex-col md:flex-row gap-24 md:gap-34",u&&"items-center",e),children:[reactExports.cloneElement(t,{size:t.props.size||"w-256 h-256",className:clsx(t.props.className,"mx-auto flex-shrink-0")}),jsxRuntimeExports.jsxs("div",{className:"flex-auto min-w-0",children:[jsxRuntimeExports.jsx("h1",{className:"text-2xl md:text-4xl font-semibold mb-14 text-center md:text-start",children:s}),n&&jsxRuntimeExports.jsx("div",{className:"w-max mx-auto md:mx-0",children:n}),i?jsxRuntimeExports.jsx("div",{className:"text-muted mt-18 md:mt-26 text-sm w-max mx-auto md:mx-0",children:i}):null,jsxRuntimeExports.jsx("div",{className:"mt-30",children:a}),o?jsxRuntimeExports.jsx("div",{className:"mt-30",children:o}):null]})]})}function actionButtonClassName({isFirst:e}={}){return clsx("min-h-40",e?"min-w-128 mr-20":"mr-10 min-w-100")}function RemoteFavicon({url:e,className:t,size:s="w-16 h-16",alt:n}){if(!e)return null;const i=getFaviconSrc(e);return jsxRuntimeExports.jsx("img",{className:clsx(s,t),src:getFaviconSrc(e),alt:n||`${i} favicon`})}const getFaviconSrc=memoize(e=>e.includes("youtube")?"https://www.youtube.com/s/desktop/ca54e1bd/img/favicon.ico":(isAbsoluteUrl(e)||(e=`${window.location.protocol}//${window.location.host}`),"https://www.google.com/s2/favicons?domain="+new URL(e).origin));function ProfileLinks({links:e}){return e!=null&&e.length?jsxRuntimeExports.jsx("div",{className:"flex items-center",children:e.map(t=>jsxRuntimeExports.jsx(Tooltip,{label:t.title,children:jsxRuntimeExports.jsx(IconButton,{size:"xs",elementType:"a",href:t.url,target:"_blank",rel:"noreferrer",children:jsxRuntimeExports.jsx(RemoteFavicon,{url:t.url,alt:t.title})})},t.url))}):null}function ProfileDescription({profile:e,links:t,shortDescription:s}){return e?jsxRuntimeExports.jsxs("div",{className:"text-sm",children:[e.description&&jsxRuntimeExports.jsx("div",{className:"p-10 rounded bg-alt/80 dark:bg text-secondary max-w-720",dangerouslySetInnerHTML:{__html:s?e.description.slice(0,300):e.description}}),e.city||e.country||t!=null&&t.length?jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-24 justify-between mt-20",children:[(e.city||e.country)&&jsxRuntimeExports.jsxs("div",{className:"p-10 rounded bg-alt/80 dark:bg text-secondary w-max",children:[e.city,e.city&&","," ",e.country]}),jsxRuntimeExports.jsx(ProfileLinks,{links:t})]}):null]}):null}function ArtistPageHeader({artist:e}){const{artistPage:t}=useSettings(),s=useIsMobileMediaQuery();return jsxRuntimeExports.jsx(MediaPageHeaderLayout,{centerItems:!0,image:jsxRuntimeExports.jsx(SmallArtistImage,{showVerifiedBadge:!0,artist:e,className:"rounded-full shadow-lg object-cover"}),title:e.name,subtitle:jsxRuntimeExports.jsx(GenreList,{genres:e.genres}),actionButtons:jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-24 justify-center md:justify-between",children:[jsxRuntimeExports.jsx(ActionButtons$1,{artist:e}),!s&&jsxRuntimeExports.jsx(MediaItemStats,{item:e})]}),footer:t.showDescription&&jsxRuntimeExports.jsx(ProfileDescription,{profile:e.profile,links:e.links,shortDescription:!0})})}function GenreList({genres:e}){return useIsMobileMediaQuery()?null:jsxRuntimeExports.jsx("ul",{className:"flex items-center justify-start gap-14 text-muted text-sm max-w-620 overflow-hidden overflow-ellipsis whitespace-nowrap",children:e==null?void 0:e.slice(0,5).map(s=>jsxRuntimeExports.jsx("li",{children:jsxRuntimeExports.jsx(GenreLink,{genre:s})},s.id))})}function ActionButtons$1({artist:e}){const t=useIsMobileMediaQuery();return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(PlaybackToggleButton,{queueId:queueGroupId(e),buttonType:"text",className:actionButtonClassName({isFirst:!0})}),!t&&jsxRuntimeExports.jsx(LikeButton,{likeable:e,className:actionButtonClassName()}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",children:[jsxRuntimeExports.jsx(Button,{variant:"outline",radius:"rounded-full",endIcon:jsxRuntimeExports.jsx(ArrowDropDownIcon,{}),className:actionButtonClassName(),children:jsxRuntimeExports.jsx(Trans,{message:"More"})}),jsxRuntimeExports.jsx(ArtistContextDialog,{artist:e})]})]})}function TopTracksTable({tracks:e}){const[t,s]=reactExports.useState(!1),n=reactExports.useMemo(()=>({all:e||[],sliced:(e==null?void 0:e.slice(0,5))||[]}),[e]);return jsxRuntimeExports.jsxs("div",{className:"flex-auto",children:[jsxRuntimeExports.jsx("h2",{className:"text-muted text-base my-16",children:jsxRuntimeExports.jsx(Trans,{message:"Popular songs"})}),jsxRuntimeExports.jsx(TrackTable,{tracks:t?n.all:n.sliced,hideArtist:!0,hideAlbum:!0,hideHeaderRow:!0}),jsxRuntimeExports.jsx(Button,{radius:"rounded-full",className:"mt-20",variant:"outline",onClick:()=>{s(!t)},children:t?jsxRuntimeExports.jsx(Trans,{message:"Show less"}):jsxRuntimeExports.jsx(Trans,{message:"Show more"})})]})}const albumListViewPerPage=5,albumGridViewPerPage=25;function useArtistAlbums(e,t){const{artistId:s}=useParams();return useInfiniteData({endpoint:`artists/${s}/albums`,queryKey:["artists",+s,"albums",t],paginate:"simple",initialPage:e,transformResponse:n=>(n.pagination.data=n.pagination.data.map(i=>assignAlbumToTracks(i)),n)})}function NoDiscographyMessage(){return jsxRuntimeExports.jsx(IllustratedMessage,{className:"my-80",imageHeight:"h-auto",image:jsxRuntimeExports.jsx(AlbumIcon,{size:"xl",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"We do not have discography for this artist yet"})})}function ArtistAlbumsList({initialAlbums:e}){const t=useArtistAlbums(e,"list"),{isInitialLoading:s,items:n}=t;return!s&&!n.length?jsxRuntimeExports.jsx(NoDiscographyMessage,{}):jsxRuntimeExports.jsxs("section",{children:[n.map(i=>jsxRuntimeExports.jsxs("div",{className:"mb-40",children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-14 mb-20",children:[jsxRuntimeExports.jsx(AlbumImage,{album:i,size:"w-110 h-110",className:"rounded object-cover flex-shrink-0"}),jsxRuntimeExports.jsxs("div",{className:"flex-auto",children:[jsxRuntimeExports.jsx("h4",{className:"font-semibold text-lg whitespace-nowrap min-w-0 overflow-hidden overflow-ellipsis",children:jsxRuntimeExports.jsx(AlbumLink,{album:i})}),i.release_date&&jsxRuntimeExports.jsx("div",{className:"text-muted text-sm mt-2 mb-18",children:jsxRuntimeExports.jsx(FormattedDate,{date:i.release_date})}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",offset:10,children:[jsxRuntimeExports.jsx(Button,{variant:"outline",size:"xs",radius:"rounded-full",endIcon:jsxRuntimeExports.jsx(ArrowDropDownIcon,{}),children:jsxRuntimeExports.jsx(Trans,{message:"More"})}),jsxRuntimeExports.jsx(AlbumContextDialog,{album:i})]})]})]}),jsxRuntimeExports.jsx(AlbumTrackTable$2,{album:i})]},i.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]})}function AlbumTrackTable$2({album:e}){const{data:t,sortDescriptor:s,onSortChange:n}=useSortableTableData(e.tracks);return jsxRuntimeExports.jsx(TrackTable,{tracks:t,hideArtist:!0,hideAlbum:!0,hideTrackImage:!0,sortDescriptor:s,onSortChange:n,queueGroupId:queueGroupId(e,"*",s)})}function ArtistAlbumsGrid({initialAlbums:e}){const t=useArtistAlbums(e,"grid");return!t.isInitialLoading&&!t.items.length?jsxRuntimeExports.jsx(NoDiscographyMessage,{}):jsxRuntimeExports.jsxs(ContentGrid,{children:[t.items.map(s=>jsxRuntimeExports.jsx(AlbumGridItem,{album:s},s.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]})}function DiscographyTab({artist:e,initialAlbums:t}){const{player:s}=useSettings(),[n,i]=useLocalStorage("artistPage.albumLayout",(s==null?void 0:s.default_artist_view)||"list");return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(Header,{artist:e}),jsxRuntimeExports.jsx(AdHost,{slot:"artist_bottom",className:"mt-34"}),jsxRuntimeExports.jsxs("div",{className:"mt-44",children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center border-b pb-4 mb-30 text-muted",children:[jsxRuntimeExports.jsx("h2",{className:"text-base mr-auto",children:jsxRuntimeExports.jsx(Trans,{message:"Albums"})}),jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"List view"}),children:jsxRuntimeExports.jsx(IconButton,{className:"ml-24 flex-shrink-0",color:n==="list"?"primary":void 0,onClick:()=>i("list"),children:jsxRuntimeExports.jsx(ViewAgendaIcon,{})})}),jsxRuntimeExports.jsx(Tooltip,{label:jsxRuntimeExports.jsx(Trans,{message:"Grid view"}),children:jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0",color:n==="grid"?"primary":void 0,onClick:()=>i("grid"),children:jsxRuntimeExports.jsx(GridViewIcon,{})})})]}),n==="list"?jsxRuntimeExports.jsx(ArtistAlbumsList,{artist:e,initialAlbums:(t==null?void 0:t.per_page)===albumListViewPerPage?t:null}):jsxRuntimeExports.jsx(ArtistAlbumsGrid,{artist:e,initialAlbums:(t==null?void 0:t.per_page)===albumGridViewPerPage?t:null})]})]})}function Header({artist:e}){var n,i;const t=useIsMobileMediaQuery();if(!((n=e.top_tracks)!=null&&n.length))return null;const s=((i=e.similar)==null?void 0:i.slice(0,4))||[];return jsxRuntimeExports.jsxs("div",{className:"flex items-start gap-30",children:[jsxRuntimeExports.jsx(TopTracksTable,{tracks:e.top_tracks}),!t&&jsxRuntimeExports.jsxs("div",{className:"w-1/3 max-w-320",children:[jsxRuntimeExports.jsx("h2",{className:"text-muted text-base my-16",children:jsxRuntimeExports.jsx(Trans,{message:"Similar artists"})}),jsxRuntimeExports.jsx("div",{children:s.map(a=>jsxRuntimeExports.jsxs(Link,{to:getArtistLink(a),className:"flex items-center gap-14 block p-4 mb-4 rounded hover:bg-hover cursor-pointer",children:[jsxRuntimeExports.jsx(SmallArtistImage,{artist:a,className:"w-44 h-44 object-cover rounded-full"}),jsxRuntimeExports.jsx("div",{className:"text-sm",children:a.name})]},a.id))})]})]})}function SimilarArtistsPanel({artist:e}){var t;return jsxRuntimeExports.jsx(ContentGrid,{children:(t=e.similar)==null?void 0:t.map(s=>jsxRuntimeExports.jsx(ArtistGridItem,{artist:s},s.id))})}function escapeText(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function escapeAttr(e){return e.replace(/"/g,""")}function attributesToString(e){const t=[];for(const s in e){let n=e[s]+"";t.push(`${s}="${escapeAttr(n)}"`)}return t.join(" ")}function defaultRender(e){let{tagName:t,attributes:s,content:n}=e;return`<${t} ${attributesToString(s)}>${escapeText(n)}</${t}>`}function linkifyStr(e,t){t===void 0&&(t={}),t=new Options(t,defaultRender);const s=tokenize(e),n=[];for(let i=0;i<s.length;i++){const a=s[i];a.t==="nl"&&t.get("nl2br")?n.push(`<br> `):!a.isLink||!t.check(a)?n.push(escapeText(a.toString())):n.push(t.render(a))}return n.join("")}String.prototype.linkify||Object.defineProperty(String.prototype,"linkify",{writable:!1,value:function(t){return linkifyStr(this,t)}});function useLinkifiedString(e){return reactExports.useMemo(()=>e&&linkifyStr(e,{nl2br:!0,attributes:{rel:"nofollow"}}),[e])}function ArtistAboutPanel({artist:e}){var n;const t=useLinkifiedString((n=e.profile)==null?void 0:n.description),s=reactExports.useMemo(()=>{var i;return((i=e.profile_images)==null?void 0:i.map(a=>a.url))||[]},[e.profile_images]);return jsxRuntimeExports.jsxs("div",{className:"",children:[jsxRuntimeExports.jsx("div",{className:"grid grid-cols-3 lg:grid-cols-4 gap-24",children:s.map((i,a)=>jsxRuntimeExports.jsxs(DialogTrigger,{type:"modal",children:[jsxRuntimeExports.jsx("button",{type:"button",className:"outline-none focus-visible:ring cursor-zoom-in rounded overflow-hidden hover:scale-105 transition",children:jsxRuntimeExports.jsx("img",{className:"aspect-video object-cover rounded shadow cursor-zoom-in",src:i,alt:""})}),jsxRuntimeExports.jsx(ImageZoomDialog,{images:s,defaultActiveIndex:a})]},i))}),jsxRuntimeExports.jsx("div",{className:"py-24 text-sm whitespace-pre-wrap",dangerouslySetInnerHTML:{__html:t||""}})]})}function ArtistTracksPanel({artist:e,initialTracks:t}){const s=useInfiniteData({queryKey:["tracks",e.id],endpoint:`artists/${e.id}/tracks`,initialPage:t});return s.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):s.items.length?jsxRuntimeExports.jsx(TrackList,{query:s}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(AudiotrackIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No tracks yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Follow :artist for updates on their latest releases.",values:{artist:e.name}})})}const AlbumListItem=reactExports.memo(({album:e,reposter:t,className:s,hideArtwork:n,hideActions:i,linksInNewTab:a,maxHeight:o})=>{var h;const u=queueGroupId(e),{player:l}=useSettings(),x=useIsMobileMediaQuery();n=n||!!x;const{managesAlbum:c}=useAlbumPermissions(e),p=(e==null?void 0:e.tracks)||[],j=usePlayerStore(y=>y.cuedMedia),g=p.find(y=>y.id===(j==null?void 0:j.meta.id))||p[0],R=(l==null?void 0:l.seekbar_type)==="waveform"&&trackIsLocallyUploaded(g);return jsxRuntimeExports.jsxs("div",{className:clsx("overflow-hidden",!n&&"flex gap-24",s,o),children:[!n&&jsxRuntimeExports.jsx(AlbumImage,{album:e,className:"flex-shrink-0 rounded",size:"w-184 h-184"}),jsxRuntimeExports.jsxs("div",{className:clsx("flex-auto min-w-0",o&&"flex flex-col h-full"),children:[jsxRuntimeExports.jsxs("div",{className:"flex-shrink-0",children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-14",children:[jsxRuntimeExports.jsx(PlaybackToggleButton,{queueId:u,track:g,tracks:e.tracks,buttonType:"icon",color:"primary",variant:"flat",radius:"rounded-full",equalizerColor:"white"}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:"text-sm text-muted flex items-center gap-6",children:[jsxRuntimeExports.jsx(ArtistLinks,{artists:e.artists,target:a?"_blank":void 0}),t&&jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(RepeatIcon,{size:"xs"}),jsxRuntimeExports.jsx(UserProfileLink,{user:t,target:a?"_blank":void 0})]})]}),jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(AlbumLink,{album:e,target:a?"_blank":void 0})})]}),jsxRuntimeExports.jsxs("div",{className:"ml-auto text-sm",children:[jsxRuntimeExports.jsx(FormattedRelativeTime,{date:e.created_at}),(h=e.genres)!=null&&h.length?jsxRuntimeExports.jsx(Chip,{className:"mt-6 w-max",size:"xs",children:jsxRuntimeExports.jsx(GenreLink,{genre:e.genres[0],target:a?"_blank":void 0})}):null]})]}),jsxRuntimeExports.jsx("div",{className:"my-20",children:R?jsxRuntimeExports.jsx(CommentBarContextProvider,{disableCommenting:i,children:jsxRuntimeExports.jsx(WaveformWithComments,{track:g,queue:e.tracks})}):jsxRuntimeExports.jsx(TrackSeekbar,{track:g,queue:e.tracks})})]}),jsxRuntimeExports.jsx("div",{className:"flex-auto overflow-y-auto",children:p.map((y,d)=>{var b;const f=d-1===((b=e.tracks)==null?void 0:b.length),E=(g==null?void 0:g.id)===y.id;return jsxRuntimeExports.jsx(TrackItem,{track:y,album:e,index:d,isLast:f,isActive:E},y.id)})}),!i&&jsxRuntimeExports.jsx(TrackActionsBar,{className:"mt-20",item:e,managesItem:c})]})]},e.id)});function TrackItem({track:e,index:t,isLast:s,isActive:n,album:i}){const a=usePlayerActions();return jsxRuntimeExports.jsxs("div",{className:clsx("flex items-center text-[13px] gap-8 p-8 cursor-pointer hover:bg-hover",!s&&"border-b",n&&"text-primary"),onClick:()=>{var o;(o=i.tracks)!=null&&o.length&&a.overrideQueueAndPlay(tracksToMediaItems(i.tracks),t)},children:[jsxRuntimeExports.jsx(TrackImage,{track:e,size:"w-20 h-20",className:"rounded"}),jsxRuntimeExports.jsx("div",{children:t+1}),jsxRuntimeExports.jsx("div",{className:"mx-10 flex-auto",children:e.name}),e.plays&&e.plays>0?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(PlayArrowFilledIcon,{size:"xs",className:"text-muted ml-auto"}),jsxRuntimeExports.jsx("div",{className:"text-muted",children:jsxRuntimeExports.jsx(FormattedNumber,{value:e.plays})})]}):null]},e.id)}function AlbumList({albums:e,query:t}){const s=useIsMobileMediaQuery();return!e&&t?e=t.items:e=[],s?jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(ContentGrid,{children:e.map(n=>jsxRuntimeExports.jsx(AlbumGridItem,{album:n},n.id))}),t&&jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]}):jsxRuntimeExports.jsxs("div",{children:[e.map(n=>jsxRuntimeExports.jsx(AlbumListItem,{album:n,className:"mb-40"},n.id)),t&&jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]})}function ArtistAlbumsPanel({artist:e}){const t=useInfiniteData({queryKey:["albums",e.id],endpoint:`artists/${e.id}/albums`});return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsx(AlbumList,{query:t}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(AlbumIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No albums yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Follow :artist for updates on their latest releases.",values:{artist:e.name}})})}function useArtistPageTabs(e){const[t]=useSearchParams(),{artistPage:s}=useSettings();return reactExports.useMemo(()=>{var x,c,p,j;const n=(x=e.similar)==null?void 0:x.length,i=((c=e.profile_images)==null?void 0:c.length)||((p=e.profile)==null?void 0:p.description),a=(j=s==null?void 0:s.tabs)==null?void 0:j.filter(g=>!(!g.active||g.id===artistPageTabs.similar&&!n||g.id===artistPageTabs.about&&!i)),o=artistPageTabs[t.get("tab")],u=a==null?void 0:a.findIndex(g=>g.id===o);return{selectedIndex:u>-1?u:0,activeTabs:a}},[e,s.tabs,t])}const userFollowsStore=create()(immer((e,t)=>{var s,n;return{followedUsers:((n=(s=getBootstrapData().user)==null?void 0:s.followed_users)==null?void 0:n.map(i=>i.id))||[],isFollowing:i=>t().followedUsers.includes(i),add:i=>{e(a=>{a.followedUsers.push(i)})},remove:i=>{e(a=>{a.followedUsers=a.followedUsers.filter(o=>o!==i)})}}})),userFollows=userFollowsStore.getState;function useFollowUser(){return useMutation(e=>followUser(e),{onSuccess:(e,{user:t})=>{userFollows().add(t.id),toast(message("Following :name",{values:{name:t.display_name}})),queryClient.invalidateQueries(["users"])},onError:e=>showHttpErrorToast(e)})}function followUser({user:e}){return apiClient.post(`users/${e.id}/follow`).then(t=>t.data)}function useUnfollowUser(){return useMutation(e=>unfollowUser(e),{onSuccess:(e,{user:t})=>{userFollows().remove(t.id),toast(message("Stopped following :name",{values:{name:t.display_name}})),queryClient.invalidateQueries(["users"])},onError:e=>showHttpErrorToast(e)})}function unfollowUser({user:e}){return apiClient.post(`users/${e.id}/unfollow`).then(t=>t.data)}function FollowerListItem({follower:e}){const t=userFollowsStore(s=>s.isFollowing(e.id));return jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-16 mb-16 pb-16 border-b",children:[jsxRuntimeExports.jsx(UserImage,{user:e,className:"w-64 h-64 rounded"}),jsxRuntimeExports.jsxs("div",{className:"text-sm",children:[jsxRuntimeExports.jsx(UserProfileLink,{user:e}),e.followers_count&&e.followers_count>0?jsxRuntimeExports.jsx("div",{className:"text-xs text-muted",children:jsxRuntimeExports.jsx(Trans,{message:"[one 1 followers|other :count followers]",values:{count:e.followers_count}})}):null]}),t?jsxRuntimeExports.jsx(UnfollowUserButton,{user:e}):jsxRuntimeExports.jsx(FollowUserButton,{user:e})]},e.id)}function FollowUserButton({user:e}){const t=useFollowUser(),{user:s}=useAuth();return(s==null?void 0:s.id)===e.id?null:jsxRuntimeExports.jsx(Button,{variant:"outline",radius:"rounded-full",className:"flex-shrink-0 ml-auto",onClick:()=>t.mutate({user:e}),disabled:t.isLoading,children:jsxRuntimeExports.jsx(Trans,{message:"Follow"})})}function UnfollowUserButton({user:e}){const t=useUnfollowUser(),{user:s}=useAuth();return(s==null?void 0:s.id)===e.id?null:jsxRuntimeExports.jsx(Button,{variant:"outline",radius:"rounded-full",className:"flex-shrink-0 ml-auto",onClick:()=>t.mutate({user:e}),disabled:t.isLoading,children:jsxRuntimeExports.jsx(Trans,{message:"Unfollow"})})}function ArtistFollowersPanel({artist:e}){const t=useInfiniteData({queryKey:["artists",e.id,"followers"],endpoint:`artists/${e.id}/followers`});return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsxs("div",{children:[t.items.map(s=>jsxRuntimeExports.jsx(FollowerListItem,{follower:s},s.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(BookmarkBorderIcon,{size:"lg",className:"text-muted"}),description:jsxRuntimeExports.jsx(Trans,{message:"Seems like no one is following :name yet.",values:{name:e.name}})})}function ArtistPageTabs({data:e}){const{selectedIndex:t,activeTabs:s}=useArtistPageTabs(e.artist);return jsxRuntimeExports.jsxs(Tabs,{className:"mt-24 md:mt-48",selectedTab:t,isLazy:!0,children:[jsxRuntimeExports.jsx(TabList,{children:s.map(n=>{switch(n.id){case artistPageTabs.discography:return jsxRuntimeExports.jsx(Tab,{elementType:Link,children:jsxRuntimeExports.jsx(Trans,{message:"Discography"})},artistPageTabs.discography);case artistPageTabs.similar:return jsxRuntimeExports.jsx(Tab,{elementType:Link,to:{search:"?tab=similar"},children:jsxRuntimeExports.jsx(Trans,{message:"Similar artists"})},artistPageTabs.similar);case artistPageTabs.about:return jsxRuntimeExports.jsx(Tab,{elementType:Link,to:{search:"?tab=about"},children:jsxRuntimeExports.jsx(Trans,{message:"About"})},artistPageTabs.about);case artistPageTabs.tracks:return jsxRuntimeExports.jsx(Tab,{elementType:Link,to:{search:"?tab=tracks"},children:jsxRuntimeExports.jsx(Trans,{message:"Tracks"})},artistPageTabs.tracks);case artistPageTabs.albums:return jsxRuntimeExports.jsx(Tab,{elementType:Link,to:{search:"?tab=albums"},children:jsxRuntimeExports.jsx(Trans,{message:"Albums"})},artistPageTabs.albums);case artistPageTabs.followers:return jsxRuntimeExports.jsx(Tab,{elementType:Link,to:{search:"?tab=followers"},children:jsxRuntimeExports.jsx(Trans,{message:"Followers"})},artistPageTabs.followers)}})}),jsxRuntimeExports.jsx(TabPanels,{className:"mt-12 md:mt-24",children:s.map(n=>{switch(n.id){case artistPageTabs.discography:return jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(DiscographyTab,{artist:e.artist,initialAlbums:e.albums})},artistPageTabs.discography);case artistPageTabs.similar:return jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(SimilarArtistsPanel,{artist:e.artist})},artistPageTabs.similar);case artistPageTabs.about:return jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ArtistAboutPanel,{artist:e.artist})},artistPageTabs.about);case artistPageTabs.tracks:return jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ArtistTracksPanel,{artist:e.artist,initialTracks:e.tracks})},artistPageTabs.tracks);case artistPageTabs.albums:return jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ArtistAlbumsPanel,{artist:e.artist})},artistPageTabs.albums);case artistPageTabs.followers:return jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ArtistFollowersPanel,{artist:e.artist})},artistPageTabs.followers)}})})]})}function ArtistPage(){const e=getFromLocalStorage(albumLayoutKey,"list")==="list",{artistPage:t}=useSettings(),s=t.tabs.filter(o=>o.active).map(o=>o.id);let n=["similar","genres","profile"];s.includes(artistPageTabs.tracks)&&n.push("tracks"),s.includes(artistPageTabs.discography)&&(n=[...n,"albums","topTracks"]);const a=useArtist({with:n,withCount:"likes",autoUpdate:!0,loadAlbumTracks:e,albumsPerPage:e?5:25,paginate:"simple"});return a.data?jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(PageMetaTags,{query:a}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsx(ArtistPageHeader,{artist:a.data.artist}),jsxRuntimeExports.jsx(AdHost,{slot:"artist_top",className:"mt-14"}),jsxRuntimeExports.jsx(ArtistPageTabs,{data:a.data}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-34"})]}):jsxRuntimeExports.jsx(PageStatus,{query:a,loaderClassName:"absolute inset-0 m-auto"})}function usePlaylist(){const{playlistId:e}=useParams();return useQuery(["playlists",+e],()=>fetchPlaylist(e))}function fetchPlaylist(e){return apiClient.get(`playlists/${e}`).then(t=>t.data)}function AvatarGroup(e){const t=reactExports.Children.toArray(e.children);if(!t.length)return null;const s=t[0].props.link,n=t[0].props.label;return jsxRuntimeExports.jsxs("div",{className:clsx("pl-10 flex isolate items-center",e.className),children:[jsxRuntimeExports.jsx(reactExports.Fragment,{children:t.map((i,a)=>jsxRuntimeExports.jsx("div",{style:{zIndex:5-a},className:clsx("relative border-2 border-bg-alt bg-alt rounded-full -ml-10 overflow-hidden flex-shrink-0"),children:i},a))}),jsxRuntimeExports.jsxs("div",{className:"text-sm whitespace-nowrap ml-10",children:[s&&n?jsxRuntimeExports.jsx(Link,{to:s,className:"hover:underline",children:n}):null,t.length>1&&jsxRuntimeExports.jsxs("span",{children:[" ",jsxRuntimeExports.jsx(Trans,{message:"+ :count more",values:{count:t.length-1}})]})]})]})}function BulletSeparatedItems({children:e,className:t}){const s=reactExports.Children.toArray(e);return jsxRuntimeExports.jsx("div",{className:clsx("flex items-center gap-4",t),children:s.map((n,i)=>jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{children:n}),i<s.length-1?jsxRuntimeExports.jsx("div",{children:"•"}):null]},i))})}function PlaylistPageHeader({playlist:e,totalDuration:t,queueId:s}){var n;return jsxRuntimeExports.jsx(reactExports.Fragment,{children:jsxRuntimeExports.jsx(MediaPageHeaderLayout,{image:jsxRuntimeExports.jsx(EditableImage,{playlist:e}),title:e.name,subtitle:jsxRuntimeExports.jsx(AvatarGroup,{children:(n=e.editors)==null?void 0:n.map(i=>jsxRuntimeExports.jsx(Avatar,{circle:!0,src:i.avatar,label:i.display_name,link:getUserProfileLink(i)},i.id))}),description:jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[e.description,e.tracks_count?jsxRuntimeExports.jsxs(BulletSeparatedItems,{className:"mt-14 text-sm text-muted",children:[jsxRuntimeExports.jsx(Trans,{message:"[one 1 track|other :count tracks]",values:{count:e.tracks_count}}),jsxRuntimeExports.jsx(FormattedDuration,{ms:t,verbose:!0}),e.collaborative&&jsxRuntimeExports.jsx(Trans,{message:"Collaborative"})]}):null]}),actionButtons:jsxRuntimeExports.jsx(ActionButtons,{playlist:e,hasTracks:t>0,queueId:s})})})}function EditableImage({playlist:e,size:t,className:s}){const n=useUpdatePlaylist(),{canEdit:i}=usePlaylistPermissions(e);return i?jsxRuntimeExports.jsx(FileUploadProvider,{children:jsxRuntimeExports.jsx(ImageSelector,{showEditButtonOnHover:!0,diskPrefix:"playlist_media",variant:"square",previewSize:t,className:s,value:getPlaylistImageSrc(e),onChange:a=>{n.mutate({image:a})},placeholderIcon:jsxRuntimeExports.jsx(ImageIcon,{}),stretchPreview:!0})}):jsxRuntimeExports.jsx(PlaylistImage,{className:`${t} ${s} object-cover rounded`,playlist:e})}function ActionButtons({playlist:e,hasTracks:t,queueId:s}){return jsxRuntimeExports.jsxs("div",{className:"text-center md:text-start",children:[jsxRuntimeExports.jsx(PlaybackToggleButton,{disabled:!t,buttonType:"text",queueId:s,className:actionButtonClassName({isFirst:!0})}),jsxRuntimeExports.jsx(FollowPlaylistButton,{buttonType:"text",playlist:e,className:actionButtonClassName()}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",children:[jsxRuntimeExports.jsx(Button,{variant:"outline",radius:"rounded-full",endIcon:jsxRuntimeExports.jsx(ArrowDropDownIcon,{}),className:actionButtonClassName(),children:jsxRuntimeExports.jsx(Trans,{message:"More"})}),jsxRuntimeExports.jsx(PlaylistContextDialog,{playlist:e})]})]})}function moveMultipleItemsInArray(e,t,s){const n=Array.isArray(t)?t:[t],i=e[s+(s<n[0]?0:1)],a=n.map(l=>e[l]),o=[];for(let l=0;l<e.length;){const x=e[l];a.indexOf(x)>=0?(o.push(x),e.splice(l,1)):++l}let u=e.indexOf(i);return u<0&&(u=e.length),e.splice(u,0,...o),e}function useReorderPlaylistTracks(){const{playlistId:e}=useParams();return useMutation(t=>reorderTracks(e,t),{onSuccess:()=>{queryClient.invalidateQueries(["tracks","playlist",+e])},onError:t=>showHttpErrorToast(t)})}function reorderTracks(e,{tracks:t,oldIndexes:s,newIndex:n}){const i=t.map(a=>a.id);return moveMultipleItemsInArray(i,s,n),apiClient.post(`playlists/${e}/tracks/order`,{ids:i}).then(a=>a.data)}function useRemoveTracksFromPlaylist(){return useMutation(e=>removeTracks(e),{onSuccess:(e,{tracks:t})=>{toast(message("Removed [one 1 track|other :count tracks] from playlist",{values:{count:t.length}})),queryClient.invalidateQueries(["playlists",e.playlist.id]),queryClient.invalidateQueries(["tracks","playlist",e.playlist.id])},onError:e=>showHttpErrorToast(e)})}function removeTracks(e){const t={ids:e.tracks.map(s=>s.id)};return apiClient.post(`playlists/${e.playlistId}/tracks/remove`,t).then(s=>s.data)}function PlaylistTrackContextDialog({playlist:e,...t}){const{user:s}=useAuth(),{close:n}=useDialogContext(),i=useRemoveTracksFromPlaylist(),a=e.owner_id===(s==null?void 0:s.id)||e.collaborative;return jsxRuntimeExports.jsx(TableTrackContextDialog,{...t,children:o=>a?jsxRuntimeExports.jsx(ContextMenuButton,{onClick:()=>{i.isLoading||(i.mutate({playlistId:e.id,tracks:o}),n())},children:jsxRuntimeExports.jsx(Trans,{message:"Remove from this playlist"})}):null})}function PlaylistTableRow({item:e,children:t,className:s,...n}){const i=useIsTouchDevice(),{data:a,selectRow:o,selectedRows:u,sortDescriptor:l}=reactExports.useContext(TableContext),x=reactExports.useRef(null),c=reactExports.useRef(null),p=useReorderPlaylistTracks(),{data:j}=usePlaylist(),{sortableProps:g}=useSortable({ref:x,disabled:(i??!1)||p.isLoading||(l==null?void 0:l.orderBy)!=="position",item:e,items:a,type:"playlistTrack",preview:c,previewVariant:"line",onDragEnd:()=>{o(null)},onSortStart:()=>{u.includes(e.id)||o(e)},onSortEnd:(R,h)=>{p.mutate({tracks:a,oldIndexes:u.length>1?u.map(y=>a.findIndex(d=>d.id===y)):R,newIndex:h})}});return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsxs(DialogTrigger,{type:"popover",triggerOnContextMenu:!0,placement:"bottom-start",children:[jsxRuntimeExports.jsx("div",{className:s,ref:x,...$3ef42575df84b30b$export$9d1611c77c2fe928(g,n),children:t}),jsxRuntimeExports.jsx(PlaylistTrackContextDialog,{playlist:j.playlist})]}),!e.isPlaceholder&&jsxRuntimeExports.jsx(RowDragPreview,{track:e,ref:c})]})}const RowDragPreview=React.forwardRef(({track:e},t)=>{var i,a;const{selectedRows:s}=reactExports.useContext(TableContext),n=s.length>1?jsxRuntimeExports.jsx(Trans,{message:":count tracks",values:{count:s.length}}):`${e.name} - ${(a=(i=e.artists)==null?void 0:i[0])==null?void 0:a.name}`;return jsxRuntimeExports.jsx(DragPreview,{ref:t,children:()=>jsxRuntimeExports.jsx("div",{className:"p-8 rounded shadow bg-chip text-base",role:"presentation",children:n})})});function MediaPageNoResultsMessage({description:e,searchQuery:t,className:s}){return t?jsxRuntimeExports.jsx(IllustratedMessage,{className:s,title:jsxRuntimeExports.jsx(Trans,{message:"No results found"}),description:jsxRuntimeExports.jsx(Trans,{message:"Try another search query or different filters"})}):jsxRuntimeExports.jsx(IllustratedMessage,{className:s,title:jsxRuntimeExports.jsx(Trans,{message:"Nothing to display"}),description:e})}function PlaylistPage(){const e=usePlaylist();return e.data?jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(PageMetaTags,{query:e}),jsxRuntimeExports.jsx(PageContent$2,{initialTracks:e.data.tracks,playlist:e.data.playlist,totalDuration:e.data.totalDuration})]}):jsxRuntimeExports.jsx(PageStatus,{query:e,loaderClassName:"absolute inset-0 m-auto"})}function PageContent$2({initialTracks:e,playlist:t,totalDuration:s}){const{trans:n}=useTrans(),i=useInfiniteData({initialPage:e,queryKey:["tracks","playlist",t.id],endpoint:`playlists/${t.id}/tracks`,defaultOrderBy:"position",defaultOrderDir:"asc",paginate:"simple",willSortOrFilter:!0}),{isInitialLoading:a,sortDescriptor:o,setSortDescriptor:u,searchQuery:l,setSearchQuery:x,items:c}=i,p=t.tracks_count||0,j=queueGroupId(t,"*",o);return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-44"}),jsxRuntimeExports.jsx(PlaylistPageHeader,{playlist:t,totalDuration:s,queueId:j}),jsxRuntimeExports.jsx(TextField,{value:l,onChange:g=>x(g.target.value),className:"max-w-512 mt-28 mb-44 md:mb-24",size:"sm",startAdornment:jsxRuntimeExports.jsx(SearchIcon,{}),placeholder:n(message("Search within playlist"))}),jsxRuntimeExports.jsx(TrackTable,{queueGroupId:j,tracks:c,sortDescriptor:o,onSortChange:u,renderRowAs:PlaylistTableRow,tableBody:jsxRuntimeExports.jsx(VirtualTableBody,{query:i,totalItems:p})}),!c.length&&!a&&jsxRuntimeExports.jsx(MediaPageNoResultsMessage,{className:"mt-34",searchQuery:l,description:jsxRuntimeExports.jsx(Trans,{message:"This playlist does not have any tracks yet"})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-44"})]})}function commentsQueryKey(e){return["comment",`${e.id}-${e.model_type}`]}function useComments(e){return useInfiniteData({queryKey:commentsQueryKey(e),endpoint:"commentable/comments",queryParams:{commentable_type:e.model_type,commentable_id:e.id}})}function useStoreVote(e){return useMutation(t=>changeVote(e,t),{onSuccess:t=>{},onError:t=>showHttpErrorToast(t)})}function changeVote(e,t){return apiClient.post("vote",{vote_type:t.voteType,model_id:e.id,model_type:e.model_type}).then(s=>s.data)}function ThumbButtons({model:e,className:t,showUpvotesOnly:s}){const n=useStoreVote(e),[i,a]=reactExports.useState(e.upvotes||0),[o,u]=reactExports.useState(e.downvotes||0),[l,x]=reactExports.useState(e.current_vote),c=p=>{a(p.upvotes),u(p.downvotes),x(p.current_vote)};return jsxRuntimeExports.jsxs("div",{className:t,children:[jsxRuntimeExports.jsxs(Button,{className:"gap-6",sizeClassName:"px-8 py-4",color:l==="upvote"?"primary":void 0,disabled:n.isLoading,onClick:()=>{n.mutate({voteType:"upvote"},{onSuccess:p=>c(p.model)})},children:[jsxRuntimeExports.jsx(ThumbUpIcon,{}),jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(FormattedNumber,{value:i})})]}),!s&&jsxRuntimeExports.jsxs(Button,{className:"gap-6",sizeClassName:"px-8 py-4",color:l==="downvote"?"primary":void 0,disabled:n.isLoading,onClick:()=>{n.mutate({voteType:"downvote"},{onSuccess:p=>c(p.model)})},children:[jsxRuntimeExports.jsx(ThumbDownIcon,{}),jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx(FormattedNumber,{value:o})})]})]})}function useSubmitReport(e){return useMutation(t=>submitReport(e,t),{onSuccess:()=>{toast(message("Thanks for reporting. We will review this content."))},onError:t=>showHttpErrorToast(t)})}function submitReport(e,t){return apiClient.post("report",{reason:t.reason,model_id:e.id,model_type:e.model_type}).then(s=>s.data)}function CommentListItem({comment:e,commentable:t,canDelete:s}){const n=useIsMobileMediaQuery(),{user:i,hasPermission:a}=useAuth(),[o,u]=reactExports.useState(!1),l=i!=null&&!e.deleted&&!n&&e.depth<5&&a("comments.create");return jsxRuntimeExports.jsxs("div",{style:{paddingLeft:`${e.depth*20}px`},onClick:()=>{n&&u(!o)},children:[jsxRuntimeExports.jsxs("div",{className:"flex items-start gap-24 py-18 min-h-70 group",children:[jsxRuntimeExports.jsx(UserAvatar,{user:e.user,size:"xl",circle:!0}),jsxRuntimeExports.jsxs("div",{className:"text-sm flex-auto",children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-8 mb-4",children:[e.user&&jsxRuntimeExports.jsx(UserDisplayName,{user:e.user}),jsxRuntimeExports.jsx("time",{className:"text-muted text-xs",children:jsxRuntimeExports.jsx(FormattedRelativeTime,{date:e.created_at})}),e.position?jsxRuntimeExports.jsx(Position,{commentable:t,position:e.position}):null]}),jsxRuntimeExports.jsx("div",{children:e.deleted?jsxRuntimeExports.jsx("span",{className:"text-muted italic",children:jsxRuntimeExports.jsx(Trans,{message:"[COMMENT DELETED]"})}):e.content}),!e.deleted&&jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-8 mt-10 -ml-8",children:[l&&jsxRuntimeExports.jsx(Button,{sizeClassName:"text-sm px-8 py-4",startIcon:jsxRuntimeExports.jsx(ReplyIcon,{}),onClick:()=>u(!o),children:jsxRuntimeExports.jsx(Trans,{message:"Reply"})}),jsxRuntimeExports.jsx(ThumbButtons,{model:e,showUpvotesOnly:!0}),jsxRuntimeExports.jsx(CommentOptionsTrigger,{comment:e,canDelete:s,user:i})]})]})]}),o?jsxRuntimeExports.jsx(NewCommentForm,{className:e!=null&&e.depth?void 0:"pl-20",commentable:t,inReplyTo:e,autoFocus:!0,onSuccess:()=>{u(!1)}}):null]})}const Position=reactExports.memo(({commentable:e,position:t})=>{if(!e.duration)return null;const s=t/100*(e.duration/1e3);return jsxRuntimeExports.jsx("span",{className:"text-muted text-xs",children:jsxRuntimeExports.jsx(Trans,{message:"at :position",values:{position:jsxRuntimeExports.jsx(FormattedDuration,{seconds:s})}})})});function CommentOptionsTrigger({comment:e,canDelete:t,user:s}){const n=useDeleteComments(),i=useSubmitReport(e),[a,o]=reactExports.useState(!1),u=(e.user_id===(s==null?void 0:s.id)||t)&&!e.deleted,l=()=>{i.mutate({})},x=c=>{o(!1),c&&n.mutate({commentIds:[e.id]},{onSuccess:()=>{queryClient.invalidateQueries(["comment"])}})};return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsxs(MenuTrigger,{children:[jsxRuntimeExports.jsx(Button,{startIcon:jsxRuntimeExports.jsx(MoreVertIcon,{}),sizeClassName:"text-sm px-8 py-4",children:jsxRuntimeExports.jsx(Trans,{message:"More"})}),jsxRuntimeExports.jsxs(Menu,{children:[jsxRuntimeExports.jsx(Item,{value:"report",onSelected:()=>l(),children:jsxRuntimeExports.jsx(Trans,{message:"Report comment"})}),u&&jsxRuntimeExports.jsx(Item,{value:"delete",onSelected:()=>o(!0),children:jsxRuntimeExports.jsx(Trans,{message:"Delete"})})]})]}),jsxRuntimeExports.jsx(DialogTrigger,{type:"modal",isOpen:a,onClose:c=>x(c),children:jsxRuntimeExports.jsx(ConfirmationDialog,{isDanger:!0,title:jsxRuntimeExports.jsx(Trans,{message:"Delete comment?"}),body:jsxRuntimeExports.jsx(Trans,{message:"Are you sure you want to delete this comment?"}),confirm:jsxRuntimeExports.jsx(Trans,{message:"Delete"})})})]})}function UserDisplayName({user:e}){const{auth:t}=reactExports.useContext(SiteConfigContext);return t.getUserProfileLink?jsxRuntimeExports.jsx(Link,{to:t.getUserProfileLink(e),className:"hover:underline text-base font-medium",children:e.display_name}):jsxRuntimeExports.jsx("div",{className:"text-base font-medium",children:e.display_name})}function AccountRequiredCard({message:e}){const{user:t}=useAuth();return t?null:jsxRuntimeExports.jsxs("div",{className:"border border-dashed py-30 px-20 my-40 mx-auto text-center max-w-850 rounded",children:[jsxRuntimeExports.jsx("div",{className:"text-xl font-semibold mb-8",children:jsxRuntimeExports.jsx(Trans,{message:"Account required"})}),jsxRuntimeExports.jsx("div",{className:"text-muted text-base",children:jsxRuntimeExports.jsx(Trans,{...e,values:{l:s=>jsxRuntimeExports.jsx(Link,{className:LinkStyle,to:"/login",children:s}),r:s=>jsxRuntimeExports.jsx(Link,{className:LinkStyle,to:"/register",children:s})}})})]})}const accountRequiredMessage=message("Please <l>login</l> or <r>create account</r> to comment");function CommentList({className:e,commentable:t,canDeleteAllComments:s=!1,children:n}){const{items:i,totalItems:a,...o}=useComments(t);return o.isError?null:jsxRuntimeExports.jsxs("div",{className:e,children:[jsxRuntimeExports.jsxs("div",{className:"mb-8 pb-8 border-b flex items-center gap-8",children:[jsxRuntimeExports.jsx(CommentIcon,{size:"sm",className:"text-muted"}),o.isInitialLoading?jsxRuntimeExports.jsx(Trans,{message:"Loading comments..."}):jsxRuntimeExports.jsx(Trans,{message:":count comments",values:{count:jsxRuntimeExports.jsx(FormattedNumber,{value:a||0})}})]}),n,jsxRuntimeExports.jsx(AccountRequiredCard,{message:accountRequiredMessage}),jsxRuntimeExports.jsx(AnimatePresence,{initial:!1,mode:"wait",children:o.isInitialLoading?jsxRuntimeExports.jsx(CommentSkeletons,{count:4}):jsxRuntimeExports.jsx(CommentListItems,{comments:i,canDeleteAllComments:s,commentable:t})}),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:o,variant:"loadMore"})]})}function CommentListItems({comments:e,commentable:t,canDeleteAllComments:s}){return e.length?jsxRuntimeExports.jsx(m.div,{...opacityAnimation,children:e.map(n=>jsxRuntimeExports.jsx(CommentListItem,{comment:n,commentable:t,canDelete:s},n.id))},"comments"):jsxRuntimeExports.jsx(IllustratedMessage,{className:"mt-24",size:"sm",title:jsxRuntimeExports.jsx(Trans,{message:"Seems a little quiet over here"}),description:jsxRuntimeExports.jsx(Trans,{message:"Be the first to comment"})})}function CommentSkeletons({count:e}){return jsxRuntimeExports.jsx(m.div,{...opacityAnimation,children:[...new Array(e).keys()].map(t=>jsxRuntimeExports.jsxs("div",{className:"flex items-start gap-24 py-18 min-h-70 group",children:[jsxRuntimeExports.jsx(Skeleton,{variant:"avatar",radius:"rounded-full",size:"w-60 h-60"}),jsxRuntimeExports.jsxs("div",{className:"text-sm flex-auto",children:[jsxRuntimeExports.jsx(Skeleton,{className:"text-base max-w-184 mb-4"}),jsxRuntimeExports.jsx(Skeleton,{className:"text-sm"}),jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-8 mt-10",children:[jsxRuntimeExports.jsx(Skeleton,{className:"text-sm max-w-70"}),jsxRuntimeExports.jsx(Skeleton,{className:"text-sm max-w-40"}),jsxRuntimeExports.jsx(Skeleton,{className:"text-sm max-w-60"})]})]})]},t))},"loading-skeleton")}function TruncatedDescription({description:e,className:t}){const s=useLinkifiedString(e),n=reactExports.useRef(null),i=reactExports.useRef(null),[a,o]=reactExports.useState(!1),[u,l]=reactExports.useState(!1);return reactExports.useLayoutEffect(()=>{var p,j;const x=((p=n.current)==null?void 0:p.getBoundingClientRect().height)||0;(((j=n.current)==null?void 0:j.scrollHeight)||0)>x&&o(!0)},[]),s?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{ref:n,className:clsx("relative",t,!u&&"max-h-160 overflow-hidden",!u&&a&&"after:absolute after:bottom-0 after:left-0 after:w-full after:h-20 after:bg-gradient-to-b after:from-transparent after:to-background"),children:jsxRuntimeExports.jsx("div",{ref:i,dangerouslySetInnerHTML:{__html:s}})}),a&&jsxRuntimeExports.jsx(Button,{size:"xs",className:"mt-20",variant:"outline",onClick:()=>l(!u),children:u?jsxRuntimeExports.jsx(Trans,{message:"Show less"}):jsxRuntimeExports.jsx(Trans,{message:"Show more"})})]}):null}function useCommentPermissions(){const{player:e}=useSettings(),{hasPermission:t}=useAuth(),s=(e==null?void 0:e.track_comments)&&t("comments.view");return{canView:s,canCreate:s&&t("comments.create")}}function AlbumPage(){var i,a;const{canView:e,canCreate:t}=useCommentPermissions(),s=useAlbum({autoUpdate:!0,defaultRelations:!0}),{canEdit:n}=useAlbumPermissions((i=s.data)==null?void 0:i.album);return s.data?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsxs(CommentBarContextProvider,{children:[jsxRuntimeExports.jsx(PageMetaTags,{query:s}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-44"}),jsxRuntimeExports.jsx(AlbumPageHeader,{album:s.data.album}),t?jsxRuntimeExports.jsx(CommentBarNewCommentForm,{className:"mb-16",commentable:s.data.album}):null]}),(a=s.data.album.tags)!=null&&a.length?jsxRuntimeExports.jsx($9bf71ea28793e738$export$20e40289641fbbb6,{children:jsxRuntimeExports.jsx(ChipList,{className:"mb-16",selectable:!0,children:s.data.album.tags.map(o=>jsxRuntimeExports.jsxs(Chip,{elementType:Link,to:`/tag/${o.name}`,children:["#",o.display_name||o.name]},o.id))})}):null,jsxRuntimeExports.jsx(TruncatedDescription,{description:s.data.album.description,className:"text-sm mt-24"}),jsxRuntimeExports.jsx(AdHost,{slot:"album_above",className:"mt-34"}),jsxRuntimeExports.jsx(AlbumTrackTable$1,{album:s.data.album}),e&&jsxRuntimeExports.jsx(CommentList,{className:"mt-34",commentable:s.data.album,canDeleteAllComments:n}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-44"})]}):jsxRuntimeExports.jsx(PageStatus,{query:s,loaderClassName:"absolute inset-0 m-auto"})}function AlbumTrackTable$1({album:e}){var i;const{data:t,sortDescriptor:s,onSortChange:n}=useSortableTableData(e.tracks);return jsxRuntimeExports.jsxs("div",{className:"mt-44",children:[jsxRuntimeExports.jsx(TrackTable,{queueGroupId:queueGroupId(e),tracks:t,sortDescriptor:s,onSortChange:n,hideTrackImage:!0,hideArtist:!0,hideAlbum:!0,hidePopularity:!1}),(i=e.tracks)!=null&&i.length?null:jsxRuntimeExports.jsx(IllustratedMessage,{className:"mt-34",title:jsxRuntimeExports.jsx(Trans,{message:"Nothing to display"}),description:jsxRuntimeExports.jsx(Trans,{message:"This album does not have any tracks yet"})})]})}function AlbumPageHeader({album:e}){var s,n,i,a,o;const t=(s=e.tracks)==null?void 0:s.reduce((u,l)=>u+(l.duration||0),0);return jsxRuntimeExports.jsx(reactExports.Fragment,{children:jsxRuntimeExports.jsx(MediaPageHeaderLayout,{className:"mb-28",image:jsxRuntimeExports.jsx(AlbumImage,{album:e,className:"rounded"}),title:e.name,subtitle:jsxRuntimeExports.jsx(AvatarGroup,{children:(n=e.artists)==null?void 0:n.map(u=>jsxRuntimeExports.jsx(Avatar,{circle:!0,src:getSmallArtistImage(u),label:u.name,link:getArtistLink(u)},u.id))}),description:jsxRuntimeExports.jsxs(BulletSeparatedItems,{className:"text-sm text-muted",children:[(i=e.tracks)!=null&&i.length?jsxRuntimeExports.jsx(Trans,{message:"[one 1 track|other :count tracks]",values:{count:e.tracks.length}}):null,(a=e.tracks)!=null&&a.length?jsxRuntimeExports.jsx(FormattedDuration,{ms:t,verbose:!0}):null,jsxRuntimeExports.jsx(FormattedDate,{date:e.release_date})]}),actionButtons:jsxRuntimeExports.jsx(TrackActionsBar,{item:e,managesItem:!1,buttonGap:void 0,buttonSize:"sm",buttonRadius:"rounded-full",buttonClassName:actionButtonClassName(),children:jsxRuntimeExports.jsx(PlaybackToggleButton,{disabled:!((o=e.tracks)!=null&&o.length),buttonType:"text",queueId:queueGroupId(e),className:actionButtonClassName({isFirst:!0})})})})})}const libraryTracksQueryKey=e=>{const t=getBootstrapData().user;return e===(t==null?void 0:t.id)&&(e="me"),["tracks","library",e]};function useUserLikedTracks(e,t){return useInfiniteData({queryKey:libraryTracksQueryKey(e),endpoint:`users/${e}/liked-tracks`,defaultOrderBy:"likes.created_at",defaultOrderDir:"desc",...t})}function LibraryTracksPage(){const e=useLibraryStore(j=>Object.keys(j.track).length),t=useUserLikedTracks("me",{willSortOrFilter:!0}),{isInitialLoading:s,sortDescriptor:n,setSortDescriptor:i,searchQuery:a,setSearchQuery:o,items:u,isError:l}=t,{user:x}=useAuth(),{trans:c}=useTrans(),p=queueGroupId(x,"libraryTracks",n);return l?jsxRuntimeExports.jsx(PageErrorMessage,{}):jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(StaticPageTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Your tracks"})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsxs("div",{className:"flex flex-wrap items-center gap-24 justify-between mb-34",children:[jsxRuntimeExports.jsx("h1",{className:"text-2xl font-semibold w-max md:w-full whitespace-nowrap",children:e?jsxRuntimeExports.jsx(Trans,{message:"[one 1 liked song|other :count liked songs]",values:{count:e}}):jsxRuntimeExports.jsx(Trans,{message:"My songs"})}),jsxRuntimeExports.jsx(PlaybackToggleButton,{queueId:p,buttonType:"text",className:"min-w-128 flex-shrink-0"}),jsxRuntimeExports.jsx(TextField,{value:a,onChange:j=>o(j.target.value),className:"max-w-512 flex-auto",size:"sm",startAdornment:jsxRuntimeExports.jsx(SearchIcon,{}),placeholder:c(message("Search within tracks"))})]}),jsxRuntimeExports.jsx(TrackTable,{queueGroupId:p,tracks:s?getPlaceholderItems$1(e):u,sortDescriptor:n,onSortChange:i,hideAddedAtColumn:!1,tableBody:jsxRuntimeExports.jsx(VirtualTableBody,{query:t,totalItems:e})}),!u.length&&!s&&jsxRuntimeExports.jsx(MediaPageNoResultsMessage,{className:"mt-34",searchQuery:a,description:jsxRuntimeExports.jsx(Trans,{message:"You have not added any songs to your library yet."})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-34"})]})}function getPlaceholderItems$1(e){return[...new Array(Math.min(e,30)).keys()].map((t,s)=>({isPlaceholder:!0,id:`placeholder-${t}`}))}function LibraryPageSortDropdown({items:e,sortDescriptor:t,setSortDescriptor:s}){const n=useIsMobileMediaQuery(),i=`${t.orderBy}:${t.orderDir}`;return jsxRuntimeExports.jsxs(MenuTrigger,{selectionMode:"single",selectedValue:i,onSelectionChange:a=>{const[o,u]=a.split(":");s({orderBy:o,orderDir:u})},children:[n?jsxRuntimeExports.jsx(IconButton,{children:jsxRuntimeExports.jsx(SortIcon,{})}):jsxRuntimeExports.jsx(Button,{variant:"outline",className:"flex-shrink-0",endIcon:jsxRuntimeExports.jsx(ArrowDropDownIcon,{}),children:jsxRuntimeExports.jsx(Trans,{...e[i]})}),jsxRuntimeExports.jsx(Menu,{children:Object.entries(e).map(([a,o])=>jsxRuntimeExports.jsx(Item,{value:a,children:jsxRuntimeExports.jsx(Trans,{...o})},a))})]})}const libraryAlbumsQueryKey=(e,t)=>{const s=getBootstrapData().user;e===(s==null?void 0:s.id)&&(e="me");const n=["albums","library",e];return t&&n.push(t),n};function useUserLikedAlbums(e,t){return useInfiniteData({queryKey:libraryAlbumsQueryKey(e),endpoint:`users/${e}/liked-albums`,defaultOrderBy:"likes.created_at",defaultOrderDir:"desc",...t})}const sortItems$2={"likes.created_at:desc":message("Recently added"),"name:asc":message("A-Z"),"release_date:desc":message("Release date")};function LibraryAlbumsPage(){const{trans:e}=useTrans(),t=useLibraryStore(c=>Object.keys(c.album).length),s=useUserLikedAlbums("me",{willSortOrFilter:!0}),{isInitialLoading:n,sortDescriptor:i,setSortDescriptor:a,searchQuery:o,setSearchQuery:u,items:l,isError:x}=s;return x?jsxRuntimeExports.jsx(PageErrorMessage,{}):jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(StaticPageTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Your albums"})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsx("h1",{className:"text-2xl font-semibold mb-20",children:t?jsxRuntimeExports.jsx(Trans,{message:"[one 1 liked album|other :count liked albums]",values:{count:t}}):jsxRuntimeExports.jsx(Trans,{message:"My albums"})}),jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-24 justify-between",children:[jsxRuntimeExports.jsx(TextField,{value:o,onChange:c=>u(c.target.value),className:"max-w-512 flex-auto",size:"sm",startAdornment:jsxRuntimeExports.jsx(SearchIcon,{}),placeholder:e(message("Search within albums"))}),jsxRuntimeExports.jsx(LibraryPageSortDropdown,{items:sortItems$2,sortDescriptor:i,setSortDescriptor:a})]}),jsxRuntimeExports.jsx("div",{className:"mt-34",children:jsxRuntimeExports.jsx(AnimatePresence,{initial:!1,mode:"wait",children:n?jsxRuntimeExports.jsx(PlayableMediaGridSkeleton,{itemCount:t}):jsxRuntimeExports.jsx(m.div,{...opacityAnimation,children:jsxRuntimeExports.jsxs(ContentGrid,{children:[l.map(c=>jsxRuntimeExports.jsx(AlbumGridItem,{album:c},c.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:s})]})},"media-grid")})}),!l.length&&!n&&jsxRuntimeExports.jsx(MediaPageNoResultsMessage,{className:"mt-34",searchQuery:o,description:jsxRuntimeExports.jsx(Trans,{message:"You have not added any albums to your library yet."})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-34"})]})}const libraryArtistsQueryKey=e=>{const t=getBootstrapData().user;return e===(t==null?void 0:t.id)&&(e="me"),["artists","library",e]};function useUserLikedArtists(e,t){return useInfiniteData({queryKey:libraryArtistsQueryKey(e),endpoint:`users/${e}/liked-artists`,defaultOrderBy:"likes.created_at",defaultOrderDir:"desc",...t})}const sortItems$1={"likes.created_at:desc":message("Recently added"),"name:asc":message("A-Z")};function LibraryArtistsPage(){const{trans:e}=useTrans(),t=useLibraryStore(c=>Object.keys(c.artist).length),s=useUserLikedArtists("me",{willSortOrFilter:!0}),{isInitialLoading:n,sortDescriptor:i,setSortDescriptor:a,searchQuery:o,setSearchQuery:u,items:l,isError:x}=s;return x?jsxRuntimeExports.jsx(PageErrorMessage,{}):jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(StaticPageTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Your artists"})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsx("h1",{className:"text-2xl font-semibold mb-20",children:t?jsxRuntimeExports.jsx(Trans,{message:"[one 1 liked artist|other :count liked artists]",values:{count:t}}):jsxRuntimeExports.jsx(Trans,{message:"My artists"})}),jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-24 justify-between",children:[jsxRuntimeExports.jsx(TextField,{value:o,onChange:c=>u(c.target.value),className:"max-w-512 flex-auto",size:"sm",startAdornment:jsxRuntimeExports.jsx(SearchIcon,{}),placeholder:e(message("Search within artists"))}),jsxRuntimeExports.jsx(LibraryPageSortDropdown,{items:sortItems$1,sortDescriptor:i,setSortDescriptor:a})]}),jsxRuntimeExports.jsx("div",{className:"mt-34",children:jsxRuntimeExports.jsx(AnimatePresence,{initial:!1,mode:"wait",children:n?jsxRuntimeExports.jsx(PlayableMediaGridSkeleton,{itemCount:t,itemRadius:"rounded-full",showDescription:!1}):jsxRuntimeExports.jsx(m.div,{...opacityAnimation,children:jsxRuntimeExports.jsxs(ContentGrid,{children:[l.map(c=>jsxRuntimeExports.jsx(ArtistGridItem,{artist:c},c.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:s})]})},"media-grid")})}),!l.length&&!n&&jsxRuntimeExports.jsx(MediaPageNoResultsMessage,{className:"mt-34",searchQuery:o,description:jsxRuntimeExports.jsx(Trans,{message:"You have not added any artists to your library yet."})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-34"})]})}const libraryHistoryQueryKey=["tracks","history","me"];function LibraryHistoryPage(){const{user:e}=useAuth(),t=useInfiniteData({queryKey:libraryHistoryQueryKey,endpoint:`tracks/plays/${e.id}`,defaultOrderBy:"track_plays.created_at",defaultOrderDir:"desc",paginate:"simple",willSortOrFilter:!1}),{isInitialLoading:s,searchQuery:n,setSearchQuery:i,items:a,isError:o}=t,{trans:u}=useTrans(),l=queueGroupId(e,"playHistory");return o?jsxRuntimeExports.jsx(PageErrorMessage,{}):jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(StaticPageTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Listening history"})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsxs("div",{className:"flex flex-wrap items-center gap-24 justify-between mb-34",children:[jsxRuntimeExports.jsx("h1",{className:"text-2xl font-semibold w-max md:w-full whitespace-nowrap",children:jsxRuntimeExports.jsx(Trans,{message:"Listening history"})}),jsxRuntimeExports.jsx(PlaybackToggleButton,{queueId:l,buttonType:"text",className:"min-w-128 flex-shrink-0"}),jsxRuntimeExports.jsx(TextField,{value:n,onChange:x=>i(x.target.value),className:"max-w-512 flex-auto",size:"sm",startAdornment:jsxRuntimeExports.jsx(SearchIcon,{}),placeholder:u(message("Search within history"))})]}),jsxRuntimeExports.jsx(TrackTable,{enableSorting:!1,queueGroupId:l,tracks:s?getPlaceholderItems():a,hideAddedAtColumn:!1,tableBody:jsxRuntimeExports.jsx(VirtualTableBody,{query:t})}),!a.length&&!s&&jsxRuntimeExports.jsx(MediaPageNoResultsMessage,{className:"mt-34",searchQuery:n,description:jsxRuntimeExports.jsx(Trans,{message:"You have not played any songs yet."})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-34"})]})}function getPlaceholderItems(){return[...new Array(10).keys()].map(e=>({isPlaceholder:!0,id:`placeholder-${e}`}))}function TrackPage(){var i;const{canView:e,canCreate:t}=useCommentPermissions(),s=useTrack({autoUpdate:!0}),{canEdit:n}=useTrackPermissions([(i=s.data)==null?void 0:i.track]);return s.data?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsxs(CommentBarContextProvider,{children:[jsxRuntimeExports.jsx(PageMetaTags,{query:s}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-44"}),jsxRuntimeExports.jsx(TrackPageHeader,{track:s.data.track}),t?jsxRuntimeExports.jsx(CommentBarNewCommentForm,{className:"mb-16",commentable:s.data.track}):null]}),s.data.track.tags.length?jsxRuntimeExports.jsx($9bf71ea28793e738$export$20e40289641fbbb6,{children:jsxRuntimeExports.jsx(ChipList,{className:"mb-16",selectable:!0,children:s.data.track.tags.map(a=>jsxRuntimeExports.jsxs(Chip,{elementType:Link,to:`/tag/${a.name}`,children:["#",a.display_name||a.name]},a.id))})}):null,jsxRuntimeExports.jsx(TruncatedDescription,{description:s.data.track.description,className:"text-sm mt-24"}),e?jsxRuntimeExports.jsx(CommentList,{className:"mt-34",commentable:s.data.track,canDeleteAllComments:n}):null,s.data.track.album&&jsxRuntimeExports.jsx(AlbumTrackTable,{album:s.data.track.album}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-44"})]}):jsxRuntimeExports.jsx(PageStatus,{query:s,loaderClassName:"absolute inset-0 m-auto"})}function AlbumTrackTable({album:e}){var i;const{data:t,sortDescriptor:s,onSortChange:n}=useSortableTableData(e.tracks);return jsxRuntimeExports.jsxs("div",{className:"mt-44",children:[jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-16 bg-hover rounded overflow-hidden mb-14",children:[jsxRuntimeExports.jsx(AlbumImage,{album:e,className:"flex-shrink-0 rounded",size:"w-70 h-70"}),jsxRuntimeExports.jsxs("div",{className:"flex-auto",children:[jsxRuntimeExports.jsx("div",{className:"text-sm",children:jsxRuntimeExports.jsx(Trans,{message:"From the album"})}),jsxRuntimeExports.jsx("div",{className:"font-semibold text-sm",children:e.name})]})]}),jsxRuntimeExports.jsx(TrackTable,{queueGroupId:queueGroupId(e),tracks:t,sortDescriptor:s,onSortChange:n,hideTrackImage:!0,hideArtist:!0,hideAlbum:!0,hidePopularity:!1}),(i=e.tracks)!=null&&i.length?null:jsxRuntimeExports.jsx(IllustratedMessage,{className:"mt-34",title:jsxRuntimeExports.jsx(Trans,{message:"Nothing to display"}),description:jsxRuntimeExports.jsx(Trans,{message:"This album does not have any tracks yet"})})]})}function TrackPageHeader({track:e}){var o,u,l,x,c;const t=useIsMobileMediaQuery(),{player:s}=useSettings(),n=((o=e.album)==null?void 0:o.release_date)||e.created_at,i=(u=e.genres)==null?void 0:u[0],a=!t&&(s==null?void 0:s.seekbar_type)==="waveform"&&trackIsLocallyUploaded(e);return jsxRuntimeExports.jsx(reactExports.Fragment,{children:jsxRuntimeExports.jsx(MediaPageHeaderLayout,{className:"mb-28",image:jsxRuntimeExports.jsx(TrackImage,{track:e}),title:e.name,subtitle:jsxRuntimeExports.jsx(AvatarGroup,{children:(l=e.artists)==null?void 0:l.map(p=>jsxRuntimeExports.jsx(Avatar,{circle:!0,src:getSmallArtistImage(p),label:p.name,link:getArtistLink(p)},p.id))}),description:jsxRuntimeExports.jsxs(BulletSeparatedItems,{className:"text-sm text-muted",children:[e.duration?jsxRuntimeExports.jsx(FormattedDuration,{ms:e.duration,verbose:!0}):null,n&&jsxRuntimeExports.jsx(FormattedDate,{date:n}),i&&jsxRuntimeExports.jsx(GenreLink,{genre:i}),e.plays&&!(s!=null&&s.enable_repost)?jsxRuntimeExports.jsx(Trans,{message:":count plays",values:{count:jsxRuntimeExports.jsx(FormattedNumber,{value:e.plays})}}):null]}),actionButtons:jsxRuntimeExports.jsx(TrackActionsBar,{item:e,managesItem:!1,buttonGap:void 0,buttonSize:"sm",buttonRadius:"rounded-full",buttonClassName:actionButtonClassName(),children:jsxRuntimeExports.jsx(PlaybackToggleButton,{buttonType:"text",track:e,tracks:(c=(x=e.album)==null?void 0:x.tracks)!=null&&c.length?e.album.tracks:void 0,className:actionButtonClassName({isFirst:!0}),queueId:queueGroupId(e.album||e)})}),footer:a?jsxRuntimeExports.jsx(Waveform,{track:e}):void 0})})}function useUserProfile(){const{userId:e}=useParams();return useQuery(userProfileQueryKey(e),()=>fetchUser(e))}function fetchUser(e){return apiClient.get(`users/${e}`).then(t=>t.data)}function userProfileQueryKey(e){return["users",+e,"profile"]}function ProfileRepostsPanel({user:e}){const t=useIsMobileMediaQuery(),s=useInfiniteData({queryKey:["reposts",e.id],endpoint:`users/${e.id}/reposts`});return s.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):s.items.length?t?jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(ContentGrid,{children:s.items.map(n=>{var i,a;return((i=n.repostable)==null?void 0:i.model_type)==="track"?jsxRuntimeExports.jsx(TrackGridItem,{track:n.repostable},n.id):((a=n.repostable)==null?void 0:a.model_type)==="album"?jsxRuntimeExports.jsx(AlbumGridItem,{album:n.repostable},n.id):null})}),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:s})]}):jsxRuntimeExports.jsxs("div",{children:[s.items.map(n=>{var i,a;return((i=n.repostable)==null?void 0:i.model_type)==="track"?jsxRuntimeExports.jsx(TrackListItem,{className:"mb-40",track:n.repostable,reposter:e},n.id):((a=n.repostable)==null?void 0:a.model_type)==="album"?jsxRuntimeExports.jsx(AlbumListItem,{album:n.repostable,className:"mb-40"},n.id):null}),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:s})]}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(AudiotrackIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No reposts yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Follow :user for updates on tracks and albums they repost in the future.",values:{user:e.display_name}})})}function ProfileTracksPanel({user:e}){const t=useUserLikedTracks(e.id);return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsx(TrackList,{query:t}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(AudiotrackIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No tracks yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Follow :user for updates on tracks they like in the future.",values:{user:e.display_name}})})}const libraryPlaylistsQueryKey=(e,t)=>{const s=getBootstrapData().user;e===(s==null?void 0:s.id)&&(e="me");const n=["playlists","library",e];return t&&n.push(t),n};function useUserPlaylists(e,t){return useInfiniteData({queryKey:libraryPlaylistsQueryKey(e),endpoint:`users/${e}/playlists`,defaultOrderBy:"updated_at",defaultOrderDir:"desc",...t})}function ProfilePlaylistsPanel({user:e}){const t=useUserPlaylists(e.id);return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(ContentGrid,{children:t.items.map(s=>jsxRuntimeExports.jsx(PlaylistGridItem,{playlist:s},s.id))}),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(QueueMusicIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No playlists yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Follow :user for updates on playlists they create in the future.",values:{user:e.display_name}})})}function ProfileAlbumsPanel({user:e}){const t=useUserLikedAlbums(e.id,{queryParams:{with:"tracks"}});return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsx(AlbumList,{query:t}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(AlbumIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No albums yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Follow :user for updates on albums they like in the future.",values:{user:e.display_name}})})}function ProfileArtistsPanel({user:e}){const t=useUserLikedArtists(e.id);return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(ContentGrid,{children:t.items.map(s=>jsxRuntimeExports.jsx(ArtistGridItem,{artist:s},s.id))}),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(MicIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No artists yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"Follow :user for updates on artists they like in the future.",values:{user:e.display_name}})})}function ProfileFollowersPanel({user:e}){const t=useInfiniteData({queryKey:["users",e.id,"followers"],endpoint:`users/${e.id}/followers`});return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsxs("div",{children:[t.items.map(s=>jsxRuntimeExports.jsx(FollowerListItem,{follower:s},s.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(BookmarkBorderIcon,{size:"lg",className:"text-muted"}),description:jsxRuntimeExports.jsx(Trans,{message:"Seems like no one is following :name yet.",values:{name:e.display_name}})})}function ProfileFollowedUsersPanel({user:e}){const t=useInfiniteData({queryKey:["users",e.id,"followed-users"],endpoint:`users/${e.id}/followed-users`});return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsxs("div",{children:[t.items.map(s=>jsxRuntimeExports.jsx(FollowerListItem,{follower:s},s.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:t})]}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(BookmarkBorderIcon,{size:"lg",className:"text-muted"}),description:jsxRuntimeExports.jsx(Trans,{message:"Seems like :name is not following anyone yet.",values:{name:e.display_name}})})}function useUpdateUserProfile(e){const{user:t}=useAuth(),{trans:s}=useTrans();return useMutation(n=>updateProfile(n),{onSuccess:()=>{toast(s(message("Profile updated"))),t&&queryClient.invalidateQueries(userProfileQueryKey(t.id))},onError:n=>onFormQueryError(n,e)})}function updateProfile(e){return apiClient.put("users/profile/update",e).then(t=>t.data)}function FormComboBox({children:e,...t}){const{field:{onChange:s,onBlur:n,value:i="",ref:a},fieldState:{invalid:o,error:u}}=useController({name:t.name}),l={onSelectionChange:s,onBlur:n,selectedValue:i,defaultInputValue:i,invalid:o,errorMessage:u==null?void 0:u.message};return jsxRuntimeExports.jsx(ComboBoxForwardRef,{ref:a,...$3ef42575df84b30b$export$9d1611c77c2fe928(l,t),children:e})}function EditProfileDialog({user:e}){var o,u,l,x;const{close:t,formId:s}=useDialogContext(),{data:n}=useValueLists(["countries"]),i=useForm({defaultValues:{user:{username:e.username,avatar:e.avatar,first_name:e.first_name,last_name:e.last_name},profile:{city:(o=e.profile)==null?void 0:o.city,country:(u=e.profile)==null?void 0:u.country,description:(l=e.profile)==null?void 0:l.description},links:e.links}}),a=useUpdateUserProfile(i);return jsxRuntimeExports.jsxs(Dialog,{size:"xl",children:[jsxRuntimeExports.jsx(DialogHeader,{children:jsxRuntimeExports.jsx(Trans,{message:"Edit your profile"})}),jsxRuntimeExports.jsx(DialogBody,{children:jsxRuntimeExports.jsx(Form,{id:s,form:i,onSubmit:c=>a.mutate(c,{onSuccess:()=>t()}),children:jsxRuntimeExports.jsxs(FileUploadProvider,{children:[jsxRuntimeExports.jsxs("div",{className:"md:flex items-start gap-30",children:[jsxRuntimeExports.jsx(FormImageSelector,{label:jsxRuntimeExports.jsx(Trans,{message:"Avatar"}),name:"user.avatar",diskPrefix:"avatars",variant:"square",previewSize:"w-200 h-200",className:"max-md:mb-20"}),jsxRuntimeExports.jsxs("div",{className:"flex-auto",children:[jsxRuntimeExports.jsx(FormTextField,{name:"user.username",label:jsxRuntimeExports.jsx(Trans,{message:"Username"}),className:"mb-24"}),jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-24",children:[jsxRuntimeExports.jsx(FormTextField,{name:"user.first_name",label:jsxRuntimeExports.jsx(Trans,{message:"First name"}),className:"flex-1 mb-24"}),jsxRuntimeExports.jsx(FormTextField,{name:"user.last_name",label:jsxRuntimeExports.jsx(Trans,{message:"Last name"}),className:"flex-1 mb-24"})]}),jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-24",children:[jsxRuntimeExports.jsx(FormTextField,{name:"profile.city",label:jsxRuntimeExports.jsx(Trans,{message:"City"}),className:"flex-1 mb-24"}),jsxRuntimeExports.jsx(FormComboBox,{className:"flex-1 mb-24",selectionMode:"single",name:"profile.country",label:jsxRuntimeExports.jsx(Trans,{message:"Country"}),children:(x=n==null?void 0:n.countries)==null?void 0:x.map(c=>jsxRuntimeExports.jsx(Item,{value:c.name,children:c.name},c.code))})]}),jsxRuntimeExports.jsx(FormTextField,{name:"profile.description",label:jsxRuntimeExports.jsx(Trans,{message:"Description"}),inputElementType:"textarea",rows:4})]})]}),jsxRuntimeExports.jsxs("div",{className:"mt-24",children:[jsxRuntimeExports.jsx("div",{className:"mb-16 pb-16 border-b",children:jsxRuntimeExports.jsx(Trans,{message:"Your links"})}),jsxRuntimeExports.jsx(ProfileLinksForm,{})]})]})})}),jsxRuntimeExports.jsxs(DialogFooter,{children:[jsxRuntimeExports.jsx(Button,{type:"button",onClick:()=>{t()},children:jsxRuntimeExports.jsx(Trans,{message:"Cancel"})}),jsxRuntimeExports.jsx(Button,{form:s,type:"submit",variant:"flat",color:"primary",disabled:a.isLoading,children:jsxRuntimeExports.jsx(Trans,{message:"Save"})})]})]})}function ProfileHeader({user:e,tabLink:t}){const{user:s}=useAuth();return jsxRuntimeExports.jsx(MediaPageHeaderLayout,{image:jsxRuntimeExports.jsx(UserImage,{user:e,size:"w-240 h-240",className:"rounded",showProBadge:!0}),title:e.display_name,subtitle:jsxRuntimeExports.jsxs(BulletSeparatedItems,{className:"text-sm text-muted z-20 w-max mx-auto",children:[e.followers_count&&e.followers_count>0?jsxRuntimeExports.jsx(Link,{to:t("followers"),className:"hover:underline",children:jsxRuntimeExports.jsx(Trans,{message:":count followers",values:{count:e.followers_count}})}):null,e.followed_users_count&&e.followed_users_count>0?jsxRuntimeExports.jsx(Link,{to:t("following"),className:"hover:underline",children:jsxRuntimeExports.jsx(Trans,{message:"Following :count",values:{count:e.followed_users_count}})}):null]}),actionButtons:jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-center md:justify-start",children:[jsxRuntimeExports.jsx(FollowButton,{user:e}),(s==null?void 0:s.id)===e.id&&jsxRuntimeExports.jsx(EditButton,{user:e})]}),footer:jsxRuntimeExports.jsx(ProfileDescription,{profile:e.profile,links:e.links})})}function EditButton({user:e}){return jsxRuntimeExports.jsxs(DialogTrigger,{type:"modal",children:[jsxRuntimeExports.jsx(Button,{variant:"outline",radius:"rounded-full",startIcon:jsxRuntimeExports.jsx(EditIcon,{}),className:actionButtonClassName(),children:jsxRuntimeExports.jsx(Trans,{message:"Edit"})}),jsxRuntimeExports.jsx(EditProfileDialog,{user:e})]})}function FollowButton({user:e}){const{user:t}=useAuth(),s=userFollowsStore(a=>a.isFollowing(e.id)),n=useFollowUser(),i=useUnfollowUser();return s?jsxRuntimeExports.jsx(Button,{variant:"flat",color:"primary",className:actionButtonClassName({isFirst:!0}),radius:"rounded-full",onClick:()=>i.mutate({user:e}),disabled:(t==null?void 0:t.id)===e.id||i.isLoading,children:jsxRuntimeExports.jsx(Trans,{message:"Unfollow"})}):jsxRuntimeExports.jsx(Button,{variant:"flat",color:"primary",className:actionButtonClassName({isFirst:!0}),radius:"rounded-full",onClick:()=>n.mutate({user:e}),disabled:(t==null?void 0:t.id)===e.id||n.isLoading,children:jsxRuntimeExports.jsx(Trans,{message:"Follow"})})}const profileTabs=["tracks","playlists","reposts","albums","artists","followers","following"];var N;(N=getBootstrapData().settings.player)!=null&&N.enable_repost||profileTabs.splice(2,1);function UserProfilePage(){const e=useUserProfile();return e.data?jsxRuntimeExports.jsx(PageContent$1,{user:e.data.user}):jsxRuntimeExports.jsx(PageStatus,{query:e,loaderClassName:"absolute inset-0 m-auto"})}function PageContent$1({user:e}){const{player:t}=useSettings(),{tabName:s="tracks"}=useParams(),n=profileTabs.indexOf(s)||0,i=reactExports.useCallback(a=>`/user/${e.id}/${e.display_name}/${a}`,[e]);return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(ProfileHeader,{user:e,tabLink:i}),jsxRuntimeExports.jsxs(Tabs,{className:"mt-48",isLazy:!0,selectedTab:n,children:[jsxRuntimeExports.jsxs(TabList,{children:[jsxRuntimeExports.jsx(Tab,{elementType:Link,to:i("tracks"),children:jsxRuntimeExports.jsx(Trans,{message:"Liked tracks"})}),jsxRuntimeExports.jsx(Tab,{elementType:Link,to:i("playlists"),children:jsxRuntimeExports.jsx(Trans,{message:"Public playlists"})}),(t==null?void 0:t.enable_repost)&&jsxRuntimeExports.jsx(Tab,{elementType:Link,to:i("reposts"),children:jsxRuntimeExports.jsx(Trans,{message:"Reposts"})}),jsxRuntimeExports.jsx(Tab,{elementType:Link,to:i("albums"),children:jsxRuntimeExports.jsx(Trans,{message:"Liked albums"})}),jsxRuntimeExports.jsx(Tab,{elementType:Link,to:i("artists"),children:jsxRuntimeExports.jsx(Trans,{message:"Liked artists"})}),jsxRuntimeExports.jsx(Tab,{elementType:Link,to:i("followers"),children:jsxRuntimeExports.jsx(Trans,{message:"Followers"})}),jsxRuntimeExports.jsx(Tab,{elementType:Link,to:i("following"),children:jsxRuntimeExports.jsx(Trans,{message:"Following"})})]}),jsxRuntimeExports.jsxs(TabPanels,{className:"mt-24",children:[jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfileTracksPanel,{user:e})}),jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfilePlaylistsPanel,{user:e})}),(t==null?void 0:t.enable_repost)&&jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfileRepostsPanel,{user:e})}),jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfileAlbumsPanel,{user:e})}),jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfileArtistsPanel,{user:e})}),jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfileFollowersPanel,{user:e})}),jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfileFollowedUsersPanel,{user:e})})]})]})]})}const tagTabNames={tracks:0,albums:1};function TagMediaPage(){var a;const e=useParams(),t=e.tagName,s=((a=e["*"])==null?void 0:a.split("/").pop())||tagTabNames.tracks,[n,i]=reactExports.useState(tagTabNames[s]||0);return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("h1",{className:"text-3xl mb-40",children:s==="albums"?jsxRuntimeExports.jsx(Trans,{message:"Most popular albums for #:tag",values:{tag:t}}):jsxRuntimeExports.jsx(Trans,{message:"Most popular tracks for #:tag",values:{tag:t}})}),jsxRuntimeExports.jsxs(Tabs,{selectedTab:n,onTabChange:i,children:[jsxRuntimeExports.jsxs(TabList,{children:[jsxRuntimeExports.jsx(Tab,{elementType:Link,to:`/tag/${t}`,children:jsxRuntimeExports.jsx(Trans,{message:"Tracks"})}),jsxRuntimeExports.jsx(Tab,{elementType:Link,to:`/tag/${t}/albums`,children:jsxRuntimeExports.jsx(Trans,{message:"Albums"})})]}),jsxRuntimeExports.jsxs(TabPanels,{className:"pt-24",children:[jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(TracksPanel,{tagName:t})}),jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(AlbumsPanel,{tagName:t})})]})]})]})}function AlbumsPanel({tagName:e}){const t=useInfiniteData({queryKey:["albums","tags",e],endpoint:`tags/${e}/albums`});return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsx(AlbumList,{query:t}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(AlbumIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No albums yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"This tag is not attached to any albums yet, check back later."})})}function TracksPanel({tagName:e}){const t=useInfiniteData({queryKey:["tracks","tags",e],endpoint:`tags/${e}/tracks`});return t.isInitialLoading?jsxRuntimeExports.jsx(FullPageLoader,{className:"min-h-100"}):t.items.length?jsxRuntimeExports.jsx(TrackList,{query:t}):jsxRuntimeExports.jsx(IllustratedMessage,{imageHeight:"h-auto",imageMargin:"mb-14",image:jsxRuntimeExports.jsx(AudiotrackIcon,{size:"lg",className:"text-muted"}),title:jsxRuntimeExports.jsx(Trans,{message:"No tracks yet"}),description:jsxRuntimeExports.jsx(Trans,{message:"This tag is not attached to any tracks yet, check back later."})})}function useRadioRecommendations(){const{seedType:e,seedId:t}=useParams();return useQuery(["radio",e,+t],()=>fetchRecommendations(e,t),{staleTime:1/0})}function fetchRecommendations(e,t){return apiClient.get(`radio/${e}/${t}`).then(s=>s.data)}const validSeeds=["artist","track","genre"];function RadioPage(){var o;const{seedType:e}=useParams(),t=useRadioRecommendations(),{data:s,onSortChange:n,sortDescriptor:i}=useSortableTableData((o=t.data)==null?void 0:o.recommendations),a=reactExports.useMemo(()=>s.reduce((u,l)=>u+(l.duration||0),0),[s]);if(!validSeeds.includes(e))return jsxRuntimeExports.jsx(NotFoundPage,{});if(t.data){const u=t.data.seed,l=queueGroupId(u,"radio");return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(PageMetaTags,{query:t}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-44"}),jsxRuntimeExports.jsx(MediaPageHeaderLayout,{image:jsxRuntimeExports.jsx(Image$1,{seed:u}),title:jsxRuntimeExports.jsx(Trans,{message:":name radio",values:{name:"display_name"in u&&u.display_name?u.display_name:u.name}}),subtitle:jsxRuntimeExports.jsxs(BulletSeparatedItems,{className:"text-sm text-muted justify-center md:justify-start",children:[jsxRuntimeExports.jsx(RadioType,{seed:u}),jsxRuntimeExports.jsx(Trans,{message:"[one 1 song|other :count songs]",values:{count:s.length}}),jsxRuntimeExports.jsx(FormattedDuration,{ms:a,verbose:!0})]}),actionButtons:jsxRuntimeExports.jsx("div",{className:"text-center md:text-start",children:jsxRuntimeExports.jsx(PlaybackToggleButton,{tracks:s,disabled:!s.length,buttonType:"text",queueId:l,className:actionButtonClassName({isFirst:!0})})})}),jsxRuntimeExports.jsx(TrackTable,{className:"mt-34",tracks:s,queueGroupId:l,onSortChange:n,sortDescriptor:i}),jsxRuntimeExports.jsx(AdHost,{slot:"general_bottom",className:"mt-44"})]})}return jsxRuntimeExports.jsx(PageStatus,{query:t,loaderClassName:"absolute inset-0 m-auto"})}function Image$1({seed:e}){switch(e.model_type){case"artist":return jsxRuntimeExports.jsx(SmallArtistImage,{artist:e,size:"w-240 h-240",wrapperClassName:"mx-auto",className:"rounded"});case"genre":return jsxRuntimeExports.jsx(GenreImage,{genre:e,size:"w-240 h-240",className:"rounded mx-auto"});default:return jsxRuntimeExports.jsx(TrackImage,{track:e,size:"w-240 h-240",className:"rounded mx-auto"})}}function RadioType({seed:e}){switch(e.model_type){case"artist":return jsxRuntimeExports.jsx(Trans,{message:"Artist radio"});case"genre":return jsxRuntimeExports.jsx(Trans,{message:"Genre radio"});default:return jsxRuntimeExports.jsx(Trans,{message:"Track radio"})}}function SearchResultsPage(){const{searchQuery:e}=useParams(),t=useSearchResults({query:e,types:mainSearchModels,limit:20});return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(MobileSearchBar,{}),jsxRuntimeExports.jsx(PageContent,{query:t})]})}function MobileSearchBar(){const e=useIsMobileMediaQuery(),{searchQuery:t=""}=useParams(),s=useNavigate(),{trans:n}=useTrans();return e?jsxRuntimeExports.jsx(TextField,{defaultValue:t,onChange:i=>{s(`/search/${i.target.value}`,{replace:!0})},autoFocus:!0,className:"w-full",size:"lg",placeholder:n(message("Search..."))}):null}function PageContent({query:e}){var s;const{branding:t}=useSettings();return e.data?jsxRuntimeExports.jsx(SearchResults,{results:(s=e.data)==null?void 0:s.results}):e.fetchStatus==="idle"?jsxRuntimeExports.jsx(IllustratedMessage,{className:"mt-40",image:jsxRuntimeExports.jsx(SearchIcon,{size:"xl"}),imageHeight:"h-auto",imageMargin:"mb-12",title:jsxRuntimeExports.jsx(Trans,{message:"Search :siteName",values:{siteName:t.site_name}}),description:jsxRuntimeExports.jsx(Trans,{message:"Find songs, artists, albums, playlists and more."})}):jsxRuntimeExports.jsx(PageStatus,{query:e,loaderClassName:"absolute inset-0 m-auto"})}function SearchResults({results:e}){var x,c,p,j,g,R,h,y,d,f;const{tabName:t="all",searchQuery:s}=useParams(),i=reactExports.useMemo(()=>["all",...["tracks","artists","albums","playlists","users"].filter(b=>{var v;return(v=e[b])==null?void 0:v.length})],[e]).indexOf(t),[a,o]=reactExports.useState(i>-1?i:0);reactExports.useEffect(()=>{i!==a&&o(i)},[i,a]);const u=E=>{let b=`/search/${s}`;return E&&(b+=`/${E}`),b};return Object.entries(e).some(([,E])=>E==null?void 0:E.length)?jsxRuntimeExports.jsxs(Tabs,{selectedTab:a,onTabChange:o,children:[jsxRuntimeExports.jsxs(TabList,{children:[jsxRuntimeExports.jsx(Tab,{elementType:Link,to:u(),children:jsxRuntimeExports.jsx(Trans,{message:"Top results"})}),(x=e.tracks)!=null&&x.length?jsxRuntimeExports.jsx(Tab,{elementType:Link,to:u("tracks"),children:jsxRuntimeExports.jsx(Trans,{message:"Tracks"})}):null,(c=e.artists)!=null&&c.length?jsxRuntimeExports.jsx(Tab,{elementType:Link,to:u("artists"),children:jsxRuntimeExports.jsx(Trans,{message:"Artists"})}):null,(p=e.albums)!=null&&p.length?jsxRuntimeExports.jsx(Tab,{elementType:Link,to:u("albums"),children:jsxRuntimeExports.jsx(Trans,{message:"Albums"})}):null,(j=e.playlists)!=null&&j.length?jsxRuntimeExports.jsx(Tab,{elementType:Link,to:u("playlists"),children:jsxRuntimeExports.jsx(Trans,{message:"Playlists"})}):null,(g=e.users)!=null&&g.length?jsxRuntimeExports.jsx(Tab,{elementType:Link,to:u("users"),children:jsxRuntimeExports.jsx(Trans,{message:"Profiles"})}):null]}),jsxRuntimeExports.jsxs(TabPanels,{className:"pt-8",children:[jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(TopResultsPanel,{results:e})}),(R=e.tracks)!=null&&R.length?jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(TrackResults,{tracks:e.tracks})}):null,(h=e.artists)!=null&&h.length?jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ArtistResults,{artists:e.artists})}):null,(y=e.albums)!=null&&y.length?jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(AlbumResults,{albums:e.albums})}):null,(d=e.playlists)!=null&&d.length?jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(PlaylistResults,{playlists:e.playlists})}):null,(f=e.users)!=null&&f.length?jsxRuntimeExports.jsx(TabPanel,{children:jsxRuntimeExports.jsx(ProfileResults,{users:e.users})}):null]})]}):jsxRuntimeExports.jsx(IllustratedMessage,{className:"mt-40",image:jsxRuntimeExports.jsx(SearchIcon,{size:"xl"}),imageHeight:"h-auto",title:jsxRuntimeExports.jsx(Trans,{message:"Not results for “:query“",values:{query:s}}),description:jsxRuntimeExports.jsx(Trans,{message:"Please try a different search query"})})}function TopResultsPanel({results:{artists:e,albums:t,tracks:s,playlists:n,users:i}}){return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[s!=null&&s.length?jsxRuntimeExports.jsx(TrackResults,{tracks:s.slice(0,5),showMore:!0}):null,e!=null&&e.length?jsxRuntimeExports.jsx(ArtistResults,{artists:e.slice(0,5),showMore:!0}):null,t!=null&&t.length?jsxRuntimeExports.jsx(AlbumResults,{albums:t.slice(0,5),showMore:!0}):null,n!=null&&n.length?jsxRuntimeExports.jsx(PlaylistResults,{playlists:n.slice(0,5),showMore:!0}):null,i!=null&&i.length?jsxRuntimeExports.jsx(ProfileResults,{users:i.slice(0,5),showMore:!0}):null]})}function TrackResults({tracks:e,showMore:t}){return jsxRuntimeExports.jsxs("div",{className:"py-24",children:[jsxRuntimeExports.jsx(PanelTitle,{to:t?"tracks":void 0,children:jsxRuntimeExports.jsx(Trans,{message:"Tracks"})}),jsxRuntimeExports.jsx(TrackTable,{tracks:e})]})}function ArtistResults({artists:e,showMore:t}){return jsxRuntimeExports.jsxs("div",{className:"py-24",children:[jsxRuntimeExports.jsx(PanelTitle,{to:t?"artists":void 0,children:jsxRuntimeExports.jsx(Trans,{message:"Artists"})}),jsxRuntimeExports.jsx(ContentGrid,{children:e.map(s=>jsxRuntimeExports.jsx(ArtistGridItem,{artist:s},s.id))})]})}function AlbumResults({albums:e,showMore:t}){return jsxRuntimeExports.jsxs("div",{className:"py-24",children:[jsxRuntimeExports.jsx(PanelTitle,{to:t?"albums":void 0,children:jsxRuntimeExports.jsx(Trans,{message:"Albums"})}),jsxRuntimeExports.jsx(ContentGrid,{children:e.map(s=>jsxRuntimeExports.jsx(AlbumGridItem,{album:s},s.id))})]})}function PlaylistResults({playlists:e,showMore:t}){return jsxRuntimeExports.jsxs("div",{className:"py-24",children:[jsxRuntimeExports.jsx(PanelTitle,{to:t?"playlists":void 0,children:jsxRuntimeExports.jsx(Trans,{message:"Playlists"})}),jsxRuntimeExports.jsx(ContentGrid,{children:e.map(s=>jsxRuntimeExports.jsx(PlaylistGridItem,{playlist:s},s.id))})]})}function ProfileResults({users:e,showMore:t}){return jsxRuntimeExports.jsxs("div",{className:"py-24",children:[jsxRuntimeExports.jsx(PanelTitle,{to:t?"users":void 0,children:jsxRuntimeExports.jsx(Trans,{message:"Profiles"})}),jsxRuntimeExports.jsx(ContentGrid,{children:e.map(s=>jsxRuntimeExports.jsx(UserGridItem,{user:s},s.id))})]})}function PanelTitle({children:e,to:t}){return jsxRuntimeExports.jsx("h2",{className:"text-2xl font-medium mb-24 w-max",children:t?jsxRuntimeExports.jsxs(Link,{to:t,className:"hover:text-primary flex items-center gap-2",children:[e,jsxRuntimeExports.jsx(KeyboardArrowRightIcon,{className:"mt-4"})]}):e})}function LibraryPage(){const e=useNavigate(),t=useAuthClickCapture(),s=useUserPlaylists("me");return useIsTabletMediaQuery()?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(StaticPageTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Your tracks"})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between gap-24 mb-20",children:[jsxRuntimeExports.jsx("h1",{className:"text-2xl font-semibold whitespace-nowrap",children:jsxRuntimeExports.jsx(Trans,{message:"Your library"})}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"modal",onClose:i=>{i&&e(getPlaylistLink(i))},children:[jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0",onClickCapture:t,children:jsxRuntimeExports.jsx(PlaylistAddIcon,{})}),jsxRuntimeExports.jsx(CreatePlaylistDialog,{})]})]}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(MenuItem,{icon:jsxRuntimeExports.jsx(AudiotrackIcon,{className:"text-main"}),to:"/library/songs",children:jsxRuntimeExports.jsx(Trans,{message:"Songs"})}),jsxRuntimeExports.jsx(MenuItem,{icon:jsxRuntimeExports.jsx(PlaylistPlayIcon,{}),to:"/library/playlists",children:jsxRuntimeExports.jsx(Trans,{message:"Playlists"})}),jsxRuntimeExports.jsx(MenuItem,{icon:jsxRuntimeExports.jsx(AlbumIcon,{}),to:"/library/albums",children:jsxRuntimeExports.jsx(Trans,{message:"Albums"})}),jsxRuntimeExports.jsx(MenuItem,{icon:jsxRuntimeExports.jsx(MicIcon,{}),to:"/library/artists",children:jsxRuntimeExports.jsx(Trans,{message:"Artists"})}),jsxRuntimeExports.jsx(MenuItem,{icon:jsxRuntimeExports.jsx(HistoryIcon,{}),to:"/library/history",children:jsxRuntimeExports.jsx(Trans,{message:"Play history"})}),s.items.map(i=>jsxRuntimeExports.jsx(MenuItem,{wrapIcon:!1,icon:jsxRuntimeExports.jsx(PlaylistImage,{size:"w-42 h-42",className:"rounded",playlist:i}),to:getPlaylistLink(i),children:i.name},i.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:s})]})]}):jsxRuntimeExports.jsx(Navigate,{to:"/library/songs",replace:!0})}function MenuItem({icon:e,children:t,to:s,wrapIcon:n=!0}){return jsxRuntimeExports.jsxs(Link,{className:"flex items-center gap-14 mb-18 text-sm",to:s,children:[n?jsxRuntimeExports.jsx("div",{className:"rounded bg-chip p-8 w-42 h-42",children:e}):e,t]})}const sortItems={"updated_at:desc":message("Recently updated"),"name:asc":message("A-Z"),"views:desc":message("Most viewed"),"plays:desc":message("Most played")};function LibraryPlaylistsPage(){const e=useNavigate(),t=useAuthClickCapture(),{trans:s}=useTrans(),{data:n}=useAuthUserPlaylists(),i=n.playlists.length,a=useUserPlaylists("me",{willSortOrFilter:!0}),{isInitialLoading:o,sortDescriptor:u,setSortDescriptor:l,searchQuery:x,setSearchQuery:c,items:p,isError:j}=a;return j?jsxRuntimeExports.jsx(PageErrorMessage,{}):jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(StaticPageTitle,{children:jsxRuntimeExports.jsx(Trans,{message:"Your playlists"})}),jsxRuntimeExports.jsx(AdHost,{slot:"general_top",className:"mb-34"}),jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between gap-24 mb-20",children:[jsxRuntimeExports.jsx("h1",{className:"text-2xl font-semibold whitespace-nowrap",children:i?jsxRuntimeExports.jsx(Trans,{message:"[one 1 playlist|other :count playlists]",values:{count:i}}):jsxRuntimeExports.jsx(Trans,{message:"My playlists"})}),jsxRuntimeExports.jsxs(DialogTrigger,{type:"modal",onClose:g=>{g&&e(getPlaylistLink(g))},children:[jsxRuntimeExports.jsx(IconButton,{className:"flex-shrink-0",onClickCapture:t,children:jsxRuntimeExports.jsx(PlaylistAddIcon,{})}),jsxRuntimeExports.jsx(CreatePlaylistDialog,{})]})]}),jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-24 justify-between",children:[jsxRuntimeExports.jsx(TextField,{value:x,onChange:g=>c(g.target.value),className:"max-w-512 flex-auto",size:"sm",startAdornment:jsxRuntimeExports.jsx(SearchIcon,{}),placeholder:s(message("Search within playlists"))}),jsxRuntimeExports.jsx(LibraryPageSortDropdown,{items:sortItems,sortDescriptor:u,setSortDescriptor:l})]}),jsxRuntimeExports.jsx("div",{className:"mt-34",children:jsxRuntimeExports.jsx(AnimatePresence,{initial:!1,mode:"wait",children:o?jsxRuntimeExports.jsx(PlayableMediaGridSkeleton,{itemCount:i}):jsxRuntimeExports.jsx(m.div,{...opacityAnimation,children:jsxRuntimeExports.jsxs(ContentGrid,{children:[p.map(g=>jsxRuntimeExports.jsx(PlaylistGridItem,{playlist:g},g.id)),jsxRuntimeExports.jsx(InfiniteScrollSentinel,{query:a})]})},"media-grid")})}),!p.length&&!o&&jsxRuntimeExports.jsx(MediaPageNoResultsMessage,{className:"mt-34",searchQuery:x,description:jsxRuntimeExports.jsx(Trans,{message:"You have not added any playlists to your library yet."})})]})}function TrackEmbed(){const{data:e}=useTrack({autoUpdate:!1});return jsxRuntimeExports.jsx("div",{className:"rounded border bg-alt p-14 h-[174px]",children:e!=null&&e.track?jsxRuntimeExports.jsx(EmbedContent$1,{track:e.track}):jsxRuntimeExports.jsx(FullPageLoader,{})})}function EmbedContent$1({track:e}){const t=reactExports.useMemo(()=>{const s=trackToMediaItem(e);return{...playerStoreOptions,initialData:{queue:[s],cuedMediaId:s.id,state:{repeat:!1}}}},[e]);return jsxRuntimeExports.jsx(PlayerContext,{id:"web-player",options:t,children:jsxRuntimeExports.jsxs("div",{className:"flex gap-24",children:[jsxRuntimeExports.jsxs("div",{className:"relative flex-shrink-0 rounded bg-black overflow-hidden",children:[jsxRuntimeExports.jsx(PlayerPoster,{className:"absolute inset-0"}),jsxRuntimeExports.jsx(PlayerOutlet,{className:"w-144 h-144"})]}),jsxRuntimeExports.jsx(TrackListItem,{track:e,hideArtwork:!0,hideActions:!0,linksInNewTab:!0,className:"flex-auto"})]})})}function AlbumEmbed(){const{data:e}=useAlbum({autoUpdate:!1,with:"tracks"});return jsxRuntimeExports.jsx("div",{className:"rounded border bg-alt p-14 h-384",children:e!=null&&e.album?jsxRuntimeExports.jsx(EmbedContent,{album:e.album}):jsxRuntimeExports.jsx(FullPageLoader,{})})}function EmbedContent({album:e}){const t=reactExports.useMemo(()=>{var s,n;return{...playerStoreOptions,initialData:{queue:(s=e.tracks)!=null&&s.length?tracksToMediaItems(e.tracks):[],cuedMediaId:(n=e.tracks)!=null&&n.length?trackToMediaItem(e.tracks[0]).id:void 0,state:{repeat:!1}}}},[e]);return jsxRuntimeExports.jsx(PlayerContext,{id:"web-player",options:t,children:jsxRuntimeExports.jsxs("div",{className:"flex gap-24 items-start h-full",children:[jsxRuntimeExports.jsx("div",{className:"flex-shrink-0 rounded bg-black overflow-hidden",children:jsxRuntimeExports.jsx(PlayerOutlet,{className:"w-144 h-144"})}),jsxRuntimeExports.jsx(AlbumListItem,{album:e,maxHeight:"h-full",className:"flex-auto",hideArtwork:!0,hideActions:!0,linksInNewTab:!0})]})})}function HomepageChannelPage(){const{homepage:e}=useSettings();let t="discover";return e.type.startsWith("channel")&&e.value&&(t=e.value),jsxRuntimeExports.jsx(ChannelPage,{slugOrId:t})}const RouteConfig=[{path:"track/:trackId/:trackName/embed",element:jsxRuntimeExports.jsx(TrackEmbed,{})},{path:"album/:albumId/:artistName/:albumName/embed",element:jsxRuntimeExports.jsx(AlbumEmbed,{})},{path:"/",element:jsxRuntimeExports.jsx(WebPlayerLayout,{}),children:[{index:!0,element:jsxRuntimeExports.jsx(HomepageChannelPage,{})},{path:":slugOrId",element:jsxRuntimeExports.jsx(ChannelPage,{})},{path:"channel/:slugOrId",element:jsxRuntimeExports.jsx(ChannelPage,{})},{path:"channel/:slugOrId/:filter",element:jsxRuntimeExports.jsx(ChannelPage,{})},{path:"artist/:artistId/:artistName",element:jsxRuntimeExports.jsx(ArtistPage,{})},{path:"artist/:artistId",element:jsxRuntimeExports.jsx(ArtistPage,{})},{path:"playlist/:playlistId/:playlistName",element:jsxRuntimeExports.jsx(PlaylistPage,{})},{path:"album/:albumId/:artistName/:albumName",element:jsxRuntimeExports.jsx(AlbumPage,{})},{path:"track/:trackId/:trackName",element:jsxRuntimeExports.jsx(TrackPage,{})},{path:"tag/:tagName",element:jsxRuntimeExports.jsx(TagMediaPage,{})},{path:"tag/:tagName/tracks",element:jsxRuntimeExports.jsx(TagMediaPage,{})},{path:"tag/:tagName/albums",element:jsxRuntimeExports.jsx(TagMediaPage,{})},{path:"user/:userId/:userName",element:jsxRuntimeExports.jsx(UserProfilePage,{})},{path:"user/:userId/:userName/:tabName",element:jsxRuntimeExports.jsx(UserProfilePage,{})},{path:"radio/:seedType/:seedId/:seeName",element:jsxRuntimeExports.jsx(RadioPage,{})},{path:"search",element:jsxRuntimeExports.jsx(SearchResultsPage,{})},{path:"search/:searchQuery",element:jsxRuntimeExports.jsx(SearchResultsPage,{})},{path:"search/:searchQuery/:tabName",element:jsxRuntimeExports.jsx(SearchResultsPage,{})},{path:"library",element:jsxRuntimeExports.jsx(AuthRoute,{children:jsxRuntimeExports.jsx(LibraryPage,{})})},{path:"library/songs",element:jsxRuntimeExports.jsx(AuthRoute,{children:jsxRuntimeExports.jsx(LibraryTracksPage,{})})},{path:"library/playlists",element:jsxRuntimeExports.jsx(AuthRoute,{children:jsxRuntimeExports.jsx(LibraryPlaylistsPage,{})})},{path:"library/albums",element:jsxRuntimeExports.jsx(AuthRoute,{children:jsxRuntimeExports.jsx(LibraryAlbumsPage,{})})},{path:"library/artists",element:jsxRuntimeExports.jsx(AuthRoute,{children:jsxRuntimeExports.jsx(LibraryArtistsPage,{})})},{path:"library/history",element:jsxRuntimeExports.jsx(AuthRoute,{children:jsxRuntimeExports.jsx(LibraryHistoryPage,{})})}]}];function WebPlayerRoutes(){return useRoutes(RouteConfig)}const webPlayerRoutes=Object.freeze(Object.defineProperty({__proto__:null,default:WebPlayerRoutes},Symbol.toStringTag,{value:"Module"}));export{PlayerStoreContext as P,useHtmlMediaInternalState as a,useHtmlMediaEvents as b,useHtmlMediaApi as c,usePlayerStore as u,webPlayerRoutes as w}; //# sourceMappingURL=web-player-routes-bb2f14ca.js.map
Save
Cancel