@serifpersia/dango 3.7.2 → 3.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/client/dist/assets/{AnimeCard-CoPx634q.js → AnimeCard-CBxkRKU-.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-COVCRujg.js → AnimeInfo-D3LmqzJo.js} +1 -1
  4. package/client/dist/assets/{AnimeInfoPage-BwlKpRXY.js → AnimeInfoPage-CeJHVkQ0.js} +2 -2
  5. package/client/dist/assets/{Asmr-nOUcDsWe.js → Asmr-CrHIKmJ4.js} +2 -2
  6. package/client/dist/assets/Asmr-Do89pEHG.css +1 -0
  7. package/client/dist/assets/{AsmrResetProgressModal-Mj1PYE2c.js → AsmrResetProgressModal-C13uw5lH.js} +1 -1
  8. package/client/dist/assets/{Home-wi0a_BDQ.js → Home-CC9XyO9O.js} +1 -1
  9. package/client/dist/assets/{Insights-MLCDyTnY.js → Insights-BZGAhYrz.js} +1 -1
  10. package/client/dist/assets/{LibraryListPage-CRqv737t.js → LibraryListPage-DosBFeR_.js} +1 -1
  11. package/client/dist/assets/{ListeningList-8dzhiDeb.js → ListeningList-nq279J8O.js} +1 -1
  12. package/client/dist/assets/{Manga-dkD-uWJk.js → Manga-DiCcXa9I.js} +1 -1
  13. package/client/dist/assets/{MangaInfoPage-nCeWZNcO.js → MangaInfoPage-sZn0qDxf.js} +1 -1
  14. package/client/dist/assets/{MangaReadPage-NdDNCyLg.js → MangaReadPage-ChgW4VO8.js} +1 -1
  15. package/client/dist/assets/{MangaResetProgressModal-C28AiLJl.js → MangaResetProgressModal-BkNHdClw.js} +1 -1
  16. package/client/dist/assets/{Mature-D5WSkhIJ.js → Mature-D7bJH6LQ.js} +1 -1
  17. package/client/dist/assets/{MatureConsentModal-BsdpNeXA.js → MatureConsentModal-B3u3RgAE.js} +1 -1
  18. package/client/dist/assets/MediaCard-B1llLoho.js +1 -0
  19. package/client/dist/assets/{MediaCard-B0PJStxp.css → MediaCard-CoyScn-7.css} +1 -1
  20. package/client/dist/assets/OptionListMenu-1QikgQ8d.js +1 -0
  21. package/client/dist/assets/Player-hVrgi0J1.js +56 -0
  22. package/client/dist/assets/PlayerSettings-CWc5Tf-B.js +1 -0
  23. package/client/dist/assets/{QueueOptionsButton-DNzKPzPw.js → QueueOptionsButton-Cpm6Jovo.js} +1 -1
  24. package/client/dist/assets/{QueueRail-BWcDVSHd.js → QueueRail-DpUQ2Ba2.js} +1 -1
  25. package/client/dist/assets/{ReadingList-zkFp3wpF.js → ReadingList-DMxkudSM.js} +1 -1
  26. package/client/dist/assets/{ResetProgressModal-BYNYqwwl.js → ResetProgressModal-6X8ciSFl.js} +1 -1
  27. package/client/dist/assets/{Search-yDP_wGJ1.js → Search-CbXvziWY.js} +1 -1
  28. package/client/dist/assets/Settings-BEZZSWsj.js +21 -0
  29. package/client/dist/assets/Settings-DYjRBgpE.css +1 -0
  30. package/client/dist/assets/{SkeletonGrid-CYJeh04P.js → SkeletonGrid-BDR-fKs1.js} +1 -1
  31. package/client/dist/assets/{Trackers-D2KUt71k.js → Trackers-DO0mA01O.js} +1 -1
  32. package/client/dist/assets/Tv-DP4rcV9T.js +4 -0
  33. package/client/dist/assets/{TvInfo-D_4QdgV4.js → TvInfo-WNJynk-5.js} +1 -1
  34. package/client/dist/assets/{TvPopup-DHXB5ZSF.js → TvPopup-Q9_MFJdx.js} +1 -1
  35. package/client/dist/assets/{TvSearch-COwVoGru.js → TvSearch-C-RBZ1iq.js} +1 -1
  36. package/client/dist/assets/{TvWatchlist-CU3r-NO5.js → TvWatchlist-BXE6yUS0.js} +1 -1
  37. package/client/dist/assets/{Watchlist-DHyuTLJG.js → Watchlist-7x__Rf-s.js} +1 -1
  38. package/client/dist/assets/{hls-DOAVt6Ry.js → hls-DIyfUbGZ.js} +1 -1
  39. package/client/dist/assets/{index-BLh_CXtu.js → index-D0DdVatn.js} +2 -2
  40. package/client/dist/assets/{libraryInvalidation-AzFLnbjH.js → libraryInvalidation-BFqNv8Cx.js} +1 -1
  41. package/client/dist/assets/playbackCompletion-IPHm9fp5.js +1 -0
  42. package/client/dist/assets/{useAnimeInfoData-MPNJXLaM.js → useAnimeInfoData-D_qedrui.js} +1 -1
  43. package/client/dist/assets/{useAsmr-2dFEmQD_.js → useAsmr-CrshwDPO.js} +1 -1
  44. package/client/dist/assets/{useAsmrPopup-N2vUf3Pw.js → useAsmrPopup-HwNC-ZRo.js} +1 -1
  45. package/client/dist/assets/{useMangaLibrary-B3Ni34a7.js → useMangaLibrary-BPSi9vcc.js} +1 -1
  46. package/client/dist/assets/{useMangaPopup-h8NHEPUk.js → useMangaPopup-DdueqAi5.js} +1 -1
  47. package/client/dist/assets/usePlaybackEnd-DLFOYx3Q.css +1 -0
  48. package/client/dist/assets/usePlaybackEnd-DjZq1szR.js +10 -0
  49. package/client/dist/assets/{useProviders-z8L8GKy0.js → useProviders-_ilIsyde.js} +1 -1
  50. package/client/dist/assets/{useTv-D4zQ1BsQ.js → useTv-C558DPdT.js} +1 -1
  51. package/client/dist/assets/{useTvLibrary-B4vcRzQc.js → useTvLibrary-CNQcDI7O.js} +1 -1
  52. package/client/dist/index.html +1 -1
  53. package/package.json +2 -2
  54. package/server/dist/server.js +2 -2
  55. package/server/package.json +1 -1
  56. package/client/dist/assets/Asmr-Dl1EZqaI.css +0 -1
  57. package/client/dist/assets/AvSyncCalibrator-BtUHM1mW.css +0 -1
  58. package/client/dist/assets/AvSyncCalibrator-C5GxpyPE.js +0 -10
  59. package/client/dist/assets/MediaCard-C1jNesfK.js +0 -1
  60. package/client/dist/assets/OptionListMenu-CIvW5WmO.js +0 -1
  61. package/client/dist/assets/Player-PGj8YYO8.js +0 -56
  62. package/client/dist/assets/PlayerSettings-CAYfF0sA.js +0 -1
  63. package/client/dist/assets/Settings-BEHII_8K.css +0 -1
  64. package/client/dist/assets/Settings-BpKwWesn.js +0 -21
  65. package/client/dist/assets/Tv-Ul3jFq-x.js +0 -4
  66. package/client/dist/assets/playbackCompletion-DuUs8u-8.js +0 -1
@@ -1,10 +0,0 @@
1
- import{u as n,A as C,d as x,h as M,q as N,T as pe,$ as Nt}from"./vendor-core-DfaOB3Rn.js";import{B as ne,M as Bt,S as _e,i as Pt,Y as qt,t as tt,q as de,W as At,g as It}from"./index-BLh_CXtu.js";import{I as Y}from"./vendor-icons-DrybRNxP.js";import{u as Mt}from"./vendor-query-BBT5_sHx.js";const $t="_controls_1ljql_1",Ft="_titleContainer_1ljql_9",Dt="_scheduleInfo_1ljql_15",Rt="_status_1ljql_23",jt="_nextEpisode_1ljql_35",Ot="_watchlistBtn_1ljql_45",Ht="_inList_1ljql_72",Vt="_queueBtn_1ljql_83",Wt="_queueActive_1ljql_95",zt="_modeToggleBtn_1ljql_101",Ut="_modeToggleActive_1ljql_108",Kt="_markWatchedBtn_1ljql_129",Xt="_markWatchedDone_1ljql_143",Gt="_streamPanel_1ljql_154",Qt="_desktopEpisodeActions_1ljql_168",Yt="_sourceLoader_1ljql_174",Jt="_episodeActions_1ljql_187",Zt="_mobileEpisodeActions_1ljql_201",en="_episodeNavBtn_1ljql_205",tn="_primary_1ljql_235",nn="_secondary_1ljql_245",rn="_episodePickerBtn_1ljql_249",on="_queueCountdown_1ljql_253",sn="_speedBoostBadge_1ljql_268",an="_videoContainer_1ljql_299",cn="_loadingOverlay_1ljql_312",ln="_loadingDots_1ljql_326",un="_dot_1ljql_331",dn="_bounce_1ljql_1",fn="_bufferingOverlay_1ljql_348",pn="_bufferingSpinner_1ljql_357",mn="_spin_1ljql_444",hn="_videoIframe_1ljql_366",gn="_videoElementHidden_1ljql_389",yn="_upscalerCanvas_1ljql_394",vn="_upscalerActive_1ljql_407",bn="_upscalerStatusBadge_1ljql_411",_n="_subtitleOverlay_1ljql_426",wn="_spinner_1ljql_444",Sn="_errorOverlay_1ljql_505",Cn="_retryButton_1ljql_515",kn="_detailsToggleBtn_1ljql_528",En="_descriptionSection_1ljql_551",Ln="_synopsisFlat_1ljql_559",xn="_fullscreenActive_1ljql_593",Tn="_errorSubtext_1ljql_637",bo={controls:$t,titleContainer:Ft,scheduleInfo:Dt,status:Rt,nextEpisode:jt,watchlistBtn:Ot,inList:Ht,queueBtn:Vt,queueActive:Wt,modeToggleBtn:zt,modeToggleActive:Ut,markWatchedBtn:Kt,markWatchedDone:Xt,streamPanel:Gt,desktopEpisodeActions:Qt,sourceLoader:Yt,episodeActions:Jt,mobileEpisodeActions:Zt,episodeNavBtn:en,primary:tn,secondary:nn,episodePickerBtn:rn,queueCountdown:on,speedBoostBadge:sn,videoContainer:an,loadingOverlay:cn,loadingDots:ln,dot:un,bounce:dn,bufferingOverlay:fn,bufferingSpinner:pn,spin:mn,videoIframe:hn,videoElementHidden:gn,upscalerCanvas:yn,upscalerActive:vn,upscalerStatusBadge:bn,subtitleOverlay:_n,spinner:wn,errorOverlay:Sn,retryButton:Cn,detailsToggleBtn:kn,descriptionSection:En,synopsisFlat:Ln,fullscreenActive:xn,errorSubtext:Tn},Nn="_playerPageLayout_q7ra9_1",Bn="_noSidebar_q7ra9_15",Pn="_episodeSidebar_q7ra9_19",qn="_playerMain_q7ra9_32",An="_videoPlayerWrapper_q7ra9_40",In="_playerInfoHeader_q7ra9_56",Mn="_playerAnimeCard_q7ra9_62",$n="_playerInfoContainer_q7ra9_74",Fn="_infoColumns_q7ra9_86",Dn="_videoTitleSection_q7ra9_107",Rn="_theaterMode_q7ra9_150",_o={playerPageLayout:Nn,noSidebar:Bn,episodeSidebar:Pn,playerMain:qn,videoPlayerWrapper:An,playerInfoHeader:In,playerAnimeCard:Mn,playerInfoContainer:$n,infoColumns:Fn,videoTitleSection:Dn,theaterMode:Rn},jn="_shell_41rxp_1",On="_stage_41rxp_37",Hn="_shellFill_41rxp_85",Vn="_shellFullscreen_41rxp_93",Wn="_uiLayer_41rxp_107",zn="_volumeWrap_41rxp_118",Un="_volumeSlider_41rxp_124",ae={shell:jn,stage:On,shellFill:Hn,shellFullscreen:Vn,uiLayer:Wn,volumeWrap:zn,volumeSlider:Un},Kn={fontSize:"subtitleFontSize",position:"subtitlePosition",bgOpacity:"subtitleBgOpacity",bgColor:"subtitleBgColor",textColor:"subtitleTextColor",edge:"subtitleEdge",bold:"subtitleBold"},Z={fontSize:1.8,position:0,bgOpacity:.5,bgColor:"#000000",textColor:"#ffffff",edge:"shadow",bold:!1},Ne=(e,r,t)=>Math.max(r,Math.min(t,e)),Be=e=>typeof e=="string"&&/^#[0-9a-fA-F]{6}$/.test(e),ke=(e,r,t,s)=>{try{const o=localStorage.getItem(e);if(o===null)return r;const i=parseFloat(o);return Number.isFinite(i)?Ne(i,t,s):r}catch{return r}};function Xn(){let e=Z.edge,r=Z.bgColor,t=Z.textColor,s=Z.bold;try{const o=localStorage.getItem("subtitleEdge");(o==="shadow"||o==="outline"||o==="none")&&(e=o);const i=localStorage.getItem("subtitleBgColor");Be(i)&&(r=i);const f=localStorage.getItem("subtitleTextColor");Be(f)&&(t=f);const v=localStorage.getItem("subtitleBold");v!==null&&(s=v==="true")}catch{}return{fontSize:ke("subtitleFontSize",Z.fontSize,.5,10),position:ke("subtitlePosition",Z.position,0,100),bgOpacity:ke("subtitleBgOpacity",Z.bgOpacity,0,1),bgColor:r,textColor:t,edge:e,bold:s}}function st(e,r){const t=`rgba(0, 0, 0, ${Ne(r,0,1)})`;if(!Be(e))return t;const s=parseInt(e.slice(1,3),16),o=parseInt(e.slice(3,5),16),i=parseInt(e.slice(5,7),16);return`rgba(${s}, ${o}, ${i}, ${Ne(r,0,1)})`}function at(e,r){return e==="none"?r<=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 wo(e){return`
2
- video::cue {
3
- font-size: ${e.fontSize}rem !important;
4
- color: ${e.textColor} !important;
5
- background-color: ${st(e.bgColor,e.bgOpacity)} !important;
6
- font-weight: ${e.bold?"bold":"normal"} !important;
7
- text-shadow: ${at(e.edge,e.bgOpacity)} !important;
8
- }
9
- `}function So(e){return[`font-size: ${e.fontSize}rem`,`color: ${e.textColor}`,`background-color: ${st(e.bgColor,e.bgOpacity)}`,`font-weight: ${e.bold?"700":"400"}`,`text-shadow: ${at(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 Gn=new Set(["b","i","u","strong","em"]);function Co(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&lt;(\/?)([a-zA-Z]+)&gt;/g,(t,s,o)=>Gn.has(o.toLowerCase())?`<${s}${o.toLowerCase()}>`:t)}function ko(e){return e.replace(/<[^>]*>/g,"")}const Eo=["#ffffff","#ffff00","#7CFC00","#00e5ff","#ff9ff3","#ffa502"],Lo=["#000000","#1e272e","#2f3542","#3d0c02","#0c3d2e","#ffffff"];function xo(e,r){const t=Number.isFinite(e)?e*16:Z.fontSize*16;return!Number.isFinite(r)||r<=0?t/16:Math.min(t,Math.max(13,r*.07))/16}function To(e){const r=Math.abs(e/1e3).toFixed(1);return e>0?`+${r}s`:e<0?`-${r}s`:"0.0s"}function No(e,r){const t=e.clientWidth||0,s=e.clientHeight||0,o=e.videoWidth>0&&e.videoHeight>0?e.videoWidth/e.videoHeight:0;let i=s;o>0&&t>0&&s>0&&(i=t/s>o?s:t/o);const f=Math.max(0,(s-i)/2),v=Math.max(0,Math.min(100,Number(r)||0))/100*i;return f+v}const Bo=({isOpen:e,onClose:r,title:t,message:s,resumeLabel:o="Resume",restartLabel:i="Start Over",onResume:f,onRestart:v})=>n(Bt,{isOpen:e,onClose:r,title:t,width:"sm",children:n("div",{style:{padding:"1rem",textAlign:"center"},children:[n("p",{children:s}),n("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[n(ne,{variant:"secondary",onClick:v,children:i}),n(ne,{onClick:f,children:o})]})]})}),Qn="_centerControls_bxt8c_1",Yn="_centerSkipBtn_bxt8c_15",Jn="_centerPlayPause_bxt8c_37",Zn="_playIconOffset_bxt8c_65",fe={centerControls:Qn,centerSkipBtn:Yn,centerPlayPause:Jn,playIconOffset:Zn},Po=({isPlaying:e,onTogglePlay:r,onSkipBack:t,onSkipForward:s,skipSeconds:o=10})=>n("div",{className:fe.centerControls,onClick:i=>i.stopPropagation(),children:[n("button",{className:fe.centerSkipBtn,onClick:t,title:`Skip back ${o}s`,"aria-label":`Skip back ${o} seconds`,children:n(Y,{name:"replay-10"})}),n("button",{className:fe.centerPlayPause,"data-speed-boost-ignore":"true",onClick:r,"aria-label":e?"Pause":"Play",children:e?n(Y,{name:"pause"}):n(Y,{name:"play",className:fe.playIconOffset})}),n("button",{className:fe.centerSkipBtn,onClick:s,title:`Skip forward ${o}s`,"aria-label":`Skip forward ${o} seconds`,children:n(Y,{name:"forward-10"})})]}),qo=({visible:e,title:r,episode:t,onBack:s,classes:o})=>n("div",{className:`${o.overlay} ${e?"":o.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none"},children:n("div",{className:o.top,onClick:i=>i.stopPropagation(),children:[n("button",{className:o.backBtn,onClick:i=>{i.stopPropagation(),s()},title:"Back","aria-label":"Back",children:n(Y,{name:"chevron-left"})}),n("div",{className:o.titleInfo,children:[n("span",{className:o.title,children:r}),t&&n("span",{className:o.episode,children:t})]})]})}),Ao=({classes:e,videoRef:r,duration:t,formatTime:s,isScrubbing:o,buffered:i="auto",onSeek:f,onScrubStart:v,onScrubMove:c,onScrubEnd:g,timeLabelRef:b,children:u})=>{const E=C(null),S=C(null),l=C(null),d=C(null),_=C(null),y=C(!1),k=C(o);k.current=o;const m=C({onScrubMove:c,onScrubEnd:g});m.current={onScrubMove:c,onScrubEnd:g};const[B,P]=x({time:0,position:null});M(()=>{const h=r.current;if(!h)return;const w=W=>{const X=W/t*100||0;S.current&&(S.current.style.width=`${X}%`),l.current&&(l.current.style.left=`${X}%`),b?.current&&(b.current.innerText=`${s(W)} / ${s(t)}`)},D=()=>{o||w(h.currentTime)},$=()=>{if(i==="auto"&&h.buffered.length>0){const X=h.buffered.end(h.buffered.length-1)/t*100||0;d.current&&(d.current.style.width=`${X}%`)}};return w(h.currentTime),$(),h.addEventListener("timeupdate",D),h.addEventListener("progress",$),()=>{h.removeEventListener("timeupdate",D),h.removeEventListener("progress",$)}},[r,t,o,i,s,b]);const H=h=>{if(!E.current)return 0;const w=E.current.getBoundingClientRect();return Math.min(1,Math.max(0,(h-w.left)/w.width))},K=h=>{const w=h*t,D=w/t*100||0;S.current&&(S.current.style.width=`${D}%`),l.current&&(l.current.style.left=`${D}%`),b?.current&&(b.current.innerText=`${s(w)} / ${s(t)}`);const $=E.current?.getBoundingClientRect();P({time:w,position:$?h*$.width:null})};M(()=>{if(!o){_.current=null;return}const h=D=>{if(_.current!==null&&D.pointerId!==_.current||!t)return;const $=H(D.clientX);m.current.onScrubMove($);const W=$*t,X=W/t*100||0;S.current&&(S.current.style.width=`${X}%`),l.current&&(l.current.style.left=`${X}%`),b?.current&&(b.current.innerText=`${s(W)} / ${s(t)}`);const re=E.current?.getBoundingClientRect();P({time:W,position:re?$*re.width:null})},w=D=>{_.current!==null&&D.pointerId!==_.current||(_.current=null,y.current=!0,D.pointerType!=="mouse"&&P({time:0,position:null}),m.current.onScrubEnd())};return document.addEventListener("pointermove",h),document.addEventListener("pointerup",w),document.addEventListener("pointercancel",w),()=>{document.removeEventListener("pointermove",h),document.removeEventListener("pointerup",w),document.removeEventListener("pointercancel",w)}},[o,t,s,b]);const V=h=>{if(h.pointerType==="mouse"&&h.button!==0||!r.current||!t)return;h.preventDefault(),_.current=h.pointerId;try{E.current?.setPointerCapture(h.pointerId)}catch{}k.current||v();const w=H(h.clientX);c(w),K(w)},T=h=>{if(!t||k.current||h.pointerType!=="mouse")return;const w=H(h.clientX);P({time:w*t,position:h.clientX-(E.current?.getBoundingClientRect().left??0)})},z=h=>{if(!(_.current!==null&&h.pointerId!==_.current)&&k.current){_.current=null,y.current=!0,h.pointerType!=="mouse"&&P({time:0,position:null});try{E.current?.hasPointerCapture(h.pointerId)&&E.current.releasePointerCapture(h.pointerId)}catch{}g()}};return n("div",{className:`${e.container} ${o&&e.scrubbing?e.scrubbing:""}`,ref:E,role:"slider","aria-label":"Seek","aria-valuemin":0,"aria-valuemax":Math.round(t||0),"aria-valuenow":Math.round((Number(S.current?.style.width?.replace("%",""))||0)*(t||0)/100),tabIndex:0,onClick:h=>{if(y.current){y.current=!1;return}!r.current||isNaN(t)||t===0||f(H(h.clientX))},onPointerDown:V,onPointerMove:T,onPointerUp:z,onPointerCancel:z,onMouseMove:h=>{if(o||!t)return;const w=H(h.clientX);P({time:w*t,position:h.clientX-(E.current?.getBoundingClientRect().left??0)})},onMouseLeave:()=>{o||P({time:0,position:null})},onKeyDown:h=>{if(!(!r.current||!t)&&(h.key==="ArrowRight"||h.key==="ArrowLeft")){h.preventDefault();const w=(h.key==="ArrowRight"?5:-5)/t,D=r.current.currentTime/t||0;f(Math.min(1,Math.max(0,D+w)))}},children:[B.position!==null&&n("div",{className:e.timeBubble,style:{left:B.position},children:s(B.time)}),n("div",{className:e.bar,children:[n("div",{className:e.buffered,ref:d,style:i==="full"?{width:"100%"}:void 0}),n("div",{className:e.watched,ref:S}),n("div",{className:e.thumb,ref:l,onMouseDown:h=>{h.preventDefault(),r.current&&(k.current||v())}}),u]})]})};function Ee(){try{if(typeof window>"u")return!1;const e=window.matchMedia?.("(pointer: coarse)").matches??!1,t=(navigator.maxTouchPoints??0)>0||"ontouchstart"in window;return e||t}catch{return!1}}function ct(){const[e,r]=x(Ee);return M(()=>{r(Ee());let t=null;const s=()=>r(Ee());try{t=window.matchMedia("(pointer: coarse)"),t.addEventListener?t.addEventListener("change",s):t.addListener(s)}catch{}return window.addEventListener("touchstart",s,{passive:!0,once:!0}),()=>{try{t&&(t.removeEventListener?t.removeEventListener("change",s):t.removeListener(s))}catch{}window.removeEventListener("touchstart",s)}},[]),e}const er=450,Io=({muted:e,volume:r,volumeIcon:t,buttonClassName:s,sliderClassName:o,onToggleMute:i,onVolumeChange:f,onExpandedChange:v})=>{const c=ct(),[g,b]=x(!1),u=C(null),E=C(!1),S=C(null),l=N(m=>{b(m),v?.(m)},[v]);M(()=>()=>{u.current&&window.clearTimeout(u.current)},[]),M(()=>{if(!g)return;const m=B=>{S.current&&!S.current.contains(B.target)&&l(!1)};return document.addEventListener("pointerdown",m),()=>document.removeEventListener("pointerdown",m)},[g,l]);const d=e?0:r,_=()=>{E.current=!1,u.current&&window.clearTimeout(u.current),u.current=window.setTimeout(()=>{E.current=!0,l(!0)},er)},y=()=>{u.current&&(window.clearTimeout(u.current),u.current=null)},k=m=>{if(m.stopPropagation(),E.current){E.current=!1;return}if(c){g?i():l(!0);return}i()};return n("div",{ref:S,className:ae.volumeWrap,"data-expanded":g?"true":"false",onContextMenu:m=>m.preventDefault(),children:[n("button",{type:"button",className:s,onClick:k,onPointerDown:_,onPointerUp:y,onPointerLeave:y,onContextMenu:m=>m.preventDefault(),"aria-label":e?"Unmute":"Mute","aria-expanded":g,children:t}),n("input",{type:"range",min:"0",max:"1",step:"0.05",value:d,onChange:m=>f(parseFloat(m.currentTarget.value)),onClick:m=>m.stopPropagation(),onPointerDown:m=>m.stopPropagation(),onContextMenu:m=>m.preventDefault(),className:`${ae.volumeSlider} ${o??""}`,style:{"--volume-percent":`${d*100}%`},"aria-label":"Volume"})]})},nt=280;function tr(e){return e?!!e.closest('button, input, select, textarea, a, [role="button"], [data-player-ui="true"]'):!1}const Mo=({player:e,topBar:r,centerControls:t,bottomBar:s,settingsPanel:o,overlays:i,isInteracting:f=!1,className:v,chromeDisabled:c=!1,onStageClick:g,children:b})=>{const{state:u,refs:E,actions:S}=e,l=E.playerContainerRef,_=ct()?5e3:3e3,y=C(0),k=C(null),m=C(f);m.current=f;const B=N(()=>{const T=S.inactivityTimer.current;T&&(window.clearTimeout(T),S.inactivityTimer.current=null)},[S]),P=N(()=>{B(),u.isPlaying&&(m.current||u.useNativeControls||(S.inactivityTimer.current=window.setTimeout(()=>{if(m.current)return;S.setShowControls(!1);const T=l.current;T&&u.isFullscreen&&(T.style.cursor="none")},_)))},[S,B,l,_,u.isFullscreen,u.isPlaying,u.useNativeControls]),H=N(()=>{const T=l.current;T&&(T.style.cursor="default"),!u.showControls&&!u.useNativeControls&&S.setShowControls(!0),P()},[S,l,P,u.showControls,u.useNativeControls]);M(()=>{if(u.showControls){if(!u.isPlaying){B();return}if(f||u.isScrubbing||u.showSettings||u.showVolumeSlider){S.setShowControls(!0),B();return}P()}},[S,B,f,P,u.isPlaying,u.isScrubbing,u.showControls,u.showSettings,u.showVolumeSlider]),M(()=>()=>B(),[B]);const K=N(T=>{const z=T.target;if(tr(z))return;g?.();const h=Date.now(),w=h-y.current<nt;if(y.current=h,w){k.current&&(window.clearTimeout(k.current),k.current=null),S.toggleFullscreen();return}k.current&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{k.current=null,S.setShowControls(!u.showControls),u.showControls?P():H()},nt)},[S,g,P,u.showControls,H]);M(()=>()=>{k.current&&window.clearTimeout(k.current)},[]);const V=u.showControls||u.isScrubbing||u.showSettings||u.showVolumeSlider;return n("div",{ref:l,className:`${ae.shell} ${u.isFullscreen?ae.shellFullscreen:""} ${v??""}`,onContextMenu:T=>T.preventDefault(),onPointerMove:T=>{T.pointerType==="mouse"&&H()},onMouseLeave:()=>{window.matchMedia?.("(hover: hover) and (pointer: fine)").matches&&u.isPlaying&&!m.current&&S.setShowControls(!1)},children:[n("div",{className:ae.stage,onClick:K,onContextMenu:T=>T.preventDefault(),children:b}),i,!c&&!u.useNativeControls&&n("div",{className:ae.uiLayer,onContextMenu:T=>T.preventDefault(),children:[n("div",{"data-player-ui":"true",children:r}),V&&t&&n("div",{"data-player-ui":"true",children:t}),n("div",{"data-player-ui":"true",children:s}),o&&n("div",{"data-player-ui":"true",children:o})]})]})},nr=e=>(e.language??e.lang??"").toLowerCase(),rr=e=>(e.label??"").toLowerCase(),or=e=>`${e.language??e.lang??""}|||${e.label??""}`,sr=e=>nr(e).startsWith("en")||rr(e).includes("english");function $o(e,r){if(e.length===0||r?.enabled===!1)return-1;const t=r?.lastKey??null;if(t){const o=e.findIndex(i=>or(i)===t);if(o>=0)return o}const s=e.findIndex(sr);return s>=0?s:0}const ar="_statusArea_1xccu_1",cr="_toggleBtn_1xccu_20",ir="_shortcuts_1xccu_46",lr="_shortcutGroup_1xccu_56",ur="_shortcut_1xccu_46",dr="_key_1xccu_70",fr="_label_1xccu_91",A={statusArea:ar,toggleBtn:cr,shortcuts:ir,shortcutGroup:lr,shortcut:ur,key:dr,label:fr},Fo=({showTheater:e=!0})=>{const[r,t]=x(!1);return n("div",{className:A.statusArea,children:[n("button",{type:"button",className:A.toggleBtn,onClick:()=>t(s=>!s),"aria-expanded":r,"aria-controls":"player-shortcuts",children:[n(Y,{name:"keyboard",size:14}),n("span",{children:"Keyboard Shortcuts"}),r?n(Y,{name:"chevron-up",size:12}):n(Y,{name:"chevron-down",size:12})]}),r&&n("div",{id:"player-shortcuts",className:A.shortcuts,children:[n("div",{className:A.shortcutGroup,children:[n("div",{className:A.shortcut,children:[n("span",{className:A.key,children:"↑"}),n("span",{className:A.key,children:"↓"}),n("span",{className:A.label,children:"Volume"})]}),n("div",{className:A.shortcut,children:[n("span",{className:A.key,children:"←"}),n("span",{className:A.key,children:"→"}),n("span",{className:A.label,children:"Seek"})]})]}),n("div",{className:A.shortcutGroup,children:[n("div",{className:A.shortcut,children:[n("span",{className:A.key,children:"Space"}),n("span",{className:A.label,children:"Play/Pause"})]}),n("div",{className:A.shortcut,children:[n("span",{className:A.key,children:"F"}),n("span",{className:A.label,children:"Fullscreen"})]}),n("div",{className:A.shortcut,children:[n("span",{className:A.key,children:"M"}),n("span",{className:A.label,children:"Mute"})]}),e&&n("div",{className:A.shortcut,children:[n("span",{className:A.key,children:"T"}),n("span",{className:A.label,children:"Theater"})]}),n("div",{className:A.shortcut,children:[n("span",{className:A.key,children:"N"}),n("span",{className:A.label,children:"Next"})]})]})]})]})},pr="_episodeListContainer_9tyin_1",mr="_drawerContainer_9tyin_9",hr="_episodeListHeader_9tyin_14",gr="_drawerHeader_9tyin_20",yr="_episodeListTitle_9tyin_29",vr="_rangeSelector_9tyin_41",br="_rangeButton_9tyin_47",_r="_active_9tyin_70",wr="_episodeList_9tyin_1",Sr="_drawerList_9tyin_89",Cr="_episodeItem_9tyin_118",kr="_watched_9tyin_145",Er="_episodeThumb_9tyin_167",Lr="_episodeText_9tyin_176",xr="_episodeLabel_9tyin_184",Tr="_episodeSub_9tyin_189",I={episodeListContainer:pr,drawerContainer:mr,episodeListHeader:hr,drawerHeader:gr,episodeListTitle:yr,rangeSelector:vr,rangeButton:br,active:_r,episodeList:wr,drawerList:Sr,episodeItem:Cr,watched:kr,episodeThumb:Er,episodeText:Lr,episodeLabel:xr,episodeSub:Tr},Nr=({episodes:e,currentEpisode:r,watchedEpisodes:t=[],onEpisodeClick:s,variant:o="sidebar",title:i="Episodes",header:f})=>{const[v,c]=x(0),g=C(null),b=pe(()=>e.map(l=>typeof l=="string"?{id:l,label:`Episode ${l}`}:l),[e]),u=pe(()=>new Set(t),[t]);M(()=>{const l=g.current;if(!l)return;let d=l.parentElement;for(;d;){const k=window.getComputedStyle(d);if((k.overflowY==="auto"||k.overflowY==="scroll")&&d.scrollHeight>d.clientHeight)break;d=d.parentElement}if(!d)return;const _=d.getBoundingClientRect(),y=l.getBoundingClientRect();d.scrollTop+=y.top+y.height/2-(_.top+d.clientHeight/2)},[r,v]);const E=pe(()=>{if(b.length<=100)return[];const l=[];for(let d=0;d<b.length;d+=100){const _=d+1,y=Math.min(d+100,b.length);l.push(`${_}-${y}`)}return l},[b]),S=pe(()=>{if(E.length===0)return b;const l=E[v];if(!l)return b;const[d,_]=l.split("-"),y=parseInt(d,10),k=parseInt(_,10);return b.slice(y-1,k)},[b,E,v]);return n("div",{className:`${I.episodeListContainer} ${o==="drawer"?I.drawerContainer:""}`,children:[n("div",{className:`${I.episodeListHeader} ${o==="drawer"?I.drawerHeader:""}`,children:[f,n("h3",{className:I.episodeListTitle,children:i}),E.length>0&&n("div",{className:I.rangeSelector,children:E.map((l,d)=>n("button",{className:`${I.rangeButton} ${v===d?I.active:""}`,onClick:()=>c(d),children:l},l))})]}),n("div",{className:`${I.episodeList} ${o==="drawer"?I.drawerList:""}`,children:S.map(l=>{const d=l.id===r,_=u.has(l.id)||l.watched===!0;return n("div",{ref:d?g:void 0,className:`${I.episodeItem} ${_?I.watched:""} ${d?I.active:""}`,onClick:()=>s(l.id),children:[l.thumbnail&&n("img",{src:l.thumbnail,alt:"",loading:"lazy",decoding:"async",className:I.episodeThumb}),n("span",{className:I.episodeText,children:[n("span",{className:I.episodeLabel,children:l.label??`Episode ${l.id}`}),l.sublabel&&n("span",{className:I.episodeSub,children:l.sublabel})]})]},l.id)})})]})},Do=({variant:e="sidebar",count:r=12})=>n("div",{className:`${I.episodeListContainer} ${e==="drawer"?I.drawerContainer:""}`,children:[n("div",{className:`${I.episodeListHeader} ${e==="drawer"?I.drawerHeader:""}`,children:[n("h3",{className:I.episodeListTitle,children:"Episodes"}),n("div",{className:I.rangeSelector,children:[n(_e,{width:"60px",height:"28px",variant:"rectangular"}),n(_e,{width:"60px",height:"28px",variant:"rectangular"}),n(_e,{width:"60px",height:"28px",variant:"rectangular"})]})]}),n("div",{className:`${I.episodeList} ${e==="drawer"?I.drawerList:""}`,children:Array.from({length:r}).map((t,s)=>n("div",{className:I.episodeItem,style:{border:"none",background:"transparent"},children:n(_e,{width:"120px",height:"1.2rem",variant:"text"})},s))})]}),Br="_shell_cys6s_1",Pr="_overlay_cys6s_10",qr="_drawer_cys6s_21",Ar="_handle_cys6s_56",Ir="_header_cys6s_64",Mr="_headerCopy_cys6s_73",$r="_kicker_cys6s_79",Fr="_title_cys6s_87",Dr="_closeBtn_cys6s_94",Rr="_body_cys6s_116",Q={shell:Br,overlay:Pr,drawer:qr,handle:Ar,header:Ir,headerCopy:Mr,kicker:$r,title:Fr,closeBtn:Dr,body:Rr};function Ro({isOpen:e,onClose:r,episodes:t,currentEpisode:s,watchedEpisodes:o=[],onEpisodeClick:i,title:f,header:v}){return M(()=>{if(!e)return;const c=b=>{b.key==="Escape"&&r()},g=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",c),()=>{document.body.style.overflow=g,document.removeEventListener("keydown",c)}},[e,r]),e?Nt(n("div",{className:Q.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[n("button",{className:Q.overlay,type:"button",onClick:r,"aria-label":"Close episodes"}),n("aside",{className:Q.drawer,children:[n("div",{className:Q.handle}),n("div",{className:Q.header,children:[n("div",{className:Q.headerCopy,children:[n("span",{className:Q.kicker,children:"Episode picker"}),n("h3",{className:Q.title,children:"Choose an episode"})]}),n("button",{className:Q.closeBtn,type:"button",onClick:r,"aria-label":"Close",children:n(Y,{name:"times"})})]}),n("div",{className:Q.body,children:n(Nr,{episodes:t,currentEpisode:s,watchedEpisodes:o,onEpisodeClick:i,variant:"drawer",title:f,header:v})})]})]}),document.body):null}const jr="_sourceSelectionContainer_1am19_1",Or="_providerSelectContainer_1am19_14",Hr="_providerSelect_1am19_14",Vr="_sourceSelect_1am19_1",Wr="_sourceButtons_1am19_70",zr="_sourceButton_1am19_70",Ur="_active_1am19_95",jo={sourceSelectionContainer:jr,providerSelectContainer:Or,providerSelect:Hr,sourceSelect:Vr,sourceButtons:Wr,sourceButton:zr,active:Ur};function qe(){return document}function it(e){const r=qe();if(document.fullscreenElement)return document.fullscreenElement;if(r.webkitFullscreenElement)return r.webkitFullscreenElement;const t=e;return t?.webkitDisplayingFullscreen?t:null}function ce(e){return it(e)!==null}async function Kr(e,r){if(it(r))return;const t=e;try{if(typeof e.requestFullscreen=="function"){await e.requestFullscreen();return}if(typeof t.webkitRequestFullscreen=="function"){await t.webkitRequestFullscreen();return}if(typeof t.webkitRequestFullScreen=="function"){await t.webkitRequestFullScreen();return}}catch{}const s=r;if(s&&typeof s.webkitEnterFullscreen=="function"){if(s.webkitSupportsFullscreen===!1)return;try{await s.webkitEnterFullscreen()}catch{}}}async function Xr(e){const r=qe();try{if(document.fullscreenElement&&typeof document.exitFullscreen=="function"){await document.exitFullscreen();return}if(r.webkitFullscreenElement&&typeof r.webkitExitFullscreen=="function"){await r.webkitExitFullscreen();return}}catch{}const t=e;if(t?.webkitDisplayingFullscreen&&typeof t.webkitExitFullscreen=="function"){try{t.webkitExitFullscreen()}catch{}return}try{typeof r.webkitCancelFullScreen=="function"?r.webkitCancelFullScreen():!document.fullscreenElement&&typeof document.exitFullscreen=="function"&&(document.fullscreenElement??r.webkitFullscreenElement)&&await document.exitFullscreen()}catch{}}async function Gr(e,r){!e&&!r||(ce(r)?await Xr(r):e&&await Kr(e,r))}function Qr(e,r){const t=()=>{try{r(ce(e()))}catch{}},s=qe(),o=t;s.addEventListener("fullscreenchange",t),s.addEventListener("webkitfullscreenchange",o),s.addEventListener("webkitbeginfullscreen",o,!0),s.addEventListener("webkitendfullscreen",o,!0);const i=e();return i?.addEventListener("webkitbeginfullscreen",o),i?.addEventListener("webkitendfullscreen",o),()=>{s.removeEventListener("fullscreenchange",t),s.removeEventListener("webkitfullscreenchange",o),s.removeEventListener("webkitbeginfullscreen",o,!0),s.removeEventListener("webkitendfullscreen",o,!0),i?.removeEventListener("webkitbeginfullscreen",o),i?.removeEventListener("webkitendfullscreen",o)}}const Oo=({skipIntervals:e,showId:r,episodeNumber:t,episodeCount:s,sourceType:o,showMeta:i})=>{const f=Mt(),v=Pt(),c=C(null),g=C(null),b=C(null),u=C(!1),E=C(null),S=C(0),l=C({mouse:!1,keyboard:!1}),d=C(null),_=C(null),y=C(!1),k=C(Math.random().toString(36).substring(2)),[m,B]=x(!1),[P,H]=x(()=>{try{return localStorage.getItem("playerMuted")==="true"}catch{return!1}}),[K,V]=x(()=>{try{const a=parseFloat(localStorage.getItem("playerVolume")||"");return isNaN(a)?1:Math.max(0,Math.min(1,a))}catch{return 1}}),[T,z]=x(!1),[h,w]=x(0),[D,$]=x(!0),[W,X]=x(!1),[re,lt]=x(localStorage.getItem("autoSkipEnabled")==="true"),[ut,Se]=x(null),[ee]=x(Xn),[dt,Ae]=x(ee.fontSize),[ft,Ie]=x(ee.position),[pt,Me]=x(ee.bgOpacity),[mt,$e]=x(ee.bgColor),[ht,Fe]=x(ee.textColor),[gt,De]=x(ee.edge),[yt,Re]=x(ee.bold),je=N((a,L)=>{if({fontSize:p=>typeof p!="number"?!1:(Ae(p),!0),position:p=>typeof p!="number"?!1:(Ie(p),!0),bgOpacity:p=>typeof p!="number"?!1:(Me(p),!0),bgColor:p=>typeof p!="string"?!1:($e(p),!0),textColor:p=>typeof p!="string"?!1:(Fe(p),!0),edge:p=>p!=="shadow"&&p!=="outline"&&p!=="none"?!1:(De(p),!0),bold:p=>typeof p!="boolean"?!1:(Re(p),!0)}[a](L))try{localStorage.setItem(Kn[a],String(L))}catch{}},[]),[vt,bt]=x([]),[_t,wt]=x(null),[St,Ct]=x(!1),[kt,Et]=x(!1),[me,G]=x(!1),[Lt,he]=x(!1),[xt,Oe]=x(()=>{try{return localStorage.getItem("playerUseNativeControls")==="true"}catch{return!1}}),ie=C(!1),Ce=C(-1),ge=N(()=>{const a=c.current;return!r||!t||!i?.name?null:{showId:r,episodeNumber:t,episodeCount:s,currentTime:a?a.currentTime:0,duration:a?a.duration:0,showName:i.name,showThumbnail:i.thumbnail,nativeName:i.names?.native,englishName:i.names?.english,genres:Array.isArray(i.genres)?i.genres.map(L=>typeof L=="string"?L:L?.name).filter(Boolean):void 0,popularityScore:i.score,type:i.type,isPlaying:a?!a.paused:!0,sessionId:k.current,isAdult:i.isAdult}},[r,t,s,i]),R=N((a=!1,L=!1)=>{if(ie.current)return!1;const q=ge();if(!q)return!1;const p=c.current;if(!p&&o!=="iframe")return!1;const F=p?p.currentTime>=p.duration*.8:!1;let j=p?p.currentTime:0;if(a&&F&&(j=p?p.duration:0),!L){if(j===0&&!F)return!1;const U=p?Math.abs(j-Ce.current):0;if(!a&&p&&j!==p.duration&&U<5)return!1}return q.currentTime=j,Ce.current=j,a?(async()=>{try{await tt.progress.updateProgress.mutate(q),f.invalidateQueries({queryKey:[de.videoSources,r,t]}),f.invalidateQueries({queryKey:[de.continueWatching]}),f.invalidateQueries({queryKey:[de.thisWeekSchedule]}),f.invalidateQueries(v.continueWatching.pathFilter())}catch(U){console.error("Failed to update progress:",U)}})():qt("progress.updateProgress",q).catch(U=>console.error("Failed to update progress:",U)),!0},[ge,o,f,r,t,v.continueWatching]);M(()=>{const a=c.current;a&&(a.volume=K,a.muted=P)},[c,K,P]),M(()=>{const a=()=>{ie.current||R(!0)};window.addEventListener("beforeunload",a);const L=E,q=b;return()=>{window.removeEventListener("beforeunload",a),ie.current||R(!0),L.current&&clearTimeout(L.current),q.current&&clearTimeout(q.current)}},[R]);const He=N(()=>{$(!0),b.current&&clearTimeout(b.current),b.current=window.setTimeout(()=>{$(!1)},1e3)},[$]),ye=N(()=>{const a=g.current;a&&Gr(a,c.current).catch(L=>{console.error(`Error attempting to toggle full-screen mode: ${L?.message} (${L?.name})`)})},[]),ve=N(()=>{c.current&&(c.current.paused?c.current.play().catch(()=>console.warn("Autoplay was prevented.")):(c.current.pause(),$(!0)))},[$]),oe=N(()=>{const a=c.current;if(!a)return;const L=l.current.mouse||l.current.keyboard;a.playbackRate=L?2:1},[]),le=N(a=>{l.current.mouse!==a&&(l.current.mouse=a,he(a||l.current.keyboard),oe())},[oe]),se=N(a=>{l.current.keyboard!==a&&(l.current.keyboard=a,he(l.current.mouse||a),oe())},[oe]),ue=N(a=>{c.current&&(c.current.currentTime+=a,E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{R(!1,!0)},1500),$(!0))},[R,$]),be=N(()=>{if(!c.current)return;const a=!c.current.muted;c.current.muted=a,H(a),localStorage.setItem("playerMuted",String(a)),!a&&c.current.volume===0&&(c.current.volume=.5,V(.5),localStorage.setItem("playerVolume",String(.5))),$(!0)},[$]);M(()=>{const a=()=>c.current,L=Qr(a,q=>{z(q),q&&$(!0)});return z(ce(a())),L},[$]),M(()=>{const a=q=>{if(!q.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')){if(q.code==="Space"){if(q.preventDefault(),y.current)return;y.current=!0,_.current&&clearTimeout(_.current),_.current=window.setTimeout(()=>{_.current=null,y.current&&se(!0)},180);return}switch(q.key.toLowerCase()){case"f":ye();break;case"m":be();break;case"arrowright":ue(10);break;case"arrowleft":ue(-10);break;case"arrowup":if(q.preventDefault(),c.current){const F=Math.min(1,c.current.volume+.1);c.current.volume=F,V(F)}break;case"arrowdown":if(q.preventDefault(),c.current){const F=Math.max(0,c.current.volume-.1);c.current.volume=F,V(F)}break}}},L=q=>{if(q.code==="Space"){if(q.preventDefault(),y.current=!1,l.current.keyboard){se(!1);return}_.current&&(clearTimeout(_.current),_.current=null,ve())}};return document.addEventListener("keydown",a),document.addEventListener("keyup",L),()=>{document.removeEventListener("keydown",a),document.removeEventListener("keyup",L),_.current&&(clearTimeout(_.current),_.current=null),y.current=!1,se(!1),he(!1)}},[se,ve,ye,be,ue]),M(()=>{const a=j=>j?!!j.closest('[data-speed-boost-ignore="true"], [data-player-ui="true"], button, input, select, textarea, a, [role="button"], [role="slider"], [contenteditable="true"]'):!0,L=j=>{if(j.button!==0)return;const J=j.target;if(!J||a(J))return;const U=g.current;!U||!U.contains(J)||(d.current&&clearTimeout(d.current),d.current=window.setTimeout(()=>{d.current=null,le(!0)},180))},q=j=>{const J=j.target;if(!J||a(J))return;const U=g.current;!U||!U.contains(J)||(d.current&&clearTimeout(d.current),d.current=window.setTimeout(()=>{d.current=null,le(!0)},180))},p=()=>{d.current&&(clearTimeout(d.current),d.current=null),le(!1)},F=()=>{d.current&&(clearTimeout(d.current),d.current=null),y.current=!1,_.current&&(clearTimeout(_.current),_.current=null),se(!1),le(!1),he(!1)};return document.addEventListener("mousedown",L),document.addEventListener("mouseup",p),document.addEventListener("touchstart",q,{passive:!0}),document.addEventListener("touchend",p),document.addEventListener("touchcancel",p),document.addEventListener("pointerup",p),document.addEventListener("pointercancel",p),window.addEventListener("blur",F),()=>{document.removeEventListener("mousedown",L),document.removeEventListener("mouseup",p),document.removeEventListener("touchstart",q),document.removeEventListener("touchend",p),document.removeEventListener("touchcancel",p),document.removeEventListener("pointerup",p),document.removeEventListener("pointercancel",p),window.removeEventListener("blur",F),d.current&&(clearTimeout(d.current),d.current=null)}},[se,le]);const Ve=N(()=>{B(!0),G(!1),setTimeout(()=>R(!1,!0),50)},[R]),We=N(()=>{B(!0),G(!1)},[]),ze=N(()=>{const a=c.current;a&&!a.paused&&a.readyState>=3&&!a.seeking||G(!0)},[]),Ue=N(()=>{G(!1)},[]),Ke=N(()=>{B(!1),G(!1),$(!0),setTimeout(()=>R(!1,!0),50)},[R]),Xe=C(!1);Xe.current=me,M(()=>{if(!me)return;let a=c.current?.currentTime??0,L=0;const q=window.setInterval(()=>{const p=c.current;if(!p)return;L+=1;const F=p.currentTime,j=F!==a;if(a=F,!(p.paused||p.seeking)){if(j||p.readyState>=3){G(!1);return}L>=24&&p.readyState>=2&&!p.ended&&G(!1)}},500);return()=>window.clearInterval(q)},[me]),M(()=>{ie.current=!1,Ce.current=-1,S.current=0,k.current=Math.random().toString(36).substring(2),w(0),G(!1)},[r,t]);const Ge=N(()=>{w(0),G(!1)},[]);M(()=>{const a=k.current;return()=>{At(a)}},[r,t]),M(()=>{if(o!=="iframe")return;R(!1,!0);const a=setInterval(()=>{R(!1,!0)},6e4);return()=>clearInterval(a)},[o,R]);const Qe=N(()=>{w(c.current?.duration||0),oe()},[oe]),Ye=N(()=>{if(c.current){const a=c.current.muted,L=c.current.volume;H(a),V(L),localStorage.setItem("playerMuted",String(a)),localStorage.setItem("playerVolume",String(L))}},[]),Je=N(()=>{const a=c.current;if(!a)return;Xe.current&&!a.paused&&!a.seeking&&G(!1);const L=a.currentTime||0,q=Date.now();q-S.current>6e4&&R()&&(S.current=q);const p=e.find(F=>L>=F.start_time&&L<F.end_time)||null;Se(F=>F?.skip_id!==p?.skip_id?p:F),re&&p&&!a.paused&&(a.currentTime=p.end_time,Se(null))},[e,re,R]),Ze=N(()=>{const a=ge();a&&(a.currentTime=a.duration,tt.progress.updateProgress.mutate(a).then(()=>{f.invalidateQueries({queryKey:[de.videoSources,r,t]}),f.invalidateQueries({queryKey:[de.continueWatching]})}).catch(L=>console.error("Failed to send final progress:",L)))},[ge,f,r,t]),et=N(()=>{ie.current=!0,Ze()},[Ze]);M(()=>{const a=()=>{W&&(X(!1),u.current&&c.current?.play(),R(!1,!0))};return W&&(document.addEventListener("mouseup",a),document.addEventListener("pointerup",a),document.addEventListener("touchend",a),document.addEventListener("pointercancel",a),document.addEventListener("touchcancel",a)),()=>{document.removeEventListener("mouseup",a),document.removeEventListener("pointerup",a),document.removeEventListener("touchend",a),document.removeEventListener("pointercancel",a),document.removeEventListener("touchcancel",a)}},[W,R]);const Tt=pe(()=>({togglePlay:ve,seek:ue,toggleMute:be,toggleFullscreen:ye,onPlay:Ve,onPause:Ke,onLoadedMetadata:Qe,formatTime:It,onVolumeChange:Ye,onTimeUpdate:Je,onEnded:et,setShowControls:$,setIsScrubbing:X,setIsAutoSkipEnabled:lt,setCurrentSkipInterval:Se,setSubtitleFontSize:Ae,setSubtitlePosition:Ie,setSubtitleBgOpacity:Me,setSubtitleBgColor:$e,setSubtitleTextColor:Fe,setSubtitleEdge:De,setSubtitleBold:Re,setSubtitleStyle:je,setAvailableSubtitles:bt,setActiveSubtitleTrack:wt,setShowSettings:Ct,setShowVolumeSlider:Et,wasPlayingBeforeScrub:u,inactivityTimer:b,flashControls:He,setIsFullscreen:z,onWaiting:ze,onPlaying:We,onCanPlay:Ue,sendProgressUpdate:R,setUseNativeControls:Oe,resetMediaState:Ge}),[ve,ue,be,ye,Ve,Ke,Qe,Ye,Je,et,z,ze,We,Ue,R,Oe,Ge,He,je]);return{refs:{videoRef:c,playerContainerRef:g},state:{isPlaying:m,isMuted:P,volume:K,isFullscreen:T,duration:h,showControls:D,isScrubbing:W,isAutoSkipEnabled:re,currentSkipInterval:ut,subtitleFontSize:dt,subtitlePosition:ft,subtitleBgOpacity:pt,subtitleBgColor:mt,subtitleTextColor:ht,subtitleEdge:gt,subtitleBold:yt,availableSubtitles:vt,activeSubtitleTrack:_t,showSettings:St,showVolumeSlider:kt,isBuffering:me,isSpeedBoostActive:Lt,useNativeControls:xt},actions:Tt}};function Yr(){try{return typeof navigator<"u"&&/android/i.test(navigator.userAgent)}catch{return!1}}function Ho(e,r){const{refs:t,actions:s}=e,o=C(r);o.current=r;const i=C(!1),f=C(!1),v=c=>{try{if(c)return c.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};M(()=>{if(!Yr())return;let c=null;const g=()=>{const b=t.playerContainerRef.current;if(v(c)){if(!o.current||!b||ce(t.videoRef.current)||f.current)return;i.current=!0,s.toggleFullscreen()}else f.current=!1,i.current&&(i.current=!1,ce(t.videoRef.current)&&s.toggleFullscreen())};try{c=window.matchMedia("(orientation: landscape)"),c.addEventListener?c.addEventListener("change",g):c.addListener(g)}catch{}return g(),()=>{try{c&&(c.removeEventListener?c.removeEventListener("change",g):c.removeListener(g))}catch{}}},[s,t.playerContainerRef,t.videoRef,r]),M(()=>{const c=()=>{if(!ce(t.videoRef.current)){i.current=!1;try{window.matchMedia("(orientation: landscape)").matches&&(f.current=!0)}catch{f.current=!0}}};return document.addEventListener("fullscreenchange",c),document.addEventListener("webkitfullscreenchange",c),()=>{document.removeEventListener("fullscreenchange",c),document.removeEventListener("webkitfullscreenchange",c)}},[t.videoRef])}const Jr=e=>Math.max(8,Math.min(40,Math.ceil(e/16.7)+4));function Vo({videoRef:e,canvasRef:r,delayMs:t,enabled:s}){const o=C(t);o.current=t;const i=C([]),f=C(-1),v=C(-1),c=C(!1),g=C(0),b=C(null);M(()=>{const u=y=>{if(y)try{y.close()}catch{}},E=()=>{for(const y of i.current)u(y.bitmap);i.current=[]};if(!s){E(),f.current=-1,v.current=-1,c.current=!1,g.current=0;return}let S=!1;const l=()=>{b.current!==null&&(cancelAnimationFrame(b.current),b.current=null)},d=()=>{S||(l(),b.current=requestAnimationFrame(()=>{_()}))};async function _(){if(S)return;const y=e.current,k=r.current;if(!y||!k||y.videoWidth===0){d();return}if(y.paused||y.ended||document.hidden||y.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){d();return}const m=y.getVideoPlaybackQuality().totalVideoFrames;if(m===f.current){d();return}(y.seeking||v.current>=0&&Math.abs(y.currentTime-v.current)>.5)&&(E(),c.current=!1,g.current=0,f.current=-1),v.current=y.currentTime,(k.width!==y.videoWidth||k.height!==y.videoHeight)&&(k.width=y.videoWidth,k.height=y.videoHeight);const B=Math.max(0,o.current||0);B>g.current&&(c.current=!1);try{const P=await createImageBitmap(y);if(S){u(P);return}f.current=m;const H=performance.now(),K=k.getContext("2d"),V=w=>{K&&K.drawImage(w,0,0,k.width,k.height)};if(B<=0){E(),c.current=!1,g.current=0,V(P),u(P),d();return}const T=i.current;T.push({bitmap:P,capture:H});const z=Jr(B);for(;T.length>z;)u(T.shift()?.bitmap);let h=-1;for(let w=T.length-1;w>=0;w--)if(H-T[w].capture>=B){h=w;break}if(h!==-1){for(let D=0;D<h;D++)u(T.shift()?.bitmap);const w=T.shift();w?(V(w.bitmap),u(w.bitmap),c.current=!0,g.current=B):V(P)}else if(!c.current)V(P);else{const w=T.shift();w?(V(w.bitmap),u(w.bitmap)):V(P)}}catch{}d()}return d(),()=>{S=!0,l();for(const y of i.current)try{y.bitmap.close()}catch{}i.current=[]}},[s,e,r])}const rt=(e,r)=>{try{localStorage.setItem("playerVideoDelayMs",String(e)),localStorage.setItem("playerVideoDelayEnabled",String(r))}catch{}},ot=e=>{try{localStorage.setItem("playerVideoDelayEnabled",String(e))}catch{}};function Wo(e,r){const[t,s]=x(()=>{try{const m=Number(localStorage.getItem("playerVideoDelayMs"));if(Number.isFinite(m)&&m>=0&&m<=500)return Math.round(m)}catch{}return 180}),[o,i]=x(()=>{try{return localStorage.getItem("playerVideoDelayEnabled")==="true"}catch{return!1}}),[f,v]=x(!1),[c,g]=x(!1),b=C(null),u=C(null),E=m=>{const B=Math.max(0,Math.min(500,Math.round(m)));s(B);try{localStorage.setItem("playerVideoDelayMs",String(B))}catch{}},S=m=>{i(m),ot(m)},l=N(()=>{g(!1),v(!1)},[]);return{videoDelayMs:t,videoDelayEnabled:o,setDelayEnabled:S,handleVideoDelayChange:E,isCalibrating:f,testClipActive:c,stopCalibration:l,openAvSyncCalibrator:()=>{b.current={enabled:o,ms:t},i(!0),ot(!0),r?.(),v(!0)},cancelAvSyncCalibrator:()=>{const m=b.current;b.current=null,m&&(s(m.ms),i(m.enabled),rt(m.ms,m.enabled)),g(!1),v(!1)},applyAvSyncCalibrator:()=>{b.current=null,i(!0),rt(t,!0),g(!1),v(!1)},toggleTestClip:()=>{if(c){g(!1);return}const m=e.current;m&&!isNaN(m.currentTime)&&(u.current=m.currentTime),g(!0)},calibReturnRef:u,effectiveVideoDelayMs:o?t:0}}function zo(){const[e,r]=x(()=>{try{return localStorage.getItem("playerTheaterMode")==="true"}catch{return!1}});M(()=>{try{e?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(o){console.error(o)}return()=>{try{document.body.classList.remove("theater-mode")}catch(o){console.error(o)}}},[e]);const t=N(()=>{r(o=>{const i=!o;try{localStorage.setItem("playerTheaterMode",i.toString())}catch{}return i})},[]),s=N(o=>{if(e&&o.target===o.currentTarget){r(!1);try{localStorage.setItem("playerTheaterMode","false")}catch{}}},[e]);return{isTheaterMode:e,toggleTheaterMode:t,handleLayoutClick:s}}const te={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function Zr(){try{const e=localStorage.getItem("playerAmbientLight");if(!e)return te;const r=JSON.parse(e),t=(s,o,i,f)=>{const v=Number(s);return Number.isFinite(v)?Math.max(i,Math.min(f,v)):o};return{enabled:r.enabled??te.enabled,blur:t(r.blur,te.blur,0,120),saturation:t(r.saturation,te.saturation,0,200),brightness:t(r.brightness,te.brightness,20,120),opacity:t(r.opacity,te.opacity,10,100)}}catch{return te}}function Uo(){const[e,r]=x(Zr),t=N(s=>{r(o=>{const i={...o,...s};try{localStorage.setItem("playerAmbientLight",JSON.stringify(i))}catch{}return i})},[]);return{settings:e,update:t}}const eo="_theaterAmbient_x9t0o_1",to={theaterAmbient:eo},Le=160,xe=90,no=120,Ko=({videoRef:e,active:r,settings:t,className:s})=>{const o=C(null);return M(()=>{if(!r)return;const i=o.current,f=e.current;if(!i||!f)return;const v=i.getContext("2d",{alpha:!1});if(!v)return;let c=0,g=0,b=!1;const u=()=>{if(!(f.readyState<2||!f.videoWidth))try{const l=f.videoWidth,d=f.videoHeight,_=Le/xe,y=l/d;let k=l,m=d,B=0,P=0;y>_?(k=d*_,B=(l-k)/2):(m=l/_,P=(d-m)/2),v.drawImage(f,B,P,k,m,0,0,Le,xe)}catch{}},E=l=>{b||f.paused||(c=requestAnimationFrame(E),!(l-g<no)&&(g=l,u()))},S=()=>{b||(cancelAnimationFrame(c),g=0,c=requestAnimationFrame(E))};return f.addEventListener("play",S),f.addEventListener("seeked",u),f.addEventListener("loadeddata",u),c=requestAnimationFrame(E),()=>{b=!0,cancelAnimationFrame(c),f.removeEventListener("play",S),f.removeEventListener("seeked",u),f.removeEventListener("loadeddata",u)}},[r,e]),r?n("canvas",{ref:o,width:Le,height:xe,"aria-hidden":"true",className:s??to.theaterAmbient,style:{filter:`blur(${t.blur}px) saturate(${t.saturation}%) brightness(${t.brightness}%)`,opacity:t.opacity/100}}):null},ro="_row_1fq55_1",oo="_rowHeader_1fq55_9",so="_rowLabel_1fq55_17",ao="_rowValue_1fq55_28",co="_slider_1fq55_36",io="_swatches_1fq55_99",lo="_swatch_1fq55_99",uo="_swatchPicked_1fq55_114",fo="_colorInput_1fq55_120",po="_segmented_1fq55_131",O={row:ro,rowHeader:oo,rowLabel:so,rowValue:ao,slider:co,swatches:io,swatch:lo,swatchPicked:uo,colorInput:fo,segmented:po},mo=({label:e,display:r,min:t,max:s,step:o,value:i,percent:f,onChange:v,onCommit:c})=>n("div",{className:O.row,children:[n("div",{className:O.rowHeader,children:[n("span",{className:O.rowLabel,children:e}),n("span",{className:O.rowValue,children:r})]}),n("input",{type:"range",className:O.slider,min:t,max:s,step:o,value:i,"aria-label":e,"data-speed-boost-ignore":"true",onInput:g=>v(Number(g.target.value)),onMouseDown:g=>g.stopPropagation(),onPointerDown:g=>g.stopPropagation(),onTouchStart:g=>g.stopPropagation(),onPointerUp:c,onPointerCancel:c,onTouchEnd:c,onKeyUp:c,onBlur:c,style:{"--slider-percent":`${f}%`}})]}),Xo=({label:e,colors:r,value:t,onChange:s})=>n("div",{className:O.row,children:[n("div",{className:O.rowHeader,children:n("span",{className:O.rowLabel,children:e})}),n("div",{className:O.swatches,children:[r.map(o=>n("button",{type:"button","aria-label":`${e} ${o}`,"aria-pressed":t.toLowerCase()===o.toLowerCase(),onClick:()=>s(o),className:`${O.swatch} ${t.toLowerCase()===o.toLowerCase()?O.swatchPicked:""}`,style:{backgroundColor:o}},o)),n("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:O.colorInput,value:t,"data-speed-boost-ignore":"true",onInput:o=>s(o.target.value),onMouseDown:o=>o.stopPropagation(),onPointerDown:o=>o.stopPropagation(),onTouchStart:o=>o.stopPropagation()})]})]});function Go({label:e,options:r,value:t,onChange:s}){return n("div",{className:O.row,children:[n("div",{className:O.rowHeader,children:n("span",{className:O.rowLabel,children:e})}),n("div",{className:O.segmented,role:"group","aria-label":e,children:r.map(o=>n("button",{type:"button","aria-pressed":t===o,onClick:()=>s(o),children:[n("span",{children:o}),t===o&&n(Y,{name:"check",size:10})]},o))})]})}const we=10,Pe=500,Te=e=>Math.max(0,Math.min(Pe,Math.round(e))),Qo=({isOpen:e,ms:r,onChange:t,onApply:s,onClose:o,testClipActive:i,onTestClip:f})=>e?n("div",{role:"dialog","aria-label":"Calibrate audio video sync","data-speed-boost-ignore":"true",onClick:v=>v.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:[n("div",{style:{fontSize:"0.8rem",fontWeight:800,color:"var(--text-primary)"},children:"A/V sync"}),n("div",{children:n(ne,{size:"sm",variant:"secondary",onClick:f,children:i?"Back to video":"Preview test clip"})}),n("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap"},children:[n(ne,{size:"sm",onClick:()=>t(Te(r-we)),"aria-label":"Decrease delay by 10 milliseconds",children:["− ",we,"ms"]}),n("div",{style:{fontSize:"1.1rem",fontWeight:800,minWidth:64,textAlign:"center"},children:[r,"ms"]}),n(ne,{size:"sm",onClick:()=>t(Te(r+we)),"aria-label":"Increase delay by 10 milliseconds",children:["+ ",we,"ms"]})]}),n(mo,{label:"Video delay",display:`${r}ms`,min:0,max:Pe,step:5,value:r,percent:r/Pe*100,onChange:v=>t(Te(v))}),n("div",{style:{display:"flex",gap:8,justifyContent:"center",flexWrap:"wrap"},children:[n(ne,{size:"sm",variant:"secondary",onClick:o,children:"Cancel"}),n(ne,{size:"sm",onClick:s,children:["Apply ",r,"ms"]})]})]}):null;export{Ko as A,Lo as B,Po as C,Z as D,Do as E,te as F,mo as M,Fo as P,Bo as R,Ao as S,Eo as T,Io as U,Mo as a,qo as b,jo as c,wo as d,So as e,xo as f,No as g,ko as h,Wo as i,Vo as j,zo as k,Ho as l,Uo as m,_o as n,Nr as o,$o as p,bo as q,Co as r,or as s,ae as t,Oo as u,Qo as v,Ro as w,To as x,Xo as y,Go as z};
@@ -1 +0,0 @@
1
- import{d as $,A as z,h as F,T as Re,u as e,g as x,S as H,$ as Ie,L as Y,q as P,N as ke,a as ze}from"./vendor-core-DfaOB3Rn.js";import{I as N}from"./vendor-icons-DrybRNxP.js";import{a as $e,b as Se,f as Le,s as De}from"./vendor-ui-3qrARCPr.js";import{u as re}from"./useIsMobile-Dvx1uJ82.js";import{M as xe}from"./MatureConsentModal-BsdpNeXA.js";import{t as Oe,d as Ae,u as je,e as Fe,f as Ue}from"./index-BLh_CXtu.js";const We="_pagination_zelsc_1",Ve="_pageBtn_zelsc_7",Ge="_pageInfo_zelsc_38",Xe="_pagePicker_zelsc_48",Ye="_dropdown_zelsc_52",He="_flipDown_zelsc_68",Ke="_jumpRow_zelsc_73",qe="_jumpInput_zelsc_79",Je="_jumpGo_zelsc_90",Qe="_optionList_zelsc_105",Ze="_optionBtn_zelsc_113",et="_current_zelsc_132",b={pagination:We,pageBtn:Ve,pageInfo:Ge,pagePicker:Xe,dropdown:Ye,flipDown:He,jumpRow:Ke,jumpInput:qe,jumpGo:Je,optionList:Qe,optionBtn:Ze,current:et},yn=({page:t,totalPages:p,canGoNext:l,onChange:i,isLoading:f=!1,variant:h="compact"})=>{const[s,y]=$(!1),[B,_]=$(""),[v,w]=$(0),[C,R]=$(!1),T=z(null),d=z(null),g=z(null);F(()=>{if(!s)return;const r=m=>{T.current&&!T.current.contains(m.target)&&y(!1)},n=m=>{m.key==="Escape"&&y(!1)};return document.addEventListener("pointerdown",r),document.addEventListener("keydown",n),()=>{document.removeEventListener("pointerdown",r),document.removeEventListener("keydown",n)}},[s]),F(()=>{if(!s)return;w(0),R(!1);const r=requestAnimationFrame(()=>{const n=g.current?.getBoundingClientRect(),m=d.current?.getBoundingClientRect();if(!n)return;let M=0;n.right>window.innerWidth-8?M=window.innerWidth-8-n.right:n.left<8&&(M=8-n.left),w(Math.round(M)),m&&m.top<n.height+24&&R(!0)});return()=>cancelAnimationFrame(r)},[s]);const a=p,S=Re(()=>{if(a!==void 0){if(a<=100)return Array.from({length:a},(m,M)=>M+1);const n=new Set([1,a]);for(let m=t-10;m<=t+10;m++)m>=1&&m<=a&&n.add(m);return[...n].sort((m,M)=>m-M)}const r=l?t+1:t;return Array.from({length:r},(n,m)=>m+1)},[a,t,l]),E=r=>{const n=a!==void 0?Math.min(Math.max(1,r),a):Math.max(1,r);y(!1),_(""),n!==t&&i(n)},L=()=>{const r=parseInt(B,10);Number.isNaN(r)||E(r)},D=f||(a!==void 0?t>=a:!l);return e("div",{className:b.pagination,ref:T,children:[e("button",{className:b.pageBtn,onClick:()=>i(t-1),disabled:t<=1||f,"aria-label":"Previous page",children:[e(N,{name:"chevron-left",size:14}),h==="labeled"&&e("span",{children:"Previous"})]}),e("div",{className:b.pagePicker,ref:d,children:[e("button",{className:b.pageBtn,onClick:()=>{_(""),y(r=>!r)},disabled:f,"aria-label":"Jump to page","aria-expanded":s,children:e("span",{className:b.pageInfo,children:["Page ",e("strong",{children:t}),a!==void 0&&` of ${a}`]})}),s&&e("div",{ref:g,className:`${b.dropdown} ${C?b.flipDown:""}`,style:v!==0?{marginLeft:v}:void 0,children:[e("div",{className:b.jumpRow,children:[e("input",{className:b.jumpInput,type:"number",inputMode:"numeric",min:1,max:a,value:B,placeholder:"Page #",onChange:r=>_(r.currentTarget.value),onKeyDown:r=>{r.key==="Enter"&&L()}}),e("button",{className:b.jumpGo,onClick:L,children:"Go"})]}),e("div",{className:b.optionList,children:S.map(r=>e("button",{className:`${b.optionBtn} ${r===t?b.current:""}`,onClick:()=>E(r),disabled:r===t,children:r},r))})]})]}),e("button",{className:b.pageBtn,onClick:()=>i(t+1),disabled:D,"aria-label":"Next page",children:[h==="labeled"&&e("span",{children:"Next"}),e(N,{name:"chevron-right",size:14})]})]})},tt="_popupPortal_1d6yy_1",nt="_popupContent_1d6yy_6",ot="_popupBackdrop_1d6yy_31",st="_mobile_1d6yy_38",rt="_header_1d6yy_62",at="_title_1d6yy_67",ct="_altTitle_1d6yy_78",lt="_cover_1d6yy_87",it="_body_1d6yy_97",dt="_metaRow_1d6yy_104",ut="_metaItem_1d6yy_111",pt="_scoreIcon_1d6yy_117",_t="_synopsis_1d6yy_121",mt="_genres_1d6yy_143",ht="_genre_1d6yy_143",ft="_footer_1d6yy_158",gt="_primaryAction_1d6yy_167",yt="_watchBtn_1d6yy_171",vt="_secondaryActions_1d6yy_194",wt="_watchlistBtn_1d6yy_199",Bt="_detailsBtn_1d6yy_200",bt="_active_1d6yy_226",Nt="_loading_1d6yy_237",Ct="_spinner_1d6yy_247",c={popupPortal:tt,popupContent:nt,popupBackdrop:ot,mobile:st,header:rt,title:at,altTitle:ct,cover:lt,body:it,metaRow:dt,metaItem:ut,scoreIcon:pt,synopsis:_t,genres:mt,genre:ht,footer:ft,primaryAction:gt,watchBtn:yt,secondaryActions:vt,watchlistBtn:wt,detailsBtn:Bt,active:bt,loading:Nt,spinner:Ct},Pt=({anchorRect:t,onMouseEnter:p,onMouseLeave:l,onRequestClose:i,children:f})=>{const h=re(),s=x.useMemo(()=>({getBoundingClientRect:()=>t}),[t]),{refs:y,floatingStyles:B}=$e({placement:"right-start",middleware:[Le({fallbackAxisSideDirection:"start"}),De({padding:20})],whileElementsMounted:Se});x.useEffect(()=>{y.setPositionReference(s)},[y,s]),x.useEffect(()=>{if(!h)return;const v=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=v}},[h]);const _=e(H,{children:[h&&e("div",{className:c.popupBackdrop,onClick:()=>i?.()}),e("div",{ref:h?void 0:y.setFloating,className:`${c.popupPortal} ${h?c.mobile:""}`,style:h?void 0:B,onMouseEnter:p,onMouseLeave:l,children:e("div",{className:c.popupContent,children:f})})]});return Ie(_,document.body)},vn=({anchorRect:t,title:p,subtitle:l,cover:i,loading:f,error:h,meta:s=[],genres:y=[],synopsis:B,primaryAction:_,secondaryAction:v,bookmarked:w,bookmarkLabel:C="Watchlist",onToggleBookmark:R,extraActions:T,onMouseEnter:d,onMouseLeave:g,onRequestClose:a})=>{const S=z(!1),E=()=>{S.current=!0,d()},L=()=>{S.current=!1,g()},D=n=>{!n&&!S.current&&g()},r=!!_||!!v||!!T;return e(Pt,{anchorRect:t,onMouseEnter:E,onMouseLeave:L,onRequestClose:a,children:f?e("div",{className:c.loading,children:[e("div",{className:c.spinner}),e("span",{children:"Fetching details..."})]}):h?e("div",{className:c.loading,children:h}):e(H,{children:[p&&e("div",{className:c.header,children:[i&&e("img",{src:i,alt:p,loading:"lazy",decoding:"async",className:c.cover}),e("div",{className:c.title,children:p}),l&&e("div",{className:c.altTitle,children:l})]}),e("div",{className:c.body,children:[s.length>0&&e("div",{className:c.metaRow,children:s.map((n,m)=>e("div",{className:c.metaItem,children:[n.icon&&e(N,{name:n.icon,className:n.accent?c.scoreIcon:void 0,size:14}),e("span",{children:n.label})]},`${n.label}-${m}`))}),y.length>0&&e("div",{className:c.genres,children:y.map(n=>e("span",{className:c.genre,children:n},n))}),B&&e("div",{className:c.synopsis,children:B})]}),r&&e("div",{className:c.footer,children:[_&&e("div",{className:c.primaryAction,children:_.disabled?e("span",{className:c.watchBtn,"aria-disabled":"true",style:{opacity:.5,pointerEvents:"none"},children:[e(N,{name:_.icon??"play",size:14}),_.label]}):e(Y,{to:_.to,className:c.watchBtn,onClick:a,children:[e(N,{name:_.icon??"play",size:14}),_.label]})}),e("div",{className:c.secondaryActions,children:[e("button",{className:`${c.watchlistBtn} ${w?c.active:""}`,onClick:n=>{n.preventDefault(),n.stopPropagation(),R()},children:[w?e(N,{name:"check",size:12}):e(N,{name:"plus",size:12}),e("span",{children:w?"Remove":C})]}),T?.(D),v&&e(Y,{to:v.to,className:c.detailsBtn,onClick:a,children:[v.icon&&e(N,{name:v.icon,size:12}),e("span",{children:v.label})]})]})]})]})})},Mt=t=>!t||t.trim()===""?!0:t.includes("placeholder");function Tt(t,p){const[l,i]=$(p);return F(()=>{i(p)},[p]),F(()=>{if(!Mt(p)||!t)return;let f=!1;return Oe.data.showMeta.query({id:t}).then(h=>{const s=h?.thumbnail;!f&&s&&s.trim()!==""&&!s.includes("placeholder")&&i(s)}).catch(()=>{}),()=>{f=!0}},[t,p]),{thumbnail:l}}const Et="_cardWrapper_rw5hd_1",Rt="_card_rw5hd_1",It="_cardButton_rw5hd_35",kt="_hoverOverlay_rw5hd_60",zt="_matureOverlay_rw5hd_81",$t="_posterContainer_rw5hd_91",St="_posterImg_rw5hd_100",Lt="_blurred_rw5hd_112",Dt="_flat_rw5hd_135",xt="_loaded_rw5hd_139",Ot="_progressSection_rw5hd_147",At="_titleSection_rw5hd_154",jt="_title_rw5hd_154",Ft="_titleText_rw5hd_173",Ut="_badge_rw5hd_185",Wt="_typeBadge_rw5hd_196 _badge_rw5hd_185",Vt="_epBadge_rw5hd_205 _badge_rw5hd_185",Gt="_airTime_rw5hd_214",Xt="_adultBadge_rw5hd_221 _badge_rw5hd_185",Yt="_gated_rw5hd_234",Ht="_notAiredBadge_rw5hd_240 _badge_rw5hd_185",Kt="_metaRow_rw5hd_255",qt="_metaItem_rw5hd_266",Jt="_progressContainer_rw5hd_283",Qt="_progressBar_rw5hd_291",Zt="_timestamp_rw5hd_298",en="_removeBtn_rw5hd_303",tn="_infoBtn_rw5hd_304",nn="_mobileBadges_rw5hd_355",on="_mobileBadgeBase_rw5hd_362",sn="_mobileType_rw5hd_370 _mobileBadgeBase_rw5hd_362",rn="_mobileEp_rw5hd_377 _mobileBadgeBase_rw5hd_362",an="_lowEnd_rw5hd_447",o={cardWrapper:Et,card:Rt,cardButton:It,hoverOverlay:kt,matureOverlay:zt,posterContainer:$t,posterImg:St,blurred:Lt,flat:Dt,loaded:xt,progressSection:Ot,titleSection:At,title:jt,titleText:Ft,badge:Ut,typeBadge:Wt,epBadge:Vt,airTime:Gt,adultBadge:Xt,gated:Yt,notAiredBadge:Ht,metaRow:Kt,metaItem:qt,progressContainer:Jt,progressBar:Qt,timestamp:Zt,removeBtn:en,infoBtn:tn,mobileBadges:nn,mobileBadgeBase:on,mobileType:sn,mobileEp:rn,lowEnd:an},cn=500,se=20,ln=300;function dn(t){const p=z(null),l=z(null),i=z(!1),f=z({x:0,y:0}),h=z(null),s=P(()=>{l.current&&(clearTimeout(l.current),l.current=null)},[]),y=P(()=>{p.current&&(clearTimeout(p.current),p.current=null)},[]),B=P(d=>{p.current&&clearTimeout(p.current),p.current=setTimeout(d,ln)},[]),_=P((d,g=!1)=>{i.current=g,t(d,g)},[t]),v=P((d,g)=>{if(g||d.pointerType==="mouse")return;h.current=d.pointerType,i.current=!1,f.current={x:d.clientX,y:d.clientY};const a=d.currentTarget.getBoundingClientRect();s(),l.current=setTimeout(()=>{l.current=null,_(a,!0)},cn)},[s,_]),w=P(d=>{if(!l.current)return;const g=Math.abs(d.clientX-f.current.x),a=Math.abs(d.clientY-f.current.y);(g>se||a>se)&&s()},[s]),C=P(()=>{s(),h.current=null},[s]),R=P((d,g)=>{d.preventDefault(),d.stopPropagation(),h.current==="touch"?l.current&&(clearTimeout(l.current),l.current=null,_(d.currentTarget.getBoundingClientRect(),!0)):!g&&!i.current&&_(d.currentTarget.getBoundingClientRect())},[_]),T=P(()=>i.current?(i.current=!1,!0):!1,[]);return{longPressFiredRef:i,cancelLongPress:s,clearPopupTimeout:y,schedulePopupClose:B,openViaHold:_,handlePointerDown:v,handlePointerMove:w,handlePointerUpOrCancel:C,handleContextMenu:R,consumeLongPressClick:T}}const X={elements:{poster:{typeBadge:!0,chapterBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!0}}},wn=ke(({item:t,linkTo:p,hoverIcon:l,progress:i,showProgress:f=!1,metaRow:h,display:s,layout:y="vertical",onRemove:B,showRemoveButton:_,showInfoButton:v=!1,onOpenDetails:w,renderPopup:C,onPopupHoverIntent:R,rawThumbnail:T,enrichedId:d})=>{const g=ze(),a=re(),{titlePreference:S}=Ae(),{lowEndMode:E}=je(),[L,D]=$(!1),[r,n]=$(!1),{thumbnail:m}=Tt(d,t.thumbnail),[M,K]=$(!1),[q,J]=$(null),Q=u=>{J(u),K(!0)},U=P(()=>{K(!1),J(null)},[]),I=dn(u=>{if(w){w(u);return}C&&Q(u)}),W=P(()=>{I.schedulePopupClose(U)},[I,U]),Z=I.clearPopupTimeout,ae=u=>{if(a)return;const oe=u.currentTarget.getBoundingClientRect();if(w){w(oe);return}C&&Q(oe)},ce=()=>{C&&W()},le=()=>{Z()},ie=()=>{C&&W()},de=u=>{I.handlePointerDown(u,k)},ue=u=>{I.handlePointerMove(u)},ee=()=>{I.handlePointerUpOrCancel()},pe=u=>{if(w){u.preventDefault(),u.stopPropagation(),w(u.currentTarget.getBoundingClientRect());return}if(C){I.handleContextMenu(u,k);return}I.handleContextMenu(u,k)},te={...s,elements:{...X.elements,...s?.elements||{},poster:{...X.elements?.poster,...s?.elements?.poster||{}},info:{...X.elements?.info,...s?.elements?.info||{}}}},V=t[S]||t.title,O=te.elements?.poster,A=te.elements?.info,_e=(O?.typeBadge??!0)&&!!t.typeBadge,me=(O?.chapterBadge??!0)&&!!t.chapterBadge,he=_??O?.removeButton??!!B,fe=O?.adultBadge??!0,ge=A?.mobileBadges??!0,ye=A?.progress??!0,ve=A?.meta??!0,we=f&&!!i&&i.percent>0,ne=!!t.isAdult,{hasConsent:Be,grant:be}=Fe(),[Ne,G]=x.useState(!1),j=x.useRef(null),Ce=()=>{be(),G(!1),j.current&&(g(j.current),j.current=null)},k=ne&&!Be,Pe=u=>{if(I.consumeLongPressClick()){u.preventDefault(),u.stopPropagation();return}k&&(u.preventDefault(),u.stopPropagation(),j.current=p,G(!0))},Me=l==="book"?e(N,{name:"book",size:28}):l==="play"?e(N,{name:"play",size:28}):l==="info"?e(N,{name:"info-circle",size:28}):e(N,{name:"info-circle",size:28}),Te=P(u=>{u.preventDefault(),u.stopPropagation(),B&&B(t.id)},[B,t.id]),Ee=T?m??t.thumbnail:Ue(m,E?100:150,E?150:200);return e("div",{className:`${o.cardWrapper} ${E?o.lowEnd:""}`,onMouseEnter:()=>{n(!0),R?.(!0),M&&Z()},onMouseLeave:()=>{n(!1),R?.(!1),M&&W()},children:[e(Y,{to:p,className:`${o.card} ${o[y]} ${k?o.cardButton:""}`,onClick:Pe,onContextMenu:pe,onPointerDown:de,onPointerMove:ue,onPointerUp:ee,onPointerCancel:ee,children:[e("div",{className:o.posterContainer,children:[k&&e("div",{className:`${o.matureOverlay} ${E?o.flat:""}`}),e("img",{src:Ee,alt:V,className:`${o.posterImg} ${L?o.loaded:""} ${k&&!E?o.blurred:""}`,loading:"lazy",decoding:"async",onLoad:()=>D(!0)}),!a&&e(H,{children:[_e&&e("div",{className:o.typeBadge,children:t.typeBadge}),me&&e("div",{className:o.epBadge,children:[t.chapterBadge,t.airMeta&&e("span",{className:o.airTime,children:t.airMeta})]})]}),fe&&ne&&e("div",{className:`${o.adultBadge} ${k?o.gated:""}`,children:"18+"}),t.notAired&&e("div",{className:o.notAiredBadge,children:"NOT AIRED"}),!a&&r&&e("div",{className:o.hoverOverlay,children:Me})]}),ye&&f&&we&&i&&e("div",{className:o.progressSection,children:[e("div",{className:o.progressContainer,children:e("div",{className:o.progressBar,style:{width:`${i.percent}%`}})}),e("div",{className:o.timestamp,children:i.label})]}),e("div",{className:o.titleSection,children:[a&&ge&&e("div",{className:o.mobileBadges,children:[!!t.typeBadge&&e("span",{className:o.mobileType,children:t.typeBadge}),t.chapterBadge&&e("span",{className:o.mobileEp,children:t.chapterBadge})]}),A?.title!==!1&&e("div",{className:o.title,title:V,children:e("span",{className:o.titleText,children:V})}),ve&&h&&e("div",{className:o.metaRow,children:h})]})]}),Ne&&e(xe,{isOpen:!0,showResetHint:!0,onClose:()=>G(!1),onGrant:Ce}),he&&e("button",{className:o.removeBtn,onClick:Te,"aria-label":"Remove",children:e(N,{name:"times",size:10})}),v&&!a&&!k&&e("button",{className:o.infoBtn,onMouseEnter:ae,onMouseLeave:ce,"aria-label":"Info",children:e(N,{name:"info",size:11})}),C&&M&&q?C(q,{close:U,onMouseEnter:le,onMouseLeave:ie}):null]})});export{wn as M,yn as P,vn as a,o as m,c as p};
@@ -1 +0,0 @@
1
- import{u as e,S as s,d as y,h as g}from"./vendor-core-DfaOB3Rn.js";import{I as p}from"./vendor-icons-DrybRNxP.js";import{M as l,y as m,T as S,B as f,z as k,D as x,F as N}from"./AvSyncCalibrator-C5GxpyPE.js";const C=({classes:o,title:t,titleTag:i="span",showBack:a=!0,onBack:n,panelRef:b,onPanelClick:r,children:c})=>{const d=i;return e("div",{ref:b,className:o.panel,onClick:r,"data-speed-boost-ignore":"true",children:[e("div",{className:o.header,children:[a&&e("button",{className:o.backBtn,onClick:n,children:e(p,{name:"chevron-left"})}),e(d,{className:o.title||void 0,children:t})]}),e("div",{className:o.content,children:c})]})},$=({classes:o,values:t,onChange:i})=>{const a=()=>{const n=x;i("fontSize",n.fontSize),i("position",n.position),i("bgOpacity",n.bgOpacity),i("bgColor",n.bgColor),i("textColor",n.textColor),i("edge",n.edge),i("bold",n.bold)};return e(s,{children:[e(l,{label:"Font Size",display:t.fontSize.toFixed(1),min:.5,max:10,step:.5,value:t.fontSize,percent:(t.fontSize-.5)/9.5*100,onChange:n=>{Number.isFinite(n)&&i("fontSize",n)}}),e(l,{label:"Vertical Position",display:`${t.position}`,min:0,max:100,step:1,value:t.position,percent:t.position,onChange:n=>{Number.isFinite(n)&&i("position",Math.round(n))}}),e(l,{label:"Background Opacity",display:`${Math.round(t.bgOpacity*100)}%`,min:0,max:1,step:.05,value:t.bgOpacity,percent:t.bgOpacity*100,onChange:n=>{Number.isFinite(n)&&i("bgOpacity",n)}}),e(m,{label:"Text Color",colors:S,value:t.textColor,onChange:n=>i("textColor",n)}),e(m,{label:"Background Color",colors:f,value:t.bgColor,onChange:n=>i("bgColor",n)}),e(k,{label:"Text Edge",options:["shadow","outline","none"],value:t.edge,onChange:n=>i("edge",n)}),e("button",{type:"button",className:`${o.item} ${t.bold?o.active:""}`,onClick:()=>i("bold",!t.bold),children:[e("span",{children:"Bold Text"}),t.bold&&e(p,{name:"check",size:12})]}),e("button",{type:"button",className:o.item,onClick:a,children:e("span",{children:"Reset to Defaults"})})]})},z=({classes:o,enabled:t,delayMs:i,onToggle:a,onDelayChange:n,onCalibrate:b})=>{const[r,c]=y(null),d=r??i;g(()=>{c(null)},[i]);const h=()=>{r!==null&&(n(r),c(null))};return e(s,{children:[e("button",{type:"button",className:`${o.item} ${t?o.active:""}`,onClick:()=>a(!t),children:[e("span",{children:"Video delay"}),t&&e(p,{name:"check",size:12})]}),e(l,{label:"Video delay",display:`${d}ms`,min:0,max:500,step:5,value:d,percent:d/500*100,onChange:u=>c(Math.round(u)),onCommit:h}),e("div",{className:o.note,children:"For Bluetooth headsets where audio arrives late. Video is held back via canvas; audio plays untouched."}),b&&e("button",{type:"button",className:o.item,onClick:b,children:e("span",{children:"Calibrate…"})})]})},B=({classes:o,values:t,onChange:i})=>e(s,{children:[e("button",{type:"button",className:`${o.item} ${t.enabled?o.active:""}`,onClick:()=>i({enabled:!t.enabled}),"aria-pressed":t.enabled,children:[e("span",{children:"Ambient light"}),e("span",{style:{display:"flex",alignItems:"center",gap:6},children:[t.enabled?"On":"Off",t.enabled&&e(p,{name:"check",size:12})]})]}),e(l,{label:"Blur",display:`${t.blur}px`,min:0,max:120,step:2,value:t.blur,percent:t.blur/120*100,onChange:a=>i({blur:Math.round(a)})}),e(l,{label:"Saturation",display:`${t.saturation}%`,min:0,max:200,step:5,value:t.saturation,percent:t.saturation/200*100,onChange:a=>i({saturation:Math.round(a)})}),e(l,{label:"Brightness",display:`${t.brightness}%`,min:20,max:120,step:5,value:t.brightness,percent:(t.brightness-20)/100*100,onChange:a=>i({brightness:Math.round(a)})}),e(l,{label:"Opacity",display:`${t.opacity}%`,min:10,max:100,step:5,value:t.opacity,percent:(t.opacity-10)/90*100,onChange:a=>i({opacity:Math.round(a)})}),e("div",{className:o.note,children:"Mirrors the video onto the backdrop behind the player. Turn off for pure black."}),e("button",{type:"button",className:o.item,onClick:()=>i({...N}),children:e("span",{children:"Reset to defaults"})})]}),E=({classes:o,options:t,onSelect:i})=>e(s,{children:t.map(a=>e("button",{type:"button",className:`${o.item} ${a.selected?o.active:""}`,onClick:()=>i(a.key),children:[e("span",{children:a.label}),a.selected&&e(p,{name:"check",size:12})]},a.key))});export{z as A,E as O,C as S,$ as a,B as b};
@@ -1,56 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PlayerSettings-CAYfF0sA.js","assets/vendor-core-DfaOB3Rn.js","assets/vendor-icons-DrybRNxP.js","assets/OptionListMenu-CIvW5WmO.js","assets/AvSyncCalibrator-C5GxpyPE.js","assets/index-BLh_CXtu.js","assets/vendor-query-BBT5_sHx.js","assets/index-B7katXv0.css","assets/AvSyncCalibrator-BtUHM1mW.css","assets/PlayerSettings-BXGe3F5k.css"])))=>i.map(i=>d[i]);
2
- import{u as t,g as ut,h as W,P as Jt,z as Zt,d as le,A,q as U,y as er,T as Me,o as tr,a as rr,c as nr,_ as or,S as ct}from"./vendor-core-DfaOB3Rn.js";import{u as xt,b as Mt,a as St}from"./vendor-query-BBT5_sHx.js";import{S as sr,U as ar,p as wt,s as ir,C as lr,a as cr,b as ur,c as Oe,d as Nt,f as _t,e as dr,g as mr,h as fr,r as pr,u as hr,i as vr,j as gr,k as yr,l as br,m as Sr,n as Se,A as Er,R as wr,E as kr,o as Tr,q as R,t as Cr,v as Rr,P as Mr,w as Nr}from"./AvSyncCalibrator-C5GxpyPE.js";import{I as Z}from"./vendor-icons-DrybRNxP.js";import{_ as Lt,S as Xe,i as Pr,q as ie,t as he,A as ke,O as Ar,P as Qe,M as we,e as xr,m as _r,n as Lr,o as Br,p as Dr,d as $r,u as Ir,B as Je,Q as Fr,f as Or}from"./index-BLh_CXtu.js";import{l as Wr,i as Pt,a as Bt,s as Ur}from"./playbackCompletion-DuUs8u-8.js";import{M as Vr}from"./MatureConsentModal-BsdpNeXA.js";import{u as Qr}from"./useIsMobile-Dvx1uJ82.js";import{s as Ee,Q as Gr}from"./QueueRail-BWcDVSHd.js";import{u as Kr,Q as zr}from"./QueueOptionsButton-DNzKPzPw.js";import{u as Dt}from"./useProviders-z8L8GKy0.js";import{l as qr}from"./hls-DOAVt6Ry.js";import{A as Hr}from"./AnimeMetaDetails-D8WIiO4b.js";import{S as jr}from"./SynopsisText-B3Sa5pRv.js";import"./vendor-ui-3qrARCPr.js";const Yr="_controlsOverlay_cejny_1",Xr="_hidden_cejny_21",Jr="_topControls_cejny_27",Zr="_backBtn_cejny_47",en="_videoTitleInfo_cejny_67",tn="_animeTitle_cejny_73",rn="_episodeNumber_cejny_83",nn="_bottomControls_cejny_91",on="_progressBarContainer_cejny_110",sn="_progressBar_cejny_110",an="_thumb_cejny_129",ln="_scrubbing_cejny_144",cn="_watchedBar_cejny_148",un="_bufferedBar_cejny_149",dn="_timeBubble_cejny_187",mn="_skipSegment_cejny_221",fn="_bottomControlsRow_cejny_231",pn="_leftControls_cejny_239",hn="_rightControls_cejny_240",vn="_controlBtn_cejny_247",gn="_theaterBtn_cejny_288",yn="_nextEpisodeBtn_cejny_292",bn="_active_cejny_313",Sn="_timeDisplay_cejny_317",En="_skipControls_cejny_325",$={controlsOverlay:Yr,hidden:Xr,topControls:Jr,backBtn:Zr,videoTitleInfo:en,animeTitle:tn,episodeNumber:rn,bottomControls:nn,progressBarContainer:on,progressBar:sn,thumb:an,scrubbing:ln,watchedBar:cn,bufferedBar:un,timeBubble:dn,skipSegment:mn,bottomControlsRow:fn,leftControls:pn,rightControls:hn,controlBtn:vn,theaterBtn:gn,nextEpisodeBtn:yn,active:bn,timeDisplay:Sn,skipControls:En},wn=({player:r,handlers:n,visible:a,skipIntervals:b,showNextEpisodeButton:i,onNextEpisode:l,isTheaterMode:s,onTheaterModeToggle:m,settingsBtnRef:c,timeDisplayRef:g})=>{const{state:f,refs:e,actions:o}=r,{showSettings:N}=f,u=()=>f.isMuted||f.volume===0?t(Z,{name:"volume-mute"}):f.volume<.5?t(Z,{name:"volume-down"}):t(Z,{name:"volume-up"});return t("div",{className:`${$.controlsOverlay} ${a?"":$.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none",justifyContent:"flex-end"},children:t("div",{className:$.bottomControls,"data-speed-boost-ignore":"true",onClick:E=>E.stopPropagation(),children:[t(sr,{classes:{container:$.progressBarContainer,scrubbing:$.scrubbing,timeBubble:$.timeBubble,bar:$.progressBar,buffered:$.bufferedBar,watched:$.watchedBar,thumb:$.thumb},videoRef:e.videoRef,duration:f.duration,formatTime:o.formatTime,isScrubbing:f.isScrubbing,onSeek:n.handleSeek,onScrubStart:n.handleScrubStart,onScrubMove:n.handleScrubMove,onScrubEnd:n.handleScrubEnd,timeLabelRef:g,children:[f.duration>0&&r.state.currentSkipInterval&&t("div",{className:`${$.skipSegment} ${$[r.state.currentSkipInterval.skip_type]} `,style:{left:`${r.state.currentSkipInterval.start_time/f.duration*100}% `,width:`${(r.state.currentSkipInterval.end_time-r.state.currentSkipInterval.start_time)/f.duration*100}% `}}),b.map(E=>{const P=E.start_time/f.duration*100,y=(E.end_time-E.start_time)/f.duration*100;return t("div",{className:`${$.skipSegment} ${$[E.skip_type]} `,style:{left:`${P}% `,width:`${y}% `},title:E.skip_type.toUpperCase()},E.skip_id)})]}),t("div",{className:$.bottomControlsRow,children:[t("div",{className:$.leftControls,children:[t("button",{className:$.controlBtn,onClick:o.togglePlay,"aria-label":f.isPlaying?"Pause":"Play",children:f.isPlaying?t(Z,{name:"pause"}):t(Z,{name:"play"})}),t(ar,{muted:f.isMuted,volume:f.volume,volumeIcon:u(),buttonClassName:$.controlBtn,onToggleMute:o.toggleMute,onVolumeChange:n.handleVolumeChange,onExpandedChange:E=>o.setShowVolumeSlider(E)}),t("span",{className:$.timeDisplay,ref:g,children:[o.formatTime(0)," / ",o.formatTime(f.duration)]}),f.currentSkipInterval&&!f.isAutoSkipEnabled&&t("button",{className:$.controlBtn,onClick:()=>{e.videoRef.current&&f.currentSkipInterval&&(e.videoRef.current.currentTime=f.currentSkipInterval.end_time,o.setCurrentSkipInterval(null))},children:["Skip ",f.currentSkipInterval.skip_type==="op"?"Opening":"Ending"]})]}),t("div",{className:$.rightControls,children:[t("div",{className:$.skipControls,children:i&&t("button",{className:$.nextEpisodeBtn,onClick:l,title:"Play next episode",children:"Next EP"})}),t("button",{className:`${$.controlBtn} ${n.isSubtitleActive?$.active:""}`,onClick:n.handleCCToggle,title:n.isSubtitleActive?"Disable Subtitles":"Enable Subtitles","aria-label":"Toggle Subtitles",children:t(Z,{name:"closed-captioning",size:22})}),t("button",{ref:c,className:`${$.controlBtn} ${N?$.active:""} `,onClick:()=>o.setShowSettings(!N),"aria-label":"Settings",children:t(Z,{name:"cog"})}),t("button",{className:`${$.controlBtn} ${$.theaterBtn} ${s?$.active:""} `,onClick:E=>{E.stopPropagation(),m()},title:s?"Exit Theater Mode":"Theater Mode","aria-label":s?"Exit Theater Mode":"Theater Mode",children:t(Z,{name:"tv"})}),t("button",{className:$.controlBtn,onClick:o.toggleFullscreen,"aria-label":f.isFullscreen?"Exit Fullscreen":"Fullscreen",children:f.isFullscreen?t(Z,{name:"compress"}):t(Z,{name:"expand"})})]})]})]})})};function kn(r){const{state:n,refs:a,actions:b}=r,i=o=>{a.videoRef.current&&(a.videoRef.current.volume=o,a.videoRef.current.muted=o===0)},l=o=>{!a.videoRef.current||isNaN(n.duration)||n.duration===0||(a.videoRef.current.currentTime=o*n.duration,b.sendProgressUpdate(!1,!0))},s=()=>{a.videoRef.current&&(b.setIsScrubbing(!0),b.wasPlayingBeforeScrub.current=!a.videoRef.current.paused,a.videoRef.current.pause())},m=o=>{!a.videoRef.current||!n.duration||(a.videoRef.current.currentTime=o*n.duration)},c=()=>{b.setIsScrubbing(!1),b.wasPlayingBeforeScrub.current&&a.videoRef.current?.play()},g=o=>{if(!a.videoRef.current)return;b.setActiveSubtitleTrack(o);try{if(o===null||o==="off")localStorage.setItem("playerSubtitlesEnabled","false");else{localStorage.setItem("playerSubtitlesEnabled","true");const u=n.availableSubtitles.find(E=>E.label===o||E.lang===o);u?localStorage.setItem("playerLastSubtitle",ir(u)):localStorage.setItem("playerLastSubtitle",o)}}catch{}let N=!1;Array.from(a.videoRef.current.textTracks).forEach(u=>{const P=o!==null&&o!=="off"&&(u.language===o||u.label===o)&&!N;u.mode=P?"showing":"hidden",P&&(N=!0)})},f=n.activeSubtitleTrack!==null&&n.activeSubtitleTrack!=="off";return{handleVolumeChange:i,handleSeek:l,handleScrubStart:s,handleScrubMove:m,handleScrubEnd:c,handleSubtitleSelection:g,isSubtitleActive:f,handleCCToggle:()=>{if(!a.videoRef.current)return;if(f){g("off");return}if(n.availableSubtitles.length===0)return;let o=null;try{o=localStorage.getItem("playerLastSubtitle")}catch{}const N=wt(n.availableSubtitles,{lastKey:o,enabled:!0});if(N<0)return;const u=n.availableSubtitles[N];g(u.label||u.lang)}}}const Tn=Zt(()=>Lt(()=>import("./PlayerSettings-CAYfF0sA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))),Cn=({player:r,isAutoplayEnabled:n,onAutoplayChange:a,showNextEpisodeButton:b,onNextEpisode:i,videoSources:l,selectedSource:s,selectedLink:m,onSourceChange:c,loadingVideo:g,skipIntervals:f,animeTitle:e,episodeNumber:o,isTheaterMode:N,onTheaterModeToggle:u,anime4kEnabled:E,onAnime4kToggle:P,anime4kSupported:y,anime4kProfile:w,onAnime4kProfileChange:k,anime4kInitializing:T,anime4kError:_,videoDelayEnabled:d,onVideoDelayToggle:h,videoDelayMs:x,onVideoDelayChange:J,onCalibrateAvSync:I,fallbackChoice:z,onFallbackChoiceChange:F,ambientSettings:V,onAmbientChange:G,children:K,overlays:q,isInteractingExtra:v=!1,className:S,hideChrome:M=!1})=>{const{state:C,actions:H}=r,{showSettings:D}=C,{setShowSettings:B}=H,L=kn(r),Q=ut.useRef(null),pe=ut.useRef(null),Le=ut.useRef(null);W(()=>{const X=ge=>{Q.current&&!Q.current.contains(ge.target)&&pe.current&&!pe.current.contains(ge.target)&&D&&B(!1)};return D&&document.addEventListener("mousedown",X),()=>{document.removeEventListener("mousedown",X)}},[D,B]);const Ne=C.showControls||D||C.isScrubbing,re=t(ur,{visible:Ne,title:e,episode:o?`Episode ${o}`:void 0,onBack:()=>window.history.back(),classes:{overlay:$.controlsOverlay,hidden:$.hidden,top:$.topControls,backBtn:$.backBtn,titleInfo:$.videoTitleInfo,title:$.animeTitle,episode:$.episodeNumber}}),Y=!g&&!C.isBuffering&&C.duration>0?t(lr,{isPlaying:C.isPlaying,onTogglePlay:H.togglePlay,onSkipBack:()=>H.seek(-10),onSkipForward:()=>H.seek(10)}):null,Te=t(wn,{player:r,handlers:L,visible:Ne,skipIntervals:f,showNextEpisodeButton:b,onNextEpisode:i,isTheaterMode:N,onTheaterModeToggle:u,settingsBtnRef:pe,timeDisplayRef:Le}),Be=t(Jt,{fallback:null,children:t(Tn,{ref:Q,isOpen:D,onClose:()=>B(!1),videoSources:l,currentSource:s,currentLink:m,onSourceChange:c,subtitles:C.availableSubtitles,activeSubtitleTrack:C.activeSubtitleTrack,onSubtitleChange:L.handleSubtitleSelection,subtitleSettings:{fontSize:C.subtitleFontSize,position:C.subtitlePosition,bgOpacity:C.subtitleBgOpacity,bgColor:C.subtitleBgColor,textColor:C.subtitleTextColor,edge:C.subtitleEdge,bold:C.subtitleBold},onSubtitleSettingsChange:H.setSubtitleStyle,useNativeControls:C.useNativeControls,onNativeControlsToggle:H.setUseNativeControls,anime4kEnabled:E,onAnime4kToggle:P,anime4kSupported:y,anime4kProfile:w,onAnime4kProfileChange:k,anime4kInitializing:T,anime4kError:_,videoDelayEnabled:d,onVideoDelayToggle:h,videoDelayMs:x,onVideoDelayChange:J,onCalibrateAvSync:I,isAutoSkipEnabled:C.isAutoSkipEnabled,onAutoSkipChange:X=>{H.setIsAutoSkipEnabled(X);try{localStorage.setItem("autoSkipEnabled",X.toString())}catch{}},isAutoplayEnabled:n,onAutoplayChange:a,fallbackChoice:z,onFallbackChoiceChange:F,isTheaterMode:N,ambientSettings:V,onAmbientChange:G})}),ne=D?t("div",{"data-speed-boost-ignore":"true",onClick:X=>X.stopPropagation(),children:Be}):null;return t(cr,{player:r,topBar:re,centerControls:Y,bottomBar:!g&&C.duration>0?Te:null,settingsPanel:ne,overlays:q,isInteracting:v,className:S,chromeDisabled:M,children:K})},Rn=({count:r=3})=>t("section",{className:Ee.section,children:[t("div",{className:Ee.header,children:t("button",{className:Ee.headerToggle,disabled:!0,children:[t("span",{className:Ee.title,children:t(Xe,{width:"60px",height:"1.2rem",variant:"text"})}),t(Z,{name:"chevron-down",style:{opacity:.3}})]})}),t("div",{className:Ee.list,children:Array.from({length:r}).map((n,a)=>t("div",{className:Ee.item,style:{pointerEvents:"none"},children:[t("div",{className:Ee.dragHandle,style:{opacity:.2},children:t(Xe,{width:"16px",height:"16px",variant:"rectangular"})}),t("div",{className:Ee.thumbnail,style:{overflow:"hidden",background:"transparent"},children:t(Xe,{width:"100%",height:"100%",variant:"rectangular"})}),t("div",{className:Ee.meta,children:[t(Xe,{width:"80%",height:"1.2rem",variant:"text",className:Ee.metaGap}),t(Xe,{width:"40%",height:"0.8rem",variant:"rectangular",style:{borderRadius:"var(--radius-sm)"}})]})]},a))})]}),Mn={soft:"Softsub",hard:"Hardsub",mixed:"Mixed"},Nn={direct:"Direct",embed:"Embed",cookie:"Needs cookie"},Pn=["direct","cookie","embed"],An=({selectedProvider:r,onProviderChange:n,isAdult:a,options:b})=>{const l=(b&&b.length>0?b:[]).filter(s=>s.mature===(a===!0));return t("div",{className:Oe.providerSelectContainer,children:[t("h4",{children:"Provider"}),t("select",{className:Oe.providerSelect,value:r,onChange:s=>n(s.currentTarget.value),children:Pn.map(s=>{const m=l.filter(c=>(c.tier??"direct")===s);return m.length===0?null:t("optgroup",{label:Nn[s],children:m.map(c=>t("option",{value:c.id,children:c.sub?`${c.label} (${Mn[c.sub]})`:c.label},c.id))},s)})})]})},xn=({videoSources:r,selectedSource:n,selectedLink:a,onSourceChange:b,onLinkChange:i})=>{const l=Array.isArray(r)?r:[];if(l.length===0)return null;const s=n?.type==="iframe"&&(n.links?.length??0)>1;return t("div",{className:Oe.sourceSelectionContainer,children:[t("h4",{children:"Source"}),t("div",{className:Oe.sourceButtons,children:l.map((m,c)=>t("button",{className:`${Oe.sourceButton} ${n?.sourceName===m.sourceName?Oe.active:""} `,onClick:()=>b(m),children:m.sourceName},`${m.sourceName}-${c}`))}),s&&t("select",{className:Oe.sourceSelect,"aria-label":"Fallback embed quality",value:a?.link??n.links[0]?.link??"",onChange:m=>{const c=n.links.find(g=>g.link===m.currentTarget.value);c&&i(c)},children:n.links.map(m=>t("option",{value:m.link,children:m.resolutionStr},m.link))})]})},_n=ut.memo(xn,(r,n)=>r.selectedSource?.sourceName===n.selectedSource?.sourceName&&r.selectedLink?.link===n.selectedLink?.link&&r.videoSources===n.videoSources),Ln={low:{sd:1.5,hd:1.3,fhd:1.25},balanced:{sd:2,hd:1.5,fhd:1.25},high:{sd:2.5,hd:2,fhd:1.5},denoise:{sd:1.5,hd:1.5,fhd:1.5}},Bn={low:"ModeB",balanced:"ModeA",high:"ModeAA",denoise:"ModeC"},Dn=5,$n=15e3,In=`
3
- @group(0) @binding(0) var extTex: texture_external;
4
- @group(0) @binding(1) var extSamp: sampler;
5
- struct VSOut {
6
- @builtin(position) pos: vec4f,
7
- @location(0) uv: vec2f,
8
- };
9
- @vertex
10
- fn vs(@builtin(vertex_index) idx: u32) -> VSOut {
11
- var positions = array<vec2f, 6>(
12
- vec2f(-1.0, -1.0), vec2f(1.0, -1.0), vec2f(-1.0, 1.0),
13
- vec2f(-1.0, 1.0), vec2f(1.0, -1.0), vec2f(1.0, 1.0)
14
- );
15
- var uvs = array<vec2f, 6>(
16
- vec2f(0.0, 1.0), vec2f(1.0, 1.0), vec2f(0.0, 0.0),
17
- vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(1.0, 0.0)
18
- );
19
- var out: VSOut;
20
- out.pos = vec4f(positions[idx], 0.0, 1.0);
21
- out.uv = uvs[idx];
22
- return out;
23
- }
24
- @fragment
25
- fn fs(@location(0) uv: vec2f) -> @location(0) vec4f {
26
- return textureSampleBaseClampToEdge(extTex, extSamp, uv);
27
- }
28
- `;function Fn({videoRef:r,canvasRef:n,profile:a="balanced",delayMs:b=0}){const[i,l]=le(!1),[s,m]=le(()=>{try{return localStorage.getItem("anime4kEnabled")==="true"}catch{return!1}}),[c,g]=le(!1),[f,e]=le(null),[o,N]=le(0),u=A(0),E=A(null),P=A(null),y=A(null),w=A(null),k=A(null),T=A(null),_=A(null),d=A(null),h=A(null),x=A(!1),J=A(-1),I=A(0),z=A(b);z.current=b;const F=A([]),V=A(!1),G=A(!1),K=A(!1),q=A(null),v=A(-1),S=A(-1),M=A(!1),C=A(0);W(()=>{async function B(){if(typeof navigator>"u"||!navigator.gpu){l(!1);return}try{const L=await navigator.gpu.requestAdapter();l(!!L)}catch{l(!1)}}B()},[]),W(()=>{if(!s||!i)return;let B=!1;const L=++u.current,Q=Y=>{if(Y)try{Y.close()}catch{}},pe=()=>{for(const Y of F.current)Q(Y.bitmap);F.current=[]},Le=Y=>Math.max(8,Math.min(40,Math.ceil(Y/16.7)+4));function Ne(){h.current!==null&&(cancelAnimationFrame(h.current),h.current=null)}async function re(){let Y=r.current;const Te=n.current;if(!Y||!Te||u.current!==L)return;const Be=performance.now()+$n;for(;(!Y||Y.videoWidth===0)&&performance.now()<Be;){if(await new Promise(ue=>requestAnimationFrame(ue)),B||u.current!==L)return;Y=r.current}if(!Y||Y.videoWidth===0){!B&&u.current===L&&(e("Timed out waiting for video metadata"),g(!1),m(!1));return}const ne=Y.videoWidth,X=Y.videoHeight,ge=Math.max(ne,X),dt=window.innerWidth,Pe=window.innerHeight,et=Math.max(dt,Pe),tt=ge<et?et/ge:1,Ge=Ln[a],mt=ge<=480?Ge.sd:ge<=720?Ge.hd:ge<=1080?Ge.fhd:1,ce=Math.min(mt,tt);Te.width=Math.round(ne*ce),Te.height=Math.round(X*ce),g(!0),e(null),I.current=0,J.current=-1,v.current=-1,S.current=-1,M.current=!1,C.current=0,pe(),x.current=!1;try{let ue=function(){B||u.current!==L||(Ne(),h.current=requestAnimationFrame(()=>{He()}))};const{ModeA:ft,ModeB:Ce,ModeC:rt,ModeAA:Ae}=await Lt(async()=>{const{ModeA:j,ModeB:ee,ModeC:se,ModeAA:de}=await import("./index-BOKlZEHq.js").then(me=>me.i);return{ModeA:j,ModeB:ee,ModeC:se,ModeAA:de}},[]);if(!navigator.gpu)throw new Error("WebGPU not available");const nt=await navigator.gpu.requestAdapter();if(!nt)throw new Error("No GPU adapter found");const O=await nt.requestDevice();if(!O)throw new Error("Failed to get GPU device");const De=Te.getContext("webgpu");if(!De)throw new Error("Failed to get WebGPU context");const Ke=navigator.gpu.getPreferredCanvasFormat();De.configure({device:O,format:Ke,alphaMode:"premultiplied"});const oe=O.createTexture({size:[ne,X],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),ot=Bn[a],xe=Math.round(ne*ce),We=Math.round(X*ce),$e=(()=>{switch(ot){case"ModeB":return new Ce({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}});case"ModeC":return new rt({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}});case"ModeAA":return new Ae({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}});default:return new ft({device:O,inputTexture:oe,nativeDimensions:{width:ne,height:X},targetDimensions:{width:xe,height:We}})}})(),st=$e.getOutputTexture(),ze=O.createSampler({magFilter:"linear",minFilter:"linear"}),qe=O.createShaderModule({code:`
29
- @group(0) @binding(0) var tex: texture_2d<f32>;
30
- @group(0) @binding(1) var samp: sampler;
31
- struct VertexOutput {
32
- @builtin(position) pos: vec4f,
33
- @location(0) uv: vec2f,
34
- }
35
- @vertex
36
- fn vs(@builtin(vertex_index) idx: u32) -> VertexOutput {
37
- var positions = array<vec2f, 6>(
38
- vec2f(-1.0, -1.0), vec2f(1.0, -1.0), vec2f(-1.0, 1.0),
39
- vec2f(-1.0, 1.0), vec2f(1.0, -1.0), vec2f(1.0, 1.0)
40
- );
41
- var uvs = array<vec2f, 6>(
42
- vec2f(0.0, 1.0), vec2f(1.0, 1.0), vec2f(0.0, 0.0),
43
- vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(1.0, 0.0)
44
- );
45
- var out: VertexOutput;
46
- out.pos = vec4f(positions[idx], 0.0, 1.0);
47
- out.uv = uvs[idx];
48
- return out;
49
- }
50
- @fragment
51
- fn fs(@location(0) uv: vec2f) -> @location(0) vec4f {
52
- return textureSample(tex, samp, uv);
53
- }
54
- `}),_e=O.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),at=O.createRenderPipeline({layout:O.createPipelineLayout({bindGroupLayouts:[_e]}),vertex:{module:qe,entryPoint:"vs"},fragment:{module:qe,entryPoint:"fs",targets:[{format:Ke}]},primitive:{topology:"triangle-list"}}),pt=O.createBindGroup({layout:_e,entries:[{binding:0,resource:st.createView()},{binding:1,resource:ze}]});try{const j=O.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,externalTexture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),ee=O.createShaderModule({code:In}),se=O.createRenderPipeline({layout:O.createPipelineLayout({bindGroupLayouts:[j]}),vertex:{module:ee,entryPoint:"vs"},fragment:{module:ee,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-list"}});q.current={pipeline:se,layout:j,inputView:oe.createView()}}catch{q.current=null}if(u.current!==L){oe.destroy(),O.destroy();return}E.current=O,P.current=De,y.current=$e,w.current=oe,k.current=st,T.current=at,_.current=ze,d.current=_e,G.current=!1,K.current=!1;async function ht(){const j=q.current;if(!j||G.current)return!1;const ee=r.current;if(!ee)return!1;const se=!K.current;se&&O.pushErrorScope("validation");try{const de=O.importExternalTexture({source:ee}),me=O.createBindGroup({layout:j.layout,entries:[{binding:0,resource:de},{binding:1,resource:ze}]}),ve=O.createCommandEncoder(),ye=ve.beginRenderPass({colorAttachments:[{view:j.inputView,loadOp:"load",storeOp:"store"}]});ye.setPipeline(j.pipeline),ye.setBindGroup(0,me),ye.draw(6),ye.end(),O.queue.submit([ve.finish()])}catch{return G.current=!0,q.current=null,!1}if(se){const de=await O.popErrorScope().catch(()=>null);if(de)return console.warn("[anime4k] blit probe failed:",de.message),G.current=!0,q.current=null,!1;K.current=!0}return!0}g(!1);async function He(){if(B||u.current!==L||!De)return;const j=r.current;if(!j||j.videoWidth===0){ue();return}if(j!==Y||j.videoWidth!==ne||j.videoHeight!==X){N(me=>me+1);return}if(j.paused||j.ended||document.hidden||j.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){ue();return}const ee=j.getVideoPlaybackQuality().totalVideoFrames;if(ee===S.current){ue();return}if(x.current){ue();return}const se=j.currentTime;(j.seeking||v.current>=0&&Math.abs(se-v.current)>.5)&&(pe(),M.current=!1,C.current=0,S.current=-1),v.current=se;const de=Math.max(0,z.current||0);de>C.current&&(M.current=!1),x.current=!0;try{const me=performance.now();let ve=null,ye=!1;if(de<=0){F.current.length>0&&pe(),M.current=!1,C.current=0;let be=!1;if(!V.current)try{O.queue.copyExternalImageToTexture({source:j},{texture:oe},[ne,X]),S.current=ee,be=!0}catch(ae){if(ae instanceof TypeError)V.current=!0;else throw ae}if(!be&&!G.current&&q.current&&await ht()&&(S.current=ee,be=!0),!be){const ae=await createImageBitmap(j);S.current=ee,O.queue.copyExternalImageToTexture({source:ae},{texture:oe},[ne,X]),Q(ae)}}else{const be=await createImageBitmap(j);S.current=ee;const ae=F.current;ae.push({bitmap:be,capture:me});const vt=Le(de);for(;ae.length>vt;)Q(ae.shift()?.bitmap);let Ve=-1;for(let fe=ae.length-1;fe>=0;fe--)if(me-ae[fe].capture>=de){Ve=fe;break}if(Ve!==-1){for(let Ye=0;Ye<Ve;Ye++)Q(ae.shift()?.bitmap);const fe=ae.shift();fe?(ve=fe.bitmap,M.current=!0,C.current=de):(ve=be,ye=!0)}else if(!M.current)ve=be,ye=!0;else{const fe=ae.shift();ve=fe?fe.bitmap:be,fe||(ye=!0)}if(!ve){x.current=!1,ue();return}O.queue.copyExternalImageToTexture({source:ve},{texture:oe},[ne,X]),ye||Q(ve)}const je=O.createCommandEncoder();await $e.pass(je);const Ue=je.beginRenderPass({colorAttachments:[{view:De.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]});Ue.setPipeline(at),Ue.setBindGroup(0,pt),Ue.draw(6),Ue.end(),O.queue.submit([je.finish()]),J.current=ee,I.current=0,O.queue.onSubmittedWorkDone().then(()=>{u.current===L&&(x.current=!1)})}catch(me){if(x.current=!1,I.current+=1,I.current>=Dn&&!B&&u.current===L){console.error(me),e(me instanceof Error?me.message:"Render error"),m(!1);return}}ue()}ue()}catch(ue){!B&&u.current===L&&(e(ue instanceof Error?ue.message:"Failed to initialize upscaler"),g(!1),m(!1))}}return re(),()=>{B=!0,u.current+=1,Ne(),pe(),w.current&&(w.current.destroy(),w.current=null),k.current&&(k.current.destroy(),k.current=null),E.current&&(E.current.destroy(),E.current=null),y.current=null,T.current=null,_.current=null,d.current=null,q.current=null,P.current=null,x.current=!1}},[s,i,r,n,a,o]);const H=U(B=>{m(B);try{localStorage.setItem("anime4kEnabled",String(B))}catch{}},[]),D=U(()=>{m(B=>{const L=!B;try{localStorage.setItem("anime4kEnabled",String(L))}catch{}return L})},[]);return{isWebGPUSupported:i,isEnabled:s,isInitializing:c,error:f,toggle:D,setEnabled:H}}function On({videoRef:r,episodeKey:n,isEnabled:a,isSupported:b,mediaReady:i,isIframeSource:l,setEnabled:s}){const m=A(null),c=A(!1),g=A(!1),f=A(s);f.current=s,W(()=>{const e=m.current;m.current=n,!(e===null||e===n)&&(!a||!b||(c.current=!0,g.current=!1,f.current(!1)))},[n,a,b]),W(()=>{if(!c.current)return;if(a){g.current&&(c.current=!1);return}if(g.current=!0,!i)return;if(l){c.current=!1,f.current(!0);return}const e=r.current;if(!e)return;let o,N=!1;const u=()=>{N||(N=!0,c.current=!1,f.current(!0))};if(e.readyState>=2)return o=window.setTimeout(u,500),()=>window.clearTimeout(o);const E=()=>{window.setTimeout(u,500)};return e.addEventListener("canplay",E,{once:!0}),e.addEventListener("playing",E,{once:!0}),o=window.setTimeout(u,5e3),()=>{window.clearTimeout(o),e.removeEventListener("canplay",E),e.removeEventListener("playing",E)}},[a,i,l,r])}const Wn=()=>localStorage.getItem("preferredMode")==="dub"?"dub":"sub",Un=/^[a-z0-9-]+$/i,$t=r=>r?"preferredProviderMature":"preferredProvider",It=r=>{const n=localStorage.getItem($t(r));return n&&Un.test(n)?n:null},Ft=(r,n)=>{localStorage.setItem($t(n),r)},Vn=()=>It(!1)??"megaplay",Qn=()=>({showMeta:{},episodes:[],watchedEpisodes:[],watchlistStatus:null,showCombinedDetails:!1,currentMode:Wn(),inWatchlist:!1,videoSources:[],selectedSource:null,selectedLink:null,isAutoplayEnabled:Wr(),showResumeModal:!0,resumeTime:0,resumeDuration:0,skipIntervals:[],selectedProvider:Vn(),loadingShowData:!0,loadingVideo:!1,error:null,showCookieModal:!1,cookieProvider:null});function Gn(r,n){switch(n.type){case"SET_STATE":return{...r,...n.payload};case"SET_MODE":return{...r,currentMode:n.payload,videoSources:[],selectedSource:null,selectedLink:null};case"SET_PROVIDER":return{...r,selectedProvider:n.payload};default:return r}}async function At(r,n,a,b,i=!1){if(!r||!n)throw new Error("Missing params");try{const[l,s,m,c]=await Promise.all([he.data.video.query({showId:r,episodeNumber:n,mode:a.currentMode,provider:a.selectedProvider}).catch(w=>{const k=w.data?.cause;return w.message==="AUTH_REQUIRED"&&k?.provider==="mkissa"&&b({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:"mkissa"}}),null}),he.progress.getEpisode.query({showId:r,episodeNumber:n}).catch(()=>null),he.settings.getByKey.query({key:"preferredSource"}).catch(()=>null),he.data.skipTimes.query({showId:r,episodeNumber:n}).catch(()=>[])]),g=m?.value,f=l?.filter(w=>{const k=w.sourceName.toLowerCase();return a.currentMode==="dub"?k.includes("eng")||k.includes("dub"):k.includes("jpn")||k.includes("sub")||!k.includes("eng")&&!k.includes("dub")})??[],e=f.length>0?f:l??[];let o=e.length>0?e[0]:null;if(g){const w=e.find(k=>k.sourceName===g);w&&(o=w)}const N=o&&o.links.length>0?o.links.sort((w,k)=>(parseInt(k.resolutionStr)||0)-(parseInt(w.resolutionStr)||0))[0]:null,u=s?.currentTime||0,E=s?.duration||0,y=(Array.isArray(c)?c:c?.results||[]).map(w=>({skip_id:w.skip_id||"",skip_type:w.skip_type||"",start_time:w.interval?.start_time??w.start_time??0,end_time:w.interval?.end_time??w.end_time??0})).filter(w=>w.end_time>0);return(!l||l.length===0)&&(i||ke.error(`No video sources found for ${a.selectedProvider}`)),{videoSources:l,selectedSource:o,selectedLink:N,resumeTime:u,resumeDuration:E,showResumeModal:u>5&&o?.type!=="iframe",skipIntervals:y,fetchedEpisodeNumber:n}}catch(l){const s=l;if(s.message==="AUTH_REQUIRED")return b({type:"SET_STATE",payload:{showCookieModal:!0,cookieProvider:s.provider}}),{videoSources:[],selectedSource:null,selectedLink:null,resumeTime:0,resumeDuration:0,showResumeModal:!1,skipIntervals:[],fetchedEpisodeNumber:n};throw l}}const Kn=(r,n,a,b)=>{const[i,l]=er(Gn,a,v=>({...Qn(),showMeta:v?.name?{name:v.name,thumbnail:v.thumbnail,nativeName:v.nativeName,englishName:v.englishName,names:{romaji:v.name||v.englishName,english:v.englishName||v.name,native:v.nativeName}}:{}})),s=xt(),m=Pr(),c=A(null),g=A(null),{options:f}=Dt(),e=Me(()=>f.filter(v=>(v.kind??"anime")==="anime"),[f]),o=n||i.initialEpisode,N=A(o);W(()=>{N.current!==o&&(N.current=o,l({type:"SET_STATE",payload:{selectedSource:null,selectedLink:null}}))},[o,l]),W(()=>{r&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)&&i.selectedProvider!=="animepahe"&&c.current!==r&&(c.current=r,l({type:"SET_PROVIDER",payload:"animepahe"}))},[r,i.selectedProvider]);const{data:u,isLoading:E,error:P}=Kr(r),{data:y}=Mt({queryKey:[ie.playerData,r,i.currentMode,i.selectedProvider],queryFn:async()=>{if(!r)throw new Error("No showId");const v=async()=>{try{const D=await he.data.episodes.query({showId:r,mode:i.currentMode,provider:i.selectedProvider}).catch(()=>null);if(D?.episodes?.length)return D}catch{}return null},[S,M,C]=await Promise.all([v(),he.watchlist.check.query({showId:r}).catch(()=>({inWatchlist:!1,status:null})),he.progress.getWatchedEpisodes.query({showId:r}).catch(()=>[])]),H=S?.episodes?S.episodes.sort((D,B)=>parseFloat(D)-parseFloat(B)):[];return{description:S?.description||"",episodes:H,inWatchlist:M.inWatchlist,watchlistStatus:M.status??null,watchedEpisodes:C}},enabled:!!r});W(()=>{!n&&y?.episodes&&y.episodes.length>0&&!n&&l({type:"SET_STATE",payload:{initialEpisode:y.episodes[0]}})},[y,n]),W(()=>{if(u?.isAdult===void 0||g.current===r)return;const v=u.isAdult===!0,S=e.filter(C=>C.mature===v);if(S.length===0||e.find(C=>C.id===i.selectedProvider)?.mature===v)return;const M=It(v);g.current=r??null,l({type:"SET_PROVIDER",payload:S.find(C=>C.id===M)?.id??S[0].id})},[u?.isAdult,i.selectedProvider,r,e]),W(()=>{if(!r||!/^dango-mt-\d+$/.test(r)||g.current===`temp:${r}`)return;const v=u?.provider;v&&(g.current=`temp:${r}`,v!==i.selectedProvider&&l({type:"SET_PROVIDER",payload:v}))},[r,u,i.selectedProvider]);const{data:w,isLoading:k,error:T}=Mt({queryKey:[ie.videoSources,r,o,i.selectedProvider,i.currentMode],queryFn:()=>At(r,o,i,l),enabled:!!r&&!!o&&!(i.showMeta?.isAdult===!0&&!b?.hasMatureConsent)}),{mutateAsync:_}=St({mutationFn:async({wasIn:v,showMeta:S})=>{if(!r)throw new Error("Missing showId");if(v)await he.watchlist.remove.mutate({id:r});else{const M=S.name||S.names?.romaji;if(!M)throw new Error("Missing show name");await he.watchlist.add.mutate({id:r,name:M,thumbnail:S.thumbnail,nativeName:S.names?.native,englishName:S.names?.english,type:S.type,isAdult:S.isAdult})}return!v},onSuccess:v=>{ke.success(v?"Added to watchlist":"Removed from watchlist"),s.invalidateQueries({queryKey:[ie.playerData,r]}),s.invalidateQueries({queryKey:[ie.showData,r]}),s.invalidateQueries({queryKey:[ie.watchlist]})},onError:v=>ke.error(v instanceof Error?v.message:"Failed to update watchlist")}),d=U(async()=>{!r||!u||await _({wasIn:!!y?.inWatchlist,showMeta:u})},[r,u,y?.inWatchlist,_]),h=U(async v=>{try{await he.settings.set.mutate({key:"preferredSource",value:v})}catch(S){console.error(S)}},[]),{mutateAsync:x,isPending:J}=St({mutationFn:async({status:v})=>{if(!r)throw new Error("Missing showId");return await he.watchlist.setStatus.mutate({id:r,status:v}),v},onSuccess:v=>{l({type:"SET_STATE",payload:{inWatchlist:!0,watchlistStatus:v}}),ke.success(`Moved to ${v}`),s.invalidateQueries({queryKey:[ie.showData,r]}),s.invalidateQueries({queryKey:[ie.watchlist]}),s.invalidateQueries({queryKey:[ie.continueWatching]})},onError:()=>ke.error("Failed to update watchlist status")}),I=U(async()=>{await x({status:"Completed"})},[x]),{mutateAsync:z,isPending:F}=St({mutationFn:async({episodeNumber:v,duration:S,showMeta:M,episodes:C})=>{await he.progress.updateProgress.mutate({showId:r??"",episodeNumber:v,currentTime:S,duration:S,showName:M.name,showThumbnail:M.thumbnail,nativeName:M.names?.native,englishName:M.names?.english,genres:M.genres?.map(H=>H.name),popularityScore:Ar(M.score)??void 0,type:M.type,status:M.status,episodeCount:C.length,isAdult:M.isAdult})},onSuccess:(v,S)=>{ke.success(`Episode ${S.episodeNumber} marked as watched`),s.invalidateQueries({queryKey:[ie.playerData,r]}),s.invalidateQueries({queryKey:[ie.showMeta,r]}),s.invalidateQueries({queryKey:[ie.videoSources,r,S.episodeNumber]}),s.invalidateQueries({queryKey:[ie.continueWatching]}),s.invalidateQueries({queryKey:[ie.thisWeekSchedule]}),s.invalidateQueries(m.continueWatching.pathFilter())},onError:()=>ke.error("Failed to mark episode as watched")}),V=U(async(v,S)=>{!r||!u||await z({episodeNumber:v,duration:S,showMeta:u,episodes:y?.episodes||[]})},[r,u,y?.episodes,z]),G=U(async()=>{l({type:"SET_STATE",payload:{showCombinedDetails:!i.showCombinedDetails}})},[i.showCombinedDetails]),K=Me(()=>{const v=P||T,S=v?v.message:null,M=S==="AUTH_REQUIRED"?null:S,C=w&&w.fetchedEpisodeNumber===o?w:null,H=!!w&&!C;return{...i,currentEpisode:o,showMeta:{...i.showMeta||{},...u||{}},episodes:y?.episodes||[],watchedEpisodes:y?.watchedEpisodes||[],inWatchlist:!!y?.inWatchlist,watchlistStatus:y?.watchlistStatus??i.watchlistStatus??null,videoSources:C?.videoSources||[],selectedSource:i.selectedSource||C?.selectedSource||null,selectedLink:i.selectedLink||C?.selectedLink||null,resumeTime:C?.resumeTime||0,resumeDuration:C?.resumeDuration||0,showResumeModal:i.showResumeModal&&(C?.showResumeModal??!1),skipIntervals:C?.skipIntervals||[],loadingShowData:E,loadingVideo:k||H,error:M,fetchedEpisodeNumber:C?.fetchedEpisodeNumber}},[i,u,y,w,E,k,P,T,o]),q=U((v,S)=>{const M=S||r;if(!M||!v||M===r&&v===o)return;const H=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(M)&&i.selectedProvider!=="animepahe"?"animepahe":i.selectedProvider,D=["video-sources",M,v,H,i.currentMode];s.getQueryState(D)?.status!=="success"&&s.prefetchQuery({queryKey:D,queryFn:()=>At(M,v,{selectedProvider:H,currentMode:i.currentMode},l,!0),staleTime:300*1e3,gcTime:1800*1e3})},[r,o,s,i,l]);return{state:K,dispatch:l,toggleWatchlist:d,moveToCompleted:I,setPreferredSource:h,handleToggleDetails:G,markEpisodeWatched:V,prefetchEpisodeSources:q,isMarkingWatched:F,isUpdatingWatchlistStatus:J}};function zn({onNext:r,onToggleTheater:n,flashControls:a}){W(()=>{const b=i=>{i.target.closest('input, textarea, button, select, a, [role="button"], [contenteditable="true"]')||(["arrowup","arrowdown","arrowleft","arrowright"].includes(i.key.toLowerCase())&&a(),i.key.toLowerCase()==="n"&&r(),i.key.toLowerCase()==="t"&&n())};return document.addEventListener("keydown",b),()=>{document.removeEventListener("keydown",b)}},[a,r,n])}const Ze=(r,n,a)=>r.showId===n||!!a&&r.showId===a;function qn({videoRef:r,testClipActive:n,selectedSourceType:a,onEnded:b,queue:i,removeFromQueue:l,showId:s,showMetaId:m,showMetaStatus:c,currentEpisode:g,episodes:f,isAutoplayEnabled:e,isCompleted:o,showResumeModal:N,nextEpisode:u,previousEpisode:E,navigate:P,invalidateContinueWatching:y,dispatch:w}){const[k,T]=le(!1),_=A(!1),[d,h]=le(null),[x,J]=le(null),I=A(l);I.current=l;const z=o||k,F=z&&Pt(f,g??void 0,c);W(()=>{k||(_.current=!1)},[k]);const V=U(()=>{b();const D=i.find(L=>Ze(L,s,m)&&L.episodeNumber===g);if(i.length>0){const L=i.findIndex(pe=>Ze(pe,s,m)&&pe.episodeNumber===g),Q=L>=0?i[L+1]||null:i[0];J({nextItem:Q,playedItem:D||null}),h(2)}else D&&I.current({showId:D.showId,episodeNumber:D.episodeNumber});let B=!1;if(e&&i.length===0){const L=f.findIndex(Q=>Q===g);if(L>-1&&L<f.length-1){const Q=f[L+1];y(),P(`/watch/${s}/${Q}`),B=!0}}!B&&i.length===0&&!x&&!_.current&&Pt(f,g??void 0,c)&&w({type:"SET_STATE",payload:{showResumeModal:!0}})},[b,P,i,s,m,c,g,f,e,x,w,y]),G=U(()=>{if(i.length===0)return;b();const D=i.find(Q=>Ze(Q,s,m)&&Q.episodeNumber===g),B=i.findIndex(Q=>Ze(Q,s,m)&&Q.episodeNumber===g),L=B>=0?i[B+1]||null:i[0];D&&l({showId:D.showId,episodeNumber:D.episodeNumber}),L?P(`/watch/${L.showId}/${L.episodeNumber}`):D&&w({type:"SET_STATE",payload:{showResumeModal:!0}})},[b,P,i,l,s,m,g,w]),K=U(()=>{u&&(y(),T(!1),P(`/watch/${s}/${u}`)),w({type:"SET_STATE",payload:{showResumeModal:!1}})},[u,P,s,w,y]),q=U(()=>{i.length>0?G():u?K():ke.error("No next episode available")},[i.length,G,K,u]),v=U(()=>{_.current=!0},[]),S=U(()=>T(!1),[]),M=U(D=>T(D),[]),C=U(()=>{J(null),h(null)},[]),H=U(()=>{E&&P(`/watch/${s}/${E}`)},[E,P,s]);return W(()=>{const D=r.current;if(!D)return;const B=()=>{n||V()};return D.addEventListener("ended",B),()=>{D.removeEventListener("ended",B)}},[V,r,n]),W(()=>{const D=B=>{B.origin===window.location.origin&&a==="iframe"&&B.data?.type==="ANI_WEB_MEDIA_ENDED"&&V()};return window.addEventListener("message",D),()=>window.removeEventListener("message",D)},[V,a]),W(()=>{if(!x||d===null)return;if(d<=0){const{nextItem:B,playedItem:L}=x;J(null),h(null),L&&I.current({showId:L.showId,episodeNumber:L.episodeNumber}),B?P(`/watch/${B.showId}/${B.episodeNumber}`):L&&w({type:"SET_STATE",payload:{showResumeModal:!0}});return}const D=window.setTimeout(()=>{h(B=>B===null?null:B-1)},1e3);return()=>window.clearTimeout(D)},[x,d,P,w]),W(()=>{k&&(N||i.length>0||x||_.current||F&&w({type:"SET_STATE",payload:{showResumeModal:!0}}))},[k,F,N,i.length,x,w]),{hasReachedEpisodeEnd:k,effectiveIsCompleted:z,isShowCompleted:F,queueCountdown:d,pendingQueueTransition:x,handleQueueTransition:G,handleNextEpisode:K,handleNShortcut:q,handlePreviousEpisode:H,markShowCompletedDismissed:v,resetReachedEpisodeEnd:S,setReachedEpisodeEnd:M,cancelQueueTransition:C}}function Hn({videoRef:r,queue:n,showId:a,showMetaId:b,currentEpisode:i,selectedSourceType:l,hasNextEpisode:s,nextEpisode:m,prefetchEpisodeSources:c,setReachedEpisodeEnd:g,matchesQueueItem:f}){const[e,o]=le(!1),N=A(c);N.current=c;const u=A("");return W(()=>{const E=r.current;if(o(!1),g(!1),!E||l==="iframe")return;const P=()=>{const y=E.duration,w=E.currentTime;if(!y||Number.isNaN(y)){o(!1),g(!1);return}if(y-w<=60){const k=n.findIndex(d=>f(d,a,b)&&d.episodeNumber===i),T=n.length>0?k>=0?n[k+1]||null:n[0]:null,_=T?`${T.showId}:${T.episodeNumber}`:s?`${a}:${m}`:"";_&&u.current!==_&&(u.current=_,T?N.current(T.episodeNumber,T.showId):N.current(m??""))}o(s&&Bt(w,y)),g(w>=Math.max(y*.98,y-10))};return P(),E.addEventListener("timeupdate",P),E.addEventListener("loadedmetadata",P),()=>{E.removeEventListener("timeupdate",P),E.removeEventListener("loadedmetadata",P)}},[r,s,i,l,m,a,n,b,g,f,c]),{showNextEpisodePrompt:e}}const Et="fallbackChoice";function jn(){try{const r=localStorage.getItem(Et);return r==="iframe"||r==="retry"?r:null}catch{return null}}function Yn(r){try{r===null?localStorage.removeItem(Et):localStorage.setItem(Et,r)}catch{}}function Xn({showId:r,episodeNumber:n,currentMode:a,selectedProvider:b,selectedSourceType:i,videoSources:l,isAdult:s,providerOrder:m,matureProviders:c,setPreferredSource:g,dispatch:f,showControls:e}){const o=A(!1),N=A([]),u=A(!1),[E,P]=le(null),[y,w]=le(!1),[k,T]=le(!1),[_,d]=le(()=>jn()??"ask"),h=U(S=>{d(S),Yn(S==="ask"?null:S)},[]),x=A(_);W(()=>{x.current=_},[_]);const J=A(l);J.current=l;const I=U(()=>{o.current=!1,N.current=[],u.current=!1,P(null),w(!1)},[]);W(()=>{I()},[I,r,n]);const z=U(S=>{if(o.current)return;o.current=!0;const M=S.links[0];g(S.sourceName),f({type:"SET_STATE",payload:{selectedSource:S,selectedLink:M}}),P(null)},[f,g]),F=U(()=>{const M=J.current.find(C=>C.type==="iframe");return M?.links?.length?M:null},[]),V=U(async()=>{const S=m.filter(M=>{if(N.current.includes(M))return!1;const C=c.has(M);return s===void 0?!0:C===s});w(!0);try{for(const M of S){N.current.push(M);let C=null;try{C=await he.data.video.query({showId:r,episodeNumber:n,mode:a,provider:M})}catch{continue}const H=(C??[]).filter(L=>{const Q=L.sourceName.toLowerCase();return a==="dub"?Q.includes("eng")||Q.includes("dub"):Q.includes("jpn")||Q.includes("sub")||!Q.includes("eng")&&!Q.includes("dub")});if((H.length>0?H:C??[]).find(L=>L.type!=="iframe"&&L.links?.length)){N.current=[b],u.current=!1,f({type:"SET_STATE",payload:{selectedProvider:M,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Ft(M,s===!0),P(null),ke.success(`Switched to ${M} (direct stream)`);return}}P({retryFailed:!0}),ke.error("No working direct stream found on other providers")}finally{w(!1)}},[r,n,a,s,b,f,m,c]),G=U(()=>{if(o.current||u.current||i!=="player")return;const S=F();if(!S)return;N.current.includes(b)||N.current.push(b);const M=x.current;if(M==="iframe"){z(S);return}if(M==="retry"){V();return}e(!0),P({retryFailed:!1})},[i,b,F,z,V,e]),K=U(()=>{u.current=!0,P(null),T(!1)},[]),q=U(()=>{k&&h("iframe");const S=F();S?z(S):P(null)},[k,h,F,z]),v=U(()=>{k&&h("retry"),V()},[k,h,V]);return{fallbackPrompt:E,isRetryingProvider:y,rememberFallbackChoice:k,setRememberFallbackChoice:T,fallbackChoice:_,updateFallbackChoice:h,dismissFallbackPrompt:K,chooseIframeFallback:q,chooseProviderRetry:v,handleVideoSourceError:G,resetFallback:I}}function Jn({videoRef:r,selectedSource:n,selectedLink:a,loadingVideo:b,testClipActive:i,resumeTime:l,showResumeModal:s,calibReturnRef:m,setAvailableSubtitles:c,setActiveSubtitleTrack:g,showControls:f,onFatalError:e}){const o=A(null),N=A(0),u=A(l),E=A(s),P=A(e);return P.current=e,W(()=>{u.current=l,E.current=s},[l,s]),W(()=>{const y=r.current;if(!y)return;let w=!1;for(o.current&&(o.current.destroy(),o.current=null),(b||n)&&(y.pause(),y.removeAttribute("src"),y.load());y.firstChild;)y.removeChild(y.firstChild);if(i)return y.src="/av-sync-test.mp4",y.play().catch(()=>{f(!0)}),()=>{w=!0};if(!n||!a)return;if(n.type==="iframe"){N.current=0;return}m.current!=null?(N.current=m.current,m.current=null):u.current>5&&!E.current?N.current=u.current:E.current&&(N.current=0);let k=a.link;if(k.startsWith("/api/proxy")||(k=`/api/proxy?url=${encodeURIComponent(k)}`,a.headers?.Referer&&(k+=`&referer=${encodeURIComponent(a.headers.Referer)}`)),n.subtitles){const I=localStorage.getItem("playerSubtitlesEnabled")!=="false";let z=null;try{z=localStorage.getItem("playerLastSubtitle")}catch{}const F=wt(n.subtitles,{lastKey:z,enabled:I}),V=F>=0?n.subtitles[F]:null;n.subtitles.forEach(G=>{const K=document.createElement("track");K.kind="subtitles",K.label=G.label,K.srclang=G.lang;const q=G.src??G.url;if(q){let v=`/api/subtitle-proxy?url=${encodeURIComponent(q)}`;const S=a.headers?.Referer;S&&(v+=`&referer=${encodeURIComponent(S)}`),K.src=v}V&&G.label===V.label&&G.lang===V.lang&&(K.default=!0),y.appendChild(K)}),I||g("off"),c(n.subtitles)}const T=N.current;N.current=0;const _=()=>{T>0&&(y.currentTime=T)};y.addEventListener("loadedmetadata",_,{once:!0});const d=!(E.current&&u.current>5),h=()=>{d&&y.play().catch(()=>{f(!0)})};a.hls?(async()=>{const I=await qr();if(w)return;if(!I||!I.isSupported()){y.src=k,h();return}const z=document.body.classList.contains("low-end"),F=new I({maxBufferLength:z?15:30,maxMaxBufferLength:z?30:60,maxBufferSize:z?25*1e3*1e3:60*1e3*1e3,startLevel:-1,enableWorker:!0});o.current=F,F.on(I.Events.ERROR,(K,q)=>{q.fatal&&P.current()});const V=(n.subtitles?.length??0)>0,G=()=>{try{V&&typeof F.subtitleTrack=="number"&&F.subtitleTrack!==-1&&(F.subtitleTrack=-1)}catch{}};F.on(I.Events.SUBTITLE_TRACK_SWITCH,(K,q)=>{q?.id!==-1&&G()}),G(),F.loadSource(k),F.attachMedia(y),F.once(I.Events.MANIFEST_PARSED,()=>{w||h()})})():(y.src=k,h());const x=localStorage.getItem("playerVolume"),J=localStorage.getItem("playerMuted");return x!==null&&(y.volume=parseFloat(x)),J!==null&&(y.muted=J==="true"),()=>{w=!0,y.removeEventListener("loadedmetadata",_),o.current&&(o.current.destroy(),o.current=null)}},[n,a,r,m,b,i,g,c,f]),{seekToTimeRef:N}}function Zn({videoRef:r,availableSubtitles:n,activeSubtitleTrack:a,setAvailableSubtitles:b,setActiveSubtitleTrack:i}){W(()=>{const l=r.current;if(!l)return;const s=()=>{const m=Array.from(l.textTracks).map(c=>({label:c.label,lang:c.language,src:void 0,mode:c.mode}));b(m)};return l.textTracks.addEventListener("addtrack",s),l.textTracks.addEventListener("removetrack",s),s(),()=>{l.textTracks.removeEventListener("addtrack",s),l.textTracks.removeEventListener("removetrack",s)}},[r,b]),W(()=>{if(a===null&&n.length>0&&localStorage.getItem("playerSubtitlesEnabled")!=="false"){let l=null;try{l=localStorage.getItem("playerLastSubtitle")}catch{}const s=wt(n,{lastKey:l,enabled:!0});if(s<0){i("off");return}const m=n[s];i(m.lang||m.label)}},[a,n,i]),W(()=>{const l=r.current;if(!l||n.length===0)return;const s=a;if(!(localStorage.getItem("playerSubtitlesEnabled")!=="false")||s==="off"||s===null){Array.from(l.textTracks).forEach(g=>{g.mode="hidden"});return}let c=!1;if(Array.from(l.textTracks).forEach(g=>{const e=(g.language===s||g.label===s)&&!c;g.mode=e?"showing":"hidden",e&&(c=!0)}),!c&&l.textTracks.length>0){const g=Array.from(l.textTracks).find(f=>f.language==="en"||f.label==="English")||l.textTracks[0];g&&(g.mode="showing")}},[a,n,r])}function eo({videoRef:r,videoBoxH:n,style:a,sourceKey:b,activeSubtitleTrack:i,availableSubtitles:l}){W(()=>{const s="dynamic-subtitle-styles";let m=document.getElementById(s);m||(m=document.createElement("style"),m.id=s,document.head.appendChild(m)),m.textContent=Nt(a);const c=r.current;if(!c)return;const g=_t(a.fontSize,n||c.clientHeight||720);m.textContent=Nt({...a,fontSize:g});const f=()=>{const T=Number(a.position),_=isNaN(T)?0:Math.max(0,Math.min(100,T));return Math.max(0,Math.min(100,100-_))},e=(T,_)=>{try{const d=T;d.snapToLines=!1,d.line=_}catch{}},o=()=>{const T=g*16,_=c.videoHeight||c.clientHeight||720,d=c.videoWidth||c.clientWidth||1280;return{step:T*1.3/_*100,chars:Math.max(20,Math.floor(d/(T*.55)))}},N=T=>{const _=f(),d=Array.from(T.activeCues??[]);if(d.length<=1){d.forEach(I=>e(I,_));return}const{step:h,chars:x}=o();let J=_;for(let I=d.length-1;I>=0;I--){const F=String(d[I].text??"").replace(/<[^>]*>/g,"").split(`
55
- `).reduce((G,K)=>G+Math.max(1,Math.ceil(K.length/x)),0),V=J-F*h;e(d[I],Math.max(0,V)),J=V-h*.4}},u=T=>{if(!T.cues)return;const _=f();Array.from(T.cues).forEach(d=>e(d,_)),T.mode==="showing"&&N(T)},E=()=>{Array.from(c.textTracks).forEach(u)};E();const P=T=>{const _=T.target;_.mode==="showing"&&N(_)};Array.from(c.textTracks).forEach(T=>{T.addEventListener("cuechange",P)});const y=()=>{Array.from(c.textTracks).forEach(T=>{T.removeEventListener("cuechange",P),T.addEventListener("cuechange",P)}),E()};c.textTracks.addEventListener("addtrack",y),c.textTracks.addEventListener("removetrack",y);const w=Array.from(c.querySelectorAll("track")),k=()=>{E()};return w.forEach(T=>{T.addEventListener("load",k)}),()=>{Array.from(c.textTracks).forEach(T=>{T.removeEventListener("cuechange",P)}),c.textTracks.removeEventListener("addtrack",y),c.textTracks.removeEventListener("removetrack",y),w.forEach(T=>{T.removeEventListener("load",k)})}},[a,n,r,b,i,l])}function to({videoRef:r,overlayRef:n,style:a,activeSubtitleTrack:b,delayMs:i,enabled:l}){W(()=>{if(!l)return;const s=r.current,m=n.current;if(!s||!m)return;const c=localStorage.getItem("playerSubtitlesEnabled")!=="false",g=()=>{if(m.innerHTML="",!c||b==="off"||b===null)return;const o=Array.from(s.textTracks).find(k=>k.language===b||k.label===b);if(!o||o.mode!=="showing")return;const N=i/1e3;let u;if(N>0&&o.cues){const k=s.currentTime-N;u=Array.from(o.cues).filter(T=>T.startTime<=k&&k<=T.endTime)}else u=Array.from(o.activeCues??[]);if(u.length===0)return;const E={...a,fontSize:_t(a.fontSize,s.clientHeight||0)},P=dr(E),y=mr(s,E.position),w=Array.from(u);w.forEach((k,T)=>{const _=String(k.text??"");if(!fr(_).trim())return;const d=document.createElement("div"),h=(w.length-1-T)*1.7;d.style.cssText=`${P}
56
- bottom: calc(${y}px + ${h}em);`,d.innerHTML=pr(_),m.appendChild(d)})},f=()=>g(),e=()=>g();return Array.from(s.textTracks).forEach(o=>{o.addEventListener("cuechange",f)}),s.addEventListener("timeupdate",e),g(),()=>{Array.from(s.textTracks).forEach(o=>{o.removeEventListener("cuechange",f)}),s.removeEventListener("timeupdate",e),m.innerHTML=""}},[b,i,l,n,a,r])}const ro=({isOpen:r,onClose:n,onSuccess:a})=>{const b=()=>{a?.(),n()};return t(we,{isOpen:r,onClose:n,title:"MKissa Browser Verification",children:t("div",{className:Qe.container,children:[t("p",{children:"Open MKissa in this browser, play an anime episode, and complete any Cloudflare verification it shows. Once playback works there, return to Dango and click Refresh."}),t("div",{className:Qe.actions,children:t("a",{className:Qe.link,href:"https://mkissa.to/anime",target:"_blank",rel:"noreferrer",children:"Open MKissa anime"})}),t("div",{className:Qe.actions,children:[t("button",{className:Qe.secondaryButton,onClick:n,children:"Cancel"}),t("button",{className:Qe.button,onClick:b,children:"Refresh Dango"})]})]})})},So=()=>{const{id:r,episodeNumber:n}=tr(),a=rr(),b=xt(),i=nr(),{hasConsent:l,grant:s}=xr(),{options:m}=Dt(),c=Me(()=>m.filter(p=>(p.kind??"anime")==="anime"),[m]),g=Me(()=>c.map(p=>p.id),[c]),f=Me(()=>new Set(c.filter(p=>p.mature).map(p=>p.id)),[c]),{state:e,dispatch:o,toggleWatchlist:N,moveToCompleted:u,setPreferredSource:E,handleToggleDetails:P,markEpisodeWatched:y,prefetchEpisodeSources:w,isMarkingWatched:k,isUpdatingWatchlistStatus:T}=Kn(r,n,i.state||null,{hasMatureConsent:l});W(()=>{if(r&&e.showMeta?.id&&e.showMeta.id!==r){const p=n?`/watch/${e.showMeta.id}/${n}${window.location.search}`:`/watch/${e.showMeta.id}${window.location.search}`;a(p,{replace:!0})}},[r,e.showMeta?.id,n,a]);const _=Me(()=>{if(e.showMeta.name)return{name:e.showMeta.name,thumbnail:e.showMeta.thumbnail,names:e.showMeta.names,genres:e.showMeta.genres,score:e.showMeta.score,isAdult:e.showMeta.isAdult}},[e.showMeta.name,e.showMeta.thumbnail,e.showMeta.names,e.showMeta.genres,e.showMeta.score,e.showMeta.isAdult]),d=hr({skipIntervals:e.skipIntervals,showId:r,episodeNumber:e.currentEpisode?.toString(),episodeCount:e.episodes.length||void 0,sourceType:e.selectedSource?.type,showMeta:_}),{refs:h,actions:x}=d,J=Qr(),I=A(null),z=A(null),F=A(null),[V,G]=le(()=>{try{const p=localStorage.getItem("anime4kProfile");return["low","balanced","high","denoise"].includes(p)?p:"balanced"}catch{return"balanced"}}),{videoDelayMs:K,videoDelayEnabled:q,setDelayEnabled:v,handleVideoDelayChange:S,isCalibrating:M,testClipActive:C,stopCalibration:H,openAvSyncCalibrator:D,cancelAvSyncCalibrator:B,applyAvSyncCalibrator:L,toggleTestClip:Q,calibReturnRef:pe,effectiveVideoDelayMs:Le}=vr(h.videoRef,()=>x.setShowSettings(!1)),Ne=A(null),re=Fn({videoRef:h.videoRef,canvasRef:z,profile:V,delayMs:Le}),Y=re.isEnabled&&re.isWebGPUSupported;On({videoRef:h.videoRef,episodeKey:`${r??""}:${e.currentEpisode??""}`,isEnabled:re.isEnabled,isSupported:re.isWebGPUSupported,mediaReady:!e.loadingVideo&&!!e.selectedLink,isIframeSource:e.selectedSource?.type==="iframe",setEnabled:re.setEnabled}),gr({videoRef:h.videoRef,canvasRef:Ne,delayMs:Le,enabled:q&&!Y});const Te=q&&!Y,Be=Y||Te,[ne,X]=le(!1),ge=A(n);W(()=>{ge.current!==n&&(ge.current=n,H())},[n,H]);const dt=U(()=>{b.invalidateQueries({queryKey:[ie.continueWatching]})},[b]),{data:Pe=[],isLoading:et}=_r(),tt=Lr(),Ge=Br(),mt=Dr(),{isTheaterMode:ce,toggleTheaterMode:ue,handleLayoutClick:ft}=yr();or(()=>{if(d.state.isFullscreen||ce)return;const p=h.playerContainerRef.current,te=I.current;if(!p||!te)return;const Fe=()=>{const bt=p.getBoundingClientRect().height;te.style.height=`${bt}px`};Fe();const lt=new ResizeObserver(Fe);return lt.observe(p),()=>lt.disconnect()},[d.state.isFullscreen,ce,h.playerContainerRef]);const Ce=Me(()=>e.episodes.findIndex(p=>p===e.currentEpisode),[e.episodes,e.currentEpisode]),rt=Ce>0?e.episodes[Ce-1]:null,Ae=Ce>=0&&Ce<e.episodes.length-1?e.episodes[Ce+1]:null,nt=Ce>-1&&Ce<e.episodes.length-1,O=Bt(e.resumeTime,e.resumeDuration),{hasReachedEpisodeEnd:De,effectiveIsCompleted:Ke,isShowCompleted:oe,queueCountdown:ot,pendingQueueTransition:xe,handleQueueTransition:We,handleNextEpisode:$e,handleNShortcut:st,handlePreviousEpisode:ze,markShowCompletedDismissed:qe,resetReachedEpisodeEnd:_e,setReachedEpisodeEnd:at,cancelQueueTransition:pt}=qn({videoRef:h.videoRef,testClipActive:C,selectedSourceType:e.selectedSource?.type,onEnded:x.onEnded,queue:Pe,removeFromQueue:tt.mutate,showId:r,showMetaId:e.showMeta?.id,showMetaStatus:e.showMeta.status,currentEpisode:e.currentEpisode,episodes:e.episodes,isAutoplayEnabled:e.isAutoplayEnabled,isCompleted:O,showResumeModal:e.showResumeModal,nextEpisode:Ae,previousEpisode:rt,navigate:a,invalidateContinueWatching:dt,dispatch:o}),{showNextEpisodePrompt:ht}=Hn({videoRef:h.videoRef,queue:Pe,showId:r,showMetaId:e.showMeta?.id,currentEpisode:e.currentEpisode,selectedSourceType:e.selectedSource?.type,hasNextEpisode:nt,nextEpisode:Ae,prefetchEpisodeSources:w,setReachedEpisodeEnd:at,matchesQueueItem:Ze}),He=e.showResumeModal&&(oe||!Ke),ee=Ke&&!oe&&Pe.length===0&&!xe&&(e.showResumeModal||De),se=He||ee;br(d,!!e.selectedLink&&!ce&&!se);const{fallbackPrompt:de,isRetryingProvider:me,rememberFallbackChoice:ve,setRememberFallbackChoice:ye,fallbackChoice:je,updateFallbackChoice:Ue,dismissFallbackPrompt:be,chooseIframeFallback:ae,chooseProviderRetry:vt,handleVideoSourceError:Ve,resetFallback:fe}=Xn({showId:r,episodeNumber:e.currentEpisode??void 0,currentMode:e.currentMode,selectedProvider:e.selectedProvider,selectedSourceType:e.selectedSource?.type,videoSources:e.videoSources,isAdult:e.showMeta?.isAdult,providerOrder:g,matureProviders:f,setPreferredSource:E,dispatch:o,showControls:x.setShowControls}),{seekToTimeRef:Ye}=Jn({videoRef:h.videoRef,selectedSource:e.selectedSource,selectedLink:e.selectedLink,loadingVideo:e.loadingVideo,testClipActive:C,resumeTime:e.resumeTime,showResumeModal:e.showResumeModal,calibReturnRef:pe,setAvailableSubtitles:x.setAvailableSubtitles,setActiveSubtitleTrack:x.setActiveSubtitleTrack,showControls:x.setShowControls,onFatalError:Ve});W(()=>{se&&d.state.isFullscreen&&d.actions.toggleFullscreen()},[se,d.state.isFullscreen,d.actions]),W(()=>{se&&h.videoRef.current&&h.videoRef.current.pause()},[se,h.videoRef]);const{titlePreference:it}=$r(),{lowEndMode:kt}=Ir(),{settings:gt,update:Ot}=Sr(),Wt=ce&&gt.enabled&&!kt&&e.selectedSource?.type!=="iframe"&&!!e.selectedLink,Ie=Me(()=>{if(!e.showMeta||e.loadingShowData)return"Loading...";const{name:p,names:te}=e.showMeta;return it==="name"?p||"Loading...":it==="nativeName"?te?.native||p||"Loading...":it==="englishName"?te?.english||p||"Loading...":p||"Loading..."},[e.showMeta,it,e.loadingShowData]);W(()=>{Ie&&Ie!=="Loading..."&&e.currentEpisode&&(document.title=`► ${Ie} Episode ${e.currentEpisode} - dango`)},[Ie,e.currentEpisode]),zn({onNext:st,onToggleTheater:ue,flashControls:d.actions.flashControls});const{setAvailableSubtitles:Ut,setActiveSubtitleTrack:Vt}=x,Tt=Me(()=>({fontSize:d.state.subtitleFontSize,position:d.state.subtitlePosition,bgOpacity:d.state.subtitleBgOpacity,bgColor:d.state.subtitleBgColor,textColor:d.state.subtitleTextColor,edge:d.state.subtitleEdge,bold:d.state.subtitleBold}),[d.state.subtitleFontSize,d.state.subtitlePosition,d.state.subtitleBgOpacity,d.state.subtitleBgColor,d.state.subtitleTextColor,d.state.subtitleEdge,d.state.subtitleBold]);Zn({videoRef:h.videoRef,availableSubtitles:d.state.availableSubtitles,activeSubtitleTrack:d.state.activeSubtitleTrack,setAvailableSubtitles:Ut,setActiveSubtitleTrack:Vt});const[Qt,Gt]=le(0);W(()=>{const p=h.videoRef.current;if(!p)return;const te=()=>Gt(p.clientHeight||0);te();const Fe=new ResizeObserver(te);return Fe.observe(p),()=>Fe.disconnect()},[h.videoRef,e.selectedSource,e.selectedLink]),eo({videoRef:h.videoRef,videoBoxH:Qt,style:Tt,sourceKey:`${e.selectedSource?.sourceName??""}:${e.selectedLink?.link??""}`,activeSubtitleTrack:d.state.activeSubtitleTrack,availableSubtitles:d.state.availableSubtitles}),to({videoRef:h.videoRef,overlayRef:F,style:Tt,activeSubtitleTrack:d.state.activeSubtitleTrack,delayMs:Le,enabled:Be}),W(()=>{try{localStorage.setItem("anime4kProfile",V)}catch{}},[V]);const Kt=()=>{h.videoRef.current&&(h.videoRef.current.currentTime=e.resumeTime,h.videoRef.current.play()),o({type:"SET_STATE",payload:{showResumeModal:!1}})},zt=()=>{h.videoRef.current&&(h.videoRef.current.currentTime=0,h.videoRef.current.play()),o({type:"SET_STATE",payload:{showResumeModal:!1}})},yt=U(()=>{oe&&qe(),ee&&_e(),o({type:"SET_STATE",payload:{showResumeModal:!1}})},[o,oe,ee,qe,_e]),qt=U(()=>{if(_e(),h.videoRef.current)try{h.videoRef.current.currentTime=0,h.videoRef.current.play().catch(()=>{})}catch{}o({type:"SET_STATE",payload:{showResumeModal:!1}})},[o,h,_e]),Ht=U(async()=>{try{await u(),o({type:"SET_STATE",payload:{showResumeModal:!1}}),a("/")}catch{}},[u,o,a]),Ct=(p,te)=>t("div",{className:p,children:[t("button",{className:`${R.episodeNavBtn} ${R.secondary}`,onClick:ze,disabled:!rt,type:"button",children:[t(Z,{name:"chevron-left",size:12}),"Prev EP"]}),t("button",{className:`${R.episodeNavBtn} ${R.primary}`,onClick:$e,disabled:!Ae,type:"button",children:["Next EP",t(Z,{name:"chevron-right",size:12})]}),te==="mobile"&&J&&t("button",{className:`${R.episodeNavBtn} ${R.episodePickerBtn}`,onClick:()=>X(!0),type:"button",children:[t(Z,{name:"list-ul",size:12}),"Episodes"]})]}),jt=p=>{o({type:"SET_STATE",payload:{isAutoplayEnabled:p}}),Ur(p)},Rt=!!(e.currentEpisode&&e.watchedEpisodes.includes(e.currentEpisode)),Yt=e.selectedProvider!=="megaplay"||e.selectedSource?.type==="iframe",Xt=U(async()=>{if(!r||!e.currentEpisode||!e.showMeta.name||k)return;const p=h.videoRef.current?.duration,te=Math.max(p||0,e.resumeDuration||0,Number(e.showMeta.episodeDuration||0)*60,1);await y(e.currentEpisode,te)},[r,e.currentEpisode,e.showMeta,e.resumeDuration,y,k,h.videoRef]);if(e.error&&!e.showMeta.name&&e.videoSources.length===0&&e.episodes.length===0)return t("p",{className:"error-message",children:["Error: ",e.error]});const Re=e.loadingShowData||e.loadingVideo;return e.showMeta?.isAdult===!0&&!l?t("div",{className:Se.playerPageLayout,children:t(Vr,{isOpen:!0,onClose:()=>a("/home"),onGrant:s})}):t("div",{className:`${Se.playerPageLayout} ${ce?Se.theaterMode:""}`,onClick:ft,children:[ce&&t(Er,{videoRef:h.videoRef,active:Wt,settings:gt}),t(we,{isOpen:He&&oe,onClose:yt,title:"Show Completed!",width:"sm",children:[t(we.Body,{children:t("p",{children:"Congratulations! You've finished the final episode of this series."})}),t(we.Actions,{children:t(Je,{onClick:Ht,disabled:T,children:T?"Saving...":"Move to Completed"})})]}),t(wr,{isOpen:He&&!oe,onClose:yt,title:"Resume Playback?",message:t(ct,{children:["You were watching at ",t("strong",{children:d.actions.formatTime(e.resumeTime)}),". Would you like to continue?"]}),onResume:Kt,onRestart:zt}),t(we,{isOpen:ee,onClose:yt,title:"Episode Completed",width:"sm",children:[t(we.Body,{children:t("p",{children:["You've already watched Episode ",t("strong",{children:e.currentEpisode}),".",Ae?" Would you like to watch the next episode?":""]})}),t(we.Actions,{children:[t(Je,{variant:"secondary",onClick:qt,children:"Replay"}),Ae&&t(Je,{onClick:$e,children:`Watch EP ${Ae}`})]})]}),t(we,{isOpen:!!de,onClose:be,title:"Direct stream failed",width:"sm",children:[t(we.Body,{children:[t("p",{children:[t("strong",{children:e.selectedProvider}),"'s direct stream failed for this episode."]}),de?.retryFailed&&t("p",{children:"No working direct stream was found on the other providers either."}),t("p",{children:["You can continue with the embedded (iframe) player, but embedded players may show"," ",t("strong",{children:"ads and pop-ups"}),"."]}),t("label",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:"0.75rem",cursor:"pointer"},children:[t("input",{type:"checkbox",checked:ve,onChange:p=>ye(p.currentTarget.checked)}),"Remember my choice"]})]}),t(we.Actions,{children:[t(Je,{variant:"secondary",onClick:ae,children:"Continue with iframe"}),t(Je,{onClick:vt,disabled:me,children:me?"Searching…":"Try another provider"})]})]}),t(Fr,{isOpen:!!e.showCookieModal&&e.cookieProvider!=="mkissa",onClose:()=>o({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{b.invalidateQueries({queryKey:[ie.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),t(ro,{isOpen:!!e.showCookieModal&&e.cookieProvider==="mkissa",onClose:()=>o({type:"SET_STATE",payload:{showCookieModal:!1}}),onSuccess:()=>{b.invalidateQueries({queryKey:[ie.videoSources,r,e.currentEpisode,e.selectedProvider,e.currentMode]})}}),!ce&&t("aside",{ref:I,className:Se.episodeSidebar,children:e.loadingShowData?t(kr,{variant:"sidebar"}):t(Tr,{episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:p=>a(`/watch/${r}/${p}`)})}),t("div",{className:Se.playerMain,children:[t("div",{className:`${R.videoContainer} ${d.state.isFullscreen?"":Se.videoPlayerWrapper} ${d.state.isFullscreen?R.fullscreenActive:""}`,style:{...se?{visibility:"hidden"}:{}},onContextMenu:p=>p.preventDefault(),children:t(Cn,{player:d,isAutoplayEnabled:e.isAutoplayEnabled,onAutoplayChange:jt,fallbackChoice:je,onFallbackChoiceChange:Ue,ambientSettings:gt,onAmbientChange:Ot,showNextEpisodeButton:!se&&ht&&Pe.length===0,onNextEpisode:$e,videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:(p,te)=>{h.videoRef.current&&!isNaN(h.videoRef.current.currentTime)&&(Ye.current=h.videoRef.current.currentTime),E(p.sourceName),o({type:"SET_STATE",payload:{selectedSource:p,selectedLink:te,showResumeModal:e.showResumeModal&&p.type!=="iframe"}})},loadingVideo:Re,skipIntervals:e.skipIntervals,animeTitle:Ie,episodeNumber:e.currentEpisode??void 0,isTheaterMode:ce,onTheaterModeToggle:ue,anime4kEnabled:re.isEnabled,onAnime4kToggle:re.toggle,anime4kSupported:re.isWebGPUSupported,anime4kProfile:V,onAnime4kProfileChange:G,anime4kInitializing:re.isInitializing,anime4kError:re.error,videoDelayEnabled:q,onVideoDelayToggle:v,videoDelayMs:K,onVideoDelayChange:S,onCalibrateAvSync:D,isInteractingExtra:ne||M,className:Cr.shellFill,hideChrome:e.selectedSource?.type==="iframe",overlays:t(ct,{children:[d.state.isSpeedBoostActive&&t("div",{className:R.speedBoostBadge,"aria-hidden":"true",children:[t("span",{children:"2x"}),t(Z,{name:"forward",size:12})]}),ot!==null&&xe?.nextItem&&t("div",{className:R.queueCountdown,children:["Queue next in ",ot,"s"]})]}),children:[Re&&t("div",{className:R.loadingOverlay,children:t("div",{className:R.loadingDots,children:[t("div",{className:R.dot}),t("div",{className:R.dot}),t("div",{className:R.dot})]})}),d.state.isBuffering&&!Re&&e.selectedSource?.type!=="iframe"&&t("div",{className:R.bufferingOverlay,children:t("div",{className:R.bufferingSpinner})}),e.selectedSource?.type==="iframe"?!Re&&t("iframe",{src:e.selectedLink?.link,className:R.videoIframe,allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0,sandbox:e.selectedSource.sandbox?`${e.selectedSource.sandbox} allow-fullscreen allow-popups allow-popups-to-escape-sandbox`:void 0}):t(ct,{children:[!Re&&e.videoSources.length===0&&t("div",{className:R.errorOverlay,children:[t("p",{children:["No sources found for this episode with ",e.selectedProvider,"."]}),t("p",{className:R.errorSubtext,children:"Please try selecting a different provider below."}),t("button",{className:R.retryButton,onClick:()=>window.location.reload(),"data-speed-boost-ignore":"true",style:{marginTop:8},children:"Retry"})]}),!Re&&e.videoSources.length>0&&t("video",{ref:h.videoRef,controls:d.state.useNativeControls,playsInline:!0,"webkit-playsinline":"true",disablePictureInPicture:!0,disableRemotePlayback:!0,onPlay:x.onPlay,onPause:x.onPause,onLoadedMetadata:x.onLoadedMetadata,onTimeUpdate:()=>{C||(x.onTimeUpdate(),xe&&h.videoRef.current&&h.videoRef.current.currentTime<h.videoRef.current.duration-1&&pt())},onVolumeChange:x.onVolumeChange,onWaiting:x.onWaiting,onPlaying:x.onPlaying,onCanPlay:x.onCanPlay,onError:Ve,onContextMenu:p=>p.preventDefault(),className:Be?R.videoElementHidden:""}),re.isWebGPUSupported&&!Re&&e.videoSources.length>0&&t("canvas",{ref:z,className:`${R.upscalerCanvas} ${Y?R.upscalerActive:""}`}),!Y&&!Re&&e.videoSources.length>0&&t("canvas",{ref:Ne,className:`${R.upscalerCanvas} ${Te?R.upscalerActive:""}`}),re.isEnabled&&re.isWebGPUSupported&&re.isInitializing&&t("div",{className:R.upscalerStatusBadge,children:"Preparing upscaler…"}),Be&&t("div",{ref:F,className:R.subtitleOverlay}),t(Rr,{isOpen:M,ms:K,onChange:S,onApply:L,onClose:B,testClipActive:C,onTestClip:Q})]})]})}),!ce&&t(Mr,{}),!ce&&t(ct,{children:[et&&Pe.length===0?t(Rn,{count:3}):t(Gr,{title:"Queue",items:Pe,currentShowId:r,currentEpisode:e.currentEpisode??void 0,onNextQueue:We,onRemove:p=>tt.mutate({showId:p.showId,episodeNumber:p.episodeNumber}),onClear:()=>Ge.mutate(),showClearAll:!0,onReorder:p=>mt.mutate(p.map(te=>({id:te.id,showId:te.showId,episodeNumber:te.episodeNumber})))}),t("div",{className:R.streamPanel,children:[t(An,{selectedProvider:e.selectedProvider,isAdult:e.showMeta?.isAdult,options:c,onProviderChange:p=>{fe(),o({type:"SET_STATE",payload:{selectedProvider:p,videoSources:[],selectedSource:null,selectedLink:null,loadingVideo:!0}}),Ft(p,e.showMeta?.isAdult===!0)}}),Ct(`${R.episodeActions} ${R.desktopEpisodeActions}`,"desktop"),Re?t("div",{className:R.sourceLoader,children:t("div",{className:R.spinner})}):t(_n,{videoSources:e.videoSources,selectedSource:e.selectedSource,selectedLink:e.selectedLink,onSourceChange:p=>{h.videoRef.current&&!isNaN(h.videoRef.current.currentTime)&&(Ye.current=h.videoRef.current.currentTime);const Fe=(p.links||[]).sort((lt,bt)=>(parseInt(bt.resolutionStr)||0)-(parseInt(lt.resolutionStr)||0))[0]||null;E(p.sourceName),o({type:"SET_STATE",payload:{selectedSource:p,selectedLink:Fe,showResumeModal:e.showResumeModal&&p.type!=="iframe"}})},onLinkChange:p=>{e.selectedSource&&(E(e.selectedSource.sourceName),o({type:"SET_STATE",payload:{selectedLink:p}}))}})]}),t("div",{className:Se.playerInfoContainer,children:[t("div",{className:Se.playerInfoHeader,children:[t("div",{className:Se.playerAnimeCard,children:t("img",{src:Or(e.showMeta.thumbnail||""),alt:Ie,loading:"lazy",decoding:"async",onError:p=>{p.target.src="/placeholder.svg"}})}),t("div",{className:Se.videoTitleSection,children:[t("div",{className:R.titleContainer,children:[t("h1",{children:Ie}),t("div",{className:R.scheduleInfo,children:[e.showMeta.status&&t("span",{className:R.status,children:e.showMeta.status}),e.showMeta.nextEpisodeAirDate&&t("span",{className:R.nextEpisode,children:["Next episode: ",e.showMeta.nextEpisodeAirDate]})]})]}),t("div",{className:R.controls,children:[t("button",{className:`${R.watchlistBtn} ${e.inWatchlist?R.inList:""}`,onClick:N,children:[e.inWatchlist?t(Z,{name:"check",size:14}):t(Z,{name:"plus",size:14}),e.inWatchlist?"In Watchlist":"Add to Watchlist"]}),t(zr,{showId:r,showName:e.showMeta.name||e.showMeta.names?.romaji,showThumbnail:e.showMeta.thumbnail,nativeName:e.showMeta.names?.native,englishName:e.showMeta.names?.english,showType:e.showMeta.type,className:`${R.watchlistBtn} ${R.queueBtn}`,activeClassName:R.queueActive}),Yt&&t("button",{className:`${R.watchlistBtn} ${R.markWatchedBtn} ${Rt?R.markWatchedDone:""}`,onClick:Xt,disabled:k||!e.currentEpisode,children:[t(Z,{name:"check",size:14}),k?"Saving...":Rt?"Watched":"Mark Watched"]}),t("button",{className:`${R.watchlistBtn} ${R.modeToggleBtn} ${e.currentMode==="dub"?R.modeToggleActive:""}`,onClick:()=>{const p=e.currentMode==="dub"?"sub":"dub";fe(),o({type:"SET_MODE",payload:p}),localStorage.setItem("preferredMode",p)},type:"button","aria-pressed":e.currentMode==="dub",children:e.currentMode==="dub"?"DUB":"SUB"}),kt&&t("button",{className:`${R.watchlistBtn} ${R.modeToggleBtn} ${d.state.useNativeControls?R.modeToggleActive:""}`,onClick:()=>{const p=!d.state.useNativeControls;d.actions.setUseNativeControls(p),localStorage.setItem("playerUseNativeControls",p.toString())},type:"button",children:d.state.useNativeControls?"NATIVE: ON":"NATIVE: OFF"})]})]})]}),Ct(`${R.episodeActions} ${R.mobileEpisodeActions}`,"mobile"),t("div",{className:Se.infoColumns,children:[t("div",{className:`${R.descriptionSection} ${R.synopsisFlat}`,children:[t("h3",{children:"Synopsis"}),t(jr,{text:e.showMeta.description?e.showMeta.description.replace(/<[^>]*>?/gm,""):"",emptyText:"No description available."}),t("button",{className:R.detailsToggleBtn,onClick:P,children:[e.showCombinedDetails?t(Z,{name:"chevron-up"}):t(Z,{name:"chevron-down"}),e.showCombinedDetails?"Hide Details":"Show Details"]})]}),e.showCombinedDetails&&t(Hr,{showMeta:e.showMeta,styles:R})]})]})]})]}),t(Nr,{isOpen:ne,onClose:()=>X(!1),episodes:e.episodes,currentEpisode:e.currentEpisode??void 0,watchedEpisodes:e.watchedEpisodes,onEpisodeClick:p=>{X(!1),a(`/watch/${r}/${p}`)}})]})};export{So as default};
@@ -1 +0,0 @@
1
- import{g as w,d as ne,T as te,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as o}from"./vendor-icons-DrybRNxP.js";import{S as ae,O as A,a as se,A as le,b as ie}from"./OptionListMenu-CIvW5WmO.js";import{u as re}from"./index-BLh_CXtu.js";import"./AvSyncCalibrator-C5GxpyPE.js";import"./vendor-query-BBT5_sHx.js";const ce="_settingsPanel_1dymm_1",oe="_header_1dymm_33",me="_backBtn_1dymm_56",de="_contentWrapper_1dymm_76",ue="_menuContent_1dymm_82",he="_menuItem_1dymm_89",pe="_selected_1dymm_114",be="_currentValue_1dymm_134",ye="_menuNote_1dymm_141",ge="_menuError_1dymm_150",n={settingsPanel:ce,header:oe,backBtn:me,contentWrapper:de,menuContent:ue,menuItem:he,selected:pe,currentValue:be,menuNote:ye,menuError:ge},ve=($,P)=>{const{isOpen:y,onClose:ke,videoSources:Ce,currentSource:C,currentLink:N,onSourceChange:V,subtitles:O,activeSubtitleTrack:g,onSubtitleChange:E,subtitleSettings:z,onSubtitleSettingsChange:T,useNativeControls:v,onNativeControlsToggle:U,anime4kEnabled:u,onAnime4kToggle:B,anime4kSupported:f,anime4kProfile:r,onAnime4kProfileChange:h,anime4kInitializing:L,anime4kError:S,videoDelayEnabled:_,onVideoDelayToggle:M,videoDelayMs:I,onVideoDelayChange:D,onCalibrateAvSync:x,isAutoSkipEnabled:m,onAutoSkipChange:W,isAutoplayEnabled:d,onAutoplayChange:G,fallbackChoice:p,onFallbackChoiceChange:j,isTheaterMode:q,ambientSettings:b,onAmbientChange:k}=$,{lowEndMode:F}=re(),[a,i]=ne("main");w.useEffect(()=>{if(!y){const t=setTimeout(()=>i("main"),300);return()=>clearTimeout(t)}},[y]);const Q=()=>e("div",{className:n.menuContent,children:[e("button",{className:n.menuItem,onClick:()=>i("quality"),children:[e("span",{children:"Quality"}),e("span",{className:n.currentValue,children:N?.resolutionStr||"Auto"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitles"),children:[e("span",{children:"Subtitles"}),e("span",{className:n.currentValue,children:g||"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("subtitle-style"),children:e("span",{children:"Subtitle Style"})}),F&&e("button",{className:`${n.menuItem} ${v?n.selected:""}`,onClick:()=>{const t=!v;U(t),localStorage.setItem("playerUseNativeControls",t.toString())},children:[e("span",{children:"Native Controls"}),v&&e(o,{name:"check",size:12})]}),f&&e("button",{className:`${n.menuItem} ${u?n.selected:""}`,onClick:()=>{B(!u)},children:[e("span",{children:"Anime4K Upscaler"}),u&&e(o,{name:"check",size:12})]}),f&&u&&e("button",{className:n.menuItem,onClick:()=>i("upscaler"),children:e("span",{children:"Upscaler Settings"})}),e("button",{className:n.menuItem,onClick:()=>i("av-sync"),children:[e("span",{children:"A/V Sync"}),e("span",{className:n.currentValue,children:_?`${I}ms`:"Off"})]}),e("button",{className:n.menuItem,onClick:()=>i("playback"),children:[e("span",{children:"Playback"}),e("span",{className:n.currentValue,children:[m?"Auto-skip On":null,d?"Autoplay On":null].filter(Boolean).join(" • ")||"Off"})]}),q&&b&&k&&e("button",{className:n.menuItem,onClick:()=>i("ambient"),children:[e("span",{children:"Ambient Light"}),e("span",{className:n.currentValue,children:b.enabled?"On":"Off"})]})]}),R=()=>{const t=C?.links.sort((s,c)=>(parseInt(c.resolutionStr)||0)-(parseInt(s.resolutionStr)||0))||[];return e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:t.map(s=>({key:s.resolutionStr,label:s.resolutionStr,selected:N?.resolutionStr===s.resolutionStr})),onSelect:s=>{const c=t.find(l=>l.resolutionStr===s);c&&V(C,c)}})})},H=()=>e("div",{className:n.menuContent,children:e(A,{classes:{item:n.menuItem,active:n.selected},options:[{key:"off",label:"Off",selected:g==="off"},...O.map(t=>({key:t.label||t.lang,label:t.label,selected:g===(t.label||t.lang)}))],onSelect:t=>E(t)})}),K=()=>e("div",{className:n.menuContent,children:e(se,{classes:{item:n.menuItem,active:n.selected},values:z,onChange:T})}),J=te(()=>{try{const s=navigator.userAgentData?.brands?.map(l=>l.brand.toLowerCase())??[];if(s.length>0)return s.some(l=>l.includes("chromium")||l.includes("chrome")||l.includes("edge")||l.includes("opera")||l.includes("brave")||l.includes("vivaldi"));const c=navigator.userAgent.toLowerCase();return c.includes("chrome")||c.includes("chromium")||c.includes("edg")}catch{return!0}},[]),X=()=>e("div",{className:n.menuContent,children:[L&&e("div",{className:n.menuNote,role:"status",children:"Preparing GPU, this can take a few seconds…"}),S&&e("div",{className:n.menuError,role:"alert",children:["Upscaler failed: ",S]}),!J&&e("div",{className:n.menuNote,children:"Upscaling performs best in Chrome-based browsers."}),e("button",{className:`${n.menuItem} ${r==="low"?n.selected:""}`,onClick:()=>h("low"),children:[e("div",{children:[e("div",{children:"Low"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Lightest, best for weaker GPUs"})]}),r==="low"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="balanced"?n.selected:""}`,onClick:()=>h("balanced"),children:[e("div",{children:[e("div",{children:"Balanced"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Source + display aware"})]}),r==="balanced"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="high"?n.selected:""}`,onClick:()=>h("high"),children:[e("div",{children:[e("div",{children:"High"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Aggressive, needs strong GPU"})]}),r==="high"&&e(o,{name:"check",size:12})]}),e("button",{className:`${n.menuItem} ${r==="denoise"?n.selected:""}`,onClick:()=>h("denoise"),children:[e("div",{children:[e("div",{children:"Denoise"}),e("div",{style:{fontSize:"0.75rem",color:"var(--text-tertiary)"},children:"Denoise + upscale noisy, compressed sources"})]}),r==="denoise"&&e(o,{name:"check",size:12})]})]}),Y=()=>e("div",{className:n.menuContent,children:[e("button",{type:"button",className:`${n.menuItem} ${m?n.selected:""}`,onClick:()=>W(!m),"aria-pressed":m,children:[e("span",{children:"Auto-skip openings and endings"}),e("span",{className:n.currentValue,children:m?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically jump past opening, ending and recap segments when detected."}),e("button",{type:"button",className:`${n.menuItem} ${d?n.selected:""}`,onClick:()=>G(!d),"aria-pressed":d,children:[e("span",{children:"Autoplay next episode"}),e("span",{className:n.currentValue,children:d?"On":"Off"})]}),e("div",{className:n.menuNote,children:"Automatically start the next episode when this one ends."}),e("button",{type:"button",className:n.menuItem,onClick:()=>j(p==="ask"?"iframe":p==="iframe"?"retry":"ask"),children:[e("span",{children:"Failed direct stream"}),e("span",{className:n.currentValue,children:p==="iframe"?"Use iframe":p==="retry"?"Try provider":"Ask me"})]}),e("div",{className:n.menuNote,children:"When a direct stream fails: ask each time, go straight to the embedded player (may show ads), or automatically try another provider."})]}),Z=()=>e("div",{className:n.menuContent,children:e(le,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},enabled:_,delayMs:I,onToggle:M,onDelayChange:D,onCalibrate:x})}),ee=()=>b&&k?e("div",{className:n.menuContent,children:e(ie,{classes:{item:n.menuItem,active:n.selected,note:n.menuNote},values:b,onChange:k})}):null;return y?e(ae,{classes:{panel:n.settingsPanel,header:n.header,backBtn:n.backBtn,title:"",content:n.contentWrapper},title:a==="main"?"Settings":a==="ambient"?"Ambient Light":a.charAt(0).toUpperCase()+a.slice(1).replace("-"," "),titleTag:"h3",showBack:a!=="main",onBack:()=>i("main"),panelRef:P,onPanelClick:t=>t.stopPropagation(),children:[a==="main"&&Q(),a==="quality"&&R(),a==="subtitles"&&H(),a==="subtitle-style"&&K(),a==="upscaler"&&X(),a==="av-sync"&&Z(),a==="playback"&&Y(),a==="ambient"&&ee()]}):null},we=w.forwardRef(ve);export{we as default};
@@ -1 +0,0 @@
1
- ._title-preference-container_sdqgs_1{margin-bottom:var(--space-6);padding:var(--space-4);border:1px solid var(--border-primary);border-radius:var(--radius-md);background-color:var(--bg-tertiary)}._title-preference-container_sdqgs_1 h4{margin-top:0;margin-bottom:var(--space-4);color:var(--text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}._error_sdqgs_17{color:var(--danger)}._toggle-button_sdqgs_21{position:relative;width:200px;height:40px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);border:none;border-radius:20px;cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;color:var(--accent-text);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);transition:var(--transition-base);box-shadow:var(--shadow-md)}._toggle-button_sdqgs_21:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg);filter:brightness(1.1)}._toggle-button_sdqgs_21:disabled{opacity:.7;cursor:not-allowed}._toggle-label_sdqgs_51{position:absolute;white-space:nowrap;transition:var(--transition-base)}._settingsHeader_1p8qx_1{margin-bottom:var(--space-8);animation:_fadeIn_1p8qx_1 .8s var(--ease-smooth)}._pageTitle_1p8qx_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._pageSubtitle_1p8qx_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0}._settingsLayout_1p8qx_20{display:flex;gap:var(--space-8);align-items:flex-start;animation:_slideUpIn_1p8qx_1 .8s var(--ease-smooth)}._sidebar_1p8qx_27{width:240px;display:flex;flex-direction:column;gap:var(--space-2);position:relative}._sidebarIndicator_1p8qx_35{position:absolute;left:0;right:0;border-radius:var(--radius-lg);background:var(--accent);transition:top .22s cubic-bezier(.2,1.2,.3,1),height .22s cubic-bezier(.2,1.2,.3,1),left .22s cubic-bezier(.2,1.2,.3,1),width .22s cubic-bezier(.2,1.2,.3,1);z-index:0;pointer-events:none}._sidebarItem_1p8qx_50{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:transparent;border:1px solid transparent;border-radius:var(--radius-lg);color:var(--text-tertiary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:color .22s ease;text-align:left;position:relative;z-index:1}._sidebarItem_1p8qx_50:hover{color:var(--text-primary)}._sidebarItem_1p8qx_50._active_1p8qx_72{color:var(--accent-text)}._sidebarItem_1p8qx_50 svg{font-size:1.1rem}._mainContent_1p8qx_80{flex:1;min-width:0}._tabContent_1p8qx_85{display:flex;flex-direction:column;gap:var(--space-6);animation:_tabFadeIn_1p8qx_1 .3s ease}@keyframes _tabFadeIn_1p8qx_1{}._settingItem_1p8qx_95{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._controls_1p8qx_100{display:flex;gap:var(--space-4);flex-wrap:wrap}._status_1p8qx_106{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:var(--radius-md);color:var(--accent-light);font-size:var(--font-size-sm);font-weight:500}@keyframes _fadeIn_1p8qx_1{}@keyframes _slideUpIn_1p8qx_1{}._sectionCard_tm30b_1{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow)}._title_tm30b_11{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._signIn_tm30b_18{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--space-6);line-height:1.6}._userInfo_tm30b_25{padding:var(--space-4) var(--space-5);background:color-mix(in srgb,var(--color-success) 5%,transparent);border:1px solid color-mix(in srgb,var(--color-success) 20%,transparent);border-radius:var(--radius-lg);margin-bottom:var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}._userInfo_tm30b_25 p{margin:0;color:var(--text-secondary);font-size:var(--font-size-sm)}._userInfo_tm30b_25 strong{color:var(--color-success)}._warning_tm30b_47{color:var(--color-warning);font-size:var(--font-size-xs);margin:var(--space-3) 0 0;font-weight:500}._formGroup_tm30b_54{margin-bottom:var(--space-5)}._label_tm30b_58{display:block;margin-bottom:var(--space-2);color:var(--text-tertiary);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}._inputWrapper_tm30b_68{display:flex;gap:var(--space-2)}._input_tm30b_68{flex-grow:1;height:48px;padding:0 var(--space-4);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-size:var(--font-size-base);transition:all var(--transition-fast)}._input_tm30b_68:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated);box-shadow:0 0 0 4px var(--accent-glow)}._select_tm30b_92{flex-grow:1;height:48px;padding:0 var(--space-4);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center}._actions_tm30b_109{display:flex;gap:var(--space-3);margin-top:var(--space-6);border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._hr_tm30b_117{border:none;border-top:1px solid var(--border-primary);margin:var(--space-8) 0}@media(max-width:600px){._userInfo_tm30b_25{flex-direction:column;align-items:flex-start}._actions_tm30b_109{flex-direction:column}}._sectionCard_1axuo_1{background:var(--bg-tertiary);border:1px solid var(--border-secondary);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4)}._sectionCard_1axuo_1 h3{margin:0 0 var(--space-3);font-size:var(--font-size-base);font-weight:700;color:var(--text-primary)}._sectionCard_1axuo_1 p{margin:0 0 var(--space-3);font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5}._dangerCard_1axuo_23{border-color:color-mix(in srgb,var(--color-danger) 40%,transparent)}._dangerCard_1axuo_23 h3{color:var(--color-danger)}._settingRow_1axuo_31{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border-secondary)}._settingRow_1axuo_31:last-child{border-bottom:none}._settingRow_1axuo_31 label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--text-primary)}._settingItem_3qq0n_1{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._modalOverlay_3qq0n_6{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}._modal_3qq0n_6{background:var(--bg-secondary, #1a1a2e);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-8);max-width:420px;width:100%;box-shadow:var(--glass-shadow)}._modal_3qq0n_6 h4{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._modal_3qq0n_6 p{color:var(--text-secondary);font-size:var(--font-size-sm);line-height:1.6;margin:0 0 var(--space-6)}._modalActions_3qq0n_41{display:flex;justify-content:flex-end;gap:var(--space-3)}._modalSecondary_3qq0n_47{background:transparent;border:1px solid var(--border-primary);color:var(--text-primary);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;font-size:var(--font-size-sm)}._modalPrimary_3qq0n_57{background:var(--accent, var(--color-danger));border:none;color:var(--accent-text, var(--color-danger-text));border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;font-size:var(--font-size-sm);font-weight:600}._modalSecondary_3qq0n_47:disabled,._modalPrimary_3qq0n_57:disabled{opacity:.6;cursor:default}._statsGrid_o4nf0_1{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}._statCard_o4nf0_8{background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}._statLabel_o4nf0_18{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);font-weight:600}._statValue_o4nf0_26{font-size:var(--font-size-xl);font-weight:700;color:var(--text-primary)}._statMeta_o4nf0_32{font-size:var(--font-size-sm);font-weight:500;color:var(--text-primary)}._statusBanner_o4nf0_38{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-4);flex-wrap:wrap}._statusSuccess_o4nf0_49{background:color-mix(in srgb,var(--color-success, #22c55e) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-success, #22c55e) 25%,transparent);color:var(--text-primary)}._statusUpdating_o4nf0_55{background:#6366f11a;border:1px solid rgba(99,102,241,.3);color:var(--text-primary)}._statusError_o4nf0_61{background:color-mix(in srgb,var(--color-danger) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-danger) 20%,transparent);color:var(--text-primary)}._sha_o4nf0_67{margin-left:auto;font-family:monospace;font-size:var(--font-size-xs);color:var(--text-tertiary)}._settingItem_o4nf0_74{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._settingTitle_o4nf0_79{font-weight:600;color:var(--text-primary);font-size:var(--font-size-sm)}._settingSubtitle_o4nf0_85{font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:var(--space-1);line-height:1.5}._actionsRow_o4nf0_92{margin-top:var(--space-6);display:flex;gap:var(--space-3)}._status_1wbo0_1{margin-top:var(--space-4);font-size:var(--font-size-sm);color:var(--text-primary)}._warningText_1wbo0_7{margin:0 0 var(--space-4)!important}._ackLabel_1wbo0_11{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer}._ackLabel_1wbo0_11 input{margin-top:2px}._settingItem_68mz3_1{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._field_68mz3_6{display:flex;flex-direction:column;gap:.5rem;margin-bottom:var(--space-4)}._field_68mz3_6 label{font-size:.9rem;color:var(--text-secondary);font-weight:500}._input_68mz3_19{background:var(--bg-secondary);border:1px solid var(--border-primary);color:var(--text-primary);padding:.6rem;border-radius:4px;width:100%;max-width:400px}._input_68mz3_19:hover{border-color:var(--border-secondary)}._input_68mz3_19:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-input-focus)}._actions_68mz3_39{display:flex;gap:var(--space-3);flex-wrap:wrap}._status_68mz3_45{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:var(--radius-md);color:var(--accent-light);font-size:var(--font-size-sm);font-weight:500}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);border:1px solid transparent}.alert-info{background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:var(--accent);color:var(--text-primary)}.alert-success{background:color-mix(in srgb,var(--color-success) 10%,transparent);border-color:var(--color-success);color:var(--color-success)}.alert-warning{background:color-mix(in srgb,var(--color-warning) 10%,transparent);border-color:var(--color-warning);color:var(--color-warning)}.alert-error{background:color-mix(in srgb,var(--color-danger) 10%,transparent);border-color:var(--color-danger);color:var(--color-danger)}