music-assistant-frontend 2.17.34__py3-none-any.whl → 2.17.63__py3-none-any.whl
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.
Potentially problematic release.
This version of music-assistant-frontend might be problematic. Click here for more details.
- music_assistant_frontend/assets/About-B64RAAE6.js +1 -0
- music_assistant_frontend/assets/About-lesUP2tB.css +1 -0
- music_assistant_frontend/assets/AddManualLink.vue_vue_type_script_setup_true_lang-DQUirFGx.js +1 -0
- music_assistant_frontend/assets/AddPlayerGroup-BgGBSvG5.js +1 -0
- music_assistant_frontend/assets/AddProviderDetails-BHxivTcE.js +1 -0
- music_assistant_frontend/assets/AddProviderDetails-DQeCtnoy.css +1 -0
- music_assistant_frontend/assets/AlbumDetails-kSlct8q_.js +1 -0
- music_assistant_frontend/assets/ArtistDetails-CNnccN2P.js +1 -0
- music_assistant_frontend/assets/AudiobookDetails-BqlM2CS_.js +1 -0
- music_assistant_frontend/assets/AvatarImage.vue_vue_type_script_setup_true_lang-DBokkkla.js +1 -0
- music_assistant_frontend/assets/BrowseView-D3jhZGn3.css +1 -0
- music_assistant_frontend/assets/BrowseView-DuywWVQm.js +1 -0
- music_assistant_frontend/assets/Button-B4d5YBNY.js +1 -0
- music_assistant_frontend/assets/Button-J-l6bmDl.css +1 -0
- music_assistant_frontend/assets/Container-CLe-v6jJ.css +1 -0
- music_assistant_frontend/assets/Container-D1pLFqsU.js +1 -0
- music_assistant_frontend/assets/Default-CDpSGmTw.js +21 -0
- music_assistant_frontend/assets/Default-CQvuEVee.css +1 -0
- music_assistant_frontend/assets/DropdownMenuTrigger.vue_vue_type_script_setup_true_lang-DWuSqU5E.js +1 -0
- music_assistant_frontend/assets/EditConfig-BPYsIC-A.js +1 -0
- music_assistant_frontend/assets/EditConfig-DNe2y34q.css +1 -0
- music_assistant_frontend/assets/EditCoreConfig-BgqNrizT.css +1 -0
- music_assistant_frontend/assets/EditCoreConfig-BzGxPfuM.js +1 -0
- music_assistant_frontend/assets/EditPlayer-2rJC7VuC.css +1 -0
- music_assistant_frontend/assets/EditPlayer-D-W-NEU2.js +1 -0
- music_assistant_frontend/assets/EditPlayerDsp-BI39n7FA.css +1 -0
- music_assistant_frontend/assets/EditPlayerDsp-DLVoEBGu.js +9 -0
- music_assistant_frontend/assets/EditProvider-apfmFtz1.css +1 -0
- music_assistant_frontend/assets/EditProvider-pX2tzDDV.js +1 -0
- music_assistant_frontend/assets/FacetedFilter-CVMvoryN.css +1 -0
- music_assistant_frontend/assets/FacetedFilter-CcVgGpca.js +1 -0
- music_assistant_frontend/assets/FrontendConfig-CxraPthf.js +1 -0
- music_assistant_frontend/assets/FrontendConfig-a-oWNOqu.css +1 -0
- music_assistant_frontend/assets/HomeView-BYNgS4DU.js +1 -0
- music_assistant_frontend/assets/HomeView-Du3qC7g7.css +1 -0
- music_assistant_frontend/assets/ItemsListing-CF6i_DPA.css +1 -0
- music_assistant_frontend/assets/ItemsListing-DqCIuDVa.js +1 -0
- music_assistant_frontend/assets/LibraryAlbums-BtgPipsX.js +1 -0
- music_assistant_frontend/assets/LibraryArtists-BxJH58zj.js +1 -0
- music_assistant_frontend/assets/LibraryAudiobooks-CfxtyrvX.js +1 -0
- music_assistant_frontend/assets/LibraryPlaylists-DklE3jS2.js +1 -0
- music_assistant_frontend/assets/LibraryPodcasts-CCQmiove.js +1 -0
- music_assistant_frontend/assets/LibraryRadios-CnFDe94x.js +1 -0
- music_assistant_frontend/assets/LibraryTracks-DbeArd47.js +1 -0
- music_assistant_frontend/assets/ListItem-By9ygptX.css +1 -0
- music_assistant_frontend/assets/ListItem-DccRVadN.js +1 -0
- music_assistant_frontend/assets/MediaItemImages-C9Fy6AXA.js +1 -0
- music_assistant_frontend/assets/MediaItemImages-CLzhjwGQ.css +1 -0
- music_assistant_frontend/assets/MediaItemThumb-CYhBGQYb.js +1 -0
- music_assistant_frontend/assets/MediaItemThumb-Dh_kR1LP.css +1 -0
- music_assistant_frontend/assets/NowPlayingBadge.vue_vue_type_style_index_0_lang-D7lqdhVg.js +1 -0
- music_assistant_frontend/assets/PanelviewItemCompact-C1lAmhs4.js +1 -0
- music_assistant_frontend/assets/PanelviewItemCompact-DPec3m9e.css +1 -0
- music_assistant_frontend/assets/PlayerCard-CvuecWVw.js +1 -0
- music_assistant_frontend/assets/PlayerCard-Sb0PieXV.css +1 -0
- music_assistant_frontend/assets/Players-CsGKvNru.js +1 -0
- music_assistant_frontend/assets/Players-DqQtrPDr.css +1 -0
- music_assistant_frontend/assets/PlaylistDetails-BRmplZDX.js +1 -0
- music_assistant_frontend/assets/PodcastDetails-CO9edw4i.js +1 -0
- music_assistant_frontend/assets/PopoverTrigger.vue_vue_type_script_setup_true_lang-ZsAs7pQL.js +1 -0
- music_assistant_frontend/assets/ProviderDetails-DFxC0Z2P.css +1 -0
- music_assistant_frontend/assets/ProviderDetails.vue_vue_type_style_index_0_lang-DFoDB6o8.js +8 -0
- music_assistant_frontend/assets/ProviderIcon-CbwA83VX.css +1 -0
- music_assistant_frontend/assets/ProviderIcon.vue_vue_type_style_index_0_lang-3Xmo3tIn.js +1 -0
- music_assistant_frontend/assets/Providers-DoQCRcJD.css +1 -0
- music_assistant_frontend/assets/Providers-fnV7LLWJ.js +1 -0
- music_assistant_frontend/assets/RadioDetails-CSTUc8uy.js +1 -0
- music_assistant_frontend/assets/RemoteAccessSettings-BJcgBwnj.js +1 -0
- music_assistant_frontend/assets/RemoteAccessSettings-DzZ6b2JZ.css +1 -0
- music_assistant_frontend/assets/Search-CP2B4boW.js +1 -0
- music_assistant_frontend/assets/ServerLogs-DT9hKSu9.js +4 -0
- music_assistant_frontend/assets/ServerLogs-DqUM0n_B.css +1 -0
- music_assistant_frontend/assets/Settings-DTSUeTlH.js +1 -0
- music_assistant_frontend/assets/Settings-Dy52XfiN.css +1 -0
- music_assistant_frontend/assets/{SystemConfig-BKi5ffMS.css → SystemConfig-CI_tk8f0.css} +1 -1
- music_assistant_frontend/assets/SystemConfig-CwdPKWrs.js +1 -0
- music_assistant_frontend/assets/Toolbar-BH0q_AuX.js +1 -0
- music_assistant_frontend/assets/Toolbar-Dz5VG6wZ.css +1 -0
- music_assistant_frontend/assets/TrackDetails-D-roSajh.js +1 -0
- music_assistant_frontend/assets/UserManagement-Cjprr5Bf.css +1 -0
- music_assistant_frontend/assets/UserManagement-D95vHQbd.js +1 -0
- music_assistant_frontend/assets/UserProfile-BT070UWs.js +1 -0
- music_assistant_frontend/assets/UserProfile-D9w29jno.css +1 -0
- music_assistant_frontend/assets/WidgetRow-CzSfjn6J.js +1 -0
- music_assistant_frontend/assets/color-BTziYnFN.js +1 -0
- music_assistant_frontend/assets/index-BFLe16Zh.js +1103 -0
- music_assistant_frontend/assets/index-BMjInzaQ.js +1 -0
- music_assistant_frontend/assets/index-CeixlMcg.css +1 -0
- music_assistant_frontend/assets/index-_We2Vr5Z.js +1 -0
- music_assistant_frontend/assets/index-vt6UORr-.js +1 -0
- music_assistant_frontend/assets/libopus-decoder-elWjCkSR.js +1 -0
- music_assistant_frontend/assets/lucide-C2DU1LFb.js +1 -0
- music_assistant_frontend/assets/marked-C0Rlrcoy.js +59 -0
- music_assistant_frontend/assets/marquee_text_sync-CEgtptD4.js +1 -0
- music_assistant_frontend/assets/mdi-DTeawFQ8.css +1 -0
- music_assistant_frontend/assets/oggOpusDecoder-FGWA1cRr.js +1 -0
- music_assistant_frontend/assets/profile-Cv_y861N.js +23 -0
- music_assistant_frontend/assets/qrcode-DSFhiIp2.js +10 -0
- music_assistant_frontend/assets/reka-ui-GpbaI08z.js +3 -0
- music_assistant_frontend/assets/swiper-DDQ4uUkz.css +1 -0
- music_assistant_frontend/assets/swiper-Jy9GbtzK.js +1 -0
- music_assistant_frontend/assets/userPreferences-DsKUT7Ha.js +1 -0
- music_assistant_frontend/assets/utils-CDN07tui.js +1 -0
- music_assistant_frontend/assets/vue-i18n-CX-lsKIo.js +3 -0
- music_assistant_frontend/assets/vue-router-BgJK_hRC.js +1 -0
- music_assistant_frontend/assets/vuetify-CrxirfrA.js +16 -0
- music_assistant_frontend/assets/vuetify-bOa_R6j7.css +1 -0
- music_assistant_frontend/assets/vueuse-DIaEWNCo.js +1 -0
- music_assistant_frontend/index.html +14 -2
- music_assistant_frontend/sw.js +2 -2
- {music_assistant_frontend-2.17.34.dist-info → music_assistant_frontend-2.17.63.dist-info}/METADATA +1 -1
- music_assistant_frontend-2.17.63.dist-info/RECORD +159 -0
- music_assistant_frontend/assets/About-BkJaoSR3.js +0 -1
- music_assistant_frontend/assets/About-BlM2bNNU.css +0 -1
- music_assistant_frontend/assets/AddManualLink.vue_vue_type_script_setup_true_lang-C1nm8oQh.js +0 -1
- music_assistant_frontend/assets/AddPlayerGroup-B3NNUL-h.js +0 -1
- music_assistant_frontend/assets/AddProviderDetails-BtrgTFts.js +0 -1
- music_assistant_frontend/assets/AlbumDetails-baXoKXD6.js +0 -1
- music_assistant_frontend/assets/ArtistDetails-Cv9mXN_k.js +0 -1
- music_assistant_frontend/assets/AudiobookDetails-7rFtcITw.js +0 -1
- music_assistant_frontend/assets/BrowseView-CYbwlBvT.css +0 -1
- music_assistant_frontend/assets/BrowseView-tAHBas4g.js +0 -1
- music_assistant_frontend/assets/Button-BcX_QSum.js +0 -1
- music_assistant_frontend/assets/Button-D25yJYMO.css +0 -1
- music_assistant_frontend/assets/Container-Bc5cvdS8.js +0 -1
- music_assistant_frontend/assets/Container-Df7sl-nn.css +0 -1
- music_assistant_frontend/assets/CreateTokenDialog.vue_vue_type_script_setup_true_lang-BHmJvDQD.js +0 -1
- music_assistant_frontend/assets/Default-BFKmuyAJ.css +0 -1
- music_assistant_frontend/assets/Default-DdviBUvO.js +0 -21
- music_assistant_frontend/assets/EditConfig-Bwi8QH5_.js +0 -2
- music_assistant_frontend/assets/EditConfig-UwCqmE_b.css +0 -1
- music_assistant_frontend/assets/EditCoreConfig-DhX-oxAE.css +0 -1
- music_assistant_frontend/assets/EditCoreConfig-Dlub9slv.js +0 -1
- music_assistant_frontend/assets/EditPlayer-CBFrbjNV.js +0 -1
- music_assistant_frontend/assets/EditPlayer-D1wKcKqn.css +0 -1
- music_assistant_frontend/assets/EditPlayerDsp-DTXNvLKR.js +0 -9
- music_assistant_frontend/assets/EditPlayerDsp-aJcSg6U0.css +0 -1
- music_assistant_frontend/assets/EditProvider-CHnmNs-E.js +0 -1
- music_assistant_frontend/assets/EditProvider-CM1P0zG2.css +0 -1
- music_assistant_frontend/assets/FrontendConfig-B3J0qsPa.js +0 -1
- music_assistant_frontend/assets/HomeView-BprizvGE.css +0 -1
- music_assistant_frontend/assets/HomeView-CfJ6PURe.js +0 -1
- music_assistant_frontend/assets/ItemsListing-4Tzirx3k.js +0 -1
- music_assistant_frontend/assets/ItemsListing-DBRgGdb9.css +0 -1
- music_assistant_frontend/assets/LibraryAlbums-B-uXhDO3.js +0 -1
- music_assistant_frontend/assets/LibraryArtists-Cm1JjbAl.js +0 -1
- music_assistant_frontend/assets/LibraryAudiobooks-BhxjD53T.js +0 -1
- music_assistant_frontend/assets/LibraryPlaylists-B854CAZn.js +0 -1
- music_assistant_frontend/assets/LibraryPodcasts-RhDZe6jX.js +0 -1
- music_assistant_frontend/assets/LibraryRadios-DL5ap70-.js +0 -1
- music_assistant_frontend/assets/LibraryTracks-9TVfLfIN.js +0 -1
- music_assistant_frontend/assets/ListItem-CZjh-Z2L.css +0 -1
- music_assistant_frontend/assets/ListItem-Cz0zK7Ay.js +0 -1
- music_assistant_frontend/assets/MediaItemImages-Dz3pW0B9.js +0 -1
- music_assistant_frontend/assets/MediaItemImages-EU1ndGHN.css +0 -1
- music_assistant_frontend/assets/MediaItemThumb-C--YJJ5Y.js +0 -1
- music_assistant_frontend/assets/NowPlayingBadge.vue_vue_type_style_index_0_lang-BZUcSWaz.js +0 -1
- music_assistant_frontend/assets/PanelviewItemCompact-BFofUlbn.js +0 -1
- music_assistant_frontend/assets/PanelviewItemCompact-BzbA-hBb.css +0 -1
- music_assistant_frontend/assets/PlayerCard-BSr8tpdq.js +0 -1
- music_assistant_frontend/assets/PlayerCard-C-JW0iD0.css +0 -1
- music_assistant_frontend/assets/Players-BKvWHX7u.js +0 -1
- music_assistant_frontend/assets/Players-BpLyas-U.css +0 -1
- music_assistant_frontend/assets/PlaylistDetails-DwPf38WL.js +0 -1
- music_assistant_frontend/assets/PodcastDetails-BkL3RLSo.js +0 -1
- music_assistant_frontend/assets/ProviderDetails-sWAPBlBe.css +0 -1
- music_assistant_frontend/assets/ProviderDetails.vue_vue_type_script_setup_true_lang-Boj6o7qU.js +0 -8
- music_assistant_frontend/assets/Providers-7gRu2tNl.js +0 -1
- music_assistant_frontend/assets/Providers-CZ5m317K.css +0 -1
- music_assistant_frontend/assets/RadioDetails-B5bulWqe.js +0 -1
- music_assistant_frontend/assets/RemoteAccessSettings-Bf5s7Cwr.css +0 -1
- music_assistant_frontend/assets/RemoteAccessSettings-CFIeLSWz.js +0 -1
- music_assistant_frontend/assets/Search-BAjKkIIQ.js +0 -1
- music_assistant_frontend/assets/ServerLogs-CCtjIDNl.js +0 -4
- music_assistant_frontend/assets/ServerLogs-D16I7ozL.css +0 -1
- music_assistant_frontend/assets/Settings-BE2vTu_e.css +0 -1
- music_assistant_frontend/assets/Settings-C8IEjo0h.js +0 -1
- music_assistant_frontend/assets/SystemConfig-DgVHrDLs.js +0 -1
- music_assistant_frontend/assets/Toolbar-BhPGsr4E.js +0 -1
- music_assistant_frontend/assets/Toolbar-DzRHLZVV.css +0 -1
- music_assistant_frontend/assets/TrackDetails-CN0utK-p.js +0 -1
- music_assistant_frontend/assets/UserManagement-BXsqKl-G.css +0 -1
- music_assistant_frontend/assets/UserManagement-XUiOYKeu.js +0 -1
- music_assistant_frontend/assets/UserProfile-2WJSaYoR.css +0 -1
- music_assistant_frontend/assets/UserProfile-BJFh70ps.js +0 -1
- music_assistant_frontend/assets/VAlert-BDbtqfCV.css +0 -1
- music_assistant_frontend/assets/VAlert-C8Oto4eV.js +0 -1
- music_assistant_frontend/assets/VCheckbox-CgwahLqh.js +0 -1
- music_assistant_frontend/assets/VCheckbox-CvH8ekHL.css +0 -1
- music_assistant_frontend/assets/VCheckboxBtn-orONEqTE.js +0 -1
- music_assistant_frontend/assets/VDialog-DwTSAOeg.css +0 -1
- music_assistant_frontend/assets/VDialog-OmJrmVI_.js +0 -1
- music_assistant_frontend/assets/VExpansionPanels-B8KjM0Qi.css +0 -1
- music_assistant_frontend/assets/VExpansionPanels-D8F4VK-K.js +0 -1
- music_assistant_frontend/assets/VForm-CRBkgkz1.js +0 -1
- music_assistant_frontend/assets/VInfiniteScroll-B-XMauN8.css +0 -1
- music_assistant_frontend/assets/VInfiniteScroll-C839Qj3G.js +0 -1
- music_assistant_frontend/assets/VSelect-DMb2DNZp.css +0 -1
- music_assistant_frontend/assets/VSelect-vsgYa-Ce.js +0 -1
- music_assistant_frontend/assets/VSelectionControl-C9uJkKHo.js +0 -1
- music_assistant_frontend/assets/VSelectionControl-CIeJsqfW.css +0 -1
- music_assistant_frontend/assets/VSlider-BxXcuhLj.js +0 -1
- music_assistant_frontend/assets/VSlider-DlBvQp-0.css +0 -1
- music_assistant_frontend/assets/VSwitch-C4Td5_x0.js +0 -1
- music_assistant_frontend/assets/VSwitch-Mm7Rd7At.css +0 -1
- music_assistant_frontend/assets/VToolbar-BTrAkkB7.js +0 -1
- music_assistant_frontend/assets/VToolbar-D1tRNhN6.css +0 -1
- music_assistant_frontend/assets/VVirtualScroll-BNcY_ygg.css +0 -1
- music_assistant_frontend/assets/VVirtualScroll-YsHPZNGu.js +0 -1
- music_assistant_frontend/assets/WidgetRow-lS8eZGg2.js +0 -1
- music_assistant_frontend/assets/index-BYK1uYGl.css +0 -1
- music_assistant_frontend/assets/index-GQ3lWXrm.js +0 -1047
- music_assistant_frontend/assets/marquee_text_sync-a11Dvzhd.js +0 -1
- music_assistant_frontend/assets/userPreferences-CU3N6m4Z.js +0 -1
- music_assistant_frontend-2.17.34.dist-info/RECORD +0 -154
- {music_assistant_frontend-2.17.34.dist-info → music_assistant_frontend-2.17.63.dist-info}/WHEEL +0 -0
- {music_assistant_frontend-2.17.34.dist-info → music_assistant_frontend-2.17.63.dist-info}/licenses/LICENSE +0 -0
- {music_assistant_frontend-2.17.34.dist-info → music_assistant_frontend-2.17.63.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as D,D as b,e as u,u as e,A as j,E as t,h as R,J as We,K as Xe,H as a,ad as xe,f as $,b1 as Ve,b3 as Be,b4 as Ze,r as I,G as Ye,w as oe,c as G,I as z,o as be,a as Se,$ as _,a1 as o,b as O,aq as Ue,an as Fe,F as Y,M as ee,N as Ce,O as J,b5 as ea,_ as $e,j as ne,a_ as he,aL as Ie,aV as aa,aW as ge,aX as ye,aG as ta,aQ as sa,aH as la,P as oa,aZ as na}from"./lucide-C2DU1LFb.js";import{i as T,a as ze,q as Pe,r as De,Y as Te,Z as Oe,n as re,p as Ne}from"./vuetify-CrxirfrA.js";import{_ as ra,a as ua,b as da}from"./AvatarImage.vue_vue_type_script_setup_true_lang-DBokkkla.js";import{_ as ia}from"./index-BMjInzaQ.js";import{_ as N}from"./index-_We2Vr5Z.js";import{u as ke,k as ca,i as je,_ as L,a as E,b as X,j as W,e as ie,l as ma,c as pa,g as se,t as fa,d as _a,f as va}from"./profile-Cv_y861N.js";import{_ as ha,a as ga,b as ya,d as le,c as ba}from"./DropdownMenuTrigger.vue_vue_type_script_setup_true_lang-DWuSqU5E.js";import{a as ce,b as me,c as pe,d as H,_ as fe,e as $a,f as ka,g as wa}from"./index-vt6UORr-.js";import{v as q,A as Ca,x as we}from"./vueuse-DIaEWNCo.js";import{s as xa,u as _e,t as Va,v as Ba,w as Sa,x as Ua,p as Q,y as Fa,z as Ia,A as za,B as Pa,E as Da,F as Ta,G as Oa,H as Na,I as ja,L as La,P as Ea,J as Le,K as Ra,M as Ma,N as Ga,O as Aa,Q as qa,g as Ee,R as Ja,U as Ka,V as Ha,W as Qa}from"./reka-ui-GpbaI08z.js";import{c as M}from"./utils-CDN07tui.js";import{c as K,U as Re,_ as Me,s as ue,J as Wa}from"./index-BFLe16Zh.js";import{_ as Xa,a as Za,b as Ya}from"./PopoverTrigger.vue_vue_type_script_setup_true_lang-ZsAs7pQL.js";import{u as Z}from"./vue-i18n-CX-lsKIo.js";import"./qrcode-DSFhiIp2.js";import"./marked-C0Rlrcoy.js";import"./color-BTziYnFN.js";import"./vue-router-BgJK_hRC.js";/* empty css */import"./swiper-Jy9GbtzK.js";const et=D({__name:"PopoverAnchor",props:{reference:{},asChild:{type:Boolean},as:{}},setup(d){const m=d;return(r,l)=>(u(),b(e(xa),j({"data-slot":"popover-anchor"},m),{default:t(()=>[R(r.$slots,"default")]),_:3},16))}}),Ge=D({__name:"Select",props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:["update:modelValue","update:open"],setup(d,{emit:m}){const c=_e(d,m);return(f,h)=>(u(),b(e(Va),j({"data-slot":"select"},e(c)),{default:t(p=>[R(f.$slots,"default",We(Xe(p)))]),_:3},16))}}),Ae=D({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean},position:{default:"popper"},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{default:void 0}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(d,{emit:m}){const r=d,l=m,c=q(r,"class"),f=_e(c,l);return(h,p)=>(u(),b(e(Ba),null,{default:t(()=>[a(e(Sa),j({"data-slot":"select-content"},{...h.$attrs,...e(f)},{class:e(M)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative !z-[10000] max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md",d.position==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",r.class)}),{default:t(()=>[a(e(st)),a(e(Ua),{class:xe(e(M)("p-1",d.position==="popper"&&"h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1"))},{default:t(()=>[R(h.$slots,"default")]),_:3},8,["class"]),a(e(tt))]),_:3},16,["class"])]),_:3}))}}),at={class:"absolute right-2 flex size-3.5 items-center justify-center"},qe=D({__name:"SelectItem",props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r);return(c,f)=>(u(),b(e(Fa),j({"data-slot":"select-item"},e(l),{class:e(M)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",m.class)}),{default:t(()=>[$("span",at,[a(e(Ia),null,{default:t(()=>[R(c.$slots,"indicator-icon",{},()=>[a(e(Ve),{class:"size-4"})])]),_:3})]),a(e(za),null,{default:t(()=>[R(c.$slots,"default")]),_:3})]),_:3},16,["class"]))}}),tt=D({__name:"SelectScrollDownButton",props:{asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r);return(c,f)=>(u(),b(e(Pa),j({"data-slot":"select-scroll-down-button"},e(l),{class:e(M)("flex cursor-default items-center justify-center py-1",m.class)}),{default:t(()=>[R(c.$slots,"default",{},()=>[a(e(Be),{class:"size-4"})])]),_:3},16,["class"]))}}),st=D({__name:"SelectScrollUpButton",props:{asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r);return(c,f)=>(u(),b(e(Da),j({"data-slot":"select-scroll-up-button"},e(l),{class:e(M)("flex cursor-default items-center justify-center py-1",m.class)}),{default:t(()=>[R(c.$slots,"default",{},()=>[a(e(Ze),{class:"size-4"})])]),_:3},16,["class"]))}}),Je=D({__name:"SelectTrigger",props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{default:void 0},size:{default:"default"}},setup(d){const m=d,r=q(m,"class","size"),l=Q(r);return(c,f)=>(u(),b(e(Ta),j({"data-slot":"select-trigger","data-size":d.size},e(l),{class:e(M)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",m.class)}),{default:t(()=>[R(c.$slots,"default"),a(e(Oa),{"as-child":""},{default:t(()=>[a(e(Be),{class:"size-4 opacity-50"})]),_:1})]),_:3},16,["data-size","class"]))}}),Ke=D({__name:"SelectValue",props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(d){const m=d;return(r,l)=>(u(),b(e(Na),j({"data-slot":"select-value"},m),{default:t(()=>[R(r.$slots,"default")]),_:3},16))}}),lt=D({__name:"Command",props:{modelValue:{default:""},defaultValue:{},multiple:{type:Boolean},orientation:{},dir:{},disabled:{type:Boolean},selectionBehavior:{},highlightOnHover:{type:Boolean},by:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{default:void 0}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(d,{emit:m}){const r=d,l=m,c=q(r,"class"),f=_e(c,l),h=I(new Map),p=I(new Map),{contains:w}=ja({sensitivity:"base"}),k=Ye({search:"",filtered:{count:0,items:new Map,groups:new Set}});function V(){if(!k.search){k.filtered.count=h.value.size;return}k.filtered.groups=new Set;let B=0;for(const[S,C]of h.value){const g=w(C,k.search);k.filtered.items.set(S,g?1:0),g&&B++}for(const[S,C]of p.value)for(const g of C)if(k.filtered.items.get(g)>0){k.filtered.groups.add(S);break}k.filtered.count=B}return oe(()=>k.search,()=>{V()}),mt({allItems:h,allGroups:p,filterState:k}),(B,S)=>(u(),b(e(La),j({"data-slot":"command"},e(f),{class:e(M)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",r.class)}),{default:t(()=>[R(B.$slots,"default")]),_:3},16,["class"]))}}),ot=D({__name:"CommandEmpty",props:{asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),{filterState:l}=ve(),c=G(()=>!!l.search&&l.filtered.count===0);return(f,h)=>c.value?(u(),b(e(Ea),j({key:0,"data-slot":"command-empty"},e(r),{class:e(M)("py-6 text-center text-sm",m.class)}),{default:t(()=>[R(f.$slots,"default")]),_:3},16,["class"])):z("",!0)}}),nt=D({__name:"CommandGroup",props:{asChild:{type:Boolean},as:{},class:{},heading:{}},setup(d){const m=d,r=q(m,"class"),{allGroups:l,filterState:c}=ve(),f=Le(),h=G(()=>c.search?c.filtered.groups.has(f):!0);return ft({id:f}),be(()=>{l.value.has(f)||l.value.set(f,new Set)}),Se(()=>{l.value.delete(f)}),(p,w)=>(u(),b(e(Ra),j(e(r),{id:e(f),"data-slot":"command-group",class:e(M)("text-foreground overflow-hidden p-1",m.class),hidden:h.value?void 0:!0}),{default:t(()=>[d.heading?(u(),b(e(Ma),{key:0,"data-slot":"command-group-heading",class:"px-2 py-1.5 text-xs font-medium text-muted-foreground"},{default:t(()=>[_(o(d.heading),1)]),_:1})):z("",!0),R(p.$slots,"default")]),_:3},16,["id","class","hidden"]))}}),rt={"data-slot":"command-input-wrapper",class:"flex h-9 items-center gap-2 border-b px-3"},ut=D({inheritAttrs:!1,__name:"CommandInput",props:{modelValue:{},autoFocus:{type:Boolean},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r),{filterState:c}=ve();return(f,h)=>(u(),O("div",rt,[a(e(Ue),{class:"size-4 shrink-0 opacity-50"}),a(e(Ga),j({...e(l),...f.$attrs},{modelValue:e(c).search,"onUpdate:modelValue":h[0]||(h[0]=p=>e(c).search=p),"data-slot":"command-input","auto-focus":"",class:e(M)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",m.class)}),null,16,["modelValue","class"])]))}}),dt=D({__name:"CommandItem",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["select"],setup(d,{emit:m}){const r=d,l=m,c=q(r,"class"),f=_e(c,l),h=Le(),{filterState:p,allItems:w,allGroups:k}=ve(),V=pt(),B=G(()=>{if(p.search){const g=p.filtered.items.get(h);return g===void 0?!0:g>0}else return!0}),S=I(),C=Ca(S);return be(()=>{if(!(C.value instanceof HTMLElement))return;w.value.set(h,C.value.textContent??r.value?.toString()??"");const g=V?.id;g&&(k.value.has(g)?k.value.get(g)?.add(h):k.value.set(g,new Set([h])))}),Se(()=>{w.value.delete(h)}),(g,F)=>B.value?(u(),b(e(Aa),j({key:0},e(f),{id:e(h),ref_key:"itemRef",ref:S,"data-slot":"command-item",class:e(M)("data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",r.class),onSelect:F[0]||(F[0]=()=>{e(p).search=""})}),{default:t(()=>[R(g.$slots,"default")]),_:3},16,["id","class"])):z("",!0)}}),it={role:"presentation"},ct=D({__name:"CommandList",props:{asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r);return(c,f)=>(u(),b(e(qa),j({"data-slot":"command-list"},e(l),{class:e(M)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",m.class)}),{default:t(()=>[$("div",it,[R(c.$slots,"default")])]),_:3},16,["class"]))}}),[ve,mt]=Ee("Command"),[pt,ft]=Ee("CommandGroup"),_t=D({__name:"TagsInputInput",props:{placeholder:{},autoFocus:{type:Boolean},maxLength:{},asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r);return(c,f)=>(u(),b(e(Ja),j(e(l),{class:e(M)("text-sm min-h-5 focus:outline-none flex-1 bg-transparent px-1",m.class)}),null,16,["class"]))}}),vt=D({__name:"TagsInputItem",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r);return(c,f)=>(u(),b(e(Ka),j(e(l),{class:e(M)("flex h-5 items-center rounded-md bg-secondary data-[state=active]:ring-ring data-[state=active]:ring-2 data-[state=active]:ring-offset-2 ring-offset-background",m.class)}),{default:t(()=>[R(c.$slots,"default")]),_:3},16,["class"]))}}),ht=D({__name:"TagsInputItemDelete",props:{asChild:{type:Boolean},as:{},class:{}},setup(d){const m=d,r=q(m,"class"),l=Q(r);return(c,f)=>(u(),b(e(Ha),j(e(l),{class:e(M)("flex rounded bg-transparent mr-1",m.class)}),{default:t(()=>[R(c.$slots,"default",{},()=>[a(e(Fe),{class:"w-4 h-4"})])]),_:3},16,["class"]))}}),de=D({__name:"MultiSelect",props:{modelValue:{},options:{},placeholder:{}},emits:["update:modelValue"],setup(d,{emit:m}){const{t:r}=Z(),l=d,c=m,f=I(!1),h=G({get:()=>l.modelValue||[],set:V=>{c("update:modelValue",V)}}),p=V=>h.value.includes(V),w=V=>{const B=h.value,S=B.includes(V)?B.filter(C=>C!==V):[...B,V];h.value=S},k=V=>{const B=String(V);return l.options.find(C=>C.value===B)?.label||B};return(V,B)=>(u(),b(e(Xa),{open:f.value,"onUpdate:open":B[5]||(B[5]=S=>f.value=S)},{default:t(()=>[a(e(et),{class:"inline-flex w-full"},{default:t(()=>[a(e(Qa),{modelValue:h.value,"onUpdate:modelValue":B[3]||(B[3]=S=>h.value=S),delimiter:"",class:"flex gap-2 items-center flex-wrap rounded-md border border-input bg-background px-3 py-2 text-sm shadow-xs transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px] min-h-[2.5rem] w-full"},{default:t(({modelValue:S})=>[(u(!0),O(Y,null,ee(S,C=>(u(),b(e(vt),{key:String(C),value:C,class:"flex items-center justify-center gap-1.5 text-sm bg-primary text-primary-foreground rounded px-2 py-0.5"},{default:t(()=>[$("span",null,o(k(String(C))),1),a(e(ht),null,{default:t(()=>[a(e(Fe),{size:12})]),_:1})]),_:2},1032,["value"]))),128)),a(e(_t),{placeholder:d.placeholder,class:"flex-1 min-w-[120px]",onKeydown:[B[0]||(B[0]=Ce(J(()=>{},["prevent"]),["enter"])),B[1]||(B[1]=Ce(C=>f.value=!0,["down"]))]},null,8,["placeholder"]),a(e(Za),{"as-child":""},{default:t(()=>[a(e(N),{size:"icon-sm",variant:"ghost",class:"ml-auto shrink-0",onClick:B[2]||(B[2]=J(()=>{},["prevent"]))},{default:t(()=>[a(e(ea),{size:16,class:"opacity-50"})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(e(Ya),{class:"w-[var(--radix-popover-anchor-width)] p-0",align:"start","side-offset":4,"collision-padding":16,onOpenAutoFocus:B[4]||(B[4]=J(()=>{},["prevent"]))},{default:t(()=>[a(e(lt),null,{default:t(()=>[a(e(ut),{placeholder:V.$t("search")},null,8,["placeholder"]),a(e(ct),{class:"max-h-[250px] overflow-y-auto"},{default:t(()=>[a(e(ot),null,{default:t(()=>[_(o(V.$t("no_content")),1)]),_:1}),a(e(nt),null,{default:t(()=>[(u(!0),O(Y,null,ee(l.options,S=>(u(),b(e(dt),{key:S.value,value:S.value,onSelect:C=>{w(S.value)}},{default:t(()=>[_(o(S.label)+" ",1),a(e(Ve),{class:xe(e(M)("ml-auto",p(S.value)?"opacity-100":"opacity-0"))},null,8,["class"])]),_:2},1032,["value","onSelect"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]))}}),gt=D({__name:"CreateUserDialog",props:{modelValue:{type:Boolean}},emits:["update:modelValue","created"],setup(d,{emit:m}){const{t:r}=Z(),l=d,c=m,f=we(l,"modelValue",c),h=I(!1),p=I(null),w=async()=>{if(await ne(),!p.value)return;const v=p.value.querySelector("[aria-invalid='true'], [data-invalid='true']");v&&(v.scrollIntoView({behavior:"smooth",block:"center"}),v.focus())},k=async()=>{await C.handleSubmit(),await ne(),p.value&&p.value.querySelector("[aria-invalid='true'], [data-invalid='true']")&&await w()},V=G(()=>[{label:r("auth.admin_role"),value:"admin"},{label:r("auth.user_role"),value:"user"}]),B=G(()=>Object.values(K.players).map(v=>({label:v.name,value:v.player_id})).sort((v,A)=>v.label.localeCompare(A.label))),S=G(()=>Object.values(K.providers).filter(v=>v.type===Re.MUSIC).map(v=>({label:v.name,value:v.instance_id})).sort((v,A)=>v.label.localeCompare(A.label))),C=ke({defaultValues:{username:"",displayName:"",password:"",confirmPassword:"",role:"user",playerFilter:[],providerFilter:[]},validators:{onSubmit:ca(r)},onSubmit:async({value:v})=>{h.value=!0;try{await K.createUser(v.username,v.password,v.role,v.displayName||void 0,v.playerFilter.length>0?v.playerFilter:void 0,v.providerFilter.length>0?v.providerFilter:void 0)?(T.success(r("auth.user_created")),C.reset(),c("created"),c("update:modelValue",!1)):T.error(r("auth.user_create_failed"))}catch{T.error(r("auth.user_create_failed"))}finally{h.value=!1}}}),g=v=>v.state.meta.errors.length>0,F=()=>{C.reset(),c("update:modelValue",!1)};return oe(()=>l.modelValue,v=>{v||C.reset()}),(v,A)=>(u(),b(e(fe),{open:e(f),"onUpdate:open":A[0]||(A[0]=s=>$e(f)?f.value=s:null)},{default:t(()=>[a(e(ce),{class:"max-h-[70vh] flex flex-col p-0"},{default:t(()=>[a(e(me),{class:"px-6 pt-6 pb-4"},{default:t(()=>[a(e(pe),null,{default:t(()=>[_(o(v.$t("auth.create_user")),1)]),_:1})]),_:1}),$("div",{ref_key:"scrollContainer",ref:p,class:"flex-1 overflow-y-auto px-6"},[$("form",{id:"form-create-user",onSubmit:J(k,["prevent"])},[a(e(je),null,{default:t(()=>[a(e(C).Field,{name:"username"},{default:t(({field:s})=>[a(e(L),{"data-invalid":g(s)},{default:t(()=>[a(e(E),{for:s.name},{default:t(()=>[_(o(v.$t("auth.username")),1)]),_:1},8,["for"]),a(e(H),{id:s.name,name:s.name,"model-value":s.state.value,"aria-invalid":g(s),autofocus:"",autocomplete:"username",onBlur:s.handleBlur,onInput:i=>{s.handleChange(i.target.value)}},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),g(s)?(u(),b(e(X),{key:0,errors:s.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(C).Field,{name:"displayName"},{default:t(({field:s})=>[a(e(L),null,{default:t(()=>[a(e(E),{for:s.name},{default:t(()=>[_(o(v.$t("auth.display_name")),1)]),_:1},8,["for"]),a(e(H),{id:s.name,name:s.name,"model-value":s.state.value,autocomplete:"name",onBlur:s.handleBlur,onInput:i=>{s.handleChange(i.target.value)}},null,8,["id","name","model-value","onBlur","onInput"]),a(e(W),null,{default:t(()=>[_(o(v.$t("optional")),1)]),_:1})]),_:2},1024)]),_:1}),a(e(C).Field,{name:"password"},{default:t(({field:s})=>[a(e(L),{"data-invalid":g(s)},{default:t(()=>[a(e(E),{for:s.name},{default:t(()=>[_(o(v.$t("auth.password")),1)]),_:1},8,["for"]),a(e(H),{id:s.name,name:s.name,type:"password","model-value":s.state.value,"aria-invalid":g(s),autocomplete:"new-password",onBlur:s.handleBlur,onInput:i=>{s.handleChange(i.target.value)}},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),g(s)?(u(),b(e(X),{key:0,errors:s.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(C).Field,{name:"confirmPassword"},{default:t(({field:s})=>[a(e(L),{"data-invalid":g(s)},{default:t(()=>[a(e(E),{for:s.name},{default:t(()=>[_(o(v.$t("auth.confirm_password")),1)]),_:1},8,["for"]),a(e(H),{id:s.name,name:s.name,type:"password","model-value":s.state.value,"aria-invalid":g(s),autocomplete:"new-password",onBlur:s.handleBlur,onInput:i=>{s.handleChange(i.target.value)}},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),g(s)?(u(),b(e(X),{key:0,errors:s.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(C).Field,{name:"role"},{default:t(({field:s})=>[a(e(L),null,{default:t(()=>[a(e(E),{for:s.name},{default:t(()=>[_(o(v.$t("auth.role")),1)]),_:1},8,["for"]),a(e(Ge),{"model-value":s.state.value,"onUpdate:modelValue":i=>s.handleChange(i)},{default:t(()=>[a(e(Je),{id:s.name,class:"w-full"},{default:t(()=>[a(e(Ke),{placeholder:v.$t("auth.role")},null,8,["placeholder"])]),_:1},8,["id"]),a(e(Ae),null,{default:t(()=>[(u(!0),O(Y,null,ee(V.value,i=>(u(),b(e(qe),{key:i.value,value:i.value},{default:t(()=>[_(o(i.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024)]),_:1}),a(e(C).Field,{name:"playerFilter"},{default:t(({field:s})=>[a(e(L),null,{default:t(()=>[a(e(E),null,{default:t(()=>[_(o(v.$t("auth.player_filter")),1)]),_:1}),a(de,{"model-value":s.state.value,options:B.value,placeholder:v.$t("auth.select_players"),"onUpdate:modelValue":s.handleChange},null,8,["model-value","options","placeholder","onUpdate:modelValue"]),a(e(W),null,{default:t(()=>[_(o(v.$t("auth.player_filter_hint")),1)]),_:1})]),_:2},1024)]),_:1}),a(e(C).Field,{name:"providerFilter"},{default:t(({field:s})=>[a(e(L),null,{default:t(()=>[a(e(E),null,{default:t(()=>[_(o(v.$t("auth.provider_filter")),1)]),_:1}),a(de,{"model-value":s.state.value,options:S.value,placeholder:v.$t("auth.select_providers"),"onUpdate:modelValue":s.handleChange},null,8,["model-value","options","placeholder","onUpdate:modelValue"]),a(e(W),null,{default:t(()=>[_(o(v.$t("auth.provider_filter_hint")),1)]),_:1})]),_:2},1024)]),_:1})]),_:1})],32)],512),a(e(ie),{class:"px-6 pb-6 pt-4 border-t shrink-0"},{default:t(()=>[a(e(N),{variant:"outline",onClick:F},{default:t(()=>[_(o(v.$t("cancel")),1)]),_:1}),a(e(N),{type:"submit",form:"form-create-user",disabled:h.value,loading:h.value},{default:t(()=>[_(o(v.$t("create")),1)]),_:1},8,["disabled","loading"])]),_:1})]),_:1})]),_:1},8,["open"]))}}),yt={class:"text-body-1 mb-4"},bt={key:0,class:"user-name-box"},$t=D({__name:"DeleteUserDialog",props:{modelValue:{type:Boolean},user:{}},emits:["update:modelValue","deleted"],setup(d,{emit:m}){const{t:r}=Z(),l=d,c=m,f=I(!1),h=async()=>{if(l.user){f.value=!0;try{await K.deleteUser(l.user.user_id)?(T.success(r("auth.user_deleted")),c("deleted"),c("update:modelValue",!1)):T.error(r("auth.user_delete_failed"))}catch{T.error(r("auth.user_delete_failed"))}finally{f.value=!1}}};return(p,w)=>(u(),b(Ne,{"model-value":d.modelValue,"max-width":"480","onUpdate:modelValue":w[1]||(w[1]=k=>c("update:modelValue",k))},{default:t(()=>[a(ze,null,{default:t(()=>[a(Pe,{class:"text-h6 pl-6 pb-0"},{default:t(()=>[_(o(p.$t("auth.delete_user")),1)]),_:1}),a(De,{class:"px-6 pb-2"},{default:t(()=>[$("p",yt,o(p.$t("auth.confirm_delete_user")),1),d.user?(u(),O("div",bt,o(d.user.display_name||d.user.username),1)):z("",!0)]),_:1}),a(Te,{class:"pa-6 pt-4"},{default:t(()=>[a(Oe),a(re,{variant:"text",onClick:w[0]||(w[0]=k=>c("update:modelValue",!1))},{default:t(()=>[_(o(p.$t("cancel")),1)]),_:1}),a(re,{color:"error",variant:"flat",loading:f.value,onClick:h},{default:t(()=>[_(o(p.$t("auth.delete_user")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"]))}}),kt=Me($t,[["__scopeId","data-v-8cbf5f8f"]]),wt={class:"text-body-1 mb-4"},Ct={key:0,class:"user-name-box"},xt=D({__name:"DisableUserDialog",props:{modelValue:{type:Boolean},user:{}},emits:["update:modelValue","disabled"],setup(d,{emit:m}){const{t:r}=Z(),l=d,c=m,f=I(!1),h=async()=>{if(l.user){f.value=!0;try{await K.disableUser(l.user.user_id)?(T.success(r("auth.user_disabled")),c("disabled"),c("update:modelValue",!1)):T.error(r("auth.user_disable_failed"))}catch{T.error(r("auth.user_disable_failed"))}finally{f.value=!1}}};return(p,w)=>(u(),b(Ne,{"model-value":d.modelValue,"max-width":"480","onUpdate:modelValue":w[1]||(w[1]=k=>c("update:modelValue",k))},{default:t(()=>[a(ze,null,{default:t(()=>[a(Pe,{class:"text-h6 pl-6 pb-0"},{default:t(()=>[_(o(p.$t("auth.disable_user")),1)]),_:1}),a(De,{class:"px-6 pb-2"},{default:t(()=>[$("p",wt,o(p.$t("auth.confirm_disable_user")),1),d.user?(u(),O("div",Ct,o(d.user.display_name||d.user.username),1)):z("",!0)]),_:1}),a(Te,{class:"pa-6 pt-4"},{default:t(()=>[a(Oe),a(re,{variant:"text",onClick:w[0]||(w[0]=k=>c("update:modelValue",!1))},{default:t(()=>[_(o(p.$t("cancel")),1)]),_:1}),a(re,{color:"error",variant:"flat",loading:f.value,onClick:h},{default:t(()=>[_(o(p.$t("auth.disable_user")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"]))}}),Vt=Me(xt,[["__scopeId","data-v-9638370d"]]),Bt=D({__name:"EditUserDialog",props:{modelValue:{type:Boolean},user:{}},emits:["update:modelValue","updated"],setup(d,{emit:m}){const{t:r}=Z(),l=d,c=m,f=we(l,"modelValue",c),h=I(!1),p=I(null),w=async()=>{if(await ne(),!p.value)return;const s=p.value.querySelector("[aria-invalid='true'], [data-invalid='true']");s&&(s.scrollIntoView({behavior:"smooth",block:"center"}),s.focus())},k=async()=>{await g.handleSubmit(),await ne(),p.value&&p.value.querySelector("[aria-invalid='true'], [data-invalid='true']")&&await w()},V=G(()=>[{label:r("auth.admin_role"),value:"admin"},{label:r("auth.user_role"),value:"user"}]),B=G(()=>Object.values(K.players).map(s=>({label:s.name,value:s.player_id})).sort((s,i)=>s.label.localeCompare(i.label))),S=G(()=>Object.values(K.providers).filter(s=>s.type===Re.MUSIC).map(s=>({label:s.name,value:s.instance_id})).sort((s,i)=>s.label.localeCompare(i.label))),C=G(()=>!l.user||!ue.currentUser?!1:l.user.user_id===ue.currentUser.user_id),g=ke({defaultValues:{username:l.user?.username||"",displayName:l.user?.display_name||"",avatarUrl:l.user?.avatar_url||"",role:l.user?.role||"user",password:"",confirmPassword:"",playerFilter:l.user?.player_filter||[],providerFilter:l.user?.provider_filter||[]},validators:{onSubmit:ma(r)},onSubmit:async({value:s})=>{if(l.user){h.value=!0;try{const i={};s.username!==l.user.username&&(i.username=s.username),s.displayName!==(l.user.display_name||"")&&(i.displayName=s.displayName),s.avatarUrl!==(l.user.avatar_url||"")&&(i.avatarUrl=s.avatarUrl),s.role!==l.user.role&&!C.value&&(i.role=s.role),s.password&&(i.password=s.password);const n=l.user.player_filter||[];JSON.stringify([...s.playerFilter].sort())!==JSON.stringify([...n].sort())&&(i.player_filter=s.playerFilter);const y=l.user.provider_filter||[];JSON.stringify([...s.providerFilter].sort())!==JSON.stringify([...y].sort())&&(i.provider_filter=s.providerFilter),await K.updateUser(l.user.user_id,i),T.success(r("auth.user_updated")),c("updated"),c("update:modelValue",!1)}catch{T.error(r("auth.user_update_failed"))}finally{h.value=!1}}}}),F=s=>s.state.meta.errors.length>0,v=()=>{l.user&&(g.setFieldValue("username",l.user.username),g.setFieldValue("displayName",l.user.display_name||""),g.setFieldValue("avatarUrl",l.user.avatar_url||""),g.setFieldValue("role",l.user.role),g.setFieldValue("password",""),g.setFieldValue("confirmPassword",""),g.setFieldValue("playerFilter",l.user.player_filter||[]),g.setFieldValue("providerFilter",l.user.provider_filter||[]))},A=()=>{v(),c("update:modelValue",!1)};return oe(()=>l.user,v,{immediate:!0}),oe(()=>l.modelValue,s=>{s&&v()}),(s,i)=>(u(),b(e(fe),{open:e(f),"onUpdate:open":i[0]||(i[0]=n=>$e(f)?f.value=n:null)},{default:t(()=>[a(e(ce),{class:"sm:max-w-[500px] max-h-[90vh] flex flex-col p-0"},{default:t(()=>[a(e(me),{class:"px-6 pt-6 pb-4"},{default:t(()=>[a(e(pe),null,{default:t(()=>[_(o(s.$t("auth.edit_user")),1)]),_:1})]),_:1}),$("div",{ref_key:"scrollContainer",ref:p,class:"flex-1 overflow-y-auto px-6"},[$("form",{id:"form-edit-user",onSubmit:J(k,["prevent"])},[a(e(je),null,{default:t(()=>[a(e(g).Field,{name:"username"},{default:t(({field:n})=>[a(e(L),{"data-invalid":F(n)},{default:t(()=>[a(e(E),{for:n.name},{default:t(()=>[_(o(s.$t("auth.username")),1)]),_:1},8,["for"]),a(e(H),{id:n.name,name:n.name,"model-value":n.state.value,"aria-invalid":F(n),autocomplete:"username",onBlur:n.handleBlur,onInput:y=>{n.handleChange(y.target.value)}},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),F(n)?(u(),b(e(X),{key:0,errors:n.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(g).Field,{name:"displayName"},{default:t(({field:n})=>[a(e(L),null,{default:t(()=>[a(e(E),{for:n.name},{default:t(()=>[_(o(s.$t("auth.display_name")),1)]),_:1},8,["for"]),a(e(H),{id:n.name,name:n.name,"model-value":n.state.value,autocomplete:"name",onBlur:n.handleBlur,onInput:y=>{n.handleChange(y.target.value)}},null,8,["id","name","model-value","onBlur","onInput"]),a(e(W),null,{default:t(()=>[_(o(s.$t("optional")),1)]),_:1})]),_:2},1024)]),_:1}),a(e(g).Field,{name:"avatarUrl"},{default:t(({field:n})=>[a(e(L),{"data-invalid":F(n)},{default:t(()=>[a(e(E),{for:n.name},{default:t(()=>[_(o(s.$t("auth.avatar_url")),1)]),_:1},8,["for"]),a(e(H),{id:n.name,name:n.name,"model-value":n.state.value,"aria-invalid":F(n),onBlur:n.handleBlur,onInput:y=>{n.handleChange(y.target.value)}},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),a(e(W),null,{default:t(()=>[_(o(s.$t("auth.avatar_url_hint")),1)]),_:1}),F(n)?(u(),b(e(X),{key:0,errors:n.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(g).Field,{name:"role"},{default:t(({field:n})=>[a(e(L),null,{default:t(()=>[a(e(E),{for:n.name},{default:t(()=>[_(o(s.$t("auth.role")),1)]),_:1},8,["for"]),a(e(Ge),{"model-value":n.state.value,disabled:C.value,"onUpdate:modelValue":y=>n.handleChange(y)},{default:t(()=>[a(e(Je),{id:n.name,class:"w-full"},{default:t(()=>[a(e(Ke),{placeholder:s.$t("auth.role")},null,8,["placeholder"])]),_:1},8,["id"]),a(e(Ae),null,{default:t(()=>[(u(!0),O(Y,null,ee(V.value,y=>(u(),b(e(qe),{key:y.value,value:y.value},{default:t(()=>[_(o(y.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:2},1032,["model-value","disabled","onUpdate:modelValue"])]),_:2},1024)]),_:1}),a(e(g).Field,{name:"password"},{default:t(({field:n})=>[a(e(L),{"data-invalid":F(n)},{default:t(()=>[a(e(E),{for:n.name},{default:t(()=>[_(o(s.$t("auth.new_password")),1)]),_:1},8,["for"]),a(e(H),{id:n.name,name:n.name,type:"password","model-value":n.state.value,"aria-invalid":F(n),autocomplete:"new-password",onBlur:n.handleBlur,onInput:y=>{n.handleChange(y.target.value)}},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),a(e(W),null,{default:t(()=>[_(o(s.$t("auth.password_optional_hint")),1)]),_:1}),F(n)?(u(),b(e(X),{key:0,errors:n.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1}),e(g).state.values.password?(u(),b(e(g).Field,{key:0,name:"confirmPassword"},{default:t(({field:n})=>[a(e(L),{"data-invalid":F(n)},{default:t(()=>[a(e(E),{for:n.name},{default:t(()=>[_(o(s.$t("auth.confirm_password")),1)]),_:1},8,["for"]),a(e(H),{id:n.name,name:n.name,type:"password","model-value":n.state.value,"aria-invalid":F(n),autocomplete:"new-password",onBlur:n.handleBlur,onInput:y=>{n.handleChange(y.target.value)}},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),F(n)?(u(),b(e(X),{key:0,errors:n.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1})):z("",!0),a(e(g).Field,{name:"playerFilter"},{default:t(({field:n})=>[a(e(L),null,{default:t(()=>[a(e(E),null,{default:t(()=>[_(o(s.$t("auth.player_filter")),1)]),_:1}),a(de,{"model-value":n.state.value,options:B.value,placeholder:s.$t("auth.select_players"),"onUpdate:modelValue":n.handleChange},null,8,["model-value","options","placeholder","onUpdate:modelValue"]),a(e(W),null,{default:t(()=>[_(o(s.$t("auth.player_filter_hint")),1)]),_:1})]),_:2},1024)]),_:1}),a(e(g).Field,{name:"providerFilter"},{default:t(({field:n})=>[a(e(L),null,{default:t(()=>[a(e(E),null,{default:t(()=>[_(o(s.$t("auth.provider_filter")),1)]),_:1}),a(de,{"model-value":n.state.value,options:S.value,placeholder:s.$t("auth.select_providers"),"onUpdate:modelValue":n.handleChange},null,8,["model-value","options","placeholder","onUpdate:modelValue"]),a(e(W),null,{default:t(()=>[_(o(s.$t("auth.provider_filter_hint")),1)]),_:1})]),_:2},1024)]),_:1})]),_:1})],32)],512),a(e(ie),{class:"px-6 pb-6 pt-4 border-t shrink-0"},{default:t(()=>[a(e(N),{variant:"outline",onClick:A},{default:t(()=>[_(o(s.$t("cancel")),1)]),_:1}),a(e(N),{type:"submit",form:"form-edit-user",disabled:h.value,loading:h.value},{default:t(()=>[_(o(s.$t("edit")),1)]),_:1},8,["disabled","loading"])]),_:1})]),_:1})]),_:1},8,["open"]))}}),St={class:"space-y-6"},Ut={class:"text-base font-semibold mb-2 mt-4"},Ft={class:"text-sm text-muted-foreground mb-4"},It={key:0,class:"flex flex-col items-center justify-center py-12 border-2 border-dashed rounded-lg"},zt={class:"size-16 rounded-full bg-blue-900/20 flex items-center justify-center mb-3"},Pt={class:"text-sm text-muted-foreground"},Dt={key:1,class:"space-y-2"},Tt={class:"flex items-center gap-4"},Ot={class:"size-10 rounded-full bg-blue-900/20 flex items-center justify-center shrink-0"},Nt={class:"flex-1 min-w-0"},jt={class:"font-medium text-sm truncate"},Lt={class:"text-xs text-muted-foreground flex items-center gap-2 flex-wrap"},Et={key:0,class:"text-muted-foreground"},Rt={key:1},Mt={class:"flex items-start justify-between gap-4 mb-4"},Gt={class:"flex-1"},At={class:"text-base font-semibold mb-2"},qt={class:"text-sm text-muted-foreground"},Jt={class:"flex justify-end gap-2 mt-4"},Kt={class:"text-sm text-muted-foreground"},Ht={key:2,class:"flex flex-col items-center justify-center py-12 border-2 border-dashed rounded-lg"},Qt={class:"size-16 rounded-full bg-purple-900/20 flex items-center justify-center mb-3"},Wt={class:"text-sm text-muted-foreground"},Xt={key:3,class:"space-y-2"},Zt={class:"flex items-center gap-4"},Yt={class:"size-10 rounded-full bg-purple-900/20 flex items-center justify-center shrink-0"},es={class:"flex-1 min-w-0"},as={class:"font-medium text-sm truncate"},ts={class:"text-xs text-muted-foreground flex items-center gap-2 flex-wrap"},ss={key:0,class:"text-muted-foreground"},ls={key:1},os=D({__name:"ManageTokensDialog",props:{modelValue:{type:Boolean},user:{},tokens:{}},emits:["update:modelValue","revoke","token-created"],setup(d,{emit:m}){const{t:r}=Z(),l=d,c=m,f=we(l,"modelValue",c),h=I(!1),p=I(!1),w=I(""),k=I(""),V=G(()=>l.tokens.filter(i=>!i.is_long_lived)),B=G(()=>l.tokens.filter(i=>i.is_long_lived)),S=i=>new Date(i).toLocaleString(),C=ke({defaultValues:{tokenName:""},validators:{onSubmit:pa(r)},onSubmit:async()=>{}}),g=i=>i.state.meta.errors.length>0,F=G(()=>{const i=w.value||"";return i.trim().length>0&&i.length<=100&&!p.value}),v=async()=>{if(!(!l.user||!F.value)){p.value=!0;try{const i=await K.createToken(w.value,l.user.user_id);i?(k.value=i,w.value="",h.value=!1,C.reset(),c("token-created"),T.success(r("auth.token_created"))):T.error(r("auth.token_create_failed"))}catch(i){T.error(i.message||r("auth.token_create_failed"))}finally{p.value=!1}}},A=async()=>{k.value&&(await Wa(k.value),T.success(r("auth.token_copied")))},s=()=>{k.value="",w.value="",h.value=!1,C.reset()};return(i,n)=>(u(),b(e(fe),{open:e(f),"onUpdate:open":n[4]||(n[4]=y=>$e(f)?f.value=y:null)},{default:t(()=>[a(e(ce),{class:"sm:max-w-[900px] max-h-[90vh] overflow-y-auto"},{default:t(()=>[a(e(me),null,{default:t(()=>[a(e(pe),null,{default:t(()=>[_(o(i.$t("auth.tokens"))+" - "+o(d.user?.display_name||d.user?.username),1)]),_:1})]),_:1}),$("div",St,[$("div",null,[$("h3",Ut,o(i.$t("auth.active_sessions")),1),$("p",Ft,o(i.$t("auth.active_sessions_description")),1),V.value.length===0?(u(),O("div",It,[$("div",zt,[a(e(he),{size:32,class:"text-blue-500"})]),$("p",Pt,o(i.$t("auth.no_active_sessions")),1)])):(u(),O("div",Dt,[(u(!0),O(Y,null,ee(V.value,y=>(u(),b(e(se),{key:y.token_id,class:"p-4"},{default:t(()=>[$("div",Tt,[$("div",Ot,[a(e(he),{size:20,class:"text-blue-500"})]),$("div",Nt,[$("div",jt,o(y.name),1),$("div",Lt,[$("span",null,o(i.$t("created"))+": "+o(S(y.created_at)),1),y.last_used_at?(u(),O("span",Et," • ")):z("",!0),y.last_used_at?(u(),O("span",Rt,o(i.$t("last_used"))+": "+o(S(y.last_used_at)),1)):z("",!0)])]),a(e(N),{variant:"ghost",size:"icon",class:"text-destructive hover:text-destructive",onClick:J(ae=>c("revoke",y),["stop"])},{default:t(()=>[a(e(ye),{size:16})]),_:1},8,["onClick"])])]),_:2},1024))),128))]))]),$("div",null,[$("div",Mt,[$("div",Gt,[$("h3",At,o(i.$t("auth.long_lived_tokens")),1),$("p",qt,o(i.$t("auth.long_lived_tokens_description")),1)]),h.value?(u(),b(e(N),{key:1,variant:"outline",size:"sm",onClick:n[1]||(n[1]=y=>h.value=!1)},{default:t(()=>[_(o(i.$t("cancel")),1)]),_:1})):(u(),b(e(N),{key:0,size:"sm",onClick:n[0]||(n[0]=y=>h.value=!0)},{default:t(()=>[a(e(Ie),{size:16}),_(" "+o(i.$t("auth.create_token")),1)]),_:1}))]),h.value?(u(),b(e(se),{key:0,class:"p-4 mb-4 border-primary/20"},{default:t(()=>[$("form",{id:"form-create-token",onSubmit:J(v,["prevent"])},[a(e(C).Field,{name:"tokenName",validators:{onChange:e(fa)(e(r))}},{default:t(({field:y})=>[a(e(L),{"data-invalid":g(y)},{default:t(()=>[a(e(E),{for:y.name},{default:t(()=>[_(o(i.$t("auth.token_name")),1)]),_:1},8,["for"]),a(e(H),{id:y.name,name:y.name,"model-value":w.value,"aria-invalid":g(y),placeholder:i.$t("auth.token_name_hint"),autofocus:"",autocomplete:"off",onBlur:y.handleBlur,onInput:ae=>{w.value=ae.target.value,y.handleChange(ae.target.value)}},null,8,["id","name","model-value","aria-invalid","placeholder","onBlur","onInput"]),g(y)?(u(),b(e(X),{key:0,errors:y.state.meta.errors},null,8,["errors"])):z("",!0)]),_:2},1032,["data-invalid"])]),_:1},8,["validators"]),$("div",Jt,[a(e(N),{variant:"outline",onClick:n[2]||(n[2]=y=>h.value=!1)},{default:t(()=>[_(o(i.$t("cancel")),1)]),_:1}),a(e(N),{type:"submit",disabled:!F.value,loading:p.value},{default:t(()=>[_(o(i.$t("create")),1)]),_:1},8,["disabled","loading"])])],32)]),_:1})):z("",!0),k.value?(u(),b(e(se),{key:1,class:"p-4 mb-4 bg-destructive/10 border-destructive/20"},{default:t(()=>[$("p",Kt,o(i.$t("auth.copy_new_token_hint")),1),a(e($a),null,{default:t(()=>[a(e(ka),{"model-value":k.value,readonly:"",class:"font-mono text-sm"},null,8,["model-value"]),a(e(wa),{align:"inline-end"},{default:t(()=>[a(e(_a),{size:"icon-sm",variant:"ghost",onClick:A},{default:t(()=>[a(e(aa),{size:16})]),_:1})]),_:1})]),_:1}),a(e(N),{variant:"outline",class:"mt-4 w-full",onClick:s},{default:t(()=>[_(o(i.$t("close")),1)]),_:1})]),_:1})):z("",!0),B.value.length===0?(u(),O("div",Ht,[$("div",Qt,[a(e(ge),{size:32,class:"text-purple-500"})]),$("p",Wt,o(i.$t("auth.no_long_lived_tokens")),1)])):(u(),O("div",Xt,[(u(!0),O(Y,null,ee(B.value,y=>(u(),b(e(se),{key:y.token_id,class:"p-4"},{default:t(()=>[$("div",Zt,[$("div",Yt,[a(e(ge),{size:20,class:"text-purple-500"})]),$("div",es,[$("div",as,o(y.name),1),$("div",ts,[$("span",null,o(i.$t("created"))+": "+o(S(y.created_at)),1),y.last_used_at?(u(),O("span",ss," • ")):z("",!0),y.last_used_at?(u(),O("span",ls,o(i.$t("last_used"))+": "+o(S(y.last_used_at)),1)):z("",!0)])]),a(e(N),{variant:"ghost",size:"icon",class:"text-destructive hover:text-destructive",onClick:J(ae=>c("revoke",y),["stop"])},{default:t(()=>[a(e(ye),{size:16})]),_:1},8,["onClick"])])]),_:2},1024))),128))]))])]),a(e(ie),null,{default:t(()=>[a(e(N),{variant:"outline",onClick:n[3]||(n[3]=y=>c("update:modelValue",!1))},{default:t(()=>[_(o(i.$t("close")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]))}}),ns={class:"py-4"},rs={class:"text-sm text-muted-foreground mb-4"},us={key:0,class:"rounded-md bg-destructive/10 p-4"},ds={class:"font-medium"},is=D({__name:"RevokeTokenDialog",props:{modelValue:{type:Boolean},token:{}},emits:["update:modelValue","revoked"],setup(d,{emit:m}){const{t:r}=Z(),l=d,c=m,f=I(!1),h=async()=>{if(!l.token)return;f.value=!0;const p=!l.token.is_long_lived;try{await K.revokeToken(l.token.token_id)?(T.success(r(p?"auth.session_revoked":"auth.token_revoked")),c("revoked"),c("update:modelValue",!1)):T.error(r(p?"auth.session_revoke_failed":"auth.token_revoke_failed"))}catch{T.error(r(p?"auth.session_revoke_failed":"auth.token_revoke_failed"))}finally{f.value=!1}};return(p,w)=>(u(),b(e(fe),{open:d.modelValue,"onUpdate:open":w[1]||(w[1]=k=>c("update:modelValue",k))},{default:t(()=>[a(e(ce),{class:"sm:max-w-md"},{default:t(()=>[a(e(me),null,{default:t(()=>[a(e(pe),null,{default:t(()=>[_(o(d.token?.is_long_lived?p.$t("auth.revoke_token"):p.$t("auth.revoke_session")),1)]),_:1})]),_:1}),$("div",ns,[$("p",rs,o(d.token?.is_long_lived?p.$t("auth.revoke_token_confirm"):p.$t("auth.revoke_session_confirm")),1),d.token?(u(),O("div",us,[$("p",ds,o(d.token.name),1)])):z("",!0)]),a(e(ie),null,{default:t(()=>[a(e(N),{variant:"outline",onClick:w[0]||(w[0]=k=>c("update:modelValue",!1))},{default:t(()=>[_(o(p.$t("cancel")),1)]),_:1}),a(e(N),{variant:"destructive",loading:f.value,onClick:h},{default:t(()=>[_(o(p.$t("auth.revoke")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["open"]))}}),cs={class:"space-y-6 p-6"},ms={class:"flex items-center justify-between gap-4 flex-wrap"},ps={class:"relative flex-1 min-w-[200px] max-w-[400px]"},fs={key:0,class:"flex flex-col items-center justify-center py-16 text-center"},_s={class:"text-muted-foreground"},vs={key:1,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4"},hs={class:"flex items-center gap-4"},gs={class:"flex-1 min-w-0"},ys={class:"flex items-start justify-between gap-2"},bs={class:"flex-1 min-w-0"},$s={class:"font-semibold text-sm truncate"},ks={class:"text-xs text-muted-foreground truncate"},Gs=D({__name:"UserManagement",setup(d){const{t:m}=Z(),r=I([]),l=I(""),c=I(!1),f=I(!1),h=I(!1),p=I(!1),w=I(!1),k=I(!1),V=I(null),B=I([]),S=I(null),C=G(()=>{if(!l.value)return r.value;const U=l.value.toLowerCase();return r.value.filter(P=>{const x=(P.display_name||P.username).toLowerCase(),te=P.username.toLowerCase();return x.includes(U)||te.includes(U)})}),g=U=>!U||!ue.currentUser?!1:U.user_id===ue.currentUser.user_id,F=async()=>{try{r.value=await K.getAllUsers()}catch{T.error(m("auth.users_load_failed"))}},v=U=>{V.value=U,f.value=!0},A=U=>{V.value=U,h.value=!0},s=U=>{V.value=U,p.value=!0},i=async U=>{V.value=U,await n(U.user_id),w.value=!0},n=async U=>{try{B.value=await K.getUserTokens(U)}catch{T.error(m("auth.tokens_load_failed"))}},y=async()=>{V.value&&await n(V.value.user_id)},ae=U=>{S.value=U,k.value=!0},He=async()=>{V.value&&await n(V.value.user_id),S.value=null},Qe=async U=>{try{await K.enableUser(U.user_id)?(await F(),T.success(m("auth.user_enabled"))):T.error(m("auth.user_enable_failed"))}catch{T.error(m("auth.user_enable_failed"))}};return be(()=>{F()}),(U,P)=>(u(),O("div",cs,[$("div",ms,[$("div",ps,[a(e(H),{modelValue:l.value,"onUpdate:modelValue":P[0]||(P[0]=x=>l.value=x),placeholder:U.$t("search"),class:"w-full"},{prepend:t(()=>[a(e(Ue),{size:16,class:"text-muted-foreground"})]),_:1},8,["modelValue","placeholder"])]),a(e(N),{onClick:P[1]||(P[1]=x=>c.value=!0)},{default:t(()=>[a(e(Ie),{size:16}),_(" "+o(U.$t("auth.create_user")),1)]),_:1})]),C.value.length===0?(u(),O("div",fs,[$("p",_s,o(U.$t("no_content")),1)])):(u(),O("div",vs,[(u(!0),O(Y,null,ee(C.value,x=>(u(),b(e(se),{key:x.user_id,class:"cursor-pointer hover:bg-accent/50 transition-colors",onClick:te=>v(x)},{default:t(()=>[a(e(va),{class:"px-4 py-0"},{default:t(()=>[$("div",hs,[a(e(ra),{class:"size-12 shrink-0"},{default:t(()=>[x.avatar_url?(u(),b(e(ua),{key:0,src:x.avatar_url},null,8,["src"])):z("",!0),a(e(da),{class:"bg-muted"},{default:t(()=>[a(e(ta),{size:24,class:"text-foreground"})]),_:1})]),_:2},1024),$("div",gs,[$("div",ys,[$("div",bs,[$("h3",$s,o(x.display_name||x.username),1),$("p",ks,o(x.username)+" • "+o(U.$t(`auth.${x.role}_role`)),1)]),a(e(ha),null,{default:t(()=>[a(e(ga),{"as-child":""},{default:t(()=>[a(e(N),{variant:"ghost",size:"icon",class:"size-8 shrink-0",onClick:P[2]||(P[2]=J(()=>{},["stop"]))},{default:t(()=>[a(e(sa),{size:16})]),_:1})]),_:1}),a(e(ya),{align:"end"},{default:t(()=>[a(e(le),{onClick:J(te=>v(x),["stop"])},{default:t(()=>[a(e(la),{size:16}),_(" "+o(U.$t("auth.edit_user")),1)]),_:1},8,["onClick"]),a(e(le),{onClick:J(te=>i(x),["stop"])},{default:t(()=>[a(e(ge),{size:16}),_(" "+o(U.$t("auth.manage_tokens")),1)]),_:1},8,["onClick"]),g(x)?z("",!0):(u(),b(e(le),{key:0,onClick:J(te=>x.enabled?A(x):Qe(x),["stop"])},{default:t(()=>[(u(),b(oa(x.enabled?e(na):e(he)),{size:16})),_(" "+o(x.enabled?U.$t("auth.disable_user"):U.$t("auth.enable_user")),1)]),_:2},1032,["onClick"])),g(x)?z("",!0):(u(),b(e(ba),{key:1})),g(x)?z("",!0):(u(),b(e(le),{key:2,class:"text-destructive focus:text-destructive",onClick:J(te=>s(x),["stop"])},{default:t(()=>[a(e(ye),{size:16}),_(" "+o(U.$t("auth.delete_user")),1)]),_:1},8,["onClick"]))]),_:2},1024)]),_:2},1024)]),x.enabled?z("",!0):(u(),b(e(ia),{key:0,variant:"destructive",class:"mt-2"},{default:t(()=>[_(o(U.$t("auth.disabled")),1)]),_:1}))])])]),_:2},1024)]),_:2},1032,["onClick"]))),128))])),a(gt,{modelValue:c.value,"onUpdate:modelValue":P[3]||(P[3]=x=>c.value=x),onCreated:F},null,8,["modelValue"]),a(Bt,{modelValue:f.value,"onUpdate:modelValue":P[4]||(P[4]=x=>f.value=x),user:V.value,onUpdated:F},null,8,["modelValue","user"]),a(Vt,{modelValue:h.value,"onUpdate:modelValue":P[5]||(P[5]=x=>h.value=x),user:V.value,onDisabled:F},null,8,["modelValue","user"]),a(kt,{modelValue:p.value,"onUpdate:modelValue":P[6]||(P[6]=x=>p.value=x),user:V.value,onDeleted:F},null,8,["modelValue","user"]),a(os,{modelValue:w.value,"onUpdate:modelValue":P[7]||(P[7]=x=>w.value=x),user:V.value,tokens:B.value,onRevoke:ae,onTokenCreated:y},null,8,["modelValue","user","tokens"]),a(is,{modelValue:k.value,"onUpdate:modelValue":P[8]||(P[8]=x=>k.value=x),token:S.value,onRevoked:He},null,8,["modelValue","token"])]))}});export{Gs as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as we}from"./Container-D1pLFqsU.js";import{d as P,b as w,e as d,ad as J,u as e,h as E,D as V,E as t,A as Ce,r as S,c as D,w as j,H as a,I as F,$ as v,a1 as r,f as h,O as M,aV as Se,F as K,aL as Ue,aW as re,M as ve,aX as _e,aG as ue,aY as Ve,aZ as Ie,a_ as Fe,o as Ne}from"./lucide-C2DU1LFb.js";import{_ as N}from"./index-_We2Vr5Z.js";import{u as ee,c as Te,t as Pe,_ as z,a as x,b as A,d as ze,e as ae,f as W,g as X,h as xe,i as fe,p as Be,j as ie}from"./profile-Cv_y861N.js";import{c as O}from"./utils-CDN07tui.js";import{i as T}from"./vuetify-CrxirfrA.js";import{_ as te,a as se,b as le,c as ne,d as B,e as De,f as Le,g as je}from"./index-vt6UORr-.js";import{p as Ae,e as Re}from"./reka-ui-GpbaI08z.js";import{v as Ee}from"./vueuse-DIaEWNCo.js";import{c as R,J as Me,_ as oe,s as G}from"./index-BFLe16Zh.js";import{u as q}from"./vue-i18n-CX-lsKIo.js";import{_ as de,a as ce,b as me}from"./AvatarImage.vue_vue_type_script_setup_true_lang-DBokkkla.js";import"./index-kQIztB-E.js";import"./qrcode-DSFhiIp2.js";import"./marked-C0Rlrcoy.js";import"./color-BTziYnFN.js";import"./vue-router-BgJK_hRC.js";/* empty css */import"./swiper-Jy9GbtzK.js";const Y=P({__name:"CardDescription",props:{class:{}},setup(C){const c=C;return(l,k)=>(d(),w("p",{"data-slot":"card-description",class:J(e(O)("text-muted-foreground text-sm",c.class))},[E(l.$slots,"default")],2))}}),pe=P({__name:"CardFooter",props:{class:{}},setup(C){const c=C;return(l,k)=>(d(),w("div",{"data-slot":"card-footer",class:J(e(O)("flex items-center px-6 [.border-t]:pt-6",c.class))},[E(l.$slots,"default")],2))}}),Z=P({__name:"CardHeader",props:{class:{}},setup(C){const c=C;return(l,k)=>(d(),w("div",{"data-slot":"card-header",class:J(e(O)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",c.class))},[E(l.$slots,"default")],2))}}),Q=P({__name:"CardTitle",props:{class:{}},setup(C){const c=C;return(l,k)=>(d(),w("h3",{"data-slot":"card-title",class:J(e(O)("leading-none font-semibold",c.class))},[E(l.$slots,"default")],2))}}),he=P({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(C){const c=C,l=Ee(c,"class"),k=Ae(l);return(i,f)=>(d(),V(e(Re),Ce({"data-slot":"dialog-description"},e(k),{class:e(O)("text-muted-foreground text-sm",c.class)}),{default:t(()=>[E(i.$slots,"default")]),_:3},16,["class"]))}}),Oe={key:0,class:"py-4"},qe={key:1,class:"py-4"},He={class:"text-sm text-muted-foreground mb-4"},Ge=P({__name:"CreateTokenDialog",props:{modelValue:{type:Boolean},userId:{}},emits:["update:modelValue","created"],setup(C,{emit:c}){const{t:l}=q(),k=C,i=c,f=S(!1),p=S(""),m=S(""),b=ee({defaultValues:{tokenName:""},validators:{onSubmit:Te(l)},onSubmit:async({value:g})=>{f.value=!0;try{const U=await R.createToken(g.tokenName,k.userId);U?(T.success(l("auth.token_created")),p.value=U,m.value=g.tokenName,i("created")):T.error(l("auth.token_create_failed"))}catch(U){T.error(U.message||l("auth.token_create_failed"))}finally{f.value=!1}}});function y(g){return g.state.meta.isTouched&&!g.state.meta.isValid}const $=D(()=>{const g=m.value||"";return g.trim().length>0&&g.length<=100&&!f.value}),u=()=>{b.reset(),p.value="",m.value="",requestAnimationFrame(()=>{i("update:modelValue",!1)})},s=async()=>{if(!p.value)return;await Me(p.value)?T.success(l("auth.token_copied")):T.error(l("auth.token_copy_failed"))};return j(()=>k.modelValue,g=>{g||(b.reset(),p.value=""),m.value=""}),(g,U)=>(d(),V(e(te),{open:C.modelValue,"onUpdate:open":U[1]||(U[1]=I=>i("update:modelValue",I))},{default:t(()=>[a(e(se),{class:"sm:max-w-md"},{default:t(()=>[a(e(le),null,{default:t(()=>[a(e(ne),null,{default:t(()=>[v(r(p.value?m.value:g.$t("auth.create_token")),1)]),_:1}),p.value?F("",!0):(d(),V(e(he),{key:0},{default:t(()=>[v(r(g.$t("auth.token_name_hint")),1)]),_:1}))]),_:1}),p.value?(d(),w("div",qe,[h("p",He,r(g.$t("auth.copy_new_token_hint")),1),a(e(De),null,{default:t(()=>[a(e(Le),{"model-value":p.value,readonly:"",class:"font-mono text-sm"},null,8,["model-value"]),a(e(je),{align:"inline-end"},{default:t(()=>[a(e(ze),{size:"icon-sm",variant:"ghost",onClick:s},{default:t(()=>[a(e(Se),{size:16})]),_:1})]),_:1})]),_:1})])):(d(),w("div",Oe,[h("form",{id:"form-create-token",onSubmit:U[0]||(U[0]=M((...I)=>e(b).handleSubmit&&e(b).handleSubmit(...I),["prevent"]))},[a(e(b).Field,{name:"tokenName",validators:{onChange:e(Pe)(e(l))}},{default:t(({field:I})=>[a(e(z),{"data-invalid":y(I)},{default:t(()=>[a(e(x),{for:I.name},{default:t(()=>[v(r(g.$t("auth.token_name")),1)]),_:1},8,["for"]),a(e(B),{id:I.name,name:I.name,"model-value":m.value,"aria-invalid":y(I),placeholder:g.$t("auth.token_name_hint"),autofocus:"",autocomplete:"off",onBlur:I.handleBlur,onInput:H=>{m.value=H.target.value,I.handleChange(H.target.value)}},null,8,["id","name","model-value","aria-invalid","placeholder","onBlur","onInput"]),y(I)?(d(),V(e(A),{key:0,errors:I.state.meta.errors},null,8,["errors"])):F("",!0)]),_:2},1032,["data-invalid"])]),_:1},8,["validators"])],32)])),a(e(ae),null,{default:t(()=>[p.value?(d(),V(e(N),{key:1,variant:"default",onClick:u},{default:t(()=>[v(r(g.$t("close")),1)]),_:1})):(d(),w(K,{key:0},[a(e(N),{variant:"outline",onClick:u},{default:t(()=>[v(r(g.$t("cancel")),1)]),_:1}),a(e(N),{type:"submit",form:"form-create-token",disabled:!$.value,loading:f.value},{default:t(()=>[v(r(g.$t("create")),1)]),_:1},8,["disabled","loading"])],64))]),_:1})]),_:1})]),_:1},8,["open"]))}}),Je={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},Ke={key:0,class:"empty-state"},We={class:"flex size-16 items-center justify-center rounded-full bg-muted mb-3"},Xe={class:"text-muted-foreground font-medium"},Ye={class:"text-sm text-muted-foreground mt-1"},Ze={key:1,class:"space-y-2"},Qe={class:"flex size-10 items-center justify-center rounded-full bg-muted"},ea={class:"flex-1 min-w-0"},aa={class:"font-medium truncate"},ta={class:"text-sm text-muted-foreground flex flex-wrap gap-2"},sa={key:0},la={key:1},na=P({__name:"LongLivedTokensList",props:{tokens:{}},emits:["revoke","created"],setup(C,{emit:c}){const{t:l}=q(),k=c,i=S(!1),f=m=>new Date(m).toLocaleString(),p=()=>{k("created")};return(m,b)=>(d(),V(e(X),null,{default:t(()=>[a(e(Z),null,{default:t(()=>[h("div",Je,[h("div",null,[a(e(Q),null,{default:t(()=>[v(r(m.$t("auth.long_lived_tokens")),1)]),_:1}),a(e(Y),null,{default:t(()=>[v(r(m.$t("auth.api_tokens_description")),1)]),_:1})]),a(e(N),{onClick:b[0]||(b[0]=y=>i.value=!0)},{default:t(()=>[a(e(Ue),{size:16}),v(" "+r(m.$t("auth.create_token")),1)]),_:1})])]),_:1}),a(e(W),null,{default:t(()=>[C.tokens.length===0?(d(),w("div",Ke,[h("div",We,[a(e(re),{size:32,class:"text-muted-foreground"})]),h("p",Xe,r(m.$t("auth.no_tokens")),1),h("p",Ye,r(m.$t("auth.create_token_hint")),1)])):(d(),w("div",Ze,[(d(!0),w(K,null,ve(C.tokens,y=>(d(),w("div",{key:y.token_id,class:"flex items-center gap-4 rounded-lg border p-4 hover:bg-accent/50 transition-colors"},[h("div",Qe,[a(e(re),{size:20,class:"text-muted-foreground"})]),h("div",ea,[h("div",aa,r(y.name),1),h("div",ta,[h("span",null,r(m.$t("created"))+": "+r(f(y.created_at)),1),y.last_used_at?(d(),w("span",sa,"•")):F("",!0),y.last_used_at?(d(),w("span",la,r(m.$t("last_used"))+": "+r(f(y.last_used_at)),1)):F("",!0)])]),a(e(N),{variant:"ghost",size:"icon",class:"text-destructive hover:text-destructive hover:bg-destructive/10",onClick:M($=>k("revoke",y),["stop"])},{default:t(()=>[a(e(_e),{size:16})]),_:1},8,["onClick"])]))),128))]))]),_:1}),a(Ge,{modelValue:i.value,"onUpdate:modelValue":b[1]||(b[1]=y=>i.value=y),onCreated:p},null,8,["modelValue"])]),_:1}))}}),oa=oe(na,[["__scopeId","data-v-7459f4e1"]]),ra={key:0,class:"mb-4 rounded-lg border border-blue-500/20 bg-blue-500/10 p-4 text-sm text-blue-600 dark:text-blue-400"},ua=P({__name:"PasswordSettings",setup(C){const{t:c}=q(),l=S(!1),k=S(""),i=S(""),f=ee({defaultValues:{newPassword:"",confirmPassword:""},validators:{onSubmit:xe(c)},onSubmit:async({value:$})=>{l.value=!0;try{await R.changePassword($.newPassword)?(T.success(c("auth.password_changed")),f.reset(),k.value="",i.value=""):T.error(c("auth.password_change_failed"))}catch(u){T.error(u.message||c("auth.password_change_failed"))}finally{l.value=!1}}}),p=D(()=>{const $=k.value||f.state.values.newPassword||"",u=i.value||f.state.values.confirmPassword||"";return $===u&&u.length>0});function m($){return $.state.meta.isTouched&&!$.state.meta.isValid}const b=($,u)=>{const s=$.target.value;k.value=s,u.handleChange(s)},y=($,u)=>{const s=$.target.value;i.value=s,u.handleChange(s)};return($,u)=>(d(),V(e(X),null,{default:t(()=>[a(e(Z),null,{default:t(()=>[a(e(Q),null,{default:t(()=>[v(r($.$t("auth.change_password")),1)]),_:1}),a(e(Y),null,{default:t(()=>[v(r($.$t("auth.update_your_password")),1)]),_:1})]),_:1}),a(e(W),null,{default:t(()=>[e(G).isIngressSession?(d(),w("div",ra,r($.$t("auth.ingress_password_note")),1)):F("",!0),h("form",{id:"form-password-settings",onSubmit:u[0]||(u[0]=M((...s)=>e(f).handleSubmit&&e(f).handleSubmit(...s),["prevent"]))},[a(e(fe),null,{default:t(()=>[a(e(f).Field,{name:"newPassword"},{default:t(({field:s})=>[a(e(z),{"data-invalid":m(s)},{default:t(()=>[a(e(x),{for:s.name},{default:t(()=>[v(r($.$t("auth.new_password")),1)]),_:1},8,["for"]),a(e(B),{id:s.name,name:s.name,"model-value":s.state.value,type:"password","aria-invalid":m(s),autocomplete:"new-password",onBlur:s.handleBlur,onInput:g=>b(g,s)},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),m(s)?(d(),V(e(A),{key:0,errors:s.state.meta.errors},null,8,["errors"])):F("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(f).Field,{name:"confirmPassword"},{default:t(({field:s})=>[a(e(z),{"data-invalid":m(s)},{default:t(()=>[a(e(x),{for:s.name},{default:t(()=>[v(r($.$t("auth.confirm_password")),1)]),_:1},8,["for"]),a(e(B),{id:s.name,name:s.name,"model-value":s.state.value,type:"password","aria-invalid":m(s),autocomplete:"new-password",onBlur:s.handleBlur,onInput:g=>y(g,s)},null,8,["id","name","model-value","aria-invalid","onBlur","onInput"]),m(s)?(d(),V(e(A),{key:0,errors:s.state.meta.errors},null,8,["errors"])):F("",!0)]),_:2},1032,["data-invalid"])]),_:1})]),_:1})],32)]),_:1}),a(e(pe),null,{default:t(()=>[a(e(N),{type:"submit",form:"form-password-settings",disabled:!p.value||l.value,loading:l.value},{default:t(()=>[v(r($.$t("auth.update_password")||"Update password"),1)]),_:1},8,["disabled","loading"])]),_:1})]),_:1}))}}),ia={class:"flex flex-col sm:flex-row gap-6 mb-6"},da={class:"flex flex-col items-center gap-3"},ca={class:"relative"},ma={class:"flex-1 space-y-4"},va={class:"flex flex-col items-center gap-4 py-4"},_a=P({__name:"ProfileSettings",setup(C){const{t:c}=q(),l=D(()=>G.currentUser),k=D(()=>G.isIngressSession),i=S(!1),f=S(""),p=S(!1),m=S(!1),b=S(""),y=S(""),$=S(""),u=S(""),s=ee({defaultValues:{username:l.value?.username||"",displayName:l.value?.display_name||"",avatarUrl:l.value?.avatar_url||"",role:l.value?c(`auth.${l.value.role}_role`):""},validators:{onSubmit:Be(c)},onSubmit:async({value:n})=>{if(l.value){m.value=!0;try{const _={};if(n.username!==l.value.username&&(_.username=n.username),n.displayName!==(l.value.display_name||"")&&(_.displayName=n.displayName),n.avatarUrl!==(l.value.avatar_url||"")&&(_.avatarUrl=n.avatarUrl),Object.keys(_).length===0)return;const o=await R.updateUser(l.value.user_id,_);o&&(G.currentUser=o,_.username&&(y.value=o.username||""),_.displayName!==void 0&&($.value=o.display_name||""),_.avatarUrl!==void 0&&(u.value=o.avatar_url||"",s.setFieldValue("avatarUrl",o.avatar_url||""),p.value=!1),T.success(c("auth.profile_updated")))}catch(_){T.error(_.message||c("error_generic"))}finally{m.value=!1}}}}),g=D(()=>{if(!l.value)return!1;const n=y.value||s.state.values.username||"",_=$.value||s.state.values.displayName||"",o=u.value||s.state.values.avatarUrl||"",L=l.value.username||"",ye=l.value.display_name||"",be=l.value.avatar_url||"";return n!==L||_!==ye||o!==be});function U(n){return n.state.meta.isTouched&&!n.state.meta.isValid}const I=(n,_)=>{const o=n.target.value;y.value=o,_.handleChange(o)},H=(n,_)=>{const o=n.target.value;$.value=o,_.handleChange(o)},ge=()=>{if(l.value){const n=l.value.avatar_url||"";y.value=l.value.username||"",$.value=l.value.display_name||"",u.value=n,b.value=n,s.setFieldValue("username",l.value.username),s.setFieldValue("displayName",l.value.display_name||""),s.setFieldValue("avatarUrl",n),s.setFieldValue("role",c(`auth.${l.value.role}_role`))}},ke=()=>{u.value=b.value,s.setFieldValue("avatarUrl",b.value),f.value=b.value,i.value=!1,p.value=!1},$e=()=>{const n=f.value;u.value=n,n!==s.state.values.avatarUrl&&s.setFieldValue("avatarUrl",n),i.value=!1,p.value=!1};return j(()=>l.value?.avatar_url,n=>{n!==void 0&&(u.value=n||"",s.setFieldValue("avatarUrl",n||""),i.value||(f.value=n||""))},{immediate:!0}),j(i,n=>{n&&(b.value=l.value?.avatar_url||u.value||s.state.values.avatarUrl||"",f.value=u.value||s.state.values.avatarUrl||l.value?.avatar_url||"",p.value=!1)}),j(l,n=>{if(n){const _=n.username||"",o=n.display_name||"";y.value=_,$.value=o,s.setFieldValue("username",_),s.setFieldValue("displayName",o),s.setFieldValue("role",c(`auth.${n.role}_role`))}},{immediate:!0}),j(f,n=>{i.value&&(u.value=n,s.setFieldValue("avatarUrl",n))}),(n,_)=>(d(),w(K,null,[a(e(X),null,{default:t(()=>[a(e(Z),null,{default:t(()=>[a(e(Q),null,{default:t(()=>[v(r(n.$t("auth.account_settings")),1)]),_:1}),a(e(Y),null,{default:t(()=>[v(r(n.$t("auth.manage_your_profile_info")),1)]),_:1})]),_:1}),a(e(W),null,{default:t(()=>[h("form",{id:"form-profile-settings",onSubmit:_[2]||(_[2]=M((...o)=>e(s).handleSubmit&&e(s).handleSubmit(...o),["prevent"]))},[a(e(fe),null,{default:t(()=>[h("div",ia,[h("div",da,[h("div",ca,[a(e(de),{class:"size-32"},{default:t(()=>[u.value||e(s).state.values.avatarUrl||l.value?.avatar_url?(d(),V(e(ce),{key:u.value||e(s).state.values.avatarUrl||l.value?.avatar_url||"",src:u.value||e(s).state.values.avatarUrl||l.value?.avatar_url||"",onError:_[0]||(_[0]=o=>p.value=!0)},null,8,["src"])):F("",!0),a(e(me),{class:"bg-muted"},{default:t(()=>[a(e(ue),{size:48,class:"text-muted-foreground"})]),_:1})]),_:1}),k.value?F("",!0):(d(),V(e(N),{key:0,type:"button",variant:"outline",size:"icon",class:"absolute bottom-0 right-0 size-8 rounded-full border-2 border-background bg-background shadow-md hover:bg-accent",onClick:_[1]||(_[1]=o=>i.value=!0)},{default:t(()=>[a(e(Ve),{size:14})]),_:1}))])]),h("div",ma,[a(e(s).Field,{name:"username"},{default:t(({field:o})=>[a(e(z),{"data-invalid":U(o)},{default:t(()=>[a(e(x),{for:o.name},{default:t(()=>[v(r(n.$t("auth.username")),1)]),_:1},8,["for"]),a(e(B),{id:o.name,name:o.name,"model-value":o.state.value,"aria-invalid":U(o),disabled:k.value,autocomplete:"username",onBlur:o.handleBlur,onInput:L=>I(L,o)},null,8,["id","name","model-value","aria-invalid","disabled","onBlur","onInput"]),U(o)?(d(),V(e(A),{key:0,errors:o.state.meta.errors},null,8,["errors"])):F("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(s).Field,{name:"displayName"},{default:t(({field:o})=>[a(e(z),{"data-invalid":U(o)},{default:t(()=>[a(e(x),{for:o.name},{default:t(()=>[v(r(n.$t("auth.display_name")),1)]),_:1},8,["for"]),a(e(B),{id:o.name,name:o.name,"model-value":o.state.value,"aria-invalid":U(o),disabled:k.value,autocomplete:"name",onBlur:o.handleBlur,onInput:L=>H(L,o)},null,8,["id","name","model-value","aria-invalid","disabled","onBlur","onInput"]),a(e(ie),null,{default:t(()=>[v(r(n.$t("optional")),1)]),_:1}),U(o)?(d(),V(e(A),{key:0,errors:o.state.meta.errors},null,8,["errors"])):F("",!0)]),_:2},1032,["data-invalid"])]),_:1}),a(e(s).Field,{name:"role"},{default:t(({field:o})=>[a(e(z),null,{default:t(()=>[a(e(x),{for:o.name},{default:t(()=>[v(r(n.$t("auth.role")),1)]),_:1},8,["for"]),a(e(B),{id:o.name,name:o.name,"model-value":o.state.value,readonly:"",disabled:"",class:"bg-muted"},null,8,["id","name","model-value"])]),_:2},1024)]),_:1})])])]),_:1})],32)]),_:1}),a(e(pe),null,{default:t(()=>[a(e(z),{orientation:"horizontal"},{default:t(()=>[g.value?(d(),V(e(N),{key:0,type:"button",variant:"outline",onClick:ge},{default:t(()=>[v(r(n.$t("cancel")),1)]),_:1})):F("",!0),a(e(N),{type:"submit",form:"form-profile-settings",disabled:!g.value||m.value,loading:m.value},{default:t(()=>[v(r(n.$t("auth.save_changes")||"Save changes"),1)]),_:1},8,["disabled","loading"])]),_:1})]),_:1})]),_:1}),a(e(te),{open:i.value,"onUpdate:open":_[5]||(_[5]=o=>i.value=o)},{default:t(()=>[a(e(se),{class:"sm:max-w-md"},{default:t(()=>[a(e(le),null,{default:t(()=>[a(e(ne),null,{default:t(()=>[v(r(n.$t("auth.change_avatar")),1)]),_:1}),a(e(he),null,{default:t(()=>[v(r(n.$t("auth.avatar_url_hint")),1)]),_:1})]),_:1}),h("div",va,[a(e(de),{class:"size-36"},{default:t(()=>[f.value?(d(),V(e(ce),{key:0,src:f.value,onError:_[3]||(_[3]=o=>p.value=!0)},null,8,["src"])):F("",!0),a(e(me),{class:"bg-muted"},{default:t(()=>[a(e(ue),{size:72,class:"text-muted-foreground"})]),_:1})]),_:1}),a(e(z),{class:"w-full"},{default:t(()=>[a(e(x),null,{default:t(()=>[v(r(n.$t("auth.avatar_url")),1)]),_:1}),a(e(B),{modelValue:f.value,"onUpdate:modelValue":_[4]||(_[4]=o=>f.value=o),placeholder:n.$t("auth.avatar_url_hint")},null,8,["modelValue","placeholder"]),a(e(ie),null,{default:t(()=>[v(r(n.$t("auth.avatar_url_hint")),1)]),_:1})]),_:1})]),a(e(ae),null,{default:t(()=>[a(e(N),{variant:"outline",onClick:ke},{default:t(()=>[v(r(n.$t("cancel")),1)]),_:1}),a(e(N),{onClick:$e},{default:t(()=>[v(r(n.$t("auth.save_changes")||"Save changes"),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])],64))}}),fa={key:0,class:"empty-state"},pa={class:"flex size-16 items-center justify-center rounded-full bg-muted mb-3"},ha={class:"text-muted-foreground"},ga={key:1,class:"space-y-2"},ka={class:"flex size-10 items-center justify-center rounded-full bg-muted"},$a={class:"flex-1 min-w-0"},ya={class:"font-medium truncate"},ba={class:"text-sm text-muted-foreground flex flex-wrap gap-2"},wa={key:0},Ca={key:1},Sa=P({__name:"SessionTokensList",props:{tokens:{}},emits:["revoke"],setup(C,{emit:c}){const l=c,k=i=>new Date(i).toLocaleString();return(i,f)=>(d(),V(e(X),null,{default:t(()=>[a(e(Z),null,{default:t(()=>[a(e(Q),null,{default:t(()=>[v(r(i.$t("auth.active_sessions")),1)]),_:1}),a(e(Y),null,{default:t(()=>[v(r(i.$t("auth.manage_active_sessions")),1)]),_:1})]),_:1}),a(e(W),null,{default:t(()=>[C.tokens.length===0?(d(),w("div",fa,[h("div",pa,[a(e(Ie),{size:32,class:"text-muted-foreground"})]),h("p",ha,r(i.$t("no_content")),1)])):(d(),w("div",ga,[(d(!0),w(K,null,ve(C.tokens,p=>(d(),w("div",{key:p.token_id,class:"flex items-center gap-4 rounded-lg border p-4 hover:bg-accent/50 transition-colors"},[h("div",ka,[a(e(Fe),{size:20,class:"text-muted-foreground"})]),h("div",$a,[h("div",ya,r(p.name),1),h("div",ba,[h("span",null,r(i.$t("created"))+": "+r(k(p.created_at)),1),p.last_used_at?(d(),w("span",wa,"•")):F("",!0),p.last_used_at?(d(),w("span",Ca,r(i.$t("last_used"))+": "+r(k(p.last_used_at)),1)):F("",!0)])]),a(e(N),{variant:"ghost",size:"icon",class:"text-destructive hover:text-destructive hover:bg-destructive/10",onClick:M(m=>l("revoke",p),["stop"])},{default:t(()=>[a(e(_e),{size:16})]),_:1},8,["onClick"])]))),128))]))]),_:1})]),_:1}))}}),Ua=oe(Sa,[["__scopeId","data-v-628ad67c"]]),Va={class:"user-profile"},Ia={class:"profile-content space-y-6"},Fa={class:"py-4"},Na={class:"text-sm text-muted-foreground mb-4"},Ta={class:"rounded-md bg-destructive/10 p-4"},Pa={class:"font-medium"},za=P({__name:"UserProfile",setup(C){const{t:c}=q(),l=S([]),k=S(!1),i=S(null),f=S(!1),p=D(()=>l.value.filter(u=>!u.is_long_lived)),m=D(()=>l.value.filter(u=>u.is_long_lived)),b=async()=>{try{l.value=await R.getUserTokens()}catch(u){console.error("Failed to load tokens:",u)}},y=u=>{i.value=u,k.value=!0},$=async()=>{if(i.value){f.value=!0;try{if(await R.revokeToken(i.value.token_id)){await b();const s=!i.value.is_long_lived;T.success(c(s?"auth.session_revoked":"auth.token_revoked"))}else{const s=!i.value.is_long_lived;T.error(c(s?"auth.session_revoke_failed":"auth.token_revoke_failed"))}}catch(u){console.error("Failed to revoke token:",u);const s=!i.value?.is_long_lived;T.error(c(s?"auth.session_revoke_failed":"auth.token_revoke_failed"))}finally{k.value=!1,i.value=null,f.value=!1}}};return Ne(()=>{b()}),(u,s)=>(d(),w("div",Va,[a(we,{variant:"comfortable",class:"profile-container"},{default:t(()=>[h("div",Ia,[a(_a),a(ua),a(Ua,{tokens:p.value,onRevoke:y},null,8,["tokens"]),a(oa,{tokens:m.value,onRevoke:y,onCreated:b},null,8,["tokens"])])]),_:1}),a(e(te),{open:k.value,"onUpdate:open":s[1]||(s[1]=g=>k.value=g)},{default:t(()=>[a(e(se),{class:"sm:max-w-md"},{default:t(()=>[a(e(le),null,{default:t(()=>[a(e(ne),null,{default:t(()=>[v(r(i.value?.is_long_lived?u.$t("auth.revoke_token"):u.$t("auth.revoke_session")),1)]),_:1})]),_:1}),h("div",Fa,[h("p",Na,r(i.value?.is_long_lived?u.$t("auth.revoke_token_confirm"):u.$t("auth.revoke_session_confirm")),1),h("div",Ta,[h("p",Pa,r(i.value?.name),1)])]),a(e(ae),null,{default:t(()=>[a(e(N),{variant:"outline",onClick:s[0]||(s[0]=g=>k.value=!1)},{default:t(()=>[v(r(u.$t("cancel")),1)]),_:1}),a(e(N),{variant:"destructive",loading:f.value,onClick:$},{default:t(()=>[v(r(u.$t("auth.revoke")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["open"])]))}}),Qa=oe(za,[["__scopeId","data-v-3e668037"]]);export{Qa as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.empty-state[data-v-7459f4e1]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state[data-v-628ad67c]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px}.user-profile[data-v-3e668037]{height:100%;display:flex;flex-direction:column}.profile-container[data-v-3e668037]{padding:24px 20px;max-width:900px;margin:0 auto;width:100%}.profile-content[data-v-3e668037]{display:flex;flex-direction:column}@media(max-width:600px){.profile-container[data-v-3e668037]{padding:12px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{y as b,h as k,z as h,M as m,_ as C}from"./index-BFLe16Zh.js";import{d as p,o as V,D as o,e as t,al as f,u as n,E as a,h as $,b as c,ad as B,H as r,f as v,I as u,a1 as R,F as x,M,$ as A}from"./lucide-C2DU1LFb.js";import{P as I}from"./PanelviewItemCompact-C1lAmhs4.js";import{_ as P}from"./ProviderIcon.vue_vue_type_style_index_0_lang-3Xmo3tIn.js";import{C as T,n as g,o as z,s as E}from"./vuetify-CrxirfrA.js";const N=p({__name:"Carousel",setup(e){return V(()=>{document.documentElement.style.setProperty("--swiper-navigation-color","primary")}),(d,l)=>{const w=f("swiper");return t(),o(w,{"slides-per-view":n(b)(d.$vuetify.display.width)+.5,"free-mode":!0,navigation:!1,mousewheel:{forceToAxis:!0,releaseOnEdges:!0}},{default:a(()=>[$(d.$slots,"default")]),_:3},8,["slides-per-view"])}}}),O={class:"mr-3"},D={key:0},W={class:"carousel-wrapper"},F=p({__name:"WidgetRow",props:{widgetRow:{},editMode:{type:Boolean},showProviderOnCover:{type:Boolean}},emits:["update:settings"],setup(e,{emit:d}){const l=d;return(w,s)=>{const y=f("swiper-slide");return t(),c("div",{class:B(`widget-row ${e.widgetRow.settings&&!e.widgetRow.settings.enabled?"disabled":""}`)},[r(T,{class:"header",color:"transparent"},{title:a(()=>[v("span",O,R(e.widgetRow.title),1),e.widgetRow.subtitle&&n(k)("bp6")?(t(),o(z,{key:0,inline:"",outlined:"",text:e.widgetRow.subtitle,density:"compact",size:"small"},null,8,["text"])):u("",!0)]),append:a(()=>[e.editMode&&e.widgetRow.settings?(t(),c("div",D,[e.widgetRow.settings.position!==0?(t(),o(g,{key:0,icon:"mdi-chevron-up",class:"enabled",onClick:s[0]||(s[0]=i=>l("update:settings",{...e.widgetRow.settings,position:e.widgetRow.settings.position-1}))})):u("",!0),r(g,{icon:"mdi-chevron-down",onClick:s[1]||(s[1]=i=>l("update:settings",{...e.widgetRow.settings,position:e.widgetRow.settings.position+1}))}),r(g,{icon:e.widgetRow.settings.enabled?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",onClick:s[2]||(s[2]=i=>l("update:settings",{...e.widgetRow.settings,enabled:!e.widgetRow.settings.enabled}))},null,8,["icon"])])):e.widgetRow.provider?(t(),o(P,{key:1,domain:e.widgetRow.provider,size:24},null,8,["domain"])):u("",!0)]),_:1}),v("div",W,[e.widgetRow.items.length>0?(t(),o(N,{key:0},{default:a(()=>[(t(!0),c(x,null,M(e.widgetRow.items,i=>(t(),o(y,{key:i.uri},{default:a(()=>[r(I,{item:i,"show-provider-on-cover":e.showProviderOnCover,"permanent-overlay":![n(m).ALBUM,n(m).TRACK,n(m).RADIO].includes(i.media_type),"is-available":n(h)(i),disabled:e.editMode},null,8,["item","show-provider-on-cover","permanent-overlay","is-available","disabled"])]),_:2},1024))),128))]),_:1})):(t(),o(E,{key:1},{default:a(()=>[A(R(w.$t("no_content")),1)]),_:1}))])],2)}}}),j=C(F,[["__scopeId","data-v-a88771f6"]]);export{j as W};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const T={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},X=Object.create(null);for(const t in T)Object.hasOwn(T,t)&&(X[T[t]]=t);const _={to:{},get:{}};_.get=function(t){const n=t.slice(0,3).toLowerCase();let e,o;switch(n){case"hsl":{e=_.get.hsl(t),o="hsl";break}case"hwb":{e=_.get.hwb(t),o="hwb";break}default:{e=_.get.rgb(t),o="rgb";break}}return e?{model:o,value:e}:null};_.get.rgb=function(t){if(!t)return null;const n=/^#([a-f\d]{3,4})$/i,e=/^#([a-f\d]{6})([a-f\d]{2})?$/i,o=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,s=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/;let r=[0,0,0,1],l,c,u;if(l=t.match(e)){for(u=l[2],l=l[1],c=0;c<3;c++){const f=c*2;r[c]=Number.parseInt(l.slice(f,f+2),16)}u&&(r[3]=Number.parseInt(u,16)/255)}else if(l=t.match(n)){for(l=l[1],u=l[3],c=0;c<3;c++)r[c]=Number.parseInt(l[c]+l[c],16);u&&(r[3]=Number.parseInt(u+u,16)/255)}else if(l=t.match(o)){for(c=0;c<3;c++)r[c]=Number.parseFloat(l[c+1]);l[4]&&(r[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else if(l=t.match(s)){for(c=0;c<3;c++)r[c]=Math.round(Number.parseFloat(l[c+1])*2.55);l[4]&&(r[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else return(l=t.toLowerCase().match(a))?l[1]==="transparent"?[0,0,0,0]:Object.hasOwn(T,l[1])?(r=T[l[1]].slice(),r[3]=1,r):null:null;for(c=0;c<3;c++)r[c]=S(r[c],0,255);return r[3]=S(r[3],0,1),r};_.get.hsl=function(t){if(!t)return null;const n=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,e=t.match(n);if(e){const o=Number.parseFloat(e[4]),s=(Number.parseFloat(e[1])%360+360)%360,a=S(Number.parseFloat(e[2]),0,100),r=S(Number.parseFloat(e[3]),0,100),l=S(Number.isNaN(o)?1:o,0,1);return[s,a,r,l]}return null};_.get.hwb=function(t){if(!t)return null;const n=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,e=t.match(n);if(e){const o=Number.parseFloat(e[4]),s=(Number.parseFloat(e[1])%360+360)%360,a=S(Number.parseFloat(e[2]),0,100),r=S(Number.parseFloat(e[3]),0,100),l=S(Number.isNaN(o)?1:o,0,1);return[s,a,r,l]}return null};_.to.hex=function(...t){return"#"+$(t[0])+$(t[1])+$(t[2])+(t[3]<1?$(Math.round(t[3]*255)):"")};_.to.rgb=function(...t){return t.length<4||t[3]===1?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"};_.to.rgb.percent=function(...t){const n=Math.round(t[0]/255*100),e=Math.round(t[1]/255*100),o=Math.round(t[2]/255*100);return t.length<4||t[3]===1?"rgb("+n+"%, "+e+"%, "+o+"%)":"rgba("+n+"%, "+e+"%, "+o+"%, "+t[3]+")"};_.to.hsl=function(...t){return t.length<4||t[3]===1?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"};_.to.hwb=function(...t){let n="";return t.length>=4&&t[3]!==1&&(n=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+n+")"};_.to.keyword=function(...t){return X[t.slice(0,3)]};function S(t,n,e){return Math.min(Math.max(n,t),e)}function $(t){const n=Math.round(t).toString(16).toUpperCase();return n.length<2?"0"+n:n}const U={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Y={};for(const t of Object.keys(U))Y[U[t]]=t;const h={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},oklab:{channels:3,labels:["okl","oka","okb"]},lch:{channels:3,labels:"lch"},oklch:{channels:3,labels:["okl","okc","okh"]},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},E=(6/29)**3;function P(t){const n=t>.0031308?1.055*t**.4166666666666667-.055:t*12.92;return Math.min(Math.max(0,n),1)}function j(t){return t>.04045?((t+.055)/1.055)**2.4:t/12.92}for(const t of Object.keys(h)){if(!("channels"in h[t]))throw new Error("missing channels property: "+t);if(!("labels"in h[t]))throw new Error("missing channel labels property: "+t);if(h[t].labels.length!==h[t].channels)throw new Error("channel and label counts mismatch: "+t);const{channels:n,labels:e}=h[t];delete h[t].channels,delete h[t].labels,Object.defineProperty(h[t],"channels",{value:n}),Object.defineProperty(h[t],"labels",{value:e})}h.rgb.hsl=function(t){const n=t[0]/255,e=t[1]/255,o=t[2]/255,s=Math.min(n,e,o),a=Math.max(n,e,o),r=a-s;let l,c;switch(a){case s:{l=0;break}case n:{l=(e-o)/r;break}case e:{l=2+(o-n)/r;break}case o:{l=4+(n-e)/r;break}}l=Math.min(l*60,360),l<0&&(l+=360);const u=(s+a)/2;return a===s?c=0:u<=.5?c=r/(a+s):c=r/(2-a-s),[l,c*100,u*100]};h.rgb.hsv=function(t){let n,e,o,s,a;const r=t[0]/255,l=t[1]/255,c=t[2]/255,u=Math.max(r,l,c),f=u-Math.min(r,l,c),b=function(d){return(u-d)/6/f+1/2};if(f===0)s=0,a=0;else{switch(a=f/u,n=b(r),e=b(l),o=b(c),u){case r:{s=o-e;break}case l:{s=1/3+n-o;break}case c:{s=2/3+e-n;break}}s<0?s+=1:s>1&&(s-=1)}return[s*360,a*100,u*100]};h.rgb.hwb=function(t){const n=t[0],e=t[1];let o=t[2];const s=h.rgb.hsl(t)[0],a=1/255*Math.min(n,Math.min(e,o));return o=1-1/255*Math.max(n,Math.max(e,o)),[s,a*100,o*100]};h.rgb.oklab=function(t){const n=j(t[0]/255),e=j(t[1]/255),o=j(t[2]/255),s=Math.cbrt(.4122214708*n+.5363325363*e+.0514459929*o),a=Math.cbrt(.2119034982*n+.6806995451*e+.1073969566*o),r=Math.cbrt(.0883024619*n+.2817188376*e+.6299787005*o),l=.2104542553*s+.793617785*a-.0040720468*r,c=1.9779984951*s-2.428592205*a+.4505937099*r,u=.0259040371*s+.7827717662*a-.808675766*r;return[l*100,c*100,u*100]};h.rgb.cmyk=function(t){const n=t[0]/255,e=t[1]/255,o=t[2]/255,s=Math.min(1-n,1-e,1-o),a=(1-n-s)/(1-s)||0,r=(1-e-s)/(1-s)||0,l=(1-o-s)/(1-s)||0;return[a*100,r*100,l*100,s*100]};function tt(t,n){return(t[0]-n[0])**2+(t[1]-n[1])**2+(t[2]-n[2])**2}h.rgb.keyword=function(t){const n=Y[t];if(n)return n;let e=Number.POSITIVE_INFINITY,o;for(const s of Object.keys(U)){const a=U[s],r=tt(t,a);r<e&&(e=r,o=s)}return o};h.keyword.rgb=function(t){return[...U[t]]};h.rgb.xyz=function(t){const n=j(t[0]/255),e=j(t[1]/255),o=j(t[2]/255),s=n*.4124564+e*.3575761+o*.1804375,a=n*.2126729+e*.7151522+o*.072175,r=n*.0193339+e*.119192+o*.9503041;return[s*100,a*100,r*100]};h.rgb.lab=function(t){const n=h.rgb.xyz(t);let e=n[0],o=n[1],s=n[2];e/=95.047,o/=100,s/=108.883,e=e>E?e**(1/3):7.787*e+16/116,o=o>E?o**(1/3):7.787*o+16/116,s=s>E?s**(1/3):7.787*s+16/116;const a=116*o-16,r=500*(e-o),l=200*(o-s);return[a,r,l]};h.hsl.rgb=function(t){const n=t[0]/360,e=t[1]/100,o=t[2]/100;let s,a;if(e===0)return a=o*255,[a,a,a];const r=o<.5?o*(1+e):o+e-o*e,l=2*o-r,c=[0,0,0];for(let u=0;u<3;u++)s=n+1/3*-(u-1),s<0&&s++,s>1&&s--,6*s<1?a=l+(r-l)*6*s:2*s<1?a=r:3*s<2?a=l+(r-l)*(2/3-s)*6:a=l,c[u]=a*255;return c};h.hsl.hsv=function(t){const n=t[0];let e=t[1]/100,o=t[2]/100,s=e;const a=Math.max(o,.01);o*=2,e*=o<=1?o:2-o,s*=a<=1?a:2-a;const r=(o+e)/2,l=o===0?2*s/(a+s):2*e/(o+e);return[n,l*100,r*100]};h.hsv.rgb=function(t){const n=t[0]/60,e=t[1]/100;let o=t[2]/100;const s=Math.floor(n)%6,a=n-Math.floor(n),r=255*o*(1-e),l=255*o*(1-e*a),c=255*o*(1-e*(1-a));switch(o*=255,s){case 0:return[o,c,r];case 1:return[l,o,r];case 2:return[r,o,c];case 3:return[r,l,o];case 4:return[c,r,o];case 5:return[o,r,l]}};h.hsv.hsl=function(t){const n=t[0],e=t[1]/100,o=t[2]/100,s=Math.max(o,.01);let a,r;r=(2-e)*o;const l=(2-e)*s;return a=e*s,a/=l<=1?l:2-l,a=a||0,r/=2,[n,a*100,r*100]};h.hwb.rgb=function(t){const n=t[0]/360;let e=t[1]/100,o=t[2]/100;const s=e+o;let a;s>1&&(e/=s,o/=s);const r=Math.floor(6*n),l=1-o;a=6*n-r,(r&1)!==0&&(a=1-a);const c=e+a*(l-e);let u,f,b;switch(r){default:case 6:case 0:{u=l,f=c,b=e;break}case 1:{u=c,f=l,b=e;break}case 2:{u=e,f=l,b=c;break}case 3:{u=e,f=c,b=l;break}case 4:{u=c,f=e,b=l;break}case 5:{u=l,f=e,b=c;break}}return[u*255,f*255,b*255]};h.cmyk.rgb=function(t){const n=t[0]/100,e=t[1]/100,o=t[2]/100,s=t[3]/100,a=1-Math.min(1,n*(1-s)+s),r=1-Math.min(1,e*(1-s)+s),l=1-Math.min(1,o*(1-s)+s);return[a*255,r*255,l*255]};h.xyz.rgb=function(t){const n=t[0]/100,e=t[1]/100,o=t[2]/100;let s,a,r;return s=n*3.2404542+e*-1.5371385+o*-.4985314,a=n*-.969266+e*1.8760108+o*.041556,r=n*.0556434+e*-.2040259+o*1.0572252,s=P(s),a=P(a),r=P(r),[s*255,a*255,r*255]};h.xyz.lab=function(t){let n=t[0],e=t[1],o=t[2];n/=95.047,e/=100,o/=108.883,n=n>E?n**(1/3):7.787*n+16/116,e=e>E?e**(1/3):7.787*e+16/116,o=o>E?o**(1/3):7.787*o+16/116;const s=116*e-16,a=500*(n-e),r=200*(e-o);return[s,a,r]};h.xyz.oklab=function(t){const n=t[0]/100,e=t[1]/100,o=t[2]/100,s=Math.cbrt(.8189330101*n+.3618667424*e-.1288597137*o),a=Math.cbrt(.0329845436*n+.9293118715*e+.0361456387*o),r=Math.cbrt(.0482003018*n+.2643662691*e+.633851707*o),l=.2104542553*s+.793617785*a-.0040720468*r,c=1.9779984951*s-2.428592205*a+.4505937099*r,u=.0259040371*s+.7827717662*a-.808675766*r;return[l*100,c*100,u*100]};h.oklab.oklch=function(t){return h.lab.lch(t)};h.oklab.xyz=function(t){const n=t[0]/100,e=t[1]/100,o=t[2]/100,s=(.999999998*n+.396337792*e+.215803758*o)**3,a=(1.000000008*n-.105561342*e-.063854175*o)**3,r=(1.000000055*n-.089484182*e-1.291485538*o)**3,l=1.227013851*s-.55779998*a+.281256149*r,c=-.040580178*s+1.11225687*a-.071676679*r,u=-.076381285*s-.421481978*a+1.58616322*r;return[l*100,c*100,u*100]};h.oklab.rgb=function(t){const n=t[0]/100,e=t[1]/100,o=t[2]/100,s=(n+.3963377774*e+.2158037573*o)**3,a=(n-.1055613458*e-.0638541728*o)**3,r=(n-.0894841775*e-1.291485548*o)**3,l=P(4.0767416621*s-3.3077115913*a+.2309699292*r),c=P(-1.2684380046*s+2.6097574011*a-.3413193965*r),u=P(-.0041960863*s-.7034186147*a+1.707614701*r);return[l*255,c*255,u*255]};h.oklch.oklab=function(t){return h.lch.lab(t)};h.lab.xyz=function(t){const n=t[0],e=t[1],o=t[2];let s,a,r;a=(n+16)/116,s=e/500+a,r=a-o/200;const l=a**3,c=s**3,u=r**3;return a=l>E?l:(a-16/116)/7.787,s=c>E?c:(s-16/116)/7.787,r=u>E?u:(r-16/116)/7.787,s*=95.047,a*=100,r*=108.883,[s,a,r]};h.lab.lch=function(t){const n=t[0],e=t[1],o=t[2];let s;s=Math.atan2(o,e)*360/2/Math.PI,s<0&&(s+=360);const r=Math.sqrt(e*e+o*o);return[n,r,s]};h.lch.lab=function(t){const n=t[0],e=t[1],s=t[2]/360*2*Math.PI,a=e*Math.cos(s),r=e*Math.sin(s);return[n,a,r]};h.rgb.ansi16=function(t,n=null){const[e,o,s]=t;let a=n===null?h.rgb.hsv(t)[2]:n;if(a=Math.round(a/50),a===0)return 30;let r=30+(Math.round(s/255)<<2|Math.round(o/255)<<1|Math.round(e/255));return a===2&&(r+=60),r};h.hsv.ansi16=function(t){return h.rgb.ansi16(h.hsv.rgb(t),t[2])};h.rgb.ansi256=function(t){const n=t[0],e=t[1],o=t[2];return n>>4===e>>4&&e>>4===o>>4?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(e/255*5)+Math.round(o/255*5)};h.ansi16.rgb=function(t){t=t[0];let n=t%10;if(n===0||n===7)return t>50&&(n+=3.5),n=n/10.5*255,[n,n,n];const e=(Math.trunc(t>50)+1)*.5,o=(n&1)*e*255,s=(n>>1&1)*e*255,a=(n>>2&1)*e*255;return[o,s,a]};h.ansi256.rgb=function(t){if(t=t[0],t>=232){const a=(t-232)*10+8;return[a,a,a]}t-=16;let n;const e=Math.floor(t/36)/5*255,o=Math.floor((n=t%36)/6)/5*255,s=n%6/5*255;return[e,o,s]};h.rgb.hex=function(t){const e=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".slice(e.length)+e};h.hex.rgb=function(t){const n=t.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!n)return[0,0,0];let e=n[0];n[0].length===3&&(e=[...e].map(l=>l+l).join(""));const o=Number.parseInt(e,16),s=o>>16&255,a=o>>8&255,r=o&255;return[s,a,r]};h.rgb.hcg=function(t){const n=t[0]/255,e=t[1]/255,o=t[2]/255,s=Math.max(Math.max(n,e),o),a=Math.min(Math.min(n,e),o),r=s-a;let l;const c=r<1?a/(1-r):0;return r<=0?l=0:s===n?l=(e-o)/r%6:s===e?l=2+(o-n)/r:l=4+(n-e)/r,l/=6,l%=1,[l*360,r*100,c*100]};h.hsl.hcg=function(t){const n=t[1]/100,e=t[2]/100,o=e<.5?2*n*e:2*n*(1-e);let s=0;return o<1&&(s=(e-.5*o)/(1-o)),[t[0],o*100,s*100]};h.hsv.hcg=function(t){const n=t[1]/100,e=t[2]/100,o=n*e;let s=0;return o<1&&(s=(e-o)/(1-o)),[t[0],o*100,s*100]};h.hcg.rgb=function(t){const n=t[0]/360,e=t[1]/100,o=t[2]/100;if(e===0)return[o*255,o*255,o*255];const s=[0,0,0],a=n%1*6,r=a%1,l=1-r;let c=0;switch(Math.floor(a)){case 0:{s[0]=1,s[1]=r,s[2]=0;break}case 1:{s[0]=l,s[1]=1,s[2]=0;break}case 2:{s[0]=0,s[1]=1,s[2]=r;break}case 3:{s[0]=0,s[1]=l,s[2]=1;break}case 4:{s[0]=r,s[1]=0,s[2]=1;break}default:s[0]=1,s[1]=0,s[2]=l}return c=(1-e)*o,[(e*s[0]+c)*255,(e*s[1]+c)*255,(e*s[2]+c)*255]};h.hcg.hsv=function(t){const n=t[1]/100,e=t[2]/100,o=n+e*(1-n);let s=0;return o>0&&(s=n/o),[t[0],s*100,o*100]};h.hcg.hsl=function(t){const n=t[1]/100,o=t[2]/100*(1-n)+.5*n;let s=0;return o>0&&o<.5?s=n/(2*o):o>=.5&&o<1&&(s=n/(2*(1-o))),[t[0],s*100,o*100]};h.hcg.hwb=function(t){const n=t[1]/100,e=t[2]/100,o=n+e*(1-n);return[t[0],(o-n)*100,(1-o)*100]};h.hwb.hcg=function(t){const n=t[1]/100,o=1-t[2]/100,s=o-n;let a=0;return s<1&&(a=(o-s)/(1-s)),[t[0],s*100,a*100]};h.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};h.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};h.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};h.gray.hsl=function(t){return[0,0,t[0]]};h.gray.hsv=h.gray.hsl;h.gray.hwb=function(t){return[0,100,t[0]]};h.gray.cmyk=function(t){return[0,0,0,t[0]]};h.gray.lab=function(t){return[t[0],0,0]};h.gray.hex=function(t){const n=Math.round(t[0]/100*255)&255,o=((n<<16)+(n<<8)+n).toString(16).toUpperCase();return"000000".slice(o.length)+o};h.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]};function nt(){const t={},n=Object.keys(h);for(let{length:e}=n,o=0;o<e;o++)t[n[o]]={distance:-1,parent:null};return t}function et(t){const n=nt(),e=[t];for(n[t].distance=0;e.length>0;){const o=e.pop(),s=Object.keys(h[o]);for(let{length:a}=s,r=0;r<a;r++){const l=s[r],c=n[l];c.distance===-1&&(c.distance=n[o].distance+1,c.parent=o,e.unshift(l))}}return n}function rt(t,n){return function(e){return n(t(e))}}function ot(t,n){const e=[n[t].parent,t];let o=h[n[t].parent][t],s=n[t].parent;for(;n[s].parent;)e.unshift(n[s].parent),o=rt(h[n[s].parent][s],o),s=n[s].parent;return o.conversion=e,o}function st(t){const n=et(t),e={},o=Object.keys(n);for(let{length:s}=o,a=0;a<s;a++){const r=o[a];n[r].parent!==null&&(e[r]=ot(r,n))}return e}const w={},at=Object.keys(h);function lt(t){const n=function(...e){const o=e[0];return o==null?o:(o.length>1&&(e=o),t(e))};return"conversion"in t&&(n.conversion=t.conversion),n}function it(t){const n=function(...e){const o=e[0];if(o==null)return o;o.length>1&&(e=o);const s=t(e);if(typeof s=="object")for(let{length:a}=s,r=0;r<a;r++)s[r]=Math.round(s[r]);return s};return"conversion"in t&&(n.conversion=t.conversion),n}for(const t of at){w[t]={},Object.defineProperty(w[t],"channels",{value:h[t].channels}),Object.defineProperty(w[t],"labels",{value:h[t].labels});const n=st(t),e=Object.keys(n);for(const o of e){const s=n[o];w[t][o]=it(s),w[t][o].raw=lt(s)}}const Q=["keyword","gray","hex"],G={};for(const t of Object.keys(w))G[[...w[t].labels].sort().join("")]=t;const J={};function M(t,n){if(!(this instanceof M))return new M(t,n);if(n&&n in Q&&(n=null),n&&!(n in w))throw new Error("Unknown model: "+n);let e,o;if(t==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof M)this.model=t.model,this.color=[...t.color],this.valpha=t.valpha;else if(typeof t=="string"){const s=_.get(t);if(s===null)throw new Error("Unable to parse color from string: "+t);this.model=s.model,o=w[this.model].channels,this.color=s.value.slice(0,o),this.valpha=typeof s.value[o]=="number"?s.value[o]:1}else if(t.length>0){this.model=n||"rgb",o=w[this.model].channels;const s=Array.prototype.slice.call(t,0,o);this.color=V(s,o),this.valpha=typeof t[o]=="number"?t[o]:1}else if(typeof t=="number")this.model="rgb",this.color=[t>>16&255,t>>8&255,t&255],this.valpha=1;else{this.valpha=1;const s=Object.keys(t);"alpha"in t&&(s.splice(s.indexOf("alpha"),1),this.valpha=typeof t.alpha=="number"?t.alpha:0);const a=s.sort().join("");if(!(a in G))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=G[a];const{labels:r}=w[this.model],l=[];for(e=0;e<r.length;e++)l.push(t[r[e]]);this.color=V(l)}if(J[this.model])for(o=w[this.model].channels,e=0;e<o;e++){const s=J[this.model][e];s&&(this.color[e]=s(this.color[e]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}M.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(t){let n=this.model in _.to?this:this.rgb();n=n.round(typeof t=="number"?t:1);const e=n.valpha===1?n.color:[...n.color,this.valpha];return _.to[n.model](...e)},percentString(t){const n=this.rgb().round(typeof t=="number"?t:1),e=n.valpha===1?n.color:[...n.color,this.valpha];return _.to.rgb.percent(...e)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){const t={},{channels:n}=w[this.model],{labels:e}=w[this.model];for(let o=0;o<n;o++)t[e[o]]=this.color[o];return this.valpha!==1&&(t.alpha=this.valpha),t},unitArray(){const t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,this.valpha!==1&&t.push(this.valpha),t},unitObject(){const t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,this.valpha!==1&&(t.alpha=this.valpha),t},round(t){return t=Math.max(t||0,0),new M([...this.color.map(ut(t)),this.valpha],this.model)},alpha(t){return t!==void 0?new M([...this.color,Math.max(0,Math.min(1,t))],this.model):this.valpha},red:g("rgb",0,m(255)),green:g("rgb",1,m(255)),blue:g("rgb",2,m(255)),hue:g(["hsl","hsv","hsl","hwb","hcg"],0,t=>(t%360+360)%360),saturationl:g("hsl",1,m(100)),lightness:g("hsl",2,m(100)),saturationv:g("hsv",1,m(100)),value:g("hsv",2,m(100)),chroma:g("hcg",1,m(100)),gray:g("hcg",2,m(100)),white:g("hwb",1,m(100)),wblack:g("hwb",2,m(100)),cyan:g("cmyk",0,m(100)),magenta:g("cmyk",1,m(100)),yellow:g("cmyk",2,m(100)),black:g("cmyk",3,m(100)),x:g("xyz",0,m(95.047)),y:g("xyz",1,m(100)),z:g("xyz",2,m(108.833)),l:g("lab",0,m(100)),a:g("lab",1),b:g("lab",2),keyword(t){return t!==void 0?new M(t):w[this.model].keyword(this.color)},hex(t){return t!==void 0?new M(t):_.to.hex(...this.rgb().round().color)},hexa(t){if(t!==void 0)return new M(t);const n=this.rgb().round().color;let e=Math.round(this.valpha*255).toString(16).toUpperCase();return e.length===1&&(e="0"+e),_.to.hex(...n)+e},rgbNumber(){const t=this.rgb().color;return(t[0]&255)<<16|(t[1]&255)<<8|t[2]&255},luminosity(){const t=this.rgb().color,n=[];for(const[e,o]of t.entries()){const s=o/255;n[e]=s<=.04045?s/12.92:((s+.055)/1.055)**2.4}return .2126*n[0]+.7152*n[1]+.0722*n[2]},contrast(t){const n=this.luminosity(),e=t.luminosity();return n>e?(n+.05)/(e+.05):(e+.05)/(n+.05)},level(t){const n=this.contrast(t);return n>=7?"AAA":n>=4.5?"AA":""},isDark(){const t=this.rgb().color;return(t[0]*2126+t[1]*7152+t[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const t=this.rgb();for(let n=0;n<3;n++)t.color[n]=255-t.color[n];return t},lighten(t){const n=this.hsl();return n.color[2]+=n.color[2]*t,n},darken(t){const n=this.hsl();return n.color[2]-=n.color[2]*t,n},saturate(t){const n=this.hsl();return n.color[1]+=n.color[1]*t,n},desaturate(t){const n=this.hsl();return n.color[1]-=n.color[1]*t,n},whiten(t){const n=this.hwb();return n.color[1]+=n.color[1]*t,n},blacken(t){const n=this.hwb();return n.color[2]+=n.color[2]*t,n},grayscale(){const t=this.rgb().color,n=t[0]*.3+t[1]*.59+t[2]*.11;return M.rgb(n,n,n)},fade(t){return this.alpha(this.valpha-this.valpha*t)},opaquer(t){return this.alpha(this.valpha+this.valpha*t)},rotate(t){const n=this.hsl();let e=n.color[0];return e=(e+t)%360,e=e<0?360+e:e,n.color[0]=e,n},mix(t,n){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);const e=t.rgb(),o=this.rgb(),s=n===void 0?.5:n,a=2*s-1,r=e.alpha()-o.alpha(),l=((a*r===-1?a:(a+r)/(1+a*r))+1)/2,c=1-l;return M.rgb(l*e.red()+c*o.red(),l*e.green()+c*o.green(),l*e.blue()+c*o.blue(),e.alpha()*s+o.alpha()*(1-s))}};for(const t of Object.keys(w)){if(Q.includes(t))continue;const{channels:n}=w[t];M.prototype[t]=function(...e){return this.model===t?new M(this):e.length>0?new M(e,t):new M([...ht(w[this.model][t].raw(this.color)),this.valpha],t)},M[t]=function(...e){let o=e[0];return typeof o=="number"&&(o=V(e,n)),new M(o,t)}}function ct(t,n){return Number(t.toFixed(n))}function ut(t){return function(n){return ct(n,t)}}function g(t,n,e){t=Array.isArray(t)?t:[t];for(const o of t)(J[o]||=[])[n]=e;return t=t[0],function(o){let s;return o!==void 0?(e&&(o=e(o)),s=this[t](),s.color[n]=o,s):(s=this[t]().color[n],e&&(s=e(s)),s)}}function m(t){return function(n){return Math.max(0,Math.min(t,n))}}function ht(t){return Array.isArray(t)?t:[t]}function V(t,n){for(let e=0;e<n;e++)typeof t[e]!="number"&&(t[e]=0);return t}var L=function(t,n){return t<n?-1:t>n?1:0},W=function(t){return t.reduce(function(n,e){return n+e},0)},ft=(function(){function t(e){this.colors=e}var n=t.prototype;return n.palette=function(){return this.colors},n.map=function(e){return e},t})(),bt=(function(){function t(a,r,l){return(a<<10)+(r<<5)+l}function n(a){var r=[],l=!1;function c(){r.sort(a),l=!0}return{push:function(u){r.push(u),l=!1},peek:function(u){return l||c(),u===void 0&&(u=r.length-1),r[u]},pop:function(){return l||c(),r.pop()},size:function(){return r.length},map:function(u){return r.map(u)},debug:function(){return l||c(),r}}}function e(a,r,l,c,u,f,b){var d=this;d.r1=a,d.r2=r,d.g1=l,d.g2=c,d.b1=u,d.b2=f,d.histo=b}function o(){this.vboxes=new n(function(a,r){return L(a.vbox.count()*a.vbox.volume(),r.vbox.count()*r.vbox.volume())})}function s(a,r){if(r.count()){var l=r.r2-r.r1+1,c=r.g2-r.g1+1,u=Math.max.apply(null,[l,c,r.b2-r.b1+1]);if(r.count()==1)return[r.copy()];var f,b,d,y,x=0,v=[],O=[];if(u==l)for(f=r.r1;f<=r.r2;f++){for(y=0,b=r.g1;b<=r.g2;b++)for(d=r.b1;d<=r.b2;d++)y+=a[t(f,b,d)]||0;v[f]=x+=y}else if(u==c)for(f=r.g1;f<=r.g2;f++){for(y=0,b=r.r1;b<=r.r2;b++)for(d=r.b1;d<=r.b2;d++)y+=a[t(b,f,d)]||0;v[f]=x+=y}else for(f=r.b1;f<=r.b2;f++){for(y=0,b=r.r1;b<=r.r2;b++)for(d=r.g1;d<=r.g2;d++)y+=a[t(b,d,f)]||0;v[f]=x+=y}return v.forEach(function(I,p){O[p]=x-I}),(function(I){var p,N,k,q,F,A=I+"1",z=I+"2",C=0;for(f=r[A];f<=r[z];f++)if(v[f]>x/2){for(k=r.copy(),q=r.copy(),F=(p=f-r[A])<=(N=r[z]-f)?Math.min(r[z]-1,~~(f+N/2)):Math.max(r[A],~~(f-1-p/2));!v[F];)F++;for(C=O[F];!C&&v[F-1];)C=O[--F];return k[z]=F,q[A]=k[z]+1,[k,q]}})(u==l?"r":u==c?"g":"b")}}return e.prototype={volume:function(a){var r=this;return r._volume&&!a||(r._volume=(r.r2-r.r1+1)*(r.g2-r.g1+1)*(r.b2-r.b1+1)),r._volume},count:function(a){var r=this,l=r.histo;if(!r._count_set||a){var c,u,f,b=0;for(c=r.r1;c<=r.r2;c++)for(u=r.g1;u<=r.g2;u++)for(f=r.b1;f<=r.b2;f++)b+=l[t(c,u,f)]||0;r._count=b,r._count_set=!0}return r._count},copy:function(){var a=this;return new e(a.r1,a.r2,a.g1,a.g2,a.b1,a.b2,a.histo)},avg:function(a){var r=this,l=r.histo;if(!r._avg||a){var c,u,f,b,d=0,y=0,x=0,v=0;if(r.r1===r.r2&&r.g1===r.g2&&r.b1===r.b2)r._avg=[r.r1<<3,r.g1<<3,r.b1<<3];else{for(u=r.r1;u<=r.r2;u++)for(f=r.g1;f<=r.g2;f++)for(b=r.b1;b<=r.b2;b++)d+=c=l[t(u,f,b)]||0,y+=c*(u+.5)*8,x+=c*(f+.5)*8,v+=c*(b+.5)*8;r._avg=d?[~~(y/d),~~(x/d),~~(v/d)]:[~~(8*(r.r1+r.r2+1)/2),~~(8*(r.g1+r.g2+1)/2),~~(8*(r.b1+r.b2+1)/2)]}}return r._avg},contains:function(a){var r=this,l=a[0]>>3;return gval=a[1]>>3,bval=a[2]>>3,l>=r.r1&&l<=r.r2&&gval>=r.g1&&gval<=r.g2&&bval>=r.b1&&bval<=r.b2}},o.prototype={push:function(a){this.vboxes.push({vbox:a,color:a.avg()})},palette:function(){return this.vboxes.map(function(a){return a.color})},size:function(){return this.vboxes.size()},map:function(a){for(var r=this.vboxes,l=0;l<r.size();l++)if(r.peek(l).vbox.contains(a))return r.peek(l).color;return this.nearest(a)},nearest:function(a){for(var r,l,c,u=this.vboxes,f=0;f<u.size();f++)((l=Math.sqrt(Math.pow(a[0]-u.peek(f).color[0],2)+Math.pow(a[1]-u.peek(f).color[1],2)+Math.pow(a[2]-u.peek(f).color[2],2)))<r||r===void 0)&&(r=l,c=u.peek(f).color);return c},forcebw:function(){var a=this.vboxes;a.sort(function(u,f){return L(W(u.color),W(f.color))});var r=a[0].color;r[0]<5&&r[1]<5&&r[2]<5&&(a[0].color=[0,0,0]);var l=a.length-1,c=a[l].color;c[0]>251&&c[1]>251&&c[2]>251&&(a[l].color=[255,255,255])}},{quantize:function(a,r){if(!Number.isInteger(r)||r<1||r>256)throw new Error("Invalid maximum color count. It must be an integer between 1 and 256.");if(!a.length||r<2||r>256||!a.length||r<2||r>256)return!1;for(var l=[],c=new Set,u=0;u<a.length;u++){var f=a[u],b=f.join(",");c.has(b)||(c.add(b),l.push(f))}if(l.length<=r)return new ft(l);var d=(function(p){var N,k=new Array(32768);return p.forEach(function(q){N=t(q[0]>>3,q[1]>>3,q[2]>>3),k[N]=(k[N]||0)+1}),k})(a);d.forEach(function(){});var y=(function(p,N){var k,q,F,A=1e6,z=0,C=1e6,K=0,R=1e6,H=0;return p.forEach(function(B){(k=B[0]>>3)<A?A=k:k>z&&(z=k),(q=B[1]>>3)<C?C=q:q>K&&(K=q),(F=B[2]>>3)<R?R=F:F>H&&(H=F)}),new e(A,z,C,K,R,H,N)})(a,d),x=new n(function(p,N){return L(p.count(),N.count())});function v(p,N){for(var k,q=p.size(),F=0;F<1e3;){if(q>=N||F++>1e3)return;if((k=p.pop()).count()){var A=s(d,k),z=A[0],C=A[1];if(!z)return;p.push(z),C&&(p.push(C),q++)}else p.push(k),F++}}x.push(y),v(x,.75*r);for(var O=new n(function(p,N){return L(p.count()*p.volume(),N.count()*N.volume())});x.size();)O.push(x.pop());v(O,r);for(var I=new o;O.size();)I.push(O.pop());return I}}})().quantize,Z=function(t){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.width=this.canvas.width=t.naturalWidth,this.height=this.canvas.height=t.naturalHeight,this.context.drawImage(t,0,0,this.width,this.height)};Z.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)};var D=function(){};D.prototype.getColor=function(t,n){return n===void 0&&(n=10),this.getPalette(t,5,n)[0]},D.prototype.getPalette=function(t,n,e){var o=(function(l){var c=l.colorCount,u=l.quality;if(c!==void 0&&Number.isInteger(c)){if(c===1)throw new Error("colorCount should be between 2 and 20. To get one color, call getColor() instead of getPalette()");c=Math.max(c,2),c=Math.min(c,20)}else c=10;return(u===void 0||!Number.isInteger(u)||u<1)&&(u=10),{colorCount:c,quality:u}})({colorCount:n,quality:e}),s=new Z(t),a=(function(l,c,u){for(var f,b,d,y,x,v=l,O=[],I=0;I<c;I+=u)b=v[0+(f=4*I)],d=v[f+1],y=v[f+2],((x=v[f+3])===void 0||x>=125)&&(b>250&&d>250&&y>250||O.push([b,d,y]));return O})(s.getImageData().data,s.width*s.height,o.quality),r=bt(a,o.colorCount);return r?r.palette():null},D.prototype.getColorFromUrl=function(t,n,e){var o=this,s=document.createElement("img");s.addEventListener("load",function(){var a=o.getPalette(s,5,e);n(a[0],t)}),s.src=t},D.prototype.getImageData=function(t,n){var e=new XMLHttpRequest;e.open("GET",t,!0),e.responseType="arraybuffer",e.onload=function(){if(this.status==200){var o=new Uint8Array(this.response);i=o.length;for(var s=new Array(i),a=0;a<o.length;a++)s[a]=String.fromCharCode(o[a]);var r=s.join(""),l=window.btoa(r);n("data:image/png;base64,"+l)}},e.send()},D.prototype.getColorAsync=function(t,n,e){var o=this;this.getImageData(t,function(s){var a=document.createElement("img");a.addEventListener("load",function(){var r=o.getPalette(a,5,e);n(r[0],this)}),a.src=s})};export{M as C,D as u};
|