@serifpersia/dango 3.8.1 → 3.8.2

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.
Files changed (58) hide show
  1. package/README.md +4 -2
  2. package/client/dist/assets/{AnimeCard-D9nRVw2O.js → AnimeCard-Dl21Mnwa.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-DFaWXccH.js → AnimeInfo-BZnCkkHq.js} +1 -1
  4. package/client/dist/assets/{AnimeInfoPage-DdAmDngx.js → AnimeInfoPage-CPFvFKt0.js} +2 -2
  5. package/client/dist/assets/{Asmr-CR7tgg-i.js → Asmr--BgcQsb9.js} +1 -1
  6. package/client/dist/assets/{AsmrResetProgressModal-DKg0JAtz.js → AsmrResetProgressModal-VXhNSZib.js} +1 -1
  7. package/client/dist/assets/Home-CXsFL5QN.js +1 -0
  8. package/client/dist/assets/Home-DINyLUCh.css +1 -0
  9. package/client/dist/assets/{Insights-DRwVoCbK.js → Insights-4HjAFOov.js} +1 -1
  10. package/client/dist/assets/{LibraryListPage-o39P5Z1e.js → LibraryListPage-BnJw-xnm.js} +1 -1
  11. package/client/dist/assets/{ListeningList-BOHUSWrP.js → ListeningList-DSc_Aqz9.js} +1 -1
  12. package/client/dist/assets/{Manga-B1wUUjnX.js → Manga-mB3KYDUt.js} +1 -1
  13. package/client/dist/assets/{MangaInfoPage-CjhOeVB7.js → MangaInfoPage-C2sxlrwM.js} +1 -1
  14. package/client/dist/assets/{MangaReadPage-CNIBLt4y.js → MangaReadPage-pDNIP1mf.js} +1 -1
  15. package/client/dist/assets/{MangaResetProgressModal-BcZuwZGV.js → MangaResetProgressModal-C_QbfWkA.js} +1 -1
  16. package/client/dist/assets/{Mature-riRXX3b6.js → Mature-CWEA-qdC.js} +1 -1
  17. package/client/dist/assets/{MatureConsentModal-UaIQxjyb.js → MatureConsentModal-Ixo33c5M.js} +1 -1
  18. package/client/dist/assets/{MediaCard-gCn0mrX1.js → MediaCard-BhYZUPLl.js} +1 -1
  19. package/client/dist/assets/{OptionListMenu-lx42ItXH.js → OptionListMenu-D-g4a-VC.js} +1 -1
  20. package/client/dist/assets/{Player-wMuWckmw.js → Player-B2CmI6hn.js} +2 -2
  21. package/client/dist/assets/{PlayerProvider-HU614Yx3.js → PlayerProvider-Q25sRaQm.js} +1 -1
  22. package/client/dist/assets/{PlayerSettings-CI1aLmPu.js → PlayerSettings-puzcbL0V.js} +1 -1
  23. package/client/dist/assets/{QueueOptionsButton-DhLD1z9e.js → QueueOptionsButton-C0U85ua3.js} +1 -1
  24. package/client/dist/assets/{QueueRail-Be6pVYWN.js → QueueRail-D2SeBzV5.js} +1 -1
  25. package/client/dist/assets/{ReadingList-qMAlWX2e.js → ReadingList-Bp_5vTLj.js} +1 -1
  26. package/client/dist/assets/{ResetProgressModal-B_bS4cVJ.js → ResetProgressModal-By_82RcA.js} +1 -1
  27. package/client/dist/assets/{Search-BSX7Q3Ra.js → Search-BpG4bAm2.js} +1 -1
  28. package/client/dist/assets/{Settings-B-LE4vM3.js → Settings-C72mbc_2.js} +1 -1
  29. package/client/dist/assets/{SkeletonGrid-BH33GvAW.js → SkeletonGrid-CPc8hqla.js} +1 -1
  30. package/client/dist/assets/{Trackers-lFax8dy0.js → Trackers-CYbGDEf-.js} +1 -1
  31. package/client/dist/assets/{Tv-DXPnMGb7.js → Tv-FXbgyY_h.js} +1 -1
  32. package/client/dist/assets/{TvInfo-BI8xiFWp.js → TvInfo-Cu6BPMzl.js} +1 -1
  33. package/client/dist/assets/{TvPopup-By5JenW3.js → TvPopup-BnPKXA6c.js} +1 -1
  34. package/client/dist/assets/{TvSearch-BebgoNua.js → TvSearch-BQNApkYS.js} +1 -1
  35. package/client/dist/assets/{TvWatchlist-BN8HI1-Y.js → TvWatchlist-DKbRFInR.js} +1 -1
  36. package/client/dist/assets/{VirtualKeyboard-CZt4P_VM.js → VirtualKeyboard-B0KbwdUi.js} +1 -1
  37. package/client/dist/assets/{WatchAlong-CZpH1Z5f.js → WatchAlong-CoZ0_fXQ.js} +1 -1
  38. package/client/dist/assets/{WatchAlongPanel-BMq7R_pe.js → WatchAlongPanel-CerutuF6.js} +1 -1
  39. package/client/dist/assets/{Watchlist-BRscj0qq.js → Watchlist-5UqdPHPq.js} +1 -1
  40. package/client/dist/assets/index-CoCvEAx6.css +1 -0
  41. package/client/dist/assets/{index-Nyp_7HqY.js → index-hnIW0p5l.js} +18 -18
  42. package/client/dist/assets/{libraryInvalidation-rvuk3e2Z.js → libraryInvalidation-DGzo-Q94.js} +1 -1
  43. package/client/dist/assets/{playbackCompletion-CxUTa1RU.js → playbackCompletion-DCNDnWtX.js} +1 -1
  44. package/client/dist/assets/{useAnimeInfoData-Bj-9VSAf.js → useAnimeInfoData-C-n9ZzJX.js} +1 -1
  45. package/client/dist/assets/{useAsmr-gsAVhvqA.js → useAsmr-QthQGpYA.js} +1 -1
  46. package/client/dist/assets/{useAsmrPopup-BNd3V-Rs.js → useAsmrPopup-BGI3k7sr.js} +1 -1
  47. package/client/dist/assets/{useMangaLibrary-BRvcl5UH.js → useMangaLibrary-uCL2et8O.js} +1 -1
  48. package/client/dist/assets/{useMangaPopup-DeuuZC7a.js → useMangaPopup-DV8-cCbz.js} +1 -1
  49. package/client/dist/assets/{useProviders-BsyTv0Tl.js → useProviders-Bzr6U-8b.js} +1 -1
  50. package/client/dist/assets/{useTv-IgkCy7kA.js → useTv-D2BZQllK.js} +1 -1
  51. package/client/dist/assets/{useTvLibrary-BlxUofsj.js → useTvLibrary-BIs22-2H.js} +1 -1
  52. package/client/dist/assets/{useWatchAlongPlayer-Bt9U4MaM.js → useWatchAlongPlayer-B79YboC3.js} +1 -1
  53. package/client/dist/index.html +2 -2
  54. package/package.json +2 -2
  55. package/server/package.json +1 -1
  56. package/client/dist/assets/Home-CA8njtnj.js +0 -1
  57. package/client/dist/assets/Home-DHAkZuDf.css +0 -1
  58. package/client/dist/assets/index-DP9TtvZX.css +0 -1
@@ -1,4 +1,4 @@
1
- import{u as t,d as g,A as O,h as p,S as Xe,g as ts,q as E,o as ns,p as rs,a as ss,T as Se}from"./vendor-core-DfaOB3Rn.js";import{g as Un,p as D,t as pt,a6 as os,a2 as as,O as On,e as is,a9 as ls,F as mr,B as cn}from"./index-Nyp_7HqY.js";import{P as cs,a as us,b as ds,F as ms,f as bs,c as hs}from"./PlayerProvider-HU614Yx3.js";import{u as fs}from"./vendor-query-BBT5_sHx.js";import{I as be}from"./vendor-icons-DrybRNxP.js";import{p as Hn,M as vs,z as vr,f as Wn,c as ps,C as gs,a as ys,P as Ss,b as un,u as _s,i as Ts,j as Cs,n as ks,h as Es,k as Ns,m as Is,l as As,s as Vn,d as xs,e as ws,g as Bs,r as Ls,o as xe,A as Ps,t as Ms,E as Rs,w as zs,x as $s,v as ae,y as Ds,R as Os,q as Vs}from"./useWatchAlongPlayer-Bt9U4MaM.js";import{S as Fs,O as Fn,a as qs,A as Us,b as Hs}from"./OptionListMenu-lx42ItXH.js";import{M as Ws}from"./MatureConsentModal-UaIQxjyb.js";import{u as Ks}from"./useProviders-BsyTv0Tl.js";import{e as Ys,f as js,g as Gs,d as Qs,c as Xs,h as Zs,i as Js}from"./useTvLibrary-BlxUofsj.js";import{l as eo,s as to,i as dn,h as br}from"./playbackCompletion-CxUTa1RU.js";import{u as no}from"./useIsMobile-Dvx1uJ82.js";import{S as ro}from"./SynopsisText-B3Sa5pRv.js";import{W as so}from"./WatchAlongPanel-BMq7R_pe.js";import"./libraryInvalidation-rvuk3e2Z.js";const oo="_fullscreenFlat_10bzs_1",ao="_timeDisplay_10bzs_12",io="_bottomControls_10bzs_16",lo="_leftControls_10bzs_20",co="_rightControls_10bzs_21",uo="_controlBtn_10bzs_25",mo="_controlsOverlay_10bzs_32",bo="_hidden_10bzs_52",ho="_topControls_10bzs_58",fo="_backBtn_10bzs_78",vo="_videoTitleInfo_10bzs_98",po="_animeTitle_10bzs_104",go="_episodeLabel_10bzs_112",yo="_speedBoostBadge_10bzs_119",So="_progressBarContainer_10bzs_165",_o="_progressBar_10bzs_165",To="_thumb_10bzs_184",Co="_bufferedBar_10bzs_202",ko="_watchedBar_10bzs_212",Eo="_scrubbing_10bzs_237",No="_timeBubble_10bzs_241",Io="_bottomControlsRow_10bzs_255",Ao="_nextEpisodeBtn_10bzs_278",xo="_active_10bzs_340",wo="_settingsPanel_10bzs_352",Bo="_settingsHeader_10bzs_371",Lo="_settingsBackBtn_10bzs_379",Po="_settingsTitle_10bzs_397",Mo="_settingsContent_10bzs_408",Ro="_currentValue_10bzs_417",zo="_menuItem_10bzs_423",$o="_menuNote_10bzs_456",Do="_loadingOverlay_10bzs_465",Oo="_loadingDots_10bzs_476",Vo="_dot_10bzs_481",Fo="_bufferingOverlay_10bzs_510",qo="_bufferingSpinner_10bzs_519",o={fullscreenFlat:oo,timeDisplay:ao,bottomControls:io,leftControls:lo,rightControls:co,controlBtn:uo,controlsOverlay:mo,hidden:bo,topControls:ho,backBtn:fo,videoTitleInfo:vo,animeTitle:po,episodeLabel:go,speedBoostBadge:yo,progressBarContainer:So,progressBar:_o,thumb:To,bufferedBar:Co,watchedBar:ko,scrubbing:Eo,timeBubble:No,bottomControlsRow:Io,nextEpisodeBtn:Ao,active:xo,settingsPanel:wo,settingsHeader:Bo,settingsBackBtn:Lo,settingsTitle:Po,settingsContent:Mo,currentValue:Ro,menuItem:zo,menuNote:$o,loadingOverlay:Do,loadingDots:Oo,dot:Vo,bufferingOverlay:Fo,bufferingSpinner:qo},Uo=({player:s,visible:h,settingsOpen:z,onOpenSettings:B,onCloseSettings:M,hasSubtitles:T,isSubtitleActive:N,subtitles:u,onSubtitleChange:i,showNextEpisodeButton:S,onNextEpisode:r,isTheaterMode:L,onTheaterModeToggle:he,timeLabelRef:X})=>{const{state:m,actions:ke}=s,we=()=>{if(N){i(-1);return}let fe=null;try{fe=D.getItem("tvLastSubtitle")}catch{}i(Hn(u,{lastKey:fe,enabled:!0}))};return t("div",{className:`${o.controlsOverlay} ${h?"":o.hidden}`,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none",justifyContent:"flex-end"},children:t("div",{className:o.bottomControls,onClick:fe=>fe.stopPropagation(),children:[t(cs,{classes:{container:o.progressBarContainer,scrubbing:o.scrubbing,timeBubble:o.timeBubble,bar:o.progressBar,buffered:o.bufferedBar,watched:o.watchedBar,thumb:o.thumb},timeLabelRef:X}),t("div",{className:o.bottomControlsRow,children:[t("div",{className:o.leftControls,children:[t(us,{className:o.controlBtn}),t(ds,{buttonClassName:o.controlBtn,onExpandedChange:ke.setShowVolumeSlider}),t("span",{className:o.timeDisplay,ref:X,children:[Un(0)," / ",Un(m.duration)]})]}),t("div",{className:o.rightControls,children:[S&&t("button",{className:o.nextEpisodeBtn,onClick:r,title:"Play next episode",children:"Next EP"}),T&&t("button",{className:`${o.controlBtn} ${N?o.active:""}`,onClick:we,"aria-label":N?"Turn subtitles off":"Turn subtitles on",children:t(be,{name:"closed-captioning"})}),t("button",{className:`${o.controlBtn} ${z?o.active:""}`,onClick:()=>z?M():B(),"aria-label":"Settings",children:t(be,{name:"cog"})}),t("button",{className:`${o.controlBtn} ${L?o.active:""}`,onClick:fe=>{fe.stopPropagation(),he()},title:L?"Exit Theater Mode":"Theater Mode","aria-label":L?"Exit Theater Mode":"Theater Mode",children:t(be,{name:"tv"})}),t(ms,{className:o.controlBtn})]})]})]})})},mn=-6e4,qn=6e4,hr=500,Ho=({classes:s,delayMs:h,onDelayChange:z})=>{const[B,M]=g(null),T=B??h,N=O(z);N.current=z;const u=O(h);u.current=h;const i=O(null);i.current=B,p(()=>{M(null)},[h]),p(()=>()=>{const L=i.current;L!==null&&L!==u.current&&N.current(L)},[]);const S=L=>{u.current=L,i.current=null,N.current(L),M(null)},r=L=>{const he=i.current??u.current,X=Math.max(mn,Math.min(qn,he+L));S(X)};return t(Xe,{children:[t("div",{style:{display:"flex",gap:6,padding:"0.5rem 0.75rem 0.25rem"},children:[t("button",{type:"button",className:s.item,onClick:()=>r(-hr),"aria-label":"Show subtitles 0.5 seconds earlier",style:{flex:1,justifyContent:"center"},children:t("span",{children:"-0.5s"})}),t("button",{type:"button",className:s.item,onClick:()=>r(hr),"aria-label":"Show subtitles 0.5 seconds later",style:{flex:1,justifyContent:"center"},children:t("span",{children:"+0.5s"})}),t("button",{type:"button",className:s.item,onClick:()=>S(0),disabled:T===0,"aria-label":"Reset subtitle timing",style:{flex:1,justifyContent:"center"},children:t("span",{children:"Reset"})})]}),t(vs,{label:"Subtitle timing",display:vr(T),min:mn,max:qn,step:100,value:T,percent:(T-mn)/(qn-mn)*100,onChange:L=>{const he=Math.round(L);i.current=he,M(he)},onCommit:()=>{const L=i.current;L!==null&&S(L)}}),t("div",{className:s.note,children:"Positive delays subtitles (show later). Negative shows them earlier. 0.0s is default."})]})},Wo=({view:s,onSelectView:h,onClose:z,player:B,onSubtitleStyleChange:M,streams:T,resolutionIdx:N,onResolutionChange:u,hasSubtitles:i,subtitles:S,selectedSubtitle:r,isSubtitleActive:L,onSubtitleChange:he,audioTracks:X,selectedAudioTrack:m,onAudioTrackChange:ke,videoDelayEnabled:we,onVideoDelayToggle:fe,videoDelayMs:ve,onVideoDelayChange:_,onCalibrate:gt,subtitleDelayMs:Ze,onSubtitleDelayChange:C,ambientSettings:H,onAmbientChange:W})=>{const{state:ie}=B,yt=()=>t(Xe,{children:[T.length>1&&t("button",{className:o.menuItem,onClick:()=>h("resolution"),children:[t("span",{children:"Resolution"}),t("span",{className:o.currentValue,children:T[N]?.quality||"Auto"})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitles"),children:[t("span",{children:"Subtitles"}),t("span",{className:o.currentValue,children:L?S[r]?.label||S[r]?.language:"Off"})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitle-style"),children:[t("span",{children:"Subtitle Style"}),t("span",{className:o.currentValue,children:[ie.subtitleFontSize.toFixed(1),"x · ",ie.subtitlePosition]})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitle-timing"),children:[t("span",{children:"Subtitle Timing"}),t("span",{className:o.currentValue,children:vr(Ze)})]}),X.length>0&&t("button",{className:o.menuItem,onClick:()=>h("audio"),children:[t("span",{children:"Audio Track"}),t("span",{className:o.currentValue,children:X[m]?.label||X[m]?.language})]}),t("button",{className:o.menuItem,onClick:()=>h("av-sync"),children:[t("span",{children:"A/V Sync"}),t("span",{className:o.currentValue,children:we?`${ve}ms`:"Off"})]}),H&&W&&t("button",{className:o.menuItem,onClick:()=>h("ambient"),children:[t("span",{children:"Ambient Light"}),t("span",{className:o.currentValue,children:H.enabled?"On":"Off"})]})]}),Be=()=>t(Fn,{classes:{item:o.menuItem,active:o.active},options:T.map((A,re)=>({key:String(re),label:A.quality,selected:re===N})),onSelect:A=>u(Number(A))}),Je=()=>t(Fn,{classes:{item:o.menuItem,active:o.active},options:[{key:"off",label:"Off",selected:!L},...S.map((A,re)=>({key:String(re),label:A.label||A.language,selected:re===r}))],onSelect:A=>he(A==="off"?-1:Number(A))}),ee=()=>t(qs,{classes:{item:o.menuItem,active:o.active},values:{fontSize:ie.subtitleFontSize,position:ie.subtitlePosition,bgOpacity:ie.subtitleBgOpacity,bgColor:ie.subtitleBgColor,textColor:ie.subtitleTextColor,edge:ie.subtitleEdge,bold:ie.subtitleBold},onChange:M}),St=()=>t(Ho,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},delayMs:Ze,onDelayChange:A=>C?.(A)}),st=()=>t(Fn,{classes:{item:o.menuItem,active:o.active},options:X.map((A,re)=>({key:String(re),label:A.label||A.language,selected:re===m})),onSelect:A=>ke(Number(A))}),Le=()=>t(Us,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},enabled:we,delayMs:ve,onToggle:A=>fe?.(A),onDelayChange:A=>_?.(A),onCalibrate:gt}),G=()=>H&&W?t(Hs,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},values:H,onChange:W}):null;return t("div",{"data-speed-boost-ignore":"true",onClick:A=>A.stopPropagation(),children:t(Fs,{classes:{panel:o.settingsPanel,header:o.settingsHeader,backBtn:o.settingsBackBtn,title:o.settingsTitle,content:o.settingsContent},title:s==="main"?"Settings":s==="subtitle-style"?"Subtitle Style":s==="subtitle-timing"?"Subtitle Timing":s==="audio"?"Audio Track":s==="resolution"?"Resolution":s==="av-sync"?"A/V Sync":s==="ambient"?"Ambient Light":s.charAt(0).toUpperCase()+s.slice(1),onBack:()=>s==="main"?z():h("main"),children:[s==="main"&&yt(),s==="resolution"&&Be(),s==="subtitles"&&Je(),s==="subtitle-style"&&ee(),s==="subtitle-timing"&&St(),s==="audio"&&st(),s==="av-sync"&&Le(),s==="ambient"&&G()]})})},Ko=({player:s,title:h,episodeLabel:z,server:B,audioTracks:M,selectedAudioTrack:T,onAudioTrackChange:N,subtitles:u,selectedSubtitle:i,onSubtitleChange:S,streams:r,resolutionIdx:L,onResolutionChange:he,onBack:X,children:m,videoDelayEnabled:ke=!1,onVideoDelayToggle:we,videoDelayMs:fe=0,onVideoDelayChange:ve,onCalibrateAvSync:_,subtitleDelayMs:gt=0,onSubtitleDelayChange:Ze,showNextEpisodeButton:C=!1,onNextEpisode:H,isLoading:W=!1,isTheaterMode:ie,onTheaterModeToggle:yt,ambientSettings:Be,onAmbientChange:Je})=>{const{state:ee,refs:St,actions:st}=s,Le=St.videoRef,{subtitleFontSize:G,subtitlePosition:A,subtitleBgOpacity:re,subtitleBgColor:le,subtitleTextColor:Pe,subtitleEdge:Me,subtitleBold:te}=ee,[Fe,et]=g(null),qe=O(null),[ot,Ee]=g(0);p(()=>{const oe=Le.current;if(!oe)return;const _e=()=>Ee(oe.clientHeight||0);_e();const pe=new ResizeObserver(_e);return pe.observe(oe),()=>pe.disconnect()},[Le]);const _t=st.setSubtitleStyle;p(()=>{const oe="tv-player-subtitle-style";let _e=document.getElementById(oe);_e||(_e=document.createElement("style"),_e.id=oe,document.head.appendChild(_e));const pe={fontSize:G,position:A,bgOpacity:re,bgColor:le,textColor:Pe,edge:Me,bold:te},Z=Le.current,Ot=Wn(G,ot||Z?.clientHeight||720);if(_e.textContent=ps({...pe,fontSize:Ot}),Z){const lt=()=>{const w=Number(A);return isNaN(w)?0:Math.max(0,Math.min(100,w))},ct=(w,c)=>{try{const l=w;l.snapToLines=!1,l.line=c}catch{}},kt=()=>{const w=Ot*16,c=Z.videoHeight||Z.clientHeight||720,l=Z.videoWidth||Z.clientWidth||1280;return{step:w*1.3/c*100,chars:Math.max(20,Math.floor(l/(w*.55)))}},ce=w=>{const c=Math.max(0,Math.min(100,100-lt())),l=Array.from(w.activeCues??[]);if(l.length<=1){l.forEach($e=>ct($e,c));return}const{step:ue,chars:de}=kt();let xt=c;for(let $e=l.length-1;$e>=0;$e--){const wt=String(l[$e].text??"").replace(/<[^>]*>/g,"").split(`
1
+ import{u as t,d as g,A as O,h as p,S as Xe,g as ts,q as E,o as ns,p as rs,a as ss,T as Se}from"./vendor-core-DfaOB3Rn.js";import{g as Un,p as D,t as pt,a6 as os,a2 as as,O as On,e as is,a9 as ls,F as mr,B as cn}from"./index-hnIW0p5l.js";import{P as cs,a as us,b as ds,F as ms,f as bs,c as hs}from"./PlayerProvider-Q25sRaQm.js";import{u as fs}from"./vendor-query-BBT5_sHx.js";import{I as be}from"./vendor-icons-DrybRNxP.js";import{p as Hn,M as vs,z as vr,f as Wn,c as ps,C as gs,a as ys,P as Ss,b as un,u as _s,i as Ts,j as Cs,n as ks,h as Es,k as Ns,m as Is,l as As,s as Vn,d as xs,e as ws,g as Bs,r as Ls,o as xe,A as Ps,t as Ms,E as Rs,w as zs,x as $s,v as ae,y as Ds,R as Os,q as Vs}from"./useWatchAlongPlayer-B79YboC3.js";import{S as Fs,O as Fn,a as qs,A as Us,b as Hs}from"./OptionListMenu-D-g4a-VC.js";import{M as Ws}from"./MatureConsentModal-Ixo33c5M.js";import{u as Ks}from"./useProviders-Bzr6U-8b.js";import{e as Ys,f as js,g as Gs,d as Qs,c as Xs,h as Zs,i as Js}from"./useTvLibrary-BIs22-2H.js";import{l as eo,s as to,i as dn,h as br}from"./playbackCompletion-DCNDnWtX.js";import{u as no}from"./useIsMobile-Dvx1uJ82.js";import{S as ro}from"./SynopsisText-B3Sa5pRv.js";import{W as so}from"./WatchAlongPanel-CerutuF6.js";import"./libraryInvalidation-DGzo-Q94.js";const oo="_fullscreenFlat_10bzs_1",ao="_timeDisplay_10bzs_12",io="_bottomControls_10bzs_16",lo="_leftControls_10bzs_20",co="_rightControls_10bzs_21",uo="_controlBtn_10bzs_25",mo="_controlsOverlay_10bzs_32",bo="_hidden_10bzs_52",ho="_topControls_10bzs_58",fo="_backBtn_10bzs_78",vo="_videoTitleInfo_10bzs_98",po="_animeTitle_10bzs_104",go="_episodeLabel_10bzs_112",yo="_speedBoostBadge_10bzs_119",So="_progressBarContainer_10bzs_165",_o="_progressBar_10bzs_165",To="_thumb_10bzs_184",Co="_bufferedBar_10bzs_202",ko="_watchedBar_10bzs_212",Eo="_scrubbing_10bzs_237",No="_timeBubble_10bzs_241",Io="_bottomControlsRow_10bzs_255",Ao="_nextEpisodeBtn_10bzs_278",xo="_active_10bzs_340",wo="_settingsPanel_10bzs_352",Bo="_settingsHeader_10bzs_371",Lo="_settingsBackBtn_10bzs_379",Po="_settingsTitle_10bzs_397",Mo="_settingsContent_10bzs_408",Ro="_currentValue_10bzs_417",zo="_menuItem_10bzs_423",$o="_menuNote_10bzs_456",Do="_loadingOverlay_10bzs_465",Oo="_loadingDots_10bzs_476",Vo="_dot_10bzs_481",Fo="_bufferingOverlay_10bzs_510",qo="_bufferingSpinner_10bzs_519",o={fullscreenFlat:oo,timeDisplay:ao,bottomControls:io,leftControls:lo,rightControls:co,controlBtn:uo,controlsOverlay:mo,hidden:bo,topControls:ho,backBtn:fo,videoTitleInfo:vo,animeTitle:po,episodeLabel:go,speedBoostBadge:yo,progressBarContainer:So,progressBar:_o,thumb:To,bufferedBar:Co,watchedBar:ko,scrubbing:Eo,timeBubble:No,bottomControlsRow:Io,nextEpisodeBtn:Ao,active:xo,settingsPanel:wo,settingsHeader:Bo,settingsBackBtn:Lo,settingsTitle:Po,settingsContent:Mo,currentValue:Ro,menuItem:zo,menuNote:$o,loadingOverlay:Do,loadingDots:Oo,dot:Vo,bufferingOverlay:Fo,bufferingSpinner:qo},Uo=({player:s,visible:h,settingsOpen:z,onOpenSettings:B,onCloseSettings:M,hasSubtitles:T,isSubtitleActive:N,subtitles:u,onSubtitleChange:i,showNextEpisodeButton:S,onNextEpisode:r,isTheaterMode:L,onTheaterModeToggle:he,timeLabelRef:X})=>{const{state:m,actions:ke}=s,we=()=>{if(N){i(-1);return}let fe=null;try{fe=D.getItem("tvLastSubtitle")}catch{}i(Hn(u,{lastKey:fe,enabled:!0}))};return t("div",{className:`${o.controlsOverlay} ${h?"":o.hidden}`,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none",justifyContent:"flex-end"},children:t("div",{className:o.bottomControls,onClick:fe=>fe.stopPropagation(),children:[t(cs,{classes:{container:o.progressBarContainer,scrubbing:o.scrubbing,timeBubble:o.timeBubble,bar:o.progressBar,buffered:o.bufferedBar,watched:o.watchedBar,thumb:o.thumb},timeLabelRef:X}),t("div",{className:o.bottomControlsRow,children:[t("div",{className:o.leftControls,children:[t(us,{className:o.controlBtn}),t(ds,{buttonClassName:o.controlBtn,onExpandedChange:ke.setShowVolumeSlider}),t("span",{className:o.timeDisplay,ref:X,children:[Un(0)," / ",Un(m.duration)]})]}),t("div",{className:o.rightControls,children:[S&&t("button",{className:o.nextEpisodeBtn,onClick:r,title:"Play next episode",children:"Next EP"}),T&&t("button",{className:`${o.controlBtn} ${N?o.active:""}`,onClick:we,"aria-label":N?"Turn subtitles off":"Turn subtitles on",children:t(be,{name:"closed-captioning"})}),t("button",{className:`${o.controlBtn} ${z?o.active:""}`,onClick:()=>z?M():B(),"aria-label":"Settings",children:t(be,{name:"cog"})}),t("button",{className:`${o.controlBtn} ${L?o.active:""}`,onClick:fe=>{fe.stopPropagation(),he()},title:L?"Exit Theater Mode":"Theater Mode","aria-label":L?"Exit Theater Mode":"Theater Mode",children:t(be,{name:"tv"})}),t(ms,{className:o.controlBtn})]})]})]})})},mn=-6e4,qn=6e4,hr=500,Ho=({classes:s,delayMs:h,onDelayChange:z})=>{const[B,M]=g(null),T=B??h,N=O(z);N.current=z;const u=O(h);u.current=h;const i=O(null);i.current=B,p(()=>{M(null)},[h]),p(()=>()=>{const L=i.current;L!==null&&L!==u.current&&N.current(L)},[]);const S=L=>{u.current=L,i.current=null,N.current(L),M(null)},r=L=>{const he=i.current??u.current,X=Math.max(mn,Math.min(qn,he+L));S(X)};return t(Xe,{children:[t("div",{style:{display:"flex",gap:6,padding:"0.5rem 0.75rem 0.25rem"},children:[t("button",{type:"button",className:s.item,onClick:()=>r(-hr),"aria-label":"Show subtitles 0.5 seconds earlier",style:{flex:1,justifyContent:"center"},children:t("span",{children:"-0.5s"})}),t("button",{type:"button",className:s.item,onClick:()=>r(hr),"aria-label":"Show subtitles 0.5 seconds later",style:{flex:1,justifyContent:"center"},children:t("span",{children:"+0.5s"})}),t("button",{type:"button",className:s.item,onClick:()=>S(0),disabled:T===0,"aria-label":"Reset subtitle timing",style:{flex:1,justifyContent:"center"},children:t("span",{children:"Reset"})})]}),t(vs,{label:"Subtitle timing",display:vr(T),min:mn,max:qn,step:100,value:T,percent:(T-mn)/(qn-mn)*100,onChange:L=>{const he=Math.round(L);i.current=he,M(he)},onCommit:()=>{const L=i.current;L!==null&&S(L)}}),t("div",{className:s.note,children:"Positive delays subtitles (show later). Negative shows them earlier. 0.0s is default."})]})},Wo=({view:s,onSelectView:h,onClose:z,player:B,onSubtitleStyleChange:M,streams:T,resolutionIdx:N,onResolutionChange:u,hasSubtitles:i,subtitles:S,selectedSubtitle:r,isSubtitleActive:L,onSubtitleChange:he,audioTracks:X,selectedAudioTrack:m,onAudioTrackChange:ke,videoDelayEnabled:we,onVideoDelayToggle:fe,videoDelayMs:ve,onVideoDelayChange:_,onCalibrate:gt,subtitleDelayMs:Ze,onSubtitleDelayChange:C,ambientSettings:H,onAmbientChange:W})=>{const{state:ie}=B,yt=()=>t(Xe,{children:[T.length>1&&t("button",{className:o.menuItem,onClick:()=>h("resolution"),children:[t("span",{children:"Resolution"}),t("span",{className:o.currentValue,children:T[N]?.quality||"Auto"})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitles"),children:[t("span",{children:"Subtitles"}),t("span",{className:o.currentValue,children:L?S[r]?.label||S[r]?.language:"Off"})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitle-style"),children:[t("span",{children:"Subtitle Style"}),t("span",{className:o.currentValue,children:[ie.subtitleFontSize.toFixed(1),"x · ",ie.subtitlePosition]})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitle-timing"),children:[t("span",{children:"Subtitle Timing"}),t("span",{className:o.currentValue,children:vr(Ze)})]}),X.length>0&&t("button",{className:o.menuItem,onClick:()=>h("audio"),children:[t("span",{children:"Audio Track"}),t("span",{className:o.currentValue,children:X[m]?.label||X[m]?.language})]}),t("button",{className:o.menuItem,onClick:()=>h("av-sync"),children:[t("span",{children:"A/V Sync"}),t("span",{className:o.currentValue,children:we?`${ve}ms`:"Off"})]}),H&&W&&t("button",{className:o.menuItem,onClick:()=>h("ambient"),children:[t("span",{children:"Ambient Light"}),t("span",{className:o.currentValue,children:H.enabled?"On":"Off"})]})]}),Be=()=>t(Fn,{classes:{item:o.menuItem,active:o.active},options:T.map((A,re)=>({key:String(re),label:A.quality,selected:re===N})),onSelect:A=>u(Number(A))}),Je=()=>t(Fn,{classes:{item:o.menuItem,active:o.active},options:[{key:"off",label:"Off",selected:!L},...S.map((A,re)=>({key:String(re),label:A.label||A.language,selected:re===r}))],onSelect:A=>he(A==="off"?-1:Number(A))}),ee=()=>t(qs,{classes:{item:o.menuItem,active:o.active},values:{fontSize:ie.subtitleFontSize,position:ie.subtitlePosition,bgOpacity:ie.subtitleBgOpacity,bgColor:ie.subtitleBgColor,textColor:ie.subtitleTextColor,edge:ie.subtitleEdge,bold:ie.subtitleBold},onChange:M}),St=()=>t(Ho,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},delayMs:Ze,onDelayChange:A=>C?.(A)}),st=()=>t(Fn,{classes:{item:o.menuItem,active:o.active},options:X.map((A,re)=>({key:String(re),label:A.label||A.language,selected:re===m})),onSelect:A=>ke(Number(A))}),Le=()=>t(Us,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},enabled:we,delayMs:ve,onToggle:A=>fe?.(A),onDelayChange:A=>_?.(A),onCalibrate:gt}),G=()=>H&&W?t(Hs,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},values:H,onChange:W}):null;return t("div",{"data-speed-boost-ignore":"true",onClick:A=>A.stopPropagation(),children:t(Fs,{classes:{panel:o.settingsPanel,header:o.settingsHeader,backBtn:o.settingsBackBtn,title:o.settingsTitle,content:o.settingsContent},title:s==="main"?"Settings":s==="subtitle-style"?"Subtitle Style":s==="subtitle-timing"?"Subtitle Timing":s==="audio"?"Audio Track":s==="resolution"?"Resolution":s==="av-sync"?"A/V Sync":s==="ambient"?"Ambient Light":s.charAt(0).toUpperCase()+s.slice(1),onBack:()=>s==="main"?z():h("main"),children:[s==="main"&&yt(),s==="resolution"&&Be(),s==="subtitles"&&Je(),s==="subtitle-style"&&ee(),s==="subtitle-timing"&&St(),s==="audio"&&st(),s==="av-sync"&&Le(),s==="ambient"&&G()]})})},Ko=({player:s,title:h,episodeLabel:z,server:B,audioTracks:M,selectedAudioTrack:T,onAudioTrackChange:N,subtitles:u,selectedSubtitle:i,onSubtitleChange:S,streams:r,resolutionIdx:L,onResolutionChange:he,onBack:X,children:m,videoDelayEnabled:ke=!1,onVideoDelayToggle:we,videoDelayMs:fe=0,onVideoDelayChange:ve,onCalibrateAvSync:_,subtitleDelayMs:gt=0,onSubtitleDelayChange:Ze,showNextEpisodeButton:C=!1,onNextEpisode:H,isLoading:W=!1,isTheaterMode:ie,onTheaterModeToggle:yt,ambientSettings:Be,onAmbientChange:Je})=>{const{state:ee,refs:St,actions:st}=s,Le=St.videoRef,{subtitleFontSize:G,subtitlePosition:A,subtitleBgOpacity:re,subtitleBgColor:le,subtitleTextColor:Pe,subtitleEdge:Me,subtitleBold:te}=ee,[Fe,et]=g(null),qe=O(null),[ot,Ee]=g(0);p(()=>{const oe=Le.current;if(!oe)return;const _e=()=>Ee(oe.clientHeight||0);_e();const pe=new ResizeObserver(_e);return pe.observe(oe),()=>pe.disconnect()},[Le]);const _t=st.setSubtitleStyle;p(()=>{const oe="tv-player-subtitle-style";let _e=document.getElementById(oe);_e||(_e=document.createElement("style"),_e.id=oe,document.head.appendChild(_e));const pe={fontSize:G,position:A,bgOpacity:re,bgColor:le,textColor:Pe,edge:Me,bold:te},Z=Le.current,Ot=Wn(G,ot||Z?.clientHeight||720);if(_e.textContent=ps({...pe,fontSize:Ot}),Z){const lt=()=>{const w=Number(A);return isNaN(w)?0:Math.max(0,Math.min(100,w))},ct=(w,c)=>{try{const l=w;l.snapToLines=!1,l.line=c}catch{}},kt=()=>{const w=Ot*16,c=Z.videoHeight||Z.clientHeight||720,l=Z.videoWidth||Z.clientWidth||1280;return{step:w*1.3/c*100,chars:Math.max(20,Math.floor(l/(w*.55)))}},ce=w=>{const c=Math.max(0,Math.min(100,100-lt())),l=Array.from(w.activeCues??[]);if(l.length<=1){l.forEach($e=>ct($e,c));return}const{step:ue,chars:de}=kt();let xt=c;for(let $e=l.length-1;$e>=0;$e--){const wt=String(l[$e].text??"").replace(/<[^>]*>/g,"").split(`
2
2
  `).reduce((Ft,fn)=>Ft+Math.max(1,Math.ceil(fn.length/de)),0),Vt=xt-wt*ue;ct(l[$e],Math.max(0,Vt)),xt=Vt-ue*.4}},Et=()=>{const w=Math.max(0,Math.min(100,100-lt()));Array.from(Z.textTracks).forEach(c=>{c.cues&&(Array.from(c.cues).forEach(l=>ct(l,w)),c.mode==="showing"&&ce(c))})};Et();const Te=w=>{const c=w.target;c.mode==="showing"&&ce(c)},Nt=()=>{Array.from(Z.textTracks).forEach(w=>{w.removeEventListener("cuechange",Te),w.addEventListener("cuechange",Te)}),Et()};Array.from(Z.textTracks).forEach(w=>{w.addEventListener("cuechange",Te)}),Z.textTracks.addEventListener("addtrack",Nt);const It=Array.from(Z.querySelectorAll("track")),At=()=>Et();return It.forEach(w=>w.addEventListener("load",At)),()=>{Array.from(Z.textTracks).forEach(w=>{w.removeEventListener("cuechange",Te)}),Z.textTracks.removeEventListener("addtrack",Nt),It.forEach(w=>w.removeEventListener("load",At))}}},[G,A,re,le,Pe,Me,te,i,u,Le,ot]);const se=u.length>0,Re=i>=0,ze=()=>{et("main"),st.setShowControls(!0)},Ue=()=>{et(null)},tt=ee.showControls||!!Fe,Tt=bs(s.engine),at=Tt.audioTracks.find(oe=>oe.id===Tt.activeAudioTrack)??M[T],He=i>=0?u[i]??Tt.subtitleTracks.find(oe=>oe.id===i):void 0,bn=t(gs,{visible:tt,title:h,episode:z,server:W?void 0:B,audio:W?void 0:at?.label||at?.language,subtitles:W?void 0:He?.label||He?.language,onBack:X,classes:{overlay:o.controlsOverlay,hidden:o.hidden,top:o.topControls,backBtn:o.backBtn,titleInfo:o.videoTitleInfo,title:o.animeTitle,episode:o.episodeLabel}}),Ct=!W&&!ee.isBuffering&&ee.duration>0?t(ys,{}):null,K=t(Uo,{player:s,visible:tt,settingsOpen:!!Fe,onOpenSettings:ze,onCloseSettings:Ue,hasSubtitles:se,isSubtitleActive:Re,subtitles:u,onSubtitleChange:S,showNextEpisodeButton:C,onNextEpisode:H,isTheaterMode:ie,onTheaterModeToggle:yt,timeLabelRef:qe}),it=Fe?t(Wo,{view:Fe,onSelectView:et,onClose:Ue,player:s,onSubtitleStyleChange:_t,streams:r,resolutionIdx:L,onResolutionChange:he,hasSubtitles:se,subtitles:u,selectedSubtitle:i,isSubtitleActive:Re,onSubtitleChange:S,audioTracks:M,selectedAudioTrack:T,onAudioTrackChange:N,videoDelayEnabled:ke,onVideoDelayToggle:we,videoDelayMs:fe,onVideoDelayChange:ve,onCalibrate:()=>{et(null),_?.()},subtitleDelayMs:gt,onSubtitleDelayChange:Ze,ambientSettings:Be,onAmbientChange:Je}):null,x=t(Xe,{children:[W&&t("div",{className:o.loadingOverlay,"aria-hidden":"true",children:t("div",{className:o.loadingDots,children:[t("div",{className:o.dot}),t("div",{className:o.dot}),t("div",{className:o.dot})]})}),ee.isBuffering&&!W&&t("div",{className:o.bufferingOverlay,"aria-hidden":"true",children:t("div",{className:o.bufferingSpinner})}),ee.isSpeedBoostActive&&t("div",{className:o.speedBoostBadge,"aria-hidden":"true",children:[t("span",{children:"2x"}),t(be,{name:"forward",size:12})]})]});return t(Ss,{engine:s.engine,topBar:bn,centerControls:Ct,bottomBar:!W&&ee.duration>0?K:null,settingsPanel:it,overlays:x,isInteracting:!!Fe||ee.showVolumeSlider,nativeControls:ee.useNativeControls,onStageClick:Ue,className:ee.isFullscreen?o.fullscreenFlat:"",children:m})},Yo=({servers:s,selectedServer:h,onServerSelect:z})=>s.length===0?null:t("div",{className:un.sourceSelectionContainer,children:[t("h4",{children:"Source"}),t("div",{className:un.sourceButtons,children:s.map(B=>t("button",{className:`${un.sourceButton} ${h===B?un.active:""}`,onClick:()=>z(B),children:B},B))})]}),jo=ts.memo(Yo);function Go({details:s,isMovie:h,season:z,episode:B,videoRef:M,active:T}){const N=O("");N.current||(N.current=`tv-${Date.now()}-${Math.random().toString(36).slice(2)}`);const u=E(()=>{if(!s)return;const i=M.current,S=h?"":`S${String(z).padStart(2,"0")}E${String(B).padStart(2,"0")}`;pt.discord.tvPresence.mutate({title:s.title,episodeLabel:S,isPlaying:i?!i.paused&&!i.ended:!0,thumbnail:s.poster,currentTime:i?i.currentTime:0,duration:i&&i.duration||0,isAdult:s.adult===!0,sessionId:N.current}).catch(()=>{}),pt.discord.heartbeat.mutate({sessionId:N.current}).catch(()=>{})},[s,h,z,B,M]);return p(()=>{if(!s)return;u();const i=window.setInterval(()=>{const S=M.current;(!S||!S.paused)&&u()},15e3);return()=>window.clearInterval(i)},[u,s,M]),p(()=>{if(!s||!T)return;const i=M.current;if(!i)return;const S=()=>u();return i.addEventListener("play",S),i.addEventListener("pause",S),i.addEventListener("seeked",S),()=>{i.removeEventListener("play",S),i.removeEventListener("pause",S),i.removeEventListener("seeked",S)}},[s,T,u,M]),p(()=>{const i=N.current,S=()=>os(i),r=()=>S();return window.addEventListener("pagehide",r),window.addEventListener("beforeunload",r),()=>{window.removeEventListener("pagehide",r),window.removeEventListener("beforeunload",r),S()}},[]),{sendPresence:u}}function Qo(s,h,z){const B=()=>{const T=Array.isArray(s.audioTracks)?s.audioTracks.length:0,N=z.getWant(),u=T>0?Math.min(Math.max(0,N),T-1):N;s.audioTrack=u,u!==N&&z.onResolve(u)},M=(T,N)=>{const u=z.getWant(),i=Array.isArray(s.audioTracks)?s.audioTracks.length:0;if(N.id!==u&&u>=0&&u<i){s.audioTrack!==u&&(s.audioTrack=u);return}z.onResolve(N.id)};return s.on(h.MANIFEST_PARSED,B),s.on(h.AUDIO_TRACK_SWITCHED,M),()=>{s.off(h.MANIFEST_PARSED,B),s.off(h.AUDIO_TRACK_SWITCHED,M)}}const Xo=/\b(SmartTV|SMART-TV|Tizen|Web0S|webOS|NetCast|HbbTV|AppleTV|CrKey|BRAVIA|AFT[A-Za-z]|Fire\s?TV|GoogleTV|Roku|VIDAA|DTV|PlayStation|Xbox|Opera TV|POV_TV)\b/i;function Zo(){try{if(Xo.test(navigator.userAgent||""))return!0;const s=navigator.deviceMemory;if(typeof s=="number"&&s>0&&s<2)return!0}catch{}return!1}const Jo="_statusMsg_zqb8u_1",ea="_error_zqb8u_7",ta="_spinner_zqb8u_11",na="_spin_zqb8u_11",ra="_sourceLoader_zqb8u_16",sa="_ringSpinner_zqb8u_22",oa="_meta_zqb8u_40",aa="_year_zqb8u_48",ia="_rating_zqb8u_53",la="_typeBadge_zqb8u_62",ca="_tv_zqb8u_70",ua="_movie_zqb8u_75",da="_controlLabel_zqb8u_80",ma="_select_zqb8u_90",ba="_playerSection_zqb8u_102",ha="_video_zqb8u_106",fa="_videoHidden_zqb8u_128",va="_delayCanvas_zqb8u_133",pa="_delayCanvasActive_zqb8u_146",ga="_subtitleOverlay_zqb8u_150",ya="_videoIframe_zqb8u_169",Sa="_retryButton_zqb8u_177",_a="_sidebarSeason_zqb8u_192",Ta="_mobileSeasonRow_zqb8u_208",Ca="_providerSelectWrap_zqb8u_222",ka="_genreRow_zqb8u_230",Ea="_genreChip_zqb8u_237",Na="_metaRow_zqb8u_247",Ia="_detailGrid_zqb8u_256",Aa="_detailItem_zqb8u_264",xa="_imdbLink_zqb8u_286",v={statusMsg:Jo,error:ea,spinner:ta,spin:na,sourceLoader:ra,ringSpinner:sa,meta:oa,year:aa,rating:ia,typeBadge:la,tv:ca,movie:ua,controlLabel:da,select:ma,playerSection:ba,video:ha,videoHidden:fa,delayCanvas:va,delayCanvasActive:pa,subtitleOverlay:ga,videoIframe:ya,retryButton:Sa,sidebarSeason:_a,mobileSeasonRow:Ta,providerSelectWrap:Ca,genreRow:ka,genreChip:Ea,metaRow:Na,detailGrid:Ia,detailItem:Aa,imdbLink:xa},wa=[],Ba=[];function fr({error:s,onRetry:h}){return t("div",{className:`${v.statusMsg} ${v.error}`,style:{flexDirection:"column",alignItems:"stretch",gap:8},children:t("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[t("span",{style:{flex:1},children:s}),t("button",{className:v.retryButton,onClick:h,children:"Retry"})]})})}const Ya=()=>{const{id:s}=ns(),[h]=rs(),z=O(h);z.current=h;const B=ss(),M=fs(),T=h.get("type"),N=as(),u=!!N.session,i=u&&!N.session?.host,S=i&&["tv","movie"].includes(N.room?.selection.kind||"")?N.room?.selection:null,[r,L]=g(null),[he,X]=g(()=>parseInt(h.get("s")||"1",10)||1),m=S?.season??he,[ke,we]=g([]),[fe,ve]=g(()=>parseInt(h.get("e")||"1",10)||1),_=S?Number(S.episode):fe,[gt,Ze]=g(()=>{try{return D.getItem("tvProvider")||""}catch{return""}}),C=S?.provider??gt,[H,W]=g([]),[ie,yt]=g(""),[Be,Je]=g(""),{options:ee,isFallback:St,isLoading:st}=Ks(),Le=Se(()=>ee.filter(e=>(e.kind??"tv")==="tv").map(e=>({id:e.id,label:e.label,tier:e.tier==="embed"?"embed":"direct",servers:e.servers})),[ee]),G=St||Le.length===0?wa:Le,A=G.filter(e=>e.tier==="direct"),re=G.filter(e=>e.tier==="embed"),[le,Pe]=g(!1),[Me,te]=g(""),[Fe,et]=g([]),[qe,ot]=g(0),[Ee,_t]=g([]),[se,Re]=g(-1),[ze,Ue]=g(0),[tt,Tt]=g(""),[at,He]=g(""),[bn,Ct]=g(()=>{try{return D.getItem("tvServer")||""}catch{return""}}),K=S?.source??bn,it=Se(()=>G.find(e=>e.id===C),[G,C]),x=it?.tier==="embed",[oe,_e]=g([]),[pe,Z]=g(""),[Ot,lt]=g(""),[ct,kt]=g(!1),ce=Se(()=>oe.length>0?oe:it?.servers??[],[oe,it]),Et=Se(()=>pe&&!u?["Embed",...ce]:ce,[ce,pe,u]),Te=ct&&!!pe,Nt=Te?Ot||pe:"";p(()=>{if(!pe){lt("");return}let e=!1;return On(`/api/resolve?url=${encodeURIComponent(pe)}`).then(n=>{!e&&n.finalUrl&&lt(n.finalUrl)}).catch(()=>{}),()=>{e=!0}},[pe]);const It=O([]);p(()=>{It.current=H},[H]);const At=O(qe);p(()=>{At.current=qe},[qe]);const w=O(se);p(()=>{w.current=se},[se]);const c=_s({skipIntervals:Ba}),l=c.refs.videoRef,ue=O(null),de=O([]),xt=O(null),$e=O(null),{videoDelayMs:hn,videoDelayEnabled:wt,setDelayEnabled:Vt,handleVideoDelayChange:Ft,isCalibrating:fn,testClipActive:Ne,stopCalibration:vn,openAvSyncCalibrator:pr,cancelAvSyncCalibrator:gr,applyAvSyncCalibrator:yr,toggleTestClip:Sr,calibReturnRef:qt,effectiveVideoDelayMs:pn}=Ts(l),[ut,_r]=g(()=>{try{const e=Number(D.getItem("tvSubtitleDelayMs"));if(Number.isFinite(e)&&e>=-6e4&&e<=6e4)return Math.round(e)}catch{}return 0}),gn=O(ut);gn.current=ut;const Tr=E(e=>{const n=Math.max(-6e4,Math.min(6e4,Math.round(e)));if(gn.current!==n){gn.current=n,_r(n);try{D.setItem("tvSubtitleDelayMs",String(n))}catch{}}},[]);Cs({videoRef:l,canvasRef:xt,delayMs:pn,enabled:wt});const yn=wt,ge=yn||ut!==0,{settings:Sn,update:Cr}=ks(),_n=O(ge);_n.current=ge;const Tn=E(()=>{if(!_n.current)return;const e=l.current;e&&Array.from(e.textTracks).forEach(n=>{n.mode!=="hidden"&&(n.mode="hidden")})},[l]),{hasConsent:Bt,grant:kr}=is(),f=T==="movie";Go({details:r,isMovie:f,season:m,episode:_,videoRef:l,active:!x&&!le&&!Me&&H.length>0});const Ut=s?ls(T||"tv",s):"",J=Ut,De=`${J}:${m}:${_}:${C}:${K}`,Ht=Se(()=>!s||!r||x||Te||le||Be!==De||H[ze]?.type!=="hls"?null:{kind:f?"movie":"tv",...f?{}:{season:m},showId:s,episode:String(f?1:_),provider:C,source:K,mode:"sub",title:r.title},[s,r,x,Te,le,Be,De,H,ze,f,m,_,C,K]),Kn=Es(c.engine,Ht,le||!r),Yn=Ys(),Wt=js(),Kt=Gs(),{toggle:jn,bookmarkedIds:Er,pending:Nr}=Qs(),{data:Gn}=Xs(r?Ut:void 0),Lt=Gn?!!Gn.inLibrary:Ut?Er.has(Ut):!1,Ir=E(()=>{!r||!s||jn({tmdbId:Number(s),mediaType:T||"tv",title:r.title,poster:r.poster,year:r.year,adult:r.adult})},[r,s,T,jn]),{data:dt,isFetched:Qn,isFetching:Cn}=Zs(J||void 0,m,_),Yt=Se(()=>ke.map(e=>e.episode_number).sort((e,n)=>e-n),[ke]),Pt=Yt.indexOf(_),kn=Pt>0?Yt[Pt-1]:null,V=Pt>=0&&Pt<Yt.length-1?Yt[Pt+1]:null,jt=Se(()=>(r?.seasons??[]).map(e=>e.season_number).filter(e=>Number.isFinite(e)).sort((e,n)=>e-n),[r]),We=Se(()=>{if(f||V!=null)return null;const e=jt.indexOf(m);return e>=0&&e<jt.length-1?jt[e+1]:(r?.number_of_seasons??0)>m?m+1:null},[f,V,jt,m,r?.number_of_seasons]),Xn=dt?.currentTime??0,Gt=O(null),[Ke,Qt]=g(!1),[mt,Zn]=g(0),[Mt,Jn]=g(!1),[bt,ht]=g(!1),[Ar,En]=g(!1),[xr,wr]=g(""),[Xt,Br]=g(!1),[Lr,Nn]=g(!1),{isTheaterMode:Oe,toggleTheaterMode:In,handleLayoutClick:Pr}=Ns();p(()=>{const e=n=>{n.defaultPrevented||n.ctrlKey||n.metaKey||n.altKey||n.repeat||n.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||n.key.toLowerCase()==="t"&&In()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[In]),Is(c,(H.length>0||at!=="")&&!Oe&&!Ke&&!bt);const Mr=no(),[ft,Rr]=g(eo),zr=E(e=>{Rr(e),to(e)},[]),Ye=O(!1),Ve=O(null),An=O(0),Q=O(null),Zt=O(""),$r=br(Xn),Rt=!u&&!Ye.current&&(Ke||bt||$r),Jt=O(Rt);Jt.current=Rt;const en=O(!1);p(()=>{en.current=Mt},[Mt]);const je=E((e,n)=>{if(!J||!n||n<30)return;const a=dn(e,n);Math.abs(e-An.current)<10&&!a||(An.current=e,Yn.mutate({mediaId:J,season:m,episode:_,currentTime:Math.floor(e),duration:Math.floor(n),completed:a,title:r?.title??null,poster:r?.poster??null,backdrop:r?.backdrop??null,year:r?.year??null,overview:r?.overview??null,tmdbId:r?.id??null,mediaType:T||"tv",adult:r?.adult?1:0}))},[J,m,_,Yn,r,T]),Ie=E((e,n)=>{vn();const a=new URLSearchParams(h);a.set("type",h.get("type")||"tv"),a.set("s",String(e)),a.set("e",String(n)),B(`${window.location.pathname}?${a.toString()}`)},[h,B,vn]),zt=E(()=>{const e=l.current;if(!e||f||V==null){En(!1);return}const n=e.duration||0,a=e.currentTime||0;En(n>0&&a/n>=.8)},[f,V,l]),tn=E((e,n)=>["tv-sources",C,f?"movie":"tv",s,e,n,K],[C,f,s,K]),nn=E(async(e,n)=>{if(!r||!s||!C)return{valid:!1,sources:[]};const a=f?"movie":"tv",d=await pt.tv.sources.query({provider:C,type:a,tmdbId:String(s),season:e,episode:n,title:r.title||"",year:r.year||"",totalSeasons:String(r.number_of_seasons||1),imdbId:r.imdb_id||"",...K?{server:K}:{}});return{valid:"valid"in d?d.valid:!1,error:"error"in d?d.error:void 0,sources:d.sources,referer:"referer"in d?d.referer:void 0,audioTracks:d.audioTracks,subtitles:"subtitles"in d?d.subtitles:void 0,servers:"servers"in d?d.servers:void 0,server:"server"in d?d.server:void 0,embedUrl:"embedUrl"in d?d.embedUrl:void 0}},[r,s,C,f,K]),er=E(()=>{if(f||!r||!s||!C||x||V==null)return;const e=tn(m,V);M.getQueryState(e)?.status!=="success"&&M.prefetchQuery({queryKey:e,queryFn:()=>nn(m,V),staleTime:300*1e3,gcTime:1800*1e3})},[f,r,s,C,x,V,m,M,tn,nn]),Dr=E(()=>{if(Ne)return;zt();const e=l.current;!e||e.paused||e.ended||(e.duration>0&&e.duration-e.currentTime<=60&&er(),!Ve.current&&(Ve.current=setTimeout(()=>{Ve.current=null,je(e.currentTime,e.duration||0)},5e3)))},[je,l,Ne,zt,er]),Or=E(()=>{const e=l.current;if(!(!e||!r)&&(Ve.current&&clearTimeout(Ve.current),Ve.current=null,je(e.currentTime,e.duration||0),!i)){if(V!=null){ft&&(ve(V),Ie(m,V));return}wr(f?r.title:`${r.title} - Season ${m}`),ht(!0),Ye.current=!0}},[f,r,m,V,ft,je,Ie,l,i]),{checkEnd:rn,logDuration:tr}=As({videoRef:l,sourceType:x?"iframe":void 0,resetKey:`${J}:${m}:${_}`,onEnd:Or}),Vr=E(()=>{c.actions.onPlay()},[c.actions]),Fr=E(()=>{c.actions.onPause();const e=l.current;e&&!e.ended&&je(e.currentTime,e.duration||0)},[c.actions,je,l]),qr=E(()=>{const e=l.current;if(e){try{const n=parseFloat(D.getItem("playerVolume")||"");isNaN(n)||(e.volume=Math.max(0,Math.min(1,n))),e.muted=D.getItem("playerMuted")==="true"}catch{}if(Q.current!=null&&Q.current>0){try{e.currentTime=Q.current}catch{}Q.current=null}zt()}},[l,zt]),xn=E(()=>{const e=l.current;if(e&&Q.current!=null&&Q.current>0){try{e.currentTime=Q.current}catch{}Q.current=null}},[l]),Ur=E(()=>{mt>0&&(Q.current=mt);const e=l.current;if(e&&mt>0){try{e.currentTime=mt,Q.current=null}catch{}e.play().catch(()=>{})}Qt(!1),Ye.current=!0},[mt,l]),nr=E(()=>{Q.current=null;const e=l.current;e&&(e.currentTime=0,e.play().catch(()=>{})),Qt(!1),Ye.current=!0},[l]),Hr=E(()=>{V!=null&&(Ye.current=!0,ve(V),Ie(m,V))},[V,m,Ie]),Wr=E(()=>{We!=null&&(ht(!1),Ye.current=!0,X(We),ve(1),Ie(We,1))},[We,Ie]),Kr=E(async()=>{if(J)try{Lt?await Wt.mutateAsync({id:J,status:"Completed"}):r&&s&&(await Kt.mutateAsync({tmdbId:Number(s),mediaType:T||"tv",title:r.title,poster:r.poster,backdrop:r.backdrop,year:r.year,overview:r.overview,adult:r.adult,status:"Completed",silent:!0}),mr.success("Moved to Completed")),ht(!1),B("/")}catch{}},[J,Lt,Wt,Kt,r,s,T,B]);p(()=>{Ye.current=!1,Gt.current=null,Qt(!1),En(!1),Zn(0),Jn(!1),en.current=!1,Q.current=null,An.current=0},[J,m,_]),p(()=>{Zt.current=De},[De]),p(()=>{Qn&&(Jn(!0),en.current=!0)},[Qn,J,m,_]),p(()=>{if(u||Cn||!dt||Ye.current)return;const e=`${J}:${m}:${_}`;if(Gt.current===e)return;Gt.current=e;const n=dt,a=n.currentTime??0;br(a)&&n.completed!==1&&!dn(a,n.duration??0)&&(Zn(a),Qt(!0))},[dt,Cn,J,m,_,u]),p(()=>{!u&&Ke&&l.current&&l.current.pause()},[Ke,l,u]),p(()=>{const e=l.current;return()=>{Ve.current&&clearTimeout(Ve.current),Ve.current=null,!e?.ended&&c.engine.getState().duration>0&&je(c.engine.getTimeline().currentTime,c.engine.getState().duration)}},[c.engine,je,l]);const wn=E(e=>{let n=null,a=!0;try{n=D.getItem("tvLastSubtitle"),a=D.getItem("tvSubtitlesEnabled")!=="false"}catch{}return Hn(e,{lastKey:n,enabled:a})},[]),Bn=E(e=>{if(!(e<0))try{D.setItem("tvSubtitlesEnabled","true"),D.setItem("tvSelectedSubtitle",String(e))}catch{}},[]),rr=E(e=>{if(e.length===0)return 0;let n=null;try{n=D.getItem("tvLastAudio")}catch{}if(n){const a=e.findIndex(q=>Vn(q)===n);if(a>=0)return a;const d=n.indexOf("|||"),b=d>=0?n.slice(0,d):n,I=d>=0?n.slice(d+3):n,F=e.findIndex(q=>q.language===b||q.label===I);if(F>=0)return F}return Hn(e,{lastKey:null,enabled:!0})},[]),{data:sr}=Js(J||void 0),or=Se(()=>(sr?.progress??[]).filter(n=>n.season===m&&(n.completed===1||dn(n.currentTime,n.duration))).map(n=>String(n.episode)),[sr,m]),ar=Se(()=>ke.map(e=>({id:String(e.episode_number),label:`Episode ${e.episode_number}`,sublabel:e.name||void 0,thumbnail:e.still_path?`https://image.tmdb.org/t/p/w185${e.still_path}`:void 0})),[ke]),ir=Se(()=>(r?.genres??[]).map(e=>e.name).slice(0,5),[r]),Ln=Se(()=>[r?.year,r?.status,r?.number_of_seasons?`${r.number_of_seasons} Season${r.number_of_seasons>1?"s":""}`:null,r?.number_of_episodes?`${r.number_of_episodes} Episodes`:null].filter(Boolean),[r]);p(()=>{if(!i&&G.length!==0&&!G.some(e=>e.id===C)){const e=G.find(n=>n.tier==="direct")?.id??G[0].id;Ze(e);try{D.setItem("tvProvider",e)}catch{}}},[G,C,i]),p(()=>{_e([]),Z(""),lt(""),kt(!1)},[C]),p(()=>{if(!i&&ce.length!==0&&!ce.includes(K)){Ct(ce[0]);try{D.setItem("tvServer",ce[0])}catch{}}},[ce,K,i]),p(()=>{if(!s){L(null),W([]),Je(""),te(""),He("");return}const e=Number(s),n=T||"tv";L(null),W([]),Je(""),te(""),He("");const a=parseInt(z.current.get("s")||"",10),d=parseInt(z.current.get("e")||"",10);X(isNaN(a)?1:a),ve(isNaN(d)?1:d),Ue(0),pt.tv.details.query({type:n,id:String(e)}).then(b=>{const I={id:b.id,title:b.title||"",overview:b.overview||"",vote_average:b.vote_average,year:b.year,poster:b.poster,backdrop:b.backdrop,imdb_id:b.imdb_id||void 0,adult:b.adult,seasons:b.seasons,number_of_seasons:b.number_of_seasons};L(I),I.seasons&&I.seasons.length>0&&isNaN(a)&&X(I.seasons[0].season_number)}).catch(()=>{})},[s,T]),p(()=>{if(!r||!s)return;if(!(r.seasons!==void 0||r.number_of_seasons!==void 0)){we([]);return}const n=parseInt(h.get("e")||"",10);pt.tv.episodes.query({id:String(s),season:String(m)}).then(a=>{const d=(a.episodes||[]).map(b=>({episode_number:b.episode_number,name:b.name||"",vote_average:b.vote_average,overview:b.overview||"",still_path:b.still_path||""}));we(d),d.length!==0&&ve(b=>!isNaN(n)&&d.some(I=>I.episode_number===n)?n:d.some(I=>I.episode_number===b)?b:d[0].episode_number)}).catch(()=>{})},[r,s,m,h]),p(()=>{if(!x||!r||!s)return;On(`/api/tv/embed/${C}/${f?"movie":"tv"}/${s}?season=${m}&episode=${_}`).then(n=>{if(n.url)return He(n.url),On(`/api/resolve?url=${encodeURIComponent(n.url)}`).then(a=>{a.finalUrl&&He(a.finalUrl)})}).catch(()=>{})},[C,r,s,m,_,f,x]);const sn=E(async()=>{if(!r||!s||!C||x||r.adult&&!Bt)return;const e=De;Pe(!0),te(""),It.current.length===0&&(W([]),Ue(0),et([]),_t([]));try{const n=await M.fetchQuery({queryKey:tn(m,_),queryFn:()=>nn(m,_),staleTime:3e5,gcTime:18e5});if(Zt.current!==e)return;if(Pe(!1),!n.valid||!n.sources?.length){te(n.error?`${n.error}`:ce.length>0?`No streams from ${K}. Try another server.`:"No streams available.");return}if(u&&K&&n.server&&n.server!==K){W([]),te("The host's selected server is unavailable. Automatic source switching is disabled in watch-along rooms.");return}!i&&!K&&n.server&&Ct(n.server);const a=u?n.sources.filter(q=>q.type==="hls"):n.sources;if(u&&a.length===0){W([]),te("The room requires a direct HLS source. No compatible stream is available here.");return}W(a),yt(n.server||K),Je(e),n.servers?.length&&_e(n.servers),n.embedUrl&&Z(n.embedUrl),Ue(0),n.referer&&Tt(n.referer);const d=n.audioTracks||[];et(d),ot(d.length>0?rr(d):0);const b=n.subtitles||[];if(_t(b),b.length>0){const q=wn(b);Re(q),Bn(q)}else Re(-1);const I=f?"movie":"tv",F=s;pt.tv.subtitles.query({type:I,tmdbId:String(F),season:String(m),episode:String(_)}).then(q=>{if(Zt.current!==e)return;const ye=Array.isArray(q.subtitles)?q.subtitles:[];ye.length!==0&&_t(y=>{const Y=[...y,...ye.filter(j=>!y.some($=>$.url===j.url))];if(y.length===0){const j=wn(Y);Re(j),Bn(j)}return Y})}).catch(()=>{}),te("")}catch(n){if(Zt.current!==e)return;Pe(!1),te(n instanceof Error?n.message:"Failed to load streams.")}},[r,s,C,m,_,f,x,Bt,ce,K,wn,Bn,rr,M,tn,nn,De,u,i]),Pn=E(()=>{const e=l.current;e&&!isNaN(e.currentTime)&&(Q.current=e.currentTime)},[l]),Yr=E(e=>{if(!(i||u&&e==="Embed")){if(e==="Embed"){kt(!0);return}Pn(),kt(!1),Ct(e);try{D.setItem("tvServer",e)}catch{}te("")}},[Pn,i,u]),jr=E(e=>{Ze(e);try{D.setItem("tvProvider",e)}catch{}},[]);p(()=>{C&&r&&!x&&sn()},[C,r,sn,x]),p(()=>{if(!l.current)return;if(ue.current=null,x||Te||u&&H[ze]?.type!=="hls"){c.engine.unload();return}if(Ne&&!u)return c.engine.loadSource({url:"/av-sync-test.mp4"},{autoPlay:!Jt.current});if(qt.current!=null&&(Q.current=qt.current,qt.current=null),Be===De&&Q.current==null&&!Jt.current)try{const y=l.current;y&&!y.ended&&y.currentTime>1&&(Q.current=y.currentTime)}catch{}const n=Q.current??0,a=!le&&Be===De?Te?"":H[ze]?.url||"":"";if(!a){try{l.current?.pause(),l.current?.removeAttribute("src"),l.current?.load()}catch{}return}const d=l.current;d.pause(),d.removeAttribute("src"),d.load(),c.actions.resetMediaState();const b=`/api/tv/stream-proxy?url=${encodeURIComponent(a)}&referer=${encodeURIComponent(tt)}&provider=${encodeURIComponent(C)}`,I=Zo()||document.body.classList.contains("low-end"),F=I?60:180,q=c.engine.loadSource({url:b,hls:H[ze]?.type==="hls"},{hlsConfig:{enableWorker:!0,lowLatencyMode:!1,startPosition:n>0?n:-1,maxBufferLength:F,maxMaxBufferLength:F+(I?30:60),backBufferLength:I?30:60,maxBufferSize:(I?120:360)*1e3*1e3,fragLoadPolicy:{default:{maxTimeToFirstByteMs:15e3,maxLoadTimeMs:45e3,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:3,retryDelayMs:800,maxRetryDelayMs:6e3}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:25e3,timeoutRetry:{maxNumRetry:1,retryDelayMs:500,maxRetryDelayMs:2e3},errorRetry:{maxNumRetry:2,retryDelayMs:800,maxRetryDelayMs:4e3}}}},onHls:(y,Y)=>{ue.current=y;const j=()=>{let R=!1,P=0;try{R=D.getItem("tvSubtitlesEnabled")==="true";const k=parseInt(D.getItem("tvSelectedSubtitle")||"0",10);!isNaN(k)&&k>=0&&(P=k)}catch{}return{enabled:R,index:P}},$=()=>{if(typeof y.subtitleTrack!="number")return;if(de.current.length>0){y.subtitleTrack=-1;return}const R=Array.isArray(y.subtitleTracks)?y.subtitleTracks:[];if(R.length===0){y.subtitleTrack=-1;return}const P=j();if(P.enabled){const k=P.index<R.length?P.index:0;y.subtitleTrack=k,Re(k),Tn()}else y.subtitleTrack=-1};Qo(y,Y.Events,{getWant:()=>At.current,onResolve:R=>ot(R)}),y.on(Y.Events.MANIFEST_PARSED,$),y.on(Y.Events.SUBTITLE_TRACKS_UPDATED,()=>{$()}),y.on(Y.Events.SUBTITLE_TRACK_SWITCH,(R,P)=>{if(de.current.length>0){if(P.id!==-1)try{y.subtitleTrack=-1}catch{}return}const k=Array.isArray(y.subtitleTracks)?y.subtitleTracks:[];if(k.length!==0){if(P.id===-1){const Ce=j();if(Ce.enabled){const ne=Ce.index<k.length?Ce.index:0;y.subtitleTrack=ne;return}}Re(P.id),Tn()}})},onReady:()=>{(n>0||!Jt.current&&en.current)&&c.engine.play()},onError:y=>{te(y.message),Pe(!1),ue.current=null}}),ye=()=>{const j=d.error?.code===4?"Video source not supported or not found":"Failed to load video stream";te(`${j}. The source may be invalid or expired. Try switching source or reloading.`),Pe(!1)};return d.addEventListener("error",ye),()=>{q(),ue.current=null,d.removeEventListener("error",ye)}},[H,Be,le,ze,C,tt,x,Te,l,qt,Ne,J,m,_,xn,Tn,c.actions,c.engine,De,u]),p(()=>{if(i||!Mt||Ke||bt||Rt||x||Ne)return;const e=l.current;!e||!e.paused||e.ended||e.readyState<1||(xn(),c.engine.play())},[Mt,Ke,bt,Rt,x,Ne,xn,l,i,c.engine]),p(()=>{const e=ue.current;!e||typeof e.audioTrack!="number"||(e.audioTrack=qe)},[qe]),p(()=>{const e=ue.current;!e||typeof e.subtitleTrack!="number"||!Array.isArray(e.subtitleTracks)||e.subtitleTracks.length===0||de.current.length>0||(se>=0?e.subtitleTrack=se:e.subtitleTrack=-1)},[se]),p(()=>{const e=l.current;if(!(!e||x)&&(e.querySelectorAll("track").forEach(n=>n.remove()),de.current=[],Ee.length!==0&&(Ee.forEach(n=>{const a=document.createElement("track");a.kind="subtitles",a.label=n.label||n.language||"Unknown",a.srclang=n.language||n.label||"en";const d=`/api/subtitle-proxy?url=${encodeURIComponent(n.url)}&referer=${encodeURIComponent(tt)}`;a.src=d,a.addEventListener("load",()=>{const b=de.current.indexOf(a),I=a.track;if(I&&b>=0){const F=b===w.current;I.mode=F&&!_n.current?"showing":"hidden"}}),e.appendChild(a),de.current.push(a)}),Ee.length>0)))try{const n=ue.current;n&&typeof n.subtitleTrack=="number"&&n.subtitleTrack!==-1&&(n.subtitleTrack=-1)}catch{}},[Ee,tt,x,C,l]),p(()=>{const e=l.current;if(!e||x)return;const n=ue.current;de.current.length>0&&n&&typeof n.subtitleTrack=="number"&&Array.isArray(n.subtitleTracks)&&n.subtitleTracks.length>0&&(n.subtitleTrack=-1);const a=()=>{const I=Wn(c.state.subtitleFontSize,e.clientHeight||720),F=Math.max(0,Math.min(100,100-c.state.subtitlePosition)),q=()=>{const $=I*16,R=e.videoHeight||e.clientHeight||720,P=e.videoWidth||e.clientWidth||1280;return{step:$*1.3/R*100,chars:Math.max(20,Math.floor(P/($*.55)))}},ye=($,R)=>{const P=$;P.snapToLines=!1,P.line=R},y=$=>{if(!$.cues)return;Array.from($.cues).forEach(ne=>ye(ne,F));const R=Array.from($.activeCues??[]);if(R.length<=1){R.forEach(ne=>ye(ne,F));return}const{step:P,chars:k}=q();let Ce=F;for(let ne=R.length-1;ne>=0;ne--){const Ge=String(R[ne].text??"").replace(/<[^>]*>/g,"").split(`
3
3
  `).reduce((an,$t)=>an+Math.max(1,Math.ceil($t.length/k)),0);Ce=Math.max(0,Ce-Ge*P),ye(R[ne],Ce),Ce-=P*.4}},Y=de.current;if(Y.length>0){Y.forEach(($,R)=>{const P=$.track;if(!P)return;const k=R===se;P.mode=k&&!ge?"showing":"hidden",k&&!ge&&y(P)});return}const j=Array.from(e.textTracks);j.length!==0&&j.forEach(($,R)=>{const P=R===se;$.mode=P&&!ge?"showing":"hidden",P&&!ge&&y($)})};a();const d=()=>a();e.textTracks.addEventListener("addtrack",d),e.addEventListener("loadedmetadata",a,{once:!0});const b=window.setTimeout(a,600);return()=>{e.textTracks.removeEventListener("addtrack",d),e.removeEventListener("loadedmetadata",a),window.clearTimeout(b)}},[se,Ee,x,C,l,ge,c.state.subtitleFontSize,c.state.subtitlePosition]),p(()=>{if(!ge)return;const e=l.current,n=$e.current;if(!e||!n)return;const a=ut/1e3,d=pn/1e3,b=new Set;let I=[],F=-1,q=-1,ye=-1,y=-1,Y=0,j=0,$=!1;const R=()=>{const U=w.current;if(U<0)return null;const Qe=de.current;return Qe.length>0?Qe[U]?.track??null:Array.from(e.textTracks)[U]??null},P=(U,Qe)=>{const me=U.cues;if(!me||me.length===0)return Array.from(U.activeCues??[]);let nt=0,rt=me.length;for(;nt<rt;){const Ae=nt+rt>>>1;me[Ae].endTime+a<Qe?nt=Ae+1:rt=Ae}const Dt=[];for(let Ae=nt;Ae<me.length;Ae++){const ln=me[Ae];if(ln.startTime+a>Qe)break;ln.endTime+a>=Qe&&Dt.push(ln)}return Dt},k=()=>{const U=R(),Qe=e.currentTime-d,me=U?P(U,Qe):[],nt=e.clientWidth,rt=e.clientHeight,Dt=e.videoWidth,Ae=e.videoHeight;if(me.length===I.length&&me.every((zn,$n)=>zn===I[$n])&&nt===F&&rt===q&&Dt===ye&&Ae===y||(I=me,F=nt,q=rt,ye=Dt,y=Ae,n.textContent="",me.length===0))return;const ur={fontSize:Wn(c.state.subtitleFontSize,rt),position:c.state.subtitlePosition,bgOpacity:c.state.subtitleBgOpacity,bgColor:c.state.subtitleBgColor,textColor:c.state.subtitleTextColor,edge:c.state.subtitleEdge,bold:c.state.subtitleBold},Zr=xs(ur),Jr=ws(e,ur.position);me.forEach((zn,$n)=>{const dr=String(zn.text??"");if(!Bs(dr).trim())return;const Dn=document.createElement("div"),es=(me.length-1-$n)*1.7;Dn.style.cssText=`${Zr}
4
4
  bottom: calc(${Jr}px + ${es}em);`,Dn.innerHTML=Ls(dr),n.appendChild(Dn)})},Ce=()=>{Array.from(e.textTracks).forEach(U=>{b.has(U)||(b.add(U),U.addEventListener("cuechange",k))})},ne=()=>{Ce(),k()},Rn=()=>{if($||j)return;const U=()=>{j=0,!($||e.paused||e.ended)&&(k(),Rn())};j=window.requestAnimationFrame(U)},Ge=e,an=()=>{Y=0,k(),!$&&Ge.requestVideoFrameCallback&&(Y=Ge.requestVideoFrameCallback(an))},$t=()=>{k(),Ge.requestVideoFrameCallback?Y||(Y=Ge.requestVideoFrameCallback(an)):Rn()};Ce(),e.textTracks.addEventListener("addtrack",ne),e.textTracks.addEventListener("removetrack",ne),e.addEventListener("timeupdate",k),e.addEventListener("seeked",k),e.addEventListener("loadedmetadata",k),e.addEventListener("play",$t);const lr=Array.from(e.querySelectorAll("track"));lr.forEach(U=>U.addEventListener("load",k));const cr=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>k());return cr?.observe(e),k(),$t(),()=>{$=!0,b.forEach(U=>U.removeEventListener("cuechange",k)),e.textTracks.removeEventListener("addtrack",ne),e.textTracks.removeEventListener("removetrack",ne),e.removeEventListener("timeupdate",k),e.removeEventListener("seeked",k),e.removeEventListener("loadedmetadata",k),e.removeEventListener("play",$t),lr.forEach(U=>U.removeEventListener("load",k)),cr?.disconnect(),j&&window.cancelAnimationFrame(j),Y&&Ge.cancelVideoFrameCallback&&Ge.cancelVideoFrameCallback(Y),n.textContent=""}},[ge,ut,se,Ee,pn,l,c.state.subtitleFontSize,c.state.subtitlePosition,c.state.subtitleBgOpacity,c.state.subtitleBgColor,c.state.subtitleTextColor,c.state.subtitleEdge,c.state.subtitleBold]);const Mn=()=>{L(null),W([]),He(""),B(-1)},Gr=E(e=>{i||(X(e),ve(1),Ie(e,1))},[Ie,i]),on=!f&&r?.seasons&&r.seasons.length>1?t("label",{className:v.sidebarSeason,children:[t("span",{children:"Season"}),t("select",{disabled:i,value:m,onChange:e=>Gr(parseInt(e.currentTarget.value,10)||1),className:v.select,children:r.seasons.map(e=>t("option",{value:e.season_number,children:["Season ",e.season_number," (",e.episode_count," ep)"]},e.season_number))})]}):null,vt=E(e=>{if(i)return;const n=parseInt(e,10);if(!isNaN(n)){try{l.current?.pause()}catch{}ve(n),Ie(m,n)}Nn(!1)},[m,Ie,l,i]);p(()=>{if(f)return;const e=n=>{n.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||n.key.toLowerCase()==="n"&&(V!=null?vt(String(V)):mr.error("No next episode available"))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[f,V,vt]);const Qr=e=>{ot(e);try{const a=Fe[e];a&&D.setItem("tvLastAudio",Vn(a))}catch{}const n=ue.current;n&&n.audioTrack!==void 0&&(n.audioTrack=e)},Xr=e=>{Re(e);try{if(e===-1)D.setItem("tvSubtitlesEnabled","false");else{D.setItem("tvSubtitlesEnabled","true"),D.setItem("tvSelectedSubtitle",String(e));const b=Ee[e];b&&D.setItem("tvLastSubtitle",Vn(b))}}catch{}const n=l.current,a=ue.current;if(a&&typeof a.subtitleTrack=="number"&&Array.isArray(a.subtitleTracks)&&a.subtitleTracks.length>0&&(a.subtitleTrack=de.current.length>0||e<0?-1:e),!n)return;const d=de.current;if(d.length>0){d.forEach((b,I)=>{const F=b.track;if(!F)return;const q=I===e;F.mode=q&&!ge?"showing":"hidden"});return}Array.from(n.textTracks).forEach((b,I)=>{const F=I===e;b.mode=F&&!ge?"showing":"hidden"})};return p(()=>{if(!r){document.title="TV & Movies - dango";return}document.title=f?`${r.title} - dango`:`${r.title} - Season ${m} Episode ${_} - dango`},[r,f,m,_]),p(()=>{if(!r||f)return;const e=new URLSearchParams(h),n=e.get("s"),a=e.get("e"),d=String(m),b=String(_);n===d&&a===b||(e.set("type",h.get("type")||"tv"),e.set("s",d),e.set("e",b),B(`${window.location.pathname}?${e.toString()}`,{replace:!0}))},[r,f,m,_,h,B]),t("div",{className:`${xe.playerPageLayout} ${Oe?xe.theaterMode:""} ${f?xe.noSidebar:""}`,onClick:Pr,children:[Oe&&t(Ps,{videoRef:l,active:Sn.enabled&&!x&&H.length>0&&!Me&&!(r?.adult&&!Bt),settings:Sn}),!Oe&&!f&&t("aside",{className:xe.episodeSidebar,children:r?t(Ms,{episodes:ar,currentEpisode:String(_),watchedEpisodes:or,onEpisodeClick:vt,header:on}):t(Rs,{variant:"sidebar"})}),t("div",{className:xe.playerMain,children:[r&&t("div",{className:v.playerSection,onContextMenu:e=>e.preventDefault(),style:r.adult&&!Bt?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:x&&at&&!u?t("iframe",{src:at,className:v.videoIframe,allow:"autoplay; fullscreen",allowFullScreen:!0}):!x&&Nt&&!u?t("iframe",{src:Nt,className:v.videoIframe,allow:"autoplay; fullscreen",allowFullScreen:!0}):!x&&(H.length>0||le)?t(Xe,{children:[Me&&t(fr,{error:Me,onRetry:sn}),t(Ko,{player:c,title:r.title,episodeLabel:f?void 0:`S${m} E${_}`,server:ie||it?.label||C,audioTracks:Fe,selectedAudioTrack:qe,onAudioTrackChange:Qr,subtitles:Ee,selectedSubtitle:se,onSubtitleChange:Xr,streams:H,resolutionIdx:ze,onResolutionChange:e=>{Pn(),Ue(e)},onBack:Mn,videoDelayEnabled:wt,onVideoDelayToggle:Vt,videoDelayMs:hn,onVideoDelayChange:Ft,onCalibrateAvSync:u?void 0:pr,subtitleDelayMs:ut,onSubtitleDelayChange:Tr,showNextEpisodeButton:!i&&Ar&&!Ke&&!bt,onNextEpisode:Hr,isLoading:le,isTheaterMode:Oe,onTheaterModeToggle:In,ambientSettings:Sn,onAmbientChange:Cr,children:[t(hs,{autoPlay:!u&&Mt&&!Rt,playsInline:!0,disablePictureInPicture:!0,className:`${v.video} ${yn?v.videoHidden:""}`,onTimeUpdate:()=>{Ne||(Dr(),rn())},onEnded:()=>{Ne||rn(!0)},onPlay:Vr,onPause:Fr,onSeeked:()=>{Ne||(zt(),rn())},onLoadedMetadata:()=>{qr(),tr(),rn()},onDurationChange:()=>{tr()},onContextMenu:e=>e.preventDefault(),onError:()=>{te("Video failed to load. Try another server or reload."),Pe(!1)}}),t("canvas",{ref:xt,className:`${v.delayCanvas} ${yn?v.delayCanvasActive:""}`}),ge&&t("div",{ref:$e,className:v.subtitleOverlay}),t(zs,{isOpen:fn,ms:hn,onChange:Ft,onApply:yr,onClose:gr,testClipActive:Ne,onTestClip:Sr})]})]}):Me&&!x?t(fr,{error:Me,onRetry:sn}):null}),t(so,{playback:Ht?{selection:Ht,position:l.current?.currentTime||0,playing:!1,rate:c.engine.getState().playbackRate}:null,onCreate:()=>{vn(),c.engine.pause()},needsPlayback:Kn.needsPlayback,onEnablePlayback:Kn.enablePlayback}),u&&!le&&r&&!Ht&&t("p",{role:"alert",children:"The host's direct HLS source is unavailable here. Retry or leave the room to use another source."}),!Oe&&r&&t($s,{}),!Oe&&on&&t("div",{className:v.mobileSeasonRow,children:on}),!Oe&&r&&t("div",{className:ae.streamPanel,children:[t("div",{className:v.providerSelectWrap,children:t("label",{className:v.controlLabel,children:["Provider",t("select",{value:C,onChange:e=>jr(e.currentTarget.value),className:v.select,disabled:i||G.length===0,children:st?t("option",{value:"",children:"Loading..."}):G.length===0?t("option",{value:"",children:"No providers available"}):t(Xe,{children:[A.length>0&&t("optgroup",{label:"Direct HLS",children:A.map(e=>t("option",{value:e.id,children:e.label},e.id))}),re.length>0&&t("optgroup",{label:"Embeds",children:re.map(e=>t("option",{value:e.id,children:e.label},e.id))})]})})]})}),!i&&!x&&(le?t("div",{className:v.sourceLoader,children:t("div",{className:v.ringSpinner})}):t(jo,{servers:Et,selectedServer:ct?"Embed":K,onServerSelect:Yr}))]}),!Oe&&r&&t("div",{className:xe.playerInfoContainer,children:[t("div",{className:xe.playerInfoHeader,children:[t("div",{className:xe.playerAnimeCard,children:r.poster&&t("img",{src:`https://image.tmdb.org/t/p/w342${r.poster}`,alt:r.title,loading:"lazy",decoding:"async"})}),t("div",{className:xe.videoTitleSection,children:[t("div",{className:ae.titleContainer,children:[t("h1",{children:r.title}),t("div",{className:v.meta,children:[t("span",{className:v.year,children:r.year}),r.vote_average!=null&&r.vote_average>0&&t("span",{className:v.rating,children:[t(be,{name:"star",size:12}),Number(r.vote_average).toFixed(1)]}),t("span",{className:`${v.typeBadge} ${v[f?"movie":"tv"]}`,children:f?"Movie":"TV Show"})]}),ir.length>0&&t("div",{className:v.genreRow,children:ir.map(e=>t("span",{className:v.genreChip,children:e},e))}),Ln.length>0&&t("div",{className:v.metaRow,children:Ln.map((e,n)=>t("span",{children:[e,n<Ln.length-1?" · ":""]},`${e}-${n}`))})]}),t("div",{className:ae.controls,children:[t("button",{className:`${ae.watchlistBtn} ${Lt?ae.inList:""}`,onClick:Ir,disabled:Nr,type:"button",children:[Lt?t(be,{name:"check",size:14}):t(be,{name:"plus",size:14}),Lt?"In Watchlist":"Add to Watchlist"]}),!f&&t(Xe,{children:[t("button",{className:`${ae.watchlistBtn}`,onClick:()=>kn!=null&&vt(String(kn)),disabled:i||kn==null,type:"button",children:[t(be,{name:"chevron-left",size:14}),"Prev EP"]}),t("button",{className:`${ae.watchlistBtn}`,onClick:()=>V!=null&&vt(String(V)),disabled:i||V==null,type:"button",children:["Next EP",t(be,{name:"chevron-right",size:14})]}),!f&&t("button",{className:`${ae.watchlistBtn} ${ae.modeToggleBtn} ${ft?ae.modeToggleActive:""}`,onClick:()=>zr(!ft),type:"button","aria-pressed":ft,children:ft?"AUTOPLAY: ON":"AUTOPLAY: OFF"}),Mr&&t("button",{className:`${ae.watchlistBtn}`,onClick:()=>Nn(!0),type:"button",children:[t(be,{name:"list-ul",size:14}),"Episodes"]})]})]})]})]}),t("div",{className:xe.infoColumns,children:[t("div",{className:`${ae.descriptionSection} ${ae.synopsisFlat}`,children:[t("h3",{children:"Synopsis"}),t(ro,{text:r.overview,emptyText:"No description available."}),t("button",{className:ae.detailsToggleBtn,onClick:()=>Br(!Xt),type:"button",children:[Xt?t(be,{name:"chevron-up"}):t(be,{name:"chevron-down"}),Xt?"Hide Details":"Show Details"]})]}),Xt&&t("div",{className:v.detailGrid,children:[r.first_air_date&&t("div",{className:v.detailItem,children:[t("strong",{children:f?"Release Date":"First Air Date"}),t("span",{children:r.first_air_date})]}),r.last_air_date&&t("div",{className:v.detailItem,children:[t("strong",{children:"Last Air Date"}),t("span",{children:r.last_air_date})]}),r.networks&&r.networks.length>0&&t("div",{className:v.detailItem,children:[t("strong",{children:"Networks"}),t("span",{children:r.networks.map(e=>e.name).join(", ")})]}),r.created_by&&r.created_by.length>0&&t("div",{className:v.detailItem,children:[t("strong",{children:"Created By"}),t("span",{children:r.created_by.map(e=>e.name).join(", ")})]}),r.episode_run_time&&r.episode_run_time.length>0&&t("div",{className:v.detailItem,children:[t("strong",{children:"Episode Runtime"}),t("span",{children:[r.episode_run_time[0]," min"]})]}),r.imdb_id&&t("div",{className:v.detailItem,children:[t("strong",{children:"IMDb"}),t("a",{href:`https://www.imdb.com/title/${r.imdb_id}`,target:"_blank",rel:"noopener noreferrer",className:v.imdbLink,children:"View on IMDb"})]})]})]})]}),!f&&t(Ds,{isOpen:Lr,onClose:()=>Nn(!1),episodes:ar,currentEpisode:String(_),watchedEpisodes:or,onEpisodeClick:vt,header:on}),r?.adult&&!Bt&&t(Ws,{isOpen:!0,onClose:Mn,onGrant:kr}),t(Os,{isOpen:!u&&Ke&&!Cn&&Gt.current===`${J}:${m}:${_}`&&dt?.completed!==1&&!dn(Xn,dt?.duration??0),onClose:nr,title:"Resume Watching",message:t(Xe,{children:["You were at ",t("strong",{children:Un(mt)})]}),restartLabel:"Start from Beginning",onResume:Ur,onRestart:nr}),t(Vs,{isOpen:bt,onClose:()=>ht(!1),title:f?"Movie Completed!":We!=null?"Season Complete!":"Show Completed!",heading:xr,message:f?"You finished this movie!":We!=null?`You finished Season ${m}.`:"Congratulations! You finished all available episodes.",children:[t(cn,{variant:"secondary",onClick:()=>ht(!1),children:"Close"}),We!=null?t(cn,{onClick:Wr,children:["Start Season ",We]}):t(Xe,{children:[t(cn,{onClick:()=>{ht(!1),Mn()},children:"Back to Details"}),t(cn,{onClick:Kr,disabled:Wt.isPending||Kt.isPending,children:Wt.isPending||Kt.isPending?"Saving...":"Move to Completed"})]})]}),!r&&t("div",{className:v.statusMsg,children:[t(be,{name:"spinner",className:v.spinner})," Loading..."]})]})]})};export{Ya as default};
@@ -1 +1 @@
1
- import{o as R,a as q,p as E,d as l,h as C,T,u as e,g as F}from"./vendor-core-DfaOB3Rn.js";import{I as a}from"./vendor-icons-DrybRNxP.js";import{a8 as j,e as U,a9 as H,t as J,B as w,h as I}from"./index-Nyp_7HqY.js";import{c as K,d as Q}from"./useTvLibrary-BlxUofsj.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-rvuk3e2Z.js";const X="_container_198yg_1",Y="_heroSection_198yg_11",Z="_bannerContainer_198yg_17",ee="_banner_198yg_17",ne="_bannerOverlay_198yg_37",te="_heroContent_198yg_49",se="_posterContainer_198yg_62",ae="_poster_198yg_62",oe="_infoGlass_198yg_86",ie="_title_198yg_100",re="_quickMeta_198yg_110",le="_metaItem_198yg_118",ce="_iconStar_198yg_126",de="_iconTv_198yg_130",me="_iconType_198yg_134",_e="_genres_198yg_139",he="_genre_198yg_139",ge="_metaRow_198yg_156",ve="_metaValue_198yg_164",pe="_metaDivider_198yg_168",ue="_synopsisSection_198yg_173",ye="_sectionTitleSmall_198yg_179",ke="_synopsis_198yg_173",be="_actions_198yg_196",Ne="_watchBtn_198yg_202",Se="_watchlistBtn_198yg_226",fe="_active_198yg_250",Ce="_seasonPickerLabel_198yg_256",Te="_seasonSelect_198yg_267",we="_detailsToggleBtn_198yg_286",Ie="_expandedContent_198yg_304",Be="_detailGrid_198yg_309",De="_detailItem_198yg_315",Me="_imdbLink_198yg_333",Le="_heroSkeleton_198yg_343",Pe="_skeletonBanner_198yg_347",$e="_skeletonContent_198yg_354",Ge="_skeletonPoster_198yg_365",xe="_skeletonInfo_198yg_373",Oe="_skeletonTitle_198yg_380",Ae="_skeletonMeta_198yg_388",Ve="_skeletonDesc_198yg_396",We="_skeletonActions_198yg_404",ze="_errorState_198yg_413",Re="_matureOverlay_198yg_434",qe="_matureContent_198yg_444",n={container:X,heroSection:Y,bannerContainer:Z,banner:ee,bannerOverlay:ne,heroContent:te,posterContainer:se,poster:ae,infoGlass:oe,title:ie,quickMeta:re,metaItem:le,iconStar:ce,iconTv:de,iconType:me,genres:_e,genre:he,metaRow:ge,metaValue:ve,metaDivider:pe,synopsisSection:ue,sectionTitleSmall:ye,synopsis:ke,actions:be,watchBtn:Ne,watchlistBtn:Se,active:fe,seasonPickerLabel:Ce,seasonSelect:Te,detailsToggleBtn:we,expandedContent:Ie,detailGrid:Be,detailItem:De,imdbLink:Me,heroSkeleton:Le,skeletonBanner:Pe,skeletonContent:$e,skeletonPoster:Ge,skeletonInfo:xe,skeletonTitle:Oe,skeletonMeta:Ae,skeletonDesc:Ve,skeletonActions:We,errorState:ze,matureOverlay:Re,matureContent:qe};function Ke(){const{id:o}=R(),c=q(),[B]=E(),i=j(B.get("type")),{hasConsent:D}=U(),[t,M]=l(null),[L,_]=l(!0),[u,y]=l(""),[d,P]=l(!1),[h,$]=l(1),G=H(i,o??""),x=Number(o),{data:O}=K(t?G:void 0),g=!!O?.inLibrary,{toggle:A}=Q();C(()=>{o&&(_(!0),y(""),J.tv.details.query({type:i,id:String(o)}).then(s=>{const m={id:s.id,title:s.title||"",overview:s.overview||"",vote_average:s.vote_average,year:s.year,poster:s.poster,backdrop:s.backdrop,imdb_id:s.imdb_id||void 0,adult:s.adult,seasons:s.seasons?.map(z=>({...z,name:""})),number_of_seasons:s.number_of_seasons};M(m),_(!1)}).catch(s=>{y(s.message),_(!1)}))},[o,i]),C(()=>{document.title=t?.title?`${t.title} - dango`:"TV & Movies - dango"},[t?.title]);const V=()=>{!o||!t||c(r?I(i,o):I(i,o,h,1))},W=()=>{t&&A({tmdbId:x,mediaType:i,title:t.title,poster:t.poster,year:t.year,adult:t.adult})},r=i==="movie",v=!r,k=t?.backdrop?`https://image.tmdb.org/t/p/w1280${t.backdrop}`:"",b=t?.poster?`https://image.tmdb.org/t/p/w500${t.poster}`:"",N=T(()=>t?.genres?t.genres.map(s=>s.name).slice(0,5):[],[t?.genres]),S=T(()=>t?.seasons?t.seasons.filter(s=>s.season_number>0):[],[t?.seasons]),p=[t?.year,t?.status,v&&t?.number_of_seasons?`${t.number_of_seasons} Season${t.number_of_seasons>1?"s":""}`:null,v&&t?.number_of_episodes?`${t.number_of_episodes} Episodes`:null].filter(Boolean);if(L)return e("div",{className:n.container,children:e("div",{className:n.heroSkeleton,children:[e("div",{className:n.skeletonBanner}),e("div",{className:n.skeletonContent,children:[e("div",{className:n.skeletonPoster}),e("div",{className:n.skeletonInfo,children:[e("div",{className:n.skeletonTitle}),e("div",{className:n.skeletonMeta}),e("div",{className:n.skeletonDesc}),e("div",{className:n.skeletonActions})]})]})]})});if(u||!t)return e("div",{className:n.container,children:e("div",{className:n.errorState,children:[e(a,{name:"exclamation-triangle",size:48}),e("h2",{children:"Failed to load details"}),e("p",{children:u||"Something went wrong"}),e(w,{onClick:()=>c(-1),children:"Go Back"})]})});const f=t.adult&&!D;return e("div",{className:n.container,style:f?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:[e("div",{className:n.heroSection,children:[e("div",{className:n.bannerContainer,children:[k&&e("div",{className:n.banner,style:{backgroundImage:`url(${k})`}}),e("div",{className:n.bannerOverlay})]}),e("div",{className:n.heroContent,children:[e("div",{className:n.posterContainer,children:b&&e("img",{src:b,alt:t.title,className:n.poster,decoding:"async"})}),e("div",{className:n.infoGlass,children:[e("div",{children:[e("h1",{className:n.title,children:t.title}),e("div",{className:n.quickMeta,children:[t.vote_average!=null&&t.vote_average>0&&e("div",{className:n.metaItem,children:[e(a,{name:"star",className:n.iconStar}),e("span",{children:Number(t.vote_average).toFixed(1)})]}),e("div",{className:n.metaItem,children:[e(a,{name:"tv",className:n.iconTv}),e("span",{children:r?"Movie":"TV Show"})]}),t.vote_count!=null&&e("div",{className:n.metaItem,children:[e(a,{name:"users",className:n.iconType}),e("span",{children:[t.vote_count.toLocaleString()," votes"]})]})]}),N.length>0&&e("div",{className:n.genres,children:N.map(s=>e("span",{className:n.genre,children:s},s))})]}),p.length>0&&e("div",{className:n.metaRow,children:p.map((s,m)=>e(F.Fragment,{children:[e("span",{className:n.metaValue,children:s}),m<p.length-1&&e("span",{className:n.metaDivider,children:"·"})]},m))}),t.overview&&e("div",{className:n.synopsisSection,children:[e("h2",{className:n.sectionTitleSmall,children:"Synopsis"}),e("p",{className:n.synopsis,children:t.overview})]}),e("div",{className:n.actions,children:[e("button",{className:n.watchBtn,onClick:V,children:[e(a,{name:"play",size:14}),r?"Watch Now":`Start S${h}`]}),e("button",{className:`${n.watchlistBtn} ${g?n.active:""}`,onClick:W,children:[g?e(a,{name:"check",size:14}):e(a,{name:"plus",size:14}),g?"In Watchlist":"Add to Watchlist"]})]}),v&&S.length>1&&e("label",{className:n.seasonPickerLabel,children:[e("span",{children:"Season"}),e("select",{value:h,onChange:s=>$(parseInt(s.currentTarget.value,10)||1),className:n.seasonSelect,children:S.map(s=>e("option",{value:s.season_number,children:["Season ",s.season_number," (",s.episode_count," Episodes)"]},s.season_number))})]}),e("button",{className:n.detailsToggleBtn,onClick:()=>P(!d),children:[d?e(a,{name:"chevron-up"}):e(a,{name:"chevron-down"}),d?"Hide Details":"Show Details"]}),d&&e("div",{className:n.expandedContent,children:e("div",{className:n.detailGrid,children:[t.first_air_date&&e("div",{className:n.detailItem,children:[e("strong",{children:r?"Release Date":"First Air Date"}),e("span",{children:t.first_air_date})]}),t.last_air_date&&e("div",{className:n.detailItem,children:[e("strong",{children:"Last Air Date"}),e("span",{children:t.last_air_date})]}),t.networks&&t.networks.length>0&&e("div",{className:n.detailItem,children:[e("strong",{children:"Networks"}),e("span",{children:t.networks.map(s=>s.name).join(", ")})]}),t.created_by&&t.created_by.length>0&&e("div",{className:n.detailItem,children:[e("strong",{children:"Created By"}),e("span",{children:t.created_by.map(s=>s.name).join(", ")})]}),t.episode_run_time&&t.episode_run_time.length>0&&e("div",{className:n.detailItem,children:[e("strong",{children:"Episode Runtime"}),e("span",{children:[t.episode_run_time[0]," min"]})]}),t.imdb_id&&e("div",{className:n.detailItem,children:[e("strong",{children:"IMDb"}),e("a",{href:`https://www.imdb.com/title/${t.imdb_id}`,target:"_blank",rel:"noopener noreferrer",className:n.imdbLink,children:"View on IMDb"})]})]})})]})]})]}),f&&e("div",{className:n.matureOverlay,children:e("div",{className:n.matureContent,children:[e(a,{name:"exclamation-triangle",size:48}),e("h2",{children:"Content Warning"}),e("p",{children:"This content may contain mature themes."}),e(w,{onClick:()=>c("/"),children:"Go Back"})]})})]})}export{Ke as default};
1
+ import{o as R,a as q,p as E,d as l,h as C,T,u as e,g as F}from"./vendor-core-DfaOB3Rn.js";import{I as a}from"./vendor-icons-DrybRNxP.js";import{a8 as j,e as U,a9 as H,t as J,B as w,h as I}from"./index-hnIW0p5l.js";import{c as K,d as Q}from"./useTvLibrary-BIs22-2H.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-DGzo-Q94.js";const X="_container_198yg_1",Y="_heroSection_198yg_11",Z="_bannerContainer_198yg_17",ee="_banner_198yg_17",ne="_bannerOverlay_198yg_37",te="_heroContent_198yg_49",se="_posterContainer_198yg_62",ae="_poster_198yg_62",oe="_infoGlass_198yg_86",ie="_title_198yg_100",re="_quickMeta_198yg_110",le="_metaItem_198yg_118",ce="_iconStar_198yg_126",de="_iconTv_198yg_130",me="_iconType_198yg_134",_e="_genres_198yg_139",he="_genre_198yg_139",ge="_metaRow_198yg_156",ve="_metaValue_198yg_164",pe="_metaDivider_198yg_168",ue="_synopsisSection_198yg_173",ye="_sectionTitleSmall_198yg_179",ke="_synopsis_198yg_173",be="_actions_198yg_196",Ne="_watchBtn_198yg_202",Se="_watchlistBtn_198yg_226",fe="_active_198yg_250",Ce="_seasonPickerLabel_198yg_256",Te="_seasonSelect_198yg_267",we="_detailsToggleBtn_198yg_286",Ie="_expandedContent_198yg_304",Be="_detailGrid_198yg_309",De="_detailItem_198yg_315",Me="_imdbLink_198yg_333",Le="_heroSkeleton_198yg_343",Pe="_skeletonBanner_198yg_347",$e="_skeletonContent_198yg_354",Ge="_skeletonPoster_198yg_365",xe="_skeletonInfo_198yg_373",Oe="_skeletonTitle_198yg_380",Ae="_skeletonMeta_198yg_388",Ve="_skeletonDesc_198yg_396",We="_skeletonActions_198yg_404",ze="_errorState_198yg_413",Re="_matureOverlay_198yg_434",qe="_matureContent_198yg_444",n={container:X,heroSection:Y,bannerContainer:Z,banner:ee,bannerOverlay:ne,heroContent:te,posterContainer:se,poster:ae,infoGlass:oe,title:ie,quickMeta:re,metaItem:le,iconStar:ce,iconTv:de,iconType:me,genres:_e,genre:he,metaRow:ge,metaValue:ve,metaDivider:pe,synopsisSection:ue,sectionTitleSmall:ye,synopsis:ke,actions:be,watchBtn:Ne,watchlistBtn:Se,active:fe,seasonPickerLabel:Ce,seasonSelect:Te,detailsToggleBtn:we,expandedContent:Ie,detailGrid:Be,detailItem:De,imdbLink:Me,heroSkeleton:Le,skeletonBanner:Pe,skeletonContent:$e,skeletonPoster:Ge,skeletonInfo:xe,skeletonTitle:Oe,skeletonMeta:Ae,skeletonDesc:Ve,skeletonActions:We,errorState:ze,matureOverlay:Re,matureContent:qe};function Ke(){const{id:o}=R(),c=q(),[B]=E(),i=j(B.get("type")),{hasConsent:D}=U(),[t,M]=l(null),[L,_]=l(!0),[u,y]=l(""),[d,P]=l(!1),[h,$]=l(1),G=H(i,o??""),x=Number(o),{data:O}=K(t?G:void 0),g=!!O?.inLibrary,{toggle:A}=Q();C(()=>{o&&(_(!0),y(""),J.tv.details.query({type:i,id:String(o)}).then(s=>{const m={id:s.id,title:s.title||"",overview:s.overview||"",vote_average:s.vote_average,year:s.year,poster:s.poster,backdrop:s.backdrop,imdb_id:s.imdb_id||void 0,adult:s.adult,seasons:s.seasons?.map(z=>({...z,name:""})),number_of_seasons:s.number_of_seasons};M(m),_(!1)}).catch(s=>{y(s.message),_(!1)}))},[o,i]),C(()=>{document.title=t?.title?`${t.title} - dango`:"TV & Movies - dango"},[t?.title]);const V=()=>{!o||!t||c(r?I(i,o):I(i,o,h,1))},W=()=>{t&&A({tmdbId:x,mediaType:i,title:t.title,poster:t.poster,year:t.year,adult:t.adult})},r=i==="movie",v=!r,k=t?.backdrop?`https://image.tmdb.org/t/p/w1280${t.backdrop}`:"",b=t?.poster?`https://image.tmdb.org/t/p/w500${t.poster}`:"",N=T(()=>t?.genres?t.genres.map(s=>s.name).slice(0,5):[],[t?.genres]),S=T(()=>t?.seasons?t.seasons.filter(s=>s.season_number>0):[],[t?.seasons]),p=[t?.year,t?.status,v&&t?.number_of_seasons?`${t.number_of_seasons} Season${t.number_of_seasons>1?"s":""}`:null,v&&t?.number_of_episodes?`${t.number_of_episodes} Episodes`:null].filter(Boolean);if(L)return e("div",{className:n.container,children:e("div",{className:n.heroSkeleton,children:[e("div",{className:n.skeletonBanner}),e("div",{className:n.skeletonContent,children:[e("div",{className:n.skeletonPoster}),e("div",{className:n.skeletonInfo,children:[e("div",{className:n.skeletonTitle}),e("div",{className:n.skeletonMeta}),e("div",{className:n.skeletonDesc}),e("div",{className:n.skeletonActions})]})]})]})});if(u||!t)return e("div",{className:n.container,children:e("div",{className:n.errorState,children:[e(a,{name:"exclamation-triangle",size:48}),e("h2",{children:"Failed to load details"}),e("p",{children:u||"Something went wrong"}),e(w,{onClick:()=>c(-1),children:"Go Back"})]})});const f=t.adult&&!D;return e("div",{className:n.container,style:f?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:[e("div",{className:n.heroSection,children:[e("div",{className:n.bannerContainer,children:[k&&e("div",{className:n.banner,style:{backgroundImage:`url(${k})`}}),e("div",{className:n.bannerOverlay})]}),e("div",{className:n.heroContent,children:[e("div",{className:n.posterContainer,children:b&&e("img",{src:b,alt:t.title,className:n.poster,decoding:"async"})}),e("div",{className:n.infoGlass,children:[e("div",{children:[e("h1",{className:n.title,children:t.title}),e("div",{className:n.quickMeta,children:[t.vote_average!=null&&t.vote_average>0&&e("div",{className:n.metaItem,children:[e(a,{name:"star",className:n.iconStar}),e("span",{children:Number(t.vote_average).toFixed(1)})]}),e("div",{className:n.metaItem,children:[e(a,{name:"tv",className:n.iconTv}),e("span",{children:r?"Movie":"TV Show"})]}),t.vote_count!=null&&e("div",{className:n.metaItem,children:[e(a,{name:"users",className:n.iconType}),e("span",{children:[t.vote_count.toLocaleString()," votes"]})]})]}),N.length>0&&e("div",{className:n.genres,children:N.map(s=>e("span",{className:n.genre,children:s},s))})]}),p.length>0&&e("div",{className:n.metaRow,children:p.map((s,m)=>e(F.Fragment,{children:[e("span",{className:n.metaValue,children:s}),m<p.length-1&&e("span",{className:n.metaDivider,children:"·"})]},m))}),t.overview&&e("div",{className:n.synopsisSection,children:[e("h2",{className:n.sectionTitleSmall,children:"Synopsis"}),e("p",{className:n.synopsis,children:t.overview})]}),e("div",{className:n.actions,children:[e("button",{className:n.watchBtn,onClick:V,children:[e(a,{name:"play",size:14}),r?"Watch Now":`Start S${h}`]}),e("button",{className:`${n.watchlistBtn} ${g?n.active:""}`,onClick:W,children:[g?e(a,{name:"check",size:14}):e(a,{name:"plus",size:14}),g?"In Watchlist":"Add to Watchlist"]})]}),v&&S.length>1&&e("label",{className:n.seasonPickerLabel,children:[e("span",{children:"Season"}),e("select",{value:h,onChange:s=>$(parseInt(s.currentTarget.value,10)||1),className:n.seasonSelect,children:S.map(s=>e("option",{value:s.season_number,children:["Season ",s.season_number," (",s.episode_count," Episodes)"]},s.season_number))})]}),e("button",{className:n.detailsToggleBtn,onClick:()=>P(!d),children:[d?e(a,{name:"chevron-up"}):e(a,{name:"chevron-down"}),d?"Hide Details":"Show Details"]}),d&&e("div",{className:n.expandedContent,children:e("div",{className:n.detailGrid,children:[t.first_air_date&&e("div",{className:n.detailItem,children:[e("strong",{children:r?"Release Date":"First Air Date"}),e("span",{children:t.first_air_date})]}),t.last_air_date&&e("div",{className:n.detailItem,children:[e("strong",{children:"Last Air Date"}),e("span",{children:t.last_air_date})]}),t.networks&&t.networks.length>0&&e("div",{className:n.detailItem,children:[e("strong",{children:"Networks"}),e("span",{children:t.networks.map(s=>s.name).join(", ")})]}),t.created_by&&t.created_by.length>0&&e("div",{className:n.detailItem,children:[e("strong",{children:"Created By"}),e("span",{children:t.created_by.map(s=>s.name).join(", ")})]}),t.episode_run_time&&t.episode_run_time.length>0&&e("div",{className:n.detailItem,children:[e("strong",{children:"Episode Runtime"}),e("span",{children:[t.episode_run_time[0]," min"]})]}),t.imdb_id&&e("div",{className:n.detailItem,children:[e("strong",{children:"IMDb"}),e("a",{href:`https://www.imdb.com/title/${t.imdb_id}`,target:"_blank",rel:"noopener noreferrer",className:n.imdbLink,children:"View on IMDb"})]})]})})]})]})]}),f&&e("div",{className:n.matureOverlay,children:e("div",{className:n.matureContent,children:[e(a,{name:"exclamation-triangle",size:48}),e("h2",{children:"Content Warning"}),e("p",{children:"This content may contain mature themes."}),e(w,{onClick:()=>c("/"),children:"Go Back"})]})})]})}export{Ke as default};
@@ -1 +1 @@
1
- import{d as n,h as b,T as k,u as T}from"./vendor-core-DfaOB3Rn.js";import{a9 as _,t as m,j as w,h as I,k as P}from"./index-Nyp_7HqY.js";import{d as D}from"./useTvLibrary-BlxUofsj.js";import{a as W}from"./MediaCard-gCn0mrX1.js";const S=({item:e,anchorRect:l,onMouseEnter:i,onMouseLeave:c,onRequestClose:p})=>{const[a,u]=n(null),[d,r]=n(!0),{toggle:v,bookmarkedIds:g}=D(),y=_(e.type,e.id),f=g.has(y);b(()=>{let o=!1;return r(!0),m.tv.details.query({type:e.type,id:String(e.id)}).then(s=>{o||(u({overview:s.overview,vote_average:s.vote_average,number_of_seasons:s.number_of_seasons}),r(!1))}).catch(()=>{o||r(!1)}),()=>{o=!0}},[e.id,e.type]);const h=k(()=>a?.genres?a.genres.slice(0,4).map(o=>o.name):[],[a?.genres]),t=[];return a?.vote_average!=null&&a.vote_average>0&&t.push({icon:"star",label:Number(a.vote_average).toFixed(1),accent:!0}),t.push({icon:"tv",label:e.type==="tv"?"TV Show":"Movie"}),e.year&&t.push({label:e.year}),a?.status&&t.push({label:a.status}),T(W,{anchorRect:l,title:e.title,loading:d,meta:t,genres:h,synopsis:P(a?.overview,200),primaryAction:{to:I(e.type,e.id),label:"Watch now",icon:"play"},secondaryAction:{to:w(e.type,e.id),label:"Details",icon:"info-circle"},bookmarked:f,onToggleBookmark:()=>v({tmdbId:e.id,mediaType:e.type,title:e.title,poster:e.image,year:e.year}),onMouseEnter:i,onMouseLeave:c,onRequestClose:p})};export{S as T};
1
+ import{d as n,h as b,T as k,u as T}from"./vendor-core-DfaOB3Rn.js";import{a9 as _,t as m,j as w,h as I,k as P}from"./index-hnIW0p5l.js";import{d as D}from"./useTvLibrary-BIs22-2H.js";import{a as W}from"./MediaCard-BhYZUPLl.js";const S=({item:e,anchorRect:l,onMouseEnter:i,onMouseLeave:c,onRequestClose:p})=>{const[a,u]=n(null),[d,r]=n(!0),{toggle:v,bookmarkedIds:g}=D(),y=_(e.type,e.id),f=g.has(y);b(()=>{let o=!1;return r(!0),m.tv.details.query({type:e.type,id:String(e.id)}).then(s=>{o||(u({overview:s.overview,vote_average:s.vote_average,number_of_seasons:s.number_of_seasons}),r(!1))}).catch(()=>{o||r(!1)}),()=>{o=!0}},[e.id,e.type]);const h=k(()=>a?.genres?a.genres.slice(0,4).map(o=>o.name):[],[a?.genres]),t=[];return a?.vote_average!=null&&a.vote_average>0&&t.push({icon:"star",label:Number(a.vote_average).toFixed(1),accent:!0}),t.push({icon:"tv",label:e.type==="tv"?"TV Show":"Movie"}),e.year&&t.push({label:e.year}),a?.status&&t.push({label:a.status}),T(W,{anchorRect:l,title:e.title,loading:d,meta:t,genres:h,synopsis:P(a?.overview,200),primaryAction:{to:I(e.type,e.id),label:"Watch now",icon:"play"},secondaryAction:{to:w(e.type,e.id),label:"Details",icon:"info-circle"},bookmarked:f,onToggleBookmark:()=>v({tmdbId:e.id,mediaType:e.type,title:e.title,poster:e.image,year:e.year}),onMouseEnter:i,onMouseLeave:c,onRequestClose:p})};export{S as T};
@@ -1 +1 @@
1
- import{h as I,p as ae,A as re,d as o,T as Y,q as M,u as t}from"./vendor-core-DfaOB3Rn.js";import{I as h}from"./vendor-icons-DrybRNxP.js";import{P as D}from"./MediaCard-gCn0mrX1.js";import{a as ne,T as se}from"./useTv-IgkCy7kA.js";import{S as le}from"./SkeletonGrid-BH33GvAW.js";import{u as ie,T as W,M as Q,a5 as oe,B as x}from"./index-Nyp_7HqY.js";import{E as ce}from"./ErrorMessage-DAxegITP.js";import{s as r}from"./Search.module-C_qwCdHS.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-UaIQxjyb.js";import"./TvPopup-By5JenW3.js";import"./useTvLibrary-BlxUofsj.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-rvuk3e2Z.js";const de=[{value:"multi",label:"All"},{value:"tv",label:"TV Shows"},{value:"movie",label:"Movies"}],ue=[{value:"popularity.desc",label:"Popularity"},{value:"vote_average.desc",label:"Top Rated"},{value:"primary_release_date.desc",label:"Newest"},{value:"primary_release_date.asc",label:"Oldest"},{value:"vote_count.desc",label:"Most Voted"}],O=new Date().getFullYear(),me=[{value:"ALL",label:"All Years"},...Array.from({length:O-1980+1},(l,m)=>({value:String(O-m),label:String(O-m)}))];function _e(){I(()=>{document.title="Search TV & Movies - dango"},[]);const[l,m]=ae(),{lowEndMode:K}=ie(),C=re(null),[g,H]=o(l.get("q")||""),[p,U]=o(l.get("q")||""),[u,v]=o(parseInt(l.get("page")||"1",10)||1),[i,J]=o(l.get("type")||"multi"),[$,k]=o(l.get("genre")||""),[y,B]=o(l.get("year")||"ALL"),[f,E]=o(l.get("sort_by")||"popularity.desc"),[b,X]=o(!1),[c,N]=o(()=>{const e={},a=l.get("genre")||"";return a&&(e[a]="include"),e}),P=Y(()=>{if(i==="tv")return Object.entries(W).map(([a,n])=>({id:a,name:n}));if(i==="movie")return Object.entries(Q).map(([a,n])=>({id:a,name:n}));const e=new Map;for(const[a,n]of Object.entries(W))e.set(a,n);for(const[a,n]of Object.entries(Q))e.set(a,n);return Array.from(e.entries()).map(([a,n])=>({id:a,name:n}))},[i]),S=Y(()=>Object.entries(c).filter(([,a])=>a==="include").map(([a])=>a).join(","),[c]),{data:L,isLoading:w,isError:Z,error:ee}=ne({query:p,type:i,genre:S,year:y,sort_by:f,page:u}),T=L?.results||[],_=L?.total_pages||0,j=L?.total_results||0,R=u<Math.min(_,500),d=M((e={})=>{const a=new URLSearchParams,n=e.q!==void 0?e.q:p,s=e.type!==void 0?e.type:i,G=e.year!==void 0?e.year:y,V=e.sort!==void 0?e.sort:f,F=e.page!==void 0?e.page:String(u),z=e.genre!==void 0?e.genre:S;n.trim()&&a.set("q",n.trim()),s!=="multi"&&a.set("type",s),z&&a.set("genre",z),G!=="ALL"&&a.set("year",G),V!=="popularity.desc"&&a.set("sort_by",V),F!=="1"&&a.set("page",F),m(a,{replace:!0})},[p,i,y,f,u,S,m]),A=M(()=>{oe(),v(1),U(g),d({q:g,page:"1"}),window.scrollTo({top:0,behavior:"smooth"})},[g,d]),q=M(e=>{if(v(e),d({page:String(e)}),C.current){const a=C.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:a,behavior:"smooth"})}},[d]),te=M(e=>{N(a=>{const n=a[e],s={...a};return n==="include"?s[e]="exclude":n==="exclude"?delete s[e]:s[e]="include",s}),v(1)},[]);return I(()=>{const a=Object.entries(c).filter(([,n])=>n==="include").map(([n])=>n).join(",");a!==$&&(k(a),d({genre:a,page:"1"}))},[c,$,k,d]),t("div",{className:"page-container",children:[t("div",{className:r.header,children:[t("h1",{className:r.pageTitle,children:"Search TV & Movies"}),t("p",{className:r.pageSubtitle,children:"Discover trending shows, movies, and more powered by TMDB"})]}),t("div",{className:r.filterContainer,children:[t("div",{className:r.searchBarWrapper,children:[t("div",{className:r.inputIconWrapper,children:[t(h,{name:"search",className:r.searchIcon}),t("input",{type:"text","data-virtual-keyboard":"true",className:r.searchInput,placeholder:"Search titles...",value:g,onInput:e=>H(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&A()})]}),t("div",{className:r.searchActions,children:[t("select",{value:i,onChange:e=>{J(e.currentTarget.value),N({})},className:r.providerSelect,"aria-label":"Media type",children:de.map(e=>t("option",{value:e.value,children:e.label},e.value))}),t(x,{onClick:A,className:r.searchBtn,children:"Search"}),t("button",{className:`${r.filterToggleBtn} ${b?r.active:""}`,onClick:()=>X(!b),children:[t(h,{name:"filter",size:14}),t("span",{children:"Filters"}),b?t(h,{name:"chevron-up",size:12}):t(h,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${r.advancedFilters} ${b?r.show:""}`,children:[t("div",{className:r.filterDivider}),t("div",{className:r.filterGrid,children:[t("div",{className:r.filterItem,children:[t("label",{children:"Sort By"}),t("select",{value:f,onChange:e=>E(e.currentTarget.value),children:ue.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:r.filterItem,children:[t("label",{children:"Year"}),t("select",{value:y,onChange:e=>B(e.currentTarget.value),children:me.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),P.length>0&&t("div",{className:r.genreSection,children:[t("label",{className:r.genreLabel,children:"Genres"}),t("div",{className:r.genreContainer,children:P.map(e=>t("button",{className:`${r.genreButton} ${r[c[e.id]||""]}`,onClick:()=>te(e.id),children:e.name},e.id))})]}),t("div",{className:r.filterActions,children:[t(x,{variant:"secondary",onClick:()=>{N({}),B("ALL"),E("popularity.desc"),v(1),d({genre:"",year:"ALL",sort:"popularity.desc",page:"1"})},children:"Reset All"}),t(x,{onClick:A,className:r.searchBtn,children:"Apply Filters"})]})]})]}),Z&&t(ce,{message:ee?.message||"Search failed"}),Object.keys(c).length>0&&t("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",marginBottom:"1.5rem"},children:[t("span",{style:{fontSize:"0.8rem",color:"var(--text-muted)",fontWeight:600},children:"Active Filters:"}),Object.entries(c).map(([e,a])=>{const n=P.find(s=>s.id===e)?.name||e;return t("span",{className:`badge ${a==="include"?"badge-primary":"badge-danger"}`,style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[a==="include"?`+ ${n}`:`- ${n}`,t("button",{onClick:()=>{const s={...c};delete s[e],N(s)},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]},e)})]}),t("div",{className:r.resultsHeader,ref:C,children:[t("h2",{className:r.resultsTitle,children:[p?`Results for "${p}"`:S?"Browsing genres":i==="tv"?"Popular TV Shows":i==="movie"?"Popular Movies":"Trending",j>0&&t("span",{style:{fontWeight:400,color:"var(--text-tertiary)",fontSize:"0.85em",marginLeft:"0.5em"},children:["(",j.toLocaleString(),")"]})]}),T.length>0&&t(D,{page:u,totalPages:Math.max(1,Math.min(_,500)),canGoNext:R,onChange:q,isLoading:w})]}),t("div",{className:`${r.resultsGrid} ${K?r.lowEnd:""}`,children:w?t(le,{}):T.map(e=>t(se,{item:{id:e.id,title:e.title,year:e.year,type:e.type,image:e.image,vote_average:e.vote_average,adult:e.adult}},`${e.type}-${e.id}`))}),!w&&T.length===0&&t("div",{className:r.noResults,children:[t(h,{name:"search",size:48,className:r.noResultsIcon}),t("h3",{children:"No results found"}),t("p",{children:"Try adjusting your search or filters to find what you're looking for."})]}),T.length>0&&t("div",{className:r.bottomPagination,children:t(D,{page:u,totalPages:Math.max(1,Math.min(_,500)),canGoNext:R,onChange:q,isLoading:w,variant:"labeled"})})]})}export{_e as default};
1
+ import{h as I,p as ae,A as re,d as o,T as Y,q as M,u as t}from"./vendor-core-DfaOB3Rn.js";import{I as h}from"./vendor-icons-DrybRNxP.js";import{P as D}from"./MediaCard-BhYZUPLl.js";import{a as ne,T as se}from"./useTv-D2BZQllK.js";import{S as le}from"./SkeletonGrid-CPc8hqla.js";import{u as ie,T as W,M as Q,a5 as oe,B as x}from"./index-hnIW0p5l.js";import{E as ce}from"./ErrorMessage-DAxegITP.js";import{s as r}from"./Search.module-C_qwCdHS.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-Ixo33c5M.js";import"./TvPopup-BnPKXA6c.js";import"./useTvLibrary-BIs22-2H.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-DGzo-Q94.js";const de=[{value:"multi",label:"All"},{value:"tv",label:"TV Shows"},{value:"movie",label:"Movies"}],ue=[{value:"popularity.desc",label:"Popularity"},{value:"vote_average.desc",label:"Top Rated"},{value:"primary_release_date.desc",label:"Newest"},{value:"primary_release_date.asc",label:"Oldest"},{value:"vote_count.desc",label:"Most Voted"}],O=new Date().getFullYear(),me=[{value:"ALL",label:"All Years"},...Array.from({length:O-1980+1},(l,m)=>({value:String(O-m),label:String(O-m)}))];function _e(){I(()=>{document.title="Search TV & Movies - dango"},[]);const[l,m]=ae(),{lowEndMode:K}=ie(),C=re(null),[g,H]=o(l.get("q")||""),[p,U]=o(l.get("q")||""),[u,v]=o(parseInt(l.get("page")||"1",10)||1),[i,J]=o(l.get("type")||"multi"),[$,k]=o(l.get("genre")||""),[y,B]=o(l.get("year")||"ALL"),[f,E]=o(l.get("sort_by")||"popularity.desc"),[b,X]=o(!1),[c,N]=o(()=>{const e={},a=l.get("genre")||"";return a&&(e[a]="include"),e}),P=Y(()=>{if(i==="tv")return Object.entries(W).map(([a,n])=>({id:a,name:n}));if(i==="movie")return Object.entries(Q).map(([a,n])=>({id:a,name:n}));const e=new Map;for(const[a,n]of Object.entries(W))e.set(a,n);for(const[a,n]of Object.entries(Q))e.set(a,n);return Array.from(e.entries()).map(([a,n])=>({id:a,name:n}))},[i]),S=Y(()=>Object.entries(c).filter(([,a])=>a==="include").map(([a])=>a).join(","),[c]),{data:L,isLoading:w,isError:Z,error:ee}=ne({query:p,type:i,genre:S,year:y,sort_by:f,page:u}),T=L?.results||[],_=L?.total_pages||0,j=L?.total_results||0,R=u<Math.min(_,500),d=M((e={})=>{const a=new URLSearchParams,n=e.q!==void 0?e.q:p,s=e.type!==void 0?e.type:i,G=e.year!==void 0?e.year:y,V=e.sort!==void 0?e.sort:f,F=e.page!==void 0?e.page:String(u),z=e.genre!==void 0?e.genre:S;n.trim()&&a.set("q",n.trim()),s!=="multi"&&a.set("type",s),z&&a.set("genre",z),G!=="ALL"&&a.set("year",G),V!=="popularity.desc"&&a.set("sort_by",V),F!=="1"&&a.set("page",F),m(a,{replace:!0})},[p,i,y,f,u,S,m]),A=M(()=>{oe(),v(1),U(g),d({q:g,page:"1"}),window.scrollTo({top:0,behavior:"smooth"})},[g,d]),q=M(e=>{if(v(e),d({page:String(e)}),C.current){const a=C.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:a,behavior:"smooth"})}},[d]),te=M(e=>{N(a=>{const n=a[e],s={...a};return n==="include"?s[e]="exclude":n==="exclude"?delete s[e]:s[e]="include",s}),v(1)},[]);return I(()=>{const a=Object.entries(c).filter(([,n])=>n==="include").map(([n])=>n).join(",");a!==$&&(k(a),d({genre:a,page:"1"}))},[c,$,k,d]),t("div",{className:"page-container",children:[t("div",{className:r.header,children:[t("h1",{className:r.pageTitle,children:"Search TV & Movies"}),t("p",{className:r.pageSubtitle,children:"Discover trending shows, movies, and more powered by TMDB"})]}),t("div",{className:r.filterContainer,children:[t("div",{className:r.searchBarWrapper,children:[t("div",{className:r.inputIconWrapper,children:[t(h,{name:"search",className:r.searchIcon}),t("input",{type:"text","data-virtual-keyboard":"true",className:r.searchInput,placeholder:"Search titles...",value:g,onInput:e=>H(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&A()})]}),t("div",{className:r.searchActions,children:[t("select",{value:i,onChange:e=>{J(e.currentTarget.value),N({})},className:r.providerSelect,"aria-label":"Media type",children:de.map(e=>t("option",{value:e.value,children:e.label},e.value))}),t(x,{onClick:A,className:r.searchBtn,children:"Search"}),t("button",{className:`${r.filterToggleBtn} ${b?r.active:""}`,onClick:()=>X(!b),children:[t(h,{name:"filter",size:14}),t("span",{children:"Filters"}),b?t(h,{name:"chevron-up",size:12}):t(h,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${r.advancedFilters} ${b?r.show:""}`,children:[t("div",{className:r.filterDivider}),t("div",{className:r.filterGrid,children:[t("div",{className:r.filterItem,children:[t("label",{children:"Sort By"}),t("select",{value:f,onChange:e=>E(e.currentTarget.value),children:ue.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:r.filterItem,children:[t("label",{children:"Year"}),t("select",{value:y,onChange:e=>B(e.currentTarget.value),children:me.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),P.length>0&&t("div",{className:r.genreSection,children:[t("label",{className:r.genreLabel,children:"Genres"}),t("div",{className:r.genreContainer,children:P.map(e=>t("button",{className:`${r.genreButton} ${r[c[e.id]||""]}`,onClick:()=>te(e.id),children:e.name},e.id))})]}),t("div",{className:r.filterActions,children:[t(x,{variant:"secondary",onClick:()=>{N({}),B("ALL"),E("popularity.desc"),v(1),d({genre:"",year:"ALL",sort:"popularity.desc",page:"1"})},children:"Reset All"}),t(x,{onClick:A,className:r.searchBtn,children:"Apply Filters"})]})]})]}),Z&&t(ce,{message:ee?.message||"Search failed"}),Object.keys(c).length>0&&t("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",marginBottom:"1.5rem"},children:[t("span",{style:{fontSize:"0.8rem",color:"var(--text-muted)",fontWeight:600},children:"Active Filters:"}),Object.entries(c).map(([e,a])=>{const n=P.find(s=>s.id===e)?.name||e;return t("span",{className:`badge ${a==="include"?"badge-primary":"badge-danger"}`,style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[a==="include"?`+ ${n}`:`- ${n}`,t("button",{onClick:()=>{const s={...c};delete s[e],N(s)},style:{background:"none",border:"none",color:"inherit",cursor:"pointer"},children:"✕"})]},e)})]}),t("div",{className:r.resultsHeader,ref:C,children:[t("h2",{className:r.resultsTitle,children:[p?`Results for "${p}"`:S?"Browsing genres":i==="tv"?"Popular TV Shows":i==="movie"?"Popular Movies":"Trending",j>0&&t("span",{style:{fontWeight:400,color:"var(--text-tertiary)",fontSize:"0.85em",marginLeft:"0.5em"},children:["(",j.toLocaleString(),")"]})]}),T.length>0&&t(D,{page:u,totalPages:Math.max(1,Math.min(_,500)),canGoNext:R,onChange:q,isLoading:w})]}),t("div",{className:`${r.resultsGrid} ${K?r.lowEnd:""}`,children:w?t(le,{}):T.map(e=>t(se,{item:{id:e.id,title:e.title,year:e.year,type:e.type,image:e.image,vote_average:e.vote_average,adult:e.adult}},`${e.type}-${e.id}`))}),!w&&T.length===0&&t("div",{className:r.noResults,children:[t(h,{name:"search",size:48,className:r.noResultsIcon}),t("h3",{children:"No results found"}),t("p",{children:"Try adjusting your search or filters to find what you're looking for."})]}),T.length>0&&t("div",{className:r.bottomPagination,children:t(D,{page:u,totalPages:Math.max(1,Math.min(_,500)),canGoNext:R,onChange:q,isLoading:w,variant:"labeled"})})]})}export{_e as default};
@@ -1 +1 @@
1
- import{o as $,d as f,h as L,T as U,u as d}from"./vendor-core-DfaOB3Rn.js";import{M as x}from"./MediaCard-gCn0mrX1.js";import{L as F}from"./LibraryListPage-o39P5Z1e.js";import{R as N}from"./ResetProgressModal-B_bS4cVJ.js";import{T as _}from"./TvPopup-By5JenW3.js";import{h as y,g as u,i as R}from"./index-Nyp_7HqY.js";import{j as K,u as O,a as Q,b as Y,f as j,k as q,l as z,m as G,T as I}from"./useTvLibrary-BlxUofsj.js";import"./vendor-icons-DrybRNxP.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-UaIQxjyb.js";import"./SkeletonGrid-BH33GvAW.js";import"./ErrorMessage-DAxegITP.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-rvuk3e2Z.js";const Z=["All","Continue Watching",...I],S=24;function ct(){const{filter:l="All"}=$(),[c,m]=f(1),[s,v]=f(null);L(()=>{document.title="TV Watchlist - dango"},[]),L(()=>{m(1)},[l]);const o=l==="Continue Watching",r=K(o?"All":l,c,S),i=O(100),T=Q(),P=Y(),k=j(),w=q(),C=z(),B=G(),M=U(()=>o?(i.data?.data??[]).map(t=>{const a=t.currentTime??0,e=t.duration??0,g=t.season??1,h=t.episode??1,n=t.mediaType==="movie",p=n?"Movie":`S${g} E${h}`,b=t.completed===1||e>0&&a>=e*.8;return{key:t.id,libId:t.id,tmdbId:t.tmdbId??0,mediaType:t.mediaType,title:t.title||"",poster:t.poster||"",year:t.year,adult:R({adult:t.adult===1}),status:t.watchlistStatus??"",badge:p,progressPercent:b?100:e>0?a/e*100:0,progressLabel:e>0?b?"Watched":n?`${u(a)} / ${u(e)}`:`${p} · ${u(a)} / ${u(e)}`:p,watchTarget:y(t.mediaType,t.tmdbId??0,n?void 0:g,n?void 0:h)}}):(r.data?.data??[]).map(t=>({key:t.id,libId:t.id,tmdbId:t.tmdbId,mediaType:t.mediaType,title:t.title,poster:t.poster||"",year:t.year,adult:R({adult:t.adult===1}),status:t.status,badge:t.lastSeason&&t.lastEpisode?`S${t.lastSeason} E${t.lastEpisode}`:void 0,progressPercent:void 0,progressLabel:void 0,watchTarget:y(t.mediaType,t.tmdbId,t.lastSeason??void 0,t.lastEpisode??void 0)})),[o,i.data,r.data]),W=o?i.data?.total??0:r.data?.total??0,E=o?i.isLoading:r.isLoading,A=o?i.error:r.error,V=t=>{s&&(P.mutate({mediaId:s.libId}),t&&T.mutate(s.libId))};return d(F,{headerTitle:"My TV Watchlist",headerSubtitle:"Track and manage your movies and shows",filters:Z,filterBy:l,filterBasePath:"/tv-watchlist",continueFilter:"Continue Watching",statusOptions:[...I],entries:M,total:W,isLoading:E,error:A,page:c,pageSize:S,onPageChange:m,emptyTitle:"Your TV watchlist is looking a bit empty",emptyFilteredText:"No titles match this filter.",emptyAllText:"Let's find something to watch!",browseLabel:"Browse TV & Movies",browseTarget:"/tv",removeListLabel:"Remove from TV Watchlist",listNoun:"TV watchlist",skipConfirmKey:"tvSkipRemoveConfirmation",onBulkStatus:(t,a)=>w.mutate({ids:t,status:a}),onBulkRemove:t=>{o?B.mutate(t):C.mutate(t)},onStatusChange:(t,a)=>k.mutate({id:t,status:a}),onRemoveItem:t=>T.mutate(t),renderCard:t=>d(x,{item:{id:t.libId,title:t.title,thumbnail:t.poster,typeBadge:t.mediaType==="movie"?"Movie":"TV",chapterBadge:t.badge??null,isAdult:t.adult},linkTo:t.watchTarget,hoverIcon:"play",progress:t.progressPercent!==void 0&&t.progressLabel?{percent:t.progressPercent,label:t.progressLabel}:void 0,showProgress:o,metaRow:t.year?d("span",{style:{opacity:.75},children:t.year}):void 0,onRemove:o?()=>v(t):void 0,renderPopup:(a,e)=>d(_,{item:{id:t.tmdbId??0,title:t.title||"",year:t.year||"",type:t.mediaType||"tv",image:t.poster||""},anchorRect:a,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onRequestClose:e.close})}),modals:d(N,{isOpen:!!s,itemName:s?.title,progressKind:"watch",listLabel:"my TV watchlist",onClose:()=>{v(null)},onConfirm:V})})}export{ct as default};
1
+ import{o as $,d as f,h as L,T as U,u as d}from"./vendor-core-DfaOB3Rn.js";import{M as x}from"./MediaCard-BhYZUPLl.js";import{L as F}from"./LibraryListPage-BnJw-xnm.js";import{R as N}from"./ResetProgressModal-By_82RcA.js";import{T as _}from"./TvPopup-BnPKXA6c.js";import{h as y,g as u,i as R}from"./index-hnIW0p5l.js";import{j as K,u as O,a as Q,b as Y,f as j,k as q,l as z,m as G,T as I}from"./useTvLibrary-BIs22-2H.js";import"./vendor-icons-DrybRNxP.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-Ixo33c5M.js";import"./SkeletonGrid-CPc8hqla.js";import"./ErrorMessage-DAxegITP.js";import"./LibraryListPage.module-r6k9nyT9.js";import"./vendor-query-BBT5_sHx.js";import"./libraryInvalidation-DGzo-Q94.js";const Z=["All","Continue Watching",...I],S=24;function ct(){const{filter:l="All"}=$(),[c,m]=f(1),[s,v]=f(null);L(()=>{document.title="TV Watchlist - dango"},[]),L(()=>{m(1)},[l]);const o=l==="Continue Watching",r=K(o?"All":l,c,S),i=O(100),T=Q(),P=Y(),k=j(),w=q(),C=z(),B=G(),M=U(()=>o?(i.data?.data??[]).map(t=>{const a=t.currentTime??0,e=t.duration??0,g=t.season??1,h=t.episode??1,n=t.mediaType==="movie",p=n?"Movie":`S${g} E${h}`,b=t.completed===1||e>0&&a>=e*.8;return{key:t.id,libId:t.id,tmdbId:t.tmdbId??0,mediaType:t.mediaType,title:t.title||"",poster:t.poster||"",year:t.year,adult:R({adult:t.adult===1}),status:t.watchlistStatus??"",badge:p,progressPercent:b?100:e>0?a/e*100:0,progressLabel:e>0?b?"Watched":n?`${u(a)} / ${u(e)}`:`${p} · ${u(a)} / ${u(e)}`:p,watchTarget:y(t.mediaType,t.tmdbId??0,n?void 0:g,n?void 0:h)}}):(r.data?.data??[]).map(t=>({key:t.id,libId:t.id,tmdbId:t.tmdbId,mediaType:t.mediaType,title:t.title,poster:t.poster||"",year:t.year,adult:R({adult:t.adult===1}),status:t.status,badge:t.lastSeason&&t.lastEpisode?`S${t.lastSeason} E${t.lastEpisode}`:void 0,progressPercent:void 0,progressLabel:void 0,watchTarget:y(t.mediaType,t.tmdbId,t.lastSeason??void 0,t.lastEpisode??void 0)})),[o,i.data,r.data]),W=o?i.data?.total??0:r.data?.total??0,E=o?i.isLoading:r.isLoading,A=o?i.error:r.error,V=t=>{s&&(P.mutate({mediaId:s.libId}),t&&T.mutate(s.libId))};return d(F,{headerTitle:"My TV Watchlist",headerSubtitle:"Track and manage your movies and shows",filters:Z,filterBy:l,filterBasePath:"/tv-watchlist",continueFilter:"Continue Watching",statusOptions:[...I],entries:M,total:W,isLoading:E,error:A,page:c,pageSize:S,onPageChange:m,emptyTitle:"Your TV watchlist is looking a bit empty",emptyFilteredText:"No titles match this filter.",emptyAllText:"Let's find something to watch!",browseLabel:"Browse TV & Movies",browseTarget:"/tv",removeListLabel:"Remove from TV Watchlist",listNoun:"TV watchlist",skipConfirmKey:"tvSkipRemoveConfirmation",onBulkStatus:(t,a)=>w.mutate({ids:t,status:a}),onBulkRemove:t=>{o?B.mutate(t):C.mutate(t)},onStatusChange:(t,a)=>k.mutate({id:t,status:a}),onRemoveItem:t=>T.mutate(t),renderCard:t=>d(x,{item:{id:t.libId,title:t.title,thumbnail:t.poster,typeBadge:t.mediaType==="movie"?"Movie":"TV",chapterBadge:t.badge??null,isAdult:t.adult},linkTo:t.watchTarget,hoverIcon:"play",progress:t.progressPercent!==void 0&&t.progressLabel?{percent:t.progressPercent,label:t.progressLabel}:void 0,showProgress:o,metaRow:t.year?d("span",{style:{opacity:.75},children:t.year}):void 0,onRemove:o?()=>v(t):void 0,renderPopup:(a,e)=>d(_,{item:{id:t.tmdbId??0,title:t.title||"",year:t.year||"",type:t.mediaType||"tv",image:t.poster||""},anchorRect:a,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onRequestClose:e.close})}),modals:d(N,{isOpen:!!s,itemName:s?.title,progressKind:"watch",listLabel:"my TV watchlist",onClose:()=>{v(null)},onConfirm:V})})}export{ct as default};
@@ -1 +1 @@
1
- import{d as _,A as E,h as f,q as N,$ as D,u as o}from"./vendor-core-DfaOB3Rn.js";import{p as x}from"./index-Nyp_7HqY.js";import"./vendor-query-BBT5_sHx.js";import"./vendor-icons-DrybRNxP.js";const O="_keyboard_b2w6l_1",R="_topBar_b2w6l_18",T="_dragHandle_b2w6l_27",q="_grip_b2w6l_38",U="_topButton_b2w6l_46",V="_key_b2w6l_1",W="_closeButton_b2w6l_77",X="_keys_b2w6l_83",Y="_row_b2w6l_90",j="_wideKey_b2w6l_106",A="_spaceKey_b2w6l_110",F="_spaceIcon_b2w6l_118",J="_activeKey_b2w6l_126",t={keyboard:O,topBar:R,dragHandle:T,grip:q,topButton:U,key:V,closeButton:W,keys:X,row:Y,wideKey:j,spaceKey:A,spaceIcon:F,activeKey:J},$="virtual-keyboard-state",b=["small","medium","large"],P=["1","2","3","4","5","6","7","8","9","0"],G=["!","@","#","$","%","^","&","*","(",")"],Q=[["q","w","e","r","t","y","u","i","o","p"],["a","s","d","f","g","h","j","k","l"],["z","x","c","v","b","n","m"]],Z=()=>{const i={position:{x:Math.max(12,window.innerWidth-690),y:Math.max(90,window.innerHeight-330)},size:"medium"};try{const c=x.getItem($);if(!c)return i;const s=JSON.parse(c);return{position:s.position&&Number.isFinite(s.position.x)&&Number.isFinite(s.position.y)?s.position:i.position,size:s.size&&b.includes(s.size)?s.size:i.size}}catch{return i}},K=(i,c)=>{const s=c?.offsetWidth??650,r=c?.offsetHeight??270;return{x:Math.min(Math.max(8,i.x),Math.max(8,window.innerWidth-s-8)),y:Math.min(Math.max(8,i.y),Math.max(8,window.innerHeight-r-8))}};function se({activeInputRef:i,isVisible:c,onClose:s}){const[{position:r,size:l},w]=_(Z),[k,z]=_(!1),[g,S]=_(!1),h=E(null),u=E(null);f(()=>{x.setItem($,JSON.stringify({position:r,size:l}))},[r,l]),f(()=>{const e=()=>{w(n=>({...n,position:K(n.position,h.current)}))};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const v=()=>i.current&&document.contains(i.current)?i.current:document.activeElement instanceof HTMLInputElement?document.activeElement:null,d=e=>{const n=v();if(!n)return;const a=n.selectionStart??n.value.length,y=n.selectionEnd??n.value.length;n.setRangeText(e,a,y,"end"),n.dispatchEvent(new Event("input",{bubbles:!0})),n.focus()},M=()=>{const e=v();if(!e)return;const n=e.selectionStart??e.value.length,a=e.selectionEnd??e.value.length;n===a&&n===0||(e.setRangeText("",n===a?n-1:n,a,"end"),e.dispatchEvent(new Event("input",{bubbles:!0})),e.focus())},B=()=>{const e=v();if(!e){s();return}const n=e.form;n?n.requestSubmit():e.dispatchEvent(new KeyboardEvent("keydown",{key:"Enter",bubbles:!0})),s()},C=e=>{e.preventDefault()},p=N(e=>{if(!u.current)return;const n={x:e.clientX-u.current.x,y:e.clientY-u.current.y};w(a=>({...a,position:K(n,h.current)}))},[]),m=N(()=>{u.current=null,window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",m)},[p]),L=e=>{e.preventDefault(),u.current={x:e.clientX-r.x,y:e.clientY-r.y},window.addEventListener("mousemove",p),window.addEventListener("mouseup",m)};if(f(()=>()=>{window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",m)},[p,m]),!c)return null;const H=g?G:P,I=()=>{w(e=>{const n=b[(b.indexOf(e.size)+1)%b.length];return{...e,size:n}})};return D(o("div",{ref:h,className:`${t.keyboard} ${t[l]}`,style:{left:r.x,top:r.y},onMouseDown:C,"data-virtual-keyboard-root":!0,children:[o("div",{className:t.topBar,children:[o("div",{className:t.dragHandle,onMouseDown:L,"aria-label":"Move virtual keyboard",children:[o("span",{className:t.grip,"aria-hidden":"true"}),o("span",{children:"Virtual Keyboard"})]}),o("button",{type:"button",className:t.topButton,onClick:I,children:["Size: ",l[0].toUpperCase()+l.slice(1)]}),o("button",{type:"button",className:`${t.topButton} ${t.closeButton}`,onClick:s,children:"X"})]}),o("div",{className:t.keys,children:[o("div",{className:t.row,children:[H.map(e=>o("button",{type:"button",className:t.key,onClick:()=>d(e),children:e},e)),o("button",{type:"button",className:`${t.key} ${t.wideKey}`,onClick:M,"aria-label":"Backspace",children:"⟵"})]}),Q.map((e,n)=>o("div",{className:t.row,children:[e.map(a=>{const y=k?a.toUpperCase():a;return o("button",{type:"button",className:t.key,onClick:()=>d(y),children:y},a)}),n===1&&o("button",{type:"button",className:`${t.key} ${t.wideKey}`,onClick:B,children:"Enter"})]},e.join(""))),o("div",{className:t.row,children:[o("button",{type:"button",className:`${t.key} ${t.wideKey} ${g?t.activeKey:""}`,onClick:()=>S(e=>!e),children:"Ctrl"}),o("button",{type:"button",className:`${t.key} ${t.wideKey} ${k?t.activeKey:""}`,onClick:()=>z(e=>!e),children:"Shift"}),o("button",{type:"button",className:`${t.key} ${t.spaceKey}`,onClick:()=>d(" "),"aria-label":"Space",children:o("span",{className:t.spaceIcon})}),o("button",{type:"button",className:t.key,onClick:()=>d("."),children:"."}),o("button",{type:"button",className:t.key,onClick:()=>d("-"),children:"-"})]})]})]}),document.body)}export{se as default};
1
+ import{d as _,A as E,h as f,q as N,$ as D,u as o}from"./vendor-core-DfaOB3Rn.js";import{p as x}from"./index-hnIW0p5l.js";import"./vendor-query-BBT5_sHx.js";import"./vendor-icons-DrybRNxP.js";const O="_keyboard_b2w6l_1",R="_topBar_b2w6l_18",T="_dragHandle_b2w6l_27",q="_grip_b2w6l_38",U="_topButton_b2w6l_46",V="_key_b2w6l_1",W="_closeButton_b2w6l_77",X="_keys_b2w6l_83",Y="_row_b2w6l_90",j="_wideKey_b2w6l_106",A="_spaceKey_b2w6l_110",F="_spaceIcon_b2w6l_118",J="_activeKey_b2w6l_126",t={keyboard:O,topBar:R,dragHandle:T,grip:q,topButton:U,key:V,closeButton:W,keys:X,row:Y,wideKey:j,spaceKey:A,spaceIcon:F,activeKey:J},$="virtual-keyboard-state",b=["small","medium","large"],P=["1","2","3","4","5","6","7","8","9","0"],G=["!","@","#","$","%","^","&","*","(",")"],Q=[["q","w","e","r","t","y","u","i","o","p"],["a","s","d","f","g","h","j","k","l"],["z","x","c","v","b","n","m"]],Z=()=>{const i={position:{x:Math.max(12,window.innerWidth-690),y:Math.max(90,window.innerHeight-330)},size:"medium"};try{const c=x.getItem($);if(!c)return i;const s=JSON.parse(c);return{position:s.position&&Number.isFinite(s.position.x)&&Number.isFinite(s.position.y)?s.position:i.position,size:s.size&&b.includes(s.size)?s.size:i.size}}catch{return i}},K=(i,c)=>{const s=c?.offsetWidth??650,r=c?.offsetHeight??270;return{x:Math.min(Math.max(8,i.x),Math.max(8,window.innerWidth-s-8)),y:Math.min(Math.max(8,i.y),Math.max(8,window.innerHeight-r-8))}};function se({activeInputRef:i,isVisible:c,onClose:s}){const[{position:r,size:l},w]=_(Z),[k,z]=_(!1),[g,S]=_(!1),h=E(null),u=E(null);f(()=>{x.setItem($,JSON.stringify({position:r,size:l}))},[r,l]),f(()=>{const e=()=>{w(n=>({...n,position:K(n.position,h.current)}))};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const v=()=>i.current&&document.contains(i.current)?i.current:document.activeElement instanceof HTMLInputElement?document.activeElement:null,d=e=>{const n=v();if(!n)return;const a=n.selectionStart??n.value.length,y=n.selectionEnd??n.value.length;n.setRangeText(e,a,y,"end"),n.dispatchEvent(new Event("input",{bubbles:!0})),n.focus()},M=()=>{const e=v();if(!e)return;const n=e.selectionStart??e.value.length,a=e.selectionEnd??e.value.length;n===a&&n===0||(e.setRangeText("",n===a?n-1:n,a,"end"),e.dispatchEvent(new Event("input",{bubbles:!0})),e.focus())},B=()=>{const e=v();if(!e){s();return}const n=e.form;n?n.requestSubmit():e.dispatchEvent(new KeyboardEvent("keydown",{key:"Enter",bubbles:!0})),s()},C=e=>{e.preventDefault()},p=N(e=>{if(!u.current)return;const n={x:e.clientX-u.current.x,y:e.clientY-u.current.y};w(a=>({...a,position:K(n,h.current)}))},[]),m=N(()=>{u.current=null,window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",m)},[p]),L=e=>{e.preventDefault(),u.current={x:e.clientX-r.x,y:e.clientY-r.y},window.addEventListener("mousemove",p),window.addEventListener("mouseup",m)};if(f(()=>()=>{window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",m)},[p,m]),!c)return null;const H=g?G:P,I=()=>{w(e=>{const n=b[(b.indexOf(e.size)+1)%b.length];return{...e,size:n}})};return D(o("div",{ref:h,className:`${t.keyboard} ${t[l]}`,style:{left:r.x,top:r.y},onMouseDown:C,"data-virtual-keyboard-root":!0,children:[o("div",{className:t.topBar,children:[o("div",{className:t.dragHandle,onMouseDown:L,"aria-label":"Move virtual keyboard",children:[o("span",{className:t.grip,"aria-hidden":"true"}),o("span",{children:"Virtual Keyboard"})]}),o("button",{type:"button",className:t.topButton,onClick:I,children:["Size: ",l[0].toUpperCase()+l.slice(1)]}),o("button",{type:"button",className:`${t.topButton} ${t.closeButton}`,onClick:s,children:"X"})]}),o("div",{className:t.keys,children:[o("div",{className:t.row,children:[H.map(e=>o("button",{type:"button",className:t.key,onClick:()=>d(e),children:e},e)),o("button",{type:"button",className:`${t.key} ${t.wideKey}`,onClick:M,"aria-label":"Backspace",children:"⟵"})]}),Q.map((e,n)=>o("div",{className:t.row,children:[e.map(a=>{const y=k?a.toUpperCase():a;return o("button",{type:"button",className:t.key,onClick:()=>d(y),children:y},a)}),n===1&&o("button",{type:"button",className:`${t.key} ${t.wideKey}`,onClick:B,children:"Enter"})]},e.join(""))),o("div",{className:t.row,children:[o("button",{type:"button",className:`${t.key} ${t.wideKey} ${g?t.activeKey:""}`,onClick:()=>S(e=>!e),children:"Ctrl"}),o("button",{type:"button",className:`${t.key} ${t.wideKey} ${k?t.activeKey:""}`,onClick:()=>z(e=>!e),children:"Shift"}),o("button",{type:"button",className:`${t.key} ${t.spaceKey}`,onClick:()=>d(" "),"aria-label":"Space",children:o("span",{className:t.spaceIcon})}),o("button",{type:"button",className:t.key,onClick:()=>d("."),children:"."}),o("button",{type:"button",className:t.key,onClick:()=>d("-"),children:"-"})]})]})]}),document.body)}export{se as default};
@@ -1 +1 @@
1
- import{c as h,d as s,u as e}from"./vendor-core-DfaOB3Rn.js";import{a2 as d,B as m}from"./index-Nyp_7HqY.js";import{W as u,s as p,a as g}from"./WatchAlongPanel-BMq7R_pe.js";import"./vendor-query-BBT5_sHx.js";import"./vendor-icons-DrybRNxP.js";function b(){const o=d(),c=h(),[t,l]=s(c.hash.slice(1)),[n,a]=s("");return e("div",{style:{maxWidth:640,margin:"2rem auto",padding:"0 1rem"},children:[e("h1",{children:"Watch along"}),e("p",{children:"Watch with friends across the internet. The host chooses the episode, provider, and source, and controls playback. Your dango streams your own video."}),o.session&&e(u,{}),!o.session&&e("form",{className:p.panel,onSubmit:r=>{r.preventDefault();try{o.join(t),a("")}catch(i){a(i instanceof Error?i.message:"Could not join room")}},children:[e(g,{}),e("label",{htmlFor:"watch-invite",children:"Invite link or room code"}),e("input",{id:"watch-invite",value:t,onChange:r=>l(r.currentTarget.value),required:!0,autoComplete:"off"}),e("p",{children:"Joining shares your connection and playback readiness with the room service. Start a room from an episode using a direct HLS source."}),e(m,{type:"submit",disabled:!o.workerUrl,style:{marginTop:"1rem"},children:"Join room"}),!o.workerUrl&&e("p",{children:"Watch along is unavailable. The server needs a watch-along service URL."}),n&&e("p",{role:"alert",children:n})]})]})}export{b as default};
1
+ import{c as h,d as s,u as e}from"./vendor-core-DfaOB3Rn.js";import{a2 as d,B as m}from"./index-hnIW0p5l.js";import{W as u,s as p,a as g}from"./WatchAlongPanel-CerutuF6.js";import"./vendor-query-BBT5_sHx.js";import"./vendor-icons-DrybRNxP.js";function b(){const o=d(),c=h(),[t,l]=s(c.hash.slice(1)),[n,a]=s("");return e("div",{style:{maxWidth:640,margin:"2rem auto",padding:"0 1rem"},children:[e("h1",{children:"Watch along"}),e("p",{children:"Watch with friends across the internet. The host chooses the episode, provider, and source, and controls playback. Your dango streams your own video."}),o.session&&e(u,{}),!o.session&&e("form",{className:p.panel,onSubmit:r=>{r.preventDefault();try{o.join(t),a("")}catch(i){a(i instanceof Error?i.message:"Could not join room")}},children:[e(g,{}),e("label",{htmlFor:"watch-invite",children:"Invite link or room code"}),e("input",{id:"watch-invite",value:t,onChange:r=>l(r.currentTarget.value),required:!0,autoComplete:"off"}),e("p",{children:"Joining shares your connection and playback readiness with the room service. Start a room from an episode using a direct HLS source."}),e(m,{type:"submit",disabled:!o.workerUrl,style:{marginTop:"1rem"},children:"Join room"}),!o.workerUrl&&e("p",{children:"Watch along is unavailable. The server needs a watch-along service URL."}),n&&e("p",{role:"alert",children:n})]})]})}export{b as default};
@@ -1 +1 @@
1
- import{d as h,A as _,h as z,u as s,L as C}from"./vendor-core-DfaOB3Rn.js";import{a2 as g,B as r}from"./index-Nyp_7HqY.js";const N="_panel_ntzz0_1",b="_summary_ntzz0_10",k="_heading_ntzz0_20",x="_actions_ntzz0_21",T="_members_ntzz0_22",A="_name_ntzz0_29",o={panel:N,summary:b,heading:k,actions:x,members:T,name:A};function L(){const t=g();return s("label",{className:o.name,children:["Display name",s("input",{value:t.displayName,onChange:a=>t.setDisplayName(a.currentTarget.value),maxLength:32,placeholder:"Your name (optional)",autoComplete:"nickname"}),s("small",{children:"Remembered for this profile on this browser."})]})}function D({playback:t,onCreate:a,needsPlayback:l,onEnablePlayback:p}){const e=g(),[y,m]=h(!1),[d,i]=h(""),[v,f]=h(!1),c=_(null);z(()=>{c.current&&(e.session||l)&&(c.current.open=!0)},[e.session,l]);const u=e.session?`${e.workerUrl}/join#${e.session.id}.${e.session.guestToken}`:"";return s("details",{ref:c,className:o.panel,"aria-label":"Watch along",children:[s("summary",{className:o.summary,children:["Watch along",e.session?e.session.host?" · You are hosting":" · Following host":""]}),s("div",{className:o.heading,children:e.session?s("div",{className:o.actions,children:[s(r,{size:"sm",variant:"secondary",onClick:async()=>{f(!0);try{await navigator.clipboard.writeText(u),i("Invite copied")}catch{i("Copy the invite below")}},children:"Copy invite"}),s(r,{size:"sm",variant:"ghost",onClick:e.leave,children:e.session.host?"End room":"Leave room"})]}):s("div",{className:o.actions,children:[a&&s(r,{size:"sm",loading:y,disabled:!t||!e.workerUrl,onClick:async()=>{if(t){m(!0),i("");try{a(),await e.create({...t,playing:!1})}catch(n){i(n instanceof Error?n.message:"Could not create room")}finally{m(!1)}}},children:"Create room"}),s(C,{to:"/watch-along",children:"Join a room"})]})}),s(L,{}),!e.session&&s("p",{children:"Direct HLS only. Each viewer needs their own dango. Room controls use the shared watch-along service."}),e.session&&s("p",{children:[e.connected?e.room?.hostOnline?"Connected":"Host disconnected. Room closes after 60 seconds unless they reconnect":"Connecting…"," ","· Provider and source follow the host. Volume and subtitles stay yours."]}),e.room&&s("p",{children:[e.session?.host&&"End the room when you are finished watching. ","Rooms automatically close six hours after creation. This room expires at"," ",s("time",{dateTime:new Date(e.room.expiresAt).toISOString(),children:new Date(e.room.expiresAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),", even if playback is still active."]}),e.room&&s("ul",{className:o.members,children:e.room.members.map((n,w)=>s("li",{children:[n.name||(n.host?"Host":`Guest ${w+1}`),n.name&&n.host?" (host)":"",n.id===e.selfId?" (you)":"",": ",n.status]},n.id))}),l&&s(r,{size:"sm",onClick:p,children:"Enable playback"}),v&&e.session&&s("input",{"aria-label":"Room invite",readOnly:!0,value:u,onFocus:n=>n.currentTarget.select()}),(e.error||d)&&s("p",{role:"status",children:e.error||d})]})}export{D as W,L as a,o as s};
1
+ import{d as h,A as _,h as z,u as s,L as C}from"./vendor-core-DfaOB3Rn.js";import{a2 as g,B as r}from"./index-hnIW0p5l.js";const N="_panel_ntzz0_1",b="_summary_ntzz0_10",k="_heading_ntzz0_20",x="_actions_ntzz0_21",T="_members_ntzz0_22",A="_name_ntzz0_29",o={panel:N,summary:b,heading:k,actions:x,members:T,name:A};function L(){const t=g();return s("label",{className:o.name,children:["Display name",s("input",{value:t.displayName,onChange:a=>t.setDisplayName(a.currentTarget.value),maxLength:32,placeholder:"Your name (optional)",autoComplete:"nickname"}),s("small",{children:"Remembered for this profile on this browser."})]})}function D({playback:t,onCreate:a,needsPlayback:l,onEnablePlayback:p}){const e=g(),[y,m]=h(!1),[d,i]=h(""),[v,f]=h(!1),c=_(null);z(()=>{c.current&&(e.session||l)&&(c.current.open=!0)},[e.session,l]);const u=e.session?`${e.workerUrl}/join#${e.session.id}.${e.session.guestToken}`:"";return s("details",{ref:c,className:o.panel,"aria-label":"Watch along",children:[s("summary",{className:o.summary,children:["Watch along",e.session?e.session.host?" · You are hosting":" · Following host":""]}),s("div",{className:o.heading,children:e.session?s("div",{className:o.actions,children:[s(r,{size:"sm",variant:"secondary",onClick:async()=>{f(!0);try{await navigator.clipboard.writeText(u),i("Invite copied")}catch{i("Copy the invite below")}},children:"Copy invite"}),s(r,{size:"sm",variant:"ghost",onClick:e.leave,children:e.session.host?"End room":"Leave room"})]}):s("div",{className:o.actions,children:[a&&s(r,{size:"sm",loading:y,disabled:!t||!e.workerUrl,onClick:async()=>{if(t){m(!0),i("");try{a(),await e.create({...t,playing:!1})}catch(n){i(n instanceof Error?n.message:"Could not create room")}finally{m(!1)}}},children:"Create room"}),s(C,{to:"/watch-along",children:"Join a room"})]})}),s(L,{}),!e.session&&s("p",{children:"Direct HLS only. Each viewer needs their own dango. Room controls use the shared watch-along service."}),e.session&&s("p",{children:[e.connected?e.room?.hostOnline?"Connected":"Host disconnected. Room closes after 60 seconds unless they reconnect":"Connecting…"," ","· Provider and source follow the host. Volume and subtitles stay yours."]}),e.room&&s("p",{children:[e.session?.host&&"End the room when you are finished watching. ","Rooms automatically close six hours after creation. This room expires at"," ",s("time",{dateTime:new Date(e.room.expiresAt).toISOString(),children:new Date(e.room.expiresAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),", even if playback is still active."]}),e.room&&s("ul",{className:o.members,children:e.room.members.map((n,w)=>s("li",{children:[n.name||(n.host?"Host":`Guest ${w+1}`),n.name&&n.host?" (host)":"",n.id===e.selfId?" (you)":"",": ",n.status]},n.id))}),l&&s(r,{size:"sm",onClick:p,children:"Enable playback"}),v&&e.session&&s("input",{"aria-label":"Room invite",readOnly:!0,value:u,onFocus:n=>n.currentTarget.select()}),(e.error||d)&&s("p",{role:"status",children:e.error||d})]})}export{D as W,L as a,o as s};
@@ -1 +1 @@
1
- import{h as fe,o as He,a as Ze,p as Je,d as h,A as ye,T,u as t,S as Xe}from"./vendor-core-DfaOB3Rn.js";import{u as et,a as Se}from"./vendor-query-BBT5_sHx.js";import{l as tt,u as at,d as nt,C as st,D as _e,E as we,q as Ae,F as lt,t as rt,o as ct,G as it,H as ot,I as dt,J as ht,K as ut,B as W,L as se}from"./index-Nyp_7HqY.js";import{I as g}from"./vendor-icons-DrybRNxP.js";import{A as mt}from"./AnimeCard-D9nRVw2O.js";import{S as pt}from"./SkeletonGrid-BH33GvAW.js";import{E as gt}from"./ErrorMessage-DAxegITP.js";import{P as Le}from"./MediaCard-gCn0mrX1.js";import{s as n}from"./LibraryListPage.module-r6k9nyT9.js";import{A as vt}from"./ActiveFilterChips-olGfwxle.js";import"./useAnimeInfoData-Bj-9VSAf.js";import"./QueueOptionsButton-DhLD1z9e.js";import"./vendor-ui-3qrARCPr.js";import"./playbackCompletion-CxUTa1RU.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-UaIQxjyb.js";const ft=(d,v)=>{const l=new URLSearchParams(v);return l.delete("page"),l.sort(),`${d}|${l.toString()}`},yt=(d,v)=>{const l=new Set(d);return v.forEach(w=>l.add(w)),l},St=(d,v)=>{const l=new Set(d);return v.forEach(w=>l.delete(w)),l},_t="_sortSelect_cahhw_1",wt="_filterContainer_cahhw_30",At="_slideUpIn_cahhw_1",Lt="_searchBarWrapper_cahhw_44",Ct="_inputIconWrapper_cahhw_50",Nt="_searchIcon_cahhw_55",bt="_searchInput_cahhw_64",Bt="_searchActions_cahhw_84",kt="_searchBtn_cahhw_89",Rt="_filterToggleBtn_cahhw_94",Tt="_advancedFilters_cahhw_115",Wt="_show_cahhw_122",It="_filterDivider_cahhw_128",xt="_filterGrid_cahhw_134",$t="_filterItem_cahhw_141",Pt="_genreSection_cahhw_183",Ft="_genreLabel_cahhw_189",Gt="_genreContainer_cahhw_199",Mt="_genreButton_cahhw_205",Ot="_include_cahhw_222",Et="_exclude_cahhw_228",Dt="_filterActions_cahhw_235",zt="_applyBtn_cahhw_246",c={sortSelect:_t,filterContainer:wt,slideUpIn:At,searchBarWrapper:Lt,inputIconWrapper:Ct,searchIcon:Nt,searchInput:bt,searchActions:Bt,searchBtn:kt,filterToggleBtn:Rt,advancedFilters:Tt,show:Wt,filterDivider:It,filterGrid:xt,filterItem:$t,genreSection:Pt,genreLabel:Ft,genreContainer:Gt,genreButton:Mt,include:Ot,exclude:Et,filterActions:Dt,applyBtn:zt},Ne=["All","Continue Watching","Watching","Completed","On-Hold","Dropped","Planned"],Ce=Ne.slice(2),Ut=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"},{value:"TV_SHORT",label:"TV Short"},{value:"SPECIAL",label:"Special"},{value:"ADULT",label:"Adult (18+)"}],qt=[{value:"ALL",label:"All Seasons"},{value:"WINTER",label:"Winter"},{value:"SPRING",label:"Spring"},{value:"SUMMER",label:"Summer"},{value:"FALL",label:"Fall"}],ca=()=>{fe(()=>{document.title="Watchlist - dango"},[]);const{filter:d="All"}=He(),v=Ze(),[l,w]=Je(),Q=et(),le=tt(),[f,I]=h(parseInt(l.get("page")||"1")),[A,x]=h(l.get("query")||""),[L,V]=h(l.get("sortBy")||"last_added"),[C,$]=h(l.get("type")||"ALL"),[N,P]=h(l.get("season")||"ALL"),[b,F]=h(l.get("year")||"ALL"),[k,G]=h(()=>{const e={},a=l.get("genres")?.split(",").map(r=>r.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(r=>r.trim()).filter(Boolean)||[];return a.forEach(r=>r&&(e[r]="include")),s.forEach(r=>r&&(e[r]="exclude")),e}),[M,be]=h(()=>["type","season","year","genres","excludeGenres"].some(e=>l.has(e))),{lowEndMode:Be}=at(),{titlePreference:O}=nt(),{data:ke}=st(),re=ke?.genres||[],H=ye(null),[o,B]=h(null),[Z,E]=h(!1),[ce,D]=h(!1),[z,Re]=h(!1),[p,y]=h(new Set),J=ye(null),i=d==="Continue Watching",U=T(()=>{const e=new URLSearchParams(l);return e.delete("page"),e.set("titlePreference",O),e.toString()},[l,O]),{data:q,isLoading:Te,error:We}=_e(U,f,14),{data:Y,isLoading:Ie,error:xe}=we(d,U,f,14),{data:$e}=_e(U,f+1,14),{data:Pe}=we(d,U,f+1,14),X=T(()=>(i?q?.data:Y?.data)||[],[i,q,Y]),R=T(()=>(i?q?.total:Y?.total)||0,[i,q,Y]),j=i?Te:Ie,ie=i?We:xe,oe=i?$e:Pe;fe(()=>{x(l.get("query")||""),V(l.get("sortBy")||"last_added"),$(l.get("type")||"ALL"),P(l.get("season")||"ALL"),F(l.get("year")||"ALL");const e={},a=l.get("genres")?.split(",").map(u=>u.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(u=>u.trim()).filter(Boolean)||[];a.forEach(u=>u&&(e[u]="include")),s.forEach(u=>u&&(e[u]="exclude")),G(e),I(parseInt(l.get("page")||"1"));const r=ft(d,l);J.current!==null&&J.current!==r&&y(new Set),J.current=r},[l,d]);const Fe=Se({mutationFn:async({id:e,status:a})=>{await rt.watchlist.setStatus.mutate({id:e,status:a})},onSuccess:()=>{Q.invalidateQueries({queryKey:[Ae.watchlist]}),lt.success("Status updated")}}),Ge=Se(le.continueWatching.remove.mutationOptions({onSuccess:()=>{Q.invalidateQueries(le.continueWatching.pathFilter()),Q.invalidateQueries({queryKey:[Ae.continueWatching]})}})),ee=ct(),{data:de}=it("skipRemoveConfirmation"),Me=ot(),te=T(()=>{const e=a=>a[O]||a.name||"";return[...X].sort((a,s)=>L==="name_asc"?e(a).localeCompare(e(s)):L==="name_desc"?e(s).localeCompare(e(a)):0)},[X,L,O]),ae=new Date().getFullYear(),Oe=[{value:"ALL",label:"All Years"},...Array.from({length:ae-1980+1},(e,a)=>({value:String(ae-a),label:String(ae-a)}))],m=(e=L,a=1)=>{const s=new URLSearchParams;A.trim()&&s.set("query",A.trim()),e!=="last_added"&&s.set("sortBy",e),C!=="ALL"&&s.set("type",C),N!=="ALL"&&s.set("season",N),b!=="ALL"&&s.set("year",b);const r=Object.entries(k).filter(([,_])=>_==="include").map(([_])=>_),u=Object.entries(k).filter(([,_])=>_==="exclude").map(([_])=>_);r.length>0&&s.set("genres",r.join(",")),u.length>0&&s.set("excludeGenres",u.join(",")),a>1&&s.set("page",a.toString()),w(s),a!==f&&I(a)},he=e=>{if(m(L,e),H.current){const a=H.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:a,behavior:"smooth"})}},Ee=()=>{x(""),V("last_added"),$("ALL"),P("ALL"),F("ALL"),G({}),w(new URLSearchParams),I(1)},De=e=>{G(a=>{const s=a[e],r={...a};return s==="include"?r[e]="exclude":s==="exclude"?delete r[e]:r[e]="include",r})},ue=(e,a)=>{if(i){B({id:e,name:a});return}String(de)==="true"||String(de)==="1"?ee.mutate({id:e}):B({id:e,name:a})},ze=()=>{if(o){if(o.ids){i?(Ue.mutate({ids:o.ids}),Z&&pe.mutate({ids:o.ids})):pe.mutate({ids:o.ids}),y(new Set),B(null),E(!1),D(!1);return}i?(Ge.mutate({showId:o.id}),Z&&ee.mutate({id:o.id})):ee.mutate({id:o.id}),ce&&Me.mutate({key:"skipRemoveConfirmation",value:!0}),B(null),E(!1),D(!1)}},me=()=>{B(null),E(!1),D(!1)},pe=dt(),Ue=ht(),qe=ut(),Ye=()=>{Re(e=>{const a=!e;return a||y(new Set),a})},je=e=>{y(a=>{const s=new Set(a);return s.has(e)?s.delete(e):s.add(e),s})},K=te.map(e=>e.id),ne=K.length>0&&K.every(e=>p.has(e)),Ke=()=>{y(ne?e=>St(e,K):e=>yt(e,K))},Qe=e=>{p.size!==0&&(qe.mutate({ids:[...p],status:e}),y(new Set))},Ve=()=>{p.size!==0&&B({ids:[...p]})},ge=X.length>=14&&oe&&oe.data.length>0,ve=T(()=>Math.max(1,Math.ceil(R/14)),[R]),S=[];A.trim()&&S.push({key:"query",label:`Search: ${A}`,onRemove:()=>{x(""),m()}}),C!=="ALL"&&S.push({key:"type",label:`Type: ${C}`,onRemove:()=>{$("ALL"),m()}}),N!=="ALL"&&S.push({key:"season",label:`Season: ${N}`,onRemove:()=>{P("ALL"),m()}}),b!=="ALL"&&S.push({key:"year",label:`Year: ${b}`,onRemove:()=>{F("ALL"),m()}});for(const[e,a]of Object.entries(k))S.push({key:e,label:a==="include"?`+ ${e}`:`-${e}`,tone:a==="include"?"primary":"danger",onRemove:()=>{G(s=>{const r={...s};return delete r[e],r}),m()}});return t("div",{className:"page-container",children:[t("header",{className:n.header,children:[t("h2",{className:n.title,children:"My Watchlist"}),t("p",{className:n.subtitle,children:"Track and manage your anime collection"})]}),t("div",{className:n.controls,children:[t("div",{className:n.filters,children:Ne.map(e=>t("button",{className:`${n.filterBtn} ${d===e?n.active:""}`,onClick:()=>{const a=new URLSearchParams(l);a.delete("page"),v({pathname:`/watchlist/${e}`,search:a.toString()}),I(1)},children:e},e))}),t("div",{children:t("select",{className:c.sortSelect,value:L,onChange:e=>{const a=e.currentTarget.value;V(a),m(a,f)},children:[t("option",{value:"last_added",children:"Recently Added"}),t("option",{value:"name_asc",children:"Name (A-Z)"}),t("option",{value:"name_desc",children:"Name (Z-A)"})]})})]}),t("div",{className:c.filterContainer,children:[t("div",{className:c.searchBarWrapper,children:[t("div",{className:c.inputIconWrapper,children:[t(g,{name:"search",className:c.searchIcon}),t("input",{className:c.searchInput,placeholder:"Search your watchlist by title...",value:A,onInput:e=>x(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&m()})]}),t("div",{className:c.searchActions,children:[t(W,{onClick:()=>m(),className:c.searchBtn,children:"Search"}),t("button",{className:`${c.filterToggleBtn} ${M?n.active:""}`,onClick:()=>be(!M),children:[t(g,{name:"filter",size:14}),t("span",{children:"Filters"}),M?t(g,{name:"chevron-up",size:12}):t(g,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${c.advancedFilters} ${M?c.show:""}`,children:[t("div",{className:c.filterDivider}),t("div",{className:c.filterGrid,children:[t("div",{className:c.filterItem,children:[t("label",{children:"Type"}),t("select",{value:C,onChange:e=>$(e.currentTarget.value),children:Ut.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:c.filterItem,children:[t("label",{children:"Season"}),t("select",{value:N,onChange:e=>P(e.currentTarget.value),children:qt.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:c.filterItem,children:[t("label",{children:"Year"}),t("select",{value:b,onChange:e=>F(e.currentTarget.value),children:Oe.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),re.length>0&&t("div",{className:c.genreSection,children:[t("label",{className:c.genreLabel,children:"Genres"}),t("div",{className:c.genreContainer,children:re.map(e=>t("button",{className:`${c.genreButton} ${c[k[e]||""]}`,onClick:()=>De(e),children:e},e))})]}),t("div",{className:c.filterActions,children:[t(W,{variant:"secondary",onClick:Ee,children:"Reset All"}),t(W,{onClick:()=>m(),className:c.applyBtn,children:"Apply Filters"})]})]})]}),t("div",{className:n.resultsHeader,ref:H,children:[t("h3",{className:n.resultsTitle,children:[i?"Continue Watching":d,t("span",{className:n.itemCount,children:["(",R," items)"]})]}),t("div",{className:n.headerActions,children:[t("button",{className:`${n.manageBtn} ${z?n.active:""}`,onClick:Ye,children:[t(g,{name:"pencil-alt",size:13}),t("span",{children:"Bulk Manage"})]}),R>0&&t(Le,{page:f,totalPages:ve,canGoNext:ge,onChange:he,isLoading:j})]})]}),z&&t("div",{className:n.manageBar,children:[t("button",{className:n.selectAllBtn,onClick:Ke,children:[t("span",{className:`${n.selectAllBox} ${ne?n.selectAllBoxChecked:""}`,"aria-hidden":"true"}),t("span",{children:ne?"Clear Page":"Select All"})]}),t("span",{className:n.manageCount,children:[p.size," selected"]}),t("div",{className:n.manageSpacer}),!i&&t("select",{className:n.manageStatusSelect,value:"",onChange:e=>{e.currentTarget.value&&Qe(e.currentTarget.value)},disabled:p.size===0,title:"Set status for selected items",children:[t("option",{value:"",children:"Set status…"}),Ce.map(e=>t("option",{value:e,children:e},e))]}),t("button",{className:n.manageRemoveBtn,onClick:Ve,disabled:p.size===0,children:[t(g,{name:"trash",size:13}),t("span",{children:"Remove Selected"})]})]}),j?t(pt,{}):ie?t(gt,{message:ie.message}):t(Xe,{children:[S.length>0&&t(vt,{chips:S}),t("div",{className:`${n.grid} ${Be?n.lowEnd:""}`,children:te.map(e=>{const a=p.has(e.id);return t("div",{className:`${n.itemWrapper} ${a?n.selected:""}`,children:[z&&t("div",{className:n.selectOverlay,onClick:()=>je(e.id),title:a?"Deselect":"Select",children:t("span",{className:n.selectBadge,children:a?t(g,{name:"check",size:12}):null})}),t(mt,{anime:e,continueWatching:i,onRemove:()=>ue(e.id,e.name),layout:"vertical"}),!i&&!z&&t("div",{className:n.cardActions,children:[t("select",{className:n.statusSelect,value:e.status,onChange:s=>Fe.mutate({id:e.id,status:s.currentTarget.value}),children:Ce.map(s=>t("option",{value:s,children:s},s))}),t("button",{className:n.removeBtn,onClick:()=>ue(e.id,e.name),title:"Remove from Watchlist","aria-label":"Remove from Watchlist",children:t(g,{name:"trash",size:12})})]})]},e._id)})})]}),!j&&te.length===0&&t("div",{className:n.emptyState,children:[t("h3",{className:n.emptyTitle,children:"Your watchlist is looking a bit lonely"}),t("p",{className:n.emptyText,children:d!=="All"||A||C!=="ALL"||N!=="ALL"||b!=="ALL"||Object.keys(k).length>0?"No anime match these filters. Try adjusting them to see more titles.":"Let's find something to watch!"}),t("button",{className:n.emptyBtn,onClick:()=>v("/search"),children:[t(g,{name:"search",size:14}),t("span",{children:"Browse Anime"})]})]}),R>0&&t("div",{className:n.bottomPagination,children:t(Le,{page:f,totalPages:ve,canGoNext:ge,onChange:he,isLoading:j,variant:"labeled"})}),t(se,{isOpen:!!o,onClose:me,title:i?"Reset Progress":"Remove from Watchlist",children:[t(se.Body,{children:[t("p",{children:o?.ids&&o.ids.length>1?i?`Are you sure you want to remove watch progress for ${o.ids.length} items?`:`Are you sure you want to remove ${o.ids.length} items from your watchlist?`:i?`Are you sure you want to remove your watch progress for "${o?.name}"?`:`Are you sure you want to remove "${o?.name}" from your watchlist?`}),i&&t("label",{children:[t("input",{type:"checkbox",checked:Z,onChange:e=>E(e.currentTarget.checked)}),"Also remove from my watchlist"]}),!i&&!(o?.ids&&o.ids.length>1)&&t("label",{children:[t("input",{type:"checkbox",checked:ce,onChange:e=>D(e.currentTarget.checked)}),"Remember my choice"]})]}),t(se.Actions,{children:[t(W,{variant:"secondary",onClick:me,children:"No"}),t(W,{variant:"danger",onClick:ze,children:"Yes"})]})]})]})};export{ca as default};
1
+ import{h as fe,o as He,a as Ze,p as Je,d as h,A as ye,T,u as t,S as Xe}from"./vendor-core-DfaOB3Rn.js";import{u as et,a as Se}from"./vendor-query-BBT5_sHx.js";import{l as tt,u as at,d as nt,C as st,D as _e,E as we,q as Ae,F as lt,t as rt,o as ct,G as it,H as ot,I as dt,J as ht,K as ut,B as W,L as se}from"./index-hnIW0p5l.js";import{I as g}from"./vendor-icons-DrybRNxP.js";import{A as mt}from"./AnimeCard-Dl21Mnwa.js";import{S as pt}from"./SkeletonGrid-CPc8hqla.js";import{E as gt}from"./ErrorMessage-DAxegITP.js";import{P as Le}from"./MediaCard-BhYZUPLl.js";import{s as n}from"./LibraryListPage.module-r6k9nyT9.js";import{A as vt}from"./ActiveFilterChips-olGfwxle.js";import"./useAnimeInfoData-C-n9ZzJX.js";import"./QueueOptionsButton-C0U85ua3.js";import"./vendor-ui-3qrARCPr.js";import"./playbackCompletion-DCNDnWtX.js";import"./useIsMobile-Dvx1uJ82.js";import"./MatureConsentModal-Ixo33c5M.js";const ft=(d,v)=>{const l=new URLSearchParams(v);return l.delete("page"),l.sort(),`${d}|${l.toString()}`},yt=(d,v)=>{const l=new Set(d);return v.forEach(w=>l.add(w)),l},St=(d,v)=>{const l=new Set(d);return v.forEach(w=>l.delete(w)),l},_t="_sortSelect_cahhw_1",wt="_filterContainer_cahhw_30",At="_slideUpIn_cahhw_1",Lt="_searchBarWrapper_cahhw_44",Ct="_inputIconWrapper_cahhw_50",Nt="_searchIcon_cahhw_55",bt="_searchInput_cahhw_64",Bt="_searchActions_cahhw_84",kt="_searchBtn_cahhw_89",Rt="_filterToggleBtn_cahhw_94",Tt="_advancedFilters_cahhw_115",Wt="_show_cahhw_122",It="_filterDivider_cahhw_128",xt="_filterGrid_cahhw_134",$t="_filterItem_cahhw_141",Pt="_genreSection_cahhw_183",Ft="_genreLabel_cahhw_189",Gt="_genreContainer_cahhw_199",Mt="_genreButton_cahhw_205",Ot="_include_cahhw_222",Et="_exclude_cahhw_228",Dt="_filterActions_cahhw_235",zt="_applyBtn_cahhw_246",c={sortSelect:_t,filterContainer:wt,slideUpIn:At,searchBarWrapper:Lt,inputIconWrapper:Ct,searchIcon:Nt,searchInput:bt,searchActions:Bt,searchBtn:kt,filterToggleBtn:Rt,advancedFilters:Tt,show:Wt,filterDivider:It,filterGrid:xt,filterItem:$t,genreSection:Pt,genreLabel:Ft,genreContainer:Gt,genreButton:Mt,include:Ot,exclude:Et,filterActions:Dt,applyBtn:zt},Ne=["All","Continue Watching","Watching","Completed","On-Hold","Dropped","Planned"],Ce=Ne.slice(2),Ut=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"},{value:"TV_SHORT",label:"TV Short"},{value:"SPECIAL",label:"Special"},{value:"ADULT",label:"Adult (18+)"}],qt=[{value:"ALL",label:"All Seasons"},{value:"WINTER",label:"Winter"},{value:"SPRING",label:"Spring"},{value:"SUMMER",label:"Summer"},{value:"FALL",label:"Fall"}],ca=()=>{fe(()=>{document.title="Watchlist - dango"},[]);const{filter:d="All"}=He(),v=Ze(),[l,w]=Je(),Q=et(),le=tt(),[f,I]=h(parseInt(l.get("page")||"1")),[A,x]=h(l.get("query")||""),[L,V]=h(l.get("sortBy")||"last_added"),[C,$]=h(l.get("type")||"ALL"),[N,P]=h(l.get("season")||"ALL"),[b,F]=h(l.get("year")||"ALL"),[k,G]=h(()=>{const e={},a=l.get("genres")?.split(",").map(r=>r.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(r=>r.trim()).filter(Boolean)||[];return a.forEach(r=>r&&(e[r]="include")),s.forEach(r=>r&&(e[r]="exclude")),e}),[M,be]=h(()=>["type","season","year","genres","excludeGenres"].some(e=>l.has(e))),{lowEndMode:Be}=at(),{titlePreference:O}=nt(),{data:ke}=st(),re=ke?.genres||[],H=ye(null),[o,B]=h(null),[Z,E]=h(!1),[ce,D]=h(!1),[z,Re]=h(!1),[p,y]=h(new Set),J=ye(null),i=d==="Continue Watching",U=T(()=>{const e=new URLSearchParams(l);return e.delete("page"),e.set("titlePreference",O),e.toString()},[l,O]),{data:q,isLoading:Te,error:We}=_e(U,f,14),{data:Y,isLoading:Ie,error:xe}=we(d,U,f,14),{data:$e}=_e(U,f+1,14),{data:Pe}=we(d,U,f+1,14),X=T(()=>(i?q?.data:Y?.data)||[],[i,q,Y]),R=T(()=>(i?q?.total:Y?.total)||0,[i,q,Y]),j=i?Te:Ie,ie=i?We:xe,oe=i?$e:Pe;fe(()=>{x(l.get("query")||""),V(l.get("sortBy")||"last_added"),$(l.get("type")||"ALL"),P(l.get("season")||"ALL"),F(l.get("year")||"ALL");const e={},a=l.get("genres")?.split(",").map(u=>u.trim()).filter(Boolean)||[],s=l.get("excludeGenres")?.split(",").map(u=>u.trim()).filter(Boolean)||[];a.forEach(u=>u&&(e[u]="include")),s.forEach(u=>u&&(e[u]="exclude")),G(e),I(parseInt(l.get("page")||"1"));const r=ft(d,l);J.current!==null&&J.current!==r&&y(new Set),J.current=r},[l,d]);const Fe=Se({mutationFn:async({id:e,status:a})=>{await rt.watchlist.setStatus.mutate({id:e,status:a})},onSuccess:()=>{Q.invalidateQueries({queryKey:[Ae.watchlist]}),lt.success("Status updated")}}),Ge=Se(le.continueWatching.remove.mutationOptions({onSuccess:()=>{Q.invalidateQueries(le.continueWatching.pathFilter()),Q.invalidateQueries({queryKey:[Ae.continueWatching]})}})),ee=ct(),{data:de}=it("skipRemoveConfirmation"),Me=ot(),te=T(()=>{const e=a=>a[O]||a.name||"";return[...X].sort((a,s)=>L==="name_asc"?e(a).localeCompare(e(s)):L==="name_desc"?e(s).localeCompare(e(a)):0)},[X,L,O]),ae=new Date().getFullYear(),Oe=[{value:"ALL",label:"All Years"},...Array.from({length:ae-1980+1},(e,a)=>({value:String(ae-a),label:String(ae-a)}))],m=(e=L,a=1)=>{const s=new URLSearchParams;A.trim()&&s.set("query",A.trim()),e!=="last_added"&&s.set("sortBy",e),C!=="ALL"&&s.set("type",C),N!=="ALL"&&s.set("season",N),b!=="ALL"&&s.set("year",b);const r=Object.entries(k).filter(([,_])=>_==="include").map(([_])=>_),u=Object.entries(k).filter(([,_])=>_==="exclude").map(([_])=>_);r.length>0&&s.set("genres",r.join(",")),u.length>0&&s.set("excludeGenres",u.join(",")),a>1&&s.set("page",a.toString()),w(s),a!==f&&I(a)},he=e=>{if(m(L,e),H.current){const a=H.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:a,behavior:"smooth"})}},Ee=()=>{x(""),V("last_added"),$("ALL"),P("ALL"),F("ALL"),G({}),w(new URLSearchParams),I(1)},De=e=>{G(a=>{const s=a[e],r={...a};return s==="include"?r[e]="exclude":s==="exclude"?delete r[e]:r[e]="include",r})},ue=(e,a)=>{if(i){B({id:e,name:a});return}String(de)==="true"||String(de)==="1"?ee.mutate({id:e}):B({id:e,name:a})},ze=()=>{if(o){if(o.ids){i?(Ue.mutate({ids:o.ids}),Z&&pe.mutate({ids:o.ids})):pe.mutate({ids:o.ids}),y(new Set),B(null),E(!1),D(!1);return}i?(Ge.mutate({showId:o.id}),Z&&ee.mutate({id:o.id})):ee.mutate({id:o.id}),ce&&Me.mutate({key:"skipRemoveConfirmation",value:!0}),B(null),E(!1),D(!1)}},me=()=>{B(null),E(!1),D(!1)},pe=dt(),Ue=ht(),qe=ut(),Ye=()=>{Re(e=>{const a=!e;return a||y(new Set),a})},je=e=>{y(a=>{const s=new Set(a);return s.has(e)?s.delete(e):s.add(e),s})},K=te.map(e=>e.id),ne=K.length>0&&K.every(e=>p.has(e)),Ke=()=>{y(ne?e=>St(e,K):e=>yt(e,K))},Qe=e=>{p.size!==0&&(qe.mutate({ids:[...p],status:e}),y(new Set))},Ve=()=>{p.size!==0&&B({ids:[...p]})},ge=X.length>=14&&oe&&oe.data.length>0,ve=T(()=>Math.max(1,Math.ceil(R/14)),[R]),S=[];A.trim()&&S.push({key:"query",label:`Search: ${A}`,onRemove:()=>{x(""),m()}}),C!=="ALL"&&S.push({key:"type",label:`Type: ${C}`,onRemove:()=>{$("ALL"),m()}}),N!=="ALL"&&S.push({key:"season",label:`Season: ${N}`,onRemove:()=>{P("ALL"),m()}}),b!=="ALL"&&S.push({key:"year",label:`Year: ${b}`,onRemove:()=>{F("ALL"),m()}});for(const[e,a]of Object.entries(k))S.push({key:e,label:a==="include"?`+ ${e}`:`-${e}`,tone:a==="include"?"primary":"danger",onRemove:()=>{G(s=>{const r={...s};return delete r[e],r}),m()}});return t("div",{className:"page-container",children:[t("header",{className:n.header,children:[t("h2",{className:n.title,children:"My Watchlist"}),t("p",{className:n.subtitle,children:"Track and manage your anime collection"})]}),t("div",{className:n.controls,children:[t("div",{className:n.filters,children:Ne.map(e=>t("button",{className:`${n.filterBtn} ${d===e?n.active:""}`,onClick:()=>{const a=new URLSearchParams(l);a.delete("page"),v({pathname:`/watchlist/${e}`,search:a.toString()}),I(1)},children:e},e))}),t("div",{children:t("select",{className:c.sortSelect,value:L,onChange:e=>{const a=e.currentTarget.value;V(a),m(a,f)},children:[t("option",{value:"last_added",children:"Recently Added"}),t("option",{value:"name_asc",children:"Name (A-Z)"}),t("option",{value:"name_desc",children:"Name (Z-A)"})]})})]}),t("div",{className:c.filterContainer,children:[t("div",{className:c.searchBarWrapper,children:[t("div",{className:c.inputIconWrapper,children:[t(g,{name:"search",className:c.searchIcon}),t("input",{className:c.searchInput,placeholder:"Search your watchlist by title...",value:A,onInput:e=>x(e.currentTarget.value),onKeyDown:e=>e.key==="Enter"&&m()})]}),t("div",{className:c.searchActions,children:[t(W,{onClick:()=>m(),className:c.searchBtn,children:"Search"}),t("button",{className:`${c.filterToggleBtn} ${M?n.active:""}`,onClick:()=>be(!M),children:[t(g,{name:"filter",size:14}),t("span",{children:"Filters"}),M?t(g,{name:"chevron-up",size:12}):t(g,{name:"chevron-down",size:12})]})]})]}),t("div",{className:`${c.advancedFilters} ${M?c.show:""}`,children:[t("div",{className:c.filterDivider}),t("div",{className:c.filterGrid,children:[t("div",{className:c.filterItem,children:[t("label",{children:"Type"}),t("select",{value:C,onChange:e=>$(e.currentTarget.value),children:Ut.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:c.filterItem,children:[t("label",{children:"Season"}),t("select",{value:N,onChange:e=>P(e.currentTarget.value),children:qt.map(e=>t("option",{value:e.value,children:e.label},e.value))})]}),t("div",{className:c.filterItem,children:[t("label",{children:"Year"}),t("select",{value:b,onChange:e=>F(e.currentTarget.value),children:Oe.map(e=>t("option",{value:e.value,children:e.label},e.value))})]})]}),re.length>0&&t("div",{className:c.genreSection,children:[t("label",{className:c.genreLabel,children:"Genres"}),t("div",{className:c.genreContainer,children:re.map(e=>t("button",{className:`${c.genreButton} ${c[k[e]||""]}`,onClick:()=>De(e),children:e},e))})]}),t("div",{className:c.filterActions,children:[t(W,{variant:"secondary",onClick:Ee,children:"Reset All"}),t(W,{onClick:()=>m(),className:c.applyBtn,children:"Apply Filters"})]})]})]}),t("div",{className:n.resultsHeader,ref:H,children:[t("h3",{className:n.resultsTitle,children:[i?"Continue Watching":d,t("span",{className:n.itemCount,children:["(",R," items)"]})]}),t("div",{className:n.headerActions,children:[t("button",{className:`${n.manageBtn} ${z?n.active:""}`,onClick:Ye,children:[t(g,{name:"pencil-alt",size:13}),t("span",{children:"Bulk Manage"})]}),R>0&&t(Le,{page:f,totalPages:ve,canGoNext:ge,onChange:he,isLoading:j})]})]}),z&&t("div",{className:n.manageBar,children:[t("button",{className:n.selectAllBtn,onClick:Ke,children:[t("span",{className:`${n.selectAllBox} ${ne?n.selectAllBoxChecked:""}`,"aria-hidden":"true"}),t("span",{children:ne?"Clear Page":"Select All"})]}),t("span",{className:n.manageCount,children:[p.size," selected"]}),t("div",{className:n.manageSpacer}),!i&&t("select",{className:n.manageStatusSelect,value:"",onChange:e=>{e.currentTarget.value&&Qe(e.currentTarget.value)},disabled:p.size===0,title:"Set status for selected items",children:[t("option",{value:"",children:"Set status…"}),Ce.map(e=>t("option",{value:e,children:e},e))]}),t("button",{className:n.manageRemoveBtn,onClick:Ve,disabled:p.size===0,children:[t(g,{name:"trash",size:13}),t("span",{children:"Remove Selected"})]})]}),j?t(pt,{}):ie?t(gt,{message:ie.message}):t(Xe,{children:[S.length>0&&t(vt,{chips:S}),t("div",{className:`${n.grid} ${Be?n.lowEnd:""}`,children:te.map(e=>{const a=p.has(e.id);return t("div",{className:`${n.itemWrapper} ${a?n.selected:""}`,children:[z&&t("div",{className:n.selectOverlay,onClick:()=>je(e.id),title:a?"Deselect":"Select",children:t("span",{className:n.selectBadge,children:a?t(g,{name:"check",size:12}):null})}),t(mt,{anime:e,continueWatching:i,onRemove:()=>ue(e.id,e.name),layout:"vertical"}),!i&&!z&&t("div",{className:n.cardActions,children:[t("select",{className:n.statusSelect,value:e.status,onChange:s=>Fe.mutate({id:e.id,status:s.currentTarget.value}),children:Ce.map(s=>t("option",{value:s,children:s},s))}),t("button",{className:n.removeBtn,onClick:()=>ue(e.id,e.name),title:"Remove from Watchlist","aria-label":"Remove from Watchlist",children:t(g,{name:"trash",size:12})})]})]},e._id)})})]}),!j&&te.length===0&&t("div",{className:n.emptyState,children:[t("h3",{className:n.emptyTitle,children:"Your watchlist is looking a bit lonely"}),t("p",{className:n.emptyText,children:d!=="All"||A||C!=="ALL"||N!=="ALL"||b!=="ALL"||Object.keys(k).length>0?"No anime match these filters. Try adjusting them to see more titles.":"Let's find something to watch!"}),t("button",{className:n.emptyBtn,onClick:()=>v("/search"),children:[t(g,{name:"search",size:14}),t("span",{children:"Browse Anime"})]})]}),R>0&&t("div",{className:n.bottomPagination,children:t(Le,{page:f,totalPages:ve,canGoNext:ge,onChange:he,isLoading:j,variant:"labeled"})}),t(se,{isOpen:!!o,onClose:me,title:i?"Reset Progress":"Remove from Watchlist",children:[t(se.Body,{children:[t("p",{children:o?.ids&&o.ids.length>1?i?`Are you sure you want to remove watch progress for ${o.ids.length} items?`:`Are you sure you want to remove ${o.ids.length} items from your watchlist?`:i?`Are you sure you want to remove your watch progress for "${o?.name}"?`:`Are you sure you want to remove "${o?.name}" from your watchlist?`}),i&&t("label",{children:[t("input",{type:"checkbox",checked:Z,onChange:e=>E(e.currentTarget.checked)}),"Also remove from my watchlist"]}),!i&&!(o?.ids&&o.ids.length>1)&&t("label",{children:[t("input",{type:"checkbox",checked:ce,onChange:e=>D(e.currentTarget.checked)}),"Remember my choice"]})]}),t(se.Actions,{children:[t(W,{variant:"secondary",onClick:me,children:"No"}),t(W,{variant:"danger",onClick:ze,children:"Yes"})]})]})]})};export{ca as default};
@@ -0,0 +1 @@
1
+ ._container_s4ah4_1{position:relative;display:flex;align-items:center}._bellBtn_s4ah4_7{background:var(--header-btn-bg, rgba(0, 0, 0, .15));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;color:var(--text-primary);font-size:1.25rem;cursor:pointer;padding:var(--space-2);display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast),background var(--transition-fast);position:relative;width:50px;height:50px;border-radius:50%}._bellBtn_s4ah4_7:hover{background:var(--header-btn-bg-hover, rgba(0, 0, 0, .25));border-color:#ffffff59;transform:scale(1.05)}._bellBtn_s4ah4_7:focus-visible{outline:none;box-shadow:var(--shadow-focus)}@media(max-width:848px){._bellBtn_s4ah4_7{width:36px;height:36px;font-size:1.05rem;padding:var(--space-1)}}@media(max-width:480px){._bellBtn_s4ah4_7{width:36px;height:36px;font-size:.95rem}}._badge_s4ah4_56{position:absolute;top:6px;right:6px;background-color:var(--color-danger);color:#fff;font-size:.62rem;font-weight:700;min-width:18px;height:18px;padding:0 4px;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;border:none;pointer-events:none;animation:_bounce_s4ah4_1 .5s ease-out;line-height:1}@keyframes _bounce_s4ah4_1{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}._dropdown_s4ah4_96{position:absolute;top:calc(100% + var(--space-2));right:0;width:320px;max-height:480px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-secondary);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);z-index:var(--z-header);overflow:hidden;display:flex;flex-direction:column;animation:_slideIn_s4ah4_1 .3s ease}@keyframes _slideIn_s4ah4_1{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}._dropdownHeader_s4ah4_127{padding:var(--space-4);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-primary)}._dropdownHeader_s4ah4_127 h4{margin:0;font-size:1rem;color:var(--text-primary)}._clearAllBtn_s4ah4_141{background:none;border:1px solid var(--border-secondary);color:var(--accent-light);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);transition:all var(--transition-fast)}._clearAllBtn_s4ah4_141:hover{background:var(--accent-subtle);border-color:var(--border-accent);color:var(--accent-lighter)}._discoveryStatusRow_s4ah4_159{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:.72rem;color:var(--text-muted);background:#ffffff08;border-bottom:1px solid var(--border-primary)}._statusDot_s4ah4_170{width:8px;height:8px;border-radius:50%;flex-shrink:0}._statusDotRunning_s4ah4_177{background:var(--accent);animation:_statusPulse_s4ah4_1 1.2s ease-in-out infinite}._statusDotOk_s4ah4_182{background:var(--color-success)}._statusDotInfo_s4ah4_186{background:var(--color-info)}._statusDotError_s4ah4_190{background:var(--color-danger)}._statusDotIdle_s4ah4_194{background:var(--text-muted)}@keyframes _statusPulse_s4ah4_1{0%,to{opacity:1}50%{opacity:.35}}._list_s4ah4_208{overflow-y:auto;flex:1}._list_s4ah4_208::-webkit-scrollbar{width:4px}._list_s4ah4_208::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:2px}._item_s4ah4_222{display:flex;align-items:center;padding:var(--space-3) var(--space-4);gap:var(--space-3);text-decoration:none;transition:background var(--transition-fast);border-bottom:1px solid var(--border-primary);position:relative}._item_s4ah4_222:hover{background:#ffffff0d}._thumbnail_s4ah4_237{width:48px;height:64px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;box-shadow:0 2px 8px #0000004d}._itemInfo_s4ah4_246{flex:1;min-width:0}._itemTitle_s4ah4_251{display:block;font-size:.85rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:var(--space-1)}._itemMeta_s4ah4_262{display:inline-block;font-size:.7rem;background:var(--accent);color:var(--accent-text);padding:1px 6px;border-radius:var(--radius-sm);font-weight:600}._systemItemMeta_s4ah4_272{display:inline-block;font-size:.7rem;background:#ffffff1a;color:var(--text-secondary);padding:1px 6px;border-radius:var(--radius-sm);font-weight:500;border:none;cursor:pointer;transition:background var(--transition-fast)}._systemItemMeta_s4ah4_272:hover{background:#ffffff2e}._removeItem_s4ah4_289{background:none;border:none;color:var(--text-muted);font-size:var(--font-size-xs);cursor:pointer;padding:var(--space-2);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast)}._item_s4ah4_222:hover ._removeItem_s4ah4_289{opacity:1}@media(hover:none),(pointer:coarse){._removeItem_s4ah4_289{opacity:1}}._removeItem_s4ah4_289:hover{color:var(--color-danger)}._queueItem_s4ah4_319:hover{color:var(--color-success)}._emptyState_s4ah4_323{padding:var(--space-10) var(--space-4);text-align:center;color:var(--text-muted);font-size:.9rem}@media(max-width:768px){._dropdown_s4ah4_96{position:fixed;top:var(--header-height, 60px);left:0;right:0;width:100%;max-height:calc(100vh - var(--header-height, 60px));border-radius:0 0 var(--radius-md) var(--radius-md)}._bellBtn_s4ah4_7{width:36px;height:36px;font-size:1rem}._removeItem_s4ah4_289{padding:var(--space-2);min-width:36px;min-height:36px}._badge_s4ah4_56{top:5px;right:6px;font-size:.58rem;min-width:16px;height:16px;padding:0 3px}}@media(max-width:480px){._bellBtn_s4ah4_7{width:38px;height:38px;font-size:1.1rem}}._notificationDivider_s4ah4_371{height:1px;flex-shrink:0;margin:var(--space-2) 0;background:var(--border-primary)}.skeleton{position:relative;overflow:hidden;background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}.skeleton:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#ffffff0d 20%,#ffffff1f 60%,#fff0);animation:shimmer 1.8s infinite ease-in-out;content:""}.skeleton-text{border-radius:var(--radius-sm);height:1em}.skeleton-circular{border-radius:50%}.skeleton-rectangular{border-radius:var(--radius-md)}.skeleton-card{display:flex;flex-direction:column;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);overflow:hidden}@keyframes shimmer{to{transform:translate(100%)}}._logo_t3il2_1{height:var(--logo-height, 75px);width:auto;display:block;overflow:visible}._skewer_t3il2_8{fill:none;stroke:#d9c6a5;stroke-width:1.1;stroke-linecap:round}._gaze_t3il2_15{transform:translate(calc(var(--dango-gaze-x, 0) * 1.1px),calc(var(--dango-gaze-y, 0) * .8px));transition:transform var(--gaze-dur, .15s) ease-out}._face_t3il2_20{opacity:0;transition:opacity .18s ease}[data-dango-face=normal] ._faceNormal_t3il2_25,[data-dango-face=pet] ._facePet_t3il2_26,[data-dango-face=squint] ._faceSquint_t3il2_27,[data-dango-face=sleep] ._faceSleep_t3il2_28{opacity:1}[data-dango-hover] ._gaze_t3il2_15{filter:drop-shadow(0 0 .5px var(--accent))}._line_t3il2_36{fill:none;stroke:#140f15;stroke-width:.5;stroke-linecap:round;stroke-linejoin:round}._sway_t3il2_44{animation:_dango-sway_t3il2_1 7.4s ease-in-out infinite}@keyframes _dango-sway_t3il2_1{0%,to{transform:translate(0)}50%{transform:translateY(.5px)}}._weight_t3il2_58{animation:_dango-weight_t3il2_1 5.6s ease-in-out infinite}@keyframes _dango-weight_t3il2_1{0%,to{transform:translate(0)}45%,65%{transform:translate(.2px,.8px)}}._shift_t3il2_73{animation:_dango-shift_t3il2_1 10.5s ease-in-out infinite}@keyframes _dango-shift_t3il2_1{0%,to{transform:translate(.3px,.6px)}50%{transform:translate(-.3px,.3px)}}._rock_t3il2_87{animation:_dango-rock_t3il2_1 7.9s ease-in-out infinite}@keyframes _dango-rock_t3il2_1{0%,72%,to{transform:translate(0)}80%{transform:translate(-.35px,.5px)}88%{transform:translate(.15px,.1px)}}._glance_t3il2_105{animation:_dango-glance_t3il2_1 11s ease-in-out infinite}@keyframes _dango-glance_t3il2_1{0%,30%,to{transform:translate(0)}40%,50%{transform:translate(-1.6px,-.45px)}62%{transform:translate(0)}}._blink_t3il2_124{transform-box:fill-box;transform-origin:center}._blinkDouble_t3il2_129{animation:_dango-blink-double_t3il2_1 4.4s infinite}@keyframes _dango-blink-double_t3il2_1{0%,86%,to{transform:scaleY(1)}89%,90.5%{transform:scaleY(.08)}93%,94.5%{transform:scaleY(.08)}97%{transform:scaleY(1)}}._blinkSlow_t3il2_153{animation:_dango-blink-slow_t3il2_1 9.5s infinite}@keyframes _dango-blink-slow_t3il2_1{0%,82%,to{transform:scaleY(1)}88%{transform:scaleY(.14)}95%{transform:scaleY(1)}}[data-dango-nudge=""] ._bump_t3il2_172{animation:_dango-nudge_t3il2_1 .52s ease-out}@keyframes _dango-nudge_t3il2_1{0%,to{transform:translate(0)}25%{transform:translate(.5px)}60%{transform:translate(-.35px)}}[data-dango-cheer=""] ._heart_t3il2_189{animation:_dango-heart_t3il2_1 1.2s ease-out infinite}._heart_t3il2_189{opacity:0;font-size:4.6px;text-anchor:middle;transform-box:fill-box;transform-origin:center}@keyframes _dango-heart_t3il2_1{0%{opacity:0;transform:translate(0) scale(.35)}22%{opacity:1}to{opacity:0;transform:translate(var(--drift, 0),-6.5px) scale(1.05)}}@media(prefers-reduced-motion:reduce){._sway_t3il2_44,._weight_t3il2_58,._shift_t3il2_73,._rock_t3il2_87,._glance_t3il2_105,._blinkDouble_t3il2_129,._blinkSlow_t3il2_153,[data-dango-nudge=""] ._bump_t3il2_172,[data-dango-cheer=""] ._heart_t3il2_189{animation:none}}._header_ax9ih_1{height:var(--header-height);--logo-height: 42px;background:transparent;border-bottom:1px solid transparent;position:fixed;top:var(--vv-top, 0px);left:0;right:0;z-index:var(--z-header);display:flex;align-items:center;justify-content:center;transition:transform var(--transition-slow),background-color var(--transition-base),border-color var(--transition-base),box-shadow var(--transition-base)}._header_ax9ih_1._hidden_ax9ih_21{transform:translateY(-100%)}._header_ax9ih_1._scrolled_ax9ih_25{background-color:var(--bg-primary);border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 8px 32px #00000073;--header-btn-bg: rgba(255, 255, 255, .08);--header-btn-bg-hover: rgba(255, 255, 255, .16)}._logo_ax9ih_33{display:flex;align-items:center;justify-content:center;padding:4px;border-radius:var(--radius-md);transition:opacity var(--transition-base)}._logo_ax9ih_33:hover{opacity:.8}._headerInner_ax9ih_46{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-8);display:flex;align-items:center;justify-content:space-between}._leftSection_ax9ih_56{display:flex;align-items:center;gap:var(--space-2)}._desktopNav_ax9ih_62{display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-6)}._navLink_ax9ih_69{color:var(--text-secondary);font-weight:500;font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-fast);position:relative}._navLink_ax9ih_69:hover{color:var(--text-primary);background:#ffffff0f}._navLinkActive_ax9ih_85{color:#fff;font-weight:600;background:#ffffff1a}._navLinkActive_ax9ih_85:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translate(-50%);width:16px;height:2px;background:var(--accent);border-radius:var(--radius-full);box-shadow:0 0 8px var(--accent-glow)}._rightSection_ax9ih_104{display:flex;align-items:center;gap:var(--space-3)}._searchWrapper_ax9ih_110{display:flex;align-items:center;gap:8px}._searchInput_ax9ih_116{width:0;opacity:0;padding:0;border:none;background:transparent;color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;height:42px;transition:all var(--transition-base);pointer-events:none;outline:none}._searchInput_ax9ih_116::placeholder{color:#ffffffb3}._searchWrapper_ax9ih_110:focus-within ._searchInput_ax9ih_116{width:200px;opacity:1;padding:0 var(--space-3);pointer-events:auto;background:#00000059;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius-full);color:#fff}._searchButton_ax9ih_146{background:var(--header-btn-bg, rgba(0, 0, 0, .15));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;color:var(--text-primary);padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;width:50px;height:50px;border-radius:50%;transition:all var(--transition-base);flex-shrink:0}._searchButton_ax9ih_146:hover{background:var(--header-btn-bg-hover, rgba(0, 0, 0, .25));border-color:#ffffff59}._searchIcon_ax9ih_170{font-size:1rem;color:#fff;transition:all var(--transition-base)}._searchButton_ax9ih_146:hover ._searchIcon_ax9ih_170{color:var(--accent)}._profileBtn_ax9ih_180{height:50px;border-radius:var(--radius-full);gap:var(--space-2);padding-right:var(--space-3);text-decoration:none;overflow:hidden;border:none;cursor:pointer;transition:all var(--transition-base);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--header-btn-bg, rgba(0, 0, 0, .15));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text-primary)}._profileBtn_ax9ih_180:hover{border-color:#ffffff59;transform:translateY(-2px);background:var(--header-btn-bg-hover, rgba(0, 0, 0, .25))}._profileBtn_ax9ih_180:active{transform:scale(.95)}._profileBtn_ax9ih_180 svg{color:var(--text-primary);font-size:1.1rem}._profileAvatar_ax9ih_215{width:50px;height:50px;display:flex;flex-shrink:0}._profileName_ax9ih_222{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-sm);font-weight:500}._hamburgerBtn_ax9ih_231{background:none;border:none;color:var(--text-primary);font-size:1.25rem;padding:var(--space-2);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);height:40px;width:40px;flex-shrink:0}._hamburgerBtn_ax9ih_231:hover{background:#ffffff0f}._hamburgerBtn_ax9ih_231:active{transform:scale(.95)}._mobileSearchBar_ax9ih_258{display:none}@media(max-width:1024px){._searchInput_ax9ih_116{display:none}._searchWrapper_ax9ih_110:focus-within ._searchInput_ax9ih_116{display:none}._mobileSearchBar_ax9ih_258{display:block;position:absolute;top:100%;left:0;right:0;background:#0c0c0fe6;padding:var(--space-2) var(--space-3);animation:_slideDown_ax9ih_1 .2s ease;transition:transform var(--transition-base),opacity var(--transition-base)}._mobileSearchBarHidden_ax9ih_285{transform:translateY(-100%);opacity:0;pointer-events:none}@keyframes _slideDown_ax9ih_1{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}._mobileSearchInner_ax9ih_302{display:flex;align-items:center;background:#ffffff14;border:none;border-radius:var(--radius-full);padding:0 var(--space-4);height:40px}._mobileSearchInner_ax9ih_302:focus-within{border:none;outline:none;box-shadow:0 0 0 2px var(--accent)}._mobileSearchIcon_ax9ih_318{color:#ffffff80;font-size:.85rem;flex-shrink:0;margin-right:var(--space-2)}._mobileSearchInput_ax9ih_325{flex:1;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;height:100%}._mobileSearchInput_ax9ih_325::placeholder{color:#ffffff80}._mobileSearchInput_ax9ih_325:focus,input._mobileSearchInput_ax9ih_325:focus,._mobileSearchInput_ax9ih_325:focus-visible,input._mobileSearchInput_ax9ih_325:focus-visible{outline:none!important;box-shadow:none!important;border:none}}@media(max-width:848px){._header_ax9ih_1{height:64px;padding:0 var(--space-3);--logo-height: 36px}._headerInner_ax9ih_46{padding:0;max-width:none}._leftSection_ax9ih_56{gap:var(--space-1);min-width:0}._hamburgerBtn_ax9ih_231{height:36px;width:36px;font-size:.9rem}._logo_ax9ih_33{padding:2px;min-width:0}._searchButton_ax9ih_146{width:36px;height:36px}._rightSection_ax9ih_104{gap:2px}._profileBtn_ax9ih_180{height:36px}._profileAvatar_ax9ih_215{width:36px;height:36px}._profileName_ax9ih_222{max-width:84px}}@media(max-width:900px){._desktopNav_ax9ih_62{display:none}}@media(max-width:480px){._rightSection_ax9ih_104{gap:4px}._hamburgerBtn_ax9ih_231{height:38px;width:38px;font-size:1rem}._logo_ax9ih_33{padding:2px;min-width:0}._searchButton_ax9ih_146{width:38px;height:38px}._profileBtn_ax9ih_180{width:38px;height:38px;padding:0}._profileAvatar_ax9ih_215{width:38px;height:38px}._profileName_ax9ih_222{display:none}}._sidebar_153jc_1{position:fixed;top:0;left:0;width:280px;max-width:85vw;height:100%;transition:transform var(--transition-normal);z-index:var(--z-sidebar);padding:var(--space-8) var(--space-6);display:flex;flex-direction:column;overflow-y:auto;transform:translate(-100%);background-color:#0a0a0cf2;color:var(--text-primary);border-right:1px solid var(--border-primary)}._sidebar_153jc_1._open_153jc_20{transform:translate(0);box-shadow:20px 0 60px #00000080}._sidebarHeader_153jc_25{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-10);position:relative}._closeBtn_153jc_33{position:absolute;top:0;right:0;background:none;border:none;font-size:1.25rem;line-height:1;cursor:pointer;color:var(--text-tertiary);transition:color var(--transition-base);display:flex;align-items:center;justify-content:center;padding:var(--space-1);width:32px;height:32px;border-radius:var(--radius-sm)}._closeBtn_153jc_33:hover{color:var(--text-primary)}._logo_153jc_57{display:flex;align-items:center;text-decoration:none;--logo-height: 50px;transition:opacity var(--transition-base)}._logo_153jc_57:hover{opacity:.8}._navSection_153jc_69{display:flex;flex-direction:column;gap:var(--space-1)}._navLink_153jc_75{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);text-decoration:none;transition:all var(--transition-base);color:var(--text-secondary);font-weight:var(--font-weight-medium);font-size:var(--font-size-base);border-left:2px solid transparent;margin-left:var(--space-2)}._navLink_153jc_75 svg{font-size:1rem;width:20px;text-align:center;flex-shrink:0;transition:color var(--transition-base)}._navLink_153jc_75:hover{background-color:#ffffff0a;color:var(--text-primary);border-left-color:#ffffff26}._navLink_153jc_75:hover svg{color:var(--text-primary)}._navLink_153jc_75._active_153jc_108{background-color:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-light);border-left-color:var(--accent)}._navLink_153jc_75._active_153jc_108 svg{color:var(--accent)}._overlay_153jc_118{position:fixed;inset:0;background-color:#0009;z-index:calc(var(--z-sidebar) - 1);animation:_fadeIn_153jc_1 .3s ease-out}@keyframes _fadeIn_153jc_1{0%{opacity:0}to{opacity:1}}._versionInfo_153jc_138{margin-top:auto;padding-top:var(--space-8);font-size:1rem;color:var(--text-secondary);text-align:left;display:flex;align-items:center;gap:var(--space-2)}._versionInfo_153jc_138:before{content:"";display:block;width:5px;height:5px;border-radius:50%;background-color:var(--color-success)}@media(max-width:768px){._sidebar_153jc_1{width:260px;padding:var(--space-6) var(--space-4)}._sidebarHeader_153jc_25{margin-bottom:var(--space-8)}._logo_153jc_57{--logo-height: 48px}._navLink_153jc_75{padding:var(--space-3) var(--space-3)}}._footer_1c905_1{width:100%;position:relative;padding:0 var(--space-8) var(--space-8);overflow:visible;border-top:1px solid rgba(255,255,255,.08);margin-top:auto;background:linear-gradient(180deg,#0a0a0c99,#050507f2);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:var(--text-tertiary);font-size:var(--font-size-sm)}._footerInner_1c905_15{width:100%;max-width:var(--max-width);margin:0 auto;display:grid;grid-template-columns:1fr auto;align-items:start;gap:var(--space-12);padding-bottom:var(--space-8);border-bottom:1px solid rgba(255,255,255,.06)}._brandSection_1c905_27{grid-column:1;display:flex;flex-direction:column;align-items:flex-start;text-align:left;max-width:320px;position:relative;padding-top:0;margin-top:-30px}._logoRow_1c905_39{display:flex;align-items:center;gap:14px}._logoText_1c905_45{--logo-height: 60px;width:auto;display:block}._brandMeta_1c905_51{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-2);flex-wrap:wrap;margin-top:10px}._brandTagline_1c905_60{color:var(--text-secondary);font-size:.88rem;line-height:1.5;margin:0}._statusPill_1c905_67{display:inline-flex;align-items:center;gap:var(--space-2);padding:4px 12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-full);font-size:.78rem;color:var(--text-secondary);width:fit-content}._statusDot_1c905_80{width:7px;height:7px;border-radius:50%;background:var(--color-success);box-shadow:0 0 8px var(--color-success)}._linksGrid_1c905_88{grid-column:2;display:flex;gap:var(--space-8);justify-content:flex-end;padding-top:var(--space-8)}._linkColumn_1c905_96{display:flex;flex-direction:column;gap:var(--space-2)}._columnTitle_1c905_102{color:var(--text-primary);font-size:.9rem;font-weight:700;margin:0 0 var(--space-2);text-transform:uppercase;letter-spacing:.05em}._footer_1c905_1 a{color:var(--text-secondary);text-decoration:none;font-weight:500;font-size:.88rem;transition:all var(--transition-fast);display:inline-flex;align-items:center}._footer_1c905_1 a:hover{color:var(--accent);transform:translate(2px)}._bottomBar_1c905_126{position:relative;width:100%;max-width:var(--max-width);margin:var(--space-6) auto 0;display:flex;align-items:center;justify-content:center}._copyright_1c905_136{margin:0;color:var(--text-muted);font-size:.85rem;display:flex;align-items:center;justify-content:center;gap:4px;text-align:center}._brand_1c905_27{color:var(--accent);font-weight:700}._heartIcon_1c905_152{color:var(--color-danger);margin:0 2px}._backToTop_1c905_157{position:absolute;right:0;display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 14px;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-full);color:var(--text-secondary);font-size:.8rem;font-weight:600;cursor:pointer;transition:all var(--transition-base)}._backToTop_1c905_157:hover{background:#ffffff1f;color:#fff;border-color:var(--accent);transform:translateY(-2px)}@media(max-width:768px){._footer_1c905_1{padding:0 var(--space-4) var(--space-6)}._footerInner_1c905_15{grid-template-columns:1fr;gap:var(--space-5);align-items:center;justify-items:center}._brandSection_1c905_27{grid-column:1;align-items:center;text-align:center;padding-top:0;justify-content:center;margin-top:-26px}._logoRow_1c905_39{flex-direction:column;align-items:center;gap:6px}._logoText_1c905_45{--logo-height: 52px}._brandMeta_1c905_51{flex-direction:column;align-items:center;gap:var(--space-1);justify-content:center;margin-top:6px}._linksGrid_1c905_88{grid-column:1;display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);text-align:center}._linkColumn_1c905_96{align-items:center;gap:var(--space-1)}._columnTitle_1c905_102{margin:0 0 var(--space-1);font-size:.78rem}._footer_1c905_1 a{font-size:.82rem}._bottomBar_1c905_126{flex-direction:column;gap:var(--space-3);text-align:center}._copyright_1c905_136{font-size:.78rem}._backToTop_1c905_157{position:static}}._overlay_1juub_1{position:fixed;inset:0;background-color:#0009;z-index:var(--z-modal);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:_fadeIn_1juub_1 .2s ease-out}._content_1juub_11{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:calc(var(--z-modal) + 1);background-color:var(--bg-secondary);padding:var(--space-6);border-radius:var(--radius-lg);width:100%;max-width:min(500px,calc(100vw - 2 * var(--space-4)));max-height:calc(100vh - 2 * var(--space-4));overflow-y:auto;box-shadow:var(--shadow-xl);border:1px solid var(--border-primary);animation:_modalIn_1juub_1 .2s var(--ease-smooth)}._sm_1juub_29{max-width:min(400px,calc(100vw - 2 * var(--space-4)))}._md_1juub_33{max-width:min(500px,calc(100vw - 2 * var(--space-4)))}._lg_1juub_37{max-width:min(700px,calc(100vw - 2 * var(--space-4)))}._title_1juub_41{margin:0 0 var(--space-4);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--text-primary)}._body_1juub_48{color:var(--text-secondary)}._footer_1juub_52{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border-primary)}._footer_1juub_52>*{flex:0 1 auto;min-width:0;max-width:100%}@media(max-width:480px){._content_1juub_11{padding:var(--space-4)}._footer_1juub_52{flex-direction:column;align-items:stretch;justify-content:flex-start}._footer_1juub_52>*{flex:1 1 auto;width:100%}}@keyframes _fadeIn_1juub_1{0%{opacity:0}to{opacity:1}}@keyframes _modalIn_1juub_1{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}._container_e96gf_1{display:flex;flex-direction:column;gap:1rem;color:var(--text-primary);max-width:400px}._field_e96gf_9{display:flex;flex-direction:column;gap:.5rem}._field_e96gf_9 label{font-size:.9rem;opacity:.8}._textarea_e96gf_20{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.5rem;border-radius:4px;resize:vertical;font-family:inherit}._textarea_e96gf_20:hover{border-color:var(--border-secondary)}._textarea_e96gf_20:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._input_e96gf_40{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.6rem;border-radius:4px}._input_e96gf_40:hover{border-color:var(--border-secondary)}._input_e96gf_40:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._button_e96gf_58{background:var(--accent);color:var(--text-primary);border:none;padding:.7rem;border-radius:4px;cursor:pointer;font-weight:600;transition:opacity .2s}._button_e96gf_58:hover{opacity:.9}._button_e96gf_58:disabled{opacity:.5;cursor:not-allowed}._secondaryButton_e96gf_78{background:transparent;border:1px solid var(--border-primary);color:var(--text-primary);padding:.7rem;border-radius:4px;cursor:pointer;transition:background .2s,border-color .2s}._secondaryButton_e96gf_78:hover{background:#ffffff0d;border-color:var(--border-secondary)}._actions_e96gf_95{display:flex;gap:.5rem}._actions_e96gf_95 ._button_e96gf_58{flex:1}._hint_e96gf_104{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:4px;padding:.6rem;font-size:.85rem;line-height:1.5}._hint_e96gf_104 ._actions_e96gf_95{margin-top:.6rem}._link_e96gf_117{color:var(--accent);text-decoration:underline;font-weight:600}._link_e96gf_117:hover{opacity:.85}.top-progress-bar{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;overflow:hidden;pointer-events:none;background:transparent}.top-progress-bar:after{content:"";position:absolute;top:0;bottom:0;left:0;width:40%;border-radius:0 3px 3px 0;background:linear-gradient(90deg,transparent,var(--accent),var(--accent-light),transparent);animation:top-progress-slide 1.1s infinite ease-in-out}@keyframes top-progress-slide{0%{transform:translate(-100%)}to{transform:translate(280%)}}@media(prefers-reduced-motion:reduce){.top-progress-bar:after{animation:none;width:100%;border-radius:0}}._screen_1pca0_1{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;width:100%;background-color:var(--bg-secondary);color:var(--text-primary);text-align:center;padding:2rem}._icon_1pca0_14{font-size:4rem;color:var(--color-danger);margin-bottom:1rem}._title_1pca0_20{margin-bottom:1rem}._text_1pca0_24{color:var(--text-secondary);margin-bottom:2rem}._button_1pca0_29{padding:.8rem 1.5rem;background-color:var(--accent);color:var(--accent-text);border:none;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;gap:.5rem;font-size:1rem;transition:background-color .2s}._button_1pca0_29:hover{background-color:var(--accent-light)}._container_88bss_1{display:flex;flex-direction:column;gap:1rem;color:var(--text-primary)}._field_88bss_8{display:flex;flex-direction:column;gap:.5rem}._field_88bss_8 label{font-size:.9rem;opacity:.8}._input_88bss_19{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.6rem;border-radius:4px}._input_88bss_19:hover{border-color:var(--border-secondary)}._input_88bss_19:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._actions_88bss_37{display:flex;gap:.5rem;justify-content:flex-end}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;border:none;outline:none;font-family:inherit;position:relative;white-space:nowrap;font-size:var(--font-size-base);background:transparent;color:var(--text-primary);padding:var(--space-3) var(--space-6);min-height:44px;transition:background-color .15s ease,color .15s ease,transform .1s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent-light);outline-offset:2px}.btn-primary{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:var(--accent-text);box-shadow:0 4px 12px var(--accent-glow)}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%);transform:translateY(-1px);box-shadow:0 6px 16px var(--accent-glow)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:#ffffff14;border:1px solid var(--border-secondary);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:#ffffff1f;border-color:#ffffff40}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:#ffffff14;color:var(--text-primary)}.btn-danger{background:var(--color-danger);color:var(--color-danger-text)}.btn-danger:hover:not(:disabled){background:var(--color-danger-dark)}.btn-sm{min-height:36px;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);border-radius:var(--radius-sm)}.btn-lg{min-height:52px;padding:var(--space-4) var(--space-8);font-size:var(--font-size-md);border-radius:var(--radius-lg)}.btn-block{width:100%}.btn-loading{color:transparent;pointer-events:none}.btn-spinner{position:absolute;width:16px;height:16px;border:2px solid rgba(128,128,128,.35);border-top-color:var(--accent-text);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}._notice_1d75r_1{position:fixed;right:max(var(--space-4),env(safe-area-inset-right));bottom:max(var(--space-4),env(safe-area-inset-bottom));z-index:10000;display:flex;align-items:center;gap:var(--space-2);max-width:calc(100vw - 2 * var(--space-4));padding:var(--space-2-5) var(--space-3);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg);color:var(--text-secondary);box-shadow:0 4px 16px #00000029;font-family:var(--font-family);font-size:var(--font-size-xs);font-weight:400;line-height:1.5;pointer-events:none;animation:_appear_1d75r_1 2.6s ease both}._notice_1d75r_1 svg{color:var(--text-tertiary);flex-shrink:0}@keyframes _appear_1d75r_1{0%{opacity:0;transform:translateY(4px)}8%,88%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(2px)}}@media(prefers-reduced-motion:reduce){._notice_1d75r_1{animation:none}}:root{--accent: #6d5dfc;--logo-ink: #140f15;--accent-light: #897cff;--accent-lighter: #b3a8ff;--accent-dark: #5646db;--accent-text: #ffffff;--accent-subtle: rgba(109, 93, 252, .12);--accent-glow: rgba(109, 93, 252, .18);--accent-h: 245;--accent-s: 96%;--accent-l: 68%;--color-danger: #ef4444;--color-error: var(--color-danger);--color-danger-dark: #dc2626;--color-danger-text: #ffffff;--color-success: #10b981;--color-success-text: #ffffff;--color-warning: #f59e0b;--color-warning-text: #17171c;--color-info: #3b82f6;--color-info-text: #ffffff;--badge-info-bg: var(--accent);--badge-info-text: var(--accent-text);--palette-gold: #d8b56b;--palette-silver: #c3c9d1;--palette-bronze: #c08d5f;--secondary-h: 180;--secondary-s: 85%;--secondary-l: 50%;--accent-blue: hsl(var(--secondary-h), var(--secondary-s), var(--secondary-l));--accent-blue-light: hsl(var(--secondary-h), var(--secondary-s), 70%);--bg-main: #0c0d12;--bg-primary: #13151d;--bg-secondary: #13151d;--bg-tertiary: #191c27;--bg-elevated: #202433;--header-bg: rgba(12, 13, 18, .85);--text-primary: #ffffff;--text-secondary: #b4b4bd;--text-tertiary: #8f8f98;--text-muted: #b4b4bd;--border-primary: rgba(255, 255, 255, .08);--border-secondary: rgba(255, 255, 255, .12);--border-accent: hsla(var(--accent-h), var(--accent-s), var(--accent-l), .3);--border: var(--border-primary);--control-border: #4b5570;--control-border-hover: #647093;--control-text: #ffffff;--card-radius: var(--radius-lg);--border-light: var(--border-secondary);--danger-color: var(--color-danger);--shadow-input-focus: 0 0 0 2px var(--accent-subtle);--shadow-focus: 0 0 0 2px var(--accent-subtle);--glass-bg: rgba(20, 20, 22, .95);--glass-border: var(--border-primary);--glass-highlight: rgba(255, 255, 255, .05);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .36);--bg-hover: rgba(255, 255, 255, .08);--bg-hover-strong: rgba(255, 255, 255, .1);--bg-overlay: rgba(0, 0, 0, .55);--bg-overlay-strong: rgba(0, 0, 0, .6);--bg-overlay-heavy: rgba(0, 0, 0, .7);--bg-scrim: rgba(10, 10, 12, .55);--bg-scrim-strong: rgba(10, 10, 12, .8);--bg-dark: #0a0a0c;--bg-black: #000000;--border-strong: rgba(255, 255, 255, .14);--track-bg: rgba(255, 255, 255, .1);--track-buffered: rgba(255, 255, 255, .25);--shimmer-highlight: rgba(255, 255, 255, .07);--bg-selected: rgba(255, 255, 255, .06);--shadow-scrim: 0 4px 16px rgba(0, 0, 0, .45);--shadow-panel: 0 12px 32px rgba(0, 0, 0, .5);--color-danger-bg: rgba(153, 42, 42, .9);--font-family: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-size-2xs: .4375rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.5rem;--font-size-xl: 1.875rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--space-px: 1px;--space-2px: 2px;--space-1: .25rem;--space-1-5: .375rem;--space-2: .5rem;--space-2-5: .625rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--size-22: 22px;--size-42: 42px;--size-44: 44px;--size-48: 48px;--size-34: 34px;--size-36: 36px;--size-140: 140px;--size-180: 180px;--size-220: 220px;--size-250: 250px;--size-440: 440px;--size-480: 480px;--size-720: 720px;--size-84: 84px;--size-52: 52px;--size-90: 90px;--size-240: 240px;--size-320: 320px;--size-420: 420px;--size-900: 900px;--layout-asmr-max-width: 1400px;--layout-page-offset: 120px;--layout-player-mobile: 175px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 32px -4px rgba(0, 0, 0, .6);--shadow-active: 0 0 0 1px var(--border-accent), 0 8px 24px -4px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .2);--shadow-thumb: 0 0 5px rgba(0, 0, 0, .5);--blur-sm: 4px;--blur-md: 6px;--blur-lg: 12px;--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-drawer: 300;--z-sidebar: 500;--z-header: 400;--z-modal: 600;--z-popover: 700;--z-toast: 800;--z-overlay: 900;--header-height: 80px;--max-width: 1600px;--sidebar-width: 280px;--ease-spring: cubic-bezier(.175, .885, .32, 1.275);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-emphasized: cubic-bezier(.32, .72, 0, 1);--transition-fast: .2s var(--ease-smooth);--transition-base: .3s var(--ease-smooth);--transition-normal: .4s var(--ease-smooth);--transition-slow: .5s var(--ease-smooth);--transition-emphasized: .42s var(--ease-emphasized);--transition-quick: .09s var(--ease-smooth);--duration-shimmer: 1.6s;--duration-spin: .9s;--focus-ring-color: var(--accent-light);--focus-ring-glow: 0 0 0 3px rgba(109, 93, 252, .35);--focus-scale: scale(1.05)}@media(min-width:1920px){:root{--font-size-base: 1.125rem;--max-width: 2000px}}html[data-theme=mochi]{--accent: #e3e1ee;--accent-light: #f4f3fa;--accent-lighter: #ffffff;--accent-dark: #b3b1c6;--accent-text: #17171c;--accent-subtle: rgba(227, 225, 238, .12);--accent-glow: rgba(227, 225, 238, 0);--accent-h: 248;--accent-s: 18%;--accent-l: 89%;--bg-main: #131316;--bg-primary: #1b1b1f;--bg-secondary: #1b1b1f;--bg-tertiary: #232329;--bg-elevated: #2b2b32;--header-bg: rgba(19, 19, 22, .88);--text-primary: #f2f2f5;--text-secondary: #a9a9b3;--text-tertiary: #85858f;--text-muted: #a9a9b3;--border-primary: #2c2c33;--border-secondary: #3a3a43;--control-border: #4c4c59;--control-border-hover: #666675;--control-text: #f2f2f5;--glass-bg: rgba(27, 27, 31, .96);--badge-info-bg: var(--accent);--badge-info-text: var(--accent-text);--shadow-sm: none;--shadow-md: none;--shadow-lg: none;--shadow-active: 0 0 0 1px var(--border-secondary);--shadow-xl: none;--focus-ring-color: var(--accent);--focus-ring-glow: 0 0 0 3px rgba(227, 225, 238, .25)}html[data-theme=sakura]{--accent: #d9a3d9;--accent-light: #eccbec;--accent-lighter: #f9e8f9;--accent-dark: #a978a9;--accent-text: #fff;--accent-subtle: rgba(217, 163, 217, .12);--accent-glow: rgba(217, 163, 217, 0);--accent-h: 300;--accent-s: 45%;--accent-l: 74%;--bg-main: #141116;--bg-primary: #1c171e;--bg-secondary: #1c171e;--bg-tertiary: #241e26;--bg-elevated: #2e262f;--header-bg: rgba(20, 17, 22, .88);--text-primary: #f3eaf3;--text-secondary: #b3a3b5;--text-tertiary: #8d7c8f;--text-muted: #b3a3b5;--border-primary: #322a34;--border-secondary: #403640;--control-border: #524458;--control-border-hover: #6b5872;--control-text: #f3eaf3;--glass-bg: rgba(28, 23, 30, .96);--badge-info-bg: var(--accent-dark);--badge-info-text: #ffffff;--shadow-sm: none;--shadow-md: none;--shadow-lg: none;--shadow-active: 0 0 0 1px var(--border-secondary);--shadow-xl: none;--focus-ring-color: var(--accent);--focus-ring-glow: 0 0 0 3px rgba(217, 163, 217, .25)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;color-scheme:dark;scrollbar-gutter:stable;overflow-x:hidden;overflow-x:clip;max-width:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}html:has(:fullscreen),html:has(:-webkit-full-screen){scrollbar-gutter:auto}body{margin:0;padding:0;font-family:var(--font-family);background:var(--bg-main);color:var(--text-primary);line-height:var(--line-height-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;overflow-x:clip;max-width:100%;color-scheme:dark}html,body,.app-container,.posterWrapper,.dot,.genreTag{--darkreader-inline-bgcolor: none !important;--darkreader-inline-bgimage: none !important;--darkreader-inline-bordercolor: none !important;--darkreader-inline-color: none !important;background-color:transparent}body{overflow-x:hidden;overflow-x:clip}body:before{display:none!important}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--font-weight-semibold);letter-spacing:-.02em}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring-color)!important;outline-offset:3px!important;box-shadow:var(--focus-ring-glow)!important;transition:outline-offset var(--transition-fast),transform var(--transition-fast)}a:focus:not(:focus-visible),button:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible),[tabindex]:focus:not(:focus-visible){outline:none!important;box-shadow:none!important}a,button,input,select,textarea,[tabindex]{-webkit-tap-highlight-color:transparent}@media(min-width:1200px){a:focus-visible,button:focus-visible{transform:var(--focus-scale)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.text-gradient{background:linear-gradient(135deg,#fff,#a5a5a5);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.text-gradient-accent{background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.app-container{display:flex;flex-direction:column;min-height:100vh}main{flex:1;width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-8) var(--space-16);position:relative;z-index:1}.main-content{padding-top:var(--header-height)}@media(max-width:1024px){.main-content{padding-top:calc(var(--header-height) + 52px)}}@media(max-width:848px){main{padding:0 var(--space-4) var(--space-12)}.main-content{padding-top:116px}}.badge{display:inline-flex;align-items:center;gap:var(--space-1-5);padding:var(--space-1) var(--space-2-5);border-radius:var(--radius-full);border:1px solid var(--border-primary);background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);white-space:nowrap}.badge-primary{border-color:color-mix(in srgb,var(--accent) 35%,transparent);background:var(--accent-subtle);color:var(--accent-light)}.badge-secondary{border-color:var(--border-secondary);background:var(--bg-secondary);color:var(--text-secondary)}.badge-danger{border-color:color-mix(in srgb,var(--color-danger) 35%,transparent);background:color-mix(in srgb,var(--color-danger) 12%,transparent);color:var(--color-danger)}.section-title{font-size:1.75rem;font-weight:800;margin-bottom:var(--space-8);color:var(--text-primary);letter-spacing:-.02em;line-height:1}.section-eyebrow{display:flex;align-items:center;gap:8px;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-light);margin:0;line-height:1.4}.section-eyebrow:before{content:"";width:14px;height:3px;border-radius:999px;background:linear-gradient(90deg,var(--accent) 0%,var(--accent-dark) 100%);box-shadow:0 0 8px var(--accent-glow);flex:none}.title-stack{display:flex;flex-direction:column;gap:4px;min-width:0;justify-content:center}html[data-theme=mochi] .section-eyebrow,html[data-theme=sakura] .section-eyebrow{color:var(--accent)}@media(max-width:768px){.section-title{font-size:1.5rem;margin-bottom:var(--space-6)}}.grid-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-6);width:100%}@media(max-width:1024px){.grid-container{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-4)}}@media(max-width:768px){.grid-container{grid-template-columns:repeat(3,1fr);gap:var(--space-2)}}@media(max-width:480px){.grid-container{grid-template-columns:repeat(3,1fr);gap:8px}}footer{text-align:center;padding:var(--space-12);color:var(--text-muted);border-top:1px solid var(--border-primary);margin-top:var(--space-16);background:var(--bg-secondary)}footer a{color:var(--accent);text-decoration:none;font-weight:var(--font-weight-medium);transition:color var(--transition-fast)}footer a:hover{color:var(--accent-light);text-shadow:0 0 8px var(--accent-glow)}select{appearance:none;-webkit-appearance:none;cursor:pointer;background-color:var(--bg-tertiary)!important;border-color:var(--border-primary)!important}select:hover{background-color:var(--bg-tertiary)!important;border-color:var(--border-secondary)!important}select:focus{background-color:var(--bg-tertiary)!important;border-color:var(--accent)!important;outline:none}select:active{background-color:var(--bg-tertiary)!important}body.low-end{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol!important;--transition-fast: 0s !important;--transition-base: 0s !important;--transition-normal: 0s !important;--transition-slow: 0s !important;scroll-behavior:auto!important}body.low-end,body.low-end *{transition:none!important;animation:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;text-shadow:none!important}body.low-end:before{display:none!important}body.low-end .text-gradient,body.low-end .text-gradient-accent{background:none!important;-webkit-background-clip:initial!important;-webkit-text-fill-color:initial!important;color:var(--text-primary)!important}body.low-end .text-gradient-accent{color:var(--accent)!important}body.low-end [class*=banner],body.low-end [class*=bannerContainer],body.low-end [class*=bannerOverlay],body.low-end [class*=heroSection]{background-image:none!important;background-color:var(--bg-main)!important;min-height:auto!important}body.low-end [class*=infoGlass]{background:var(--bg-secondary)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border:1px solid var(--border-primary)!important;box-shadow:none!important}.skeleton{position:relative;overflow:hidden;background-color:var(--bg-tertiary)}.skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#ffffff0d 20%,#ffffff1f 60%,#fff0);animation:skeleton-wave 1.8s infinite ease-in-out}@keyframes skeleton-wave{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.page-container{width:100%;animation:page-fade-in var(--transition-smooth)}@keyframes page-fade-in{0%{opacity:0}to{opacity:1}}.error-message{padding:var(--space-4);text-align:center;color:var(--color-danger)}._gate_r3yn2_1{min-height:100dvh;display:grid;place-content:center;padding:var(--space-5);background:var(--bg-primary);color:var(--text-primary)}._panel_r3yn2_10{width:min(100%,440px);padding:var(--space-5);border:1px solid var(--border-secondary);border-radius:var(--radius-lg);background:var(--bg-tertiary)}._form_r3yn2_18{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-3);margin:var(--space-4) 0}._form_r3yn2_18 h3,._form_r3yn2_18 p{flex-basis:100%}._field_r3yn2_31{display:flex;flex-direction:column;gap:var(--space-2);max-width:100%}._field_r3yn2_31 input,._field_r3yn2_31 select{padding:var(--space-3);color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-secondary);border-radius:var(--radius-md);min-width:0}._avatarRow_r3yn2_48{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4)}._avatarRow_r3yn2_48>:first-child{width:72px;height:72px}._profileList_r3yn2_60{list-style:none;padding:0}._profileList_r3yn2_60 li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border-secondary)}._smallAvatar_r3yn2_73{width:36px;height:36px;flex-shrink:0}._profileName_r3yn2_78{flex:1;min-width:0;overflow-wrap:anywhere}