@serifpersia/dango 3.8.0 → 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.
- package/README.md +4 -2
- package/client/dist/assets/{AnimeCard-BURLDiUV.js → AnimeCard-Dl21Mnwa.js} +1 -1
- package/client/dist/assets/{AnimeInfo-D2coN_ZJ.js → AnimeInfo-BZnCkkHq.js} +1 -1
- package/client/dist/assets/{AnimeInfoPage-BfPP9trp.js → AnimeInfoPage-CPFvFKt0.js} +2 -2
- package/client/dist/assets/{Asmr-CiuBtMGl.js → Asmr--BgcQsb9.js} +1 -1
- package/client/dist/assets/{AsmrResetProgressModal-BDFeO6fQ.js → AsmrResetProgressModal-VXhNSZib.js} +1 -1
- package/client/dist/assets/Home-CXsFL5QN.js +1 -0
- package/client/dist/assets/Home-DINyLUCh.css +1 -0
- package/client/dist/assets/{Insights-CKk02Whw.js → Insights-4HjAFOov.js} +1 -1
- package/client/dist/assets/{LibraryListPage-AGyVc7pR.js → LibraryListPage-BnJw-xnm.js} +1 -1
- package/client/dist/assets/{ListeningList-DeAdvRjS.js → ListeningList-DSc_Aqz9.js} +1 -1
- package/client/dist/assets/{Manga-CiPWc8Ly.js → Manga-mB3KYDUt.js} +1 -1
- package/client/dist/assets/{MangaInfoPage-3jObt7zd.js → MangaInfoPage-C2sxlrwM.js} +1 -1
- package/client/dist/assets/{MangaReadPage-V5M2BLWG.js → MangaReadPage-pDNIP1mf.js} +1 -1
- package/client/dist/assets/{MangaResetProgressModal-CXRvdwD9.js → MangaResetProgressModal-C_QbfWkA.js} +1 -1
- package/client/dist/assets/{Mature-B9IEX0IP.js → Mature-CWEA-qdC.js} +1 -1
- package/client/dist/assets/{MatureConsentModal-LTZSG_Kx.js → MatureConsentModal-Ixo33c5M.js} +1 -1
- package/client/dist/assets/{MediaCard-l2gAJctz.js → MediaCard-BhYZUPLl.js} +1 -1
- package/client/dist/assets/{OptionListMenu-CHJb3qot.js → OptionListMenu-D-g4a-VC.js} +1 -1
- package/client/dist/assets/Player-B2CmI6hn.js +56 -0
- package/client/dist/assets/PlayerProvider-Q25sRaQm.js +1 -0
- package/client/dist/assets/PlayerProvider-ZeplRma-.css +1 -0
- package/client/dist/assets/{PlayerSettings-B-_QOjfP.js → PlayerSettings-puzcbL0V.js} +1 -1
- package/client/dist/assets/{QueueOptionsButton-BCxERY1G.js → QueueOptionsButton-C0U85ua3.js} +1 -1
- package/client/dist/assets/{QueueRail-BX4CwNHY.js → QueueRail-D2SeBzV5.js} +1 -1
- package/client/dist/assets/{ReadingList-BLUM-leI.js → ReadingList-Bp_5vTLj.js} +1 -1
- package/client/dist/assets/{ResetProgressModal-DLs9yqI-.js → ResetProgressModal-By_82RcA.js} +1 -1
- package/client/dist/assets/{Search-tnIvsV_a.js → Search-BpG4bAm2.js} +1 -1
- package/client/dist/assets/{Settings-CibKc1Rt.js → Settings-C72mbc_2.js} +1 -1
- package/client/dist/assets/{SkeletonGrid-nW7P1jQU.js → SkeletonGrid-CPc8hqla.js} +1 -1
- package/client/dist/assets/{Trackers-Cynvnhc3.js → Trackers-CYbGDEf-.js} +1 -1
- package/client/dist/assets/Tv-FXbgyY_h.js +4 -0
- package/client/dist/assets/{TvInfo-DGIpvh-v.js → TvInfo-Cu6BPMzl.js} +1 -1
- package/client/dist/assets/{TvPopup-BS4iiQMd.js → TvPopup-BnPKXA6c.js} +1 -1
- package/client/dist/assets/{TvSearch-p0kCDTee.js → TvSearch-BQNApkYS.js} +1 -1
- package/client/dist/assets/{TvWatchlist-CmXQkDQp.js → TvWatchlist-DKbRFInR.js} +1 -1
- package/client/dist/assets/{VirtualKeyboard-CroH8QGP.js → VirtualKeyboard-B0KbwdUi.js} +1 -1
- package/client/dist/assets/{WatchAlong-iCJlxiZA.js → WatchAlong-CoZ0_fXQ.js} +1 -1
- package/client/dist/assets/WatchAlongPanel-CerutuF6.js +1 -0
- package/client/dist/assets/WatchAlongPanel-DWb8lSzW.css +1 -0
- package/client/dist/assets/{Watchlist-D2sHodVo.js → Watchlist-5UqdPHPq.js} +1 -1
- package/client/dist/assets/index-CoCvEAx6.css +1 -0
- package/client/dist/assets/{index-DYanm9eZ.js → index-hnIW0p5l.js} +18 -18
- package/client/dist/assets/{libraryInvalidation-DlwONLN-.js → libraryInvalidation-DGzo-Q94.js} +1 -1
- package/client/dist/assets/{playbackCompletion-CxGa4g7a.js → playbackCompletion-DCNDnWtX.js} +1 -1
- package/client/dist/assets/{useAnimeInfoData-DMeGA3wY.js → useAnimeInfoData-C-n9ZzJX.js} +1 -1
- package/client/dist/assets/{useAsmr-B88X71vs.js → useAsmr-QthQGpYA.js} +1 -1
- package/client/dist/assets/{useAsmrPopup-DEhKwHLC.js → useAsmrPopup-BGI3k7sr.js} +1 -1
- package/client/dist/assets/{useMangaLibrary-CX_0zLJK.js → useMangaLibrary-uCL2et8O.js} +1 -1
- package/client/dist/assets/{useMangaPopup-Dkq2Yw-e.js → useMangaPopup-DV8-cCbz.js} +1 -1
- package/client/dist/assets/{useProviders-D9QoFCnY.js → useProviders-Bzr6U-8b.js} +1 -1
- package/client/dist/assets/{useTv-BGXZmuV8.js → useTv-D2BZQllK.js} +1 -1
- package/client/dist/assets/{useTvLibrary-TnVQ2e21.js → useTvLibrary-BIs22-2H.js} +1 -1
- package/client/dist/assets/{useWatchAlongPlayer-BMf_H2dw.css → useWatchAlongPlayer-1fbftVwT.css} +1 -1
- package/client/dist/assets/useWatchAlongPlayer-B79YboC3.js +10 -0
- package/client/dist/index.html +2 -2
- package/package.json +2 -2
- package/server/dist/server.js +170 -170
- package/server/package.json +1 -1
- package/client/dist/assets/Home-DHAkZuDf.css +0 -1
- package/client/dist/assets/Home-GShTLEbZ.js +0 -1
- package/client/dist/assets/Player-BTimy0Mp.js +0 -56
- package/client/dist/assets/PlayerProvider-BXBzQc8G.js +0 -1
- package/client/dist/assets/PlayerProvider-N2pT5gty.css +0 -1
- package/client/dist/assets/Tv-BePMuQoo.js +0 -4
- package/client/dist/assets/WatchAlongPanel-DbJuLqxU.css +0 -1
- package/client/dist/assets/WatchAlongPanel-R7Nd5MXr.js +0 -1
- package/client/dist/assets/index-DP9TtvZX.css +0 -1
- package/client/dist/assets/useWatchAlongPlayer-3HXJvQR2.js +0 -10
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{u as t,d as _,A as V,h as g,S as Ge,g as Jr,q as N,o as es,p as ts,a as ns,T as ye}from"./vendor-core-DfaOB3Rn.js";import{g as On,p as O,t as mt,a6 as rs,a2 as ss,O as Rn,e as os,a9 as as,F as cr,B as sn}from"./index-DYanm9eZ.js";import{P as is,a as ls,b as cs,F as us,c as ds}from"./PlayerProvider-BXBzQc8G.js";import{u as ms}from"./vendor-query-BBT5_sHx.js";import{I as be}from"./vendor-icons-DrybRNxP.js";import{p as Vn,M as bs,z as br,f as Fn,c as hs,C as fs,P as ps,a as vs,b as on,u as gs,i as ys,j as Ss,n as _s,h as Ts,k as Cs,m as ks,l as Es,s as zn,d as Ns,e as Is,g as As,r as xs,o as Le,A as Ls,t as ws,E as Bs,w as Ps,x as Ms,v as le,y as Rs,R as zs,q as $s}from"./useWatchAlongPlayer-3HXJvQR2.js";import{S as Ds,O as $n,a as Os,A as Vs,b as Fs}from"./OptionListMenu-CHJb3qot.js";import{M as qs}from"./MatureConsentModal-LTZSG_Kx.js";import{u as Us}from"./useProviders-D9QoFCnY.js";import{e as Hs,f as Ws,g as Ks,d as Ys,c as js,h as Gs,i as Qs}from"./useTvLibrary-TnVQ2e21.js";import{l as Xs,s as Zs,i as an,h as ur}from"./playbackCompletion-CxGa4g7a.js";import{u as Js}from"./useIsMobile-Dvx1uJ82.js";import{S as eo}from"./SynopsisText-B3Sa5pRv.js";import{W as to}from"./WatchAlongPanel-R7Nd5MXr.js";import"./libraryInvalidation-DlwONLN-.js";const no="_fullscreenFlat_10bzs_1",ro="_timeDisplay_10bzs_12",so="_bottomControls_10bzs_16",oo="_leftControls_10bzs_20",ao="_rightControls_10bzs_21",io="_controlBtn_10bzs_25",lo="_controlsOverlay_10bzs_32",co="_hidden_10bzs_52",uo="_topControls_10bzs_58",mo="_backBtn_10bzs_78",bo="_videoTitleInfo_10bzs_98",ho="_animeTitle_10bzs_104",fo="_episodeLabel_10bzs_112",po="_speedBoostBadge_10bzs_119",vo="_progressBarContainer_10bzs_165",go="_progressBar_10bzs_165",yo="_thumb_10bzs_184",So="_bufferedBar_10bzs_202",_o="_watchedBar_10bzs_212",To="_scrubbing_10bzs_237",Co="_timeBubble_10bzs_241",ko="_bottomControlsRow_10bzs_255",Eo="_nextEpisodeBtn_10bzs_278",No="_active_10bzs_340",Io="_settingsPanel_10bzs_352",Ao="_settingsHeader_10bzs_371",xo="_settingsBackBtn_10bzs_379",Lo="_settingsTitle_10bzs_397",wo="_settingsContent_10bzs_408",Bo="_currentValue_10bzs_417",Po="_menuItem_10bzs_423",Mo="_menuNote_10bzs_456",Ro="_loadingOverlay_10bzs_465",zo="_loadingDots_10bzs_476",$o="_dot_10bzs_481",Do="_bufferingOverlay_10bzs_510",Oo="_bufferingSpinner_10bzs_519",o={fullscreenFlat:no,timeDisplay:ro,bottomControls:so,leftControls:oo,rightControls:ao,controlBtn:io,controlsOverlay:lo,hidden:co,topControls:uo,backBtn:mo,videoTitleInfo:bo,animeTitle:ho,episodeLabel:fo,speedBoostBadge:po,progressBarContainer:vo,progressBar:go,thumb:yo,bufferedBar:So,watchedBar:_o,scrubbing:To,timeBubble:Co,bottomControlsRow:ko,nextEpisodeBtn:Eo,active:No,settingsPanel:Io,settingsHeader:Ao,settingsBackBtn:xo,settingsTitle:Lo,settingsContent:wo,currentValue:Bo,menuItem:Po,menuNote:Mo,loadingOverlay:Ro,loadingDots:zo,dot:$o,bufferingOverlay:Do,bufferingSpinner:Oo},Vo=({player:s,visible:h,settingsOpen:z,onOpenSettings:L,onCloseSettings:M,hasSubtitles:I,isSubtitleActive:T,subtitles:c,onSubtitleChange:i,showNextEpisodeButton:C,onNextEpisode:r,isTheaterMode:w,onTheaterModeToggle:he,timeLabelRef:ee})=>{const{state:u,actions:Ce}=s,we=()=>{if(T){i(-1);return}let fe=null;try{fe=O.getItem("tvLastSubtitle")}catch{}i(Vn(c,{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(is,{classes:{container:o.progressBarContainer,scrubbing:o.scrubbing,timeBubble:o.timeBubble,bar:o.progressBar,buffered:o.bufferedBar,watched:o.watchedBar,thumb:o.thumb},timeLabelRef:ee}),t("div",{className:o.bottomControlsRow,children:[t("div",{className:o.leftControls,children:[t(ls,{className:o.controlBtn}),t(cs,{buttonClassName:o.controlBtn,onExpandedChange:Ce.setShowVolumeSlider}),t("span",{className:o.timeDisplay,ref:ee,children:[On(0)," / ",On(u.duration)]})]}),t("div",{className:o.rightControls,children:[C&&t("button",{className:o.nextEpisodeBtn,onClick:r,title:"Play next episode",children:"Next EP"}),I&&t("button",{className:`${o.controlBtn} ${T?o.active:""}`,onClick:we,"aria-label":T?"Turn subtitles off":"Turn subtitles on",children:t(be,{name:"closed-captioning"})}),t("button",{className:`${o.controlBtn} ${z?o.active:""}`,onClick:()=>z?M():L(),"aria-label":"Settings",children:t(be,{name:"cog"})}),t("button",{className:`${o.controlBtn} ${w?o.active:""}`,onClick:fe=>{fe.stopPropagation(),he()},title:w?"Exit Theater Mode":"Theater Mode","aria-label":w?"Exit Theater Mode":"Theater Mode",children:t(be,{name:"tv"})}),t(us,{className:o.controlBtn})]})]})]})})},ln=-6e4,Dn=6e4,dr=500,Fo=({classes:s,delayMs:h,onDelayChange:z})=>{const[L,M]=_(null),I=L??h,T=V(z);T.current=z;const c=V(h);c.current=h;const i=V(null);i.current=L,g(()=>{M(null)},[h]),g(()=>()=>{const w=i.current;w!==null&&w!==c.current&&T.current(w)},[]);const C=w=>{c.current=w,i.current=null,T.current(w),M(null)},r=w=>{const he=i.current??c.current,ee=Math.max(ln,Math.min(Dn,he+w));C(ee)};return t(Ge,{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(-dr),"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(dr),"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:()=>C(0),disabled:I===0,"aria-label":"Reset subtitle timing",style:{flex:1,justifyContent:"center"},children:t("span",{children:"Reset"})})]}),t(bs,{label:"Subtitle timing",display:br(I),min:ln,max:Dn,step:100,value:I,percent:(I-ln)/(Dn-ln)*100,onChange:w=>{const he=Math.round(w);i.current=he,M(he)},onCommit:()=>{const w=i.current;w!==null&&C(w)}}),t("div",{className:s.note,children:"Positive delays subtitles (show later). Negative shows them earlier. 0.0s is default."})]})},qo=({view:s,onSelectView:h,onClose:z,player:L,onSubtitleStyleChange:M,streams:I,resolutionIdx:T,onResolutionChange:c,hasSubtitles:i,subtitles:C,selectedSubtitle:r,isSubtitleActive:w,onSubtitleChange:he,audioTracks:ee,selectedAudioTrack:u,onAudioTrackChange:Ce,videoDelayEnabled:we,onVideoDelayToggle:fe,videoDelayMs:pe,onVideoDelayChange:k,onCalibrate:bt,subtitleDelayMs:Qe,onSubtitleDelayChange:A,ambientSettings:$,onAmbientChange:ce})=>{const{state:X}=L,Xe=()=>t(Ge,{children:[I.length>1&&t("button",{className:o.menuItem,onClick:()=>h("resolution"),children:[t("span",{children:"Resolution"}),t("span",{className:o.currentValue,children:I[T]?.quality||"Auto"})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitles"),children:[t("span",{children:"Subtitles"}),t("span",{className:o.currentValue,children:w?C[r]?.label||C[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:[X.subtitleFontSize.toFixed(1),"x · ",X.subtitlePosition]})]}),i&&t("button",{className:o.menuItem,onClick:()=>h("subtitle-timing"),children:[t("span",{children:"Subtitle Timing"}),t("span",{className:o.currentValue,children:br(Qe)})]}),ee.length>0&&t("button",{className:o.menuItem,onClick:()=>h("audio"),children:[t("span",{children:"Audio Track"}),t("span",{className:o.currentValue,children:ee[u]?.label||ee[u]?.language})]}),t("button",{className:o.menuItem,onClick:()=>h("av-sync"),children:[t("span",{children:"A/V Sync"}),t("span",{className:o.currentValue,children:we?`${pe}ms`:"Off"})]}),$&&ce&&t("button",{className:o.menuItem,onClick:()=>h("ambient"),children:[t("span",{children:"Ambient Light"}),t("span",{className:o.currentValue,children:$.enabled?"On":"Off"})]})]}),rt=()=>t($n,{classes:{item:o.menuItem,active:o.active},options:I.map((v,K)=>({key:String(K),label:v.quality,selected:K===T})),onSelect:v=>c(Number(v))}),ie=()=>t($n,{classes:{item:o.menuItem,active:o.active},options:[{key:"off",label:"Off",selected:!w},...C.map((v,K)=>({key:String(K),label:v.label||v.language,selected:K===r}))],onSelect:v=>he(v==="off"?-1:Number(v))}),ht=()=>t(Os,{classes:{item:o.menuItem,active:o.active},values:{fontSize:X.subtitleFontSize,position:X.subtitlePosition,bgOpacity:X.subtitleBgOpacity,bgColor:X.subtitleBgColor,textColor:X.subtitleTextColor,edge:X.subtitleEdge,bold:X.subtitleBold},onChange:M}),Ze=()=>t(Fo,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},delayMs:Qe,onDelayChange:v=>A?.(v)}),W=()=>t($n,{classes:{item:o.menuItem,active:o.active},options:ee.map((v,K)=>({key:String(K),label:v.label||v.language,selected:K===u})),onSelect:v=>Ce(Number(v))}),De=()=>t(Vs,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},enabled:we,delayMs:pe,onToggle:v=>fe?.(v),onDelayChange:v=>k?.(v),onCalibrate:bt}),Oe=()=>$&&ce?t(Fs,{classes:{item:o.menuItem,active:o.active,note:o.menuNote},values:$,onChange:ce}):null;return t("div",{"data-speed-boost-ignore":"true",onClick:v=>v.stopPropagation(),children:t(Ds,{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"&&Xe(),s==="resolution"&&rt(),s==="subtitles"&&ie(),s==="subtitle-style"&&ht(),s==="subtitle-timing"&&Ze(),s==="audio"&&W(),s==="av-sync"&&De(),s==="ambient"&&Oe()]})})},Uo=({player:s,title:h,episodeLabel:z,audioTracks:L,selectedAudioTrack:M,onAudioTrackChange:I,subtitles:T,selectedSubtitle:c,onSubtitleChange:i,streams:C,resolutionIdx:r,onResolutionChange:w,onBack:he,children:ee,videoDelayEnabled:u=!1,onVideoDelayToggle:Ce,videoDelayMs:we=0,onVideoDelayChange:fe,onCalibrateAvSync:pe,subtitleDelayMs:k=0,onSubtitleDelayChange:bt,showNextEpisodeButton:Qe=!1,onNextEpisode:A,isLoading:$=!1,isTheaterMode:ce,onTheaterModeToggle:X,ambientSettings:Xe,onAmbientChange:rt})=>{const{state:ie,refs:ht,actions:Ze}=s,W=ht.videoRef,{subtitleFontSize:De,subtitlePosition:Oe,subtitleBgOpacity:v,subtitleBgColor:K,subtitleTextColor:Be,subtitleEdge:se,subtitleBold:ft}=ie,[Ve,Se]=_(null),pt=V(null),[_e,vt]=_(0);g(()=>{const Ee=W.current;if(!Ee)return;const y=()=>vt(Ee.clientHeight||0);y();const qe=new ResizeObserver(y);return qe.observe(Ee),()=>qe.disconnect()},[W]);const ue=Ze.setSubtitleStyle;g(()=>{const Ee="tv-player-subtitle-style";let y=document.getElementById(Ee);y||(y=document.createElement("style"),y.id=Ee,document.head.appendChild(y));const qe={fontSize:De,position:Oe,bgOpacity:v,bgColor:K,textColor:Be,edge:se,bold:ft},te=W.current,Ne=Fn(De,_e||te?.clientHeight||720);if(y.textContent=hs({...qe,fontSize:Ne}),te){const St=()=>{const B=Number(Oe);return isNaN(B)?0:Math.max(0,Math.min(100,B))},_t=(B,Z)=>{try{const ne=B;ne.snapToLines=!1,ne.line=Z}catch{}},Tt=()=>{const B=Ne*16,Z=te.videoHeight||te.clientHeight||720,ne=te.videoWidth||te.clientWidth||1280;return{step:B*1.3/Z*100,chars:Math.max(20,Math.floor(ne/(B*.55)))}},Ct=B=>{const Z=Math.max(0,Math.min(100,100-St())),ne=Array.from(B.activeCues??[]);if(ne.length<=1){ne.forEach(j=>_t(j,Z));return}const{step:b,chars:d}=Tt();let de=Z;for(let j=ne.length-1;j>=0;j--){const $t=String(ne[j].text??"").replace(/<[^>]*>/g,"").split(`
|
|
2
|
-
`).reduce((Nt,dn)=>Nt+Math.max(1,Math.ceil(dn.length/d)),0),Et=de-$t*b;_t(ne[j],Math.max(0,Et)),de=Et-b*.4}},et=()=>{const B=Math.max(0,Math.min(100,100-St()));Array.from(te.textTracks).forEach(Z=>{Z.cues&&(Array.from(Z.cues).forEach(ne=>_t(ne,B)),Z.mode==="showing"&&Ct(Z))})};et();const oe=B=>{const Z=B.target;Z.mode==="showing"&&Ct(Z)},zt=()=>{Array.from(te.textTracks).forEach(B=>{B.removeEventListener("cuechange",oe),B.addEventListener("cuechange",oe)}),et()};Array.from(te.textTracks).forEach(B=>{B.addEventListener("cuechange",oe)}),te.textTracks.addEventListener("addtrack",zt);const Me=Array.from(te.querySelectorAll("track")),kt=()=>et();return Me.forEach(B=>B.addEventListener("load",kt)),()=>{Array.from(te.textTracks).forEach(B=>{B.removeEventListener("cuechange",oe)}),te.textTracks.removeEventListener("addtrack",zt),Me.forEach(B=>B.removeEventListener("load",kt))}}},[De,Oe,v,K,Be,se,ft,c,T,W,_e]);const Pe=T.length>0,ke=c>=0,st=()=>{Se("main"),Ze.setShowControls(!0)},Fe=()=>{Se(null)},Rt=ie.showControls||!!Ve,gt=t(vs,{visible:Rt,title:h,episode:z,onBack:he,classes:{overlay:o.controlsOverlay,hidden:o.hidden,top:o.topControls,backBtn:o.backBtn,titleInfo:o.videoTitleInfo,title:o.animeTitle,episode:o.episodeLabel}}),Je=!$&&!ie.isBuffering&&ie.duration>0?t(fs,{}):null,cn=t(Vo,{player:s,visible:Rt,settingsOpen:!!Ve,onOpenSettings:st,onCloseSettings:Fe,hasSubtitles:Pe,isSubtitleActive:ke,subtitles:T,onSubtitleChange:i,showNextEpisodeButton:Qe,onNextEpisode:A,isTheaterMode:ce,onTheaterModeToggle:X,timeLabelRef:pt}),yt=Ve?t(qo,{view:Ve,onSelectView:Se,onClose:Fe,player:s,onSubtitleStyleChange:ue,streams:C,resolutionIdx:r,onResolutionChange:w,hasSubtitles:Pe,subtitles:T,selectedSubtitle:c,isSubtitleActive:ke,onSubtitleChange:i,audioTracks:L,selectedAudioTrack:M,onAudioTrackChange:I,videoDelayEnabled:u,onVideoDelayToggle:Ce,videoDelayMs:we,onVideoDelayChange:fe,onCalibrate:()=>{Se(null),pe?.()},subtitleDelayMs:k,onSubtitleDelayChange:bt,ambientSettings:Xe,onAmbientChange:rt}):null,Y=t(Ge,{children:[$&&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})]})}),ie.isBuffering&&!$&&t("div",{className:o.bufferingOverlay,"aria-hidden":"true",children:t("div",{className:o.bufferingSpinner})}),ie.isSpeedBoostActive&&t("div",{className:o.speedBoostBadge,"aria-hidden":"true",children:[t("span",{children:"2x"}),t(be,{name:"forward",size:12})]})]});return t(ps,{engine:s.engine,topBar:gt,centerControls:Je,bottomBar:!$&&ie.duration>0?cn:null,settingsPanel:yt,overlays:Y,isInteracting:!!Ve||ie.showVolumeSlider,nativeControls:ie.useNativeControls,onStageClick:Fe,className:ie.isFullscreen?o.fullscreenFlat:"",children:ee})},Ho=({servers:s,selectedServer:h,onServerSelect:z})=>s.length===0?null:t("div",{className:on.sourceSelectionContainer,children:[t("h4",{children:"Source"}),t("div",{className:on.sourceButtons,children:s.map(L=>t("button",{className:`${on.sourceButton} ${h===L?on.active:""}`,onClick:()=>z(L),children:L},L))})]}),Wo=Jr.memo(Ho);function Ko({details:s,isMovie:h,season:z,episode:L,videoRef:M,active:I}){const T=V("");T.current||(T.current=`tv-${Date.now()}-${Math.random().toString(36).slice(2)}`);const c=N(()=>{if(!s)return;const i=M.current,C=h?"":`S${String(z).padStart(2,"0")}E${String(L).padStart(2,"0")}`;mt.discord.tvPresence.mutate({title:s.title,episodeLabel:C,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:T.current}).catch(()=>{}),mt.discord.heartbeat.mutate({sessionId:T.current}).catch(()=>{})},[s,h,z,L,M]);return g(()=>{if(!s)return;c();const i=window.setInterval(()=>{const C=M.current;(!C||!C.paused)&&c()},15e3);return()=>window.clearInterval(i)},[c,s,M]),g(()=>{if(!s||!I)return;const i=M.current;if(!i)return;const C=()=>c();return i.addEventListener("play",C),i.addEventListener("pause",C),i.addEventListener("seeked",C),()=>{i.removeEventListener("play",C),i.removeEventListener("pause",C),i.removeEventListener("seeked",C)}},[s,I,c,M]),g(()=>{const i=T.current,C=()=>rs(i),r=()=>C();return window.addEventListener("pagehide",r),window.addEventListener("beforeunload",r),()=>{window.removeEventListener("pagehide",r),window.removeEventListener("beforeunload",r),C()}},[]),{sendPresence:c}}function Yo(s,h,z){const L=()=>{const I=Array.isArray(s.audioTracks)?s.audioTracks.length:0,T=z.getWant(),c=I>0?Math.min(Math.max(0,T),I-1):T;s.audioTrack=c,c!==T&&z.onResolve(c)},M=(I,T)=>{const c=z.getWant(),i=Array.isArray(s.audioTracks)?s.audioTracks.length:0;if(T.id!==c&&c>=0&&c<i){s.audioTrack!==c&&(s.audioTrack=c);return}z.onResolve(T.id)};return s.on(h.MANIFEST_PARSED,L),s.on(h.AUDIO_TRACK_SWITCHED,M),()=>{s.off(h.MANIFEST_PARSED,L),s.off(h.AUDIO_TRACK_SWITCHED,M)}}const jo=/\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 Go(){try{if(jo.test(navigator.userAgent||""))return!0;const s=navigator.deviceMemory;if(typeof s=="number"&&s>0&&s<2)return!0}catch{}return!1}const Qo="_statusMsg_zqb8u_1",Xo="_error_zqb8u_7",Zo="_spinner_zqb8u_11",Jo="_spin_zqb8u_11",ea="_sourceLoader_zqb8u_16",ta="_ringSpinner_zqb8u_22",na="_meta_zqb8u_40",ra="_year_zqb8u_48",sa="_rating_zqb8u_53",oa="_typeBadge_zqb8u_62",aa="_tv_zqb8u_70",ia="_movie_zqb8u_75",la="_controlLabel_zqb8u_80",ca="_select_zqb8u_90",ua="_playerSection_zqb8u_102",da="_video_zqb8u_106",ma="_videoHidden_zqb8u_128",ba="_delayCanvas_zqb8u_133",ha="_delayCanvasActive_zqb8u_146",fa="_subtitleOverlay_zqb8u_150",pa="_videoIframe_zqb8u_169",va="_retryButton_zqb8u_177",ga="_sidebarSeason_zqb8u_192",ya="_mobileSeasonRow_zqb8u_208",Sa="_providerSelectWrap_zqb8u_222",_a="_genreRow_zqb8u_230",Ta="_genreChip_zqb8u_237",Ca="_metaRow_zqb8u_247",ka="_detailGrid_zqb8u_256",Ea="_detailItem_zqb8u_264",Na="_imdbLink_zqb8u_286",p={statusMsg:Qo,error:Xo,spinner:Zo,spin:Jo,sourceLoader:ea,ringSpinner:ta,meta:na,year:ra,rating:sa,typeBadge:oa,tv:aa,movie:ia,controlLabel:la,select:ca,playerSection:ua,video:da,videoHidden:ma,delayCanvas:ba,delayCanvasActive:ha,subtitleOverlay:fa,videoIframe:pa,retryButton:va,sidebarSeason:ga,mobileSeasonRow:ya,providerSelectWrap:Sa,genreRow:_a,genreChip:Ta,metaRow:Ca,detailGrid:ka,detailItem:Ea,imdbLink:Na},Ia=[],Aa=[];function mr({error:s,onRetry:h}){return t("div",{className:`${p.statusMsg} ${p.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:p.retryButton,onClick:h,children:"Retry"})]})})}const Ha=()=>{const{id:s}=es(),[h]=ts(),z=V(h);z.current=h;const L=ns(),M=ms(),I=h.get("type"),T=ss(),c=!!T.session,i=c&&!T.session?.host,C=i&&["tv","movie"].includes(T.room?.selection.kind||"")?T.room?.selection:null,[r,w]=_(null),[he,ee]=_(()=>parseInt(h.get("s")||"1",10)||1),u=C?.season??he,[Ce,we]=_([]),[fe,pe]=_(()=>parseInt(h.get("e")||"1",10)||1),k=C?Number(C.episode):fe,[bt,Qe]=_(()=>{try{return O.getItem("tvProvider")||""}catch{return""}}),A=C?.provider??bt,[$,ce]=_([]),[X,Xe]=_(""),{options:rt,isFallback:ie,isLoading:ht}=Us(),Ze=ye(()=>rt.filter(e=>(e.kind??"tv")==="tv").map(e=>({id:e.id,label:e.label,tier:e.tier==="embed"?"embed":"direct",servers:e.servers})),[rt]),W=ie||Ze.length===0?Ia:Ze,De=W.filter(e=>e.tier==="direct"),Oe=W.filter(e=>e.tier==="embed"),[v,K]=_(!1),[Be,se]=_(""),[ft,Ve]=_([]),[Se,pt]=_(0),[_e,vt]=_([]),[ue,Pe]=_(-1),[ke,st]=_(0),[Fe,Rt]=_(""),[gt,Je]=_(""),[cn,yt]=_(()=>{try{return O.getItem("tvServer")||""}catch{return""}}),Y=C?.source??cn,Ee=ye(()=>W.find(e=>e.id===A),[W,A]),y=Ee?.tier==="embed",[qe,te]=_([]),[Ne,St]=_(""),[_t,Tt]=_(""),[Ct,et]=_(!1),oe=ye(()=>qe.length>0?qe:Ee?.servers??[],[qe,Ee]),zt=ye(()=>Ne&&!c?["Embed",...oe]:oe,[oe,Ne,c]),Me=Ct&&!!Ne,kt=Me?_t||Ne:"";g(()=>{if(!Ne){Tt("");return}let e=!1;return Rn(`/api/resolve?url=${encodeURIComponent(Ne)}`).then(n=>{!e&&n.finalUrl&&Tt(n.finalUrl)}).catch(()=>{}),()=>{e=!0}},[Ne]);const B=V([]);g(()=>{B.current=$},[$]);const Z=V(Se);g(()=>{Z.current=Se},[Se]);const ne=V(ue);g(()=>{ne.current=ue},[ue]);const b=gs({skipIntervals:Aa}),d=b.refs.videoRef,de=V(null),j=V([]),un=V(null),$t=V(null),{videoDelayMs:Et,videoDelayEnabled:Nt,setDelayEnabled:dn,handleVideoDelayChange:qn,isCalibrating:hr,testClipActive:Ie,stopCalibration:mn,openAvSyncCalibrator:fr,cancelAvSyncCalibrator:pr,applyAvSyncCalibrator:vr,toggleTestClip:gr,calibReturnRef:Dt,effectiveVideoDelayMs:bn}=ys(d),[ot,yr]=_(()=>{try{const e=Number(O.getItem("tvSubtitleDelayMs"));if(Number.isFinite(e)&&e>=-6e4&&e<=6e4)return Math.round(e)}catch{}return 0}),hn=V(ot);hn.current=ot;const Sr=N(e=>{const n=Math.max(-6e4,Math.min(6e4,Math.round(e)));if(hn.current!==n){hn.current=n,yr(n);try{O.setItem("tvSubtitleDelayMs",String(n))}catch{}}},[]);Ss({videoRef:d,canvasRef:un,delayMs:bn,enabled:Nt});const fn=Nt,ve=fn||ot!==0,{settings:pn,update:_r}=_s(),vn=V(ve);vn.current=ve;const gn=N(()=>{if(!vn.current)return;const e=d.current;e&&Array.from(e.textTracks).forEach(n=>{n.mode!=="hidden"&&(n.mode="hidden")})},[d]),{hasConsent:It,grant:Tr}=os(),f=I==="movie";Ko({details:r,isMovie:f,season:u,episode:k,videoRef:d,active:!y&&!v&&!Be&&$.length>0});const Ot=s?as(I||"tv",s):"",re=Ot,Re=`${re}:${u}:${k}:${A}:${Y}`,Vt=ye(()=>!s||!r||y||Me||v||X!==Re||$[ke]?.type!=="hls"?null:{kind:f?"movie":"tv",...f?{}:{season:u},showId:s,episode:String(f?1:k),provider:A,source:Y,mode:"sub",title:r.title},[s,r,y,Me,v,X,Re,$,ke,f,u,k,A,Y]),Un=Ts(b.engine,Vt,v||!r),Hn=Hs(),Ft=Ws(),qt=Ks(),{toggle:Wn,bookmarkedIds:Cr,pending:kr}=Ys(),{data:Kn}=js(r?Ot:void 0),At=Kn?!!Kn.inLibrary:Ot?Cr.has(Ot):!1,Er=N(()=>{!r||!s||Wn({tmdbId:Number(s),mediaType:I||"tv",title:r.title,poster:r.poster,year:r.year,adult:r.adult})},[r,s,I,Wn]),{data:at,isFetched:Yn,isFetching:yn}=Gs(re||void 0,u,k),Ut=ye(()=>Ce.map(e=>e.episode_number).sort((e,n)=>e-n),[Ce]),xt=Ut.indexOf(k),Sn=xt>0?Ut[xt-1]:null,F=xt>=0&&xt<Ut.length-1?Ut[xt+1]:null,Ht=ye(()=>(r?.seasons??[]).map(e=>e.season_number).filter(e=>Number.isFinite(e)).sort((e,n)=>e-n),[r]),Ue=ye(()=>{if(f||F!=null)return null;const e=Ht.indexOf(u);return e>=0&&e<Ht.length-1?Ht[e+1]:(r?.number_of_seasons??0)>u?u+1:null},[f,F,Ht,u,r?.number_of_seasons]),jn=at?.currentTime??0,Wt=V(null),[He,Kt]=_(!1),[it,Gn]=_(0),[Lt,Qn]=_(!1),[lt,ct]=_(!1),[Nr,_n]=_(!1),[Ir,Ar]=_(""),[Yt,xr]=_(!1),[Lr,Tn]=_(!1),{isTheaterMode:ze,toggleTheaterMode:Cn,handleLayoutClick:wr}=Cs();g(()=>{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"&&Cn()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[Cn]),ks(b,($.length>0||gt!=="")&&!ze&&!He&&!lt);const Br=Js(),[ut,Pr]=_(Xs),Mr=N(e=>{Pr(e),Zs(e)},[]),We=V(!1),$e=V(null),kn=V(0),J=V(null),jt=V(""),Rr=ur(jn),wt=!c&&!We.current&&(He||lt||Rr),Gt=V(wt);Gt.current=wt;const Qt=V(!1);g(()=>{Qt.current=Lt},[Lt]);const Ke=N((e,n)=>{if(!re||!n||n<30)return;const a=an(e,n);Math.abs(e-kn.current)<10&&!a||(kn.current=e,Hn.mutate({mediaId:re,season:u,episode:k,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:I||"tv",adult:r?.adult?1:0}))},[re,u,k,Hn,r,I]),Ae=N((e,n)=>{mn();const a=new URLSearchParams(h);a.set("type",h.get("type")||"tv"),a.set("s",String(e)),a.set("e",String(n)),L(`${window.location.pathname}?${a.toString()}`)},[h,L,mn]),Bt=N(()=>{const e=d.current;if(!e||f||F==null){_n(!1);return}const n=e.duration||0,a=e.currentTime||0;_n(n>0&&a/n>=.8)},[f,F,d]),Xt=N((e,n)=>["tv-sources",A,f?"movie":"tv",s,e,n,Y],[A,f,s,Y]),Zt=N(async(e,n)=>{if(!r||!s||!A)return{valid:!1,sources:[]};const a=f?"movie":"tv",l=await mt.tv.sources.query({provider:A,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||"",...Y?{server:Y}:{}});return{valid:"valid"in l?l.valid:!1,error:"error"in l?l.error:void 0,sources:l.sources,referer:"referer"in l?l.referer:void 0,audioTracks:l.audioTracks,subtitles:"subtitles"in l?l.subtitles:void 0,servers:"servers"in l?l.servers:void 0,server:"server"in l?l.server:void 0,embedUrl:"embedUrl"in l?l.embedUrl:void 0}},[r,s,A,f,Y]),Xn=N(()=>{if(f||!r||!s||!A||y||F==null)return;const e=Xt(u,F);M.getQueryState(e)?.status!=="success"&&M.prefetchQuery({queryKey:e,queryFn:()=>Zt(u,F),staleTime:300*1e3,gcTime:1800*1e3})},[f,r,s,A,y,F,u,M,Xt,Zt]),zr=N(()=>{if(Ie)return;Bt();const e=d.current;!e||e.paused||e.ended||(e.duration>0&&e.duration-e.currentTime<=60&&Xn(),!$e.current&&($e.current=setTimeout(()=>{$e.current=null,Ke(e.currentTime,e.duration||0)},5e3)))},[Ke,d,Ie,Bt,Xn]),$r=N(()=>{const e=d.current;if(!(!e||!r)&&($e.current&&clearTimeout($e.current),$e.current=null,Ke(e.currentTime,e.duration||0),!i)){if(F!=null){ut&&(pe(F),Ae(u,F));return}Ar(f?r.title:`${r.title} - Season ${u}`),ct(!0),We.current=!0}},[f,r,u,F,ut,Ke,Ae,d,i]),{checkEnd:Jt,logDuration:Zn}=Es({videoRef:d,sourceType:y?"iframe":void 0,resetKey:`${re}:${u}:${k}`,onEnd:$r}),Dr=N(()=>{b.actions.onPlay()},[b.actions]),Or=N(()=>{b.actions.onPause();const e=d.current;e&&!e.ended&&Ke(e.currentTime,e.duration||0)},[b.actions,Ke,d]),Vr=N(()=>{const e=d.current;if(e){try{const n=parseFloat(O.getItem("playerVolume")||"");isNaN(n)||(e.volume=Math.max(0,Math.min(1,n))),e.muted=O.getItem("playerMuted")==="true"}catch{}if(J.current!=null&&J.current>0){try{e.currentTime=J.current}catch{}J.current=null}Bt()}},[d,Bt]),En=N(()=>{const e=d.current;if(e&&J.current!=null&&J.current>0){try{e.currentTime=J.current}catch{}J.current=null}},[d]),Fr=N(()=>{it>0&&(J.current=it);const e=d.current;if(e&&it>0){try{e.currentTime=it,J.current=null}catch{}e.play().catch(()=>{})}Kt(!1),We.current=!0},[it,d]),Jn=N(()=>{J.current=null;const e=d.current;e&&(e.currentTime=0,e.play().catch(()=>{})),Kt(!1),We.current=!0},[d]),qr=N(()=>{F!=null&&(We.current=!0,pe(F),Ae(u,F))},[F,u,Ae]),Ur=N(()=>{Ue!=null&&(ct(!1),We.current=!0,ee(Ue),pe(1),Ae(Ue,1))},[Ue,Ae]),Hr=N(async()=>{if(re)try{At?await Ft.mutateAsync({id:re,status:"Completed"}):r&&s&&(await qt.mutateAsync({tmdbId:Number(s),mediaType:I||"tv",title:r.title,poster:r.poster,backdrop:r.backdrop,year:r.year,overview:r.overview,adult:r.adult,status:"Completed",silent:!0}),cr.success("Moved to Completed")),ct(!1),L("/")}catch{}},[re,At,Ft,qt,r,s,I,L]);g(()=>{We.current=!1,Wt.current=null,Kt(!1),_n(!1),Gn(0),Qn(!1),Qt.current=!1,J.current=null,kn.current=0},[re,u,k]),g(()=>{jt.current=Re},[Re]),g(()=>{Yn&&(Qn(!0),Qt.current=!0)},[Yn,re,u,k]),g(()=>{if(c||yn||!at||We.current)return;const e=`${re}:${u}:${k}`;if(Wt.current===e)return;Wt.current=e;const n=at,a=n.currentTime??0;ur(a)&&n.completed!==1&&!an(a,n.duration??0)&&(Gn(a),Kt(!0))},[at,yn,re,u,k,c]),g(()=>{!c&&He&&d.current&&d.current.pause()},[He,d,c]),g(()=>{const e=d.current;return()=>{$e.current&&clearTimeout($e.current),$e.current=null,!e?.ended&&b.engine.getState().duration>0&&Ke(b.engine.getTimeline().currentTime,b.engine.getState().duration)}},[b.engine,Ke,d]);const Nn=N(e=>{let n=null,a=!0;try{n=O.getItem("tvLastSubtitle"),a=O.getItem("tvSubtitlesEnabled")!=="false"}catch{}return Vn(e,{lastKey:n,enabled:a})},[]),In=N(e=>{if(!(e<0))try{O.setItem("tvSubtitlesEnabled","true"),O.setItem("tvSelectedSubtitle",String(e))}catch{}},[]),er=N(e=>{if(e.length===0)return 0;let n=null;try{n=O.getItem("tvLastAudio")}catch{}if(n){const a=e.findIndex(U=>zn(U)===n);if(a>=0)return a;const l=n.indexOf("|||"),m=l>=0?n.slice(0,l):n,x=l>=0?n.slice(l+3):n,q=e.findIndex(U=>U.language===m||U.label===x);if(q>=0)return q}return Vn(e,{lastKey:null,enabled:!0})},[]),{data:tr}=Qs(re||void 0),nr=ye(()=>(tr?.progress??[]).filter(n=>n.season===u&&(n.completed===1||an(n.currentTime,n.duration))).map(n=>String(n.episode)),[tr,u]),rr=ye(()=>Ce.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})),[Ce]),sr=ye(()=>(r?.genres??[]).map(e=>e.name).slice(0,5),[r]),An=ye(()=>[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]);g(()=>{if(!i&&W.length!==0&&!W.some(e=>e.id===A)){const e=W.find(n=>n.tier==="direct")?.id??W[0].id;Qe(e);try{O.setItem("tvProvider",e)}catch{}}},[W,A,i]),g(()=>{te([]),St(""),Tt(""),et(!1)},[A]),g(()=>{if(!i&&oe.length!==0&&!oe.includes(Y)){yt(oe[0]);try{O.setItem("tvServer",oe[0])}catch{}}},[oe,Y,i]),g(()=>{if(!s){w(null),ce([]),Xe(""),se(""),Je("");return}const e=Number(s),n=I||"tv";w(null),ce([]),Xe(""),se(""),Je("");const a=parseInt(z.current.get("s")||"",10),l=parseInt(z.current.get("e")||"",10);ee(isNaN(a)?1:a),pe(isNaN(l)?1:l),st(0),mt.tv.details.query({type:n,id:String(e)}).then(m=>{const x={id:m.id,title:m.title||"",overview:m.overview||"",vote_average:m.vote_average,year:m.year,poster:m.poster,backdrop:m.backdrop,imdb_id:m.imdb_id||void 0,adult:m.adult,seasons:m.seasons,number_of_seasons:m.number_of_seasons};w(x),x.seasons&&x.seasons.length>0&&isNaN(a)&&ee(x.seasons[0].season_number)}).catch(()=>{})},[s,I]),g(()=>{if(!r||!s)return;if(!(r.seasons!==void 0||r.number_of_seasons!==void 0)){we([]);return}const n=parseInt(h.get("e")||"",10);mt.tv.episodes.query({id:String(s),season:String(u)}).then(a=>{const l=(a.episodes||[]).map(m=>({episode_number:m.episode_number,name:m.name||"",vote_average:m.vote_average,overview:m.overview||"",still_path:m.still_path||""}));we(l),l.length!==0&&pe(m=>!isNaN(n)&&l.some(x=>x.episode_number===n)?n:l.some(x=>x.episode_number===m)?m:l[0].episode_number)}).catch(()=>{})},[r,s,u,h]),g(()=>{if(!y||!r||!s)return;Rn(`/api/tv/embed/${A}/${f?"movie":"tv"}/${s}?season=${u}&episode=${k}`).then(n=>{if(n.url)return Je(n.url),Rn(`/api/resolve?url=${encodeURIComponent(n.url)}`).then(a=>{a.finalUrl&&Je(a.finalUrl)})}).catch(()=>{})},[A,r,s,u,k,f,y]);const en=N(async()=>{if(!r||!s||!A||y||r.adult&&!It)return;const e=Re;K(!0),se(""),B.current.length===0&&(ce([]),st(0),Ve([]),vt([]));try{const n=await M.fetchQuery({queryKey:Xt(u,k),queryFn:()=>Zt(u,k),staleTime:3e5,gcTime:18e5});if(jt.current!==e)return;if(K(!1),!n.valid||!n.sources?.length){se(n.error?`${n.error}`:oe.length>0?`No streams from ${Y}. Try another server.`:"No streams available.");return}if(c&&Y&&n.server&&n.server!==Y){ce([]),se("The host's selected server is unavailable. Automatic source switching is disabled in watch-along rooms.");return}!i&&!Y&&n.server&&yt(n.server);const a=c?n.sources.filter(U=>U.type==="hls"):n.sources;if(c&&a.length===0){ce([]),se("The room requires a direct HLS source. No compatible stream is available here.");return}ce(a),Xe(e),n.servers?.length&&te(n.servers),n.embedUrl&&St(n.embedUrl),st(0),n.referer&&Rt(n.referer);const l=n.audioTracks||[];Ve(l),pt(l.length>0?er(l):0);const m=n.subtitles||[];if(vt(m),m.length>0){const U=Nn(m);Pe(U),In(U)}else Pe(-1);const x=f?"movie":"tv",q=s;mt.tv.subtitles.query({type:x,tmdbId:String(q),season:String(u),episode:String(k)}).then(U=>{if(jt.current!==e)return;const ge=Array.isArray(U.subtitles)?U.subtitles:[];ge.length!==0&&vt(S=>{const G=[...S,...ge.filter(Q=>!S.some(D=>D.url===Q.url))];if(S.length===0){const Q=Nn(G);Pe(Q),In(Q)}return G})}).catch(()=>{}),se("")}catch(n){if(jt.current!==e)return;K(!1),se(n instanceof Error?n.message:"Failed to load streams.")}},[r,s,A,u,k,f,y,It,oe,Y,Nn,In,er,M,Xt,Zt,Re,c,i]),xn=N(()=>{const e=d.current;e&&!isNaN(e.currentTime)&&(J.current=e.currentTime)},[d]),Wr=N(e=>{if(!(i||c&&e==="Embed")){if(e==="Embed"){et(!0);return}xn(),et(!1),yt(e);try{O.setItem("tvServer",e)}catch{}se("")}},[xn,i,c]),Kr=N(e=>{Qe(e);try{O.setItem("tvProvider",e)}catch{}},[]);g(()=>{A&&r&&!y&&en()},[A,r,en,y]),g(()=>{if(!d.current)return;if(de.current=null,y||Me||c&&$[ke]?.type!=="hls"){b.engine.unload();return}if(Ie&&!c)return b.engine.loadSource({url:"/av-sync-test.mp4"},{autoPlay:!Gt.current});if(Dt.current!=null&&(J.current=Dt.current,Dt.current=null),X===Re&&J.current==null&&!Gt.current)try{const S=d.current;S&&!S.ended&&S.currentTime>1&&(J.current=S.currentTime)}catch{}const n=J.current??0,a=!v&&X===Re?Me?"":$[ke]?.url||"":"";if(!a){try{d.current?.pause(),d.current?.removeAttribute("src"),d.current?.load()}catch{}return}const l=d.current;l.pause(),l.removeAttribute("src"),l.load(),b.actions.resetMediaState();const m=`/api/tv/stream-proxy?url=${encodeURIComponent(a)}&referer=${encodeURIComponent(Fe)}&provider=${encodeURIComponent(A)}`,x=Go()||document.body.classList.contains("low-end"),q=x?60:180,U=b.engine.loadSource({url:m,hls:$[ke]?.type==="hls"},{hlsConfig:{enableWorker:!0,lowLatencyMode:!1,startPosition:n>0?n:-1,maxBufferLength:q,maxMaxBufferLength:q+(x?30:60),backBufferLength:x?30:60,maxBufferSize:(x?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:(S,G)=>{de.current=S;const Q=()=>{let R=!1,P=0;try{R=O.getItem("tvSubtitlesEnabled")==="true";const E=parseInt(O.getItem("tvSelectedSubtitle")||"0",10);!isNaN(E)&&E>=0&&(P=E)}catch{}return{enabled:R,index:P}},D=()=>{if(typeof S.subtitleTrack!="number")return;if(j.current.length>0){S.subtitleTrack=-1;return}const R=Array.isArray(S.subtitleTracks)?S.subtitleTracks:[];if(R.length===0){S.subtitleTrack=-1;return}const P=Q();if(P.enabled){const E=P.index<R.length?P.index:0;S.subtitleTrack=E,Pe(E),gn()}else S.subtitleTrack=-1};Yo(S,G.Events,{getWant:()=>Z.current,onResolve:R=>pt(R)}),S.on(G.Events.MANIFEST_PARSED,D),S.on(G.Events.SUBTITLE_TRACKS_UPDATED,()=>{D()}),S.on(G.Events.SUBTITLE_TRACK_SWITCH,(R,P)=>{if(j.current.length>0){if(P.id!==-1)try{S.subtitleTrack=-1}catch{}return}const E=Array.isArray(S.subtitleTracks)?S.subtitleTracks:[];if(E.length!==0){if(P.id===-1){const Te=Q();if(Te.enabled){const ae=Te.index<E.length?Te.index:0;S.subtitleTrack=ae;return}}Pe(P.id),gn()}})},onReady:()=>{(n>0||!Gt.current&&Qt.current)&&b.engine.play()},onError:S=>{se(S.message),K(!1),de.current=null}}),ge=()=>{const Q=l.error?.code===4?"Video source not supported or not found":"Failed to load video stream";se(`${Q}. The source may be invalid or expired. Try switching source or reloading.`),K(!1)};return l.addEventListener("error",ge),()=>{U(),de.current=null,l.removeEventListener("error",ge)}},[$,X,v,ke,A,Fe,y,Me,d,Dt,Ie,re,u,k,En,gn,b.actions,b.engine,Re,c]),g(()=>{if(i||!Lt||He||lt||wt||y||Ie)return;const e=d.current;!e||!e.paused||e.ended||e.readyState<1||(En(),b.engine.play())},[Lt,He,lt,wt,y,Ie,En,d,i,b.engine]),g(()=>{const e=de.current;!e||typeof e.audioTrack!="number"||(e.audioTrack=Se)},[Se]),g(()=>{const e=de.current;!e||typeof e.subtitleTrack!="number"||!Array.isArray(e.subtitleTracks)||e.subtitleTracks.length===0||j.current.length>0||(ue>=0?e.subtitleTrack=ue:e.subtitleTrack=-1)},[ue]),g(()=>{const e=d.current;if(!(!e||y)&&(e.querySelectorAll("track").forEach(n=>n.remove()),j.current=[],_e.length!==0&&(_e.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 l=`/api/subtitle-proxy?url=${encodeURIComponent(n.url)}&referer=${encodeURIComponent(Fe)}`;a.src=l,a.addEventListener("load",()=>{const m=j.current.indexOf(a),x=a.track;if(x&&m>=0){const q=m===ne.current;x.mode=q&&!vn.current?"showing":"hidden"}}),e.appendChild(a),j.current.push(a)}),_e.length>0)))try{const n=de.current;n&&typeof n.subtitleTrack=="number"&&n.subtitleTrack!==-1&&(n.subtitleTrack=-1)}catch{}},[_e,Fe,y,A,d]),g(()=>{const e=d.current;if(!e||y)return;const n=de.current;j.current.length>0&&n&&typeof n.subtitleTrack=="number"&&Array.isArray(n.subtitleTracks)&&n.subtitleTracks.length>0&&(n.subtitleTrack=-1);const a=()=>{const x=Fn(b.state.subtitleFontSize,e.clientHeight||720),q=Math.max(0,Math.min(100,100-b.state.subtitlePosition)),U=()=>{const D=x*16,R=e.videoHeight||e.clientHeight||720,P=e.videoWidth||e.clientWidth||1280;return{step:D*1.3/R*100,chars:Math.max(20,Math.floor(P/(D*.55)))}},ge=(D,R)=>{const P=D;P.snapToLines=!1,P.line=R},S=D=>{if(!D.cues)return;Array.from(D.cues).forEach(ae=>ge(ae,q));const R=Array.from(D.activeCues??[]);if(R.length<=1){R.forEach(ae=>ge(ae,q));return}const{step:P,chars:E}=U();let Te=q;for(let ae=R.length-1;ae>=0;ae--){const Ye=String(R[ae].text??"").replace(/<[^>]*>/g,"").split(`
|
|
3
|
-
`).reduce((nn,Pt)=>nn+Math.max(1,Math.ceil(Pt.length/E)),0);Te=Math.max(0,Te-Ye*P),ge(R[ae],Te),Te-=P*.4}},G=j.current;if(G.length>0){G.forEach((D,R)=>{const P=D.track;if(!P)return;const E=R===ue;P.mode=E&&!ve?"showing":"hidden",E&&!ve&&S(P)});return}const Q=Array.from(e.textTracks);Q.length!==0&&Q.forEach((D,R)=>{const P=R===ue;D.mode=P&&!ve?"showing":"hidden",P&&!ve&&S(D)})};a();const l=()=>a();e.textTracks.addEventListener("addtrack",l),e.addEventListener("loadedmetadata",a,{once:!0});const m=window.setTimeout(a,600);return()=>{e.textTracks.removeEventListener("addtrack",l),e.removeEventListener("loadedmetadata",a),window.clearTimeout(m)}},[ue,_e,y,A,d,ve,b.state.subtitleFontSize,b.state.subtitlePosition]),g(()=>{if(!ve)return;const e=d.current,n=$t.current;if(!e||!n)return;const a=ot/1e3,l=bn/1e3,m=new Set;let x=[],q=-1,U=-1,ge=-1,S=-1,G=0,Q=0,D=!1;const R=()=>{const H=ne.current;if(H<0)return null;const je=j.current;return je.length>0?je[H]?.track??null:Array.from(e.textTracks)[H]??null},P=(H,je)=>{const me=H.cues;if(!me||me.length===0)return Array.from(H.activeCues??[]);let tt=0,nt=me.length;for(;tt<nt;){const xe=tt+nt>>>1;me[xe].endTime+a<je?tt=xe+1:nt=xe}const Mt=[];for(let xe=tt;xe<me.length;xe++){const rn=me[xe];if(rn.startTime+a>je)break;rn.endTime+a>=je&&Mt.push(rn)}return Mt},E=()=>{const H=R(),je=e.currentTime-l,me=H?P(H,je):[],tt=e.clientWidth,nt=e.clientHeight,Mt=e.videoWidth,xe=e.videoHeight;if(me.length===x.length&&me.every((Bn,Pn)=>Bn===x[Pn])&&tt===q&&nt===U&&Mt===ge&&xe===S||(x=me,q=tt,U=nt,ge=Mt,S=xe,n.textContent="",me.length===0))return;const ir={fontSize:Fn(b.state.subtitleFontSize,nt),position:b.state.subtitlePosition,bgOpacity:b.state.subtitleBgOpacity,bgColor:b.state.subtitleBgColor,textColor:b.state.subtitleTextColor,edge:b.state.subtitleEdge,bold:b.state.subtitleBold},Qr=Ns(ir),Xr=Is(e,ir.position);me.forEach((Bn,Pn)=>{const lr=String(Bn.text??"");if(!As(lr).trim())return;const Mn=document.createElement("div"),Zr=(me.length-1-Pn)*1.7;Mn.style.cssText=`${Qr}
|
|
4
|
-
bottom: calc(${Xr}px + ${Zr}em);`,Mn.innerHTML=xs(lr),n.appendChild(Mn)})},Te=()=>{Array.from(e.textTracks).forEach(H=>{m.has(H)||(m.add(H),H.addEventListener("cuechange",E))})},ae=()=>{Te(),E()},wn=()=>{if(D||Q)return;const H=()=>{Q=0,!(D||e.paused||e.ended)&&(E(),wn())};Q=window.requestAnimationFrame(H)},Ye=e,nn=()=>{G=0,E(),!D&&Ye.requestVideoFrameCallback&&(G=Ye.requestVideoFrameCallback(nn))},Pt=()=>{E(),Ye.requestVideoFrameCallback?G||(G=Ye.requestVideoFrameCallback(nn)):wn()};Te(),e.textTracks.addEventListener("addtrack",ae),e.textTracks.addEventListener("removetrack",ae),e.addEventListener("timeupdate",E),e.addEventListener("seeked",E),e.addEventListener("loadedmetadata",E),e.addEventListener("play",Pt);const or=Array.from(e.querySelectorAll("track"));or.forEach(H=>H.addEventListener("load",E));const ar=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>E());return ar?.observe(e),E(),Pt(),()=>{D=!0,m.forEach(H=>H.removeEventListener("cuechange",E)),e.textTracks.removeEventListener("addtrack",ae),e.textTracks.removeEventListener("removetrack",ae),e.removeEventListener("timeupdate",E),e.removeEventListener("seeked",E),e.removeEventListener("loadedmetadata",E),e.removeEventListener("play",Pt),or.forEach(H=>H.removeEventListener("load",E)),ar?.disconnect(),Q&&window.cancelAnimationFrame(Q),G&&Ye.cancelVideoFrameCallback&&Ye.cancelVideoFrameCallback(G),n.textContent=""}},[ve,ot,ue,_e,bn,d,b.state.subtitleFontSize,b.state.subtitlePosition,b.state.subtitleBgOpacity,b.state.subtitleBgColor,b.state.subtitleTextColor,b.state.subtitleEdge,b.state.subtitleBold]);const Ln=()=>{w(null),ce([]),Je(""),L(-1)},Yr=N(e=>{i||(ee(e),pe(1),Ae(e,1))},[Ae,i]),tn=!f&&r?.seasons&&r.seasons.length>1?t("label",{className:p.sidebarSeason,children:[t("span",{children:"Season"}),t("select",{disabled:i,value:u,onChange:e=>Yr(parseInt(e.currentTarget.value,10)||1),className:p.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,dt=N(e=>{if(i)return;const n=parseInt(e,10);if(!isNaN(n)){try{d.current?.pause()}catch{}pe(n),Ae(u,n)}Tn(!1)},[u,Ae,d,i]);g(()=>{if(f)return;const e=n=>{n.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||n.key.toLowerCase()==="n"&&(F!=null?dt(String(F)):cr.error("No next episode available"))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[f,F,dt]);const jr=e=>{pt(e);try{const a=ft[e];a&&O.setItem("tvLastAudio",zn(a))}catch{}const n=de.current;n&&n.audioTrack!==void 0&&(n.audioTrack=e)},Gr=e=>{Pe(e);try{if(e===-1)O.setItem("tvSubtitlesEnabled","false");else{O.setItem("tvSubtitlesEnabled","true"),O.setItem("tvSelectedSubtitle",String(e));const m=_e[e];m&&O.setItem("tvLastSubtitle",zn(m))}}catch{}const n=d.current,a=de.current;if(a&&typeof a.subtitleTrack=="number"&&Array.isArray(a.subtitleTracks)&&a.subtitleTracks.length>0&&(a.subtitleTrack=j.current.length>0||e<0?-1:e),!n)return;const l=j.current;if(l.length>0){l.forEach((m,x)=>{const q=m.track;if(!q)return;const U=x===e;q.mode=U&&!ve?"showing":"hidden"});return}Array.from(n.textTracks).forEach((m,x)=>{const q=x===e;m.mode=q&&!ve?"showing":"hidden"})};return g(()=>{if(!r){document.title="TV & Movies - dango";return}document.title=f?`${r.title} - dango`:`${r.title} - Season ${u} Episode ${k} - dango`},[r,f,u,k]),g(()=>{if(!r||f)return;const e=new URLSearchParams(h),n=e.get("s"),a=e.get("e"),l=String(u),m=String(k);n===l&&a===m||(e.set("type",h.get("type")||"tv"),e.set("s",l),e.set("e",m),L(`${window.location.pathname}?${e.toString()}`,{replace:!0}))},[r,f,u,k,h,L]),t("div",{className:`${Le.playerPageLayout} ${ze?Le.theaterMode:""} ${f?Le.noSidebar:""}`,onClick:wr,children:[ze&&t(Ls,{videoRef:d,active:pn.enabled&&!y&&$.length>0&&!Be&&!(r?.adult&&!It),settings:pn}),!ze&&!f&&t("aside",{className:Le.episodeSidebar,children:r?t(ws,{episodes:rr,currentEpisode:String(k),watchedEpisodes:nr,onEpisodeClick:dt,header:tn}):t(Bs,{variant:"sidebar"})}),t("div",{className:Le.playerMain,children:[r&&t("div",{className:p.playerSection,onContextMenu:e=>e.preventDefault(),style:r.adult&&!It?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:y&>&&!c?t("iframe",{src:gt,className:p.videoIframe,allow:"autoplay; fullscreen",allowFullScreen:!0}):!y&&kt&&!c?t("iframe",{src:kt,className:p.videoIframe,allow:"autoplay; fullscreen",allowFullScreen:!0}):!y&&($.length>0||v)?t(Ge,{children:[Be&&t(mr,{error:Be,onRetry:en}),t(Uo,{player:b,title:r.title,episodeLabel:f?void 0:`S${u} E${k}`,audioTracks:ft,selectedAudioTrack:Se,onAudioTrackChange:jr,subtitles:_e,selectedSubtitle:ue,onSubtitleChange:Gr,streams:$,resolutionIdx:ke,onResolutionChange:e=>{xn(),st(e)},onBack:Ln,videoDelayEnabled:Nt,onVideoDelayToggle:dn,videoDelayMs:Et,onVideoDelayChange:qn,onCalibrateAvSync:c?void 0:fr,subtitleDelayMs:ot,onSubtitleDelayChange:Sr,showNextEpisodeButton:!i&&Nr&&!He&&!lt,onNextEpisode:qr,isLoading:v,isTheaterMode:ze,onTheaterModeToggle:Cn,ambientSettings:pn,onAmbientChange:_r,children:[t(ds,{autoPlay:!c&&Lt&&!wt,playsInline:!0,disablePictureInPicture:!0,className:`${p.video} ${fn?p.videoHidden:""}`,onTimeUpdate:()=>{Ie||(zr(),Jt())},onEnded:()=>{Ie||Jt(!0)},onPlay:Dr,onPause:Or,onSeeked:()=>{Ie||(Bt(),Jt())},onLoadedMetadata:()=>{Vr(),Zn(),Jt()},onDurationChange:()=>{Zn()},onContextMenu:e=>e.preventDefault(),onError:()=>{se("Video failed to load. Try another server or reload."),K(!1)}}),t("canvas",{ref:un,className:`${p.delayCanvas} ${fn?p.delayCanvasActive:""}`}),ve&&t("div",{ref:$t,className:p.subtitleOverlay}),t(Ps,{isOpen:hr,ms:Et,onChange:qn,onApply:vr,onClose:pr,testClipActive:Ie,onTestClip:gr})]})]}):Be&&!y?t(mr,{error:Be,onRetry:en}):null}),t(to,{playback:Vt?{selection:Vt,position:d.current?.currentTime||0,playing:!1,rate:b.engine.getState().playbackRate}:null,onCreate:()=>{mn(),b.engine.pause()},needsPlayback:Un.needsPlayback,onEnablePlayback:Un.enablePlayback}),c&&!v&&r&&!Vt&&t("p",{role:"alert",children:"The host's direct HLS source is unavailable here. Retry or leave the room to use another source."}),!ze&&r&&t(Ms,{}),!ze&&tn&&t("div",{className:p.mobileSeasonRow,children:tn}),!ze&&r&&t("div",{className:le.streamPanel,children:[t("div",{className:p.providerSelectWrap,children:t("label",{className:p.controlLabel,children:["Provider",t("select",{value:A,onChange:e=>Kr(e.currentTarget.value),className:p.select,disabled:i||W.length===0,children:ht?t("option",{value:"",children:"Loading..."}):W.length===0?t("option",{value:"",children:"No providers available"}):t(Ge,{children:[De.length>0&&t("optgroup",{label:"Direct HLS",children:De.map(e=>t("option",{value:e.id,children:e.label},e.id))}),Oe.length>0&&t("optgroup",{label:"Embeds",children:Oe.map(e=>t("option",{value:e.id,children:e.label},e.id))})]})})]})}),!i&&!y&&(v?t("div",{className:p.sourceLoader,children:t("div",{className:p.ringSpinner})}):t(Wo,{servers:zt,selectedServer:Ct?"Embed":Y,onServerSelect:Wr}))]}),!ze&&r&&t("div",{className:Le.playerInfoContainer,children:[t("div",{className:Le.playerInfoHeader,children:[t("div",{className:Le.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:Le.videoTitleSection,children:[t("div",{className:le.titleContainer,children:[t("h1",{children:r.title}),t("div",{className:p.meta,children:[t("span",{className:p.year,children:r.year}),r.vote_average!=null&&r.vote_average>0&&t("span",{className:p.rating,children:[t(be,{name:"star",size:12}),Number(r.vote_average).toFixed(1)]}),t("span",{className:`${p.typeBadge} ${p[f?"movie":"tv"]}`,children:f?"Movie":"TV Show"})]}),sr.length>0&&t("div",{className:p.genreRow,children:sr.map(e=>t("span",{className:p.genreChip,children:e},e))}),An.length>0&&t("div",{className:p.metaRow,children:An.map((e,n)=>t("span",{children:[e,n<An.length-1?" · ":""]},`${e}-${n}`))})]}),t("div",{className:le.controls,children:[t("button",{className:`${le.watchlistBtn} ${At?le.inList:""}`,onClick:Er,disabled:kr,type:"button",children:[At?t(be,{name:"check",size:14}):t(be,{name:"plus",size:14}),At?"In Watchlist":"Add to Watchlist"]}),!f&&t(Ge,{children:[t("button",{className:`${le.watchlistBtn}`,onClick:()=>Sn!=null&&dt(String(Sn)),disabled:i||Sn==null,type:"button",children:[t(be,{name:"chevron-left",size:14}),"Prev EP"]}),t("button",{className:`${le.watchlistBtn}`,onClick:()=>F!=null&&dt(String(F)),disabled:i||F==null,type:"button",children:["Next EP",t(be,{name:"chevron-right",size:14})]}),!f&&t("button",{className:`${le.watchlistBtn} ${le.modeToggleBtn} ${ut?le.modeToggleActive:""}`,onClick:()=>Mr(!ut),type:"button","aria-pressed":ut,children:ut?"AUTOPLAY: ON":"AUTOPLAY: OFF"}),Br&&t("button",{className:`${le.watchlistBtn}`,onClick:()=>Tn(!0),type:"button",children:[t(be,{name:"list-ul",size:14}),"Episodes"]})]})]})]})]}),t("div",{className:Le.infoColumns,children:[t("div",{className:`${le.descriptionSection} ${le.synopsisFlat}`,children:[t("h3",{children:"Synopsis"}),t(eo,{text:r.overview,emptyText:"No description available."}),t("button",{className:le.detailsToggleBtn,onClick:()=>xr(!Yt),type:"button",children:[Yt?t(be,{name:"chevron-up"}):t(be,{name:"chevron-down"}),Yt?"Hide Details":"Show Details"]})]}),Yt&&t("div",{className:p.detailGrid,children:[r.first_air_date&&t("div",{className:p.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:p.detailItem,children:[t("strong",{children:"Last Air Date"}),t("span",{children:r.last_air_date})]}),r.networks&&r.networks.length>0&&t("div",{className:p.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:p.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:p.detailItem,children:[t("strong",{children:"Episode Runtime"}),t("span",{children:[r.episode_run_time[0]," min"]})]}),r.imdb_id&&t("div",{className:p.detailItem,children:[t("strong",{children:"IMDb"}),t("a",{href:`https://www.imdb.com/title/${r.imdb_id}`,target:"_blank",rel:"noopener noreferrer",className:p.imdbLink,children:"View on IMDb"})]})]})]})]}),!f&&t(Rs,{isOpen:Lr,onClose:()=>Tn(!1),episodes:rr,currentEpisode:String(k),watchedEpisodes:nr,onEpisodeClick:dt,header:tn}),r?.adult&&!It&&t(qs,{isOpen:!0,onClose:Ln,onGrant:Tr}),t(zs,{isOpen:!c&&He&&!yn&&Wt.current===`${re}:${u}:${k}`&&at?.completed!==1&&!an(jn,at?.duration??0),onClose:Jn,title:"Resume Watching",message:t(Ge,{children:["You were at ",t("strong",{children:On(it)})]}),restartLabel:"Start from Beginning",onResume:Fr,onRestart:Jn}),t($s,{isOpen:lt,onClose:()=>ct(!1),title:f?"Movie Completed!":Ue!=null?"Season Complete!":"Show Completed!",heading:Ir,message:f?"You finished this movie!":Ue!=null?`You finished Season ${u}.`:"Congratulations! You finished all available episodes.",children:[t(sn,{variant:"secondary",onClick:()=>ct(!1),children:"Close"}),Ue!=null?t(sn,{onClick:Ur,children:["Start Season ",Ue]}):t(Ge,{children:[t(sn,{onClick:()=>{ct(!1),Ln()},children:"Back to Details"}),t(sn,{onClick:Hr,disabled:Ft.isPending||qt.isPending,children:Ft.isPending||qt.isPending?"Saving...":"Move to Completed"})]})]}),!r&&t("div",{className:p.statusMsg,children:[t(be,{name:"spinner",className:p.spinner})," Loading..."]})]})]})};export{Ha as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
._panel_n8xyd_1{padding:1rem;margin:.75rem 0;border:1px solid var(--border-primary);border-radius:12px;background:var(--bg-elevated);color:var(--text-primary)}._heading_n8xyd_10,._actions_n8xyd_11,._members_n8xyd_12{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}._name_n8xyd_19{display:block;margin:.75rem 0}._name_n8xyd_19 small{color:var(--text-secondary)}._heading_n8xyd_10{justify-content:space-between}._panel_n8xyd_1 p{font-size:.875rem;line-height:1.5;margin:.75rem 0 0;color:var(--text-secondary)}._panel_n8xyd_1 input{box-sizing:border-box;width:100%;padding:.75rem;margin-top:.75rem;border:1px solid var(--border-primary);border-radius:8px;background:var(--bg-primary);color:var(--text-primary)}._members_n8xyd_12{padding:0;list-style:none;font-size:.875rem}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as l,u as s,L as f}from"./vendor-core-DfaOB3Rn.js";import{a2 as m,B as r}from"./index-DYanm9eZ.js";const _="_panel_n8xyd_1",x="_heading_n8xyd_10",C="_actions_n8xyd_11",b="_members_n8xyd_12",k="_name_n8xyd_19",a={panel:_,heading:x,actions:C,members:b,name:k};function N(){const n=m();return s("label",{className:a.name,children:["Display name",s("input",{value:n.displayName,onChange:t=>n.setDisplayName(t.currentTarget.value),maxLength:32,placeholder:"Your name (optional)",autoComplete:"nickname"}),s("small",{children:"Remembered for this profile on this browser."})]})}function W({playback:n,onCreate:t,needsPlayback:u,onEnablePlayback:g}){const e=m(),[p,c]=l(!1),[h,i]=l(""),[y,v]=l(!1),d=e.session?`${e.workerUrl}/join#${e.session.id}.${e.session.guestToken}`:"";return s("section",{className:a.panel,"aria-label":"Watch along",children:[s("div",{className:a.heading,children:[s("strong",{children:["Watch along",e.session?e.session.host?" · You are hosting":" · Following host":""]}),e.session?s("div",{className:a.actions,children:[s(r,{size:"sm",variant:"secondary",onClick:async()=>{v(!0);try{await navigator.clipboard.writeText(d),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:a.actions,children:[t&&s(r,{size:"sm",loading:p,disabled:!n||!e.workerUrl,onClick:async()=>{if(n){c(!0),i("");try{t(),await e.create({...n,playing:!1})}catch(o){i(o instanceof Error?o.message:"Could not create room")}finally{c(!1)}}},children:"Create room"}),s(f,{to:"/watch-along",children:"Join a room"})]})]}),s(N,{}),!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:a.members,children:e.room.members.map((o,w)=>s("li",{children:[o.name||(o.host?"Host":`Guest ${w+1}`),o.name&&o.host?" (host)":"",o.id===e.selfId?" (you)":"",": ",o.status]},o.id))}),u&&s(r,{size:"sm",onClick:g,children:"Enable playback"}),y&&e.session&&s("input",{"aria-label":"Room invite",readOnly:!0,value:d,onFocus:o=>o.currentTarget.select()}),(e.error||h)&&s("p",{role:"status",children:e.error||h})]})}export{W,N as a,a as s};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
._container_vk8jv_1{position:relative;display:flex;align-items:center}._bellBtn_vk8jv_7{background:#00000026;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_vk8jv_7:hover{background:#00000040;border-color:#ffffff59;transform:scale(1.05)}._bellBtn_vk8jv_7:focus-visible{outline:none;box-shadow:var(--shadow-focus)}@media(max-width:848px){._bellBtn_vk8jv_7{width:36px;height:36px;font-size:1.05rem;padding:var(--space-1)}}@media(max-width:480px){._bellBtn_vk8jv_7{width:36px;height:36px;font-size:.95rem}}._badge_vk8jv_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_vk8jv_1 .5s ease-out;line-height:1}@keyframes _bounce_vk8jv_1{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}._dropdown_vk8jv_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_vk8jv_1 .3s ease}@keyframes _slideIn_vk8jv_1{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}._dropdownHeader_vk8jv_127{padding:var(--space-4);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-primary)}._dropdownHeader_vk8jv_127 h4{margin:0;font-size:1rem;color:var(--text-primary)}._clearAllBtn_vk8jv_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_vk8jv_141:hover{background:var(--accent-subtle);border-color:var(--border-accent);color:var(--accent-lighter)}._discoveryStatusRow_vk8jv_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_vk8jv_170{width:8px;height:8px;border-radius:50%;flex-shrink:0}._statusDotRunning_vk8jv_177{background:var(--accent);animation:_statusPulse_vk8jv_1 1.2s ease-in-out infinite}._statusDotOk_vk8jv_182{background:var(--color-success)}._statusDotInfo_vk8jv_186{background:var(--color-info)}._statusDotError_vk8jv_190{background:var(--color-danger)}._statusDotIdle_vk8jv_194{background:var(--text-muted)}@keyframes _statusPulse_vk8jv_1{0%,to{opacity:1}50%{opacity:.35}}._list_vk8jv_208{overflow-y:auto;flex:1}._list_vk8jv_208::-webkit-scrollbar{width:4px}._list_vk8jv_208::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:2px}._item_vk8jv_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_vk8jv_222:hover{background:#ffffff0d}._thumbnail_vk8jv_237{width:48px;height:64px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;box-shadow:0 2px 8px #0000004d}._itemInfo_vk8jv_246{flex:1;min-width:0}._itemTitle_vk8jv_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_vk8jv_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_vk8jv_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_vk8jv_272:hover{background:#ffffff2e}._removeItem_vk8jv_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_vk8jv_222:hover ._removeItem_vk8jv_289{opacity:1}@media(hover:none),(pointer:coarse){._removeItem_vk8jv_289{opacity:1}}._removeItem_vk8jv_289:hover{color:var(--color-danger)}._queueItem_vk8jv_319:hover{color:var(--color-success)}._emptyState_vk8jv_323{padding:var(--space-10) var(--space-4);text-align:center;color:var(--text-muted);font-size:.9rem}@media(max-width:768px){._dropdown_vk8jv_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_vk8jv_7{width:36px;height:36px;font-size:1rem}._removeItem_vk8jv_289{padding:var(--space-2);min-width:36px;min-height:36px}._badge_vk8jv_56{top:5px;right:6px;font-size:.58rem;min-width:16px;height:16px;padding:0 3px}}@media(max-width:480px){._bellBtn_vk8jv_7{width:38px;height:38px;font-size:1.1rem}}._notificationDivider_vk8jv_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_1f1e7_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_1f1e7_1._hidden_1f1e7_21{transform:translateY(-100%)}._header_1f1e7_1._scrolled_1f1e7_25{background-color:#0c0c0fd1;border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 8px 32px #00000073}._logo_1f1e7_31{display:flex;align-items:center;justify-content:center;padding:4px;border-radius:var(--radius-md);transition:opacity var(--transition-base)}._logo_1f1e7_31:hover{opacity:.8}._headerInner_1f1e7_44{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_1f1e7_54{display:flex;align-items:center;gap:var(--space-2)}._desktopNav_1f1e7_60{display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-6)}._navLink_1f1e7_67{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_1f1e7_67:hover{color:var(--text-primary);background:#ffffff0f}._navLinkActive_1f1e7_83{color:#fff;font-weight:600;background:#ffffff1a}._navLinkActive_1f1e7_83: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_1f1e7_102{display:flex;align-items:center;gap:var(--space-3)}._searchWrapper_1f1e7_108{display:flex;align-items:center;gap:8px}._searchInput_1f1e7_114{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_1f1e7_114::placeholder{color:#ffffffb3}._searchWrapper_1f1e7_108:focus-within ._searchInput_1f1e7_114{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_1f1e7_144{background:#00000026;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_1f1e7_144:hover{background:#00000040;border-color:#ffffff59}._searchIcon_1f1e7_168{font-size:1rem;color:#fff;transition:all var(--transition-base)}._searchButton_1f1e7_144:hover ._searchIcon_1f1e7_168{color:var(--accent)}._profileBtn_1f1e7_178{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:#00000026;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text-primary)}._profileBtn_1f1e7_178:hover{border-color:#ffffff59;transform:translateY(-2px);background:#00000040}._profileBtn_1f1e7_178:active{transform:scale(.95)}._profileBtn_1f1e7_178 svg{color:var(--text-primary);font-size:1.1rem}._profileAvatar_1f1e7_213{width:50px;height:50px;display:flex;flex-shrink:0}._profileName_1f1e7_220{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-sm);font-weight:500}._hamburgerBtn_1f1e7_229{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_1f1e7_229:hover{background:#ffffff0f}._hamburgerBtn_1f1e7_229:active{transform:scale(.95)}._mobileSearchBar_1f1e7_256{display:none}@media(max-width:1024px){._searchInput_1f1e7_114{display:none}._searchWrapper_1f1e7_108:focus-within ._searchInput_1f1e7_114{display:none}._mobileSearchBar_1f1e7_256{display:block;position:absolute;top:100%;left:0;right:0;background:#0c0c0fe6;padding:var(--space-2) var(--space-3);animation:_slideDown_1f1e7_1 .2s ease;transition:transform var(--transition-base),opacity var(--transition-base)}._mobileSearchBarHidden_1f1e7_283{transform:translateY(-100%);opacity:0;pointer-events:none}@keyframes _slideDown_1f1e7_1{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}._mobileSearchInner_1f1e7_300{display:flex;align-items:center;background:#ffffff14;border:none;border-radius:var(--radius-full);padding:0 var(--space-4);height:40px}._mobileSearchInner_1f1e7_300:focus-within{border:none;outline:none;box-shadow:0 0 0 2px var(--accent)}._mobileSearchIcon_1f1e7_316{color:#ffffff80;font-size:.85rem;flex-shrink:0;margin-right:var(--space-2)}._mobileSearchInput_1f1e7_323{flex:1;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;height:100%}._mobileSearchInput_1f1e7_323::placeholder{color:#ffffff80}._mobileSearchInput_1f1e7_323:focus,input._mobileSearchInput_1f1e7_323:focus,._mobileSearchInput_1f1e7_323:focus-visible,input._mobileSearchInput_1f1e7_323:focus-visible{outline:none!important;box-shadow:none!important;border:none}}@media(max-width:848px){._header_1f1e7_1{height:64px;padding:0 var(--space-3);--logo-height: 36px}._headerInner_1f1e7_44{padding:0;max-width:none}._leftSection_1f1e7_54{gap:var(--space-1);min-width:0}._hamburgerBtn_1f1e7_229{height:36px;width:36px;font-size:.9rem}._logo_1f1e7_31{padding:2px;min-width:0}._searchButton_1f1e7_144{width:36px;height:36px}._rightSection_1f1e7_102{gap:2px}._profileBtn_1f1e7_178{height:36px}._profileAvatar_1f1e7_213{width:36px;height:36px}._profileName_1f1e7_220{max-width:84px}}@media(max-width:900px){._desktopNav_1f1e7_60{display:none}}@media(max-width:480px){._rightSection_1f1e7_102{gap:4px}._hamburgerBtn_1f1e7_229{height:38px;width:38px;font-size:1rem}._logo_1f1e7_31{padding:2px;min-width:0}._searchButton_1f1e7_144{width:38px;height:38px}._profileBtn_1f1e7_178{width:38px;height:38px;padding:0}._profileAvatar_1f1e7_213{width:38px;height:38px}._profileName_1f1e7_220{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);--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;--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;--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}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{u as t,A as w,q as E,h as j,d as P,T as te,$ as ct}from"./vendor-core-DfaOB3Rn.js";import{p as M,L as qe,B as G,$ as se,l as lt,aa as Re,q as K,a6 as dt,t as ut,g as pt,a2 as ft,ab as je,ac as mt}from"./index-DYanm9eZ.js";import{I as Y}from"./vendor-icons-DrybRNxP.js";import{S as Fe,a as ht,f as He,m as yt,h as bt,d as gt,s as ee,k as _t,u as vt,n as ie}from"./PlayerProvider-BXBzQc8G.js";import{u as St}from"./vendor-query-BBT5_sHx.js";import{i as ce,a as wt}from"./playbackCompletion-CxGa4g7a.js";const Ct="_controls_pcbjf_1",kt="_titleContainer_pcbjf_9",xt="_scheduleInfo_pcbjf_15",Tt="_status_pcbjf_23",Lt="_nextEpisode_pcbjf_35",Nt="_watchlistBtn_pcbjf_45",Pt="_inList_pcbjf_72",Bt="_queueBtn_pcbjf_83",Et="_queueActive_pcbjf_95",At="_modeToggleBtn_pcbjf_101",It="_modeToggleActive_pcbjf_108",$t="_markWatchedBtn_pcbjf_129",Mt="_markWatchedDone_pcbjf_143",Rt="_streamPanel_pcbjf_154",jt="_desktopEpisodeActions_pcbjf_168",Ft="_sourceLoader_pcbjf_174",Dt="_episodeActions_pcbjf_187",Ot="_mobileEpisodeActions_pcbjf_201",qt="_episodeNavBtn_pcbjf_205",Ht="_primary_pcbjf_235",Wt="_secondary_pcbjf_245",zt="_episodePickerBtn_pcbjf_249",Vt="_queueCountdown_pcbjf_253",Kt="_speedBoostBadge_pcbjf_268",Ut="_videoContainer_pcbjf_299",Qt="_loadingOverlay_pcbjf_312",Gt="_loadingDots_pcbjf_326",Yt="_dot_pcbjf_331",Xt="_bounce_pcbjf_1",Jt="_bufferingOverlay_pcbjf_348",Zt="_bufferingSpinner_pcbjf_357",er="_spin_pcbjf_444",tr="_videoIframe_pcbjf_366",rr="_videoElementHidden_pcbjf_389",nr="_upscalerCanvas_pcbjf_394",sr="_upscalerActive_pcbjf_407",ar="_upscalerStatusBadge_pcbjf_411",or="_subtitleOverlay_pcbjf_426",ir="_spinner_pcbjf_444",cr="_errorOverlay_pcbjf_505",lr="_retryButton_pcbjf_515",dr="_detailsToggleBtn_pcbjf_528",ur="_descriptionSection_pcbjf_551",pr="_synopsisFlat_pcbjf_559",fr="_fullscreenActive_pcbjf_593",mr="_errorSubtext_pcbjf_636",Qn={controls:Ct,titleContainer:kt,scheduleInfo:xt,status:Tt,nextEpisode:Lt,watchlistBtn:Nt,inList:Pt,queueBtn:Bt,queueActive:Et,modeToggleBtn:At,modeToggleActive:It,markWatchedBtn:$t,markWatchedDone:Mt,streamPanel:Rt,desktopEpisodeActions:jt,sourceLoader:Ft,episodeActions:Dt,mobileEpisodeActions:Ot,episodeNavBtn:qt,primary:Ht,secondary:Wt,episodePickerBtn:zt,queueCountdown:Vt,speedBoostBadge:Kt,videoContainer:Ut,loadingOverlay:Qt,loadingDots:Gt,dot:Yt,bounce:Xt,bufferingOverlay:Jt,bufferingSpinner:Zt,spin:er,videoIframe:tr,videoElementHidden:rr,upscalerCanvas:nr,upscalerActive:sr,upscalerStatusBadge:ar,subtitleOverlay:or,spinner:ir,errorOverlay:cr,retryButton:lr,detailsToggleBtn:dr,descriptionSection:ur,synopsisFlat:pr,fullscreenActive:fr,errorSubtext:mr},hr="_playerPageLayout_13s1u_1",yr="_noSidebar_13s1u_15",br="_episodeSidebar_13s1u_19",gr="_playerMain_13s1u_32",_r="_videoPlayerWrapper_13s1u_40",vr="_playerInfoHeader_13s1u_56",Sr="_playerAnimeCard_13s1u_62",wr="_playerInfoContainer_13s1u_74",Cr="_infoColumns_13s1u_86",kr="_videoTitleSection_13s1u_114",xr="_theaterMode_13s1u_288",Gn={playerPageLayout:hr,noSidebar:yr,episodeSidebar:br,playerMain:gr,videoPlayerWrapper:_r,playerInfoHeader:vr,playerAnimeCard:Sr,playerInfoContainer:wr,infoColumns:Cr,videoTitleSection:kr,theaterMode:xr},Tr={fontSize:"subtitleFontSize",position:"subtitlePosition",bgOpacity:"subtitleBgOpacity",bgColor:"subtitleBgColor",textColor:"subtitleTextColor",edge:"subtitleEdge",bold:"subtitleBold"},U={fontSize:1.8,position:0,bgOpacity:.5,bgColor:"#000000",textColor:"#ffffff",edge:"shadow",bold:!1},fe=(e,n,s)=>Math.max(n,Math.min(s,e)),me=e=>typeof e=="string"&&/^#[0-9a-fA-F]{6}$/.test(e),le=(e,n,s,o)=>{try{const r=M.getItem(e);if(r===null)return n;const i=parseFloat(r);return Number.isFinite(i)?fe(i,s,o):n}catch{return n}};function Lr(){let e=U.edge,n=U.bgColor,s=U.textColor,o=U.bold;try{const r=M.getItem("subtitleEdge");(r==="shadow"||r==="outline"||r==="none")&&(e=r);const i=M.getItem("subtitleBgColor");me(i)&&(n=i);const c=M.getItem("subtitleTextColor");me(c)&&(s=c);const p=M.getItem("subtitleBold");p!==null&&(o=p==="true")}catch{}return{fontSize:le("subtitleFontSize",U.fontSize,.5,10),position:le("subtitlePosition",U.position,0,100),bgOpacity:le("subtitleBgOpacity",U.bgOpacity,0,1),bgColor:n,textColor:s,edge:e,bold:o}}function We(e,n){const s=`rgba(0, 0, 0, ${fe(n,0,1)})`;if(!me(e))return s;const o=parseInt(e.slice(1,3),16),r=parseInt(e.slice(3,5),16),i=parseInt(e.slice(5,7),16);return`rgba(${o}, ${r}, ${i}, ${fe(n,0,1)})`}function ze(e,n){return e==="none"?n<=0?"0 1px 3px rgba(0, 0, 0, 0.9)":"none":e==="outline"?["-1px 0 0 black","1px 0 0 black","0 -1px 0 black","0 1px 0 black","-1px -1px 0 black","1px -1px 0 black","-1px 1px 0 black","1px 1px 0 black","0 0 6px rgba(0, 0, 0, 0.9)"].join(", "):"0 0 4px black, 0 1px 2px rgba(0, 0, 0, 0.8)"}function Yn(e){return`
|
|
2
|
-
video::cue {
|
|
3
|
-
font-size: ${e.fontSize}rem !important;
|
|
4
|
-
color: ${e.textColor} !important;
|
|
5
|
-
background-color: ${We(e.bgColor,e.bgOpacity)} !important;
|
|
6
|
-
font-weight: ${e.bold?"bold":"normal"} !important;
|
|
7
|
-
text-shadow: ${ze(e.edge,e.bgOpacity)} !important;
|
|
8
|
-
}
|
|
9
|
-
`}function Xn(e){return[`font-size: ${e.fontSize}rem`,`color: ${e.textColor}`,`background-color: ${We(e.bgColor,e.bgOpacity)}`,`font-weight: ${e.bold?"700":"400"}`,`text-shadow: ${ze(e.edge,e.bgOpacity)}`,"padding: 0.2em 0.5em","border-radius: 0.25em","text-align: center","position: absolute","left: 50%","transform: translateX(-50%)","max-width: 92%","white-space: pre-wrap","overflow-wrap: break-word","line-height: 1.4"].join(`;
|
|
10
|
-
`)+";"}const Nr=new Set(["b","i","u","strong","em"]);function Jn(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/<(\/?)([a-zA-Z]+)>/g,(s,o,r)=>Nr.has(r.toLowerCase())?`<${o}${r.toLowerCase()}>`:s)}function Zn(e){return e.replace(/<[^>]*>/g,"")}const es=["#ffffff","#ffff00","#7CFC00","#00e5ff","#ff9ff3","#ffa502"],ts=["#000000","#1e272e","#2f3542","#3d0c02","#0c3d2e","#ffffff"];function rs(e,n){const s=Number.isFinite(e)?e*16:U.fontSize*16;return!Number.isFinite(n)||n<=0?s/16:Math.min(s,Math.max(13,n*.07))/16}function ns(e){const n=Math.abs(e/1e3).toFixed(1);return e>0?`+${n}s`:e<0?`-${n}s`:"0.0s"}function ss(e,n){const s=e.clientWidth||0,o=e.clientHeight||0,r=e.videoWidth>0&&e.videoHeight>0?e.videoWidth/e.videoHeight:0;let i=o;r>0&&s>0&&o>0&&(i=s/o>r?o:s/r);const c=Math.max(0,(o-i)/2),p=Math.max(0,Math.min(100,Number(n)||0))/100*i;return c+p}const as=({isOpen:e,onClose:n,title:s,heading:o,message:r,children:i})=>t(qe,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t(Y,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),t("p",{style:{fontSize:"1.1rem",fontWeight:600},children:o}),t("p",{style:{color:"var(--text-secondary)"},children:r}),i&&t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center",flexWrap:"wrap"},children:i})]})}),os=({isOpen:e,onClose:n,title:s,message:o,resumeLabel:r="Resume",restartLabel:i="Start Over",onResume:c,onRestart:p})=>t(qe,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t("p",{children:o}),t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[t(G,{variant:"secondary",onClick:p,children:i}),t(G,{onClick:c,children:r})]})]})}),Pr="_centerControls_bxt8c_1",Br="_centerSkipBtn_bxt8c_15",Er="_centerPlayPause_bxt8c_37",ae={centerControls:Pr,centerSkipBtn:Br,centerPlayPause:Er},is=()=>t("div",{className:ae.centerControls,onClick:e=>e.stopPropagation(),children:[t(Fe,{seconds:-10,className:ae.centerSkipBtn}),t(ht,{className:ae.centerPlayPause,"data-speed-boost-ignore":"true"}),t(Fe,{seconds:10,className:ae.centerSkipBtn})]}),cs=({visible:e,title:n,episode:s,onBack:o,classes:r})=>t("div",{className:`${r.overlay} ${e?"":r.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none"},children:t("div",{className:r.top,onClick:i=>i.stopPropagation(),children:[t("button",{className:r.backBtn,onClick:i=>{i.stopPropagation(),o()},title:"Back","aria-label":"Back",children:t(Y,{name:"chevron-left"})}),t("div",{className:r.titleInfo,children:[t("span",{className:r.title,children:n}),s&&t("span",{className:r.episode,children:s})]})]})});function Ar(e){return e instanceof Element&&!!e.closest('button, input, select, textarea, a, [role="button"], [role="slider"], [data-player-ui="true"]')}function ls({engine:e,topBar:n,centerControls:s,bottomBar:o,settingsPanel:r,overlays:i,isInteracting:c=!1,nativeControls:p=!1,chromeDisabled:a=!1,className:u,onStageClick:_,children:x}){const g=He(e),A=yt(),l=w(void 0),d=w(void 0),C=w(0),f=w(c);f.current=c;const h=E(()=>{clearTimeout(l.current),l.current=void 0},[]),y=E(()=>{h();const N=e.getState();!N.isPlaying||N.isScrubbing||f.current||p||(l.current=setTimeout(()=>{const b=e.getState();f.current||b.isScrubbing||!b.isPlaying||e.setShowControls(!1)},A?5e3:3e3))},[e,A,p,h]),B=E(()=>{e.setShowControls(!0),y()},[e,y]);bt(e,B,!p&&!a),j(()=>(c||g.isScrubbing||!g.isPlaying?(e.setShowControls(!0),h()):y(),h),[e,c,g.isPlaying,g.isScrubbing,g.showControls,h,y]),j(()=>()=>{clearTimeout(d.current)},[]);const m=N=>{if(Ar(N.target)||p||a)return;_?.();const b=Date.now();if(b-C.current<280){clearTimeout(d.current),d.current=void 0,C.current=0,e.toggleFullscreen();return}C.current=b,clearTimeout(d.current),d.current=setTimeout(()=>{d.current=void 0,e.setShowControls(!e.getState().showControls),y()},280)},T=g.showControls||g.isScrubbing||c||!g.isPlaying;return t(gt,{engine:e,children:t("div",{ref:e.containerRef,"data-player-root":"true",className:`${ee.shell} ${g.isFullscreen?ee.shellFullscreen:""} ${u??""}`,style:{cursor:!T&&g.isFullscreen?"none":"default"},onContextMenu:N=>N.preventDefault(),onPointerMove:N=>{N.pointerType==="mouse"&&B()},onFocusIn:B,onMouseLeave:()=>{window.matchMedia?.("(hover: hover) and (pointer: fine)").matches&&e.getState().isPlaying&&!f.current&&e.setShowControls(!1)},children:[t("div",{className:ee.stage,onClick:m,children:x}),i,(g.error||g.playBlocked)&&t("div",{className:ee.engineStatus,"data-player-ui":"true",children:t(_t,{})}),!a&&!p&&t("div",{className:ee.uiLayer,children:[t("div",{"data-player-ui":"true",children:n}),T&&s&&t("div",{"data-player-ui":"true",children:s}),t("div",{"data-player-ui":"true",children:o}),r&&t("div",{"data-player-ui":"true",children:r})]})]})})}const Ir=e=>(e.language??e.lang??"").toLowerCase(),$r=e=>(e.label??"").toLowerCase(),Mr=e=>`${e.language??e.lang??""}|||${e.label??""}`,Rr=e=>Ir(e).startsWith("en")||$r(e).includes("english");function ds(e,n){if(e.length===0||n?.enabled===!1)return-1;const s=n?.lastKey??null;if(s){const r=e.findIndex(i=>Mr(i)===s);if(r>=0)return r}const o=e.findIndex(Rr);return o>=0?o:0}const jr="_statusArea_1xccu_1",Fr="_toggleBtn_1xccu_20",Dr="_shortcuts_1xccu_46",Or="_shortcutGroup_1xccu_56",qr="_shortcut_1xccu_46",Hr="_key_1xccu_70",Wr="_label_1xccu_91",k={statusArea:jr,toggleBtn:Fr,shortcuts:Dr,shortcutGroup:Or,shortcut:qr,key:Hr,label:Wr},us=({showTheater:e=!0})=>{const[n,s]=P(!1);return t("div",{className:k.statusArea,children:[t("button",{type:"button",className:k.toggleBtn,onClick:()=>s(o=>!o),"aria-expanded":n,"aria-controls":"player-shortcuts",children:[t(Y,{name:"keyboard",size:14}),t("span",{children:"Keyboard Shortcuts"}),n?t(Y,{name:"chevron-up",size:12}):t(Y,{name:"chevron-down",size:12})]}),n&&t("div",{id:"player-shortcuts",className:k.shortcuts,children:[t("div",{className:k.shortcutGroup,children:[t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"↑"}),t("span",{className:k.key,children:"↓"}),t("span",{className:k.label,children:"Volume"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"←"}),t("span",{className:k.key,children:"→"}),t("span",{className:k.label,children:"Seek"})]})]}),t("div",{className:k.shortcutGroup,children:[t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"Space"}),t("span",{className:k.label,children:"Play/Pause"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"F"}),t("span",{className:k.label,children:"Fullscreen"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"M"}),t("span",{className:k.label,children:"Mute"})]}),e&&t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"T"}),t("span",{className:k.label,children:"Theater"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"N"}),t("span",{className:k.label,children:"Next"})]})]})]})]})},zr="_episodeListContainer_9tyin_1",Vr="_drawerContainer_9tyin_9",Kr="_episodeListHeader_9tyin_14",Ur="_drawerHeader_9tyin_20",Qr="_episodeListTitle_9tyin_29",Gr="_rangeSelector_9tyin_41",Yr="_rangeButton_9tyin_47",Xr="_active_9tyin_70",Jr="_episodeList_9tyin_1",Zr="_drawerList_9tyin_89",en="_episodeItem_9tyin_118",tn="_watched_9tyin_145",rn="_episodeThumb_9tyin_167",nn="_episodeText_9tyin_176",sn="_episodeLabel_9tyin_184",an="_episodeSub_9tyin_189",L={episodeListContainer:zr,drawerContainer:Vr,episodeListHeader:Kr,drawerHeader:Ur,episodeListTitle:Qr,rangeSelector:Gr,rangeButton:Yr,active:Xr,episodeList:Jr,drawerList:Zr,episodeItem:en,watched:tn,episodeThumb:rn,episodeText:nn,episodeLabel:sn,episodeSub:an},on=({episodes:e,currentEpisode:n,watchedEpisodes:s=[],onEpisodeClick:o,variant:r="sidebar",title:i="Episodes",header:c})=>{const[p,a]=P(0),u=w(null),_=te(()=>e.map(l=>typeof l=="string"?{id:l,label:`Episode ${l}`}:l),[e]),x=te(()=>new Set(s),[s]);j(()=>{const l=u.current;if(!l)return;let d=l.parentElement;for(;d;){const h=window.getComputedStyle(d);if((h.overflowY==="auto"||h.overflowY==="scroll")&&d.scrollHeight>d.clientHeight)break;d=d.parentElement}if(!d)return;const C=d.getBoundingClientRect(),f=l.getBoundingClientRect();d.scrollTop+=f.top+f.height/2-(C.top+d.clientHeight/2)},[n,p]);const g=te(()=>{if(_.length<=100)return[];const l=[];for(let d=0;d<_.length;d+=100){const C=d+1,f=Math.min(d+100,_.length);l.push(`${C}-${f}`)}return l},[_]),A=te(()=>{if(g.length===0)return _;const l=g[p];if(!l)return _;const[d,C]=l.split("-"),f=parseInt(d,10),h=parseInt(C,10);return _.slice(f-1,h)},[_,g,p]);return t("div",{className:`${L.episodeListContainer} ${r==="drawer"?L.drawerContainer:""}`,children:[t("div",{className:`${L.episodeListHeader} ${r==="drawer"?L.drawerHeader:""}`,children:[c,t("h3",{className:L.episodeListTitle,children:i}),g.length>0&&t("div",{className:L.rangeSelector,children:g.map((l,d)=>t("button",{className:`${L.rangeButton} ${p===d?L.active:""}`,onClick:()=>a(d),children:l},l))})]}),t("div",{className:`${L.episodeList} ${r==="drawer"?L.drawerList:""}`,children:A.map(l=>{const d=l.id===n,C=x.has(l.id)||l.watched===!0;return t("div",{ref:d?u:void 0,className:`${L.episodeItem} ${C?L.watched:""} ${d?L.active:""}`,onClick:()=>o(l.id),children:[l.thumbnail&&t("img",{src:l.thumbnail,alt:"",loading:"lazy",decoding:"async",className:L.episodeThumb}),t("span",{className:L.episodeText,children:[t("span",{className:L.episodeLabel,children:l.label??`Episode ${l.id}`}),l.sublabel&&t("span",{className:L.episodeSub,children:l.sublabel})]})]},l.id)})})]})},ps=({variant:e="sidebar",count:n=12})=>t("div",{className:`${L.episodeListContainer} ${e==="drawer"?L.drawerContainer:""}`,children:[t("div",{className:`${L.episodeListHeader} ${e==="drawer"?L.drawerHeader:""}`,children:[t("h3",{className:L.episodeListTitle,children:"Episodes"}),t("div",{className:L.rangeSelector,children:[t(se,{width:"60px",height:"28px",variant:"rectangular"}),t(se,{width:"60px",height:"28px",variant:"rectangular"}),t(se,{width:"60px",height:"28px",variant:"rectangular"})]})]}),t("div",{className:`${L.episodeList} ${e==="drawer"?L.drawerList:""}`,children:Array.from({length:n}).map((s,o)=>t("div",{className:L.episodeItem,style:{border:"none",background:"transparent"},children:t(se,{width:"120px",height:"1.2rem",variant:"text"})},o))})]}),cn="_shell_cys6s_1",ln="_overlay_cys6s_10",dn="_drawer_cys6s_21",un="_handle_cys6s_56",pn="_header_cys6s_64",fn="_headerCopy_cys6s_73",mn="_kicker_cys6s_79",hn="_title_cys6s_87",yn="_closeBtn_cys6s_94",bn="_body_cys6s_116",z={shell:cn,overlay:ln,drawer:dn,handle:un,header:pn,headerCopy:fn,kicker:mn,title:hn,closeBtn:yn,body:bn};function fs({isOpen:e,onClose:n,episodes:s,currentEpisode:o,watchedEpisodes:r=[],onEpisodeClick:i,title:c,header:p}){return j(()=>{if(!e)return;const a=_=>{_.key==="Escape"&&n()},u=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",a),()=>{document.body.style.overflow=u,document.removeEventListener("keydown",a)}},[e,n]),e?ct(t("div",{className:z.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[t("button",{className:z.overlay,type:"button",onClick:n,"aria-label":"Close episodes"}),t("aside",{className:z.drawer,children:[t("div",{className:z.handle}),t("div",{className:z.header,children:[t("div",{className:z.headerCopy,children:[t("span",{className:z.kicker,children:"Episode picker"}),t("h3",{className:z.title,children:"Choose an episode"})]}),t("button",{className:z.closeBtn,type:"button",onClick:n,"aria-label":"Close",children:t(Y,{name:"times"})})]}),t("div",{className:z.body,children:t(on,{episodes:s,currentEpisode:o,watchedEpisodes:r,onEpisodeClick:i,variant:"drawer",title:c,header:p})})]})]}),document.body):null}const gn="_sourceSelectionContainer_1am19_1",_n="_providerSelectContainer_1am19_14",vn="_providerSelect_1am19_14",Sn="_sourceSelect_1am19_1",wn="_sourceButtons_1am19_70",Cn="_sourceButton_1am19_70",kn="_active_1am19_95",ms={sourceSelectionContainer:gn,providerSelectContainer:_n,providerSelect:vn,sourceSelect:Sn,sourceButtons:wn,sourceButton:Cn,active:kn},hs=({skipIntervals:e,showId:n,episodeNumber:s,episodeCount:o,sourceType:r,showMeta:i})=>{const c=St(),p=lt(),{engine:a,mediaRef:u}=vt({volumeKey:"playerVolume",mutedKey:"playerMuted"}),{isPlaying:_,isMuted:x,volume:g,duration:A,isScrubbing:l,isBuffering:d,isFullscreen:C,isSpeedBoostActive:f,showControls:h,playbackLocked:y}=He(a),B=a.containerRef,m=w(null),T=w(0),N=w(Math.random().toString(36).substring(2)),b=a.setShowControls,[$,O]=P(M.getItem("autoSkipEnabled")==="true"),[V,I]=P(null),[H]=P(Lr),[Ve,ye]=P(H.fontSize),[Ke,be]=P(H.position),[Ue,ge]=P(H.bgOpacity),[Qe,_e]=P(H.bgColor),[Ge,ve]=P(H.textColor),[Ye,Se]=P(H.edge),[Xe,we]=P(H.bold),Ce=E((v,R)=>{if({fontSize:S=>typeof S!="number"?!1:(ye(S),!0),position:S=>typeof S!="number"?!1:(be(S),!0),bgOpacity:S=>typeof S!="number"?!1:(ge(S),!0),bgColor:S=>typeof S!="string"?!1:(_e(S),!0),textColor:S=>typeof S!="string"?!1:(ve(S),!0),edge:S=>S!=="shadow"&&S!=="outline"&&S!=="none"?!1:(Se(S),!0),bold:S=>typeof S!="boolean"?!1:(we(S),!0)}[v](R))try{M.setItem(Tr[v],String(R))}catch{}},[]),[Je,Ze]=P([]),[et,tt]=P(null),[rt,nt]=P(!1),[st,at]=P(!1),[ot,ke]=P(()=>{try{return M.getItem("playerUseNativeControls")==="true"}catch{return!1}}),X=w(!1),re=w(-1),ne=E(()=>{const v=u.current;return!n||!s||!i?.name?null:{showId:n,episodeNumber:s,episodeCount:o,currentTime:a.getTimeline().currentTime,duration:a.getState().duration,showName:i.name,showThumbnail:i.thumbnail,nativeName:i.names?.native,englishName:i.names?.english,genres:Array.isArray(i.genres)?i.genres.map(R=>typeof R=="string"?R:R?.name).filter(Boolean):void 0,popularityScore:i.score,type:i.type,isPlaying:v?!v.paused:r==="iframe",sessionId:N.current,isAdult:i.isAdult}},[a,u,n,s,o,i,r]),F=E((v=!1,R=!1)=>{if(X.current)return!1;const q=ne();if(!q)return!1;const S=u.current;if(!S&&!v&&r!=="iframe"||r!=="iframe"&&q.duration<=0)return!1;const W=a.getTimeline().currentTime;if(!R){if(W===0)return!1;const Z=S?Math.abs(W-re.current):0;if(!v&&S&&W!==S.duration&&Z<5)return!1}return q.currentTime=W,re.current=W,v?(async()=>{try{await Re("progress.updateProgress",q),c.invalidateQueries({queryKey:[K.playerData,n]}),c.invalidateQueries({queryKey:[K.videoSources,n,s]}),c.invalidateQueries({queryKey:[K.continueWatching]}),c.invalidateQueries({queryKey:[K.thisWeekSchedule]}),c.invalidateQueries(p.continueWatching.pathFilter())}catch(Z){console.error("Failed to update progress:",Z)}})():Re("progress.updateProgress",q).then(()=>{ce(q.currentTime,q.duration)&&c.invalidateQueries({queryKey:[K.playerData,n]})}).catch(Z=>console.error("Failed to update progress:",Z)),!0},[a,ne,r,c,n,s,p.continueWatching,u]);j(()=>{const v=()=>{X.current||F(!0)};window.addEventListener("beforeunload",v),window.addEventListener("pagehide",v);const R=()=>{document.visibilityState==="hidden"&&v()};document.addEventListener("visibilitychange",R);const q=m;return()=>{window.removeEventListener("beforeunload",v),window.removeEventListener("pagehide",v),document.removeEventListener("visibilitychange",R),X.current||F(!0),q.current&&clearTimeout(q.current)}},[F]);const xe=E(()=>a.setShowControls(!0),[a]),Te=a.toggleFullscreen,Le=E(()=>{a.togglePlay(),b(!0)},[a,b]),Ne=E(()=>{a.toggleMute(),b(!0)},[a,b]),Pe=E(v=>{a.seekRelative(v),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>F(!1,!0),1500),b(!0)},[a,F,b]),Be=E(()=>{X.current=!1,F(!1,!0)},[F]),Ee=E(()=>{b(!0),F(!1,!0)},[F,b]);j(()=>{X.current=!1,re.current=-1,T.current=0,N.current=Math.random().toString(36).substring(2),a.reset()},[a,n,s]);const Ae=a.reset;j(()=>{const v=N.current;return()=>{dt(v)}},[a,n,s]),j(()=>{if(r!=="iframe")return;F(!1,!0);const v=setInterval(()=>{F(!1,!0)},6e4);return()=>clearInterval(v)},[r,F]);const Ie=E(()=>{const v=u.current;if(!v)return;const R=v.currentTime||0,q=Date.now(),S=ce(R,v.duration)&&!ce(re.current,v.duration);(S||q-T.current>6e4)&&F(!1,S)&&(T.current=q);const W=e.find(J=>R>=J.start_time&&R<J.end_time)||null;I(J=>J?.skip_id!==W?.skip_id?W:J),$&&W&&!v.paused&&!a.getState().playbackLocked&&(a.seek(W.end_time),I(null))},[u,e,$,F,a]),$e=E(()=>{const v=ne();v&&(v.currentTime=v.duration,ut.progress.updateProgress.mutate(v).then(()=>{c.invalidateQueries({queryKey:[K.playerData,n]}),c.invalidateQueries({queryKey:[K.videoSources,n,s]}),c.invalidateQueries({queryKey:[K.continueWatching]})}).catch(R=>console.error("Failed to send final progress:",R)))},[ne,c,n,s]),Me=E(()=>{X.current=!0,$e()},[$e]),it=te(()=>({togglePlay:Le,seek:Pe,toggleMute:Ne,toggleFullscreen:Te,onPlay:Be,onPause:Ee,formatTime:pt,onTimeUpdate:Ie,onEnded:Me,setShowControls:b,setIsAutoSkipEnabled:O,setCurrentSkipInterval:I,setSubtitleFontSize:ye,setSubtitlePosition:be,setSubtitleBgOpacity:ge,setSubtitleBgColor:_e,setSubtitleTextColor:ve,setSubtitleEdge:Se,setSubtitleBold:we,setSubtitleStyle:Ce,setAvailableSubtitles:Ze,setActiveSubtitleTrack:tt,setShowSettings:nt,setShowVolumeSlider:at,flashControls:xe,sendProgressUpdate:F,setUseNativeControls:ke,resetMediaState:Ae}),[Le,Pe,Ne,Te,Be,Ee,Ie,Me,F,ke,Ae,xe,Ce,b]);return{engine:a,refs:{videoRef:u,playerContainerRef:B},state:{playbackLocked:y,isPlaying:_,isMuted:x,volume:g,isFullscreen:C,duration:A,showControls:h,isScrubbing:l,isAutoSkipEnabled:$,currentSkipInterval:V,subtitleFontSize:Ve,subtitlePosition:Ke,subtitleBgOpacity:Ue,subtitleBgColor:Qe,subtitleTextColor:Ge,subtitleEdge:Ye,subtitleBold:Xe,availableSubtitles:Je,activeSubtitleTrack:et,showSettings:rt,showVolumeSlider:st,isBuffering:d,isSpeedBoostActive:f,useNativeControls:ot},actions:it}};function xn(){try{return typeof navigator<"u"&&/android/i.test(navigator.userAgent)}catch{return!1}}function ys(e,n){const{refs:s,actions:o}=e,r=w(n);r.current=n;const i=w(!1),c=w(!1),p=a=>{try{if(a)return a.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};j(()=>{if(!xn())return;let a=null;const u=()=>{const _=s.playerContainerRef.current;if(p(a)){if(!r.current||!_||ie(s.videoRef.current)||c.current)return;i.current=!0,o.toggleFullscreen()}else c.current=!1,i.current&&(i.current=!1,ie(s.videoRef.current)&&o.toggleFullscreen())};try{a=window.matchMedia("(orientation: landscape)"),a.addEventListener?a.addEventListener("change",u):a.addListener(u)}catch{}return u(),()=>{try{a&&(a.removeEventListener?a.removeEventListener("change",u):a.removeListener(u))}catch{}}},[o,s.playerContainerRef,s.videoRef,n]),j(()=>{const a=()=>{if(!ie(s.videoRef.current)){i.current=!1;try{window.matchMedia("(orientation: landscape)").matches&&(c.current=!0)}catch{c.current=!0}}};return document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a),()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a)}},[s.videoRef])}const Tn=e=>Math.max(8,Math.min(40,Math.ceil(e/16.7)+4));function bs({videoRef:e,canvasRef:n,delayMs:s,enabled:o}){const r=w(s);r.current=s;const i=w([]),c=w(-1),p=w(-1),a=w(!1),u=w(0),_=w(null);j(()=>{const x=f=>{if(f)try{f.close()}catch{}},g=()=>{for(const f of i.current)x(f.bitmap);i.current=[]};if(!o){g(),c.current=-1,p.current=-1,a.current=!1,u.current=0;return}let A=!1;const l=()=>{_.current!==null&&(cancelAnimationFrame(_.current),_.current=null)},d=()=>{A||(l(),_.current=requestAnimationFrame(()=>{C()}))};async function C(){if(A)return;const f=e.current,h=n.current;if(!f||!h||f.videoWidth===0){d();return}if(f.paused||f.ended||document.hidden||f.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){d();return}const y=f.getVideoPlaybackQuality().totalVideoFrames;if(y===c.current){d();return}(f.seeking||p.current>=0&&Math.abs(f.currentTime-p.current)>.5)&&(g(),a.current=!1,u.current=0,c.current=-1),p.current=f.currentTime,(h.width!==f.videoWidth||h.height!==f.videoHeight)&&(h.width=f.videoWidth,h.height=f.videoHeight);const B=Math.max(0,r.current||0);B>u.current&&(a.current=!1);try{const m=await createImageBitmap(f);if(A){x(m);return}c.current=y;const T=performance.now(),N=h.getContext("2d"),b=I=>{N&&N.drawImage(I,0,0,h.width,h.height)};if(B<=0){g(),a.current=!1,u.current=0,b(m),x(m),d();return}const $=i.current;$.push({bitmap:m,capture:T});const O=Tn(B);for(;$.length>O;)x($.shift()?.bitmap);let V=-1;for(let I=$.length-1;I>=0;I--)if(T-$[I].capture>=B){V=I;break}if(V!==-1){for(let H=0;H<V;H++)x($.shift()?.bitmap);const I=$.shift();I?(b(I.bitmap),x(I.bitmap),a.current=!0,u.current=B):b(m)}else if(!a.current)b(m);else{const I=$.shift();I?(b(I.bitmap),x(I.bitmap)):b(m)}}catch{}d()}return d(),()=>{A=!0,l();for(const f of i.current)try{f.bitmap.close()}catch{}i.current=[]}},[o,e,n])}const De=(e,n)=>{try{M.setItem("playerVideoDelayMs",String(e)),M.setItem("playerVideoDelayEnabled",String(n))}catch{}},Oe=e=>{try{M.setItem("playerVideoDelayEnabled",String(e))}catch{}};function gs(e,n){const[s,o]=P(()=>{try{const y=Number(M.getItem("playerVideoDelayMs"));if(Number.isFinite(y)&&y>=0&&y<=500)return Math.round(y)}catch{}return 180}),[r,i]=P(()=>{try{return M.getItem("playerVideoDelayEnabled")==="true"}catch{return!1}}),[c,p]=P(!1),[a,u]=P(!1),_=w(null),x=w(null),g=y=>{const B=Math.max(0,Math.min(500,Math.round(y)));o(B);try{M.setItem("playerVideoDelayMs",String(B))}catch{}},A=y=>{i(y),Oe(y)},l=E(()=>{u(!1),p(!1)},[]);return{videoDelayMs:s,videoDelayEnabled:r,setDelayEnabled:A,handleVideoDelayChange:g,isCalibrating:c,testClipActive:a,stopCalibration:l,openAvSyncCalibrator:()=>{_.current={enabled:r,ms:s},i(!0),Oe(!0),n?.(),p(!0)},cancelAvSyncCalibrator:()=>{const y=_.current;_.current=null,y&&(o(y.ms),i(y.enabled),De(y.ms,y.enabled)),u(!1),p(!1)},applyAvSyncCalibrator:()=>{_.current=null,i(!0),De(s,!0),u(!1),p(!1)},toggleTestClip:()=>{if(a){u(!1);return}const y=e.current;y&&!isNaN(y.currentTime)&&(x.current=y.currentTime),u(!0)},calibReturnRef:x,effectiveVideoDelayMs:r?s:0}}function _s(){const[e,n]=P(()=>{try{return M.getItem("playerTheaterMode")==="true"}catch{return!1}});j(()=>{try{e?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(r){console.error(r)}return()=>{try{document.body.classList.remove("theater-mode")}catch(r){console.error(r)}}},[e]);const s=E(()=>{n(r=>{const i=!r;try{M.setItem("playerTheaterMode",i.toString())}catch{}return i})},[]),o=E(r=>{if(e&&r.target===r.currentTarget){n(!1);try{M.setItem("playerTheaterMode","false")}catch{}}},[e]);return{isTheaterMode:e,toggleTheaterMode:s,handleLayoutClick:o}}const Q={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function Ln(){try{const e=M.getItem("playerAmbientLight");if(!e)return Q;const n=JSON.parse(e),s=(o,r,i,c)=>{const p=Number(o);return Number.isFinite(p)?Math.max(i,Math.min(c,p)):r};return{enabled:n.enabled??Q.enabled,blur:s(n.blur,Q.blur,0,120),saturation:s(n.saturation,Q.saturation,0,200),brightness:s(n.brightness,Q.brightness,20,120),opacity:s(n.opacity,Q.opacity,10,100)}}catch{return Q}}function vs(){const[e,n]=P(Ln),s=E(o=>{n(r=>{const i={...r,...o};try{M.setItem("playerAmbientLight",JSON.stringify(i))}catch{}return i})},[]);return{settings:e,update:s}}const Nn="_theaterAmbient_x9t0o_1",Pn={theaterAmbient:Nn},de=160,ue=90,Bn=120,Ss=({videoRef:e,active:n,settings:s,className:o})=>{const r=w(null);return j(()=>{if(!n)return;const i=r.current,c=e.current;if(!i||!c)return;const p=i.getContext("2d",{alpha:!1});if(!p)return;let a=0,u=0,_=!1;const x=()=>{if(!(c.readyState<2||!c.videoWidth))try{const d=c.videoWidth,C=c.videoHeight,f=de/ue,h=d/C;let y=d,B=C,m=0,T=0;h>f?(y=C*f,m=(d-y)/2):(B=d/f,T=(C-B)/2),p.drawImage(c,m,T,y,B,0,0,de,ue)}catch{}},g=d=>{_||c.paused||(a=requestAnimationFrame(g),!(d-u<Bn)&&(u=d,x()))},A=()=>{_||(cancelAnimationFrame(a),u=0,a=requestAnimationFrame(g))},l=()=>cancelAnimationFrame(a);return c.addEventListener("play",A),c.addEventListener("pause",l),c.addEventListener("seeked",x),c.addEventListener("loadeddata",x),a=requestAnimationFrame(g),()=>{_=!0,cancelAnimationFrame(a),c.removeEventListener("play",A),c.removeEventListener("pause",l),c.removeEventListener("seeked",x),c.removeEventListener("loadeddata",x)}},[n,e]),n?t("canvas",{ref:r,width:de,height:ue,"aria-hidden":"true",className:o??Pn.theaterAmbient,style:{filter:`blur(${s.blur}px) saturate(${s.saturation}%) brightness(${s.brightness}%)`,opacity:s.opacity/100}}):null},En="_row_1fq55_1",An="_rowHeader_1fq55_9",In="_rowLabel_1fq55_17",$n="_rowValue_1fq55_28",Mn="_slider_1fq55_36",Rn="_swatches_1fq55_99",jn="_swatch_1fq55_99",Fn="_swatchPicked_1fq55_114",Dn="_colorInput_1fq55_120",On="_segmented_1fq55_131",D={row:En,rowHeader:An,rowLabel:In,rowValue:$n,slider:Mn,swatches:Rn,swatch:jn,swatchPicked:Fn,colorInput:Dn,segmented:On},qn=({label:e,display:n,min:s,max:o,step:r,value:i,percent:c,onChange:p,onCommit:a})=>t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:[t("span",{className:D.rowLabel,children:e}),t("span",{className:D.rowValue,children:n})]}),t("input",{type:"range",className:D.slider,min:s,max:o,step:r,value:i,"aria-label":e,"data-speed-boost-ignore":"true",onInput:u=>p(Number(u.target.value)),onMouseDown:u=>u.stopPropagation(),onPointerDown:u=>u.stopPropagation(),onTouchStart:u=>u.stopPropagation(),onPointerUp:a,onPointerCancel:a,onTouchEnd:a,onKeyUp:a,onBlur:a,style:{"--slider-percent":`${c}%`}})]}),ws=({label:e,colors:n,value:s,onChange:o})=>t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:t("span",{className:D.rowLabel,children:e})}),t("div",{className:D.swatches,children:[n.map(r=>t("button",{type:"button","aria-label":`${e} ${r}`,"aria-pressed":s.toLowerCase()===r.toLowerCase(),onClick:()=>o(r),className:`${D.swatch} ${s.toLowerCase()===r.toLowerCase()?D.swatchPicked:""}`,style:{backgroundColor:r}},r)),t("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:D.colorInput,value:s,"data-speed-boost-ignore":"true",onInput:r=>o(r.target.value),onMouseDown:r=>r.stopPropagation(),onPointerDown:r=>r.stopPropagation(),onTouchStart:r=>r.stopPropagation()})]})]});function Cs({label:e,options:n,value:s,onChange:o}){return t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:t("span",{className:D.rowLabel,children:e})}),t("div",{className:D.segmented,role:"group","aria-label":e,children:n.map(r=>t("button",{type:"button","aria-pressed":s===r,onClick:()=>o(r),children:[t("span",{children:r}),s===r&&t(Y,{name:"check",size:10})]},r))})]})}const oe=10,he=500,pe=e=>Math.max(0,Math.min(he,Math.round(e))),ks=({isOpen:e,ms:n,onChange:s,onApply:o,onClose:r,testClipActive:i,onTestClip:c})=>e?t("div",{role:"dialog","aria-label":"Calibrate audio video sync","data-speed-boost-ignore":"true",onClick:p=>p.stopPropagation(),style:{position:"absolute",right:8,bottom:112,width:"min(260px, calc(100% - 16px))",maxHeight:"calc(100% - 124px)",overflowY:"auto",overflowX:"hidden",zIndex:60,display:"flex",flexDirection:"column",alignItems:"center",gap:8,padding:12,borderRadius:"var(--radius-lg)",border:"1px solid var(--glass-border)",background:"rgba(18, 18, 22, 0.95)",boxShadow:"var(--glass-shadow)",backdropFilter:"blur(14px)",WebkitBackdropFilter:"blur(14px)",boxSizing:"border-box"},children:[t("div",{style:{fontSize:"0.8rem",fontWeight:800,color:"var(--text-primary)"},children:"A/V sync"}),t("div",{children:t(G,{size:"sm",variant:"secondary",onClick:c,children:i?"Back to video":"Preview test clip"})}),t("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap"},children:[t(G,{size:"sm",onClick:()=>s(pe(n-oe)),"aria-label":"Decrease delay by 10 milliseconds",children:["− ",oe,"ms"]}),t("div",{style:{fontSize:"1.1rem",fontWeight:800,minWidth:64,textAlign:"center"},children:[n,"ms"]}),t(G,{size:"sm",onClick:()=>s(pe(n+oe)),"aria-label":"Increase delay by 10 milliseconds",children:["+ ",oe,"ms"]})]}),t(qn,{label:"Video delay",display:`${n}ms`,min:0,max:he,step:5,value:n,percent:n/he*100,onChange:p=>s(pe(p))}),t("div",{style:{display:"flex",gap:8,justifyContent:"center",flexWrap:"wrap"},children:[t(G,{size:"sm",variant:"secondary",onClick:r,children:"Cancel"}),t(G,{size:"sm",onClick:o,children:["Apply ",n,"ms"]})]})]}):null;function xs({videoRef:e,sourceType:n,resetKey:s,onEnd:o}){const r=w(!1),i=w(o);i.current=o,j(()=>{r.current=!1},[s]);const c=E(()=>{const a=e.current?.duration;!a||!Number.isFinite(a)||console.info(`[playback] duration ${a.toFixed(2)}s`)},[e]);return{checkEnd:E((a=!1)=>{const u=e.current;!u||n==="iframe"||r.current||!a&&!wt(u.currentTime,u.duration)||(r.current=!0,console.info(`[playback] end reached at ${u.currentTime.toFixed(2)}s / ${u.duration.toFixed(2)}s`),i.current())},[n,e]),logDuration:c}}function Ts(e,n,s){const o=ft(),r=w({watch:o,selection:n,loading:s});r.current={watch:o,selection:n,loading:s};const[i,c]=P(!1),p=w(""),a=w(""),u=w(""),_=w(!1),x=!!o.session&&!o.session.host;j(()=>(!o.session&&_.current&&e.applyRemotePlayback(void 0,!1,1),_.current=!!o.session,e.setPlaybackLocked(!!o.session&&(x||!o.connected)),o.session&&!o.connected&&e.applyRemotePlayback(void 0,!1,1),()=>e.setPlaybackLocked(!1)),[e,x,o.connected,o.session]);const g=E((A=!1)=>{const{watch:l,selection:d,loading:C}=r.current,f=e.mediaRef.current;if(!l.session||!l.room||!f)return;if(l.session.host){l.connected&&l.selfId!==u.current&&!C&&d&&f.readyState>=1&&(u.current=l.selfId,je(d,l.room.selection)&&e.applyRemotePlayback(l.room.position,!1,l.room.rate));return}const h=l.room,y=d&&je(d,h.selection);if(!l.connected||C||!y||f.readyState<1){e.applyRemotePlayback(void 0,!1,h.rate);return}const B=Date.now()+l.clock.offset-h.updatedAt<15e3;if(h.playing&&!B){e.applyRemotePlayback(void 0,!1,h.rate);return}const m=h.playing&&h.hostOnline&&B,T=Math.min(f.duration||1/0,mt({...h,playing:m},Date.now()+l.clock.offset)),N=T-f.currentTime,b=Math.abs(N)>(m?1.25:.15),$=m&&!b&&Math.abs(N)>.15?Math.min(4,Math.max(.25,h.rate*(N>0?1.03:.97))):h.rate,O=e.getState().playBlocked;e.applyRemotePlayback(b?T:void 0,m&&(!O||A),$),c(O&&m)},[e]);return j(()=>{if(!o.session)return;const A=()=>{const{watch:m,selection:T,loading:N}=r.current,b=e.mediaRef.current;if(!m.connected||!m.session?.host||!m.room)return;if(!T||N||!b||b.readyState<1){m.room.playing&&m.send({type:"update",...m.room,playing:!1});return}g();const $=e.getState(),O=!b.paused&&!b.ended&&!$.isBuffering,V={type:"update",selection:T,position:b.currentTime+(O?m.clock.latency/1e3*b.playbackRate:0),playing:O,rate:b.playbackRate},I=JSON.stringify(V);!O&&a.current===I||(a.current=I,m.send(V))},l=()=>{const{watch:m,selection:T,loading:N}=r.current,b=e.getState(),$=e.mediaRef.current,O=b.error||!N&&!T?"error":b.playBlocked?"blocked":N||!$||$.readyState<1?"loading":b.isBuffering?"buffering":"ready";m.connected&&`${m.selfId}:${O}`!==p.current&&(p.current=`${m.selfId}:${O}`,m.send({type:"status",status:O})),g()};let d=null;const C=["play","pause","seeked","ratechange","playing","waiting","canplay","ended"];let f;const h=()=>{clearTimeout(f),f=setTimeout(A,100)},y=setInterval(()=>{const m=e.mediaRef.current;d!==m&&(C.forEach(T=>d?.removeEventListener(T,h)),d=m,C.forEach(T=>d?.addEventListener(T,h))),l()},500),B=setInterval(A,3e3);return()=>{clearInterval(y),clearInterval(B),clearTimeout(f),C.forEach(T=>d?.removeEventListener(T,h));const{watch:m}=r.current;m.session?.host&&m.room&&m.connected&&m.send({type:"update",...m.room,playing:!1,position:e.mediaRef.current?.currentTime??m.room.position})}},[e,o.session,g]),j(()=>{g()},[o.room,o.connected,n,s,g]),{needsPlayback:i,enablePlayback:()=>g(!0)}}export{Ss as A,ts as B,is as C,Cs as D,ps as E,U as F,Q as G,qn as M,ls as P,os as R,ws as S,es as T,cs as a,ms as b,Yn as c,Xn as d,ss as e,rs as f,Zn as g,Ts as h,gs as i,bs as j,_s as k,xs as l,ys as m,vs as n,Gn as o,ds as p,as as q,Jn as r,Mr as s,on as t,hs as u,Qn as v,ks as w,us as x,fs as y,ns as z};
|