muzical-ui 0.1.19 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +3 -0
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +24 -0
- package/.next/standalone/.next/routes-manifest.json +18 -0
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +17 -17
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +17 -17
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/genius/lyrics/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/genius/lyrics/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/genius/lyrics/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/genius/lyrics/route.js +6 -0
- package/.next/standalone/.next/server/app/api/genius/lyrics/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/genius/lyrics/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/genius/lyrics/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/youtube/audio/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/youtube/audio/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/youtube/audio/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/youtube/audio/route.js +7 -0
- package/.next/standalone/.next/server/app/api/youtube/audio/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/youtube/audio/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/youtube/audio/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +16 -16
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +16 -16
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/musicbrainz/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/musicbrainz.html +1 -1
- package/.next/standalone/.next/server/app/musicbrainz.rsc +16 -16
- package/.next/standalone/.next/server/app/musicbrainz.segments/_full.segment.rsc +16 -16
- package/.next/standalone/.next/server/app/musicbrainz.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/musicbrainz.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/musicbrainz.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/browse/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/browse/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/browse.html +1 -1
- package/.next/standalone/.next/server/app/settings/browse.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/browse.segments/_full.segment.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/browse.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/browse.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings/browse.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/browse.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/display/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/display/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/display.html +1 -1
- package/.next/standalone/.next/server/app/settings/display.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/display.segments/_full.segment.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/display.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/display.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings/display.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/display.segments/settings/display/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/display.segments/settings/display.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/display.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/genius/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/settings/genius/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/settings/genius/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/settings/genius/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/settings/genius/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/settings/genius/page.js +15 -0
- package/.next/standalone/.next/server/app/settings/genius/page.js.map +5 -0
- package/.next/standalone/.next/server/app/settings/genius/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/settings/genius/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/settings/genius.html +1 -0
- package/.next/standalone/.next/server/app/settings/genius.meta +16 -0
- package/.next/standalone/.next/server/app/settings/genius.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/genius.segments/_full.segment.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/genius.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/genius.segments/_index.segment.rsc +12 -0
- package/.next/standalone/.next/server/app/settings/genius.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/settings/genius.segments/settings/genius/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/genius.segments/settings/genius.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/genius.segments/settings.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/lastfm/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/lastfm.html +1 -1
- package/.next/standalone/.next/server/app/settings/lastfm.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_full.segment.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/library/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/library/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/library.html +1 -1
- package/.next/standalone/.next/server/app/settings/library.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/library.segments/_full.segment.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/library.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/library.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings/library.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/library.segments/settings/library/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/library.segments/settings/library.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/library.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/playback/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/playback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/playback.html +1 -1
- package/.next/standalone/.next/server/app/settings/playback.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/playback.segments/_full.segment.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/playback.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/playback.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings/playback.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/playback.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/youtube/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/youtube/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/youtube.html +1 -1
- package/.next/standalone/.next/server/app/settings/youtube.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/youtube.segments/_full.segment.rsc +19 -19
- package/.next/standalone/.next/server/app/settings/youtube.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/youtube.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings/youtube.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +18 -18
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +18 -18
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/youtube/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/youtube/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/youtube.html +1 -1
- package/.next/standalone/.next/server/app/youtube.rsc +16 -16
- package/.next/standalone/.next/server/app/youtube.segments/_full.segment.rsc +16 -16
- package/.next/standalone/.next/server/app/youtube.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/youtube.segments/_index.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/youtube.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/youtube.segments/youtube/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/youtube.segments/youtube.segment.rsc +3 -3
- package/.next/standalone/.next/server/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/chunks/[externals]__0j1rmnr._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ikt5.y._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11kw98e._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_genius_lyrics_route_actions_0mr_r4p.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_audio_route_actions_0ix49ob.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/0prs_next_dist_esm_build_templates_app-page_0rv7gt~.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-tq1if._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04am7de._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__06399o6._.js → [root-of-the-server]__0v-87g5._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zs1ztp._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0w7m.s8._.js → [root-of-the-server]__13tszzt._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_05uoimn._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0b8qx~m._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_genius_page_actions_0c97t98.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_0c.t1du._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_GeniusSettingsPanel_tsx_0wkgnom._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_LibrarySettingsPanel_tsx_0krc7dk._.js +1 -1
- package/.next/standalone/.next/server/functions-config-manifest.json +3 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.json +4 -0
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/static/chunks/0c6klcz87gi31.js +1 -0
- package/.next/standalone/.next/static/chunks/0lhqk6x34unxe.css +3 -0
- package/.next/standalone/.next/static/chunks/0r32qvgl36~jc.js +1 -0
- package/.next/standalone/.next/static/chunks/0zla3zzaeyk_n.js +1 -0
- package/.next/standalone/.next/static/chunks/0~7u_v2jp_uf8.js +1 -0
- package/.next/standalone/.next/static/chunks/0~phgwn0_69_u.js +1 -0
- package/.next/standalone/.next/static/chunks/{0wk.68win3dg5.js → 16kria84.v_he.js} +1 -1
- package/.next/standalone/package.json +101 -100
- package/package.json +101 -100
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-u5-2p._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03-3mbr._.js +0 -3
- package/.next/standalone/.next/static/chunks/050~dp56e_dyc.css +0 -3
- package/.next/standalone/.next/static/chunks/06.920l-94sy4.js +0 -1
- package/.next/standalone/.next/static/chunks/0iy69h7jj8p00.js +0 -1
- package/.next/standalone/.next/static/chunks/0tf.5yvdov~xo.js +0 -1
- package/.next/standalone/.next/static/chunks/1349uxlik-d0f.js +0 -1
- /package/.next/standalone/.next/static/{4Dc2u-oBETJu6959Io3FQ → Ez87CktJcg9_xUZRSbiRz}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{4Dc2u-oBETJu6959Io3FQ → Ez87CktJcg9_xUZRSbiRz}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{4Dc2u-oBETJu6959Io3FQ → Ez87CktJcg9_xUZRSbiRz}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33434,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return u},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function o(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function l(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,i(e));else t.set(r,i(n));return t}function u(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},69600,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return b},MiddlewareNotFoundError:function(){return y},MissingStaticPage:function(){return E},NormalizeError:function(){return k},PageNotFoundError:function(){return S},SP:function(){return g},ST:function(){return p},WEB_VITALS:function(){return o},execOnce:function(){return i},getDisplayName:function(){return d},getLocationOrigin:function(){return s},getURL:function(){return c},isAbsoluteUrl:function(){return u},isResSent:function(){return f},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return m},stringifyError:function(){return v}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,u=e=>l.test(e);function s(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=s();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function m(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let g="u">typeof performance,p=g&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class b extends Error{}class k extends Error{}class S extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class E extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class y extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function v(e){return JSON.stringify({message:e.message,stack:e.stack})}},91946,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},47587,e=>{"use strict";var t=e.i(81995),r=e.i(94569);let n={get:(e,t)=>127&e[t+3]|e[t+2]<<7|e[t+1]<<14|e[t]<<21,len:4},a={len:1,get:(e,t)=>{switch(e[t]){case 0:return{encoding:"latin1"};case 1:return{encoding:"utf-16le",bom:!0};case 2:return{encoding:"utf-16le",bom:!1};default:return{encoding:"utf8",bom:!1}}}},o={len:4,get:(e,r)=>({encoding:a.get(e,r),language:new t.StringType(3,"latin1").get(e,r+1)})};e.s(["AttachedPictureType",0,{0:"Other",1:"32x32 pixels 'file icon' (PNG only)",2:"Other file icon",3:"Cover (front)",4:"Cover (back)",5:"Leaflet page",6:"Media (e.g. label side of CD)",7:"Lead artist/lead performer/soloist",8:"Artist/performer",9:"Conductor",10:"Band/Orchestra",11:"Composer",12:"Lyricist/text writer",13:"Recording Location",14:"During recording",15:"During performance",16:"Movie/video screen capture",17:"A bright coloured fish",18:"Illustration",19:"Band/artist logotype",20:"Publisher/Studio logotype"},"ExtendedHeader",0,{len:10,get:(e,n)=>({size:t.UINT32_BE.get(e,n),extendedFlags:t.UINT16_BE.get(e,n+4),sizeOfPadding:t.UINT32_BE.get(e,n+6),crcDataPresent:r.getBit(e,n+4,31)})},"ID3v2Header",0,{len:10,get:(e,a)=>({fileIdentifier:new t.StringType(3,"ascii").get(e,a),version:{major:t.INT8.get(e,a+3),revision:t.INT8.get(e,a+4)},flags:{unsynchronisation:r.getBit(e,a+5,7),isExtendedHeader:r.getBit(e,a+5,6),expIndicator:r.getBit(e,a+5,5),footer:r.getBit(e,a+5,4)},size:n.get(e,a+6)})},"LyricsContentType",0,{other:0,lyrics:1,text:2,movement_part:3,events:4,chord:5,trivia_pop:6},"SyncTextHeader",0,{len:6,get:(e,r)=>{let n=o.get(e,r);return{encoding:n.encoding,language:n.language,timeStampFormat:t.UINT8.get(e,r+4),contentType:t.UINT8.get(e,r+5)}}},"TextEncodingToken",0,a,"TextHeader",0,o,"TimestampFormat",0,{notSynchronized:0,mpegFrameNumber:1,milliseconds:2},"UINT32SYNCSAFE",0,n])},1664,e=>{"use strict";var t=e.i(93432),r=e.i(81995),n=e.i(94569),a=e.i(88657),o=e.i(63848),i=e.i(34454);let l=(0,t.default)("music-metadata:parser:ID3v1"),u=["Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge","Hip-Hop","Jazz","Metal","New Age","Oldies","Other","Pop","R&B","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient","Trip-Hop","Vocal","Jazz+Funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound Clip","Gospel","Noise","Alt. Rock","Bass","Soul","Punk","Space","Meditative","Instrumental Pop","Instrumental Rock","Ethnic","Gothic","Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance","Dream","Southern Rock","Comedy","Cult","Gangsta Rap","Top 40","Christian Rap","Pop/Funk","Jungle","Native American","Cabaret","New Wave","Psychedelic","Rave","Showtunes","Trailer","Lo-Fi","Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical","Rock & Roll","Hard Rock","Folk","Folk/Rock","National Folk","Swing","Fast-Fusion","Bebob","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic Rock","Progressive Rock","Psychedelic Rock","Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber Music","Sonata","Symphony","Booty Bass","Primus","Porn Groove","Satire","Slow Jam","Club","Tango","Samba","Folklore","Ballad","Power Ballad","Rhythmic Soul","Freestyle","Duet","Punk Rock","Drum Solo","A Cappella","Euro-House","Dance Hall","Goa","Drum & Bass","Club-House","Hardcore","Terror","Indie","BritPop","Negerpunk","Polsk Punk","Beat","Christian Gangsta Rap","Heavy Metal","Black Metal","Crossover","Contemporary Christian","Christian Rock","Merengue","Salsa","Thrash Metal","Anime","JPop","Synthpop","Abstract","Art Rock","Baroque","Bhangra","Big Beat","Breakbeat","Chillout","Downtempo","Dub","EBM","Eclectic","Electro","Electroclash","Emo","Experimental","Garage","Global","IDM","Illbient","Industro-Goth","Jam Band","Krautrock","Leftfield","Lounge","Math Rock","New Romantic","Nu-Breakz","Post-Punk","Post-Rock","Psytrance","Shoegaze","Space Rock","Trop Rock","World Music","Neoclassical","Audiobook","Audio Theatre","Neue Deutsche Welle","Podcast","Indie Rock","G-Funk","Dubstep","Garage Rock","Psybient"],s={len:128,get:(e,t)=>{let n=new c(3).get(e,t);return"TAG"===n?{header:n,title:new c(30).get(e,t+3),artist:new c(30).get(e,t+33),album:new c(30).get(e,t+63),year:new c(4).get(e,t+93),comment:new c(28).get(e,t+97),zeroByte:r.UINT8.get(e,t+127),track:r.UINT8.get(e,t+126),genre:r.UINT8.get(e,t+127)}:null}};class c{constructor(e){this.len=e,this.stringType=new r.StringType(e,"latin1")}get(e,t){let r=this.stringType.get(e,t);return(r=(r=n.trimRightNull(r)).trim()).length>0?r:void 0}}class d extends a.BasicParser{constructor(e,t,r){super(e,t,r),this.apeHeader=r.apeHeader}static getGenre(e){if(e<u.length)return u[e]}async parse(){if(!this.tokenizer.fileInfo.size)return void l("Skip checking for ID3v1 because the file-size is unknown");if(this.apeHeader){this.tokenizer.ignore(this.apeHeader.offset-this.tokenizer.position);let e=new o.APEv2Parser(this.metadata,this.tokenizer,this.options);await e.parseTags(this.apeHeader.footer)}let e=this.tokenizer.fileInfo.size-s.len;if(this.tokenizer.position>e)return void l("Already consumed the last 128 bytes");let t=await this.tokenizer.readToken(s,e);if(t){for(let e of(l("ID3v1 header found at: pos=%s",this.tokenizer.fileInfo.size-s.len),["title","artist","album","comment","track","year"]))t[e]&&""!==t[e]&&await this.addTag(e,t[e]);let e=d.getGenre(t.genre);e&&await this.addTag("genre",e)}else l("ID3v1 header not found at: pos=%s",this.tokenizer.fileInfo.size-s.len)}async addTag(e,t){await this.metadata.addTag("ID3v1",e,t)}}async function f(e){if(e.fileInfo.size>=128){let t=new Uint8Array(3),r=e.position;return await e.readBuffer(t,{position:e.fileInfo.size-128}),e.setPosition(r),"TAG"===(0,i.textDecode)(t,"latin1")}return!1}e.s(["Genres",0,u,"ID3v1Parser",0,d,"hasID3v1Header",0,f])},9922,e=>{"use strict";let t={video:1,audio:2,complex:3,logo:4,subtitle:17,button:18,control:32},r={[t.video]:"video",[t.audio]:"audio",[t.complex]:"complex",[t.logo]:"logo",[t.subtitle]:"subtitle",[t.button]:"button",[t.control]:"control"};e.s(["TargetType",0,{10:"shot",20:"scene",30:"track",40:"part",50:"album",60:"edition",70:"collection"},"TrackType",0,t,"TrackTypeValueToKeyMap",0,r])},99997,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return l},formatWithValidation:function(){return s},urlObjectKeys:function(){return u}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(44066)._(e.r(33434)),i=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,n=e.protocol||"",a=e.pathname||"",l=e.hash||"",u=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(s+=":"+e.port)),u&&"object"==typeof u&&(u=String(o.urlQueryToSearchParams(u)));let c=e.search||u&&`?${u}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==s?(s="//"+(s||""),a&&"/"!==a[0]&&(a="/"+a)):s||(s=""),l&&"#"!==l[0]&&(l="#"+l),c&&"?"!==c[0]&&(c="?"+c),a=a.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${s}${a}${c}${l}`}let u=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function s(e){return l(e)}},70782,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return a}});let n=e.r(51268);function a(e,t){let r=(0,n.useRef)(null),a=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(r.current=o(e,n)),t&&(a.current=o(t,n))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},88334,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let n=e.r(69600),a=e.r(76636);function o(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},20612,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},70096,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return b},useLinkStatus:function(){return S}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(44066),i=e.r(8063),l=o._(e.r(51268)),u=e.r(99997),s=e.r(4411),c=e.r(70782),d=e.r(69600),f=e.r(31508);e.r(91946);let m=e.r(35302),h=e.r(92024),g=e.r(88334),p=e.r(44017);function b(t){var r,n;let a,o,b,[S,E]=(0,l.useOptimistic)(h.IDLE_LINK_STATUS),y=(0,l.useRef)(null),{href:v,as:w,children:T,prefetch:P=null,passHref:_,replace:A,shallow:C,scroll:I,onClick:x,onMouseEnter:R,onTouchStart:z,legacyBehavior:M=!1,onNavigate:N,transitionTypes:O,ref:B,unstable_dynamicOnHover:j,...D}=t;a=T,M&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let L=l.default.useContext(s.AppRouterContext),G=!1!==P,U=!1!==P?null===(n=P)||"auto"===n?p.FetchStrategy.PPR:p.FetchStrategy.Full:p.FetchStrategy.PPR,F="string"==typeof(r=w||v)?r:(0,u.formatUrl)(r);if(M){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});o=l.default.Children.only(a)}let K=M?o&&"object"==typeof o&&o.ref:B,Y=l.default.useCallback(e=>(null!==L&&(y.current=(0,h.mountLinkInstance)(e,F,L,U,G,E)),()=>{y.current&&((0,h.unmountLinkForCurrentNavigation)(y.current),y.current=null),(0,h.unmountPrefetchableInstance)(e)}),[G,F,L,U,E]),H={ref:(0,c.useMergedRef)(Y,K),onClick(t){M||"function"!=typeof x||x(t),M&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!L||t.defaultPrevented||function(t,r,n,a,o,i,u){if("u">typeof window){let s,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((s=t.currentTarget.getAttribute("target"))&&"_self"!==s||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,g.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(12178);l.default.startTransition(()=>{d(r,a?"replace":"push",!1===o?m.ScrollBehavior.NoScroll:m.ScrollBehavior.Default,n.current,u)})}}(t,F,y,A,I,N,O)},onMouseEnter(e){M||"function"!=typeof R||R(e),M&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),L&&G&&(0,h.onNavigationIntent)(e.currentTarget,!0===j)},onTouchStart:function(e){M||"function"!=typeof z||z(e),M&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),L&&G&&(0,h.onNavigationIntent)(e.currentTarget,!0===j)}};return(0,d.isAbsoluteUrl)(F)?H.href=F:M&&!_&&("a"!==o.type||"href"in o.props)||(H.href=(0,f.addBasePath)(F)),b=M?l.default.cloneElement(o,H):(0,i.jsx)("a",{...D,...H,children:a}),(0,i.jsx)(k.Provider,{value:S,children:b})}e.r(20612);let k=(0,l.createContext)(h.IDLE_LINK_STATUS),S=()=>(0,l.useContext)(k);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},69188,e=>{"use strict";var t=e.i(8063),r=e.i(51268);let n=(0,r.createContext)({notifySettingsSaved:()=>void 0});e.s(["SettingsSaveNotificationProvider",0,function(e){let[a,o]=(0,r.useState)(null),i=(0,r.useRef)(null),l=(0,r.useCallback)(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),u=(0,r.useCallback)(()=>{l(),o(null)},[l]),s=(0,r.useCallback)((e="Settings saved")=>{l(),o(e),i.current=setTimeout(()=>{o(null),i.current=null},2200)},[l]);(0,r.useEffect)(()=>l,[l]);let c=(0,r.useMemo)(()=>({notifySettingsSaved:s}),[s]);return(0,t.jsxs)(n.Provider,{value:c,children:[e.children,a?(0,t.jsxs)("div",{role:"status","aria-live":"polite",className:"pointer-events-auto fixed bottom-4 right-4 z-50 w-[min(100vw-2rem,22rem)] rounded-xl border border-emerald-200/90 bg-white/95 p-4 pr-10 shadow-lg shadow-zinc-900/10 backdrop-blur-sm dark:border-emerald-800/80 dark:bg-zinc-900/95 dark:shadow-black/40",children:[(0,t.jsx)("button",{type:"button",onClick:u,className:"absolute right-2 top-2 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200","aria-label":"Dismiss notification",children:(0,t.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:(0,t.jsx)("path",{d:"M6 6l12 12M18 6L6 18",strokeLinecap:"round"})})}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-emerald-100 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-300",children:(0,t.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2.25","aria-hidden":!0,children:(0,t.jsx)("path",{d:"M5 12.5l4 4L19 7",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,t.jsx)("p",{className:"min-w-0 text-sm font-medium text-zinc-900 dark:text-zinc-100",children:a})]})]}):null]})},"useSettingsSaveNotification",0,function(){return(0,r.useContext)(n)}])},75353,e=>{"use strict";let t="muzical.lastfmApiKey";e.s(["LASTFM_API_KEY_STORAGE_KEY",0,t,"default",0,function(){try{let e=window.localStorage.getItem(t);return"string"==typeof e?e.trim():""}catch{return""}}])},65079,62445,e=>{"use strict";let t="muzical.youtubeApiKey";e.s(["YOUTUBE_API_KEY_STORAGE_KEY",0,t,"default",0,function(){try{let e=window.localStorage.getItem(t);return"string"==typeof e?e.trim():""}catch{return""}}],65079);let r=!1;e.s(["default",0,function(){return r},"setYoutubeDataApiBlockedInternal",0,function(e){r=e}],62445)},40911,22464,e=>{"use strict";var t=e.i(8063),r=e.i(51268);let n="muzical.youtubePrefetchQueueVideoIds",a="muzical.youtubePrefetchQueueMaxTracks";function o(){return{prefetchQueueVideoIds:!0,prefetchQueueMaxTracks:8}}e.s(["DEFAULT_PREFETCH_QUEUE_MAX_TRACKS",0,8,"PREFETCH_QUEUE_MAX_TRACKS_MAX",0,32,"PREFETCH_QUEUE_MAX_TRACKS_MIN",0,1,"PREFETCH_QUEUE_MAX_TRACKS_STORAGE_KEY",0,a,"PREFETCH_QUEUE_VIDEO_IDS_STORAGE_KEY",0,n],22464);let i=(0,r.createContext)(null);e.s(["YoutubePreferencesProvider",0,function(e){let[l,u]=(0,r.useState)(o);(0,r.useEffect)(()=>{queueMicrotask(()=>{let e;u({prefetchQueueVideoIds:function(e,t){try{let r=window.localStorage.getItem(e);if(null===r)return t;let n=JSON.parse(r);return!0===n}catch{return t}}(n,o().prefetchQueueVideoIds),prefetchQueueMaxTracks:(o(),Number.isFinite(e=Number.parseInt(window.localStorage.getItem(a)??"",10))?Math.min(32,Math.max(1,e)):8)})})},[]);let s=(0,r.useCallback)(e=>{u(t=>{let r={...t,...e},o=Math.min(32,Math.max(1,Math.floor(r.prefetchQueueMaxTracks)));try{window.localStorage.setItem(n,JSON.stringify(r.prefetchQueueVideoIds)),window.localStorage.setItem(a,String(o))}catch{}return r})},[]),c=(0,r.useCallback)(e=>{s({prefetchQueueVideoIds:e})},[s]),d=(0,r.useCallback)(e=>{s({prefetchQueueMaxTracks:Math.min(32,Math.max(1,Math.floor(e)||1))})},[s]),f=(0,r.useMemo)(()=>({preferences:l,setPrefetchQueueVideoIds:c,setPrefetchQueueMaxTracks:d,patchPreferences:s}),[l,c,d,s]);return(0,t.jsx)(i.Provider,{value:f,children:e.children})},"useYoutubePreferences",0,function(){let e=(0,r.useContext)(i);if(!e)throw Error("useYoutubePreferences must be used within YoutubePreferencesProvider");return e}],40911)},28116,e=>{"use strict";e.s(["YOUTUBE_API_KEY_CHANGED_EVENT",0,"muzical-youtube-api-key-changed"])},1905,e=>{"use strict";var t=e.i(34713);e.s(["default",0,function(e){if(e<=0)return"—";let r=Math.floor(e/3600);if(r>0){let t=Math.floor(e%3600/60);return`${r}h ${t}m`}return(0,t.formatDuration)(e)}])},50845,74178,e=>{"use strict";let t="muzical.genius.apiKey";e.s(["default",0,function(){try{return window.localStorage.getItem(t)??""}catch{return""}}],50845),e.s(["default",0,function(e){try{window.localStorage.setItem(t,e)}catch{}}],74178)},841,e=>{"use strict";var t=e.i(75397);e.s(["default",0,function(){try{let e=window.localStorage.getItem(t.DEFAULT_BROWSE_VIEW_STORAGE_KEY);if("library"===e||"musicbrainz"===e||"youtube"===e)return e;return"library"}catch{return"library"}}],841)},80492,e=>{"use strict";var t=e.i(8063),r=e.i(51268);let n="muzical-theme",a=(0,r.createContext)(null);function o(e){document.documentElement.classList.toggle("dark","dark"===e)}e.s(["ThemeProvider",0,function(e){let[i,l]=(0,r.useState)("light");(0,r.useEffect)(()=>{let e=requestAnimationFrame(()=>{let e="dark"===localStorage.getItem(n)?"dark":"light";l(e),o(e)});return()=>cancelAnimationFrame(e)},[]);let u=(0,r.useCallback)(e=>{l(e),localStorage.setItem(n,e),o(e)},[]),s=(0,r.useCallback)(()=>{l(e=>{let t="light"===e?"dark":"light";return localStorage.setItem(n,t),o(t),t})},[]),c=(0,r.useMemo)(()=>({scheme:i,setScheme:u,toggleScheme:s}),[i,u,s]);return(0,t.jsx)(a.Provider,{value:c,children:e.children})},"useTheme",0,function(){let e=(0,r.useContext)(a);if(!e)throw Error("useTheme must be used within ThemeProvider");return e}],80492)},48042,(e,t,r)=>{t.exports=e.r(58134)},62474,e=>{"use strict";var t=e.i(8063),r=e.i(69188),n=e.i(80492);function a(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M12 7a5 5 0 1 0 0 10 5 5 0 0 0 0-10zM2 13h2v-2H2v2zm18 0h2v-2h-2v2zM11 2v2h2V2h-2zm0 18v2h2v-2h-2zM4.22 19.78l1.42-1.42-1.42-1.42-1.42 1.42 1.42 1.42zm12.72-1.42 1.42 1.42 1.42-1.42-1.42-1.42-1.42 1.42zM19.78 4.22l-1.42 1.42 1.42 1.42 1.42-1.42-1.42-1.42zM7.05 5.64 5.64 4.22 4.22 5.64l1.42 1.42 1.41-1.42z"})})}function o(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})})}e.s(["default",0,function(){let{scheme:e,toggleScheme:i}=(0,n.useTheme)(),{notifySettingsSaved:l}=(0,r.useSettingsSaveNotification)(),u="dark"===e;return(0,t.jsx)("button",{type:"button",onClick:()=>{i(),l("Display settings saved")},"aria-label":u?"Switch to light theme":"Switch to dark theme",className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-full border border-zinc-200 bg-white text-zinc-600 shadow-sm transition hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-300 dark:shadow-none dark:hover:border-zinc-500 dark:hover:bg-zinc-700 dark:hover:text-zinc-50",children:u?(0,t.jsx)(a,{className:"h-[18px] w-[18px]"}):(0,t.jsx)(o,{className:"h-[18px] w-[18px]"})})}])},44105,87813,e=>{"use strict";var t=e.i(8063),r=e.i(51268);let n="muzical.palette",a="muzical.accent",o=["warm","sunset","bloom","crimson","aurora","ocean","lagoon","forest","midnight","slate"],i="warm",l={amber:"warm",orange:"sunset",rose:"bloom",red:"crimson",violet:"aurora",blue:"ocean",teal:"lagoon",emerald:"forest",custom:"warm"};function u(e){document.documentElement.setAttribute("data-palette",e||i)}e.s(["COLOR_PALETTES",0,[{id:"warm",label:"Warm",description:"Amber highlights on soft stone",accent:"#f59e0b",lightBackground:"#fafaf9",darkBackground:"#0c0a09"},{id:"sunset",label:"Sunset",description:"Orange glow on peach paper",accent:"#f97316",lightBackground:"#fffbf7",darkBackground:"#140a06"},{id:"bloom",label:"Bloom",description:"Rose accents on blush white",accent:"#f43f5e",lightBackground:"#fffafa",darkBackground:"#12080b"},{id:"crimson",label:"Crimson",description:"Red highlights on warm ivory",accent:"#ef4444",lightBackground:"#fefafa",darkBackground:"#140606"},{id:"aurora",label:"Aurora",description:"Violet accents on cool mist",accent:"#8b5cf6",lightBackground:"#faf9ff",darkBackground:"#0b0814"},{id:"ocean",label:"Ocean",description:"Blue accents on airy sky",accent:"#3b82f6",lightBackground:"#f8fafc",darkBackground:"#060a14"},{id:"lagoon",label:"Lagoon",description:"Teal accents on sea foam",accent:"#14b8a6",lightBackground:"#f7fdfb",darkBackground:"#041210"},{id:"forest",label:"Forest",description:"Emerald accents on sage mist",accent:"#10b981",lightBackground:"#f7fdf9",darkBackground:"#04120c"},{id:"midnight",label:"Midnight",description:"Indigo accents on deep night",accent:"#6366f1",lightBackground:"#f5f6ff",darkBackground:"#05060f"},{id:"slate",label:"Slate",description:"Neutral zinc with minimal color",accent:"#71717a",lightBackground:"#fafafa",darkBackground:"#09090b"}],"DEFAULT_PALETTE_ID",0,i,"LEGACY_ACCENT_STORAGE_KEY",0,a,"LEGACY_ACCENT_TO_PALETTE",0,l,"PALETTE_IDS",0,o,"PALETTE_STORAGE_KEY",0,n],87813);let s=(0,r.createContext)(null);e.s(["PaletteProvider",0,function(e){let[c,d]=(0,r.useState)(i);(0,r.useEffect)(()=>{let e=requestAnimationFrame(()=>{let e=function(){try{let e=window.localStorage.getItem(n)??window.localStorage.getItem(a);if(!e)return i;if(o.includes(e))return e;return l[e]??i}catch{return i}}();d(e),u(e)});return()=>cancelAnimationFrame(e)},[]);let f=(0,r.useCallback)(e=>{d(e);try{window.localStorage.setItem(n,e)}catch{}u(e)},[]),m=(0,r.useMemo)(()=>({paletteId:c,setPaletteId:f}),[c,f]);return(0,t.jsx)(s.Provider,{value:m,children:e.children})},"usePalette",0,function(){let e=(0,r.useContext)(s);if(!e)throw Error("usePalette must be used within PaletteProvider");return e}],44105)},20498,24315,19828,53589,e=>{"use strict";var t=e.i(8063),r=e.i(51268);let n="muzical.repeatMode",a="muzical.shuffle",o="muzical.playbackRate",i="muzical.rememberVolume",l="muzical.volume",u="muzical.seekStepSmallSec",s="muzical.seekStepLargeSec",c="muzical.autoAdvanceOnEnd";e.s(["AUTO_ADVANCE_ON_END_STORAGE_KEY",0,c,"DEFAULT_PLAYBACK_VOLUME",0,.85,"PLAYBACK_RATE_STORAGE_KEY",0,o,"REMEMBER_VOLUME_STORAGE_KEY",0,i,"REPEAT_MODE_STORAGE_KEY",0,n,"SEEK_STEP_LARGE_STORAGE_KEY",0,s,"SEEK_STEP_SMALL_STORAGE_KEY",0,u,"SHUFFLE_STORAGE_KEY",0,a,"VOLUME_STORAGE_KEY",0,l],24315);let d=[32,64,125,250,500,1e3,2e3,4e3,8e3,16e3],f="muzical.equalizerGainsDb";function m(){return d.map(()=>0)}function h(e){return Number.isFinite(e)?Math.min(12,Math.max(-12,Math.round(e))):0}function g(e){let t=m();return Array.isArray(e)?t.map((t,r)=>{let n=e[r];return"number"==typeof n?h(n):t}):t}function p(){return{repeatMode:"all",shuffle:!1,playbackRate:1,rememberVolume:!1,volume:.85,seekStepSmallSec:5,seekStepLargeSec:30,autoAdvanceOnEnd:!0,equalizerGainsDb:m()}}e.s(["EQUALIZER_BANDS_HZ",0,d,"EQUALIZER_GAINS_STORAGE_KEY",0,f,"EQUALIZER_MAX_GAIN_DB",0,12,"EQUALIZER_MIN_GAIN_DB",0,-12,"clampEqualizerGainDb",0,h,"defaultEqualizerGainsDb",0,m,"normalizeEqualizerGainsDb",0,g],19828);let b=[.5,.75,1,1.25,1.5,2];function k(e,t){try{let r=window.localStorage.getItem(e);if(null===r)return t;let n=JSON.parse(r);return!0===n}catch{return t}}function S(e,t,r){let n=Number.parseInt(window.localStorage.getItem(e)??"",10);return!Number.isFinite(n)||n<=0?t:Math.min(r,n)}function E(e){try{window.localStorage.setItem(n,e.repeatMode),window.localStorage.setItem(a,e.shuffle?"1":"0"),window.localStorage.setItem(o,String(e.playbackRate)),window.localStorage.setItem(i,JSON.stringify(e.rememberVolume)),window.localStorage.setItem(l,String(e.volume)),window.localStorage.setItem(u,String(e.seekStepSmallSec)),window.localStorage.setItem(s,String(e.seekStepLargeSec)),window.localStorage.setItem(c,JSON.stringify(e.autoAdvanceOnEnd)),window.localStorage.setItem(f,JSON.stringify(g(e.equalizerGainsDb)))}catch{}}e.s(["PLAYBACK_RATES",0,b],53589);let y=(0,r.createContext)(null);e.s(["PlaybackPreferencesProvider",0,function(e){let[d,v]=(0,r.useState)(p);(0,r.useEffect)(()=>{queueMicrotask(()=>{let e,t,r,d,m,h;v((e=p(),{repeatMode:(t=p(),"off"===(r=window.localStorage.getItem(n))||"all"===r||"one"===r?r:t.repeatMode),shuffle:function(){try{return"1"===window.localStorage.getItem(a)}catch{return!1}}(),playbackRate:(d=p(),Number.isFinite(m=Number.parseFloat(window.localStorage.getItem(o)??""))&&b.includes(m)?m:d.playbackRate),rememberVolume:k(i,e.rememberVolume),volume:Number.isFinite(h=Number.parseFloat(window.localStorage.getItem(l)??""))?Math.min(1,Math.max(0,h)):.85,seekStepSmallSec:S(u,e.seekStepSmallSec,120),seekStepLargeSec:S(s,e.seekStepLargeSec,600),autoAdvanceOnEnd:k(c,e.autoAdvanceOnEnd),equalizerGainsDb:function(){let e=p();try{let t=window.localStorage.getItem(f);if(!t)return e.equalizerGainsDb;return g(JSON.parse(t))}catch{return e.equalizerGainsDb}}()}))})},[]);let w=(0,r.useCallback)(e=>{v(t=>{let r={...t,...e,equalizerGainsDb:g(e.equalizerGainsDb??t.equalizerGainsDb)};return E(r),r})},[]),T=(0,r.useCallback)(e=>{w({repeatMode:e})},[w]),P=(0,r.useCallback)(e=>{w({shuffle:e})},[w]),_=(0,r.useCallback)(e=>{w({playbackRate:e})},[w]),A=(0,r.useCallback)(e=>{w({rememberVolume:e})},[w]),C=(0,r.useCallback)(e=>{let t=Math.min(1,Math.max(0,e));v(e=>{let r={...e,volume:t};return e.rememberVolume&&E(r),r})},[]),I=(0,r.useCallback)(e=>{w({seekStepSmallSec:Math.min(120,Math.max(1,Math.floor(e)||5))})},[w]),x=(0,r.useCallback)(e=>{w({seekStepLargeSec:Math.min(600,Math.max(1,Math.floor(e)||30))})},[w]),R=(0,r.useCallback)(e=>{w({autoAdvanceOnEnd:e})},[w]),z=(0,r.useCallback)((e,t)=>{Number.isInteger(e)&&v(r=>{let n=g(r.equalizerGainsDb);if(e<0||e>=n.length)return r;n[e]=h(t);let a={...r,equalizerGainsDb:n};return E(a),a})},[]),M=(0,r.useCallback)(()=>{w({equalizerGainsDb:m()})},[w]),N=(0,r.useMemo)(()=>({preferences:d,setRepeatMode:T,setShuffle:P,setPlaybackRate:_,setRememberVolume:A,setVolume:C,setSeekStepSmallSec:I,setSeekStepLargeSec:x,setAutoAdvanceOnEnd:R,setEqualizerBandGain:z,resetEqualizer:M,patchPreferences:w}),[d,T,P,_,A,C,I,x,R,z,M,w]);return(0,t.jsx)(y.Provider,{value:N,children:e.children})},"usePlaybackPreferences",0,function(){let e=(0,r.useContext)(y);if(!e)throw Error("usePlaybackPreferences must be used within PlaybackPreferencesProvider");return e}],20498)},4856,e=>{e.v(t=>Promise.all(["static/chunks/0f7cjeik4kp.z.js"].map(t=>e.l(t))).then(()=>t(29973)))},96166,e=>{e.v(e=>Promise.resolve().then(()=>e(63848)))},97971,e=>{e.v(t=>Promise.all(["static/chunks/0y0bx0al3_u3i.js"].map(t=>e.l(t))).then(()=>t(1112)))},99054,e=>{e.v(t=>Promise.all(["static/chunks/123gvpdki1a8g.js"].map(t=>e.l(t))).then(()=>t(6361)))},55758,e=>{e.v(t=>Promise.all(["static/chunks/07~l8ydy~brl-.js"].map(t=>e.l(t))).then(()=>t(80975)))},70308,e=>{e.v(t=>Promise.all(["static/chunks/10juc40-blo8f.js"].map(t=>e.l(t))).then(()=>t(14141)))},43602,e=>{e.v(t=>Promise.all(["static/chunks/0t3~2mn.ru8c9.js"].map(t=>e.l(t))).then(()=>t(51142)))},56043,e=>{e.v(t=>Promise.all(["static/chunks/091890-uak3jq.js"].map(t=>e.l(t))).then(()=>t(57990)))},41636,e=>{e.v(t=>Promise.all(["static/chunks/0jjexk_vi9.0..js"].map(t=>e.l(t))).then(()=>t(84125)))},95346,e=>{e.v(t=>Promise.all(["static/chunks/0.k2zgyk25zrk.js"].map(t=>e.l(t))).then(()=>t(99593)))},74814,e=>{e.v(t=>Promise.all(["static/chunks/0b19wm3dafrm-.js"].map(t=>e.l(t))).then(()=>t(1054)))},77549,e=>{e.v(t=>Promise.all(["static/chunks/07tpipp_325ft.js"].map(t=>e.l(t))).then(()=>t(49334)))},99248,e=>{e.v(t=>Promise.all(["static/chunks/05adbc~fykb7s.js"].map(t=>e.l(t))).then(()=>t(43817)))}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,47795,e=>{"use strict";let r=[{href:"/settings",label:"Overview",description:"Summary and links to all settings sections."},{href:"/settings/library",label:"Library",description:"Scan folders, favorites export, rescan on startup, and configured directories."},{href:"/settings/youtube",label:"YouTube",description:"Data API key, queue video prefetch, and related YouTube options."},{href:"/settings/lastfm",label:"Last.fm",description:"API key for related song discovery via track.getSimilar."},{href:"/settings/playback",label:"Playback",description:"Queue restore, repeat, shuffle, speed, volume, seek steps, and auto-advance."},{href:"/settings/browse",label:"Browse",description:"Default Library, MusicBrainz, or YouTube tab when Muzical opens."},{href:"/settings/display",label:"Display",description:"Color palette themes, list density, and other visual preferences."},{href:"/settings/genius",label:"Genius",description:"API key for displaying song lyrics."}],i=r.filter(e=>"/settings"!==e.href);e.s(["SETTINGS_NAV_ITEMS",0,r,"SETTINGS_SECTION_ITEMS",0,i])},85876,e=>{"use strict";var r=e.i(8063),i=e.i(70096),s=e.i(48042),t=e.i(47795);function n(){let e=(0,s.usePathname)();return(0,r.jsx)("nav",{"aria-label":"Settings sections",children:(0,r.jsx)("ul",{className:"overflow-hidden rounded-lg border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900/40 sm:border-0 sm:bg-transparent sm:dark:bg-transparent",children:t.SETTINGS_NAV_ITEMS.map((s,t)=>{let n="/settings"===s.href?"/settings"===e:e===s.href||e.startsWith(`${s.href}/`);return(0,r.jsx)("li",{className:t>0?"border-t border-zinc-200 dark:border-zinc-800 sm:border-t-0":void 0,children:(0,r.jsx)(i.default,{href:s.href,"aria-current":n?"page":void 0,className:`block px-2.5 py-1.5 text-xs font-medium transition sm:rounded-lg sm:px-2 sm:py-1.5 ${n?"bg-accent-500/15 text-accent-900 dark:bg-accent-500/20 dark:text-accent-200":"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800/80 dark:hover:text-zinc-100"}`,children:s.label})},s.href)})})})}var a=e.i(69188),l=e.i(62474);e.s(["default",0,function(e){return(0,r.jsx)(a.SettingsSaveNotificationProvider,{children:(0,r.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col overflow-hidden bg-zinc-100 text-zinc-900 dark:bg-zinc-950 dark:text-zinc-100",children:[(0,r.jsxs)("header",{className:"flex shrink-0 items-center justify-between gap-4 border-b border-zinc-200 bg-white/90 px-6 py-4 backdrop-blur-sm dark:border-zinc-800/80 dark:bg-zinc-950/90",children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,r.jsx)(i.default,{href:"/",className:"shrink-0 rounded-lg border border-zinc-200 bg-zinc-50 px-3 py-1.5 text-xs font-medium text-zinc-700 transition hover:bg-zinc-100 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:"← Player"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("h1",{className:"truncate text-sm font-semibold tracking-tight",children:"Settings"}),(0,r.jsx)("p",{className:"truncate text-xs text-zinc-500",children:"Configure Muzical on this device."})]})]}),(0,r.jsx)(l.default,{})]}),(0,r.jsxs)("div",{className:"flex min-h-0 w-full flex-1 overflow-hidden",children:[(0,r.jsx)("aside",{className:"hidden w-36 shrink-0 border-r border-zinc-200 px-3 py-6 dark:border-zinc-800/80 sm:block",children:(0,r.jsx)(n,{})}),(0,r.jsxs)("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto overscroll-contain",children:[(0,r.jsx)("div",{className:"mb-4 px-4 pt-4 sm:hidden",children:(0,r.jsx)(n,{})}),(0,r.jsx)("div",{className:"px-4 pb-6 pt-1 sm:px-6 sm:pb-8 sm:pt-6",children:e.children})]})]})]})})}],85876)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70610,e=>{"use strict";var t=e.i(8063),n=e.i(51268),s=e.i(69188),c=e.i(50845),i=e.i(74178);e.s(["default",0,function(){let{notifySettingsSaved:e}=(0,s.useSettingsSaveNotification)(),[a,r]=(0,n.useState)("");(0,n.useEffect)(()=>{r((0,c.default)())},[]);let l=(0,n.useCallback)(()=>{(0,i.default)(a),e("Genius settings saved")},[a,e]);return(0,t.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold tracking-tight text-zinc-900 dark:text-zinc-100",children:"Genius"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-zinc-600 dark:text-zinc-400",children:"Provide a Genius API key to enable lyrics fetching. It is stored only in this browser."})]}),(0,t.jsxs)("section",{className:"rounded-2xl border border-zinc-200 bg-white p-6 shadow-sm dark:border-zinc-800 dark:bg-zinc-900/40",children:[(0,t.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"API key"}),(0,t.jsxs)("p",{className:"mt-2 text-sm leading-relaxed text-zinc-600 dark:text-zinc-400",children:["Create an API client at"," ",(0,t.jsx)("a",{href:"https://genius.com/api-clients",target:"_blank",rel:"noopener noreferrer",className:"font-medium text-accent-700 underline decoration-accent-500/40 underline-offset-2 hover:text-accent-600 dark:text-accent-400",children:"Genius API Clients"}),'. Use the "Client Access Token".']}),(0,t.jsxs)("label",{className:"mt-4 block",children:[(0,t.jsx)("span",{className:"sr-only",children:"Genius API key"}),(0,t.jsx)("input",{type:"password",autoComplete:"off",spellCheck:!1,value:a,onChange:e=>r(e.target.value),placeholder:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",className:"w-full rounded-xl border border-zinc-200 bg-zinc-50 px-4 py-2.5 font-mono text-sm text-zinc-900 outline-none ring-accent-500/30 placeholder:text-zinc-400 focus:border-accent-500/50 focus:ring-2 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100"})]}),(0,t.jsx)("div",{className:"mt-4 flex flex-wrap items-center gap-3",children:(0,t.jsx)("button",{type:"button",onClick:l,className:"rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 shadow-sm transition hover:bg-accent-400",children:"Save key"})})]})]})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,87263,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={cancelIdleCallback:function(){return s},requestIdleCallback:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="u">typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},s="u">typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},25095,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ESCAPE_REGEX:function(){return s},htmlEscapeAttributeString:function(){return d},htmlEscapeJsonString:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},s=/[&><\u2028\u2029]/g,l={"&":"&",'"':""","'":"'","<":"<",">":">"},c=/[&"'<>]/g;function o(e){return e.replace(s,e=>i[e])}function d(e){return e.replace(c,e=>l[e])}},85927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return v},handleClientScriptLoad:function(){return p},initScriptLoader:function(){return g}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(81258),s=e.r(44066),l=e.r(8063),c=i._(e.r(7734)),o=s._(e.r(51268)),d=e.r(61092),u=e.r(60884),m=e.r(87263),x=e.r(25095),h=new Map,b=new Set,f=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:a=null,dangerouslySetInnerHTML:i,children:s="",strategy:l="afterInteractive",onError:o,stylesheets:d}=e,m=r||t;if(m&&b.has(m))return;if(h.has(t)){b.add(m),h.get(t).then(n,o);return}let x=()=>{a&&a(),b.add(m)},f=document.createElement("script"),p=new Promise((e,t)=>{f.addEventListener("load",function(t){e(),n&&n.call(this,t),x()}),f.addEventListener("error",function(e){t(e)})}).catch(function(e){o&&o(e)});i?(f.innerHTML=i.__html||"",x()):s?(f.textContent="string"==typeof s?s:Array.isArray(s)?s.join(""):"",x()):t&&(f.src=t,h.set(t,p)),(0,u.setAttributesFromProps)(f,e),"worker"===l&&f.setAttribute("type","text/partytown"),f.setAttribute("data-nscript",l),d&&(e=>{if(c.default.preinit)return e.forEach(e=>{c.default.preinit(e,{as:"style"})});if("u">typeof window){let t=document.head;e.forEach(e=>{let r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,t.appendChild(r)})}})(d),document.body.appendChild(f)};function p(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,m.requestIdleCallback)(()=>f(e))}):f(e)}function g(e){e.forEach(p),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");b.add(t)})}function k(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:a=null,strategy:i="afterInteractive",onError:s,stylesheets:u,...h}=e,{updateScripts:p,scripts:g,getIsSsr:k,appDir:v,nonce:y}=(0,o.useContext)(d.HeadManagerContext);y=h.nonce||y;let z=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e=t||r;z.current||(a&&e&&b.has(e)&&a(),z.current=!0)},[a,t,r]);let j=(0,o.useRef)(!1);if((0,o.useEffect)(()=>{if(!j.current){if("afterInteractive"===i)f(e);else"lazyOnload"===i&&("complete"===document.readyState?(0,m.requestIdleCallback)(()=>f(e)):window.addEventListener("load",()=>{(0,m.requestIdleCallback)(()=>f(e))}));j.current=!0}},[e,i]),("beforeInteractive"===i||"worker"===i)&&(p?(g[i]=(g[i]||[]).concat([{id:t,src:r,onLoad:n,onReady:a,onError:s,...h,nonce:y}]),p(g)):k&&k()?b.add(t||r):k&&!k()&&f({...e,nonce:y})),v){if(u&&u.forEach(e=>{c.default.preinit(e,{as:"style"})}),"beforeInteractive"===i)if(!r)return h.dangerouslySetInnerHTML&&(h.children=h.dangerouslySetInnerHTML.__html,delete h.dangerouslySetInnerHTML),(0,l.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,x.htmlEscapeJsonString)(JSON.stringify([0,{...h,id:t}]))})`}});else return c.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:y,crossOrigin:h.crossOrigin}:{as:"script",nonce:y,crossOrigin:h.crossOrigin}),(0,l.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,x.htmlEscapeJsonString)(JSON.stringify([r,{...h,id:t}]))})`}});"afterInteractive"===i&&r&&c.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:y,crossOrigin:h.crossOrigin}:{as:"script",nonce:y,crossOrigin:h.crossOrigin})}return null}Object.defineProperty(k,"__nextScript",{value:!0});let v=k;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},35191,(e,t,r)=>{t.exports={name:"muzical-ui",version:"0.1.21",description:"Local Node.JS music player with library browse, queue playback and MusicBrainz",author:"f3rnox",license:"MIT",homepage:"https://github.com/f3rnox/muzical-ui#readme",repository:{type:"git",url:"git+https://github.com/f3rnox/muzical-ui.git"},bugs:{url:"https://github.com/f3rnox/muzical-ui/issues"},keywords:["music","player","local-library","musicbrainz","nextjs"],engines:{node:">=20"},bin:{"muzical-ui":"./bin/muzical-ui.js"},files:["bin",".next/standalone","package.json"],scripts:{dev:"next dev",build:"next build && node scripts/prepare-standalone-build.js",start:"next start","build:docs":"typedoc --out ./docs ./src && cp LICENSE.md docs/LICENSE.md && cp CHANGELOG.md docs/CHANGELOG.md","build:ts":"NODE_PATH=./src tsc -p tsconfig.json",format:"pnpm format:prettier","format:check":"pnpm format:prettier:check","format:prettier":"prettier --write .","format:prettier:check":"prettier --check .",lint:"pnpm lint:markdownlint && pnpm lint:eslint","lint:eslint":"eslint package.json src/**/*","lint:eslint:fix":"eslint package.json src/**/*","lint:fix":"pnpm lint:markdownlint:fix && pnpm lint:eslint:fix","lint:markdownlint":"markdownlint README.md","lint:markdownlint:fix":"markdownlint --fix README.md",prepare:"husky","prepare-release":"pnpm build && git add docs",prepublishOnly:"pnpm build",release:"pnpm prepare-release && pnpm update-version && git push --follow-tags origin main","serve:coverage":"http-server ./coverage","serve:docs":"http-server ./docs",test:"NODE_PATH=./src NODE_ENV=test vitest run","update-deps":"updates -u -g -c","update-version":"standard-version -a"},dependencies:{"browser-id3-writer":"^6.3.1","music-metadata":"^11.12.3",next:"16.2.6",react:"19.2.4","react-dom":"19.2.4","yt-dlp-wrap":"^2.3.12"},devDependencies:{"@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0","@commitlint/format":"^20.5.0","@commitlint/types":"^20.5.0","@eslint/js":"^10.0.1","@istanbuljs/nyc-config-typescript":"^1.0.2","@tailwindcss/postcss":"^4","@types/node":"^20","@types/react":"^19","@types/react-dom":"^19",eslint:"^9","eslint-config-next":"16.2.6","eslint-plugin-package-json":"^0.91.1",globals:"^17.4.0","http-server":"^14.1.1",husky:"^9.1.7",jiti:"^2.6.1","lint-staged":"^16.4.0","markdownlint-cli":"^0.48.0",nyc:"^18.0.0",prettier:"^3.8.1",remark:"^15.0.1","standard-version":"^9.5.0",tailwindcss:"^4","ts-node":"^10.9.2",tslib:"^2.8.1",tsx:"^4.21.0",typedoc:"^0.28.18",typescript:"^6.0.2","typescript-eslint":"^8.58.0",updates:"^17.13.5",vitest:"^4.1.2"}}},59665,e=>{"use strict";var t=e.i(8063),r=e.i(51268),n=e.i(48042),a=e.i(70096),i=e.i(70487),s=e.i(75397);function l(e){let{recentBrowseSearches:n}=(0,i.useLibrary)(),a=e.limit??Math.min(8,s.RECENT_BROWSE_SEARCHES_LIMIT),l=(0,r.useMemo)(()=>{var t;let r;return t=e.source,0===(r=Math.max(0,Math.floor(a)))?[]:n.filter(e=>e.source===t).slice(0,r)},[n,e.source,a]);return 0===l.length?null:(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("p",{className:"text-[10px] font-medium uppercase tracking-wider text-zinc-500",children:"Recent searches"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",role:"list","aria-label":"Recent searches",children:l.map(r=>(0,t.jsx)("button",{type:"button",role:"listitem",className:"max-w-full min-w-0 cursor-pointer truncate rounded-full border border-zinc-200 bg-white px-3 py-1 text-left text-xs font-medium text-zinc-800 shadow-sm transition hover:border-accent-400/50 hover:bg-accent-50/50 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-200 dark:hover:border-accent-500/30 dark:hover:bg-accent-950/20",onClick:()=>e.onSelect(r.query),children:r.query},`${r.source}\u0000${r.query}`))})]})}function c(e,t){let n=(0,r.useMemo)(()=>e.get("q")?.trim()||null,[e]);(0,r.useEffect)(()=>{if(!n)return;let e=window.requestAnimationFrame(()=>{t(n)});return()=>window.cancelAnimationFrame(e)},[n,t])}var o=e.i(30164);async function d(e){try{let t=(await (0,o.parseBlob)(e,{duration:!1})).common.picture;if(!t?.length)return null;let r=t.find(e=>{let t=e.type?.toLowerCase()??"";return t.includes("front")||t.includes("cover")})??t.reduce((e,t)=>t.data.length>e.data.length?t:e);return{mime:r.format?.trim()||(r.name?.toLowerCase().endsWith(".png")?"image/png":"image/jpeg"),data:Uint8Array.from(r.data)}}catch{return null}}let u=new Map,m=new Map;async function x(e,t){let r=u.get(e);if(r){var n;return n={...r,lastUsedAt:Date.now()},u.delete(e),u.set(e,n),r.bytes}let a=m.get(e);if(a)return a;let i=(async()=>{let r=await d(t);if(r){let t={bytes:r,lastUsedAt:Date.now()};u.set(e,t),function(){for(;u.size>48;){let e=u.keys().next().value;if(!e)return;u.delete(e)}}()}return r})();m.set(e,i);try{return await i}finally{m.delete(e)}}let h={max:"maxresdefault",hq:"hqdefault",mq:"mqdefault",default:"default"};function b(e,t="hq"){let r=e.trim();if(!r)return"";let n=h[t];return`https://i.ytimg.com/vi/${r}/${n}.jpg`}function f(e){let{track:n,className:a="h-12 w-12 shrink-0 overflow-hidden rounded-md ring-1 ring-zinc-200/80 dark:ring-zinc-700/80"}=e,{resolveFileForTrack:s}=(0,i.useLibrary)(),[l,c]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e=!1,t=null,r=n?.youtubeVideoId?.trim();return n?.library?((async()=>{let r=await s(n);if(e||!r)return;let a=await x(n.id,r);if(e)return;if(!a)return c(null);let i=URL.createObjectURL(new Blob([a.data],{type:a.mime}));if(e){i&&URL.revokeObjectURL(i);return}t=i,c(i)})(),()=>{e=!0,t&&URL.revokeObjectURL(t)}):(r?c(b(r)):c(null),()=>{e=!0})},[n,s]);let o=n?.album?.trim().charAt(0)||"♪";return(0,t.jsx)("div",{className:["relative bg-linear-to-br from-accent-200/70 via-zinc-100 to-zinc-200 dark:from-accent-900/35 dark:via-zinc-800 dark:to-zinc-900",a].join(" "),"aria-hidden":!0,children:l?(0,t.jsx)("img",{src:l,alt:"",className:"absolute inset-0 h-full w-full object-cover",decoding:"async"}):(0,t.jsx)("span",{className:"flex h-full w-full items-center justify-center text-lg font-semibold tracking-tight text-accent-900/25 dark:text-zinc-600/90",children:o})})}function p(e){let{filled:r,onPress:n,label:a,className:i}=e;return(0,t.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),e.preventDefault(),n()},"aria-label":a,"aria-pressed":r,className:["inline-flex h-7 w-7 shrink-0 items-center justify-center self-center leading-none text-accent-600 transition hover:bg-accent-500/15 hover:text-accent-700 dark:text-accent-400 dark:hover:bg-accent-500/10 dark:hover:text-accent-300",i??"rounded-full"].join(" "),children:(0,t.jsx)("svg",{viewBox:"0 0 24 24",className:"block h-4 w-4 shrink-0",fill:r?"currentColor":"none","aria-hidden":!0,children:(0,t.jsx)("path",{stroke:"currentColor",strokeWidth:"1.75",strokeLinejoin:"round",d:"M12 3.5l2.35 4.76 5.26.77-3.8 3.7.9 5.24L12 15.9 6.29 18l.9-5.24-3.8-3.7 5.26-.77L12 3.5z"})})})}var g=e.i(38602),k=e.i(34713),v=e.i(74061);function y(e){let{openTrackDetails:r,openRelatedSongs:n,openAddToPlaylist:a,downloadTrack:s,removeFromLibrary:l,isFavoriteSong:c,toggleFavoriteTrack:o}=(0,i.useLibrary)(),d=e.compact?"px-1.5 py-1.5":"px-2 py-2",u=e.compact?"gap-1.5":"gap-2";return(0,t.jsxs)("div",{className:[`flex items-center ${u} rounded-lg ${d}`,e.indentClass??"","hover:bg-zinc-100 dark:hover:bg-zinc-800/80"].join(" "),children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e.track.title}),!1!==e.showArtist?(0,t.jsx)("p",{className:"truncate text-xs text-zinc-500",children:e.track.artist}):null]}),(0,t.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:e.track.durationSec>0?(0,k.formatDuration)(e.track.durationSec):"—"}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${e.track.title}`,items:(0,v.default)({track:e.track,onViewDetails:r,onViewRelatedSongs:n,onAddToPlaylist:e=>a(e,e.title),onDownload:s,onRemoveFromLibrary:()=>l(e.track)})}),(0,t.jsx)(p,{filled:c(e.track.id),onPress:()=>o(e.track),label:c(e.track.id)?"Remove song from favorites":"Add song to favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>e.onAdd(e.track),className:"shrink-0 cursor-pointer rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})}function z(e,t){if(0===e.trackIds.length)return[];let r=new Map;for(let e of t)r.set(e.id,e);let n=[];for(let t of e.trackIds){let e=r.get(t);e&&n.push(e)}return n}var j=e.i(41490);function w(e){let{playlists:n,libraryTracks:a,addToQueue:s,createPlaylist:l,renamePlaylist:c,deletePlaylist:o,removeTracksFromPlaylist:d}=(0,i.useLibrary)(),[u,m]=(0,r.useState)(null),[x,h]=(0,r.useState)(""),[b,f]=(0,r.useState)(null),[p,v]=(0,r.useState)(null),[w,N]=(0,r.useState)(""),C=(0,r.useMemo)(()=>(0,j.default)(n),[n]),S=(0,r.useMemo)(()=>u?n.find(e=>e.id===u)??null:null,[n,u]),E=(0,r.useMemo)(()=>S?z(S,a):[],[S,a]),A=(0,r.useMemo)(()=>{let e=0;for(let t of E)t.durationSec>0&&(e+=t.durationSec);return e},[E]),L=(0,r.useCallback)(()=>{let e=x.trim();e?l(e)?(h(""),f(null)):f("Could not create playlist."):f("Enter a name.")},[l,x]),M=(0,r.useCallback)((e,t)=>{v(e),N(t)},[]),P=(0,r.useCallback)(()=>{!p||c(p,w)&&(v(null),N(""))},[w,c,p]),R=(0,r.useCallback)(()=>{v(null),N("")},[]),T=(0,r.useCallback)((e,t)=>{window.confirm(`Delete playlist “${t}”? This cannot be undone.`)&&(o(e),m(t=>t===e?null:t))},[o]);return S?(0,t.jsxs)("div",{children:[(0,t.jsx)("button",{type:"button",onClick:()=>m(null),className:"mb-2 cursor-pointer px-2 text-xs font-medium text-accent-700 hover:underline dark:text-accent-400",children:"← Playlists"}),(0,t.jsxs)("div",{className:"mb-3 border-b border-zinc-200 px-2 pb-3 dark:border-zinc-800",children:[(0,t.jsx)("h3",{className:"truncate text-lg font-semibold leading-tight text-zinc-900 dark:text-zinc-50",children:S.name}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-zinc-500",children:[E.length," track",1===E.length?"":"s",A>0?` \xb7 ${(0,k.formatDuration)(A)}`:"",E.length<S.trackIds.length?` \xb7 ${S.trackIds.length-E.length} missing from library`:""]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>s(E),disabled:0===E.length,className:"cursor-pointer rounded-full bg-accent-500 px-3 py-1 text-xs font-semibold text-zinc-950 transition hover:bg-accent-400 disabled:opacity-40",children:"Add all to queue"}),(0,t.jsx)("button",{type:"button",onClick:()=>M(S.id,S.name),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-3 py-1 text-xs font-medium transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:hover:bg-zinc-800",children:"Rename"}),(0,t.jsx)("button",{type:"button",onClick:()=>T(S.id,S.name),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-3 py-1 text-xs font-medium text-red-600 transition hover:bg-red-50 dark:border-zinc-700 dark:bg-zinc-900 dark:text-red-400 dark:hover:bg-red-950/40",children:"Delete"})]}),p===S.id?(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,t.jsx)("input",{type:"text",value:w,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),P()):"Escape"===e.key&&(e.preventDefault(),R())},autoFocus:!0,className:"min-w-0 flex-1 rounded-lg border border-zinc-200 bg-white px-3 py-1.5 text-sm text-zinc-900 outline-none transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100"}),(0,t.jsx)("button",{type:"button",onClick:P,className:"cursor-pointer rounded-lg bg-accent-500 px-3 py-1.5 text-xs font-semibold text-zinc-950 transition hover:bg-accent-400",children:"Save"}),(0,t.jsx)("button",{type:"button",onClick:R,className:"cursor-pointer rounded-lg border border-zinc-200 bg-white px-3 py-1.5 text-xs font-medium transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:hover:bg-zinc-800",children:"Cancel"})]}):null]}),0===E.length?(0,t.jsx)("p",{className:"px-2 py-4 text-sm text-zinc-500",children:"This playlist has no tracks. Add some from the library using each track's menu."}):(0,t.jsx)("ul",{className:e.ulSpaceYClass,children:E.map(r=>(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)(y,{track:r,compact:e.compact,onAdd:e=>s(e)})}),(0,t.jsx)("button",{type:"button",onClick:()=>d(S.id,[r.id]),className:"shrink-0 cursor-pointer rounded-full border border-zinc-200 bg-white px-2.5 py-1 text-[11px] font-medium text-zinc-700 transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:"Remove"})]},r.id))})]}):(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"px-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{type:"text",value:x,onChange:e=>h(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),L())},placeholder:"New playlist name",className:"min-w-0 flex-1 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 outline-none transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100 dark:focus:border-accent-500/60","aria-label":"New playlist name"}),(0,t.jsx)("button",{type:"button",onClick:L,className:"shrink-0 cursor-pointer rounded-lg bg-accent-500 px-3 py-2 text-xs font-semibold text-zinc-950 transition hover:bg-accent-400",children:"Create"})]}),b?(0,t.jsx)("p",{className:"mt-1 text-xs text-red-600 dark:text-red-400",children:b}):null]}),0===C.length?(0,t.jsx)("p",{className:"px-2 py-4 text-sm text-zinc-500",children:"No playlists yet. Create one above, then add tracks via each track's menu."}):(0,t.jsx)("ul",{className:e.ulSpaceYClass,children:C.map(r=>{let n=z(r,a),i=p===r.id;return(0,t.jsx)("li",{className:"group/row flex items-center gap-1",children:i?(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2 px-2",children:[(0,t.jsx)("input",{type:"text",value:w,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),P()):"Escape"===e.key&&(e.preventDefault(),R())},autoFocus:!0,className:"min-w-0 flex-1 rounded-lg border border-zinc-200 bg-white px-3 py-1.5 text-sm text-zinc-900 outline-none transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100"}),(0,t.jsx)("button",{type:"button",onClick:P,className:"cursor-pointer rounded-lg bg-accent-500 px-3 py-1.5 text-xs font-semibold text-zinc-950 transition hover:bg-accent-400",children:"Save"}),(0,t.jsx)("button",{type:"button",onClick:R,className:"cursor-pointer rounded-lg border border-zinc-200 bg-white px-3 py-1.5 text-xs font-medium transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:hover:bg-zinc-800",children:"Cancel"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{type:"button",onClick:()=>m(r.id),className:`flex min-w-0 flex-1 items-center justify-between rounded-lg ${e.rowPadLgClass} text-left text-sm text-zinc-800 transition hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate font-medium text-zinc-900 dark:text-zinc-100",children:r.name}),(0,t.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:r.trackIds.length})]}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${r.name}`,items:[{id:"rename",label:"Rename",onSelect:()=>M(r.id,r.name)},{id:"delete",label:"Delete",onSelect:()=>T(r.id,r.name)}]}),(0,t.jsx)("button",{type:"button",onClick:()=>s(n),disabled:0===n.length,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]})},r.id)})})]})}let N="mt-1 block w-full rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-100";function C(e){let{artist:n,album:a,trackCount:i,multipleTrackArtists:s,hasYoutubeTracks:l,saving:c,saveError:o,onSave:d}=e,u={artist:n,album:a},[m,x]=(0,r.useState)(u),[h,b]=(0,r.useState)(u);(0,r.useEffect)(()=>{let e={artist:n,album:a};x(e),b(e)},[n,a]);let f=m.artist!==h.artist||m.album!==h.album,p=f&&""!==m.artist.trim(),g=(0,r.useCallback)(()=>{x(h)},[h]),k=(0,r.useCallback)(async e=>{if(e.preventDefault(),!p||c)return;let t={artist:m.artist.trim(),album:m.album.trim()||h.album};await d(t),b(t),x(t)},[p,m,d,h.album,c]);return(0,t.jsxs)("form",{onSubmit:k,className:"space-y-3",children:[(0,t.jsxs)("p",{className:"text-sm text-zinc-600 dark:text-zinc-400",children:["Updates artist and album on ",i," track",1===i?"":"s",". Song titles are unchanged. Saving also writes ID3 tags to each local MP3 file when write access is allowed."]}),s?(0,t.jsx)("p",{className:"text-xs text-amber-700 dark:text-amber-400",children:"Tracks on this album currently have different artists; saving sets the same artist on all of them."}):null,(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Artist"}),(0,t.jsx)("input",{type:"text",value:m.artist,onChange:e=>x(t=>({...t,artist:e.target.value})),className:N,autoComplete:"off",required:!0})]}),(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Album"}),(0,t.jsx)("input",{type:"text",value:m.album,onChange:e=>x(t=>({...t,album:e.target.value})),className:N,autoComplete:"off"})]}),l?(0,t.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving updates YouTube search queries and clears resolved video ids for affected tracks."}):null,o?(0,t.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",role:"alert",children:o}):null,(0,t.jsxs)("div",{className:"flex flex-wrap gap-2 pt-1",children:[(0,t.jsx)("button",{type:"submit",disabled:!p||c,className:"rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400 disabled:cursor-not-allowed disabled:opacity-50",children:c?"Saving…":"Save to all tracks"}),(0,t.jsx)("button",{type:"button",disabled:!f||c,onClick:g,className:"rounded-full border border-zinc-300 bg-white px-4 py-2 text-sm font-medium text-zinc-800 transition hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700",children:"Revert"})]})]})}var S=e.i(91768),E=e.i(97891),A=e.i(99513);function L(e){let{albumKey:n,albumTitle:a,artistName:s,trackCount:l,multipleTrackArtists:c,onClose:o,onSaved:d}=e,{libraryTracks:u,patchAlbumMetadataByKey:m,writeLibraryTracksToFiles:x}=(0,i.useLibrary)(),h=(0,r.useId)(),b=(0,r.useRef)(null),[f,p]=(0,r.useState)(!1),[g,k]=(0,r.useState)(null),v=(0,r.useMemo)(()=>u.some(e=>(0,A.albumCompositeKey)(e.album,e.artist)===n&&!!e.youtubeQuery?.trim()),[n,u]),y=(0,r.useCallback)(async e=>{p(!0),k(null);let t=(0,E.default)(u,n).map(t=>(0,S.default)(t,e)),r=m(n,e);if(!r){p(!1),k("Could not update album metadata.");return}let a=await x(t);if(p(!1),!a.ok&&a.failedCount>0){let e=a.writtenCount>0?` Updated ${a.writtenCount} file${1===a.writtenCount?"":"s"}; ${a.failedCount} failed.`:"";k(`${a.reason??"Could not write tags to audio files."}${e}`),d(r);return}d(r),o()},[n,u,o,d,m,x]);return(0,r.useEffect)(()=>{let e=e=>{"Escape"===e.key&&o()};return document.addEventListener("keydown",e),b.current?.focus(),()=>document.removeEventListener("keydown",e)},[o]),(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:o,children:(0,t.jsxs)("div",{ref:b,role:"dialog","aria-modal":"true","aria-labelledby":h,tabIndex:-1,className:"flex max-h-[min(85vh,32rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h2",{id:h,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:"Edit album metadata"}),(0,t.jsxs)("p",{className:"truncate text-sm text-zinc-500",children:[a," · ",s]})]}),(0,t.jsx)("button",{type:"button",onClick:o,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-4",children:(0,t.jsx)(C,{artist:s,album:a,trackCount:l,multipleTrackArtists:c,hasYoutubeTracks:v,saving:f,saveError:g,onSave:y})})]})})}function M(e){let{artist:n,trackCount:a,albumCount:i,hasYoutubeTracks:s,saving:l,saveError:c,onSave:o}=e,[d,u]=(0,r.useState)(n),[m,x]=(0,r.useState)(n);(0,r.useEffect)(()=>{u(n),x(n)},[n]);let h=d!==m,b=h&&""!==d.trim(),f=(0,r.useCallback)(()=>{u(m)},[m]),p=(0,r.useCallback)(async e=>{if(e.preventDefault(),!b||l)return;let t={artist:d.trim()};await o(t),x(t.artist),u(t.artist)},[b,d,o,l]);return(0,t.jsxs)("form",{onSubmit:p,className:"space-y-3",children:[(0,t.jsxs)("p",{className:"text-sm text-zinc-600 dark:text-zinc-400",children:["Updates the artist on ",a," track",1===a?"":"s"," across"," ",i," album",1===i?"":"s",". Song titles and album names are unchanged. Saving also writes ID3 tags to each local MP3 file when write access is allowed."]}),(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Artist"}),(0,t.jsx)("input",{type:"text",value:d,onChange:e=>u(e.target.value),className:"mt-1 block w-full rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-100",autoComplete:"off",required:!0})]}),s?(0,t.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving updates YouTube search queries and clears resolved video ids for affected tracks."}):null,c?(0,t.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",role:"alert",children:c}):null,(0,t.jsxs)("div",{className:"flex flex-wrap gap-2 pt-1",children:[(0,t.jsx)("button",{type:"submit",disabled:!b||l,className:"rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400 disabled:cursor-not-allowed disabled:opacity-50",children:l?"Saving…":"Save to all tracks"}),(0,t.jsx)("button",{type:"button",disabled:!h||l,onClick:f,className:"rounded-full border border-zinc-300 bg-white px-4 py-2 text-sm font-medium text-zinc-800 transition hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700",children:"Revert"})]})]})}var P=e.i(73973),R=e.i(4728);function T(e){let{artistName:n,trackCount:a,albumCount:s,onClose:l,onRenamed:c}=e,{libraryTracks:o,patchArtistMetadataByKey:d,writeLibraryTracksToFiles:u}=(0,i.useLibrary)(),m=(0,r.useId)(),x=(0,r.useRef)(null),h=(0,r.useRef)(l),[b,f]=(0,r.useState)(!1),[p,g]=(0,r.useState)(null),k=(0,r.useMemo)(()=>o.some(e=>(0,A.artistDisplayName)(e.artist)===n&&!!e.youtubeQuery?.trim()),[n,o]),v=(0,r.useCallback)(async e=>{f(!0),g(null);let t=(0,R.default)(o,n).map(t=>(0,P.default)(t,e)),r=d(n,e);if(!r){f(!1),g("Could not update artist metadata.");return}let a=await u(t);if(f(!1),!a.ok&&a.failedCount>0){let e=a.writtenCount>0?` Updated ${a.writtenCount} file${1===a.writtenCount?"":"s"}; ${a.failedCount} failed.`:"";g(`${a.reason??"Could not write tags to audio files."}${e}`),c(r);return}c(r),l()},[n,o,l,c,d,u]);return(0,r.useEffect)(()=>{h.current=l},[l]),(0,r.useEffect)(()=>{let e=e=>{"Escape"===e.key&&h.current()};return document.addEventListener("keydown",e),x.current?.focus(),()=>document.removeEventListener("keydown",e)},[]),(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:l,children:(0,t.jsxs)("div",{ref:x,role:"dialog","aria-modal":"true","aria-labelledby":m,tabIndex:-1,className:"flex max-h-[min(85vh,28rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h2",{id:m,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:"Edit artist metadata"}),(0,t.jsx)("p",{className:"truncate text-sm text-zinc-500",children:n})]}),(0,t.jsx)("button",{type:"button",onClick:l,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-4",children:(0,t.jsx)(M,{artist:n,trackCount:a,albumCount:s,hasYoutubeTracks:k,saving:b,saveError:p,onSave:v})})]})})}var I=e.i(1905);function $(e){let t=new Map;for(let r of e){let e=(0,A.artistDisplayName)(r.artist),n=t.get(e)??[];n.push(r),t.set(e,n)}for(let e of t.values())e.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}));return t}function D(e){let t=new Map;for(let r of e){let e=(0,A.albumCompositeKey)(r.album,r.artist),n=t.get(e)??[];n.push(r),t.set(e,n)}for(let e of t.values())e.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}));return t}function q(e,t){return e.filter(e=>e.library?.rootId===t)}function _(e,t){let r=t.trim();if(!r)return[...e];let n=`${r}/`;return e.filter(e=>{let t=e.library?.relativePath??"";return t===r||t.startsWith(n)})}function U(){let{roots:e,libraryTracks:a,listeningStats:s,addToQueue:o,compactLists:d,favoriteSongIds:u,favoriteArtistNames:m,favoriteAlbumKeys:x,isFavoriteArtist:h,isFavoriteAlbum:b,toggleFavoriteArtist:v,toggleFavoriteAlbum:z,removeAlbumFromLibrary:j,removeArtistFromLibrary:N,recordRecentBrowseSearch:C,openAddToPlaylist:S}=(0,i.useLibrary)(),E=(0,n.useSearchParams)(),[M,P]=(0,r.useState)("artist"),[R,U]=(0,r.useState)("");c(E,U),(0,r.useEffect)(()=>{let e=R.trim();if(e.length<2)return;let t=window.setTimeout(()=>{C("library",e)},800);return()=>window.clearTimeout(t)},[R,C]);let[O,B]=(0,r.useState)(null),[Y,G]=(0,r.useState)(null),[V,H]=(0,r.useState)(null),[F,Q]=(0,r.useState)(null),[K,W]=(0,r.useState)(null),[Z,J]=(0,r.useState)(""),X=(0,r.useMemo)(()=>{let e;return(e=R.trim().toLowerCase())?a.filter(t=>{let r=t.library?.relativePath??"";return t.title.toLowerCase().includes(e)||t.artist.toLowerCase().includes(e)||t.album.toLowerCase().includes(e)||r.toLowerCase().includes(e)}):[...a]},[a,R]),ee=R.trim().length>0,et=d?"space-y-0.25":"space-y-0.5",er=d?"px-2 py-2":"px-3 py-2.5",en=d?"gap-2":"gap-3",ea=d?"py-2 pr-2 pl-5":"py-2.5 pr-3 pl-6",ei=(0,r.useCallback)(e=>{P(e),B(null),G(null),W(null),J("")},[]),es=(0,r.useMemo)(()=>$(X),[X]),el=(0,r.useMemo)(()=>D(X),[X]),ec=(0,r.useMemo)(()=>[...es.keys()].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),[es]),eo=(0,r.useMemo)(()=>[...el.keys()].sort((e,t)=>{let[r,n]=e.split("\0"),[a,i]=t.split("\0"),s=r.localeCompare(a,void 0,{sensitivity:"base"});return 0!==s?s:n.localeCompare(i,void 0,{sensitivity:"base"})}),[el]),ed=(0,r.useMemo)(()=>{if(null===Y)return null;let t=el.get(Y)??[],r=Y.split("\0"),n=r[0]??"",a=r[1]??"",i=0,s=0;for(let e of t)e.durationSec>0&&(i+=e.durationSec,s+=1);let l=new Set;for(let e of t){let t=e.library?.rootId;t&&l.add(t)}let c=[...l].map(t=>e.find(e=>e.id===t)?.name??t).sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),o=new Set(t.map(e=>(0,A.artistDisplayName)(e.artist)));return{title:n,artist:a,trackCount:t.length,totalSec:i,withDurationCount:s,sample:t[0],rootLabels:c,multipleTrackArtists:o.size>1}},[Y,el,e]),eu=(0,r.useMemo)(()=>{if(null===O)return null;let t=es.get(O)??[],r=0,n=0;for(let e of t)e.durationSec>0&&(r+=e.durationSec,n+=1);let a=new Set;for(let e of t){let t=e.library?.rootId;t&&a.add(t)}let i=[...a].map(t=>e.find(e=>e.id===t)?.name??t).sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),s=new Set(t.map(e=>(0,A.albumCompositeKey)(e.album,e.artist)));return{name:O,trackCount:t.length,albumCount:s.size,totalSec:r,withDurationCount:n,sample:t[0],rootLabels:i}},[O,es,e]),em=(0,r.useMemo)(()=>K?q(X,K):[],[X,K]),ex=(0,r.useMemo)(()=>K?function(e,t){let r=""===t?"":`${t}/`,n=new Set,a=[];for(let i of e){let e=i.library?.relativePath??"";if(""===t)e.includes("/")?n.add(e.slice(0,e.indexOf("/"))):a.push(i);else{if(!e.startsWith(r))continue;let t=e.slice(r.length);if(!t)continue;let s=t.indexOf("/");-1===s?a.push(i):n.add(t.slice(0,s))}}return a.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"})),{folders:[...n].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),files:a}}(em,Z):{folders:[],files:[]},[K,em,Z]),eh=(0,r.useMemo)(()=>_(em,Z),[em,Z]),eb=(0,r.useMemo)(()=>{let t=R.trim().toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)):e},[e,R]),ef=(0,r.useCallback)(e=>{o(e)},[o]),ep=(0,r.useCallback)(e=>{0!==e.length&&o(e)},[o]),eg=(0,r.useMemo)(()=>(function(e,t,r){let n=r.trim().toLowerCase();if(!n)return{artists:[],albums:[],folders:[],songs:[]};let a=$(e),i=[];for(let[e,t]of a)e.toLowerCase().includes(n)&&i.push({name:e,tracks:t});i.sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:"base"}));let s=D(e),l=[];for(let[e,t]of s){let[r,a]=e.split("\0");(r.toLowerCase().includes(n)||a.toLowerCase().includes(n))&&l.push({key:e,album:r,artist:a,tracks:t})}l.sort((e,t)=>{let r=e.album.localeCompare(t.album,void 0,{sensitivity:"base"});return 0!==r?r:e.artist.localeCompare(t.artist,void 0,{sensitivity:"base"})});let c=new Map,o=(e,r,n)=>{let a=`${e}\u0000${r}`,i=c.get(a);!i&&(i={rootId:e,rootName:t.find(t=>t.id===e)?.name??e,path:r,tracks:[]},c.set(a,i));i.tracks.some(e=>e.id===n.id)||i.tracks.push(n)};for(let r of t)if(r.name.toLowerCase().includes(n))for(let t of e)t.library?.rootId===r.id&&o(r.id,"",t);for(let t of e){let e=t.library;if(e)for(let r of function(e){let t=e.split("/").filter(Boolean);if(t.length<=1)return[];let r=[];for(let e=0;e<t.length-1;e++)r.push(t.slice(0,e+1).join("/"));return r}(e.relativePath))(function(e,t){return!!t&&(!!e.toLowerCase().includes(t)||e.split("/").filter(Boolean).some(e=>e.toLowerCase().includes(t)))})(r,n)&&o(e.rootId,r,t)}return{artists:i,albums:l,folders:[...c.values()].sort((e,t)=>{let r=e.rootName.localeCompare(t.rootName,void 0,{sensitivity:"base"});return 0!==r?r:e.path.localeCompare(t.path,void 0,{sensitivity:"base"})}),songs:e.filter(e=>e.title.toLowerCase().includes(n)).sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}))}})(a,e,R),[a,e,R]),ek=(0,r.useMemo)(()=>(function(e){let t=new Set,r=[];for(let n of e)for(let e of n)t.has(e.id)||(t.add(e.id),r.push(e));return r})([eg.artists.flatMap(e=>e.tracks),eg.albums.flatMap(e=>e.tracks),eg.folders.flatMap(e=>e.tracks),eg.songs]),[eg]),ev=(0,r.useMemo)(()=>$(a),[a]),ey=(0,r.useMemo)(()=>D(a),[a]),ez=(0,r.useMemo)(()=>m.filter(e=>ev.has(e)).sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),[m,ev]),ej=(0,r.useMemo)(()=>x.filter(e=>ey.has(e)).sort((e,t)=>{let[r,n]=e.split("\0"),[a,i]=t.split("\0"),s=r.localeCompare(a,void 0,{sensitivity:"base"});return 0!==s?s:n.localeCompare(i,void 0,{sensitivity:"base"})}),[x,ey]),ew=(0,r.useMemo)(()=>{let e=new Set(u);return a.filter(t=>e.has(t.id)).sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}))},[a,u]),eN=(0,r.useMemo)(()=>{let e=new Set,t=[],r=r=>{e.has(r.id)||(e.add(r.id),t.push(r))};for(let e of u){let t=a.find(t=>t.id===e);t&&r(t)}for(let e of m){let t=ev.get(e);if(t)for(let e of t)r(e)}for(let e of x){let t=ey.get(e);if(t)for(let e of t)r(e)}return t.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"})),t},[u,m,x,a,ev,ey]),eC=(0,r.useMemo)(()=>{let e=[],{artists:t,albums:r,folders:n,songs:a}=eg;return t.length&&e.push(`${t.length} artist${1===t.length?"":"s"}`),r.length&&e.push(`${r.length} album${1===r.length?"":"s"}`),n.length&&e.push(`${n.length} folder${1===n.length?"":"s"}`),a.length&&e.push(`${a.length} song${1===a.length?"":"s"}`),e},[eg]),eS=(0,r.useMemo)(()=>a.map(e=>({track:e,stats:s[e.id]})).filter(e=>!!e.stats),[a,s]),eE=(0,r.useMemo)(()=>{let e=0,t=0,r=0,n=0,a=0;for(let{stats:i}of eS)i&&(e+=i.playCount,t+=i.completedCount,r+=i.skipCount,n+=i.totalListenSec,i.playCount>0&&(a+=1));return{playCount:e,completedCount:t,skipCount:r,totalListenSec:n,tracksHeard:a}},[eS]),eA=(0,r.useMemo)(()=>eS.filter(e=>!!e.stats?.lastPlayedAt).sort((e,t)=>(t.stats?.lastPlayedAt??0)-(e.stats?.lastPlayedAt??0)).slice(0,12),[eS]),eL=(0,r.useMemo)(()=>eS.filter(e=>(e.stats?.playCount??0)>0).sort((e,t)=>{let r=(t.stats?.playCount??0)-(e.stats?.playCount??0);return 0!==r?r:(t.stats?.totalListenSec??0)-(e.stats?.totalListenSec??0)}).slice(0,12),[eS]),eM=(0,r.useMemo)(()=>eS.filter(e=>(e.stats?.skipCount??0)>0).sort((e,t)=>{let r=(t.stats?.skipCount??0)-(e.stats?.skipCount??0);return 0!==r?r:(t.stats?.lastSkippedAt??0)-(e.stats?.lastSkippedAt??0)}).slice(0,12),[eS]),eP=(0,r.useMemo)(()=>eS.filter(e=>(e.stats?.playCount??0)>0&&!!e.stats?.lastPlayedAt).sort((e,t)=>(e.stats?.lastPlayedAt??0)-(t.stats?.lastPlayedAt??0)).slice(0,12),[eS]),eR=(0,r.useMemo)(()=>{let e=new Map;for(let{track:t,stats:r}of eS){if(!r||0===r.playCount)continue;let n=(0,A.artistDisplayName)(t.artist),a=e.get(n)??{id:n,label:n,playCount:0,totalListenSec:0};a.playCount+=r.playCount,a.totalListenSec+=r.totalListenSec,e.set(n,a)}return[...e.values()].sort((e,t)=>{let r=t.playCount-e.playCount;return 0!==r?r:t.totalListenSec-e.totalListenSec}).slice(0,5)},[eS]),eT=(0,r.useMemo)(()=>{let e=new Map;for(let{track:t,stats:r}of eS){if(!r||0===r.playCount)continue;let n=(0,A.albumCompositeKey)(t.album,t.artist),a=e.get(n)??{id:n,label:t.album||"Unknown album",detail:(0,A.artistDisplayName)(t.artist),playCount:0,totalListenSec:0};a.playCount+=r.playCount,a.totalListenSec+=r.totalListenSec,e.set(n,a)}return[...e.values()].sort((e,t)=>{let r=t.playCount-e.playCount;return 0!==r?r:t.totalListenSec-e.totalListenSec}).slice(0,5)},[eS]),eI=(0,r.useCallback)(e=>{U(""),G(null),W(null),J(""),P("artist"),B(e)},[]),e$=(0,r.useCallback)(e=>{U(""),B(null),W(null),J(""),P("album"),G(e)},[]),eD=(0,r.useCallback)((e,t)=>{U(""),B(null),G(null),P("folder"),W(e),J(t)},[]),eq=(0,r.useCallback)(e=>{N(e),B(t=>t===e?null:t)},[N]),e_=(0,r.useCallback)(e=>{j(e),G(t=>t===e?null:t)},[j]),eU=(0,r.useCallback)(e=>{H(e)},[]),eO=(0,r.useMemo)(()=>{if(!V)return null;let e=ey.get(V)??[];if(0===e.length)return null;let t=V.split("\0"),r=t[0]??"",n=t[1]??"",a=new Set(e.map(e=>(0,A.artistDisplayName)(e.artist)));return{albumKey:V,albumTitle:r,artistName:n,trackCount:e.length,multipleTrackArtists:a.size>1}},[V,ey]),eB=(0,r.useCallback)(e=>{let t=ey.get(e)??[];if(0===t.length)return;let r=e.split("\0"),n=r[0]??"Album",a=r[1]??"";S(t,a?`${n} \xb7 ${a}`:n)},[ey,S]),eY=(0,r.useCallback)(e=>{var t;let r;return r=[],(t={albumKey:e,onRemoveAlbumFromLibrary:e_,onEditAlbumMetadata:eU,onAddAlbumToPlaylist:eB}).onEditAlbumMetadata&&r.push({id:"edit-metadata",label:"Edit album metadata",onSelect:()=>t.onEditAlbumMetadata(t.albumKey)}),t.onAddAlbumToPlaylist&&r.push({id:"add-to-playlist",label:"Add album to playlist…",onSelect:()=>t.onAddAlbumToPlaylist(t.albumKey)}),r.push({id:"remove",label:"Remove album from library",onSelect:()=>t.onRemoveAlbumFromLibrary(t.albumKey)}),r},[e_,eU,eB]),eG=(0,r.useCallback)(e=>{Q(e)},[]),eV=(0,r.useMemo)(()=>{if(!F)return null;let e=ev.get(F)??[],t=new Set(e.map(e=>(0,A.albumCompositeKey)(e.album,e.artist)));return{artistName:F,trackCount:e.length,albumCount:t.size}},[F,ev]),eH=(0,r.useCallback)(e=>{let t=ev.get(e)??[];0!==t.length&&S(t,e)},[ev,S]),eF=(0,r.useCallback)(e=>{var t;let r;return r=[],(t={artistName:e,onRemoveArtistFromLibrary:eq,onEditArtistMetadata:eG,onAddArtistToPlaylist:eH}).onEditArtistMetadata&&r.push({id:"edit-metadata",label:"Edit artist metadata",onSelect:()=>t.onEditArtistMetadata(t.artistName)}),t.onAddArtistToPlaylist&&r.push({id:"add-to-playlist",label:"Add artist to playlist…",onSelect:()=>t.onAddArtistToPlaylist(t.artistName)}),r.push({id:"remove",label:"Remove artist from library",onSelect:()=>t.onRemoveArtistFromLibrary(t.artistName)}),r},[eq,eG,eH]),eQ=(e,r)=>0===e.length?(0,t.jsx)("p",{className:"px-2 py-3 text-sm text-zinc-500",children:r}):(0,t.jsx)("ul",{className:et,children:e.map(({track:e,stats:r})=>(0,t.jsxs)("li",{children:[(0,t.jsx)(y,{track:e,compact:d,onAdd:ef}),(0,t.jsx)("p",{className:"px-2 pb-2 text-[11px] tabular-nums text-zinc-500 dark:text-zinc-400",children:function(e){var t;if(!e)return"No plays yet";let r=[`${e.playCount} play${1===e.playCount?"":"s"}`,(0,I.default)(e.totalListenSec)];return e.skipCount>0&&r.push(`${e.skipCount} skip${1===e.skipCount?"":"s"}`),e.lastPlayedAt&&r.push(`last ${!(t=e.lastPlayedAt)?"Never":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",year:"numeric"}).format(new Date(t))}`),r.join(" - ")}(r)})]},e.id))}),eK=(e,r)=>0===e.length?(0,t.jsx)("p",{className:"px-2 py-3 text-sm text-zinc-500",children:r}):(0,t.jsx)("ul",{className:et,children:e.map(e=>(0,t.jsxs)("li",{className:`flex min-w-0 items-center justify-between rounded-lg ${er} text-sm hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsxs)("span",{className:"min-w-0",children:[(0,t.jsx)("span",{className:"block truncate font-medium text-zinc-900 dark:text-zinc-100",children:e.label}),e.detail?(0,t.jsx)("span",{className:"block truncate text-xs text-zinc-500",children:e.detail}):null]}),(0,t.jsxs)("span",{className:"shrink-0 text-right text-[11px] tabular-nums text-zinc-500",children:[e.playCount," play",1===e.playCount?"":"s",(0,t.jsx)("br",{}),(0,I.default)(e.totalListenSec)]})]},e.id))});return(0,t.jsxs)("section",{className:"flex h-full min-h-0 flex-1 flex-col overflow-hidden border-b border-zinc-200 bg-zinc-50/80 dark:border-zinc-800 dark:bg-zinc-900/30 lg:border-b-0 lg:border-r",children:[(0,t.jsxs)("div",{className:"shrink-0 space-y-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,t.jsx)("h2",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Library"}),(0,t.jsx)("input",{type:"search",value:R,onChange:e=>U(e.target.value),placeholder:"Artists, albums, folders, or song titles…",className:"w-full rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 shadow-sm outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100 dark:focus:border-accent-500/60","aria-label":"Search library"}),(0,t.jsx)(l,{source:"library",onSelect:U}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1",children:["artist","album","folder","favorites","playlists","history"].map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>ei(e),className:["cursor-pointer rounded-full px-3 py-1 text-xs font-medium capitalize transition",M===e?"bg-accent-500 text-zinc-950":"bg-zinc-200 text-zinc-700 hover:bg-zinc-300 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700"].join(" "),children:e},e))})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-auto px-2 py-2",children:0===a.length?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No library tracks yet. Configure folders in settings."}):ee?(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:"px-2 pb-2 text-xs text-zinc-500",children:eC.length>0?(0,t.jsxs)(t.Fragment,{children:[eC.join(" · "),ek.length>0?(0,t.jsxs)("span",{className:"text-zinc-400",children:[" ","· ",ek.length," unique track",1===ek.length?"":"s"," (add all)"]}):null]}):"No matches."}),eC.length>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",onClick:()=>ep(ek),disabled:0===ek.length,className:"mb-2 w-full rounded-lg border border-zinc-200 bg-white py-2 text-xs font-medium text-zinc-800 transition hover:bg-zinc-50 disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-200 dark:hover:bg-zinc-800",children:"Add all search results to queue"}),eg.artists.length>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"px-2 pt-2 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Artists"}),(0,t.jsx)("ul",{className:et,children:eg.artists.map(e=>(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>eI(e.name),className:`flex min-w-0 flex-1 items-center justify-between rounded-lg ${er} text-left text-sm text-zinc-800 transition hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100",children:e.name}),(0,t.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:e.tracks.length})]}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${e.name}`,items:eF(e.name)}),(0,t.jsx)(p,{filled:h(e.name),onPress:()=>v(e.name),label:h(e.name)?"Remove artist from favorites":"Add artist to favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(e.tracks),disabled:0===e.tracks.length,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e.name))})]}):null,eg.albums.length>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"px-2 pt-3 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Albums"}),(0,t.jsx)("ul",{className:et,children:eg.albums.map(e=>{let r=e.tracks[0];return(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>e$(e.key),className:`flex min-w-0 flex-1 items-center ${en} rounded-lg ${er} text-left transition hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)(f,{track:r}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col items-start",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e.album}),(0,t.jsx)("span",{className:"truncate text-xs text-zinc-500",children:e.artist}),(0,t.jsxs)("span",{className:"mt-0.5 text-xs text-zinc-400",children:[e.tracks.length," track",1===e.tracks.length?"":"s"]})]})]}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${e.album}`,items:eY(e.key)}),(0,t.jsx)(p,{filled:b(e.key),onPress:()=>z(e.key),label:b(e.key)?"Remove album from favorites":"Add album to favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(e.tracks),disabled:0===e.tracks.length,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e.key)})})]}):null,eg.folders.length>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"px-2 pt-3 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Folders"}),(0,t.jsx)("ul",{className:et,children:eg.folders.map(e=>(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>eD(e.rootId,e.path),className:`flex min-w-0 flex-1 flex-col items-start rounded-lg ${er} text-left text-sm transition hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100",children:e.path?`${e.rootName} / ${e.path.replace(/\//g," / ")}`:`${e.rootName} (library)`}),(0,t.jsxs)("span",{className:"mt-0.5 text-xs tabular-nums text-zinc-500",children:[e.tracks.length," tracks"]})]}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(e.tracks),disabled:0===e.tracks.length,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},`${e.rootId}\u0000${e.path}`))})]}):null,eg.songs.length>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"px-2 pt-3 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Songs"}),(0,t.jsx)("ul",{className:et,children:eg.songs.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(y,{track:e,compact:d,onAdd:ef})},e.id))})]}):null]}):null]}):"artist"===M?null===O?(0,t.jsx)("ul",{className:et,children:ec.map(e=>(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>B(e),className:`flex min-w-0 flex-1 items-center justify-between rounded-lg ${er} text-left text-sm text-zinc-800 transition hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"truncate font-medium",children:e}),(0,t.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:es.get(e)?.length??0})]}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${e}`,items:eF(e)}),(0,t.jsx)(p,{filled:h(e),onPress:()=>v(e),label:h(e)?"Remove artist from favorites":"Add artist to favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(es.get(e)??[]),disabled:(es.get(e)?.length??0)===0,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e))}):(0,t.jsxs)("div",{children:[(0,t.jsx)("button",{type:"button",onClick:()=>B(null),className:"mb-2 px-2 text-xs font-medium text-accent-700 hover:underline dark:text-accent-400",children:"← Artists"}),eu?(0,t.jsx)("div",{className:"mb-4 border-b border-zinc-200 px-2 pb-4 dark:border-zinc-800",children:(0,t.jsxs)("div",{className:"flex gap-4",children:[eu.sample?(0,t.jsx)(f,{track:eu.sample,className:"h-22 w-22 shrink-0 overflow-hidden rounded-lg ring-1 ring-zinc-200/80 dark:ring-zinc-700/80"}):null,(0,t.jsxs)("div",{className:"min-w-0 flex-1 py-0.5",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)("h3",{className:"text-lg font-semibold leading-tight text-zinc-900 dark:text-zinc-50",children:eu.name})}),O?(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,t.jsx)("button",{type:"button",onClick:()=>ep(es.get(O)??[]),disabled:(es.get(O)?.length??0)===0,className:"rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900",children:"Add all"}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${eu.name}`,items:eF(O)}),(0,t.jsx)(p,{filled:h(O),onPress:()=>v(O),label:h(O)?"Remove artist from favorites":"Add artist to favorites"})]}):null]}),(0,t.jsxs)("p",{className:"mt-2 text-xs tabular-nums text-zinc-500 dark:text-zinc-400",children:[eu.trackCount," track",1===eu.trackCount?"":"s",eu.albumCount>0?` \xb7 ${eu.albumCount} album${1===eu.albumCount?"":"s"}`:"",eu.totalSec>0?` \xb7 ${(0,k.formatDuration)(eu.totalSec)} total`:eu.trackCount>0?" · unknown total length":"",eu.withDurationCount>0&&eu.withDurationCount<eu.trackCount?(0,t.jsxs)("span",{className:"text-zinc-400",children:[" ","(",eu.withDurationCount," timed)"]}):null]}),eu.rootLabels.length>1?(0,t.jsxs)("p",{className:"mt-1.5 text-xs leading-snug text-zinc-500 dark:text-zinc-500",children:["Libraries: ",eu.rootLabels.join(" · ")]}):1===eu.rootLabels.length?(0,t.jsxs)("p",{className:"mt-1.5 text-xs text-zinc-500 dark:text-zinc-500",children:["Library: ",eu.rootLabels[0]]}):null]})]})}):null,(0,t.jsx)("ul",{className:et,children:(es.get(O)??[]).map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(y,{track:e,compact:d,onAdd:ef,showArtist:!1})},e.id))})]}):"album"===M?null===Y?(0,t.jsx)("ul",{className:et,children:eo.map(e=>{let[r,n]=e.split("\0"),a=el.get(e)?.length??0,i=el.get(e)?.[0];return(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>G(e),className:`flex min-w-0 flex-1 items-center ${en} rounded-lg ${er} text-left transition hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)(f,{track:i}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col items-start",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:r}),(0,t.jsx)("span",{className:"truncate text-xs text-zinc-500",children:n}),(0,t.jsxs)("span",{className:"mt-0.5 text-xs text-zinc-400",children:[a," track",1===a?"":"s"]})]})]}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${r}`,items:eY(e)}),(0,t.jsx)(p,{filled:b(e),onPress:()=>z(e),label:b(e)?"Remove album from favorites":"Add album to favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(el.get(e)??[]),disabled:0===a,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e)})}):(0,t.jsxs)("div",{children:[(0,t.jsx)("button",{type:"button",onClick:()=>G(null),className:"mb-2 px-2 text-xs font-medium text-accent-700 hover:underline dark:text-accent-400",children:"← Albums"}),ed?(0,t.jsx)("div",{className:"mb-4 border-b border-zinc-200 px-2 pb-4 dark:border-zinc-800",children:(0,t.jsxs)("div",{className:"flex gap-4",children:[(0,t.jsx)(f,{track:ed.sample,className:"h-22 w-22 shrink-0 overflow-hidden rounded-lg ring-1 ring-zinc-200/80 dark:ring-zinc-700/80"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 py-0.5",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold leading-tight text-zinc-900 dark:text-zinc-50",children:ed.title}),(0,t.jsx)("p",{className:"mt-1 text-sm text-zinc-600 dark:text-zinc-400",children:ed.artist})]}),Y?(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,t.jsx)("button",{type:"button",onClick:()=>ep(el.get(Y)??[]),disabled:(el.get(Y)?.length??0)===0,className:"rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900",children:"Add all"}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${ed.title}`,items:eY(Y)}),(0,t.jsx)(p,{filled:b(Y),onPress:()=>z(Y),label:b(Y)?"Remove album from favorites":"Add album to favorites"})]}):null]}),ed.multipleTrackArtists?(0,t.jsx)("p",{className:"mt-1 text-xs text-zinc-500 dark:text-zinc-500",children:"Track-level artists differ on this album"}):null,(0,t.jsxs)("p",{className:"mt-2 text-xs tabular-nums text-zinc-500 dark:text-zinc-400",children:[ed.trackCount," track",1===ed.trackCount?"":"s",ed.totalSec>0?` \xb7 ${(0,k.formatDuration)(ed.totalSec)} total`:ed.trackCount>0?" · unknown total length":"",ed.withDurationCount>0&&ed.withDurationCount<ed.trackCount?(0,t.jsxs)("span",{className:"text-zinc-400",children:[" ","(",ed.withDurationCount," timed)"]}):null]}),ed.rootLabels.length>1?(0,t.jsxs)("p",{className:"mt-1.5 text-xs leading-snug text-zinc-500 dark:text-zinc-500",children:["Libraries: ",ed.rootLabels.join(" · ")]}):1===ed.rootLabels.length?(0,t.jsxs)("p",{className:"mt-1.5 text-xs text-zinc-500 dark:text-zinc-500",children:["Library: ",ed.rootLabels[0]]}):null]})]})}):null,(0,t.jsx)("ul",{className:et,children:(el.get(Y)??[]).map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(y,{track:e,compact:d,onAdd:ef})},e.id))})]}):"history"===M?(0,t.jsxs)("div",{className:"space-y-5 px-1",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-2 px-1",children:[(0,t.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white px-3 py-2 dark:border-zinc-800 dark:bg-zinc-950/40",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-zinc-500",children:"Listened"}),(0,t.jsx)("p",{className:"mt-1 text-sm font-semibold tabular-nums text-zinc-900 dark:text-zinc-100",children:(0,I.default)(eE.totalListenSec)})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white px-3 py-2 dark:border-zinc-800 dark:bg-zinc-950/40",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-zinc-500",children:"Plays"}),(0,t.jsx)("p",{className:"mt-1 text-sm font-semibold tabular-nums text-zinc-900 dark:text-zinc-100",children:eE.playCount.toLocaleString()})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white px-3 py-2 dark:border-zinc-800 dark:bg-zinc-950/40",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-zinc-500",children:"Tracks heard"}),(0,t.jsx)("p",{className:"mt-1 text-sm font-semibold tabular-nums text-zinc-900 dark:text-zinc-100",children:eE.tracksHeard.toLocaleString()})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white px-3 py-2 dark:border-zinc-800 dark:bg-zinc-950/40",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-zinc-500",children:"Skips"}),(0,t.jsx)("p",{className:"mt-1 text-sm font-semibold tabular-nums text-zinc-900 dark:text-zinc-100",children:eE.skipCount.toLocaleString()})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Recently played"}),eQ(eA,"No listening history yet.")]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Top artists"}),eK(eR,"No artist stats yet.")]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Top albums"}),eK(eT,"No album stats yet.")]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2 px-2 pb-1",children:[(0,t.jsx)("p",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Rediscover"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(eP.map(e=>e.track)),disabled:0===eP.length,className:"rounded-full border border-zinc-200 bg-white px-2 py-1 text-[11px] font-medium disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900",children:"Add all"})]}),eQ(eP,"Tracks you played before will appear here.")]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Most played"}),eQ(eL,"No play counts yet.")]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Skipped tracks"}),eQ(eM,"No skipped tracks yet.")]})]}):"favorites"===M?(0,t.jsxs)("div",{className:"space-y-4 px-1",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-2 px-2",children:(0,t.jsxs)("button",{type:"button",onClick:()=>ep(eN),disabled:0===eN.length,className:"rounded-full border border-zinc-200 bg-white px-3 py-1.5 text-xs font-medium disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900",children:["Add all favorite tracks (",eN.length,")"]})}),0===ez.length&&0===ej.length&&0===ew.length?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No favorites yet. Use the star on artists, albums, or songs while browsing or searching."}):(0,t.jsxs)(t.Fragment,{children:[ez.length>0?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Artists"}),(0,t.jsx)("ul",{className:et,children:ez.map(e=>(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{ei("artist"),B(e)},className:`flex min-w-0 flex-1 items-center justify-between rounded-lg ${er} text-left text-sm text-zinc-800 transition hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100",children:e}),(0,t.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:ev.get(e)?.length??0})]}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${e}`,items:eF(e)}),(0,t.jsx)(p,{filled:!0,onPress:()=>v(e),label:"Remove artist from favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(ev.get(e)??[]),disabled:(ev.get(e)?.length??0)===0,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e))})]}):null,ej.length>0?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 pt-2 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Albums"}),(0,t.jsx)("ul",{className:et,children:ej.map(e=>{let[r,n]=e.split("\0"),a=ey.get(e)??[],i=a[0];return(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{ei("album"),G(e)},className:`flex min-w-0 flex-1 items-center ${en} rounded-lg ${er} text-left transition hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)(f,{track:i}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col items-start",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:r}),(0,t.jsx)("span",{className:"truncate text-xs text-zinc-500",children:n}),(0,t.jsxs)("span",{className:"mt-0.5 text-xs text-zinc-400",children:[a.length," track",1===a.length?"":"s"]})]})]}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${r}`,items:eY(e)}),(0,t.jsx)(p,{filled:!0,onPress:()=>z(e),label:"Remove album from favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(a),disabled:0===a.length,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e)})})]}):null,ew.length>0?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"px-2 pb-1 pt-2 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Songs"}),(0,t.jsx)("ul",{className:et,children:ew.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(y,{track:e,compact:d,onAdd:ef})},e.id))})]}):null]})]}):"playlists"===M?(0,t.jsx)(w,{compact:d,rowPadLgClass:er,ulSpaceYClass:et}):null===K?(0,t.jsx)("ul",{className:et,children:eb.map(e=>{let r=q(X,e.id);return(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{W(e.id),J("")},className:`flex min-w-0 flex-1 items-center justify-between rounded-lg ${er} text-left text-sm transition hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100",children:e.name}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-zinc-500",children:r.length})]}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(r),disabled:0===r.length,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e.id)})}):(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{if(""===Z)W(null);else{let e=Z.split("/").filter(Boolean);e.pop(),J(e.join("/"))}},className:"mb-2 px-2 text-xs font-medium text-accent-700 hover:underline dark:text-accent-400",children:["← ",""===Z?"Libraries":"Up"]}),(0,t.jsxs)("p",{className:"mb-2 truncate px-2 text-xs text-zinc-500",title:Z||"/",children:[e.find(e=>e.id===K)?.name??K,Z?` / ${Z.replace(/\//g," / ")}`:""]}),(0,t.jsxs)("div",{className:"mb-2 flex flex-wrap gap-2 px-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>ep(eh),disabled:0===eh.length,className:"rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900",children:"Add entire folder"}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(ex.files),disabled:0===ex.files.length,className:"rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900",children:"Add files in this level only"})]}),(0,t.jsxs)("ul",{className:et,children:[ex.folders.map(e=>{let r=""===Z?e:`${Z}/${e}`,n=_(em,r);return(0,t.jsxs)("li",{className:"group/row flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>J(r),className:`flex min-w-0 flex-1 items-center rounded-lg ${ea} text-left text-sm hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100",children:e}),(0,t.jsx)("span",{className:"ml-2 shrink-0 text-xs tabular-nums text-zinc-500",children:n.length})]}),(0,t.jsx)("button",{type:"button",onClick:()=>ep(n),disabled:0===n.length,className:"shrink-0 self-center rounded-full bg-accent-500/15 px-2 py-1 text-[11px] font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e)}),ex.files.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(y,{track:e,compact:d,onAdd:ef,showArtist:!1,indentClass:d?"pl-3":"pl-4"})},e.id))]})]})}),eO?(0,t.jsx)(L,{albumKey:eO.albumKey,albumTitle:eO.albumTitle,artistName:eO.artistName,trackCount:eO.trackCount,multipleTrackArtists:eO.multipleTrackArtists,onClose:()=>H(null),onSaved:e=>{G(t=>t===V?e:t),H(null)}}):null,eV?(0,t.jsx)(T,{artistName:eV.artistName,trackCount:eV.trackCount,albumCount:eV.albumCount,onClose:()=>Q(null),onRenamed:e=>{B(t=>t===F?e:t),Q(e)}}):null]})}function O(e){return e.hasMore?(0,t.jsx)("div",{className:"flex justify-center px-2 pt-3 pb-1",children:(0,t.jsx)("button",{type:"button",onClick:e.onLoadMore,disabled:e.loading,className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-4 py-2 text-xs font-medium text-zinc-700 transition hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:e.loading?"Loading…":"Load more"})}):null}var B=e.i(75878);function Y(e){let t=new Map;for(let r of e){let e=(0,A.artistDisplayName)(r.artist),n=t.get(e)??[];n.push(r),t.set(e,n)}for(let e of t.values())e.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}));return t}function G(e,t){let r=new Set(e.map(e=>e.id));for(let n of t)r.has(n.id)||(r.add(n.id),e.push(n))}let V=0,H=Promise.resolve();async function F(){H=H.then(async()=>{let e=Math.max(0,1100-(Date.now()-V));e>0&&await new Promise(t=>setTimeout(t,e)),V=Date.now()}),await H}let Q=new Set([503,502,429]);async function K(e,t){let r=e.toString(),n=null;for(let e=0;e<3;e+=1){let a;if(t?.aborted)throw new DOMException("Aborted","AbortError");await F();try{a=await fetch(r,{method:"GET",headers:{Accept:"application/json","User-Agent":"MuzicalUI/1.0 (https://github.com/f3rnox/muzical-ui)"},signal:t})}catch(e){if(t?.aborted||e instanceof Error&&"AbortError"===e.name||"object"==typeof e&&null!==e&&"name"in e&&"AbortError"===e.name)throw e;throw console.error("[MusicBrainz] request failed",{url:r,error:e}),e}if(a.ok)return await a.json();let i="";try{i=(await a.text()).slice(0,300)}catch{}if(n=Error(`MusicBrainz request failed (${a.status})`),console.error("[MusicBrainz] request failed",{url:r,status:a.status,statusText:a.statusText,body:i||void 0,attempt:e+1}),!Q.has(a.status)||e>=2)throw n;await new Promise(t=>setTimeout(t,1500*(e+1)))}throw n??Error("MusicBrainz request failed")}function W(e,t={},r){let n=e["artist-credit"]?.map(e=>e.name?.trim()||e.artist?.name?.trim()).filter(Boolean).join(" & ")??"Unknown artist",a=function(e,t){if(!e?.length)return;let r=t.album?.trim().toLowerCase();if(r){let t=e.find(e=>{let t=e.title?.trim().toLowerCase()??"",n=e["release-group"]?.title?.trim().toLowerCase()??"";return t===r||n===r});if(t)return t;let n=e.find(e=>{let t=e.title?.trim().toLowerCase()??"",n=e["release-group"]?.title?.trim().toLowerCase()??"";return t.includes(r)||n.includes(r)});if(n)return n}return e.find(e=>"Official"===e.status)??e[0]}(e.releases,t),i=r?.trim()||a?.["release-group"]?.title?.trim()||a?.title?.trim()||"Unknown album",s=e.title?.trim()||"Unknown title",l=`${s} ${n}`.trim();return{id:`musicbrainz:${e.id}`,title:s,artist:n,album:i,durationSec:e.length&&Number.isFinite(e.length)?Math.round(e.length/1e3):0,source:"musicbrainz",youtubeQuery:l}}async function Z(e,t,r,n){let a=new URL(`https://musicbrainz.org/ws/2/release/${e}`);a.searchParams.set("inc","recordings+artist-credits+media"),a.searchParams.set("fmt","json");let i=await K(a,n),s={artist:r,album:t},l=[],c=new Set;for(let e of i.media??[])for(let r of e.tracks??[]){let e=r.recording,n=e?.id;if(!n||c.has(n))continue;c.add(n);let a=W(e??{id:r.id,title:r.title,length:r.length,"artist-credit":i["artist-credit"]},s,t);a.title&&"Unknown title"!==a.title||(a.title=r.title?.trim()||a.title),r.length&&Number.isFinite(r.length)&&(a.durationSec=Math.round(r.length/1e3)),l.push(a)}return l}async function J(e,t,r,n=25,a=0){let i=e.trim();if(!i)return[];let s=new URL("https://musicbrainz.org/ws/2/recording");s.searchParams.set("query",i),s.searchParams.set("fmt","json"),s.searchParams.set("limit",String(n)),a>0&&s.searchParams.set("offset",String(a)),s.searchParams.set("inc","artist-credits+releases");let l=await K(s,r);return(Array.isArray(l.recordings)?l.recordings:[]).map(e=>W(e,t))}async function X(e,t,r=8,n=0){let a=e.trim();if(!a)return[];let i=new URL("https://musicbrainz.org/ws/2/release-group");i.searchParams.set("query",a),i.searchParams.set("fmt","json"),i.searchParams.set("limit",String(r)),n>0&&i.searchParams.set("offset",String(n));let s=await K(i,t);return Array.isArray(s["release-groups"])?s["release-groups"]:[]}function ee(e){return e.replace(/([+\-!(){}[\]^"~*?:\\/])/g,"\\$1")}function et(e,t){let r=t.album?.trim().toLowerCase()??"";return r?[...e].sort((e,t)=>{let n=e.title?.trim().toLowerCase()??"",a=t.title?.trim().toLowerCase()??"",i=n===r?2:+!!n.includes(r);return(a===r?2:+!!a.includes(r))-i}):[...e]}function er(e,t){let{queries:r,hints:n}=function(e){let t=e.trim();if(!t)return{queries:[],hints:{}};let r=t.split(/\s+/).filter(Boolean),n={};if(r.length>=2){let e=ee(r[0]),a=ee(r.slice(1).join(" "));n.artist=r[0],n.album=r.slice(1).join(" ");let i=ee(r[1]),s=[`artist:${e} AND release:${a}`,`artist:${e} AND release-group:${a}`,`artist:${e} AND releasegroup:${a}`];return 2===r.length&&s.push(`artist:${i} AND release:${e}`),s.push(`"${ee(t)}"`,t),{hints:n,queries:s}}let a=ee(r[0]);return{hints:{artist:r[0]},queries:[`artist:${a}`,t]}}(e),a="album"===t?r.slice(0,1):r;return{query:e,mode:t,hints:n,recordingQueries:a,recordingQueryIndex:0,recordingOffset:0,releaseGroupQuery:function(e,t){let r=e.trim();if(t.artist&&t.album){let e=ee(t.artist),r=ee(t.album);return`artist:${e} AND releasegroup:${r}`}return r}(e,n),releaseGroupOffset:0,releaseGroups:null,releaseGroupExpandIndex:0}}async function en(e,t,r="song",n){var a;let i=e.trim();if(!i)return{tracks:[],cursor:er("",r),hasMore:!1};let s=n??er(i,r),l=[];for(;l.length<20&&s.recordingQueryIndex<s.recordingQueries.length&&!t?.aborted;){let e=s.recordingQueries[s.recordingQueryIndex];if(!e)break;let r=await J(e,s.hints,t,25,s.recordingOffset);if(G(l,r),s=r.length<25?{...s,recordingQueryIndex:s.recordingQueryIndex+1,recordingOffset:0}:{...s,recordingOffset:s.recordingOffset+25},0===r.length&&s.recordingQueryIndex>=s.recordingQueries.length)break}if(l.length<20&&s.releaseGroupQuery.trim()){let e=s.releaseGroups;if(!e){let r=await X(s.releaseGroupQuery,t,10,s.releaseGroupOffset);e=et(r,s.hints),s={...s,releaseGroups:e,releaseGroupOffset:s.releaseGroupOffset+r.length}}let r=0;for(;l.length<20&&r<2&&s.releaseGroupExpandIndex<e.length&&!t?.aborted;){;let n=e[s.releaseGroupExpandIndex];s={...s,releaseGroupExpandIndex:s.releaseGroupExpandIndex+1},r+=1;let a=function(e){let t=e.releases??[],r=t.find(e=>"Official"===e.status);return r?.id??t[0]?.id??null}(n);if(!a)continue;let i=n["artist-credit"]?.map(e=>e.name?.trim()||e.artist?.name?.trim()).filter(Boolean).join(" & ")??"Unknown artist",c=n.title?.trim()||"Unknown album";G(l,await Z(a,c,i,t))}if(l.length<20&&s.releaseGroupExpandIndex>=e.length&&e.length>=10){let r=await X(s.releaseGroupQuery,t,10,s.releaseGroupOffset);if(r.length>0){let t=et([...e,...r],s.hints);s={...s,releaseGroups:t,releaseGroupOffset:s.releaseGroupOffset+r.length}}}}let c=(a=s).recordingQueryIndex<a.recordingQueries.length||!!a.releaseGroupQuery.trim()&&(null===a.releaseGroups||a.releaseGroupExpandIndex<a.releaseGroups.length);return{tracks:l,cursor:s,hasMore:c}}var ea=e.i(71569),ei=e.i(45461),es=e.i(62445);let el=["artist","album","song"];function ec(){let{libraryTracks:e,addToLibrary:a,addToQueue:s,compactLists:o,recordRecentBrowseSearch:d,beginYoutubePrefetch:u,endYoutubePrefetch:m}=(0,i.useLibrary)(),x=(0,n.useSearchParams)(),[h,b]=(0,r.useState)(""),[f,p]=(0,r.useState)([]),[g,k]=(0,r.useState)(!1),[v,y]=(0,r.useState)(!1),[z,j]=(0,r.useState)(!1),[w,N]=(0,r.useState)(null),[C,S]=(0,r.useState)(null),[E,L]=(0,r.useState)("song"),[M,P]=(0,r.useState)(null),[R,T]=(0,r.useState)(null),I=(0,r.useRef)(null),$=(0,r.useRef)(null),D=o?"space-y-0.25":"space-y-0.5",q=o?"px-2 py-2":"px-3 py-2.5",_=o?"gap-2":"gap-3",U=(0,r.useCallback)(t=>e.some(e=>e.id===t),[e]),V=(0,r.useCallback)(()=>{$.current&&(window.clearTimeout($.current),$.current=null),I.current&&(I.current.abort(),I.current=null),p([]),k(!1),y(!1),j(!1),N(null),S(null),P(null),T(null)},[]),H=(0,r.useCallback)(e=>{L(e),P(null),T(null)},[]),F=(0,r.useCallback)(e=>{(b(e),P(null),T(null),e.trim().length<3)?V():(k(!0),S(null))},[V]);c(x,F),(0,r.useEffect)(()=>{let e=h.trim();if(e.length<3)return;$.current&&(window.clearTimeout($.current),$.current=null),I.current&&(I.current.abort(),I.current=null);let t=new AbortController;return I.current=t,$.current=window.setTimeout(()=>{en(e,t.signal,E).then(t=>{p(t.tracks),N(t.cursor),j(t.hasMore),S(null),d("musicbrainz",e)}).catch(e=>{e instanceof Error&&"AbortError"===e.name||"object"==typeof e&&null!==e&&"name"in e&&"AbortError"===e.name||(S(e instanceof Error?e.message:"MusicBrainz search failed"),p([]),j(!1),N(null))}).finally(()=>k(!1))},300),()=>{$.current&&(window.clearTimeout($.current),$.current=null),I.current&&(I.current.abort(),I.current=null)}},[h,E,d]),(0,r.useEffect)(()=>{if((0,es.default)()||0===f.length)return;let e=(0,ea.default)(f).slice(0,12);if(0===e.length)return;let t=new AbortController,r=e.length;return u(r),(0,ei.default)(e,(e,t)=>{p(r=>r.map(r=>r.id===e?{...r,youtubeVideoId:t}:r))},{signal:t.signal}).finally(()=>{m(r)}),()=>{t.abort()}},[f,u,m]);let Q=(0,r.useCallback)(e=>s(e),[s]),K=(0,r.useCallback)(e=>a(e),[a]),W=(0,r.useCallback)(e=>{let t=e.filter(e=>!U(e.id));t.length>0&&a(t)},[a,U]),Z=(0,r.useCallback)(e=>{0!==e.length&&s(e)},[s]),J=(0,r.useCallback)(()=>{let e=h.trim();e.length<3||!w||v||g||(y(!0),S(null),en(e,new AbortController().signal,E,w).then(e=>{p(t=>{let r=[...t];return G(r,e.tracks),r}),N(e.cursor),j(e.hasMore)}).catch(e=>{e instanceof Error&&"AbortError"===e.name||S(e instanceof Error?e.message:"MusicBrainz search failed")}).finally(()=>y(!1)))},[h,E,w,v,g]),X=(0,r.useMemo)(()=>Y(f),[f]),ee=(0,r.useMemo)(()=>(function(e){let t=new Map;for(let r of e){let e=(0,A.albumCompositeKey)(r.album,(0,A.artistDisplayName)(r.artist)),n=t.get(e)??[];n.push(r),t.set(e,n)}for(let e of t.values())e.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}));return t})(f),[f]),et=(0,r.useMemo)(()=>[...X.keys()].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),[X]),er=(0,r.useMemo)(()=>[...ee.keys()].sort((e,t)=>{let[r,n]=e.split("\0"),[a,i]=t.split("\0"),s=r.localeCompare(a,void 0,{sensitivity:"base"});return 0!==s?s:n.localeCompare(i,void 0,{sensitivity:"base"})}),[ee]),ec=h.trim(),eo=ec.length>0&&ec.length<3,ed=f.length>0,eu=(e,r)=>(0,t.jsx)("ul",{className:D,children:e.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(B.default,{track:e,alreadySaved:U(e.id),compact:o,onQueue:Q,onSave:K,subtitle:r?.(e)})},e.id))});return(0,t.jsxs)("section",{className:"flex h-full min-h-0 flex-1 flex-col overflow-hidden border-b border-zinc-200 bg-zinc-50/80 dark:border-zinc-800 dark:bg-zinc-900/30 lg:border-b-0 lg:border-r",children:[(0,t.jsxs)("div",{className:"shrink-0 space-y-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"MusicBrainz"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-zinc-400",children:"Discover recordings via MusicBrainz; save to your library for playback later (streams via YouTube)."})]}),(0,t.jsx)("input",{type:"search",value:h,onChange:e=>F(e.target.value),placeholder:"Songs, artists, or releases…",className:"w-full rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 shadow-sm outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100 dark:focus:border-accent-500/60","aria-label":"Search MusicBrainz"}),(0,t.jsx)(l,{source:"musicbrainz",onSelect:F}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1",children:el.map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>H(e),className:["cursor-pointer rounded-full px-3 py-1 text-xs font-medium capitalize transition",E===e?"bg-accent-500 text-zinc-950":"bg-zinc-200 text-zinc-700 hover:bg-zinc-300 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700"].join(" "),children:e},e))})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-auto px-2 py-2",children:C?(0,t.jsx)("p",{className:"px-2 py-4 text-sm text-red-600 dark:text-red-400",role:"alert",children:C}):g?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Searching MusicBrainz…"}):eo?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Type at least 3 characters to search."}):0===ec.length?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Search MusicBrainz to find recordings to queue or save to your library."}):ed?(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 px-2 pb-2",children:[(0,t.jsxs)("p",{className:"text-xs text-zinc-500",children:[f.length," recording",1===f.length?"":"s","artist"===E&&et.length>0?` \xb7 ${et.length} artist${1===et.length?"":"s"}`:"","album"===E&&er.length>0?` \xb7 ${er.length} album${1===er.length?"":"s"}`:""]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-1",children:[(0,t.jsx)("button",{type:"button",onClick:()=>Z(f),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium text-zinc-700 transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:"Add all to queue"}),(0,t.jsx)("button",{type:"button",onClick:()=>W(f),disabled:f.every(e=>U(e.id)),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium text-zinc-700 transition hover:bg-zinc-50 disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:"Save all to library"})]})]}),(()=>{if("song"===E)return eu(f);if("artist"===E){if(null===M)return(0,t.jsx)("ul",{className:D,children:et.map(e=>{let r=X.get(e)?.length??0;return(0,t.jsxs)("li",{className:"flex items-center gap-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>P(e),className:`flex min-w-0 flex-1 cursor-pointer items-center justify-between rounded-lg ${q} text-left text-sm text-zinc-800 transition hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800/80`,children:[(0,t.jsx)("span",{className:"truncate font-medium",children:e}),(0,t.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:r})]}),(0,t.jsx)("button",{type:"button",onClick:()=>Z(X.get(e)??[]),disabled:0===r,className:"shrink-0 cursor-pointer self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e)})});let e=X.get(M)??[];return(0,t.jsxs)("div",{children:[(0,t.jsx)("button",{type:"button",onClick:()=>P(null),className:"mb-2 cursor-pointer px-2 text-xs font-medium text-accent-700 hover:underline dark:text-accent-400",children:"← Artists"}),(0,t.jsxs)("div",{className:"mb-2 flex flex-wrap gap-2 px-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>Z(e),disabled:0===e.length,className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium dark:border-zinc-700 dark:bg-zinc-900",children:"Add all"}),(0,t.jsx)("button",{type:"button",onClick:()=>W(e),disabled:e.every(e=>U(e.id)),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium dark:border-zinc-700 dark:bg-zinc-900",children:"Save all"})]}),eu(e,e=>e.album)]})}if(null===R)return(0,t.jsx)("ul",{className:D,children:er.map(e=>{let[r,n]=e.split("\0"),a=ee.get(e)?.length??0;return(0,t.jsxs)("li",{className:"flex items-center gap-1",children:[(0,t.jsx)("button",{type:"button",onClick:()=>T(e),className:`flex min-w-0 flex-1 cursor-pointer items-center ${_} rounded-lg ${q} text-left transition hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col items-start",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:r}),(0,t.jsx)("span",{className:"truncate text-xs text-zinc-500",children:n}),(0,t.jsxs)("span",{className:"mt-0.5 text-xs text-zinc-400",children:[a," track",1===a?"":"s"]})]})}),(0,t.jsx)("button",{type:"button",onClick:()=>Z(ee.get(e)??[]),disabled:0===a,className:"shrink-0 cursor-pointer self-center rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]},e)})});let e=ee.get(R)??[];return(0,t.jsxs)("div",{children:[(0,t.jsx)("button",{type:"button",onClick:()=>T(null),className:"mb-2 cursor-pointer px-2 text-xs font-medium text-accent-700 hover:underline dark:text-accent-400",children:"← Albums"}),(0,t.jsxs)("div",{className:"mb-2 flex flex-wrap gap-2 px-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>Z(e),disabled:0===e.length,className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium dark:border-zinc-700 dark:bg-zinc-900",children:"Add all"}),(0,t.jsx)("button",{type:"button",onClick:()=>W(e),disabled:e.every(e=>U(e.id)),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium dark:border-zinc-700 dark:bg-zinc-900",children:"Save all"})]}),eu(e,e=>e.artist)]})})(),(0,t.jsx)(O,{hasMore:z,loading:v,onLoadMore:J})]}):(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No MusicBrainz results for that query."})})]})}async function eo(e,t,r=20){let n=e.trim();if(!n)return[];let a=new URL("/api/youtube/search",window.location.origin);a.searchParams.set("q",n),a.searchParams.set("maxResults",String(Math.min(50,Math.max(1,r))));let i=await fetch(a.toString(),{signal:t});if(!i.ok)return[];let s=await i.json();return Array.isArray(s.videos)?s.videos.filter(e=>"string"==typeof e.videoId&&e.videoId.trim().length>0):[]}var ed=e.i(56784);function eu(e){return e.trim().toLowerCase()}var em=e.i(8998);let ex=new Map;var eh=e.i(65079),eb=e.i(95772),ef=e.i(32022);async function ep(e,t,r,n=em.YOUTUBE_SEARCH_PAGE_SIZE,a){let i=e.trim(),s=t.trim();if(!i||!s||(0,es.default)())return{videos:[]};let l=new URL("https://www.googleapis.com/youtube/v3/search");l.searchParams.set("part","snippet"),l.searchParams.set("type","video"),l.searchParams.set("maxResults",String(Math.min(50,Math.max(1,n)))),l.searchParams.set("videoEmbeddable","true"),l.searchParams.set("q",i),l.searchParams.set("key",s),a?.trim()&&l.searchParams.set("pageToken",a.trim()),await (0,ef.default)();let c=await fetch(l,{signal:r}),o=await c.json();if(!c.ok){let e=o.error?.message?.trim()??"";throw(o.error?.errors?.some(e=>"quotaExceeded"===e.reason)||(0,ed.default)(e))&&(0,eb.default)(),Error(e||"YouTube search failed")}let d=[],u=new Map;for(let e of o.items??[]){let t=e.id?.videoId?.trim();!t||u.has(t)||(d.push(t),u.set(t,{title:e.snippet?.title?.trim()||"Unknown title",channelTitle:e.snippet?.channelTitle?.trim()||"Unknown channel"}))}if(0===d.length)return{videos:[],nextPageToken:o.nextPageToken};let m=new URL("https://www.googleapis.com/youtube/v3/videos");m.searchParams.set("part","contentDetails,snippet"),m.searchParams.set("id",d.join(",")),m.searchParams.set("key",s),await (0,ef.default)();let x=await fetch(m,{signal:r}),h=await x.json();if(!x.ok){let e=h.error?.message?.trim()??"";throw(h.error?.errors?.some(e=>"quotaExceeded"===e.reason)||(0,ed.default)(e))&&(0,eb.default)(),Error(e||"YouTube video lookup failed")}let b=[],f=new Map(d.map((e,t)=>[e,t]));for(let e of[...h.items??[]].sort((e,t)=>(f.get(e.id??"")??0)-(f.get(t.id??"")??0))){let t=e.id?.trim();if(!t)continue;let r=u.get(t),n=e.snippet?.title?.trim()||r?.title||"Unknown title",a=e.snippet?.channelTitle?.trim()||r?.channelTitle||"Unknown channel",i=function(e){let t=e.trim();if(!t.startsWith("PT"))return 0;let r=t.match(/^PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$/);if(!r)return 0;let n=Number.parseInt(r[1]??"0",10),a=Number.parseInt(r[2]??"0",10),i=Number.parseInt(r[3]??"0",10);return Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(i)?3600*n+60*a+i:0}(e.contentDetails?.duration??"");b.push({videoId:t,title:n,channelTitle:a,durationSec:i})}return{videos:b,nextPageToken:o.nextPageToken}}function eg(e,t){let r=eu(e);r&&ex.set(r,{at:Date.now(),result:t})}function ek(e,t){let r=t.trim(),n=e.title.trim()||"Unknown title",a=e.channelTitle.trim()||"Unknown channel";return{id:`youtube:${e.videoId}`,title:n,artist:a,album:"YouTube",durationSec:e.durationSec>0?e.durationSec:0,source:"youtube",youtubeQuery:r||`${n} ${a}`.trim(),youtubeVideoId:e.videoId}}async function ev(e,t,r){let n=e.trim();if(!n)return{tracks:[],source:"scrape",hasMore:!1};let a=!r?.pageToken&&(r?.excludeVideoIds?.length??0)===0;if(a){let e=function(e){let t=eu(e);if(!t)return null;let r=ex.get(t);return r?Date.now()-r.at>em.YOUTUBE_SEARCH_CACHE_TTL_MS?(ex.delete(t),null):r.result:null}(n);if(e)return{tracks:e.tracks,source:e.source,nextPageToken:e.nextPageToken,hasMore:!!e.nextPageToken||e.tracks.length>=em.YOUTUBE_SEARCH_PAGE_SIZE}}let i=new Set(r?.excludeVideoIds??[]),s=(0,eh.default)().trim();if(s&&!(0,es.default)())try{let{videos:e,nextPageToken:l}=await ep(n,s,t,em.YOUTUBE_SEARCH_PAGE_SIZE,r?.pageToken),c={tracks:e.filter(e=>!i.has(e.videoId)).map(e=>ek(e,n)),source:"api",nextPageToken:l,hasMore:!!l};return a&&eg(n,{tracks:c.tracks,source:c.source,nextPageToken:c.nextPageToken}),c}catch(e){if(!(e instanceof Error&&(0,ed.default)(e.message)))throw e}let l=Math.min(50,i.size+em.YOUTUBE_SEARCH_PAGE_SIZE+5),c=(await eo(n,t,l)).filter(e=>!i.has(e.videoId)).slice(0,em.YOUTUBE_SEARCH_PAGE_SIZE),o={tracks:c.map(e=>ek(e,n)),source:"scrape",hasMore:c.length>=em.YOUTUBE_SEARCH_PAGE_SIZE};return a&&eg(n,{tracks:o.tracks,source:o.source}),o}var ey=e.i(28116);let ez={hasKey:!1,blocked:!1,ready:!1},ej=ez;function ew(){let e=(0,eh.default)().trim().length>0,t=(0,es.default)(),r=e&&!t;return ej.hasKey===e&&ej.blocked===t&&ej.ready===r?ej:ej={hasKey:e,blocked:t,ready:r}}function eN(e){let t=()=>e();return window.addEventListener("focus",t),window.addEventListener("storage",t),window.addEventListener(ey.YOUTUBE_API_KEY_CHANGED_EVENT,t),()=>{window.removeEventListener("focus",t),window.removeEventListener("storage",t),window.removeEventListener(ey.YOUTUBE_API_KEY_CHANGED_EVENT,t)}}function eC(){let e,s,{libraryTracks:o,addToLibrary:d,addToQueue:u,compactLists:m,recordRecentBrowseSearch:x}=(0,i.useLibrary)(),h=(0,n.useSearchParams)(),[b,f]=(0,r.useState)(""),[p,g]=(0,r.useState)([]),[k,v]=(0,r.useState)(!1),[y,z]=(0,r.useState)(!1),[j,w]=(0,r.useState)(!1),[N,C]=(0,r.useState)(null),[S,E]=(0,r.useState)(null),A=(0,r.useRef)(null),L=(0,r.useRef)(null),{checked:M,blocked:P,hasKey:R}=(e=(0,r.useSyncExternalStore)(()=>()=>{},()=>!0,()=>!1),s=(0,r.useSyncExternalStore)(eN,ew,()=>ez),(0,r.useMemo)(()=>({checked:e,...s}),[e,s])),[T,I]=(0,r.useState)(null),$=(0,r.useCallback)(e=>o.some(t=>t.id===e),[o]),D=(0,r.useCallback)(()=>{L.current&&(window.clearTimeout(L.current),L.current=null),A.current&&(A.current.abort(),A.current=null),g([]),v(!1),z(!1),w(!1),C(null),E(null),I(null)},[]),q=(0,r.useCallback)(e=>{if(f(e),e.trim().length<2)return void D();if(!M){E(null),g([]);return}v(!0),E(null)},[M,D]);c(h,q),(0,r.useEffect)(()=>{let e=b.trim();if(e.length<2||!M)return;L.current&&(window.clearTimeout(L.current),L.current=null),A.current&&(A.current.abort(),A.current=null);let t=new AbortController;return A.current=t,L.current=window.setTimeout(()=>{v(!0),ev(e,t.signal).then(t=>{g(t.tracks),I(t.source),C(t.nextPageToken??null),w(t.hasMore),E(null),x("youtube",e)}).catch(e=>{e instanceof Error&&"AbortError"===e.name||"object"==typeof e&&null!==e&&"name"in e&&"AbortError"===e.name||(I(null),E(e instanceof Error?e.message:"YouTube search failed"),g([]),w(!1),C(null))}).finally(()=>v(!1))},em.YOUTUBE_SEARCH_DEBOUNCE_MS),()=>{L.current&&(window.clearTimeout(L.current),L.current=null),A.current&&(A.current.abort(),A.current=null)}},[b,M,x]);let _=(0,r.useCallback)(e=>u(e),[u]),U=(0,r.useCallback)(e=>d(e),[d]),Y=(0,r.useCallback)(e=>{let t=e.filter(e=>!$(e.id));t.length>0&&d(t)},[d,$]),G=(0,r.useCallback)(e=>{0!==e.length&&u(e)},[u]),V=(0,r.useCallback)(()=>{let e=b.trim();e.length<2||y||k||!M||!j||(z(!0),E(null),ev(e,void 0,{pageToken:N??void 0,excludeVideoIds:p.map(e=>e.youtubeVideoId?.trim()).filter(e=>!!e)}).then(e=>{g(t=>{let r=new Set(t.map(e=>e.id)),n=[...t];for(let t of e.tracks)r.has(t.id)||(r.add(t.id),n.push(t));return n}),C(e.nextPageToken??null),w(e.hasMore),e.source&&I(e.source)}).catch(e=>{E(e instanceof Error?e.message:"YouTube search failed")}).finally(()=>z(!1)))},[b,y,k,M,j,N,p]),H=b.trim(),F=H.length>0&&H.length<2,Q=p.length>0;return(0,t.jsxs)("section",{className:"flex h-full min-h-0 flex-1 flex-col overflow-hidden border-b border-zinc-200 bg-zinc-50/80 dark:border-zinc-800 dark:bg-zinc-900/30 lg:border-b-0 lg:border-r",children:[(0,t.jsxs)("div",{className:"shrink-0 space-y-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"YouTube"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-zinc-400",children:["Search YouTube and add videos to your queue or library. A Data API key in"," ",(0,t.jsx)(a.default,{href:"/settings/youtube",className:"font-medium text-accent-700 hover:underline dark:text-accent-400",children:"Settings → YouTube"})," ","improves results; if quota runs out, search falls back automatically."]})]}),(0,t.jsx)("input",{type:"search",value:b,onChange:e=>q(e.target.value),placeholder:"Search YouTube…",disabled:!M,className:"w-full rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 shadow-sm outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100 dark:focus:border-accent-500/60","aria-label":"Search YouTube"}),(0,t.jsx)(l,{source:"youtube",onSelect:q})]}),(0,t.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto px-2 py-2",children:[M&&S?(0,t.jsx)("p",{className:"px-2 py-4 text-sm text-red-600 dark:text-red-400",role:"alert",children:S}):null,M&&!R&&"scrape"===T&&(P||H.length>=2)?(0,t.jsxs)("p",{className:"px-2 pb-2 text-center text-xs text-zinc-500",children:["Using fallback search (API quota exceeded or unavailable). Durations may be missing.",P?(0,t.jsxs)(t.Fragment,{children:[" ","Save your key again in"," ",(0,t.jsx)(a.default,{href:"/settings/youtube",className:"font-medium text-accent-700 hover:underline dark:text-accent-400",children:"Settings → YouTube"})," ","to retry the Data API."]}):null]}):null,M&&k?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Searching YouTube…"}):null,M&&F?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Type at least 2 characters to search."}):null,M&&0===H.length?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Search YouTube to find videos to queue or save to your library."}):null,!M||k||!(H.length>=2)||Q||S?null:(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No YouTube results for that query."}),M&&Q?(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 px-2 pb-2",children:[(0,t.jsxs)("p",{className:"text-xs text-zinc-500",children:[p.length," video",1===p.length?"":"s"]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-1",children:[(0,t.jsx)("button",{type:"button",onClick:()=>G(p),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium text-zinc-700 transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:"Add all to queue"}),(0,t.jsx)("button",{type:"button",onClick:()=>Y(p),disabled:p.every(e=>$(e.id)),className:"cursor-pointer rounded-full border border-zinc-200 bg-white px-2 py-1 text-xs font-medium text-zinc-700 transition hover:bg-zinc-50 disabled:opacity-40 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:"Save all to library"})]})]}),(0,t.jsx)("ul",{className:m?"space-y-0.25":"space-y-0.5",children:p.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(B.default,{track:e,alreadySaved:$(e.id),compact:m,onQueue:_,onSave:U,subtitle:e.artist})},e.id))}),(0,t.jsx)(O,{hasMore:j,loading:y,onLoadMore:V})]}):null]})]})}function eS(e){return"musicbrainz"===e||"youtube"===e?e:"library"}var eE=e.i(841);function eA(){let e,a,i,s,l=(0,n.useSearchParams)();e=(0,n.useRouter)(),a=(0,n.usePathname)(),i=(0,n.useSearchParams)(),s=(0,r.useRef)(!1),(0,r.useEffect)(()=>{if(s.current||(s.current=!0,i.has("view")))return;let t=(0,eE.default)();if("library"===t)return;let r=new URLSearchParams(i.toString());r.set("view",t);let n=r.toString();e.replace(n?`${a}?${n}`:a,{scroll:!1})},[a,e,i]);let c=eS(l.get("view"));return(0,t.jsx)("div",{className:"flex h-full min-h-0 flex-1 flex-col overflow-hidden",children:"library"===c?(0,t.jsx)(U,{}):"musicbrainz"===c?(0,t.jsx)(ec,{}):(0,t.jsx)(eC,{})})}let eL=["library","musicbrainz","youtube"];function eM(){let e=(0,n.useRouter)(),a=(0,n.usePathname)(),i=(0,n.useSearchParams)(),s=eS(i.get("view")),l=(0,r.useCallback)(t=>{let r=new URLSearchParams(i.toString());"library"===t?r.delete("view"):r.set("view",t);let n=r.toString();e.replace(n?`${a}?${n}`:a,{scroll:!1})},[a,e,i]);return(0,t.jsx)("div",{className:"flex items-center gap-1",role:"tablist","aria-label":"Browse source",children:eL.map(e=>(0,t.jsx)("button",{type:"button",role:"tab","aria-selected":s===e,onClick:()=>l(e),className:["cursor-pointer rounded-full px-3 py-1.5 text-xs font-medium transition",s===e?"bg-accent-500 text-zinc-950":"bg-zinc-200 text-zinc-700 hover:bg-zinc-300 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700"].join(" "),children:"musicbrainz"===e?"MusicBrainz":"youtube"===e?"YouTube":"Library"},e))})}let eP=(0,r.forwardRef)(function(e,n){let a=(0,r.useRef)(null),i=(0,r.useRef)(null),s=(0,r.useRef)(e.isPlaying),l=(0,r.useRef)(e.onReady),c=(0,r.useRef)(e.onEnded),o=(0,r.useRef)(e.onError),d=(0,r.useRef)(e.onDuration);return(0,r.useLayoutEffect)(()=>{s.current=e.isPlaying},[e.isPlaying]),(0,r.useLayoutEffect)(()=>{l.current=e.onReady,c.current=e.onEnded,o.current=e.onError,d.current=e.onDuration},[e.onDuration,e.onEnded,e.onError,e.onReady]),(0,r.useImperativeHandle)(n,()=>({seekTo(e){let t=i.current;if(t)try{t.seekTo(e,!0)}catch{}},getCurrentTime(){try{let e=i.current?.getCurrentTime();return Number.isFinite(e)&&e>=0?e:0}catch{return 0}},getDuration(){try{let e=i.current?.getDuration();return Number.isFinite(e)&&e>0?e:0}catch{return 0}}})),(0,r.useEffect)(()=>{let t=e.videoId?.trim();if(!t){if(i.current){try{i.current.destroy()}catch{}i.current=null}return}let r=e=>{try{let t=e.getDuration();Number.isFinite(t)&&t>0&&d.current?.(t)}catch{}},n=()=>{if(!window.YT?.Player||!a.current)return;let d=i.current;if(d){try{d.loadVideoById(t),d.setVolume(Math.round(100*e.volume)),r(d),s.current?d.playVideo():d.pauseVideo()}catch{try{d.destroy()}catch{}i.current=null,n()}return}i.current=new window.YT.Player(a.current,{height:"200",width:"200",videoId:t,playerVars:{autoplay:+!!s.current,controls:0,disablekb:1,fs:0,rel:0,modestbranding:1,iv_load_policy:3,origin:window.location.origin},events:{onReady:t=>{try{t.target.setVolume(Math.round(100*e.volume)),r(t.target)}catch{}if(l.current?.(),s.current)try{t.target.playVideo()}catch{}},onStateChange:e=>{let t=window.YT;if(t){if(e.data===t.PlayerState.ENDED)return void c.current?.();if(s.current&&(e.data===t.PlayerState.CUED||e.data===t.PlayerState.PAUSED))try{e.target.playVideo()}catch{}e.data===t.PlayerState.PLAYING&&r(e.target)}},onError:()=>{o.current?.("YouTube playback failed for this track.")}}})};if(window.YT?.Player)n();else{if(!document.getElementById("youtube-iframe-api")){let e=document.createElement("script");e.id="youtube-iframe-api",e.src="https://www.youtube.com/iframe_api",e.async=!0,document.body.appendChild(e)}let e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{n(),"function"==typeof e&&e()}}return()=>{if(i.current){try{i.current.destroy()}catch{}i.current=null}}},[e.videoId,e.volume]),(0,r.useEffect)(()=>{let t=i.current;if(t&&e.videoId?.trim())try{e.isPlaying?t.playVideo():t.pauseVideo()}catch{}},[e.isPlaying,e.videoId]),(0,r.useEffect)(()=>{let t=i.current;if(t&&e.videoId?.trim())try{t.setVolume(Math.round(100*e.volume))}catch{}},[e.volume,e.videoId]),(0,t.jsx)("div",{ref:a,className:"pointer-events-none fixed top-0 left-[-9999px] h-[200px] w-[200px] overflow-hidden opacity-0","aria-hidden":!0,tabIndex:-1})});var eR=e.i(19828);function eT(e){let r=(0,eR.normalizeEqualizerGainsDb)(e.gainsDb);return(0,t.jsxs)("div",{className:"border-t border-zinc-200 pt-3 dark:border-zinc-800",children:[(0,t.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-3",children:[(0,t.jsx)("h2",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Equalizer"}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("button",{type:"button",onClick:e.onReset,className:"rounded-md border border-zinc-200 bg-white px-2 py-1 text-[11px] font-medium text-zinc-600 transition hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:border-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-100",children:"Reset"}),(0,t.jsx)("button",{type:"button",onClick:e.onClose,"aria-label":"Close equalizer",className:"flex h-7 w-7 items-center justify-center rounded-md border border-zinc-200 bg-white text-zinc-500 transition hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:border-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-100",children:(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:"h-4 w-4",children:[(0,t.jsx)("path",{d:"M18 6 6 18"}),(0,t.jsx)("path",{d:"m6 6 12 12"})]})})]})]}),(0,t.jsx)("div",{className:"overflow-x-auto pb-1",children:(0,t.jsx)("div",{className:"grid min-w-[252px] grid-cols-10 gap-1",children:eR.EQUALIZER_BANDS_HZ.map((n,a)=>{let i=r[a]??0;return(0,t.jsxs)("label",{className:"flex min-w-0 flex-col items-center gap-1",children:[(0,t.jsx)("span",{className:"text-[10px] leading-none text-zinc-500",children:n>=1e3?`${n/1e3}k`:String(n)}),(0,t.jsx)("input",{type:"range",min:eR.EQUALIZER_MIN_GAIN_DB,max:eR.EQUALIZER_MAX_GAIN_DB,step:1,value:i,onChange:t=>e.onBandChange(a,Number(t.target.value)),className:"h-24 w-6 cursor-pointer accent-accent-500",style:{writingMode:"vertical-lr",direction:"rtl"},"aria-label":`${n} Hz equalizer gain`}),(0,t.jsx)("span",{className:"w-full text-center text-[10px] leading-none tabular-nums text-zinc-500",children:i>0?`+${i}`:String(i)})]},n)})})})]})}var eI=e.i(20498),e$=e.i(24315),eD=e.i(53589);let eq=new WeakMap;function e_(e,t){let r=(0,eR.normalizeEqualizerGainsDb)(t);e.filters.forEach((t,n)=>{t.gain.setTargetAtTime(r[n]??0,e.context.currentTime,.01)})}function eU(e){if(!e.connected){e.source.connect(e.filters[0]);for(let t=0;t<e.filters.length-1;t+=1)e.filters[t].connect(e.filters[t+1]);e.filters[e.filters.length-1].connect(e.context.destination),e.connected=!0}}var eO=e.i(62474);function eB(e){let{"aria-label":n,onSessionStart:a,onSessionMove:i,onSessionEnd:s}=e,l=(0,r.useCallback)(e=>{e.preventDefault();let t=e.currentTarget,r=e.clientX;a(),t.setPointerCapture(e.pointerId);let n=e=>{i(e.clientX-r)},l=e=>{try{t.releasePointerCapture(e.pointerId)}catch{}window.removeEventListener("pointermove",n),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l),s()};window.addEventListener("pointermove",n),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l)},[s,i,a]);return(0,t.jsxs)("div",{role:"separator","aria-orientation":"vertical","aria-label":n,tabIndex:0,onPointerDown:l,className:"group relative z-10 flex w-0 shrink-0 cursor-col-resize justify-center outline-none max-lg:hidden",children:[(0,t.jsx)("div",{className:"absolute top-0 bottom-0 left-1/2 w-3 -translate-x-1/2 bg-transparent transition-colors group-hover:bg-accent-500/15 group-active:bg-accent-500/25","aria-hidden":!0}),(0,t.jsx)("div",{className:"pointer-events-none absolute top-0 bottom-0 left-1/2 w-px -translate-x-1/2 bg-zinc-200 dark:bg-zinc-700","aria-hidden":!0})]})}function eY(){return(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col items-center justify-center gap-3 px-4 py-12",role:"status","aria-live":"polite","aria-label":"Loading queue",children:[(0,t.jsx)("span",{className:"h-8 w-8 animate-spin rounded-full border-2 border-zinc-300 border-t-accent-500 dark:border-zinc-600 dark:border-t-accent-400","aria-hidden":!0}),(0,t.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:"Loading queue…"})]})}function eG(e){var r,n;let i,s="youtube"===(r=e.entry.source)?"YouTube":"musicbrainz"===r?"MusicBrainz":"Library";return(0,t.jsxs)(a.default,{href:(n=e.entry,i=new URLSearchParams,"youtube"===n.source?i.set("view","youtube"):"musicbrainz"===n.source&&i.set("view","musicbrainz"),i.set("q",n.query),`/?${i.toString()}`),scroll:!1,className:"inline-flex max-w-full min-w-0 items-center gap-2 rounded-full border border-zinc-200 bg-white px-3 py-1.5 text-left text-xs shadow-sm transition hover:border-accent-400/50 hover:bg-accent-50/50 dark:border-zinc-800 dark:bg-zinc-950/40 dark:hover:border-accent-500/30 dark:hover:bg-accent-950/20",children:[(0,t.jsx)("span",{className:"shrink-0 font-medium uppercase tracking-wider text-zinc-500",children:s}),(0,t.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100",children:e.entry.query})]})}function eV(e){return e.visible?(0,t.jsxs)("div",{role:"status","aria-live":"polite","aria-busy":"true",className:"pointer-events-none fixed bottom-24 right-4 z-50 w-[min(100vw-2rem,22rem)] rounded-xl border border-zinc-200/90 bg-white/95 p-4 shadow-lg shadow-zinc-900/10 backdrop-blur-sm dark:border-zinc-700/80 dark:bg-zinc-900/95 dark:shadow-black/40",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"Resolving stream…"}),e.trackTitle?(0,t.jsx)("p",{className:"mt-1 truncate text-xs text-zinc-600 dark:text-zinc-400",children:e.trackTitle}):null,(0,t.jsx)("div",{className:"mt-3 h-1 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:(0,t.jsx)("div",{className:"h-full w-1/3 animate-pulse rounded-full bg-accent-500 dark:bg-accent-400"})})]}):null}var eH=e.i(35191),eF=e.i(63080),eQ=e.i(50845),eK=e.i(74178);function eW({track:e,onClose:n}){let[a,i]=(0,r.useState)(""),[s,l]=(0,r.useState)(!1),{storedApiKey:c}=function(){let[e,t]=(0,r.useState)("");return(0,r.useEffect)(()=>{t((0,eQ.default)())},[]),{storedApiKey:e,writeStoredApiKey:e=>{(0,eK.default)(e),t(e)}}}();return(0,r.useEffect)(()=>{e&&c?(async()=>{l(!0);try{let t=await fetch(`/api/genius/lyrics?title=${e.title}&artist=${e.artist}&apiKey=${c}`),r=await t.json();t.ok?i(r.lyrics):i("Error fetching lyrics.")}catch(e){console.error("Error fetching lyrics:",e),i("Error fetching lyrics.")}l(!1)})():i("")},[e,c]),(0,t.jsxs)("div",{className:"flex h-full flex-col min-h-0 bg-white dark:bg-zinc-950/50",children:[(0,t.jsxs)("div",{className:"flex h-11 shrink-0 items-center justify-between gap-2 border-b border-zinc-200 bg-white/80 px-4 dark:border-zinc-800 dark:bg-zinc-950/80",children:[(0,t.jsx)("h2",{className:"text-xs font-medium uppercase leading-none tracking-wider text-zinc-500",children:"Lyrics"}),(0,t.jsx)("button",{type:"button",onClick:n,className:"flex h-7 w-7 items-center justify-center rounded-lg text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-700 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:(0,t.jsx)(eJ,{className:"h-5 w-5"})})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-auto p-4 lg:p-6",children:c?e?s?(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:"Loading lyrics..."}):(0,t.jsx)(eZ,{lyrics:a}):(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:"Play a track to see its lyrics."}):(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:"Please configure your Genius API key in the settings to view lyrics."})})]})}function eZ({lyrics:e}){let r=e.split("\n"),n=[],a={header:null,lines:[]};for(let e of r){let t=e.trim();/^\[.+\]$/.test(t)?((null!==a.header||a.lines.length>0)&&n.push(a),a={header:t,lines:[]}):a.lines.push(t)}return(null!==a.header||a.lines.length>0)&&n.push(a),(0,t.jsx)("div",{className:"space-y-5",children:n.map((e,r)=>(0,t.jsxs)("div",{className:"space-y-1",children:[e.header&&(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-widest text-zinc-400 dark:text-zinc-500",children:e.header.slice(1,-1)}),(0,t.jsx)("div",{className:"text-[15px] leading-loose text-zinc-800 dark:text-zinc-200",children:e.lines.map((e,n)=>""===e?(0,t.jsx)("div",{className:"h-2"},`blank-${r}-${n}`):(0,t.jsx)("p",{children:e},`${r}-${n}-${e.slice(0,10)}`))})]},`${e.header??"intro"}-${r}`))})}function eJ(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:e.className,children:[(0,t.jsx)("path",{d:"M18 6 6 18"}),(0,t.jsx)("path",{d:"m6 6 12 12"})]})}let eX="muzical.panelWidth.library",e0="muzical.panelWidth.queue";function e1(e,t,r){return Math.min(r,Math.max(t,e))}function e2(e,t){let r=Number.parseInt(window.localStorage.getItem(e)??"",10);return Number.isFinite(r)?r:t}function e5(e,t,r){if(e<=0)return{libraryPx:t,queuePx:r};let n=Math.max(720,e-350),a=e1(t,300,960),i=Math.max(420,r);if(a+i>n){let e=a+i-n,t=Math.min(e,a-300);a-=t;let r=e-t,s=Math.min(r,i-420);i-=s,(r-=s)>0&&(a=Math.max(300,a-r))}return{libraryPx:a,queuePx:i}}function e4(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M8 5v14l11-7L8 5z"})})}function e3(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M6 5h4v14H6V5zm8 0h4v14h-4V5z"})})}function e8(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M6 6h2v12H6V6zm3.5 6 8.5 6V6l-8.5 6z"})})}function e9(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M16 18h2V6h-2v12zM6 18l8.5-6L6 6v12z"})})}function e6(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M3 10v4h4l5 5V5L7 10H3zm13.5 2A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"})})}function e7(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M4 6h16v2H4V6zm0 5h16v2H4v-2zm0 5h10v2H4v-2zm12 1v6l5-3-5-3z"})})}function te(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:e.className,children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,t.jsx)("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})]})}function tt(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:[e.className,e.dimmed?"opacity-40":""].filter(Boolean).join(" "),children:[(0,t.jsx)("path",{d:"M17 1l4 4-4 4"}),(0,t.jsx)("path",{d:"M3 11V9a4 4 0 0 1 4-4h14"}),(0,t.jsx)("path",{d:"M7 23l-4-4 4-4"}),(0,t.jsx)("path",{d:"M21 13v2a4 4 0 0 1-4 4H3"})]})}function tr(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"M16 3h5v5M4 20L21 3M21 16v5h-5M15 15l6 6M4 4l5 5",strokeLinecap:"round",strokeLinejoin:"round"})})}function tn(e){return(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:e.className,children:(0,t.jsx)("path",{d:"m9 18 6-6-6-6"})})}function ta(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:e.className,children:[(0,t.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,t.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,t.jsx)("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),(0,t.jsx)("line",{x1:"16",y1:"17",x2:"8",y2:"17"}),(0,t.jsx)("polyline",{points:"10 9 9 9 8 9"})]})}function ti(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:e.className,children:[(0,t.jsx)("line",{x1:"4",y1:"21",x2:"4",y2:"14"}),(0,t.jsx)("line",{x1:"4",y1:"10",x2:"4",y2:"3"}),(0,t.jsx)("line",{x1:"12",y1:"21",x2:"12",y2:"12"}),(0,t.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"3"}),(0,t.jsx)("line",{x1:"20",y1:"21",x2:"20",y2:"16"}),(0,t.jsx)("line",{x1:"20",y1:"12",x2:"20",y2:"3"}),(0,t.jsx)("line",{x1:"2",y1:"14",x2:"6",y2:"14"}),(0,t.jsx)("line",{x1:"10",y1:"8",x2:"14",y2:"8"}),(0,t.jsx)("line",{x1:"18",y1:"16",x2:"22",y2:"16"})]})}function ts(){let e,n,s,{queue:l,libraryTracks:c,isScanning:o,youtubePrefetchActive:d,youtubePrefetchVideoCount:u,resolveFileForTrack:m,bumpTrackDuration:h,removeFromQueue:y,clearQueue:z,compactLists:j,reorderQueueItems:w,recentlyPlayedTrackIds:N,listeningStats:C,recentBrowseSearches:S,recordTrackPlaybackStarted:E,recordTrackPlaybackProgress:L,recordTrackPlaybackCompleted:M,recordTrackSkipped:P,isFavoriteSong:R,toggleFavoriteTrack:T,addToQueue:I,addToLibrary:$,removeFromLibrary:D,openTrackDetails:q,openRelatedSongs:_,downloadTrack:U,favoriteSongIds:O,favoriteArtistNames:B,favoriteAlbumKeys:G,isFavoriteArtist:V,isFavoriteAlbum:H,toggleFavoriteArtist:F,toggleFavoriteAlbum:Q,playbackRestore:K,consumePlaybackRestore:W,playNowRequest:Z,consumePlayNowRequest:J,reportPlayback:X,isQueueReady:ee,patchTrackById:et,openAddToPlaylist:er}=(0,i.useLibrary)(),{preferences:en,setRepeatMode:ea,setShuffle:ei,setPlaybackRate:es,setVolume:el,setEqualizerBandGain:ec,resetEqualizer:eo}=(0,eI.usePlaybackPreferences)(),{repeatMode:ed,shuffle:eu,playbackRate:em,autoAdvanceOnEnd:ex,seekStepSmallSec:eh,seekStepLargeSec:eb,rememberVolume:ef,equalizerGainsDb:ep}=en,[eg,ek]=(0,r.useState)(null),[ev,ey]=(0,r.useState)(!1),[ez,ej]=(0,r.useState)(0),[ew,eN]=(0,r.useState)(0),[eC,eS]=(0,r.useState)(null),[eE,eL]=(0,r.useState)(null),[eQ,eK]=(0,r.useState)(!1),[eZ,eJ]=(0,r.useState)(null),[ts,tl]=(0,r.useState)(!1),[tc,to]=(0,r.useState)(440),[td,tu]=(0,r.useState)(300),[tm,tx]=(0,r.useState)(!1),[th,tb]=(0,r.useState)(!1),tf=ef?en.volume:eC??e$.DEFAULT_PLAYBACK_VOLUME,tp=(0,r.useRef)(null),tg=(0,r.useRef)([]),tk=(0,r.useRef)(null),tv=(0,r.useRef)(null),ty=(0,r.useRef)(0),tz=(0,r.useRef)(null),tj=(0,r.useRef)(null),tw=(0,r.useRef)(0),tN=(0,r.useRef)(null),tC=(0,r.useRef)(0),tS=(0,r.useRef)(440),tE=(0,r.useRef)(300),[tA,tL]=(0,r.useState)(null),[tM,tP]=(0,r.useState)(null),[tR,tT]=(0,r.useState)(!0),tI=(0,r.useRef)(null),t$=(0,r.useRef)(null),tD=(0,r.useRef)(null),tq=(0,r.useRef)(null),t_=(0,r.useRef)(null),tU=(0,r.useRef)(ev),tO=(0,r.useRef)(em),tB=(e=(0,r.useRef)(null),n=(0,r.useRef)(ep),(0,r.useEffect)(()=>{n.current=ep,e.current&&e_(e.current,ep)},[ep]),s=(0,r.useCallback)(async()=>{let t=t$.current;if(!t)return;let r=e.current??eq.get(t)??null;if(!r){try{r=function(e,t){let r=window.AudioContext??window.webkitAudioContext??null;if(!r)return null;let n=new r,a=n.createMediaElementSource(e),i=eR.EQUALIZER_BANDS_HZ.map((e,t)=>{let r=n.createBiquadFilter();return r.type=0===t?"lowshelf":t===eR.EQUALIZER_BANDS_HZ.length-1?"highshelf":"peaking",r.frequency.value=e,r.Q.value=1,r}),s={context:n,source:a,filters:i,connected:!1};return eU(s),e_(s,t),s}(t,n.current)}catch(e){console.warn("Equalizer could not attach to the audio element.",e);return}if(!r)return;eq.set(t,r),e.current=r}eU(r),e_(r,n.current),"suspended"===r.context.state&&await r.context.resume()},[t$]),(0,r.useEffect)(()=>()=>{let t=e.current;t&&(t.source.disconnect(),t.filters.forEach(e=>e.disconnect()),t.connected=!1)},[]),s),tY=(0,r.useCallback)(e=>{(async()=>{await tB(),await e.play()})().catch(e=>{eL(e instanceof Error?e.message:"Playback failed"),ey(!1)})},[tB]);(0,r.useLayoutEffect)(()=>{tU.current=ev},[ev]),(0,r.useLayoutEffect)(()=>{tO.current=em},[em]),(0,r.useLayoutEffect)(()=>{tS.current=tc,tE.current=td},[tc,td]),(0,r.useEffect)(()=>{queueMicrotask(()=>{to(e2(eX,440)),tu(e2(e0,300))})},[]),(0,r.useEffect)(()=>{eu||(tg.current=[])},[eu]),(0,r.useLayoutEffect)(()=>{let e=window.matchMedia("(min-width: 1024px)"),t=()=>{tl(e.matches)};return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,r.useEffect)(()=>{tv.current=eg},[eg]),(0,r.useEffect)(()=>{if(!K)return;let{activeQueueId:e,positionSec:t}=K;tk.current=t,W(),Promise.resolve().then(()=>{ek(e),ej(t),ey(!1)})},[K,W]),(0,r.useEffect)(()=>{if(!Z)return;let{activeQueueId:e}=Z;J(),tg.current=[],Promise.resolve().then(()=>{ek(e),ej(0),eL(null),ey(!0)})},[Z,J]),(0,r.useEffect)(()=>{let e=t$.current;X(eg,e&&Number.isFinite(e.currentTime)?e.currentTime:0)},[eg,X]);let tG=(0,r.useMemo)(()=>{if(0===l.length)return -1;if(eg){let e=l.findIndex(e=>e.queueId===eg);if(e>=0)return e}return 0},[l,eg]),tV=tG>=0?l[tG]?.track:void 0;(0,r.useEffect)(()=>{if(!ev||!eg)return;let e=tV?.id??"";e&&tz.current!==eg&&(tz.current=eg,E(e))},[eg,tV?.id,ev,E]);let tH=(0,r.useMemo)(()=>{if(0===N.length)return[];let e=new Map;for(let t of c)e.set(t.id,t);let t=[];for(let r of N){let n=e.get(r);if(n&&t.push(n),t.length>=8)break}return t},[N,c]),tF=(0,r.useMemo)(()=>{if(0===c.length)return[];let e=new Set(N.slice(0,8));return c.filter(t=>{if(e.has(t.id))return!1;let r=C[t.id];return!!(r?.lastPlayedAt&&r.playCount>0)}).sort((e,t)=>(C[e.id]?.lastPlayedAt??0)-(C[t.id]?.lastPlayedAt??0)).slice(0,8)},[c,C,N]),tQ=(0,r.useMemo)(()=>Y(c),[c]),tK=(0,r.useMemo)(()=>{let e=new Map;for(let t of c){let r=(0,A.albumCompositeKey)(t.album,t.artist),n=e.get(r)??[];n.push(t),e.set(r,n)}for(let t of e.values())t.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}));return e},[c]),tW=(0,r.useMemo)(()=>B.filter(e=>tQ.has(e)).sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),[B,tQ]),tZ=(0,r.useMemo)(()=>G.filter(e=>tK.has(e)).sort((e,t)=>{let[r,n]=e.split("\0"),[a,i]=t.split("\0"),s=r.localeCompare(a,void 0,{sensitivity:"base"});return 0!==s?s:n.localeCompare(i,void 0,{sensitivity:"base"})}),[G,tK]),tJ=(0,r.useMemo)(()=>{let e=new Set(O);return c.filter(t=>e.has(t.id)).sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"}))},[c,O]),tX=(0,r.useMemo)(()=>{let e=new Set,t=[],r=r=>{e.has(r.id)||(e.add(r.id),t.push(r))};for(let e of O){let t=c.find(t=>t.id===e);t&&r(t)}for(let e of B){let t=tQ.get(e);if(t)for(let e of t)r(e)}for(let e of G){let t=tK.get(e);if(t)for(let e of t)r(e)}return t.sort((e,t)=>e.title.localeCompare(t.title,void 0,{sensitivity:"base"})),t},[O,B,G,c,tQ,tK]),t0=tW.length>0||tZ.length>0||tJ.length>0,t1=(0,r.useMemo)(()=>{let e=[],t=tW.length,r=tZ.length,n=tJ.length;return t>0&&e.push(`${t} artist${1===t?"":"s"}`),r>0&&e.push(`${r} album${1===r?"":"s"}`),n>0&&e.push(`${n} song${1===n?"":"s"}`),e.join(" · ")},[tW.length,tZ.length,tJ.length]),t2=(0,r.useMemo)(()=>{if(0===c.length)return[];let e=new Set,t=[];for(let t of tH)e.add(t.id);for(let t of O)e.add(t);for(let r=0;r<c.length;r++){let n=c[r];if(!e.has(n.id)&&(e.add(n.id),t.push(n),t.length>=12))break}return t},[c,O,tH]),t5=(0,r.useMemo)(()=>S.slice(0,8),[S]),t4=(0,r.useMemo)(()=>Math.max(tV?.durationSec??0,Number.isFinite(ew)&&ew>0?ew:0),[tV?.durationSec,ew]),t3=(0,r.useCallback)(()=>{let e=tN.current,t=tC.current;tN.current=null,tC.current=0,e&&!(t<.25)&&L(e,t)},[L]),t8=(0,r.useCallback)((e,t)=>{if(!tU.current||tj.current!==e){tj.current=e,tw.current=t;return}let r=t-tw.current;tw.current=t,r<=0||r>5||(tN.current&&tN.current!==e&&t3(),tN.current=e,tC.current+=r,tC.current>=5&&t3())},[t3]);(0,r.useEffect)(()=>(tj.current=tV?.id??null,tw.current=0,()=>{t3()}),[eg,tV?.id,t3]),(0,r.useEffect)(()=>{ev||t3()},[t3,ev]),(0,r.useEffect)(()=>()=>{t3()},[t3]);let t9=(0,r.useCallback)(()=>{if(!tU.current)return;let e=tV?.id;if(e){if(t3(),t4>0&&t4-ez<=Math.min(15,Math.max(5,.1*t4)))return;P(e)}},[tV?.id,t4,t3,ez,P]),t6=(0,r.useCallback)(e=>{l[e]?.queueId!==tv.current&&t9(),tg.current=[],ek(l[e]?.queueId??null),ej(0),eL(null),ey(!0)},[t9,l]),t7=(0,r.useCallback)(()=>{if(0===l.length)return;let e=tG>=0?tG:0;if(eu&&l.length>1){tg.current.push(e);let t=e;for(let r=0;r<48&&t===e;r++)t=Math.floor(Math.random()*l.length);ek(l[t]?.queueId??null),ej(0),eL(null),ey(!0);return}if(e<l.length-1){ek(l[e+1]?.queueId??null),ej(0),eL(null),ey(!0);return}if("all"===ed){ek(l[0]?.queueId??null),ej(0),eL(null),ey(!0);return}ey(!1)},[tG,l,ed,eu]),re=(0,r.useCallback)(()=>{if(0===l.length)return;let e=tG>=0?tG:0;if(eu&&tg.current.length>0){let e=tg.current.pop();if(void 0!==e&&e>=0&&e<l.length){ek(l[e]?.queueId??null),ej(0),eL(null),ey(!0);return}}if(e>0){ek(l[e-1]?.queueId??null),ej(0),eL(null),ey(!0);return}"all"===ed&&(ek(l[l.length-1]?.queueId??null),ej(0),eL(null),ey(!0))},[tG,l,ed,eu]),rt=(0,r.useCallback)(()=>{ea("off"===ed?"all":"all"===ed?"one":"off")},[ed,ea]),rr=(0,r.useCallback)(()=>{ei(!eu)},[eu,ei]),rn=(0,r.useCallback)(()=>{let e=tp.current?.getBoundingClientRect().width??0;if(e<=0)return;let{libraryPx:t,queuePx:r}=e5(e,tS.current,tE.current);to(t),tu(r)},[]),ra=(0,r.useCallback)(()=>{try{window.localStorage.setItem(eX,String(tS.current)),window.localStorage.setItem(e0,String(tE.current))}catch{}},[]),ri=(0,r.useCallback)(()=>{tI.current={kind:"library-queue",startLib:tS.current,startQ:tE.current}},[]),rs=(0,r.useCallback)(e=>{let t=tI.current;if(!t||"library-queue"!==t.kind)return;let r=e5(tp.current?.getBoundingClientRect().width??0,t.startLib+e,t.startQ-e);to(r.libraryPx),tu(r.queuePx)},[]),rl=(0,r.useCallback)(()=>{tI.current={kind:"queue-player",startQ:tE.current}},[]),rc=(0,r.useCallback)(e=>{var t,r;let n=tI.current;n&&"queue-player"===n.kind&&tu((t=tp.current?.getBoundingClientRect().width??0,r=tS.current,e1(n.startQ+e,420,Math.max(420,t-r-350))))},[]),ro=(0,r.useCallback)(()=>{tI.current=null,ra()},[ra]);(0,r.useEffect)(()=>{if(!ts)return;let e=()=>{rn()};return window.addEventListener("resize",e),rn(),()=>window.removeEventListener("resize",e)},[ts,rn]),(0,r.useEffect)(()=>{let e=t$.current;e&&(e.volume=tf)},[tf]),(0,r.useEffect)(()=>{let e=t$.current;e&&(e.playbackRate=em)},[em]),(0,r.useEffect)(()=>{if(tq.current&&(URL.revokeObjectURL(tq.current),tq.current=null),eJ(null),!tV||!tV.library&&!tV.youtubeQuery&&!tV.audioUrl){let e=t$.current;e&&(e.pause(),e.removeAttribute("src"),e.load()),tD.current&&(URL.revokeObjectURL(tD.current),tD.current=null);return}let e=tV.youtubeVideoId?.trim();if(!tV.library&&e){let t=t$.current;t&&(t.pause(),t.removeAttribute("src"),t.load()),tD.current&&(URL.revokeObjectURL(tD.current),tD.current=null),eJ(b(e));return}if(!tV.library){let e=t$.current;e&&(e.pause(),e.removeAttribute("src"),e.load()),tD.current&&(URL.revokeObjectURL(tD.current),tD.current=null);return}let t=!1,r=tk.current,n=requestAnimationFrame(()=>{eN(0),ej(r??0)});return(async()=>{eL(null);let e=await m(tV);if(t)return;if(!e)return eL("Could not read this file from the library.");let r=x(tV.id,e),n=URL.createObjectURL(e);if(tD.current&&URL.revokeObjectURL(tD.current),tD.current=n,t)return;let a=await r;if(t)return;if(a){let e=URL.createObjectURL(new Blob([a.data],{type:a.mime}));tq.current=e,eJ(e)}let i=t$.current;i&&!t&&(i.src=n,i.load(),i.playbackRate=tO.current,tU.current&&tY(i))})(),()=>{t=!0,cancelAnimationFrame(n),tq.current&&(URL.revokeObjectURL(tq.current),tq.current=null)}},[tV,m,tY]);let rd=tV?.youtubeVideoId?.trim()||null;(0,r.useEffect)(()=>{!rd||tV?.library||eJ(b(rd))},[rd,tV?.library,tV?.id]);let ru=!!rd,rm=!!(tV?.youtubeQuery?.trim()&&!rd),rx=(0,r.useCallback)(()=>{if(t3(),tV?.id&&M(tV.id),"one"===ed){if(tV?.id&&E(tV.id),ru&&t_.current){t_.current.seekTo(0),ej(0),ey(!0);return}let e=t$.current;e&&(e.currentTime=0,ej(0),tY(e));return}ex?t7():ey(!1)},[tV?.id,ed,ex,t7,ru,t3,M,E,tY]);(0,r.useEffect)(()=>{let e=tV?.youtubeQuery?.trim();if(!e||tV?.youtubeVideoId?.trim())return void queueMicrotask(()=>eK(!1));let t=new AbortController;return queueMicrotask(()=>eK(!0)),(0,eF.default)(e,t.signal).then(e=>{!t.signal.aborted&&(e&&tV?.id?(et(tV.id,t=>({...t,youtubeVideoId:e})),eL(null)):e||eL("Could not find a YouTube video for this track."))}).catch(e=>{t.signal.aborted||e instanceof Error&&"AbortError"===e.name||"object"==typeof e&&null!==e&&"name"in e&&"AbortError"===e.name||eL(e instanceof Error?e.message:"Could not resolve YouTube stream.")}).finally(()=>{t.signal.aborted||eK(!1)}),()=>{t.abort()}},[tV?.id,tV?.youtubeQuery,tV?.youtubeVideoId,et]);let rh=(0,r.useCallback)(e=>{eN(e),tV?.id&&h(tV.id,e)},[h,tV?.id]);(0,r.useEffect)(()=>{if(!ru)return;let e=()=>{let e=t_.current?.getCurrentTime()??0;Number.isFinite(e)&&e>=0&&(ej(e),tV?.id&&t8(tV.id,e),X(tv.current,e));let t=t_.current?.getDuration()??0;Number.isFinite(t)&&t>0&&eN(t)};e();let t=window.setInterval(e,500);return()=>{window.clearInterval(t)}},[tV?.id,ru,t8,X]),(0,r.useEffect)(()=>{let e=t$.current;!e||e.src&&(ev?tY(e):e.pause())},[ev,tY]),(0,r.useEffect)(()=>{let e=t$.current;if(!e||!tV)return;let t=()=>{ej(e.currentTime),t8(tV.id,e.currentTime);let t=Date.now();t-ty.current>=2e3&&(ty.current=t,X(tv.current,e.currentTime))},r=()=>{Number.isFinite(e.duration)&&e.duration>0&&(eN(e.duration),h(tV.id,e.duration));let t=tk.current;if(null!=t&&t>0){let r=Math.min(t,e.duration>0?e.duration:t);e.currentTime=r,ej(r),tk.current=null,X(tv.current,r)}},n=()=>{rx()};return e.addEventListener("timeupdate",t),e.addEventListener("loadedmetadata",r),e.addEventListener("ended",n),()=>{e.removeEventListener("timeupdate",t),e.removeEventListener("loadedmetadata",r),e.removeEventListener("ended",n)}},[tV,h,rx,t8,X]),(0,r.useEffect)(()=>()=>{tD.current&&(URL.revokeObjectURL(tD.current),tD.current=null),tq.current&&(URL.revokeObjectURL(tq.current),tq.current=null)},[]);let rb=(0,r.useCallback)(e=>{let t=Math.min(1,Math.max(0,e));if(ru&&t_.current){let e=t4>0?t4:t_.current.getDuration();if(e>0){let r=t*e;t_.current.seekTo(r),ej(r),X(tv.current,r)}return}let r=t$.current;if(!r||!Number.isFinite(r.duration)||r.duration<=0){t4>0&&(ej(t*t4),r&&(r.currentTime=t*t4));return}let n=Math.min(r.duration,Math.max(0,t*r.duration));r.currentTime=n,ej(n),X(tv.current,n)},[ru,t4,X]),rf=(0,r.useCallback)(e=>{if(t4<=0)return;let t=null;if("ArrowLeft"===e.key)t=ez-eh;else if("ArrowRight"===e.key)t=ez+eh;else if("PageDown"===e.key)t=ez-eb;else if("PageUp"===e.key)t=ez+eb;else if("Home"===e.key)t=0;else{if("End"!==e.key)return;t=t4}e.preventDefault(),rb(Math.min(t4,Math.max(0,t))/t4)},[t4,rb,ez,eb,eh]),rp=o?"Scanning…":d?`Prefetching ${u} YouTube video${1===u?"":"s"}…`:`${c.length} in library \xb7 ${l.length} in queue`,rg=j?"gap-2":"gap-3",rk=j?"px-3 py-2":"px-4 py-2.5",rv=j?"px-1.5 py-1.5":"px-2 py-2",ry=j?"gap-2":"gap-3",rz=j?"p-2":"p-3";return(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col bg-zinc-100 text-zinc-900 dark:bg-zinc-950 dark:text-zinc-100",children:[(0,t.jsx)(eV,{visible:eQ||rm&&ev,trackTitle:tV?.title}),(0,t.jsx)("audio",{ref:t$,className:"hidden",preload:"metadata"}),(0,t.jsx)(eP,{ref:t_,videoId:rd,isPlaying:ev&&ru,volume:tf,onReady:()=>eL(null),onEnded:rx,onDuration:rh,onError:e=>eL(e)}),(0,t.jsxs)("header",{className:"flex shrink-0 flex-wrap items-center gap-x-4 gap-y-3 border-b border-zinc-200 bg-white/90 px-6 py-3 backdrop-blur-sm dark:border-zinc-800/80 dark:bg-zinc-950/90",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,t.jsx)("div",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-accent-500/15 text-accent-700 ring-1 ring-accent-500/25 dark:text-accent-400 dark:ring-accent-500/30",children:(0,t.jsx)(e7,{className:"h-5 w-5"})}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h1",{className:"text-sm font-semibold tracking-tight text-zinc-900 dark:text-zinc-50",children:"Muzical"}),(0,t.jsxs)("p",{className:"text-xs text-zinc-500",children:["Local library · browser playback · v",eH.default.version]})]})]}),(0,t.jsx)(eM,{}),(0,t.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,t.jsx)(a.default,{href:"/settings/library",className:"hidden cursor-pointer rounded-full border border-zinc-200 bg-zinc-50 px-3 py-1 text-xs text-zinc-500 shadow-sm transition hover:border-zinc-300 hover:bg-zinc-100 hover:text-zinc-700 sm:inline dark:border-zinc-700/80 dark:bg-zinc-900/80 dark:text-zinc-400 dark:shadow-none dark:hover:border-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-300","aria-label":"Open library settings","aria-live":"polite",children:rp}),(0,t.jsx)(a.default,{href:"/settings",className:"flex h-9 w-9 items-center justify-center rounded-full border border-zinc-200 bg-white text-zinc-600 shadow-sm transition hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-300 dark:shadow-none dark:hover:border-zinc-500 dark:hover:bg-zinc-700 dark:hover:text-zinc-50","aria-label":"Library settings",children:(0,t.jsx)(te,{className:"h-[18px] w-[18px]"})}),(0,t.jsx)(eO.default,{})]})]}),eE?(0,t.jsx)("p",{className:"shrink-0 border-b border-red-200 bg-red-50 px-6 py-2 text-sm text-red-800 dark:border-red-900/40 dark:bg-red-950/30 dark:text-red-200",role:"alert",children:eE}):null,(0,t.jsxs)("div",{ref:tp,className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden lg:flex-row",children:[(0,t.jsx)("div",{className:"flex min-h-0 min-w-0 flex-col overflow-hidden max-lg:flex-2 max-lg:w-full lg:h-full lg:min-w-0 lg:shrink-0",style:ts?{width:tc,flex:"0 0 auto"}:void 0,children:(0,t.jsx)(eA,{})}),(0,t.jsx)(eB,{"aria-label":"Resize library and queue panels",onSessionStart:ri,onSessionMove:rs,onSessionEnd:ro}),(0,t.jsx)("section",{className:"flex min-h-0 min-w-0 flex-col overflow-hidden border-b border-zinc-200 bg-white dark:border-zinc-800/80 dark:bg-zinc-950/50 max-lg:flex-1 max-lg:w-full lg:h-full lg:shrink-0 lg:border-b-0 lg:border-r lg:border-zinc-200 lg:dark:border-zinc-800",style:ts?{width:td,flex:"0 0 auto"}:void 0,children:tm?(0,t.jsx)(eW,{track:tV,onClose:()=>tx(!1)}):ee?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex h-11 shrink-0 items-center justify-between gap-2 border-b border-zinc-200 bg-white/80 px-3 dark:border-zinc-800 dark:bg-zinc-950/80",children:[(0,t.jsx)("h2",{className:"text-xs font-medium uppercase leading-none tracking-wider text-zinc-500",children:"Queue"}),l.length>0?(0,t.jsx)("button",{type:"button",onClick:()=>{t9(),z(),ek(null),ey(!1),ej(0)},className:"text-xs font-medium text-zinc-500 underline-offset-2 hover:text-zinc-800 hover:underline dark:hover:text-zinc-300",children:"Clear"}):null]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-auto pb-2",children:0===l.length?(0,t.jsxs)("div",{className:"px-4 py-6",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-300",children:"Queue is empty"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-zinc-500 dark:text-zinc-400",children:["Add something to start playback.",(0,t.jsx)(a.default,{href:"/settings",className:"ml-2 font-medium text-accent-700 underline-offset-2 hover:underline dark:text-accent-400",children:"Library folders"})]}),tH.length>0?(0,t.jsxs)("div",{className:"mt-5",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Recently played"}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:tH.map(e=>(0,t.jsxs)("div",{className:`flex min-w-0 items-center ${ry} rounded-xl border border-zinc-200 bg-white ${rz} shadow-sm dark:border-zinc-800 dark:bg-zinc-950/40 dark:shadow-none`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e.title}),(0,t.jsxs)("p",{className:"truncate text-xs text-zinc-500 dark:text-zinc-400",children:[e.artist," · ",e.album]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] tabular-nums text-zinc-400 dark:text-zinc-500",children:e.durationSec>0?(0,k.formatDuration)(e.durationSec):"—"}),(0,t.jsx)(p,{className:"rounded-full",filled:R(e.id),onPress:()=>T(e),label:R(e.id)?"Remove song from favorites":"Add song to favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>I(e),className:"shrink-0 rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})]},e.id))})]}):null,tF.length>0?(0,t.jsxs)("div",{className:"mt-5",children:[(0,t.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,t.jsx)("p",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Rediscover"}),(0,t.jsx)("button",{type:"button",onClick:()=>I(tF),className:"rounded-full border border-zinc-200 bg-white px-2.5 py-1 text-xs font-medium text-zinc-700 transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-200 dark:hover:bg-zinc-800",children:"Add all"})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:tF.map(e=>(0,t.jsxs)("div",{className:`flex min-w-0 items-center ${ry} rounded-xl border border-zinc-200 bg-white ${rz} shadow-sm dark:border-zinc-800 dark:bg-zinc-950/40 dark:shadow-none`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e.title}),(0,t.jsxs)("p",{className:"truncate text-xs text-zinc-500 dark:text-zinc-400",children:[e.artist," - ",e.album]})]}),(0,t.jsx)("button",{type:"button",onClick:()=>I(e),className:"shrink-0 rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]},e.id))})]}):null,t0?(0,t.jsxs)("div",{className:"mt-5",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>tT(e=>!e),"aria-expanded":tR,className:"flex min-w-0 items-center gap-1 rounded-md py-0.5 text-left text-xs font-medium uppercase tracking-wider text-zinc-500 transition hover:text-zinc-700 dark:hover:text-zinc-300",children:[(0,t.jsx)(tn,{className:["h-3.5 w-3.5 shrink-0 text-zinc-400 transition-transform",tR?"rotate-90":""].join(" ")}),(0,t.jsx)("span",{children:"Favorites"}),!tR&&t1?(0,t.jsxs)("span",{className:"truncate font-normal normal-case tracking-normal text-zinc-400",children:["· ",t1]}):null]}),tX.length>0?(0,t.jsxs)("button",{type:"button",onClick:()=>I(tX),className:"rounded-full border border-zinc-200 bg-white px-2.5 py-1 text-xs font-medium text-zinc-700 transition hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-200 dark:hover:bg-zinc-800",children:["Add all (",tX.length,")"]}):null]}),tR?(0,t.jsxs)("div",{className:"mt-3 space-y-4",children:[tW.length>0?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-[11px] font-medium uppercase tracking-wider text-zinc-400",children:"Artists"}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:tW.map(e=>{let r=tQ.get(e)??[];return(0,t.jsxs)("div",{className:`flex min-w-0 items-center ${ry} rounded-xl border border-zinc-200 bg-white ${rz} shadow-sm dark:border-zinc-800 dark:bg-zinc-950/40 dark:shadow-none`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e}),(0,t.jsxs)("p",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:[r.length," track",1===r.length?"":"s"]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,t.jsx)(p,{className:"rounded-full",filled:V(e),onPress:()=>F(e),label:"Remove artist from favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>I(r),disabled:0===r.length,className:"shrink-0 rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]})]},e)})})]}):null,tZ.length>0?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-[11px] font-medium uppercase tracking-wider text-zinc-400",children:"Albums"}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:tZ.map(e=>{let[r,n]=e.split("\0"),a=tK.get(e)??[],i=a[0];return(0,t.jsxs)("div",{className:`flex min-w-0 items-center ${ry} rounded-xl border border-zinc-200 bg-white ${rz} shadow-sm dark:border-zinc-800 dark:bg-zinc-950/40 dark:shadow-none`,children:[(0,t.jsx)(f,{track:i,className:"h-10 w-10 shrink-0 rounded-md"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:r}),(0,t.jsx)("p",{className:"truncate text-xs text-zinc-500 dark:text-zinc-400",children:n}),(0,t.jsxs)("p",{className:"text-[11px] text-zinc-400 dark:text-zinc-500",children:[a.length," track",1===a.length?"":"s"]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,t.jsx)(p,{className:"rounded-full",filled:H(e),onPress:()=>Q(e),label:"Remove album from favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>I(a),disabled:0===a.length,className:"shrink-0 rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 disabled:opacity-40 dark:text-accent-300 dark:ring-accent-500/40",children:"Add all"})]})]},e)})})]}):null,tJ.length>0?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-[11px] font-medium uppercase tracking-wider text-zinc-400",children:"Songs"}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:tJ.map(e=>(0,t.jsxs)("div",{className:`flex min-w-0 items-center ${ry} rounded-xl border border-zinc-200 bg-white ${rz} shadow-sm dark:border-zinc-800 dark:bg-zinc-950/40 dark:shadow-none`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e.title}),(0,t.jsxs)("p",{className:"truncate text-xs text-zinc-500 dark:text-zinc-400",children:[e.artist," · ",e.album]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] tabular-nums text-zinc-400 dark:text-zinc-500",children:e.durationSec>0?(0,k.formatDuration)(e.durationSec):"—"}),(0,t.jsx)(p,{className:"rounded-full",filled:R(e.id),onPress:()=>T(e),label:"Remove song from favorites"}),(0,t.jsx)("button",{type:"button",onClick:()=>I(e),className:"shrink-0 rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})]},e.id))})]}):null]}):null]}):null,t5.length>0||t2.length>0?(0,t.jsxs)("div",{className:"mt-6",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Suggestions"}),t5.length>0?(0,t.jsx)("div",{className:"mb-3 flex flex-wrap gap-2",children:t5.map(e=>(0,t.jsx)(eG,{entry:e},`${e.source}\u0000${e.query}`))}):null,t2.length>0?(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:t2.map(e=>(0,t.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>I(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),I(e))},"aria-label":`Add ${e.title} to queue`,className:`flex w-full min-w-0 cursor-pointer items-center text-left ${ry} rounded-xl border border-zinc-200 bg-white ${rz} shadow-sm transition hover:border-accent-400/50 hover:bg-accent-50/50 dark:border-zinc-800 dark:bg-zinc-950/40 dark:hover:border-accent-500/30 dark:hover:bg-accent-950/20 dark:shadow-none`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e.title}),(0,t.jsxs)("p",{className:"truncate text-xs text-zinc-500 dark:text-zinc-400",children:[e.artist," · ",e.album]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] tabular-nums text-zinc-400 dark:text-zinc-500",children:e.durationSec>0?(0,k.formatDuration)(e.durationSec):"—"}),(0,t.jsx)(p,{className:"rounded-full",filled:R(e.id),onPress:()=>T(e),label:R(e.id)?"Remove song from favorites":"Add song to favorites"})]})]},e.id))}):null]}):null]}):(0,t.jsx)("ul",{className:"divide-y divide-zinc-200 dark:divide-zinc-800",role:"listbox","aria-label":"Track queue",children:l.map((e,r)=>{let n=e.track,a=r===tG,i=tA===e.queueId&&tM!==e.queueId,s=!n.library&&(!!("musicbrainz"===n.source||"youtube"===n.source||n.id.startsWith("musicbrainz:"))||!!n.youtubeQuery?.trim()),o=c.some(e=>e.id===n.id);return(0,t.jsxs)("li",{className:["group/row flex items-center gap-0",a?"bg-accent-50/90 dark:bg-white/6":"",i?"ring-1 ring-accent-400/30":""].join(" "),onDragOver:t=>{tM&&(t.preventDefault(),tA!==e.queueId&&tL(e.queueId))},onDrop:t=>{if(t.preventDefault(),tP(null),tL(null),!tM||tM===e.queueId)return;let n=l.findIndex(e=>e.queueId===tM);if(n<0)return;let a=t.currentTarget.getBoundingClientRect(),i=t.clientY>a.top+a.height/2?r+1:r;w(n,n<i?i-1:i)},children:[(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a,onClick:()=>t6(r),draggable:!0,onDragStart:t=>{tP(e.queueId),tL(e.queueId),t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.queueId)},onDragEnd:()=>{tP(null),tL(null)},className:[`flex min-w-0 flex-1 items-center ${rg} border-l-2 border-transparent ${rk} text-left transition-colors`,a?"border-accent-500 dark:border-accent-400":"hover:bg-zinc-50 dark:hover:bg-zinc-900/60","cursor-grab active:cursor-grabbing",i?"border-accent-500/20 dark:border-accent-400/20":""].join(" "),children:[(0,t.jsx)("span",{className:"w-5 shrink-0 text-right text-[11px] tabular-nums text-zinc-400 dark:text-zinc-500",children:r+1}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium leading-snug text-zinc-900 dark:text-zinc-100",children:n.title}),(0,t.jsxs)("p",{className:"truncate text-xs leading-snug text-zinc-500 dark:text-zinc-400",children:[n.artist," · ",n.album]})]}),(0,t.jsx)("span",{className:"shrink-0 text-[11px] tabular-nums text-zinc-400 dark:text-zinc-500",children:n.durationSec>0?(0,k.formatDuration)(n.durationSec):"—"})]}),(0,t.jsxs)("div",{className:["flex shrink-0 items-center border-l pr-1 pl-0.5",a?"border-accent-200/80 dark:border-white/8":"border-zinc-200 bg-zinc-50/80 dark:border-zinc-800 dark:bg-zinc-900/40"].join(" "),children:[(0,t.jsx)(p,{className:"rounded-none",filled:R(n.id),onPress:()=>T(n),label:R(n.id)?"Remove song from favorites":"Add song to favorites"}),(0,t.jsx)(g.default,{triggerLabel:`Actions for ${n.title}`,items:(0,v.default)({track:n,onViewDetails:q,onViewRelatedSongs:_,onAddToPlaylist:e=>er(e,e.title),onDownload:U,onSave:s&&!o?()=>$(n):void 0,onRemoveFromLibrary:o?()=>D(n):void 0})}),(0,t.jsx)("button",{type:"button","aria-label":`Remove ${n.title} from queue`,onClick:()=>{let t=eg===e.queueId;t&&t9();let n=t?l[r+1]?.queueId??l[r-1]?.queueId??null:eg;y(e.queueId),ek(n),t&&!n&&(ey(!1),ej(0))},className:`shrink-0 ${rv} text-[11px] text-zinc-500 opacity-80 transition hover:bg-zinc-200/80 hover:text-zinc-900 sm:opacity-0 sm:group-hover/row:opacity-100 dark:hover:bg-zinc-800 dark:hover:text-zinc-100`,children:"Remove"})]})]},e.queueId)})})})]}):(0,t.jsx)(eY,{})}),(0,t.jsx)(eB,{"aria-label":"Resize queue and player panels",onSessionStart:rl,onSessionMove:rc,onSessionEnd:ro}),(0,t.jsxs)("aside",{className:"flex min-h-0 min-w-0 flex-1 flex-col justify-between gap-3 overflow-hidden bg-zinc-50 p-4 dark:bg-transparent lg:h-full lg:min-w-0 lg:flex-1",children:[(0,t.jsxs)("div",{className:"mx-auto flex w-full max-w-[280px] shrink-0 flex-col gap-4",children:[(0,t.jsx)("div",{className:"relative aspect-square w-full overflow-hidden rounded-2xl bg-linear-to-br from-accent-200/90 via-zinc-100 to-zinc-200 ring-1 ring-zinc-300/70 shadow-xl shadow-zinc-400/20 dark:from-accent-900/40 dark:via-zinc-800 dark:to-zinc-900 dark:ring-zinc-700/60 dark:shadow-2xl dark:shadow-black/40","aria-hidden":!0,children:eZ?(0,t.jsx)("img",{src:eZ,alt:"",className:"absolute inset-0 h-full w-full object-cover",decoding:"async"}):(0,t.jsx)("div",{className:"flex h-full w-full items-center justify-center p-8",children:(0,t.jsx)("span",{className:"select-none text-6xl font-bold tracking-tighter text-accent-800/20 dark:text-zinc-700/90",children:tV?.album?tV.album.charAt(0):"♪"})})}),(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"truncate text-lg font-semibold tracking-tight text-zinc-900 dark:text-zinc-50",children:tV?.title??"—"}),(0,t.jsx)("p",{className:"mt-1 truncate text-sm text-zinc-600 dark:text-zinc-400",children:tV?.artist??""}),(0,t.jsx)("p",{className:"mt-0.5 truncate text-xs text-zinc-500 dark:text-zinc-600",children:tV?.album??""})]})]}),(0,t.jsxs)("div",{className:"shrink-0 space-y-2.5",children:[th?(0,t.jsx)(eT,{gainsDb:ep,onBandChange:ec,onReset:eo,onClose:()=>tb(!1)}):null,(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs tabular-nums text-zinc-500",children:[(0,t.jsx)("span",{children:(0,k.formatDuration)(ez)}),(0,t.jsx)("span",{children:t4>0?(0,k.formatDuration)(t4):"—"})]}),(0,t.jsx)("div",{className:"group relative h-2 cursor-pointer rounded-full bg-zinc-200 dark:bg-zinc-800",onPointerDown:e=>{let t=e.currentTarget.getBoundingClientRect();rb((e.clientX-t.left)/Math.max(1,t.width));let r=e=>{rb((e.clientX-t.left)/Math.max(1,t.width))},n=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",n)};window.addEventListener("pointermove",r),window.addEventListener("pointerup",n)},role:"slider",tabIndex:0,onKeyDown:rf,"aria-valuemin":0,"aria-valuemax":Math.round(t4),"aria-valuenow":Math.round(ez),"aria-label":"Seek",children:(0,t.jsx)("div",{className:"pointer-events-none absolute inset-y-0 left-0 rounded-full bg-linear-to-r from-accent-600 to-accent-400",style:{width:`${t4>0?100*ez/t4:0}%`}})}),(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("button",{type:"button","aria-label":"Previous track",onClick:()=>{t9(),re()},disabled:0===l.length,className:"rounded-full p-2.5 text-zinc-600 transition hover:bg-zinc-200 hover:text-zinc-900 disabled:cursor-not-allowed disabled:opacity-40 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100",children:(0,t.jsx)(e8,{className:"h-6 w-6"})}),(0,t.jsx)("button",{type:"button","aria-label":ev?"Pause":"Play",onClick:()=>ey(e=>!e),disabled:0===l.length||!tV,className:"mx-0.5 flex h-12 w-12 items-center justify-center rounded-full bg-accent-500 text-zinc-950 shadow-md shadow-accent-600/20 transition hover:bg-accent-400 disabled:cursor-not-allowed disabled:opacity-40 dark:shadow-accent-900/30",children:ev?(0,t.jsx)(e3,{className:"h-6 w-6"}):(0,t.jsx)(e4,{className:"h-6 w-6 pl-0.5"})}),(0,t.jsx)("button",{type:"button","aria-label":"Next track",onClick:()=>{t9(),t7()},disabled:0===l.length,className:"rounded-full p-2.5 text-zinc-600 transition hover:bg-zinc-200 hover:text-zinc-900 disabled:cursor-not-allowed disabled:opacity-40 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100",children:(0,t.jsx)(e9,{className:"h-6 w-6"})})]}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,t.jsx)(e6,{className:"h-5 w-5 shrink-0 text-zinc-500"}),(0,t.jsx)("input",{type:"range",min:0,max:1,step:.01,value:tf,onChange:e=>{let t=Number(e.target.value);ef?el(t):eS(t)},className:"h-1 w-full min-w-0 cursor-pointer accent-accent-500","aria-label":"Volume"})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-center gap-2 border-t border-zinc-200 pt-2 dark:border-zinc-800",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>rt(),className:"relative flex h-9 w-9 items-center justify-center rounded-full border border-zinc-200 bg-white text-zinc-600 transition hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:border-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-100","aria-label":"off"===ed?"Repeat off. Click for repeat all.":"all"===ed?"Repeat all. Click for repeat one.":"Repeat one. Click for repeat off.",children:[(0,t.jsx)(tt,{dimmed:"off"===ed,className:"h-5 w-5"}),"one"===ed?(0,t.jsx)("span",{className:"absolute -right-0.5 -top-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded bg-accent-500 px-0.5 text-[9px] font-bold leading-none text-zinc-950",children:"1"}):null]}),(0,t.jsx)("button",{type:"button",onClick:()=>rr(),"aria-pressed":eu,"aria-label":eu?"Shuffle on":"Shuffle off",className:["flex h-9 w-9 items-center justify-center rounded-full border transition",eu?"border-accent-500/50 bg-accent-500/15 text-accent-800 dark:text-accent-300":"border-zinc-200 bg-white text-zinc-600 hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:border-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-100"].join(" "),children:(0,t.jsx)(tr,{className:"h-5 w-5"})}),(0,t.jsx)("button",{type:"button",onClick:()=>tx(e=>!e),"aria-pressed":tm,"aria-label":tm?"Hide lyrics":"Show lyrics",className:["flex h-9 w-9 items-center justify-center rounded-full border transition",tm?"border-accent-500/50 bg-accent-500/15 text-accent-800 dark:text-accent-300":"border-zinc-200 bg-white text-zinc-600 hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:border-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-100"].join(" "),children:(0,t.jsx)(ta,{className:"h-5 w-5"})}),(0,t.jsx)("button",{type:"button",onClick:()=>tb(e=>!e),"aria-pressed":th,"aria-label":th?"Hide equalizer":"Show equalizer",className:["flex h-9 w-9 items-center justify-center rounded-full border transition",th?"border-accent-500/50 bg-accent-500/15 text-accent-800 dark:text-accent-300":"border-zinc-200 bg-white text-zinc-600 hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:border-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-100"].join(" "),children:(0,t.jsx)(ti,{className:"h-5 w-5"})}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-xs text-zinc-600 dark:text-zinc-400",children:[(0,t.jsx)("span",{className:"sr-only",children:"Playback speed"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"tabular-nums",children:"Speed"}),(0,t.jsx)("select",{value:em,onChange:e=>es(Number(e.target.value)),className:"cursor-pointer rounded-md border border-zinc-200 bg-white px-2 py-1 text-xs font-medium text-zinc-800 outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-200","aria-label":"Playback speed",children:eD.PLAYBACK_RATES.map(e=>(0,t.jsx)("option",{value:e,children:1===e?"1×":`${e}\xd7`},e))})]})]})]})]})]})]})}e.s(["default",0,function(e){let a=(0,n.usePathname)().startsWith("/settings");return(0,t.jsxs)("div",{className:"relative flex min-h-0 flex-1 flex-col overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute inset-0 z-0 flex min-h-0 flex-col",children:(0,t.jsx)(r.Suspense,{fallback:null,children:(0,t.jsx)(ts,{})})}),a?(0,t.jsx)("div",{className:"absolute inset-0 z-10 flex min-h-0 flex-col",children:e.children}):null]})}],59665)}]);
|