@serifpersia/dango 3.8.3 → 3.8.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.
- package/README.md +1 -1
- package/client/dist/assets/{AnimeCard-Dc6uPr1B.js → AnimeCard-arsIYutf.js} +1 -1
- package/client/dist/assets/{AnimeInfo-BkT4v_EB.js → AnimeInfo-BN0BBGoL.js} +1 -1
- package/client/dist/assets/{AnimeInfoPage-CvGOUt7G.js → AnimeInfoPage-BKWRJ_zM.js} +2 -2
- package/client/dist/assets/{Asmr-CaO_2wxo.js → Asmr-D841iN7S.js} +2 -2
- package/client/dist/assets/AsmrPopup-bQNRqp8U.js +1 -0
- package/client/dist/assets/AsmrResetProgressModal-CJlLLxvJ.js +1 -0
- package/client/dist/assets/Home-DtWNcknh.js +1 -0
- package/client/dist/assets/Home-DtY1sufI.css +1 -0
- package/client/dist/assets/Insights-BFEOElox.js +1 -0
- package/client/dist/assets/Insights-DEicrokg.css +1 -0
- package/client/dist/assets/{LibraryListPage-0IybQgPU.js → LibraryListPage-Cvu0K3yT.js} +1 -1
- package/client/dist/assets/ListeningList-BBCPOGtc.js +1 -0
- package/client/dist/assets/{Manga-B4p5dXe8.js → Manga-BzwrwVRY.js} +1 -1
- package/client/dist/assets/{MangaInfoPage-DR2_2eve.js → MangaInfoPage-C9_jlomp.js} +1 -1
- package/client/dist/assets/{MangaReadPage-CC72GY9L.js → MangaReadPage-dlV9ruge.js} +1 -1
- package/client/dist/assets/{MangaResetProgressModal-ojbIsaI7.js → MangaResetProgressModal-C2audSPT.js} +1 -1
- package/client/dist/assets/{Mature-C1PCMe3g.js → Mature-DCY32pCd.js} +1 -1
- package/client/dist/assets/{MatureConsentModal-BTJloHUV.js → MatureConsentModal-zk8Ir04J.js} +1 -1
- package/client/dist/assets/{MediaCard-wcV5T3yJ.js → MediaCard-ByXxG9l_.js} +1 -1
- package/client/dist/assets/{OptionListMenu-CFBJv5e-.js → OptionListMenu-BMdGIbak.js} +1 -1
- package/client/dist/assets/Player-B8NgcAaG.js +56 -0
- package/client/dist/assets/{PlayerProvider-DjIXyFBk.js → PlayerProvider-BplcfsxC.js} +1 -1
- package/client/dist/assets/{PlayerSettings-B37kxh6A.js → PlayerSettings-I5qwh2dG.js} +1 -1
- package/client/dist/assets/{QueueOptionsButton-D0LpFAJe.js → QueueOptionsButton-CgPjlxhd.js} +1 -1
- package/client/dist/assets/{QueueRail-D4qxAKBU.js → QueueRail-56BRY_9J.js} +1 -1
- package/client/dist/assets/{ReadingList-B6pULeSS.js → ReadingList-C3S-oiZU.js} +1 -1
- package/client/dist/assets/{ResetProgressModal-Dq6yudb6.js → ResetProgressModal-CZN-19N0.js} +1 -1
- package/client/dist/assets/{Search-B2C2_KM4.js → Search-BK-3izwR.js} +1 -1
- package/client/dist/assets/Settings-C3A9xzAC.js +21 -0
- package/client/dist/assets/Settings-CXUYiXJY.css +1 -0
- package/client/dist/assets/{SkeletonGrid-TIfa7-R8.js → SkeletonGrid-DWlQpD8M.js} +1 -1
- package/client/dist/assets/{Trackers-ChrW-D2i.js → Trackers-BTgn2ubb.js} +1 -1
- package/client/dist/assets/{Tv-BNc7ujCX.js → Tv-CtiQrS7_.js} +1 -1
- package/client/dist/assets/{TvInfo-k9u9Pxa3.js → TvInfo-Bx4weneQ.js} +1 -1
- package/client/dist/assets/{TvPopup-e7OkKs6q.js → TvPopup-Bo-3peif.js} +1 -1
- package/client/dist/assets/{TvSearch-BP-0VIrE.js → TvSearch-Bzw_N9vB.js} +1 -1
- package/client/dist/assets/{TvWatchlist-Yv8Qc4lj.js → TvWatchlist-DoMAHoqZ.js} +1 -1
- package/client/dist/assets/VirtualKeyboard-B3STwvzu.js +1 -0
- package/client/dist/assets/VirtualKeyboard-CejCi3pJ.css +1 -0
- package/client/dist/assets/{WatchAlong-Dt5_kNJg.js → WatchAlong-I0zNTgQi.js} +1 -1
- package/client/dist/assets/{WatchAlongPanel-DTjl8tog.js → WatchAlongPanel-DuGnVVja.js} +1 -1
- package/client/dist/assets/{Watchlist-BvbY9oBd.js → Watchlist-raSYd6jM.js} +1 -1
- package/client/dist/assets/index-BYIvl7ZE.css +1 -0
- package/client/dist/assets/index-CNEFXey-.js +178 -0
- package/client/dist/assets/{libraryInvalidation-BirscVrS.js → libraryInvalidation-FFJuBJjR.js} +1 -1
- package/client/dist/assets/{playbackCompletion-C8izYMOL.js → playbackCompletion-UNMxJNR7.js} +1 -1
- package/client/dist/assets/{useAnimeInfoData-C60IXLN5.js → useAnimeInfoData-C0IMDPmT.js} +1 -1
- package/client/dist/assets/useAsmrPopup-BBmHrx9v.js +1 -0
- package/client/dist/assets/{useMangaLibrary-ClgxldD8.js → useMangaLibrary-CzC0997w.js} +1 -1
- package/client/dist/assets/{useMangaPopup-D4ItPSfW.js → useMangaPopup-D3j5_GPW.js} +1 -1
- package/client/dist/assets/{useProviders-DVv7j4AK.js → useProviders-UrTAFdZ7.js} +1 -1
- package/client/dist/assets/{useTv-BUu6RG6F.js → useTv-218EB7PR.js} +1 -1
- package/client/dist/assets/{useTvLibrary-DnKiDhxZ.js → useTvLibrary-Dw8dk1-X.js} +1 -1
- package/client/dist/assets/useWatchAlongPlayer-CTG8hA81.js +10 -0
- package/client/dist/index.html +2 -2
- package/package.json +2 -2
- package/server/dist/server.js +144 -144
- package/server/package.json +1 -1
- package/client/dist/assets/AsmrResetProgressModal-h35ZX9OW.js +0 -1
- package/client/dist/assets/Home-CHKpLQLZ.js +0 -1
- package/client/dist/assets/Home-DINyLUCh.css +0 -1
- package/client/dist/assets/Insights-CA_1302g.js +0 -1
- package/client/dist/assets/Insights-D0qrep0K.css +0 -1
- package/client/dist/assets/ListeningList-Cn1z8o3k.js +0 -1
- package/client/dist/assets/Player-MJJ6fHc4.js +0 -56
- package/client/dist/assets/Settings-D37LNfis.css +0 -1
- package/client/dist/assets/Settings-DQHfH5Ba.js +0 -21
- package/client/dist/assets/VirtualKeyboard-BaUll8Yv.css +0 -1
- package/client/dist/assets/VirtualKeyboard-Cqj3Id2l.js +0 -1
- package/client/dist/assets/index-BR99iwWT.js +0 -178
- package/client/dist/assets/index-CoCvEAx6.css +0 -1
- package/client/dist/assets/useAsmr-yVlXiVJj.js +0 -1
- package/client/dist/assets/useAsmrPopup-Do0bqxew.js +0 -1
- package/client/dist/assets/useWatchAlongPlayer-hjLY2hHu.js +0 -10
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{u as t,A as w,q as E,h as j,d as P,T as te,$ as ct}from"./vendor-core-DfaOB3Rn.js";import{p as M,L as qe,B as Y,$ as se,l as lt,aa as Re,q as K,a6 as dt,t as ut,g as pt,a2 as ft,ab as je,ac as ht}from"./index-BR99iwWT.js";import{I as X}from"./vendor-icons-DrybRNxP.js";import{S as Fe,a as mt,s as Q,f as He,m as yt,h as bt,d as gt,k as _t,u as vt,n as ie}from"./PlayerProvider-DjIXyFBk.js";import{u as St}from"./vendor-query-BBT5_sHx.js";import{i as ce,a as wt}from"./playbackCompletion-C8izYMOL.js";const Ct="_controls_pcbjf_1",kt="_titleContainer_pcbjf_9",xt="_scheduleInfo_pcbjf_15",Tt="_status_pcbjf_23",Lt="_nextEpisode_pcbjf_35",Nt="_watchlistBtn_pcbjf_45",Pt="_inList_pcbjf_72",Bt="_queueBtn_pcbjf_83",Et="_queueActive_pcbjf_95",At="_modeToggleBtn_pcbjf_101",$t="_modeToggleActive_pcbjf_108",It="_markWatchedBtn_pcbjf_129",Mt="_markWatchedDone_pcbjf_143",Rt="_streamPanel_pcbjf_154",jt="_desktopEpisodeActions_pcbjf_168",Ft="_sourceLoader_pcbjf_174",Dt="_episodeActions_pcbjf_187",Ot="_mobileEpisodeActions_pcbjf_201",qt="_episodeNavBtn_pcbjf_205",Ht="_primary_pcbjf_235",Wt="_secondary_pcbjf_245",zt="_episodePickerBtn_pcbjf_249",Vt="_queueCountdown_pcbjf_253",Kt="_speedBoostBadge_pcbjf_268",Ut="_videoContainer_pcbjf_299",Qt="_loadingOverlay_pcbjf_312",Gt="_loadingDots_pcbjf_326",Yt="_dot_pcbjf_331",Xt="_bounce_pcbjf_1",Jt="_bufferingOverlay_pcbjf_348",Zt="_bufferingSpinner_pcbjf_357",er="_spin_pcbjf_444",tr="_videoIframe_pcbjf_366",rr="_videoElementHidden_pcbjf_389",nr="_upscalerCanvas_pcbjf_394",sr="_upscalerActive_pcbjf_407",ar="_upscalerStatusBadge_pcbjf_411",or="_subtitleOverlay_pcbjf_426",ir="_spinner_pcbjf_444",cr="_errorOverlay_pcbjf_505",lr="_retryButton_pcbjf_515",dr="_detailsToggleBtn_pcbjf_528",ur="_descriptionSection_pcbjf_551",pr="_synopsisFlat_pcbjf_559",fr="_fullscreenActive_pcbjf_593",hr="_errorSubtext_pcbjf_636",Qn={controls:Ct,titleContainer:kt,scheduleInfo:xt,status:Tt,nextEpisode:Lt,watchlistBtn:Nt,inList:Pt,queueBtn:Bt,queueActive:Et,modeToggleBtn:At,modeToggleActive:$t,markWatchedBtn:It,markWatchedDone:Mt,streamPanel:Rt,desktopEpisodeActions:jt,sourceLoader:Ft,episodeActions:Dt,mobileEpisodeActions:Ot,episodeNavBtn:qt,primary:Ht,secondary:Wt,episodePickerBtn:zt,queueCountdown:Vt,speedBoostBadge:Kt,videoContainer:Ut,loadingOverlay:Qt,loadingDots:Gt,dot:Yt,bounce:Xt,bufferingOverlay:Jt,bufferingSpinner:Zt,spin:er,videoIframe:tr,videoElementHidden:rr,upscalerCanvas:nr,upscalerActive:sr,upscalerStatusBadge:ar,subtitleOverlay:or,spinner:ir,errorOverlay:cr,retryButton:lr,detailsToggleBtn:dr,descriptionSection:ur,synopsisFlat:pr,fullscreenActive:fr,errorSubtext:hr},mr="_playerPageLayout_13s1u_1",yr="_noSidebar_13s1u_15",br="_episodeSidebar_13s1u_19",gr="_playerMain_13s1u_32",_r="_videoPlayerWrapper_13s1u_40",vr="_playerInfoHeader_13s1u_56",Sr="_playerAnimeCard_13s1u_62",wr="_playerInfoContainer_13s1u_74",Cr="_infoColumns_13s1u_86",kr="_videoTitleSection_13s1u_114",xr="_theaterMode_13s1u_288",Gn={playerPageLayout:mr,noSidebar:yr,episodeSidebar:br,playerMain:gr,videoPlayerWrapper:_r,playerInfoHeader:vr,playerAnimeCard:Sr,playerInfoContainer:wr,infoColumns:Cr,videoTitleSection:kr,theaterMode:xr},Tr={fontSize:"subtitleFontSize",position:"subtitlePosition",bgOpacity:"subtitleBgOpacity",bgColor:"subtitleBgColor",textColor:"subtitleTextColor",edge:"subtitleEdge",bold:"subtitleBold"},U={fontSize:1.8,position:0,bgOpacity:.5,bgColor:"#000000",textColor:"#ffffff",edge:"shadow",bold:!1},fe=(e,r,s)=>Math.max(r,Math.min(s,e)),he=e=>typeof e=="string"&&/^#[0-9a-fA-F]{6}$/.test(e),le=(e,r,s,o)=>{try{const n=M.getItem(e);if(n===null)return r;const i=parseFloat(n);return Number.isFinite(i)?fe(i,s,o):r}catch{return r}};function Lr(){let e=U.edge,r=U.bgColor,s=U.textColor,o=U.bold;try{const n=M.getItem("subtitleEdge");(n==="shadow"||n==="outline"||n==="none")&&(e=n);const i=M.getItem("subtitleBgColor");he(i)&&(r=i);const c=M.getItem("subtitleTextColor");he(c)&&(s=c);const p=M.getItem("subtitleBold");p!==null&&(o=p==="true")}catch{}return{fontSize:le("subtitleFontSize",U.fontSize,.5,10),position:le("subtitlePosition",U.position,0,100),bgOpacity:le("subtitleBgOpacity",U.bgOpacity,0,1),bgColor:r,textColor:s,edge:e,bold:o}}function We(e,r){const s=`rgba(0, 0, 0, ${fe(r,0,1)})`;if(!he(e))return s;const o=parseInt(e.slice(1,3),16),n=parseInt(e.slice(3,5),16),i=parseInt(e.slice(5,7),16);return`rgba(${o}, ${n}, ${i}, ${fe(r,0,1)})`}function ze(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 Yn(e){return`
|
|
2
|
-
video::cue {
|
|
3
|
-
font-size: ${e.fontSize}rem !important;
|
|
4
|
-
color: ${e.textColor} !important;
|
|
5
|
-
background-color: ${We(e.bgColor,e.bgOpacity)} !important;
|
|
6
|
-
font-weight: ${e.bold?"bold":"normal"} !important;
|
|
7
|
-
text-shadow: ${ze(e.edge,e.bgOpacity)} !important;
|
|
8
|
-
}
|
|
9
|
-
`}function Xn(e){return[`font-size: ${e.fontSize}rem`,`color: ${e.textColor}`,`background-color: ${We(e.bgColor,e.bgOpacity)}`,`font-weight: ${e.bold?"700":"400"}`,`text-shadow: ${ze(e.edge,e.bgOpacity)}`,"padding: 0.2em 0.5em","border-radius: 0.25em","text-align: center","position: absolute","left: 50%","transform: translateX(-50%)","max-width: 92%","white-space: pre-wrap","overflow-wrap: break-word","line-height: 1.4"].join(`;
|
|
10
|
-
`)+";"}const Nr=new Set(["b","i","u","strong","em"]);function Jn(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/<(\/?)([a-zA-Z]+)>/g,(s,o,n)=>Nr.has(n.toLowerCase())?`<${o}${n.toLowerCase()}>`:s)}function Zn(e){return e.replace(/<[^>]*>/g,"")}const es=["#ffffff","#ffff00","#7CFC00","#00e5ff","#ff9ff3","#ffa502"],ts=["#000000","#1e272e","#2f3542","#3d0c02","#0c3d2e","#ffffff"];function rs(e,r){const s=Number.isFinite(e)?e*16:U.fontSize*16;return!Number.isFinite(r)||r<=0?s/16:Math.min(s,Math.max(13,r*.07))/16}function ns(e){const r=Math.abs(e/1e3).toFixed(1);return e>0?`+${r}s`:e<0?`-${r}s`:"0.0s"}function ss(e,r){const s=e.clientWidth||0,o=e.clientHeight||0,n=e.videoWidth>0&&e.videoHeight>0?e.videoWidth/e.videoHeight:0;let i=o;n>0&&s>0&&o>0&&(i=s/o>n?o:s/n);const c=Math.max(0,(o-i)/2),p=Math.max(0,Math.min(100,Number(r)||0))/100*i;return c+p}const as=({isOpen:e,onClose:r,title:s,heading:o,message:n,children:i})=>t(qe,{isOpen:e,onClose:r,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t(X,{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:n}),i&&t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center",flexWrap:"wrap"},children:i})]})}),os=({isOpen:e,onClose:r,title:s,message:o,resumeLabel:n="Resume",restartLabel:i="Start Over",onResume:c,onRestart:p})=>t(qe,{isOpen:e,onClose:r,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(Y,{variant:"secondary",onClick:p,children:i}),t(Y,{onClick:c,children:n})]})]})}),Pr="_centerControls_1oa5h_1",Br="_centerSkipBtn_1oa5h_14",Er="_centerPlayPause_1oa5h_15",ae={centerControls:Pr,centerSkipBtn:Br,centerPlayPause:Er},is=()=>t("div",{className:ae.centerControls,onClick:e=>e.stopPropagation(),children:[t(Fe,{seconds:-10,className:ae.centerSkipBtn}),t(mt,{className:ae.centerPlayPause,"data-speed-boost-ignore":"true"}),t(Fe,{seconds:10,className:ae.centerSkipBtn})]}),cs=({visible:e,title:r,episode:s,server:o,mode:n,audio:i,subtitles:c,onBack:p,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:u=>u.stopPropagation(),children:[t("button",{className:a.backBtn,onClick:u=>{u.stopPropagation(),p()},title:"Back","aria-label":"Back",children:t(X,{name:"chevron-left"})}),t("div",{className:`${a.titleInfo} ${Q.topBarTitleInfo}`,children:[t("span",{className:a.title,children:r}),s&&t("span",{className:a.episode,children:s}),(n||o||i||c)&&t("div",{className:Q.streamDetails,children:[n&&t("span",{className:Q.modeTag,children:n.toUpperCase()}),o&&t("span",{title:`Server: ${o}`,children:["Server: ",o]}),i&&t("span",{title:`Audio: ${i}`,children:["Audio: ",i]}),c&&t("span",{title:`Subs: ${c}`,children:["Subs: ",c]})]})]})]})});function Ar(e){return e instanceof Element&&!!e.closest('button, input, select, textarea, a, [role="button"], [role="slider"], [data-player-ui="true"]')}function ls({engine:e,topBar:r,centerControls:s,bottomBar:o,settingsPanel:n,overlays:i,isInteracting:c=!1,nativeControls:p=!1,chromeDisabled:a=!1,className:u,onStageClick:_,children:x}){const g=He(e),A=yt(),l=w(void 0),d=w(void 0),C=w(0),f=w(c);f.current=c;const m=E(()=>{clearTimeout(l.current),l.current=void 0},[]),y=E(()=>{m();const N=e.getState();!N.isPlaying||N.isScrubbing||f.current||p||(l.current=setTimeout(()=>{const b=e.getState();f.current||b.isScrubbing||!b.isPlaying||e.setShowControls(!1)},A?5e3:3e3))},[e,A,p,m]),B=E(()=>{e.setShowControls(!0),y()},[e,y]);bt(e,B,!p&&!a),j(()=>(c||g.isScrubbing||!g.isPlaying?(e.setShowControls(!0),m()):y(),m),[e,c,g.isPlaying,g.isScrubbing,g.showControls,m,y]),j(()=>()=>{clearTimeout(d.current)},[]);const h=N=>{if(Ar(N.target)||p||a)return;_?.();const b=Date.now();if(b-C.current<280){clearTimeout(d.current),d.current=void 0,C.current=0,e.toggleFullscreen();return}C.current=b,clearTimeout(d.current),d.current=setTimeout(()=>{d.current=void 0,e.setShowControls(!e.getState().showControls),y()},280)},T=g.showControls||g.isScrubbing||c||!g.isPlaying;return t(gt,{engine:e,children:t("div",{ref:e.containerRef,"data-player-root":"true",className:`${Q.shell} ${g.isFullscreen?Q.shellFullscreen:""} ${u??""}`,style:{cursor:!T&&g.isFullscreen?"none":"default"},onContextMenu:N=>N.preventDefault(),onPointerMove:N=>{N.pointerType==="mouse"&&B()},onFocusIn:B,onMouseLeave:()=>{window.matchMedia?.("(hover: hover) and (pointer: fine)").matches&&e.getState().isPlaying&&!f.current&&e.setShowControls(!1)},children:[t("div",{className:Q.stage,onClick:h,children:x}),i,(g.error||g.playBlocked)&&t("div",{className:Q.engineStatus,"data-player-ui":"true",children:t(_t,{})}),!a&&!p&&t("div",{className:Q.uiLayer,children:[t("div",{"data-player-ui":"true",children:r}),T&&s&&t("div",{"data-player-ui":"true",children:s}),t("div",{"data-player-ui":"true",children:o}),n&&t("div",{"data-player-ui":"true",children:n})]})]})})}const $r=e=>(e.language??e.lang??"").toLowerCase(),Ir=e=>(e.label??"").toLowerCase(),Mr=e=>`${e.language??e.lang??""}|||${e.label??""}`,Rr=e=>$r(e).startsWith("en")||Ir(e).includes("english");function ds(e,r){if(e.length===0||r?.enabled===!1)return-1;const s=r?.lastKey??null;if(s){const n=e.findIndex(i=>Mr(i)===s);if(n>=0)return n}const o=e.findIndex(Rr);return o>=0?o:0}const jr="_statusArea_1xccu_1",Fr="_toggleBtn_1xccu_20",Dr="_shortcuts_1xccu_46",Or="_shortcutGroup_1xccu_56",qr="_shortcut_1xccu_46",Hr="_key_1xccu_70",Wr="_label_1xccu_91",k={statusArea:jr,toggleBtn:Fr,shortcuts:Dr,shortcutGroup:Or,shortcut:qr,key:Hr,label:Wr},us=({showTheater:e=!0})=>{const[r,s]=P(!1);return t("div",{className:k.statusArea,children:[t("button",{type:"button",className:k.toggleBtn,onClick:()=>s(o=>!o),"aria-expanded":r,"aria-controls":"player-shortcuts",children:[t(X,{name:"keyboard",size:14}),t("span",{children:"Keyboard Shortcuts"}),r?t(X,{name:"chevron-up",size:12}):t(X,{name:"chevron-down",size:12})]}),r&&t("div",{id:"player-shortcuts",className:k.shortcuts,children:[t("div",{className:k.shortcutGroup,children:[t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"↑"}),t("span",{className:k.key,children:"↓"}),t("span",{className:k.label,children:"Volume"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"←"}),t("span",{className:k.key,children:"→"}),t("span",{className:k.label,children:"Seek"})]})]}),t("div",{className:k.shortcutGroup,children:[t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"Space"}),t("span",{className:k.label,children:"Play/Pause"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"F"}),t("span",{className:k.label,children:"Fullscreen"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"M"}),t("span",{className:k.label,children:"Mute"})]}),e&&t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"T"}),t("span",{className:k.label,children:"Theater"})]}),t("div",{className:k.shortcut,children:[t("span",{className:k.key,children:"N"}),t("span",{className:k.label,children:"Next"})]})]})]})]})},zr="_episodeListContainer_9tyin_1",Vr="_drawerContainer_9tyin_9",Kr="_episodeListHeader_9tyin_14",Ur="_drawerHeader_9tyin_20",Qr="_episodeListTitle_9tyin_29",Gr="_rangeSelector_9tyin_41",Yr="_rangeButton_9tyin_47",Xr="_active_9tyin_70",Jr="_episodeList_9tyin_1",Zr="_drawerList_9tyin_89",en="_episodeItem_9tyin_118",tn="_watched_9tyin_145",rn="_episodeThumb_9tyin_167",nn="_episodeText_9tyin_176",sn="_episodeLabel_9tyin_184",an="_episodeSub_9tyin_189",L={episodeListContainer:zr,drawerContainer:Vr,episodeListHeader:Kr,drawerHeader:Ur,episodeListTitle:Qr,rangeSelector:Gr,rangeButton:Yr,active:Xr,episodeList:Jr,drawerList:Zr,episodeItem:en,watched:tn,episodeThumb:rn,episodeText:nn,episodeLabel:sn,episodeSub:an},on=({episodes:e,currentEpisode:r,watchedEpisodes:s=[],onEpisodeClick:o,variant:n="sidebar",title:i="Episodes",header:c})=>{const[p,a]=P(0),u=w(null),_=te(()=>e.map(l=>typeof l=="string"?{id:l,label:`Episode ${l}`}:l),[e]),x=te(()=>new Set(s),[s]);j(()=>{const l=u.current;if(!l)return;let d=l.parentElement;for(;d;){const m=window.getComputedStyle(d);if((m.overflowY==="auto"||m.overflowY==="scroll")&&d.scrollHeight>d.clientHeight)break;d=d.parentElement}if(!d)return;const C=d.getBoundingClientRect(),f=l.getBoundingClientRect();d.scrollTop+=f.top+f.height/2-(C.top+d.clientHeight/2)},[r,p]);const g=te(()=>{if(_.length<=100)return[];const l=[];for(let d=0;d<_.length;d+=100){const C=d+1,f=Math.min(d+100,_.length);l.push(`${C}-${f}`)}return l},[_]),A=te(()=>{if(g.length===0)return _;const l=g[p];if(!l)return _;const[d,C]=l.split("-"),f=parseInt(d,10),m=parseInt(C,10);return _.slice(f-1,m)},[_,g,p]);return t("div",{className:`${L.episodeListContainer} ${n==="drawer"?L.drawerContainer:""}`,children:[t("div",{className:`${L.episodeListHeader} ${n==="drawer"?L.drawerHeader:""}`,children:[c,t("h3",{className:L.episodeListTitle,children:i}),g.length>0&&t("div",{className:L.rangeSelector,children:g.map((l,d)=>t("button",{className:`${L.rangeButton} ${p===d?L.active:""}`,onClick:()=>a(d),children:l},l))})]}),t("div",{className:`${L.episodeList} ${n==="drawer"?L.drawerList:""}`,children:A.map(l=>{const d=l.id===r,C=x.has(l.id)||l.watched===!0;return t("div",{ref:d?u:void 0,className:`${L.episodeItem} ${C?L.watched:""} ${d?L.active:""}`,onClick:()=>o(l.id),children:[l.thumbnail&&t("img",{src:l.thumbnail,alt:"",loading:"lazy",decoding:"async",className:L.episodeThumb}),t("span",{className:L.episodeText,children:[t("span",{className:L.episodeLabel,children:l.label??`Episode ${l.id}`}),l.sublabel&&t("span",{className:L.episodeSub,children:l.sublabel})]})]},l.id)})})]})},ps=({variant:e="sidebar",count:r=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:r}).map((s,o)=>t("div",{className:L.episodeItem,style:{border:"none",background:"transparent"},children:t(se,{width:"120px",height:"1.2rem",variant:"text"})},o))})]}),cn="_shell_cys6s_1",ln="_overlay_cys6s_10",dn="_drawer_cys6s_21",un="_handle_cys6s_56",pn="_header_cys6s_64",fn="_headerCopy_cys6s_73",hn="_kicker_cys6s_79",mn="_title_cys6s_87",yn="_closeBtn_cys6s_94",bn="_body_cys6s_116",z={shell:cn,overlay:ln,drawer:dn,handle:un,header:pn,headerCopy:fn,kicker:hn,title:mn,closeBtn:yn,body:bn};function fs({isOpen:e,onClose:r,episodes:s,currentEpisode:o,watchedEpisodes:n=[],onEpisodeClick:i,title:c,header:p}){return j(()=>{if(!e)return;const a=_=>{_.key==="Escape"&&r()},u=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",a),()=>{document.body.style.overflow=u,document.removeEventListener("keydown",a)}},[e,r]),e?ct(t("div",{className:z.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[t("button",{className:z.overlay,type:"button",onClick:r,"aria-label":"Close episodes"}),t("aside",{className:z.drawer,children:[t("div",{className:z.handle}),t("div",{className:z.header,children:[t("div",{className:z.headerCopy,children:[t("span",{className:z.kicker,children:"Episode picker"}),t("h3",{className:z.title,children:"Choose an episode"})]}),t("button",{className:z.closeBtn,type:"button",onClick:r,"aria-label":"Close",children:t(X,{name:"times"})})]}),t("div",{className:z.body,children:t(on,{episodes:s,currentEpisode:o,watchedEpisodes:n,onEpisodeClick:i,variant:"drawer",title:c,header:p})})]})]}),document.body):null}const gn="_sourceSelectionContainer_1am19_1",_n="_providerSelectContainer_1am19_14",vn="_providerSelect_1am19_14",Sn="_sourceSelect_1am19_1",wn="_sourceButtons_1am19_70",Cn="_sourceButton_1am19_70",kn="_active_1am19_95",hs={sourceSelectionContainer:gn,providerSelectContainer:_n,providerSelect:vn,sourceSelect:Sn,sourceButtons:wn,sourceButton:Cn,active:kn},ms=({skipIntervals:e,showId:r,episodeNumber:s,episodeCount:o,sourceType:n,showMeta:i})=>{const c=St(),p=lt(),{engine:a,mediaRef:u}=vt({volumeKey:"playerVolume",mutedKey:"playerMuted"}),{isPlaying:_,isMuted:x,volume:g,duration:A,isScrubbing:l,isBuffering:d,isFullscreen:C,isSpeedBoostActive:f,showControls:m,playbackLocked:y}=He(a),B=a.containerRef,h=w(null),T=w(0),N=w(Math.random().toString(36).substring(2)),b=a.setShowControls,[I,O]=P(M.getItem("autoSkipEnabled")==="true"),[V,$]=P(null),[H]=P(Lr),[Ve,ye]=P(H.fontSize),[Ke,be]=P(H.position),[Ue,ge]=P(H.bgOpacity),[Qe,_e]=P(H.bgColor),[Ge,ve]=P(H.textColor),[Ye,Se]=P(H.edge),[Xe,we]=P(H.bold),Ce=E((v,R)=>{if({fontSize:S=>typeof S!="number"?!1:(ye(S),!0),position:S=>typeof S!="number"?!1:(be(S),!0),bgOpacity:S=>typeof S!="number"?!1:(ge(S),!0),bgColor:S=>typeof S!="string"?!1:(_e(S),!0),textColor:S=>typeof S!="string"?!1:(ve(S),!0),edge:S=>S!=="shadow"&&S!=="outline"&&S!=="none"?!1:(Se(S),!0),bold:S=>typeof S!="boolean"?!1:(we(S),!0)}[v](R))try{M.setItem(Tr[v],String(R))}catch{}},[]),[Je,Ze]=P([]),[et,tt]=P(null),[rt,nt]=P(!1),[st,at]=P(!1),[ot,ke]=P(()=>{try{return M.getItem("playerUseNativeControls")==="true"}catch{return!1}}),J=w(!1),re=w(-1),ne=E(()=>{const v=u.current;return!r||!s||!i?.name?null:{showId:r,episodeNumber:s,episodeCount:o,currentTime:a.getTimeline().currentTime,duration:a.getState().duration,showName:i.name,showThumbnail:i.thumbnail,nativeName:i.names?.native,englishName:i.names?.english,genres:Array.isArray(i.genres)?i.genres.map(R=>typeof R=="string"?R:R?.name).filter(Boolean):void 0,popularityScore:i.score,type:i.type,isPlaying:v?!v.paused:n==="iframe",sessionId:N.current,isAdult:i.isAdult}},[a,u,r,s,o,i,n]),F=E((v=!1,R=!1)=>{if(J.current)return!1;const q=ne();if(!q)return!1;const S=u.current;if(!S&&!v&&n!=="iframe"||n!=="iframe"&&q.duration<=0)return!1;const W=a.getTimeline().currentTime;if(!R){if(W===0)return!1;const ee=S?Math.abs(W-re.current):0;if(!v&&S&&W!==S.duration&&ee<5)return!1}return q.currentTime=W,re.current=W,v?(async()=>{try{await Re("progress.updateProgress",q),c.invalidateQueries({queryKey:[K.playerData,r]}),c.invalidateQueries({queryKey:[K.videoSources,r,s]}),c.invalidateQueries({queryKey:[K.continueWatching]}),c.invalidateQueries({queryKey:[K.thisWeekSchedule]}),c.invalidateQueries(p.continueWatching.pathFilter())}catch(ee){console.error("Failed to update progress:",ee)}})():Re("progress.updateProgress",q).then(()=>{ce(q.currentTime,q.duration)&&c.invalidateQueries({queryKey:[K.playerData,r]})}).catch(ee=>console.error("Failed to update progress:",ee)),!0},[a,ne,n,c,r,s,p.continueWatching,u]);j(()=>{const v=()=>{J.current||F(!0)};window.addEventListener("beforeunload",v),window.addEventListener("pagehide",v);const R=()=>{document.visibilityState==="hidden"&&v()};document.addEventListener("visibilitychange",R);const q=h;return()=>{window.removeEventListener("beforeunload",v),window.removeEventListener("pagehide",v),document.removeEventListener("visibilitychange",R),J.current||F(!0),q.current&&clearTimeout(q.current)}},[F]);const xe=E(()=>a.setShowControls(!0),[a]),Te=a.toggleFullscreen,Le=E(()=>{a.togglePlay(),b(!0)},[a,b]),Ne=E(()=>{a.toggleMute(),b(!0)},[a,b]),Pe=E(v=>{a.seekRelative(v),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>F(!1,!0),1500),b(!0)},[a,F,b]),Be=E(()=>{J.current=!1,F(!1,!0)},[F]),Ee=E(()=>{b(!0),F(!1,!0)},[F,b]);j(()=>{J.current=!1,re.current=-1,T.current=0,N.current=Math.random().toString(36).substring(2),a.reset()},[a,r,s]);const Ae=a.reset;j(()=>{const v=N.current;return()=>{dt(v)}},[a,r,s]),j(()=>{if(n!=="iframe")return;F(!1,!0);const v=setInterval(()=>{F(!1,!0)},6e4);return()=>clearInterval(v)},[n,F]);const $e=E(()=>{const v=u.current;if(!v)return;const R=v.currentTime||0,q=Date.now(),S=ce(R,v.duration)&&!ce(re.current,v.duration);(S||q-T.current>6e4)&&F(!1,S)&&(T.current=q);const W=e.find(Z=>R>=Z.start_time&&R<Z.end_time)||null;$(Z=>Z?.skip_id!==W?.skip_id?W:Z),I&&W&&!v.paused&&!a.getState().playbackLocked&&(a.seek(W.end_time),$(null))},[u,e,I,F,a]),Ie=E(()=>{const v=ne();v&&(v.currentTime=v.duration,ut.progress.updateProgress.mutate(v).then(()=>{c.invalidateQueries({queryKey:[K.playerData,r]}),c.invalidateQueries({queryKey:[K.videoSources,r,s]}),c.invalidateQueries({queryKey:[K.continueWatching]})}).catch(R=>console.error("Failed to send final progress:",R)))},[ne,c,r,s]),Me=E(()=>{J.current=!0,Ie()},[Ie]),it=te(()=>({togglePlay:Le,seek:Pe,toggleMute:Ne,toggleFullscreen:Te,onPlay:Be,onPause:Ee,formatTime:pt,onTimeUpdate:$e,onEnded:Me,setShowControls:b,setIsAutoSkipEnabled:O,setCurrentSkipInterval:$,setSubtitleFontSize:ye,setSubtitlePosition:be,setSubtitleBgOpacity:ge,setSubtitleBgColor:_e,setSubtitleTextColor:ve,setSubtitleEdge:Se,setSubtitleBold:we,setSubtitleStyle:Ce,setAvailableSubtitles:Ze,setActiveSubtitleTrack:tt,setShowSettings:nt,setShowVolumeSlider:at,flashControls:xe,sendProgressUpdate:F,setUseNativeControls:ke,resetMediaState:Ae}),[Le,Pe,Ne,Te,Be,Ee,$e,Me,F,ke,Ae,xe,Ce,b]);return{engine:a,refs:{videoRef:u,playerContainerRef:B},state:{playbackLocked:y,isPlaying:_,isMuted:x,volume:g,isFullscreen:C,duration:A,showControls:m,isScrubbing:l,isAutoSkipEnabled:I,currentSkipInterval:V,subtitleFontSize:Ve,subtitlePosition:Ke,subtitleBgOpacity:Ue,subtitleBgColor:Qe,subtitleTextColor:Ge,subtitleEdge:Ye,subtitleBold:Xe,availableSubtitles:Je,activeSubtitleTrack:et,showSettings:rt,showVolumeSlider:st,isBuffering:d,isSpeedBoostActive:f,useNativeControls:ot},actions:it}};function xn(){try{return typeof navigator<"u"&&/android/i.test(navigator.userAgent)}catch{return!1}}function ys(e,r){const{refs:s,actions:o}=e,n=w(r);n.current=r;const i=w(!1),c=w(!1),p=a=>{try{if(a)return a.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};j(()=>{if(!xn())return;let a=null;const u=()=>{const _=s.playerContainerRef.current;if(p(a)){if(!n.current||!_||ie(s.videoRef.current)||c.current)return;i.current=!0,o.toggleFullscreen()}else c.current=!1,i.current&&(i.current=!1,ie(s.videoRef.current)&&o.toggleFullscreen())};try{a=window.matchMedia("(orientation: landscape)"),a.addEventListener?a.addEventListener("change",u):a.addListener(u)}catch{}return u(),()=>{try{a&&(a.removeEventListener?a.removeEventListener("change",u):a.removeListener(u))}catch{}}},[o,s.playerContainerRef,s.videoRef,r]),j(()=>{const a=()=>{if(!ie(s.videoRef.current)){i.current=!1;try{window.matchMedia("(orientation: landscape)").matches&&(c.current=!0)}catch{c.current=!0}}};return document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a),()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a)}},[s.videoRef])}const Tn=e=>Math.max(8,Math.min(40,Math.ceil(e/16.7)+4));function bs({videoRef:e,canvasRef:r,delayMs:s,enabled:o}){const n=w(s);n.current=s;const i=w([]),c=w(-1),p=w(-1),a=w(!1),u=w(0),_=w(null);j(()=>{const x=f=>{if(f)try{f.close()}catch{}},g=()=>{for(const f of i.current)x(f.bitmap);i.current=[]};if(!o){g(),c.current=-1,p.current=-1,a.current=!1,u.current=0;return}let A=!1;const l=()=>{_.current!==null&&(cancelAnimationFrame(_.current),_.current=null)},d=()=>{A||(l(),_.current=requestAnimationFrame(()=>{C()}))};async function C(){if(A)return;const f=e.current,m=r.current;if(!f||!m||f.videoWidth===0){d();return}if(f.paused||f.ended||document.hidden||f.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){d();return}const y=f.getVideoPlaybackQuality().totalVideoFrames;if(y===c.current){d();return}(f.seeking||p.current>=0&&Math.abs(f.currentTime-p.current)>.5)&&(g(),a.current=!1,u.current=0,c.current=-1),p.current=f.currentTime,(m.width!==f.videoWidth||m.height!==f.videoHeight)&&(m.width=f.videoWidth,m.height=f.videoHeight);const B=Math.max(0,n.current||0);B>u.current&&(a.current=!1);try{const h=await createImageBitmap(f);if(A){x(h);return}c.current=y;const T=performance.now(),N=m.getContext("2d"),b=$=>{N&&N.drawImage($,0,0,m.width,m.height)};if(B<=0){g(),a.current=!1,u.current=0,b(h),x(h),d();return}const I=i.current;I.push({bitmap:h,capture:T});const O=Tn(B);for(;I.length>O;)x(I.shift()?.bitmap);let V=-1;for(let $=I.length-1;$>=0;$--)if(T-I[$].capture>=B){V=$;break}if(V!==-1){for(let H=0;H<V;H++)x(I.shift()?.bitmap);const $=I.shift();$?(b($.bitmap),x($.bitmap),a.current=!0,u.current=B):b(h)}else if(!a.current)b(h);else{const $=I.shift();$?(b($.bitmap),x($.bitmap)):b(h)}}catch{}d()}return d(),()=>{A=!0,l();for(const f of i.current)try{f.bitmap.close()}catch{}i.current=[]}},[o,e,r])}const De=(e,r)=>{try{M.setItem("playerVideoDelayMs",String(e)),M.setItem("playerVideoDelayEnabled",String(r))}catch{}},Oe=e=>{try{M.setItem("playerVideoDelayEnabled",String(e))}catch{}};function gs(e,r){const[s,o]=P(()=>{try{const y=Number(M.getItem("playerVideoDelayMs"));if(Number.isFinite(y)&&y>=0&&y<=500)return Math.round(y)}catch{}return 180}),[n,i]=P(()=>{try{return M.getItem("playerVideoDelayEnabled")==="true"}catch{return!1}}),[c,p]=P(!1),[a,u]=P(!1),_=w(null),x=w(null),g=y=>{const B=Math.max(0,Math.min(500,Math.round(y)));o(B);try{M.setItem("playerVideoDelayMs",String(B))}catch{}},A=y=>{i(y),Oe(y)},l=E(()=>{u(!1),p(!1)},[]);return{videoDelayMs:s,videoDelayEnabled:n,setDelayEnabled:A,handleVideoDelayChange:g,isCalibrating:c,testClipActive:a,stopCalibration:l,openAvSyncCalibrator:()=>{_.current={enabled:n,ms:s},i(!0),Oe(!0),r?.(),p(!0)},cancelAvSyncCalibrator:()=>{const y=_.current;_.current=null,y&&(o(y.ms),i(y.enabled),De(y.ms,y.enabled)),u(!1),p(!1)},applyAvSyncCalibrator:()=>{_.current=null,i(!0),De(s,!0),u(!1),p(!1)},toggleTestClip:()=>{if(a){u(!1);return}const y=e.current;y&&!isNaN(y.currentTime)&&(x.current=y.currentTime),u(!0)},calibReturnRef:x,effectiveVideoDelayMs:n?s:0}}function _s(){const[e,r]=P(()=>{try{return M.getItem("playerTheaterMode")==="true"}catch{return!1}});j(()=>{try{e?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(n){console.error(n)}return()=>{try{document.body.classList.remove("theater-mode")}catch(n){console.error(n)}}},[e]);const s=E(()=>{r(n=>{const i=!n;try{M.setItem("playerTheaterMode",i.toString())}catch{}return i})},[]),o=E(n=>{if(e&&n.target===n.currentTarget){r(!1);try{M.setItem("playerTheaterMode","false")}catch{}}},[e]);return{isTheaterMode:e,toggleTheaterMode:s,handleLayoutClick:o}}const G={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function Ln(){try{const e=M.getItem("playerAmbientLight");if(!e)return G;const r=JSON.parse(e),s=(o,n,i,c)=>{const p=Number(o);return Number.isFinite(p)?Math.max(i,Math.min(c,p)):n};return{enabled:r.enabled??G.enabled,blur:s(r.blur,G.blur,0,120),saturation:s(r.saturation,G.saturation,0,200),brightness:s(r.brightness,G.brightness,20,120),opacity:s(r.opacity,G.opacity,10,100)}}catch{return G}}function vs(){const[e,r]=P(Ln),s=E(o=>{r(n=>{const i={...n,...o};try{M.setItem("playerAmbientLight",JSON.stringify(i))}catch{}return i})},[]);return{settings:e,update:s}}const Nn="_theaterAmbient_x9t0o_1",Pn={theaterAmbient:Nn},de=160,ue=90,Bn=120,Ss=({videoRef:e,active:r,settings:s,className:o})=>{const n=w(null);return j(()=>{if(!r)return;const i=n.current,c=e.current;if(!i||!c)return;const p=i.getContext("2d",{alpha:!1});if(!p)return;let a=0,u=0,_=!1;const x=()=>{if(!(c.readyState<2||!c.videoWidth))try{const d=c.videoWidth,C=c.videoHeight,f=de/ue,m=d/C;let y=d,B=C,h=0,T=0;m>f?(y=C*f,h=(d-y)/2):(B=d/f,T=(C-B)/2),p.drawImage(c,h,T,y,B,0,0,de,ue)}catch{}},g=d=>{_||c.paused||(a=requestAnimationFrame(g),!(d-u<Bn)&&(u=d,x()))},A=()=>{_||(cancelAnimationFrame(a),u=0,a=requestAnimationFrame(g))},l=()=>cancelAnimationFrame(a);return c.addEventListener("play",A),c.addEventListener("pause",l),c.addEventListener("seeked",x),c.addEventListener("loadeddata",x),a=requestAnimationFrame(g),()=>{_=!0,cancelAnimationFrame(a),c.removeEventListener("play",A),c.removeEventListener("pause",l),c.removeEventListener("seeked",x),c.removeEventListener("loadeddata",x)}},[r,e]),r?t("canvas",{ref:n,width:de,height:ue,"aria-hidden":"true",className:o??Pn.theaterAmbient,style:{filter:`blur(${s.blur}px) saturate(${s.saturation}%) brightness(${s.brightness}%)`,opacity:s.opacity/100}}):null},En="_row_1fq55_1",An="_rowHeader_1fq55_9",$n="_rowLabel_1fq55_17",In="_rowValue_1fq55_28",Mn="_slider_1fq55_36",Rn="_swatches_1fq55_99",jn="_swatch_1fq55_99",Fn="_swatchPicked_1fq55_114",Dn="_colorInput_1fq55_120",On="_segmented_1fq55_131",D={row:En,rowHeader:An,rowLabel:$n,rowValue:In,slider:Mn,swatches:Rn,swatch:jn,swatchPicked:Fn,colorInput:Dn,segmented:On},qn=({label:e,display:r,min:s,max:o,step:n,value:i,percent:c,onChange:p,onCommit:a})=>t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:[t("span",{className:D.rowLabel,children:e}),t("span",{className:D.rowValue,children:r})]}),t("input",{type:"range",className:D.slider,min:s,max:o,step:n,value:i,"aria-label":e,"data-speed-boost-ignore":"true",onInput:u=>p(Number(u.target.value)),onMouseDown:u=>u.stopPropagation(),onPointerDown:u=>u.stopPropagation(),onTouchStart:u=>u.stopPropagation(),onPointerUp:a,onPointerCancel:a,onTouchEnd:a,onKeyUp:a,onBlur:a,style:{"--slider-percent":`${c}%`}})]}),ws=({label:e,colors:r,value:s,onChange:o})=>t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:t("span",{className:D.rowLabel,children:e})}),t("div",{className:D.swatches,children:[r.map(n=>t("button",{type:"button","aria-label":`${e} ${n}`,"aria-pressed":s.toLowerCase()===n.toLowerCase(),onClick:()=>o(n),className:`${D.swatch} ${s.toLowerCase()===n.toLowerCase()?D.swatchPicked:""}`,style:{backgroundColor:n}},n)),t("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:D.colorInput,value:s,"data-speed-boost-ignore":"true",onInput:n=>o(n.target.value),onMouseDown:n=>n.stopPropagation(),onPointerDown:n=>n.stopPropagation(),onTouchStart:n=>n.stopPropagation()})]})]});function Cs({label:e,options:r,value:s,onChange:o}){return t("div",{className:D.row,children:[t("div",{className:D.rowHeader,children:t("span",{className:D.rowLabel,children:e})}),t("div",{className:D.segmented,role:"group","aria-label":e,children:r.map(n=>t("button",{type:"button","aria-pressed":s===n,onClick:()=>o(n),children:[t("span",{children:n}),s===n&&t(X,{name:"check",size:10})]},n))})]})}const oe=10,me=500,pe=e=>Math.max(0,Math.min(me,Math.round(e))),ks=({isOpen:e,ms:r,onChange:s,onApply:o,onClose:n,testClipActive:i,onTestClip:c})=>e?t("div",{role:"dialog","aria-label":"Calibrate audio video sync","data-speed-boost-ignore":"true",onClick:p=>p.stopPropagation(),style:{position:"absolute",right:8,bottom:112,width:"min(260px, calc(100% - 16px))",maxHeight:"calc(100% - 124px)",overflowY:"auto",overflowX:"hidden",zIndex:60,display:"flex",flexDirection:"column",alignItems:"center",gap:8,padding:12,borderRadius:"var(--radius-lg)",border:"1px solid var(--glass-border)",background:"rgba(18, 18, 22, 0.95)",boxShadow:"var(--glass-shadow)",backdropFilter:"blur(14px)",WebkitBackdropFilter:"blur(14px)",boxSizing:"border-box"},children:[t("div",{style:{fontSize:"0.8rem",fontWeight:800,color:"var(--text-primary)"},children:"A/V sync"}),t("div",{children:t(Y,{size:"sm",variant:"secondary",onClick:c,children:i?"Back to video":"Preview test clip"})}),t("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap"},children:[t(Y,{size:"sm",onClick:()=>s(pe(r-oe)),"aria-label":"Decrease delay by 10 milliseconds",children:["− ",oe,"ms"]}),t("div",{style:{fontSize:"1.1rem",fontWeight:800,minWidth:64,textAlign:"center"},children:[r,"ms"]}),t(Y,{size:"sm",onClick:()=>s(pe(r+oe)),"aria-label":"Increase delay by 10 milliseconds",children:["+ ",oe,"ms"]})]}),t(qn,{label:"Video delay",display:`${r}ms`,min:0,max:me,step:5,value:r,percent:r/me*100,onChange:p=>s(pe(p))}),t("div",{style:{display:"flex",gap:8,justifyContent:"center",flexWrap:"wrap"},children:[t(Y,{size:"sm",variant:"secondary",onClick:n,children:"Cancel"}),t(Y,{size:"sm",onClick:o,children:["Apply ",r,"ms"]})]})]}):null;function xs({videoRef:e,sourceType:r,resetKey:s,onEnd:o}){const n=w(!1),i=w(o);i.current=o,j(()=>{n.current=!1},[s]);const c=E(()=>{const a=e.current?.duration;!a||!Number.isFinite(a)||console.info(`[playback] duration ${a.toFixed(2)}s`)},[e]);return{checkEnd:E((a=!1)=>{const u=e.current;!u||r==="iframe"||n.current||!a&&!wt(u.currentTime,u.duration)||(n.current=!0,console.info(`[playback] end reached at ${u.currentTime.toFixed(2)}s / ${u.duration.toFixed(2)}s`),i.current())},[r,e]),logDuration:c}}function Ts(e,r,s){const o=ft(),n=w({watch:o,selection:r,loading:s});n.current={watch:o,selection:r,loading:s};const[i,c]=P(!1),p=w(""),a=w(""),u=w(""),_=w(!1),x=!!o.session&&!o.session.host;j(()=>(!o.session&&_.current&&e.applyRemotePlayback(void 0,!1,1),_.current=!!o.session,e.setPlaybackLocked(!!o.session&&(x||!o.connected)),o.session&&!o.connected&&e.applyRemotePlayback(void 0,!1,1),()=>e.setPlaybackLocked(!1)),[e,x,o.connected,o.session]);const g=E((A=!1)=>{const{watch:l,selection:d,loading:C}=n.current,f=e.mediaRef.current;if(!l.session||!l.room||!f)return;if(l.session.host){l.connected&&l.selfId!==u.current&&!C&&d&&f.readyState>=1&&(u.current=l.selfId,je(d,l.room.selection)&&e.applyRemotePlayback(l.room.position,!1,l.room.rate));return}const m=l.room,y=d&&je(d,m.selection);if(!l.connected||C||!y||f.readyState<1){e.applyRemotePlayback(void 0,!1,m.rate);return}const B=Date.now()+l.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,ht({...m,playing:h},Date.now()+l.clock.offset)),N=T-f.currentTime,b=Math.abs(N)>(h?1.25:.15),I=h&&!b&&Math.abs(N)>.15?Math.min(4,Math.max(.25,m.rate*(N>0?1.03:.97))):m.rate,O=e.getState().playBlocked;e.applyRemotePlayback(b?T:void 0,h&&(!O||A),I),c(O&&h)},[e]);return j(()=>{if(!o.session)return;const A=()=>{const{watch:h,selection:T,loading:N}=n.current,b=e.mediaRef.current;if(!h.connected||!h.session?.host||!h.room)return;if(!T||N||!b||b.readyState<1){h.room.playing&&h.send({type:"update",...h.room,playing:!1});return}g();const I=e.getState(),O=!b.paused&&!b.ended&&!I.isBuffering,V={type:"update",selection:T,position:b.currentTime+(O?h.clock.latency/1e3*b.playbackRate:0),playing:O,rate:b.playbackRate},$=JSON.stringify(V);!O&&a.current===$||(a.current=$,h.send(V))},l=()=>{const{watch:h,selection:T,loading:N}=n.current,b=e.getState(),I=e.mediaRef.current,O=b.error||!N&&!T?"error":b.playBlocked?"blocked":N||!I||I.readyState<1?"loading":b.isBuffering?"buffering":"ready";h.connected&&`${h.selfId}:${O}`!==p.current&&(p.current=`${h.selfId}:${O}`,h.send({type:"status",status:O})),g()};let d=null;const C=["play","pause","seeked","ratechange","playing","waiting","canplay","ended"];let f;const m=()=>{clearTimeout(f),f=setTimeout(A,100)},y=setInterval(()=>{const h=e.mediaRef.current;d!==h&&(C.forEach(T=>d?.removeEventListener(T,m)),d=h,C.forEach(T=>d?.addEventListener(T,m))),l()},500),B=setInterval(A,3e3);return()=>{clearInterval(y),clearInterval(B),clearTimeout(f),C.forEach(T=>d?.removeEventListener(T,m));const{watch:h}=n.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,g]),j(()=>{g()},[o.room,o.connected,r,s,g]),{needsPlayback:i,enablePlayback:()=>g(!0)}}export{Ss as A,ts as B,cs as C,Cs as D,ps as E,U as F,G,qn as M,ls as P,os as R,ws as S,es as T,is as a,hs as b,Yn as c,Xn as d,ss as e,rs as f,Zn as g,Ts as h,gs as i,bs as j,_s as k,xs as l,ys as m,vs as n,Gn as o,ds as p,as as q,Jn as r,Mr as s,on as t,ms as u,Qn as v,ks as w,us as x,fs as y,ns as z};
|