@serifpersia/dango 4.0.4 → 4.0.6

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 (87) hide show
  1. package/README.md +1 -1
  2. package/client/dist/assets/AnimeCard-ZMgtR741.js +1 -0
  3. package/client/dist/assets/AnimeInfo-CmDzxK-x.js +1 -0
  4. package/client/dist/assets/AnimeInfoPage-BtMHG64S.js +2 -0
  5. package/client/dist/assets/Asmr-Ct7Pp0i7.js +2 -0
  6. package/client/dist/assets/AsmrPopup-ER6dDxFM.js +1 -0
  7. package/client/dist/assets/{AsmrResetProgressModal-BFgtJIjq.js → AsmrResetProgressModal-CmDqGKma.js} +1 -1
  8. package/client/dist/assets/Home-CWsXJfHc.js +1 -0
  9. package/client/dist/assets/{Insights-xaMU0gDH.js → Insights-Dlu3LypY.js} +1 -1
  10. package/client/dist/assets/{LibraryListPage-y1J_sbu3.js → LibraryListPage-L4Lyt1BV.js} +1 -1
  11. package/client/dist/assets/ListeningList-CEiZWAUS.js +1 -0
  12. package/client/dist/assets/Manga-CazCyWIh.js +1 -0
  13. package/client/dist/assets/{MangaInfoPage-BHnn83Zv.js → MangaInfoPage-8ZsayGOJ.js} +1 -1
  14. package/client/dist/assets/{MangaReadPage-CDQJ6lwj.js → MangaReadPage-CG59Zuhi.js} +1 -1
  15. package/client/dist/assets/{MangaResetProgressModal-Cw4txoU9.js → MangaResetProgressModal-CmIGgwJc.js} +1 -1
  16. package/client/dist/assets/Mature-B_0sseRY.css +1 -0
  17. package/client/dist/assets/Mature-Dw4DVRVT.js +1 -0
  18. package/client/dist/assets/{MatureConsentModal-BuJjdQ5N.js → MatureConsentModal-CBGHgiBA.js} +1 -1
  19. package/client/dist/assets/MediaCard-Bd24Icus.js +1 -0
  20. package/client/dist/assets/MediaCard-DsoEaANc.css +1 -0
  21. package/client/dist/assets/OptionListMenu-BdiwBX1S.js +1 -0
  22. package/client/dist/assets/Player-DJSkQVjM.js +56 -0
  23. package/client/dist/assets/PlayerControls.module-D5c6Q5Ln.js +1 -0
  24. package/client/dist/assets/PlayerProvider-C6humJW5.js +1 -0
  25. package/client/dist/assets/PlayerSettings-C3MmSKgQ.js +1 -0
  26. package/client/dist/assets/PlayerSurface-C0SuP9xJ.js +1 -0
  27. package/client/dist/assets/PlayerSurface-LthWKdFi.css +1 -0
  28. package/client/dist/assets/{QueueOptionsButton-Tsij7x21.js → QueueOptionsButton-C1o8UacJ.js} +1 -1
  29. package/client/dist/assets/{QueueRail-DHSBCDXc.js → QueueRail-Dj_zPCND.js} +1 -1
  30. package/client/dist/assets/{ReadingList-Bl-49YU7.js → ReadingList-CMo85dG4.js} +1 -1
  31. package/client/dist/assets/{ResetProgressModal-DIn1j8Qp.js → ResetProgressModal-udBYaYWc.js} +1 -1
  32. package/client/dist/assets/Search-DM1vfczV.css +1 -0
  33. package/client/dist/assets/{Search-uY6VQ4os.js → Search-vE5ITchW.js} +1 -1
  34. package/client/dist/assets/Search.module-DjQZ0jox.js +1 -0
  35. package/client/dist/assets/Settings-DTdakL-f.js +21 -0
  36. package/client/dist/assets/SettingsShell-ByVlsU3X.js +1 -0
  37. package/client/dist/assets/{SkeletonGrid-xUVpcN5T.js → SkeletonGrid-CKVHMLEB.js} +1 -1
  38. package/client/dist/assets/{Trackers-DXrxbGg1.js → Trackers-Cbuzzhap.js} +2 -2
  39. package/client/dist/assets/{Tv-DFrBiMVQ.js → Tv-z-RzIer_.js} +4 -4
  40. package/client/dist/assets/{TvInfo-eLmiGzwb.js → TvInfo-DBdRrmSJ.js} +1 -1
  41. package/client/dist/assets/TvPopup-C_TEPZqV.js +1 -0
  42. package/client/dist/assets/{TvSearch-D_IGBBD8.js → TvSearch-DhZt3CXR.js} +1 -1
  43. package/client/dist/assets/{TvWatchlist-Ol8QK-C9.js → TvWatchlist-Dg7X14X1.js} +1 -1
  44. package/client/dist/assets/{VirtualKeyboard-Bp-M8SVt.js → VirtualKeyboard-BkfL6fYx.js} +1 -1
  45. package/client/dist/assets/{WatchAlong-qJzs9_fD.js → WatchAlong-D-Wdl6L6.js} +1 -1
  46. package/client/dist/assets/{WatchAlongPanel-DLuYT4hH.js → WatchAlongPanel-BtiB_ErQ.js} +1 -1
  47. package/client/dist/assets/{Watchlist-DcAUYWtZ.js → Watchlist-DFXVM31Q.js} +1 -1
  48. package/client/dist/assets/{index-BBbcJwUD.css → index-BpCEsLT2.css} +1 -1
  49. package/client/dist/assets/index-hrS3r0UE.js +179 -0
  50. package/client/dist/assets/{libraryInvalidation-Cv-7EfU1.js → libraryInvalidation-DWCCaTbI.js} +1 -1
  51. package/client/dist/assets/{playbackCompletion-BTwrTq5S.js → playbackCompletion-DzRc-CrM.js} +1 -1
  52. package/client/dist/assets/{useAnimeInfoData-tmC_S41n.js → useAnimeInfoData-Di0AjMa7.js} +1 -1
  53. package/client/dist/assets/{useMangaLibrary-CPluPl_T.js → useMangaLibrary-DQvZO29f.js} +1 -1
  54. package/client/dist/assets/{useMangaPopup-DRDWlEcN.js → useMangaPopup-BiaJvL8C.js} +1 -1
  55. package/client/dist/assets/{useTv-Dl0TYap6.js → useTv-Daayom0r.js} +1 -1
  56. package/client/dist/assets/{useTvLibrary-BCgO-d_K.js → useTvLibrary-7zDxMjFz.js} +1 -1
  57. package/client/dist/assets/useWatchAlongPlayer-BNJCb3D5.js +10 -0
  58. package/client/dist/assets/{useWatchAlongPlayer-Dk7zB7P4.css → useWatchAlongPlayer-BsaopdPw.css} +1 -1
  59. package/client/dist/index.html +2 -2
  60. package/orchestrator.js +1 -1
  61. package/package.json +2 -2
  62. package/server/dist/server.js +169 -169
  63. package/server/package.json +1 -1
  64. package/client/dist/assets/AnimeCard-Dj2gXZQ_.js +0 -1
  65. package/client/dist/assets/AnimeInfo-FTnsxEMu.js +0 -1
  66. package/client/dist/assets/AnimeInfoPage-DaoQEHyi.js +0 -2
  67. package/client/dist/assets/Asmr-Dj290riM.js +0 -2
  68. package/client/dist/assets/AsmrPopup-DCxF-0FD.js +0 -1
  69. package/client/dist/assets/Home-BvAHDt_3.js +0 -1
  70. package/client/dist/assets/ListeningList-DxPvvTGs.js +0 -1
  71. package/client/dist/assets/Manga-Dc9QLjTm.js +0 -1
  72. package/client/dist/assets/Mature-DJmUUtlF.css +0 -1
  73. package/client/dist/assets/Mature-DdHf-knG.js +0 -1
  74. package/client/dist/assets/MediaCard-Co-j57uA.css +0 -1
  75. package/client/dist/assets/MediaCard-FQr72c16.js +0 -1
  76. package/client/dist/assets/OptionListMenu-CAjFAq0c.js +0 -1
  77. package/client/dist/assets/Player-DO3lmGMJ.js +0 -56
  78. package/client/dist/assets/PlayerProvider-1nQxpPbi.js +0 -1
  79. package/client/dist/assets/PlayerSettings-BxmbpvrQ.js +0 -1
  80. package/client/dist/assets/Search-DCKK3seW.css +0 -1
  81. package/client/dist/assets/Search.module-C_qwCdHS.js +0 -1
  82. package/client/dist/assets/Settings-CHkvGAxk.js +0 -21
  83. package/client/dist/assets/TvPopup-CaXs4L6B.js +0 -1
  84. package/client/dist/assets/index-CkZCduQZ.js +0 -178
  85. package/client/dist/assets/useProviders-aA8vRBov.js +0 -1
  86. package/client/dist/assets/useWatchAlongPlayer-DfbkmL7h.js +0 -10
  87. /package/client/dist/assets/{Player-1LfYnRyR.css → PlayerControls-1LfYnRyR.css} +0 -0
@@ -1,10 +0,0 @@
1
- import{u as t,A as C,q as A,h as F,d as P,T as te,$ as ct}from"./vendor-core-DfaOB3Rn.js";import{p as M,al as lt,R as He,B as X,F as dt,a4 as se,o as ut,am as Re,q as U,ac as pt,t as ft,h as ht,a7 as mt,an as Fe,ao as gt}from"./index-CkZCduQZ.js";import{I as j}from"./vendor-icons-C1Pj_eSX.js";import{S as De,a as yt,s as G,f as ze,m as _t,h as bt,d as vt,k as St,u as wt,n as ie}from"./PlayerProvider-1nQxpPbi.js";import{u as Ct}from"./vendor-query-BBT5_sHx.js";import{i as ce,d as kt}from"./playbackCompletion-BTwrTq5S.js";const xt="_controls_1ne4g_1",Tt="_titleContainer_1ne4g_9",Lt="_scheduleInfo_1ne4g_15",Nt="_status_1ne4g_23",Pt="_nextEpisode_1ne4g_35",Bt="_watchlistBtn_1ne4g_45",At="_inList_1ne4g_73",Et="_queueBtn_1ne4g_84",It="_queueActive_1ne4g_96",$t="_modeToggleBtn_1ne4g_102",Mt="_modeToggleActive_1ne4g_109",Rt="_markWatchedBtn_1ne4g_130",Ft="_markWatchedDone_1ne4g_144",Dt="_streamPanel_1ne4g_155",Ot="_desktopEpisodeActions_1ne4g_169",qt="_sourceLoader_1ne4g_175",Ht="_episodeActions_1ne4g_188",zt="_mobileEpisodeActions_1ne4g_202",Wt="_episodeNavBtn_1ne4g_206",Vt="_primary_1ne4g_235",Kt="_secondary_1ne4g_245",Ut="_episodePickerBtn_1ne4g_249",Qt="_queueCountdown_1ne4g_253",Gt="_speedBoostBadge_1ne4g_268",jt="_videoContainer_1ne4g_299",Yt="_loadingOverlay_1ne4g_312",Xt="_loadingDots_1ne4g_326",Jt="_dot_1ne4g_331",Zt="_bounce_1ne4g_1",en="_bufferingOverlay_1ne4g_348",tn="_bufferingSpinner_1ne4g_357",nn="_spin_1ne4g_459",rn="_videoIframe_1ne4g_381",sn="_videoElementHidden_1ne4g_404",an="_upscalerCanvas_1ne4g_409",on="_upscalerActive_1ne4g_422",cn="_upscalerStatusBadge_1ne4g_426",ln="_subtitleOverlay_1ne4g_441",dn="_spinner_1ne4g_459",un="_errorOverlay_1ne4g_526",pn="_retryButton_1ne4g_536",fn="_detailsToggleBtn_1ne4g_549",hn="_descriptionSection_1ne4g_572",mn="_synopsisFlat_1ne4g_580",gn="_fullscreenActive_1ne4g_614",yn="_errorSubtext_1ne4g_657",_n="_watchedOverlay_1ne4g_680",bn="_watchedTitle_1ne4g_702",vn="_watchedSubtext_1ne4g_708",Sn="_watchedActions_1ne4g_714",wn="_watchedActionsCentered_1ne4g_732",ts={controls:xt,titleContainer:Tt,scheduleInfo:Lt,status:Nt,nextEpisode:Pt,watchlistBtn:Bt,inList:At,queueBtn:Et,queueActive:It,modeToggleBtn:$t,modeToggleActive:Mt,markWatchedBtn:Rt,markWatchedDone:Ft,streamPanel:Dt,desktopEpisodeActions:Ot,sourceLoader:qt,episodeActions:Ht,mobileEpisodeActions:zt,episodeNavBtn:Wt,primary:Vt,secondary:Kt,episodePickerBtn:Ut,queueCountdown:Qt,speedBoostBadge:Gt,videoContainer:jt,loadingOverlay:Yt,loadingDots:Xt,dot:Jt,bounce:Zt,bufferingOverlay:en,bufferingSpinner:tn,spin:nn,videoIframe:rn,videoElementHidden:sn,upscalerCanvas:an,upscalerActive:on,upscalerStatusBadge:cn,subtitleOverlay:ln,spinner:dn,errorOverlay:un,retryButton:pn,detailsToggleBtn:fn,descriptionSection:hn,synopsisFlat:mn,fullscreenActive:gn,errorSubtext:yn,watchedOverlay:_n,watchedTitle:bn,watchedSubtext:vn,watchedActions:Sn,watchedActionsCentered:wn},Cn="_playerPageLayout_1rxx0_1",kn="_noSidebar_1rxx0_15",xn="_episodeSidebar_1rxx0_19",Tn="_playerMain_1rxx0_32",Ln="_videoPlayerWrapper_1rxx0_40",Nn="_playerInfoHeader_1rxx0_56",Pn="_playerAnimeCard_1rxx0_62",Bn="_playerInfoContainer_1rxx0_74",An="_infoColumns_1rxx0_104",En="_videoTitleSection_1rxx0_134",In="_theaterMode_1rxx0_308",ns={playerPageLayout:Cn,noSidebar:kn,episodeSidebar:xn,playerMain:Tn,videoPlayerWrapper:Ln,playerInfoHeader:Nn,playerAnimeCard:Pn,playerInfoContainer:Bn,infoColumns:An,videoTitleSection:En,theaterMode:In},$n={fontSize:"subtitleFontSize",position:"subtitlePosition",bgOpacity:"subtitleBgOpacity",bgColor:"subtitleBgColor",textColor:"subtitleTextColor",edge:"subtitleEdge",bold:"subtitleBold"},Q={fontSize:1.8,position:0,bgOpacity:.5,bgColor:"#000000",textColor:"#ffffff",edge:"shadow",bold:!1},fe=(e,n,s)=>Math.max(n,Math.min(s,e)),he=e=>typeof e=="string"&&/^#[0-9a-fA-F]{6}$/.test(e),le=(e,n,s,o)=>{try{const r=M.getItem(e);if(r===null)return n;const c=parseFloat(r);return Number.isFinite(c)?fe(c,s,o):n}catch{return n}};function Mn(){let e=Q.edge,n=Q.bgColor,s=Q.textColor,o=Q.bold;try{const r=M.getItem("subtitleEdge");(r==="shadow"||r==="outline"||r==="none")&&(e=r);const c=M.getItem("subtitleBgColor");he(c)&&(n=c);const i=M.getItem("subtitleTextColor");he(i)&&(s=i);const d=M.getItem("subtitleBold");d!==null&&(o=d==="true")}catch{}return{fontSize:le("subtitleFontSize",Q.fontSize,.5,10),position:le("subtitlePosition",Q.position,0,100),bgOpacity:le("subtitleBgOpacity",Q.bgOpacity,0,1),bgColor:n,textColor:s,edge:e,bold:o}}function We(e,n){const s=`rgba(0, 0, 0, ${fe(n,0,1)})`;if(!he(e))return s;const o=parseInt(e.slice(1,3),16),r=parseInt(e.slice(3,5),16),c=parseInt(e.slice(5,7),16);return`rgba(${o}, ${r}, ${c}, ${fe(n,0,1)})`}function Ve(e,n){return e==="none"?n<=0?"0 1px 3px rgba(0, 0, 0, 0.9)":"none":e==="outline"?["-1px 0 0 black","1px 0 0 black","0 -1px 0 black","0 1px 0 black","-1px -1px 0 black","1px -1px 0 black","-1px 1px 0 black","1px 1px 0 black","0 0 6px rgba(0, 0, 0, 0.9)"].join(", "):"0 0 4px black, 0 1px 2px rgba(0, 0, 0, 0.8)"}function rs(e){return`
2
- video::cue {
3
- font-size: ${e.fontSize}rem !important;
4
- color: ${e.textColor} !important;
5
- background-color: ${We(e.bgColor,e.bgOpacity)} !important;
6
- font-weight: ${e.bold?"bold":"normal"} !important;
7
- text-shadow: ${Ve(e.edge,e.bgOpacity)} !important;
8
- }
9
- `}function ss(e){return[`font-size: ${e.fontSize}rem`,`color: ${e.textColor}`,`background-color: ${We(e.bgColor,e.bgOpacity)}`,`font-weight: ${e.bold?"700":"400"}`,`text-shadow: ${Ve(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 Rn=new Set(["b","i","u","strong","em"]);function as(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&lt;(\/?)([a-zA-Z]+)&gt;/g,(s,o,r)=>Rn.has(r.toLowerCase())?`<${o}${r.toLowerCase()}>`:s)}function os(e){return e.replace(/<[^>]*>/g,"")}const is=["#ffffff","#ffff00","#7CFC00","#00e5ff","#ff9ff3","#ffa502"],cs=["#000000","#1e272e","#2f3542","#3d0c02","#0c3d2e","#ffffff"];function ls(e,n){const s=Number.isFinite(e)?e*16:Q.fontSize*16;return!Number.isFinite(n)||n<=0?s/16:Math.min(s,Math.max(13,n*.07))/16}function ds(e){const n=Math.abs(e/1e3).toFixed(1);return e>0?`+${n}s`:e<0?`-${n}s`:"0.0s"}function us(e,n){const s=e.clientWidth||0,o=e.clientHeight||0,r=e.videoWidth>0&&e.videoHeight>0?e.videoWidth/e.videoHeight:0;let c=o;r>0&&s>0&&o>0&&(c=s/o>r?o:s/r);const i=Math.max(0,(o-c)/2),d=Math.max(0,Math.min(100,Number(n)||0))/100*c;return i+d}const ps=({isOpen:e,onClose:n,title:s,heading:o,message:r,children:c})=>t(He,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t("button",{type:"button",className:lt.closeButton,onClick:n,"aria-label":"Close",children:t(j,{name:"times",size:16})}),t(j,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),t("p",{style:{fontSize:"1.1rem",fontWeight:600},children:o}),t("p",{style:{color:"var(--text-secondary)"},children:r}),c&&t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center",flexWrap:"wrap"},children:c})]})}),fs=({isOpen:e,onClose:n,title:s,message:o,resumeLabel:r="Resume",restartLabel:c="Start Over",onResume:i,onRestart:d})=>t(He,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t("p",{children:o}),t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[t(X,{variant:"secondary",onClick:d,children:c}),t(X,{onClick:i,children:r})]})]})}),Fn="_centerControls_1oa5h_1",Dn="_centerSkipBtn_1oa5h_14",On="_centerPlayPause_1oa5h_15",ae={centerControls:Fn,centerSkipBtn:Dn,centerPlayPause:On},hs=()=>t("div",{className:ae.centerControls,onClick:e=>e.stopPropagation(),children:[t(De,{seconds:-10,className:ae.centerSkipBtn}),t(yt,{className:ae.centerPlayPause,"data-speed-boost-ignore":"true"}),t(De,{seconds:10,className:ae.centerSkipBtn})]}),ms=({visible:e,title:n,episode:s,server:o,mode:r,audio:c,subtitles:i,onBack:d,classes:a})=>t("div",{className:`${a.overlay} ${e?"":a.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none"},children:t("div",{className:a.top,onClick:l=>l.stopPropagation(),children:[t("button",{className:a.backBtn,onClick:l=>{l.stopPropagation(),d()},title:"Back","aria-label":"Back",children:t(j,{name:"chevron-left"})}),t("div",{className:`${a.titleInfo} ${G.topBarTitleInfo}`,children:[t("span",{className:a.title,children:n}),s&&t("span",{className:a.episode,children:s}),(r||o||c||i)&&t("div",{className:G.streamDetails,children:[r&&t("span",{className:G.modeTag,children:r.toUpperCase()}),o&&t("span",{title:`Server: ${o}`,children:["Server: ",o]}),c&&t("span",{title:`Audio: ${c}`,children:["Audio: ",c]}),i&&t("span",{title:`Subs: ${i}`,children:["Subs: ",i]})]})]})]})});function qn(e){return e instanceof Element&&!!e.closest('button, input, select, textarea, a, [role="button"], [role="slider"], [data-player-ui="true"]')}function gs({engine:e,topBar:n,centerControls:s,bottomBar:o,settingsPanel:r,overlays:c,isInteracting:i=!1,nativeControls:d=!1,chromeDisabled:a=!1,className:l,onStageClick:b,children:k}){const _=ze(e),E=_t(),u=C(void 0),p=C(void 0),x=C(0),f=C(i);f.current=i;const m=A(()=>{clearTimeout(u.current),u.current=void 0},[]),g=A(()=>{m();const N=e.getState();!N.isPlaying||N.isScrubbing||f.current||d||(u.current=setTimeout(()=>{const y=e.getState();f.current||y.isScrubbing||!y.isPlaying||e.setShowControls(!1)},E?5e3:3e3))},[e,E,d,m]),B=A(()=>{e.setShowControls(!0),g()},[e,g]);bt(e,B,!d&&!a),F(()=>(i||_.isScrubbing||!_.isPlaying?(e.setShowControls(!0),m()):g(),m),[e,i,_.isPlaying,_.isScrubbing,_.showControls,m,g]),F(()=>()=>{clearTimeout(p.current)},[]);const h=N=>{if(qn(N.target)||d||a)return;b?.();const y=Date.now();if(y-x.current<280){clearTimeout(p.current),p.current=void 0,x.current=0,e.toggleFullscreen();return}x.current=y,clearTimeout(p.current),p.current=setTimeout(()=>{p.current=void 0,e.setShowControls(!e.getState().showControls),g()},280)},T=_.showControls||_.isScrubbing||i||!_.isPlaying;return t(vt,{engine:e,children:t("div",{ref:e.containerRef,"data-player-root":"true",className:`${G.shell} ${_.isFullscreen?G.shellFullscreen:""} ${l??""}`,style:{cursor:!T&&_.isFullscreen?"none":"default"},onContextMenu:N=>N.preventDefault(),onPointerMove:N=>{N.pointerType==="mouse"&&B()},onFocusIn:B,onMouseLeave:()=>{window.matchMedia?.("(hover: hover) and (pointer: fine)").matches&&e.getState().isPlaying&&!f.current&&e.setShowControls(!1)},children:[t("div",{className:G.stage,onClick:h,children:k}),c,(_.error||_.playBlocked)&&t("div",{className:G.engineStatus,"data-player-ui":"true",children:t(St,{})}),!a&&!d&&t("div",{className:G.uiLayer,children:[t("div",{"data-player-ui":"true",children:n}),T&&s&&t("div",{"data-player-ui":"true",children:s}),t("div",{"data-player-ui":"true",children:o}),r&&t("div",{"data-player-ui":"true",children:r})]})]})})}const Hn=e=>(e.language??e.lang??"").toLowerCase(),zn=e=>(e.label??"").toLowerCase(),Wn=e=>`${e.language??e.lang??""}|||${e.label??""}`,Vn=e=>Hn(e).startsWith("en")||zn(e).includes("english");function ys(e,n){if(e.length===0||n?.enabled===!1)return-1;const s=n?.lastKey??null;if(s){const r=e.findIndex(i=>Wn(i)===s);if(r>=0)return r;const c=s.indexOf("|||");if(c>=0){const i=s.slice(0,c),d=s.slice(c+3),a=e.findIndex(l=>{const b=l.language??l.lang??"",k=l.label??"";return d!==""&&k===d||i!==""&&i!=="undefined"&&(b===i||k===i)});if(a>=0)return a}else{const i=e.findIndex(d=>d.label===s||d.language===s||d.lang===s);if(i>=0)return i}}const o=e.findIndex(Vn);return o>=0?o:0}const Kn="_statusArea_1xccu_1",Un="_toggleBtn_1xccu_20",Qn="_shortcuts_1xccu_46",Gn="_shortcutGroup_1xccu_56",jn="_shortcut_1xccu_46",Yn="_key_1xccu_70",Xn="_label_1xccu_91",S={statusArea:Kn,toggleBtn:Un,shortcuts:Qn,shortcutGroup:Gn,shortcut:jn,key:Yn,label:Xn},_s=({showTheater:e=!0})=>{const[n,s]=P(!1);return t("div",{className:S.statusArea,children:[t("button",{type:"button",className:S.toggleBtn,onClick:()=>s(o=>!o),"aria-expanded":n,"aria-controls":"player-shortcuts",children:[t(j,{name:"keyboard",size:14}),t("span",{children:"Keyboard Shortcuts"}),n?t(j,{name:"chevron-up",size:12}):t(j,{name:"chevron-down",size:12})]}),n&&t("div",{id:"player-shortcuts",className:S.shortcuts,children:[t("div",{className:S.shortcutGroup,children:[t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"↑"}),t("span",{className:S.key,children:"↓"}),t("span",{className:S.label,children:"Volume"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"←"}),t("span",{className:S.key,children:"→"}),t("span",{className:S.label,children:"Seek"})]})]}),t("div",{className:S.shortcutGroup,children:[t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"Space"}),t("span",{className:S.label,children:"Play/Pause"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"F"}),t("span",{className:S.label,children:"Fullscreen"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"M"}),t("span",{className:S.label,children:"Mute"})]}),e&&t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"T"}),t("span",{className:S.label,children:"Theater"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"P"}),t("span",{className:S.label,children:"Previous"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"N"}),t("span",{className:S.label,children:"Next"})]})]})]})]})},Jn="_episodeListContainer_11isr_1",Zn="_drawerContainer_11isr_9",er="_episodeListHeader_11isr_14",tr="_drawerHeader_11isr_20",nr="_episodeListTitle_11isr_29",rr="_rangeSelector_11isr_41",sr="_rangeButton_11isr_47",ar="_active_11isr_70",or="_episodeList_11isr_1",ir="_drawerList_11isr_90",cr="_episodeItem_11isr_119",lr="_watched_11isr_147",dr="_episodeThumb_11isr_175",ur="_episodeText_11isr_185",pr="_episodeLabel_11isr_193",fr="_episodeSub_11isr_198",L={episodeListContainer:Jn,drawerContainer:Zn,episodeListHeader:er,drawerHeader:tr,episodeListTitle:nr,rangeSelector:rr,rangeButton:sr,active:ar,episodeList:or,drawerList:ir,episodeItem:cr,watched:lr,episodeThumb:dr,episodeText:ur,episodeLabel:pr,episodeSub:fr},hr=({episodes:e,currentEpisode:n,watchedEpisodes:s=[],onEpisodeClick:o,variant:r="sidebar",title:c="Episodes",header:i})=>{const[d,a]=P(0),l=C(null),b=te(()=>e.map(u=>typeof u=="string"?{id:u,label:`Episode ${u}`}:u),[e]),k=te(()=>new Set(s),[s]);F(()=>{const u=l.current;if(!u)return;let p=u.parentElement;for(;p;){const m=window.getComputedStyle(p);if((m.overflowY==="auto"||m.overflowY==="scroll")&&p.scrollHeight>p.clientHeight)break;p=p.parentElement}if(!p)return;const x=p.getBoundingClientRect(),f=u.getBoundingClientRect();p.scrollTop+=f.top+f.height/2-(x.top+p.clientHeight/2)},[n,d]);const _=te(()=>{if(b.length<=100)return[];const u=[];for(let p=0;p<b.length;p+=100){const x=p+1,f=Math.min(p+100,b.length);u.push(`${x}-${f}`)}return u},[b]),E=te(()=>{if(_.length===0)return b;const u=_[d];if(!u)return b;const[p,x]=u.split("-"),f=parseInt(p,10),m=parseInt(x,10);return b.slice(f-1,m)},[b,_,d]);return t("div",{className:`${L.episodeListContainer} ${r==="drawer"?L.drawerContainer:""}`,children:[t("div",{className:`${L.episodeListHeader} ${r==="drawer"?L.drawerHeader:""}`,children:[i,t("h3",{className:L.episodeListTitle,children:c}),_.length>0&&t("div",{className:L.rangeSelector,children:_.map((u,p)=>t("button",{className:`${L.rangeButton} ${d===p?L.active:""}`,onClick:()=>a(p),children:u},u))})]}),t("div",{className:`${L.episodeList} ${r==="drawer"?L.drawerList:""}`,children:E.map(u=>{const p=u.id===n,x=k.has(u.id)||u.watched===!0;return t("div",{ref:p?l:void 0,className:`${L.episodeItem} ${x?L.watched:""} ${p?L.active:""}`,onClick:()=>o(u.id),children:[u.thumbnail&&t(dt,{src:u.thumbnail,alt:"",loading:"lazy",decoding:"async",className:L.episodeThumb}),t("span",{className:L.episodeText,children:[t("span",{className:L.episodeLabel,children:u.label??`Episode ${u.id}`}),u.sublabel&&t("span",{className:L.episodeSub,children:u.sublabel})]})]},u.id)})})]})},bs=({variant:e="sidebar",count:n=12})=>t("div",{className:`${L.episodeListContainer} ${e==="drawer"?L.drawerContainer:""}`,children:[t("div",{className:`${L.episodeListHeader} ${e==="drawer"?L.drawerHeader:""}`,children:[t("h3",{className:L.episodeListTitle,children:"Episodes"}),t("div",{className:L.rangeSelector,children:[t(se,{width:"60px",height:"28px",variant:"rectangular"}),t(se,{width:"60px",height:"28px",variant:"rectangular"}),t(se,{width:"60px",height:"28px",variant:"rectangular"})]})]}),t("div",{className:`${L.episodeList} ${e==="drawer"?L.drawerList:""}`,children:Array.from({length:n}).map((s,o)=>t("div",{className:L.episodeItem,style:{border:"none",background:"transparent"},children:t(se,{width:"120px",height:"1.2rem",variant:"text"})},o))})]}),mr="_shell_cys6s_1",gr="_overlay_cys6s_10",yr="_drawer_cys6s_21",_r="_handle_cys6s_56",br="_header_cys6s_64",vr="_headerCopy_cys6s_73",Sr="_kicker_cys6s_79",wr="_title_cys6s_87",Cr="_closeBtn_cys6s_94",kr="_body_cys6s_116",V={shell:mr,overlay:gr,drawer:yr,handle:_r,header:br,headerCopy:vr,kicker:Sr,title:wr,closeBtn:Cr,body:kr};function vs({isOpen:e,onClose:n,episodes:s,currentEpisode:o,watchedEpisodes:r=[],onEpisodeClick:c,title:i,header:d}){return F(()=>{if(!e)return;const a=b=>{b.key==="Escape"&&n()},l=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",a),()=>{document.body.style.overflow=l,document.removeEventListener("keydown",a)}},[e,n]),e?ct(t("div",{className:V.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[t("button",{className:V.overlay,type:"button",onClick:n,"aria-label":"Close episodes"}),t("aside",{className:V.drawer,children:[t("div",{className:V.handle}),t("div",{className:V.header,children:[t("div",{className:V.headerCopy,children:[t("span",{className:V.kicker,children:"Episode picker"}),t("h3",{className:V.title,children:"Choose an episode"})]}),t("button",{className:V.closeBtn,type:"button",onClick:n,"aria-label":"Close",children:t(j,{name:"times"})})]}),t("div",{className:V.body,children:t(hr,{episodes:s,currentEpisode:o,watchedEpisodes:r,onEpisodeClick:c,variant:"drawer",title:i,header:d})})]})]}),document.body):null}const xr="_sourceSelectionContainer_g7xev_1",Tr="_providerSelectContainer_g7xev_14",Lr="_providerSelect_g7xev_14",Nr="_sourceSelect_g7xev_1",Pr="_sourceButtons_g7xev_70",Br="_sourceButton_g7xev_70",Ar="_active_g7xev_95",Ss={sourceSelectionContainer:xr,providerSelectContainer:Tr,providerSelect:Lr,sourceSelect:Nr,sourceButtons:Pr,sourceButton:Br,active:Ar},ws=({skipIntervals:e,showId:n,episodeNumber:s,episodeCount:o,sourceType:r,showMeta:c})=>{const i=Ct(),d=ut(),{engine:a,mediaRef:l}=wt({volumeKey:"playerVolume",mutedKey:"playerMuted"}),{isPlaying:b,isMuted:k,volume:_,duration:E,isScrubbing:u,isBuffering:p,isFullscreen:x,isSpeedBoostActive:f,showControls:m,playbackLocked:g}=ze(a),B=a.containerRef,h=C(null),T=C(0),N=C(Math.random().toString(36).substring(2)),y=a.setShowControls,[$,q]=P(M.getItem("autoSkipEnabled")==="true"),[K,I]=P(null),[z]=P(Mn),[Ke,ge]=P(z.fontSize),[Ue,ye]=P(z.position),[Qe,_e]=P(z.bgOpacity),[Ge,be]=P(z.bgColor),[je,ve]=P(z.textColor),[Ye,Se]=P(z.edge),[Xe,we]=P(z.bold),Ce=A((v,R)=>{if({fontSize:w=>typeof w!="number"?!1:(ge(w),!0),position:w=>typeof w!="number"?!1:(ye(w),!0),bgOpacity:w=>typeof w!="number"?!1:(_e(w),!0),bgColor:w=>typeof w!="string"?!1:(be(w),!0),textColor:w=>typeof w!="string"?!1:(ve(w),!0),edge:w=>w!=="shadow"&&w!=="outline"&&w!=="none"?!1:(Se(w),!0),bold:w=>typeof w!="boolean"?!1:(we(w),!0)}[v](R))try{M.setItem($n[v],String(R))}catch{}},[]),[Je,Ze]=P([]),[et,tt]=P(null),[nt,rt]=P(!1),[st,at]=P(!1),[ot,ke]=P(()=>{try{return M.getItem("playerUseNativeControls")==="true"}catch{return!1}}),J=C(!1),ne=C(-1),re=A(()=>{const v=l.current;return!n||!s||!c?.name?null:{showId:n,episodeNumber:s,episodeCount:o,currentTime:a.getTimeline().currentTime,duration:a.getState().duration,showName:c.name,showThumbnail:c.thumbnail,nativeName:c.names?.native,englishName:c.names?.english,genres:Array.isArray(c.genres)?c.genres.map(R=>typeof R=="string"?R:R?.name).filter(Boolean):void 0,popularityScore:c.score,type:c.type,isPlaying:v?!v.paused:r==="iframe",sessionId:N.current,isAdult:c.isAdult}},[a,l,n,s,o,c,r]),D=A((v=!1,R=!1)=>{if(J.current)return!1;const H=re();if(!H)return!1;const w=l.current;if(!w&&!v&&r!=="iframe"||r!=="iframe"&&H.duration<=0)return!1;const W=a.getTimeline().currentTime;if(!R){if(W===0)return!1;const ee=w?Math.abs(W-ne.current):0;if(!v&&w&&W!==w.duration&&ee<5)return!1}return H.currentTime=W,ne.current=W,v?(async()=>{try{await Re("progress.updateProgress",H),i.invalidateQueries({queryKey:[U.playerData,n]}),i.invalidateQueries({queryKey:[U.videoSources,n,s]}),i.invalidateQueries({queryKey:[U.continueWatching]}),i.invalidateQueries({queryKey:[U.thisWeekSchedule]}),i.invalidateQueries(d.continueWatching.pathFilter())}catch(ee){console.error("Failed to update progress:",ee)}})():Re("progress.updateProgress",H).then(()=>{ce(H.currentTime,H.duration)&&i.invalidateQueries({queryKey:[U.playerData,n]})}).catch(ee=>console.error("Failed to update progress:",ee)),!0},[a,re,r,i,n,s,d.continueWatching,l]);F(()=>{const v=()=>{J.current||D(!0)};window.addEventListener("beforeunload",v),window.addEventListener("pagehide",v);const R=()=>{document.visibilityState==="hidden"&&v()};document.addEventListener("visibilitychange",R);const H=h;return()=>{window.removeEventListener("beforeunload",v),window.removeEventListener("pagehide",v),document.removeEventListener("visibilitychange",R),J.current||D(!0),H.current&&clearTimeout(H.current)}},[D]);const xe=A(()=>a.setShowControls(!0),[a]),Te=a.toggleFullscreen,Le=A(()=>{a.togglePlay(),y(!0)},[a,y]),Ne=A(()=>{a.toggleMute(),y(!0)},[a,y]),Pe=A(v=>{a.seekRelative(v),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>D(!1,!0),1500),y(!0)},[a,D,y]),Be=A(()=>{J.current=!1,D(!1,!0)},[D]),Ae=A(()=>{y(!0),D(!1,!0)},[D,y]);F(()=>{J.current=!1,ne.current=-1,T.current=0,N.current=Math.random().toString(36).substring(2),a.reset()},[a,n,s]);const Ee=a.reset;F(()=>{const v=N.current;return()=>{pt(v)}},[a,n,s]),F(()=>{if(r!=="iframe")return;D(!1,!0);const v=setInterval(()=>{D(!1,!0)},6e4);return()=>clearInterval(v)},[r,D]);const Ie=A(()=>{const v=l.current;if(!v)return;const R=v.currentTime||0,H=Date.now(),w=ce(R,v.duration)&&!ce(ne.current,v.duration);(w||H-T.current>6e4)&&D(!1,w)&&(T.current=H);const W=e.find(Z=>R>=Z.start_time&&R<Z.end_time)||null;I(Z=>Z?.skip_id!==W?.skip_id?W:Z),$&&W&&!v.paused&&!a.getState().playbackLocked&&(a.seek(W.end_time),I(null))},[l,e,$,D,a]),$e=A(()=>{const v=re();v&&(v.currentTime=v.duration,ft.progress.updateProgress.mutate(v).then(()=>{i.invalidateQueries({queryKey:[U.playerData,n]}),i.invalidateQueries({queryKey:[U.videoSources,n,s]}),i.invalidateQueries({queryKey:[U.continueWatching]})}).catch(R=>console.error("Failed to send final progress:",R)))},[re,i,n,s]),Me=A(()=>{J.current=!0,$e()},[$e]),it=te(()=>({togglePlay:Le,seek:Pe,toggleMute:Ne,toggleFullscreen:Te,onPlay:Be,onPause:Ae,formatTime:ht,onTimeUpdate:Ie,onEnded:Me,setShowControls:y,setIsAutoSkipEnabled:q,setCurrentSkipInterval:I,setSubtitleFontSize:ge,setSubtitlePosition:ye,setSubtitleBgOpacity:_e,setSubtitleBgColor:be,setSubtitleTextColor:ve,setSubtitleEdge:Se,setSubtitleBold:we,setSubtitleStyle:Ce,setAvailableSubtitles:Ze,setActiveSubtitleTrack:tt,setShowSettings:rt,setShowVolumeSlider:at,flashControls:xe,sendProgressUpdate:D,setUseNativeControls:ke,resetMediaState:Ee}),[Le,Pe,Ne,Te,Be,Ae,Ie,Me,D,ke,Ee,xe,Ce,y]);return{engine:a,refs:{videoRef:l,playerContainerRef:B},state:{playbackLocked:g,isPlaying:b,isMuted:k,volume:_,isFullscreen:x,duration:E,showControls:m,isScrubbing:u,isAutoSkipEnabled:$,currentSkipInterval:K,subtitleFontSize:Ke,subtitlePosition:Ue,subtitleBgOpacity:Qe,subtitleBgColor:Ge,subtitleTextColor:je,subtitleEdge:Ye,subtitleBold:Xe,availableSubtitles:Je,activeSubtitleTrack:et,showSettings:nt,showVolumeSlider:st,isBuffering:p,isSpeedBoostActive:f,useNativeControls:ot},actions:it}};function Er(){try{return typeof navigator<"u"&&/android/i.test(navigator.userAgent)}catch{return!1}}function Cs(e,n){const{refs:s,actions:o}=e,r=C(n);r.current=n;const c=C(!1),i=C(!1),d=a=>{try{if(a)return a.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};F(()=>{if(!Er())return;let a=null;const l=()=>{const b=s.playerContainerRef.current;if(d(a)){if(!r.current||!b||ie(s.videoRef.current)||i.current)return;c.current=!0,o.toggleFullscreen()}else i.current=!1,c.current&&(c.current=!1,ie(s.videoRef.current)&&o.toggleFullscreen())};try{a=window.matchMedia("(orientation: landscape)"),a.addEventListener?a.addEventListener("change",l):a.addListener(l)}catch{}return l(),()=>{try{a&&(a.removeEventListener?a.removeEventListener("change",l):a.removeListener(l))}catch{}}},[o,s.playerContainerRef,s.videoRef,n]),F(()=>{const a=()=>{if(!ie(s.videoRef.current)){c.current=!1;try{window.matchMedia("(orientation: landscape)").matches&&(i.current=!0)}catch{i.current=!0}}};return document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a),()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a)}},[s.videoRef])}const Ir=e=>Math.max(8,Math.min(40,Math.ceil(e/16.7)+4));function ks({videoRef:e,canvasRef:n,delayMs:s,enabled:o}){const r=C(s);r.current=s;const c=C([]),i=C(-1),d=C(-1),a=C(!1),l=C(0),b=C(null);F(()=>{const k=f=>{if(f)try{f.close()}catch{}},_=()=>{for(const f of c.current)k(f.bitmap);c.current=[]};if(!o){_(),i.current=-1,d.current=-1,a.current=!1,l.current=0;return}let E=!1;const u=()=>{b.current!==null&&(cancelAnimationFrame(b.current),b.current=null)},p=()=>{E||(u(),b.current=requestAnimationFrame(()=>{x()}))};async function x(){if(E)return;const f=e.current,m=n.current;if(!f||!m||f.videoWidth===0){p();return}if(f.paused||f.ended||document.hidden||f.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){p();return}const g=f.getVideoPlaybackQuality().totalVideoFrames;if(g===i.current){p();return}(f.seeking||d.current>=0&&Math.abs(f.currentTime-d.current)>.5)&&(_(),a.current=!1,l.current=0,i.current=-1),d.current=f.currentTime,(m.width!==f.videoWidth||m.height!==f.videoHeight)&&(m.width=f.videoWidth,m.height=f.videoHeight);const B=Math.max(0,r.current||0);B>l.current&&(a.current=!1);try{const h=await createImageBitmap(f);if(E){k(h);return}i.current=g;const T=performance.now(),N=m.getContext("2d"),y=I=>{N&&N.drawImage(I,0,0,m.width,m.height)};if(B<=0){_(),a.current=!1,l.current=0,y(h),k(h),p();return}const $=c.current;$.push({bitmap:h,capture:T});const q=Ir(B);for(;$.length>q;)k($.shift()?.bitmap);let K=-1;for(let I=$.length-1;I>=0;I--)if(T-$[I].capture>=B){K=I;break}if(K!==-1){for(let z=0;z<K;z++)k($.shift()?.bitmap);const I=$.shift();I?(y(I.bitmap),k(I.bitmap),a.current=!0,l.current=B):y(h)}else if(!a.current)y(h);else{const I=$.shift();I?(y(I.bitmap),k(I.bitmap)):y(h)}}catch{}p()}return p(),()=>{E=!0,u();for(const f of c.current)try{f.bitmap.close()}catch{}c.current=[]}},[o,e,n])}const Oe=(e,n)=>{try{M.setItem("playerVideoDelayMs",String(e)),M.setItem("playerVideoDelayEnabled",String(n))}catch{}},qe=e=>{try{M.setItem("playerVideoDelayEnabled",String(e))}catch{}};function xs(e,n){const[s,o]=P(()=>{try{const g=Number(M.getItem("playerVideoDelayMs"));if(Number.isFinite(g)&&g>=0&&g<=500)return Math.round(g)}catch{}return 180}),[r,c]=P(()=>{try{return M.getItem("playerVideoDelayEnabled")==="true"}catch{return!1}}),[i,d]=P(!1),[a,l]=P(!1),b=C(null),k=C(null),_=g=>{const B=Math.max(0,Math.min(500,Math.round(g)));o(B);try{M.setItem("playerVideoDelayMs",String(B))}catch{}},E=g=>{c(g),qe(g)},u=A(()=>{l(!1),d(!1)},[]);return{videoDelayMs:s,videoDelayEnabled:r,setDelayEnabled:E,handleVideoDelayChange:_,isCalibrating:i,testClipActive:a,stopCalibration:u,openAvSyncCalibrator:()=>{b.current={enabled:r,ms:s},c(!0),qe(!0),n?.(),d(!0)},cancelAvSyncCalibrator:()=>{const g=b.current;b.current=null,g&&(o(g.ms),c(g.enabled),Oe(g.ms,g.enabled)),l(!1),d(!1)},applyAvSyncCalibrator:()=>{b.current=null,c(!0),Oe(s,!0),l(!1),d(!1)},toggleTestClip:()=>{if(a){l(!1);return}const g=e.current;g&&!isNaN(g.currentTime)&&(k.current=g.currentTime),l(!0)},calibReturnRef:k,effectiveVideoDelayMs:r?s:0}}function Ts(){const[e,n]=P(()=>{try{return M.getItem("playerTheaterMode")==="true"}catch{return!1}});F(()=>{try{e?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(r){console.error(r)}return()=>{try{document.body.classList.remove("theater-mode")}catch(r){console.error(r)}}},[e]);const s=A(()=>{n(r=>{const c=!r;try{M.setItem("playerTheaterMode",c.toString())}catch{}return c})},[]),o=A(r=>{if(e&&r.target===r.currentTarget){n(!1);try{M.setItem("playerTheaterMode","false")}catch{}}},[e]);return{isTheaterMode:e,toggleTheaterMode:s,handleLayoutClick:o}}const Y={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function $r(){try{const e=M.getItem("playerAmbientLight");if(!e)return Y;const n=JSON.parse(e),s=(o,r,c,i)=>{const d=Number(o);return Number.isFinite(d)?Math.max(c,Math.min(i,d)):r};return{enabled:n.enabled??Y.enabled,blur:s(n.blur,Y.blur,0,120),saturation:s(n.saturation,Y.saturation,0,200),brightness:s(n.brightness,Y.brightness,20,120),opacity:s(n.opacity,Y.opacity,10,100)}}catch{return Y}}function Ls(){const[e,n]=P($r),s=A(o=>{n(r=>{const c={...r,...o};try{M.setItem("playerAmbientLight",JSON.stringify(c))}catch{}return c})},[]);return{settings:e,update:s}}const Mr="_theaterAmbient_x9t0o_1",Rr={theaterAmbient:Mr},de=160,ue=90,Fr=120,Ns=({videoRef:e,active:n,settings:s,className:o})=>{const r=C(null);return F(()=>{if(!n)return;const c=r.current,i=e.current;if(!c||!i)return;const d=c.getContext("2d",{alpha:!1});if(!d)return;let a=0,l=0,b=!1;const k=()=>{if(!(i.readyState<2||!i.videoWidth))try{const p=i.videoWidth,x=i.videoHeight,f=de/ue,m=p/x;let g=p,B=x,h=0,T=0;m>f?(g=x*f,h=(p-g)/2):(B=p/f,T=(x-B)/2),d.drawImage(i,h,T,g,B,0,0,de,ue)}catch{}},_=p=>{b||i.paused||(a=requestAnimationFrame(_),!(p-l<Fr)&&(l=p,k()))},E=()=>{b||(cancelAnimationFrame(a),l=0,a=requestAnimationFrame(_))},u=()=>cancelAnimationFrame(a);return i.addEventListener("play",E),i.addEventListener("pause",u),i.addEventListener("seeked",k),i.addEventListener("loadeddata",k),a=requestAnimationFrame(_),()=>{b=!0,cancelAnimationFrame(a),i.removeEventListener("play",E),i.removeEventListener("pause",u),i.removeEventListener("seeked",k),i.removeEventListener("loadeddata",k)}},[n,e]),n?t("canvas",{ref:r,width:de,height:ue,"aria-hidden":"true",className:o??Rr.theaterAmbient,style:{filter:`blur(${s.blur}px) saturate(${s.saturation}%) brightness(${s.brightness}%)`,opacity:s.opacity/100}}):null},Dr="_row_1fq55_1",Or="_rowHeader_1fq55_9",qr="_rowLabel_1fq55_17",Hr="_rowValue_1fq55_28",zr="_slider_1fq55_36",Wr="_swatches_1fq55_99",Vr="_swatch_1fq55_99",Kr="_swatchPicked_1fq55_114",Ur="_colorInput_1fq55_120",Qr="_segmented_1fq55_131",O={row:Dr,rowHeader:Or,rowLabel:qr,rowValue:Hr,slider:zr,swatches:Wr,swatch:Vr,swatchPicked:Kr,colorInput:Ur,segmented:Qr},Gr=({label:e,display:n,min:s,max:o,step:r,value:c,percent:i,onChange:d,onCommit:a})=>t("div",{className:O.row,children:[t("div",{className:O.rowHeader,children:[t("span",{className:O.rowLabel,children:e}),t("span",{className:O.rowValue,children:n})]}),t("input",{type:"range",className:O.slider,min:s,max:o,step:r,value:c,"aria-label":e,"data-speed-boost-ignore":"true",onInput:l=>d(Number(l.target.value)),onMouseDown:l=>l.stopPropagation(),onPointerDown:l=>l.stopPropagation(),onTouchStart:l=>l.stopPropagation(),onPointerUp:a,onPointerCancel:a,onTouchEnd:a,onKeyUp:a,onBlur:a,style:{"--slider-percent":`${i}%`}})]}),Ps=({label:e,colors:n,value:s,onChange:o})=>t("div",{className:O.row,children:[t("div",{className:O.rowHeader,children:t("span",{className:O.rowLabel,children:e})}),t("div",{className:O.swatches,children:[n.map(r=>t("button",{type:"button","aria-label":`${e} ${r}`,"aria-pressed":s.toLowerCase()===r.toLowerCase(),onClick:()=>o(r),className:`${O.swatch} ${s.toLowerCase()===r.toLowerCase()?O.swatchPicked:""}`,style:{backgroundColor:r}},r)),t("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:O.colorInput,value:s,"data-speed-boost-ignore":"true",onInput:r=>o(r.target.value),onMouseDown:r=>r.stopPropagation(),onPointerDown:r=>r.stopPropagation(),onTouchStart:r=>r.stopPropagation()})]})]});function Bs({label:e,options:n,value:s,onChange:o}){return t("div",{className:O.row,children:[t("div",{className:O.rowHeader,children:t("span",{className:O.rowLabel,children:e})}),t("div",{className:O.segmented,role:"group","aria-label":e,children:n.map(r=>t("button",{type:"button","aria-pressed":s===r,onClick:()=>o(r),children:[t("span",{children:r}),s===r&&t(j,{name:"check",size:10})]},r))})]})}const oe=10,me=500,pe=e=>Math.max(0,Math.min(me,Math.round(e))),As=({isOpen:e,ms:n,onChange:s,onApply:o,onClose:r,testClipActive:c,onTestClip:i})=>e?t("div",{role:"dialog","aria-label":"Calibrate audio video sync","data-speed-boost-ignore":"true",onClick:d=>d.stopPropagation(),style:{position:"absolute",right:8,bottom:112,width:"min(260px, calc(100% - 16px))",maxHeight:"calc(100% - 124px)",overflowY:"auto",overflowX:"hidden",zIndex:60,display:"flex",flexDirection:"column",alignItems:"center",gap:8,padding:12,borderRadius:"var(--radius-lg)",border:"1px solid var(--glass-border)",background:"rgba(18, 18, 22, 0.95)",boxShadow:"var(--glass-shadow)",backdropFilter:"blur(14px)",WebkitBackdropFilter:"blur(14px)",boxSizing:"border-box"},children:[t("div",{style:{fontSize:"0.8rem",fontWeight:800,color:"var(--text-primary)"},children:"A/V sync"}),t("div",{children:t(X,{size:"sm",variant:"secondary",onClick:i,children:c?"Back to video":"Preview test clip"})}),t("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap"},children:[t(X,{size:"sm",onClick:()=>s(pe(n-oe)),"aria-label":"Decrease delay by 10 milliseconds",children:["− ",oe,"ms"]}),t("div",{style:{fontSize:"1.1rem",fontWeight:800,minWidth:64,textAlign:"center"},children:[n,"ms"]}),t(X,{size:"sm",onClick:()=>s(pe(n+oe)),"aria-label":"Increase delay by 10 milliseconds",children:["+ ",oe,"ms"]})]}),t(Gr,{label:"Video delay",display:`${n}ms`,min:0,max:me,step:5,value:n,percent:n/me*100,onChange:d=>s(pe(d))}),t("div",{style:{display:"flex",gap:8,justifyContent:"center",flexWrap:"wrap"},children:[t(X,{size:"sm",variant:"secondary",onClick:r,children:"Cancel"}),t(X,{size:"sm",onClick:o,children:["Apply ",n,"ms"]})]})]}):null;function Es({videoRef:e,sourceType:n,resetKey:s,onEnd:o}){const r=C(!1),c=C(o);c.current=o,F(()=>{r.current=!1},[s]);const i=A(()=>{const a=e.current?.duration;!a||!Number.isFinite(a)||console.info(`[playback] duration ${a.toFixed(2)}s`)},[e]);return{checkEnd:A((a=!1)=>{const l=e.current;!l||n==="iframe"||r.current||!a&&!kt(l.currentTime,l.duration)||(r.current=!0,console.info(`[playback] end reached at ${l.currentTime.toFixed(2)}s / ${l.duration.toFixed(2)}s`),c.current())},[n,e]),logDuration:i}}function Is(e,n,s){const o=mt(),r=C({watch:o,selection:n,loading:s});r.current={watch:o,selection:n,loading:s};const[c,i]=P(!1),d=C(""),a=C(""),l=C(""),b=C(!1),k=!!o.session&&!o.session.host;F(()=>(!o.session&&b.current&&e.applyRemotePlayback(void 0,!1,1),b.current=!!o.session,e.setPlaybackLocked(!!o.session&&(k||!o.connected)),o.session&&!o.connected&&e.applyRemotePlayback(void 0,!1,1),()=>e.setPlaybackLocked(!1)),[e,k,o.connected,o.session]);const _=A((E=!1)=>{const{watch:u,selection:p,loading:x}=r.current,f=e.mediaRef.current;if(!u.session||!u.room||!f)return;if(u.session.host){u.connected&&u.selfId!==l.current&&!x&&p&&f.readyState>=1&&(l.current=u.selfId,Fe(p,u.room.selection)&&e.applyRemotePlayback(u.room.position,!1,u.room.rate));return}const m=u.room,g=p&&Fe(p,m.selection);if(!u.connected||x||!g||f.readyState<1){e.applyRemotePlayback(void 0,!1,m.rate);return}const B=Date.now()+u.clock.offset-m.updatedAt<15e3;if(m.playing&&!B){e.applyRemotePlayback(void 0,!1,m.rate);return}const h=m.playing&&m.hostOnline&&B,T=Math.min(f.duration||1/0,gt({...m,playing:h},Date.now()+u.clock.offset)),N=T-f.currentTime,y=Math.abs(N)>(h?1.25:.15),$=h&&!y&&Math.abs(N)>.15?Math.min(4,Math.max(.25,m.rate*(N>0?1.03:.97))):m.rate,q=e.getState().playBlocked;e.applyRemotePlayback(y?T:void 0,h&&(!q||E),$),i(q&&h)},[e]);return F(()=>{if(!o.session)return;const E=()=>{const{watch:h,selection:T,loading:N}=r.current,y=e.mediaRef.current;if(!h.connected||!h.session?.host||!h.room)return;if(!T||N||!y||y.readyState<1){h.room.playing&&h.send({type:"update",...h.room,playing:!1});return}_();const $=e.getState(),q=!y.paused&&!y.ended&&!$.isBuffering,K={type:"update",selection:T,position:y.currentTime+(q?h.clock.latency/1e3*y.playbackRate:0),playing:q,rate:y.playbackRate},I=JSON.stringify(K);!q&&a.current===I||(a.current=I,h.send(K))},u=()=>{const{watch:h,selection:T,loading:N}=r.current,y=e.getState(),$=e.mediaRef.current,q=y.error||!N&&!T?"error":y.playBlocked?"blocked":N||!$||$.readyState<1?"loading":y.isBuffering?"buffering":"ready";h.connected&&`${h.selfId}:${q}`!==d.current&&(d.current=`${h.selfId}:${q}`,h.send({type:"status",status:q})),_()};let p=null;const x=["play","pause","seeked","ratechange","playing","waiting","canplay","ended"];let f;const m=()=>{clearTimeout(f),f=setTimeout(E,100)},g=setInterval(()=>{const h=e.mediaRef.current;p!==h&&(x.forEach(T=>p?.removeEventListener(T,m)),p=h,x.forEach(T=>p?.addEventListener(T,m))),u()},500),B=setInterval(E,3e3);return()=>{clearInterval(g),clearInterval(B),clearTimeout(f),x.forEach(T=>p?.removeEventListener(T,m));const{watch:h}=r.current;h.session?.host&&h.room&&h.connected&&h.send({type:"update",...h.room,playing:!1,position:e.mediaRef.current?.currentTime??h.room.position})}},[e,o.session,_]),F(()=>{_()},[o.room,o.connected,n,s,_]),{needsPlayback:c,enablePlayback:()=>_(!0)}}export{Ns as A,cs as B,ms as C,Bs as D,bs as E,Q as F,Y as G,Gr as M,gs as P,fs as R,Ps as S,is as T,hs as a,Ss as b,rs as c,ss as d,us as e,ls as f,os as g,Is as h,xs as i,ks as j,Ts as k,Es as l,Cs as m,Ls as n,ns as o,ys as p,ps as q,as as r,Wn as s,hr as t,ws as u,ts as v,As as w,_s as x,vs as y,ds as z};