@serifpersia/dango 3.8.5 → 3.8.7
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-CkomfiIw.js → AnimeCard-DeOILoQY.js} +1 -1
- package/client/dist/assets/AnimeInfo-CEWjWNK4.js +1 -0
- package/client/dist/assets/AnimeInfoPage-BBB8hD_-.js +2 -0
- package/client/dist/assets/Asmr-BJjmJorV.js +2 -0
- package/client/dist/assets/AsmrPopup-BW-iFW3L.js +1 -0
- package/client/dist/assets/{AsmrResetProgressModal-CBz6OxDc.js → AsmrResetProgressModal-BAp7wa4X.js} +1 -1
- package/client/dist/assets/{Home-BQK51s69.js → Home-BqE0OcxM.js} +1 -1
- package/client/dist/assets/{Insights-2Ei1ZfVV.js → Insights-D3-riQFt.js} +1 -1
- package/client/dist/assets/{LibraryListPage-BJ7o8MNw.js → LibraryListPage-CKEWlzgR.js} +1 -1
- package/client/dist/assets/ListeningList-WhGQuOYx.js +1 -0
- package/client/dist/assets/Manga-XJEPnce1.js +1 -0
- package/client/dist/assets/MangaInfoPage-B3xV4o8C.js +1 -0
- package/client/dist/assets/MangaReadPage-BdmcONww.js +1 -0
- package/client/dist/assets/MangaResetProgressModal-C1Bfn9O_.js +1 -0
- package/client/dist/assets/{Mature-eyCcjCLK.js → Mature-VH_PWwEN.js} +1 -1
- package/client/dist/assets/{MatureConsentModal-J7mF0tSH.js → MatureConsentModal-Do1CtwDw.js} +1 -1
- package/client/dist/assets/MediaCard-BikTKuG3.js +1 -0
- package/client/dist/assets/{OptionListMenu-oRSmXUYN.js → OptionListMenu-BReFoLC2.js} +1 -1
- package/client/dist/assets/Player-CUTDxVY5.js +56 -0
- package/client/dist/assets/PlayerProvider-D60eCjik.js +1 -0
- package/client/dist/assets/{PlayerSettings-CfTMIrw1.js → PlayerSettings-C2pu0sQt.js} +1 -1
- package/client/dist/assets/{QueueOptionsButton-BeAS9Ufo.js → QueueOptionsButton-CUyJPdwg.js} +1 -1
- package/client/dist/assets/{QueueRail-BrVL0OWm.js → QueueRail-DqyZVaD-.js} +1 -1
- package/client/dist/assets/{ReadingList-BWT_0y7B.js → ReadingList-BXR1JrJ_.js} +1 -1
- package/client/dist/assets/{ResetProgressModal-D9Hi4yvU.js → ResetProgressModal-YVCqneQ5.js} +1 -1
- package/client/dist/assets/{Search-Ma_U--_p.js → Search-C27b6qOV.js} +1 -1
- package/client/dist/assets/Settings-DEWZN-A-.js +21 -0
- package/client/dist/assets/{SkeletonGrid-Bi4N7XcX.js → SkeletonGrid-BpsynMj7.js} +1 -1
- package/client/dist/assets/{Trackers-CyZCgKDv.js → Trackers-B3EMJMgo.js} +2 -2
- package/client/dist/assets/Tv-BfDkrKuI.js +4 -0
- package/client/dist/assets/{Tv-D3vXCsSC.css → Tv-DT3m2nZs.css} +1 -1
- package/client/dist/assets/TvInfo-BkABl1xJ.js +1 -0
- package/client/dist/assets/{TvPopup-CSFfDhV6.js → TvPopup-RchqnXJt.js} +1 -1
- package/client/dist/assets/{TvSearch-BlrNDENc.js → TvSearch-C9oRGjgC.js} +1 -1
- package/client/dist/assets/TvWatchlist-ClRCXsXi.js +1 -0
- package/client/dist/assets/{VirtualKeyboard-CG5L_RyF.js → VirtualKeyboard-C0Yf-_br.js} +1 -1
- package/client/dist/assets/{WatchAlong-KYPcweoT.js → WatchAlong-CIBT0VHg.js} +1 -1
- package/client/dist/assets/{WatchAlongPanel-CdJRfBiU.js → WatchAlongPanel-D87h_8qM.js} +1 -1
- package/client/dist/assets/{Watchlist-Bwh35S5A.js → Watchlist-1rn0IRne.js} +1 -1
- package/client/dist/assets/index-Cd1-bH35.js +178 -0
- package/client/dist/assets/index-Ej7BS74s.css +1 -0
- package/client/dist/assets/{libraryInvalidation-C4kz8swK.js → libraryInvalidation-BHknhNAw.js} +1 -1
- package/client/dist/assets/{playbackCompletion-Dfy-xXLg.js → playbackCompletion-ZhAwimeL.js} +1 -1
- package/client/dist/assets/{useAnimeInfoData-D7YFegdk.js → useAnimeInfoData-l7nCKCe5.js} +1 -1
- package/client/dist/assets/useMangaLibrary-DAPvo2xZ.js +1 -0
- package/client/dist/assets/useMangaPopup-B5LPCa2N.js +1 -0
- package/client/dist/assets/{useProviders-SXQCnsGW.js → useProviders-DsY_iifL.js} +1 -1
- package/client/dist/assets/{useTv-EwO7nOqH.js → useTv-olJK7WfQ.js} +1 -1
- package/client/dist/assets/{useTvLibrary-D6KqZu5s.js → useTvLibrary-Deie_gJF.js} +1 -1
- package/client/dist/assets/useWatchAlongPlayer-CkSxIqXL.css +1 -0
- package/client/dist/assets/useWatchAlongPlayer-cl8kIOvd.js +10 -0
- package/client/dist/index.html +2 -2
- package/package.json +2 -2
- package/server/dist/config.js +1 -1
- package/server/dist/server.js +168 -168
- package/server/package.json +1 -1
- package/client/dist/assets/AnimeInfo-CtBg9n1W.js +0 -1
- package/client/dist/assets/AnimeInfoPage-DYic1q9k.js +0 -2
- package/client/dist/assets/Asmr-VRahW3BN.js +0 -2
- package/client/dist/assets/AsmrPopup-Du6eR09X.js +0 -1
- package/client/dist/assets/ListeningList-C_hDyuFM.js +0 -1
- package/client/dist/assets/Manga-4XqXRRq7.js +0 -1
- package/client/dist/assets/MangaInfoPage-BSj5R5c3.js +0 -1
- package/client/dist/assets/MangaReadPage-BpJNfRcn.js +0 -1
- package/client/dist/assets/MangaResetProgressModal-B1DyEkSk.js +0 -1
- package/client/dist/assets/MediaCard-Wp1bAPsS.js +0 -1
- package/client/dist/assets/Player-D3cSsrYy.js +0 -56
- package/client/dist/assets/PlayerProvider-WO2tWEb1.js +0 -1
- package/client/dist/assets/Settings-BWXmAzt8.js +0 -21
- package/client/dist/assets/Tv-3U6AQcKB.js +0 -4
- package/client/dist/assets/TvInfo-C6k13aZL.js +0 -1
- package/client/dist/assets/TvWatchlist-l6N6tOjK.js +0 -1
- package/client/dist/assets/index-BKQMKYFa.css +0 -1
- package/client/dist/assets/index-fS4AGBy2.js +0 -178
- package/client/dist/assets/useMangaLibrary-4UsX_okY.js +0 -1
- package/client/dist/assets/useMangaPopup-DrrvSchc.js +0 -1
- package/client/dist/assets/useWatchAlongPlayer-CJebxcje.css +0 -1
- package/client/dist/assets/useWatchAlongPlayer-DC-nsje5.js +0 -10
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{u as t,A as C,q as E,h as F,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 U,a6 as dt,t as ut,g as pt,a2 as ft,ab as Fe,ac as ht}from"./index-fS4AGBy2.js";import{I as X}from"./vendor-icons-DrybRNxP.js";import{S as De,a as mt,s as G,f as He,m as yt,h as gt,d as _t,k as bt,u as vt,n as ie}from"./PlayerProvider-WO2tWEb1.js";import{u as St}from"./vendor-query-BBT5_sHx.js";import{i as ce,a as wt}from"./playbackCompletion-Dfy-xXLg.js";const Ct="_controls_10384_1",kt="_titleContainer_10384_9",xt="_scheduleInfo_10384_15",Tt="_status_10384_23",Lt="_nextEpisode_10384_35",Nt="_watchlistBtn_10384_45",Pt="_inList_10384_73",Bt="_queueBtn_10384_84",Et="_queueActive_10384_96",At="_modeToggleBtn_10384_102",$t="_modeToggleActive_10384_109",It="_markWatchedBtn_10384_130",Mt="_markWatchedDone_10384_144",Rt="_streamPanel_10384_155",Ft="_desktopEpisodeActions_10384_169",Dt="_sourceLoader_10384_175",zt="_episodeActions_10384_188",Ot="_mobileEpisodeActions_10384_202",qt="_episodeNavBtn_10384_206",Ht="_primary_10384_236",Wt="_secondary_10384_246",Vt="_episodePickerBtn_10384_250",Kt="_queueCountdown_10384_254",Ut="_speedBoostBadge_10384_269",Qt="_videoContainer_10384_300",Gt="_loadingOverlay_10384_313",jt="_loadingDots_10384_327",Yt="_dot_10384_332",Xt="_bounce_10384_1",Jt="_bufferingOverlay_10384_349",Zt="_bufferingSpinner_10384_358",er="_spin_10384_445",tr="_videoIframe_10384_367",rr="_videoElementHidden_10384_390",nr="_upscalerCanvas_10384_395",sr="_upscalerActive_10384_408",ar="_upscalerStatusBadge_10384_412",or="_subtitleOverlay_10384_427",ir="_spinner_10384_445",cr="_errorOverlay_10384_506",lr="_retryButton_10384_516",dr="_detailsToggleBtn_10384_529",ur="_descriptionSection_10384_552",pr="_synopsisFlat_10384_560",fr="_fullscreenActive_10384_594",hr="_errorSubtext_10384_637",Gn={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:Ft,sourceLoader:Dt,episodeActions:zt,mobileEpisodeActions:Ot,episodeNavBtn:qt,primary:Ht,secondary:Wt,episodePickerBtn:Vt,queueCountdown:Kt,speedBoostBadge:Ut,videoContainer:Qt,loadingOverlay:Gt,loadingDots:jt,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_9w7zn_1",yr="_noSidebar_9w7zn_15",gr="_episodeSidebar_9w7zn_19",_r="_playerMain_9w7zn_32",br="_videoPlayerWrapper_9w7zn_40",vr="_playerInfoHeader_9w7zn_56",Sr="_playerAnimeCard_9w7zn_62",wr="_playerInfoContainer_9w7zn_74",Cr="_infoColumns_9w7zn_104",kr="_videoTitleSection_9w7zn_132",xr="_theaterMode_9w7zn_306",jn={playerPageLayout:mr,noSidebar:yr,episodeSidebar:gr,playerMain:_r,videoPlayerWrapper:br,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"},Q={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=Q.edge,r=Q.bgColor,s=Q.textColor,o=Q.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",Q.fontSize,.5,10),position:le("subtitlePosition",Q.position,0,100),bgOpacity:le("subtitleBgOpacity",Q.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 Ve(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: ${Ve(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: ${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 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:Q.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(De,{seconds:-10,className:ae.centerSkipBtn}),t(mt,{className:ae.centerPlayPause,"data-speed-boost-ignore":"true"}),t(De,{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} ${G.topBarTitleInfo}`,children:[t("span",{className:a.title,children:r}),s&&t("span",{className:a.episode,children:s}),(n||o||i||c)&&t("div",{className:G.streamDetails,children:[n&&t("span",{className:G.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:b,children:x}){const _=He(e),A=yt(),l=C(void 0),d=C(void 0),k=C(0),f=C(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 g=e.getState();f.current||g.isScrubbing||!g.isPlaying||e.setShowControls(!1)},A?5e3:3e3))},[e,A,p,m]),B=E(()=>{e.setShowControls(!0),y()},[e,y]);gt(e,B,!p&&!a),F(()=>(c||_.isScrubbing||!_.isPlaying?(e.setShowControls(!0),m()):y(),m),[e,c,_.isPlaying,_.isScrubbing,_.showControls,m,y]),F(()=>()=>{clearTimeout(d.current)},[]);const h=N=>{if(Ar(N.target)||p||a)return;b?.();const g=Date.now();if(g-k.current<280){clearTimeout(d.current),d.current=void 0,k.current=0,e.toggleFullscreen();return}k.current=g,clearTimeout(d.current),d.current=setTimeout(()=>{d.current=void 0,e.setShowControls(!e.getState().showControls),y()},280)},T=_.showControls||_.isScrubbing||c||!_.isPlaying;return t(_t,{engine:e,children:t("div",{ref:e.containerRef,"data-player-root":"true",className:`${G.shell} ${_.isFullscreen?G.shellFullscreen:""} ${u??""}`,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:x}),i,(_.error||_.playBlocked)&&t("div",{className:G.engineStatus,"data-player-ui":"true",children:t(bt,{})}),!a&&!p&&t("div",{className:G.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 Fr="_statusArea_1xccu_1",Dr="_toggleBtn_1xccu_20",zr="_shortcuts_1xccu_46",Or="_shortcutGroup_1xccu_56",qr="_shortcut_1xccu_46",Hr="_key_1xccu_70",Wr="_label_1xccu_91",S={statusArea:Fr,toggleBtn:Dr,shortcuts:zr,shortcutGroup:Or,shortcut:qr,key:Hr,label:Wr},us=({showTheater:e=!0})=>{const[r,s]=P(!1);return t("div",{className:S.statusArea,children:[t("button",{type:"button",className:S.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: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"})]})]})]})]})},Vr="_episodeListContainer_11isr_1",Kr="_drawerContainer_11isr_9",Ur="_episodeListHeader_11isr_14",Qr="_drawerHeader_11isr_20",Gr="_episodeListTitle_11isr_29",jr="_rangeSelector_11isr_41",Yr="_rangeButton_11isr_47",Xr="_active_11isr_70",Jr="_episodeList_11isr_1",Zr="_drawerList_11isr_90",en="_episodeItem_11isr_119",tn="_watched_11isr_147",rn="_episodeThumb_11isr_175",nn="_episodeText_11isr_185",sn="_episodeLabel_11isr_193",an="_episodeSub_11isr_198",L={episodeListContainer:Vr,drawerContainer:Kr,episodeListHeader:Ur,drawerHeader:Qr,episodeListTitle:Gr,rangeSelector:jr,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=C(null),b=te(()=>e.map(l=>typeof l=="string"?{id:l,label:`Episode ${l}`}:l),[e]),x=te(()=>new Set(s),[s]);F(()=>{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 k=d.getBoundingClientRect(),f=l.getBoundingClientRect();d.scrollTop+=f.top+f.height/2-(k.top+d.clientHeight/2)},[r,p]);const _=te(()=>{if(b.length<=100)return[];const l=[];for(let d=0;d<b.length;d+=100){const k=d+1,f=Math.min(d+100,b.length);l.push(`${k}-${f}`)}return l},[b]),A=te(()=>{if(_.length===0)return b;const l=_[p];if(!l)return b;const[d,k]=l.split("-"),f=parseInt(d,10),m=parseInt(k,10);return b.slice(f-1,m)},[b,_,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}),_.length>0&&t("div",{className:L.rangeSelector,children:_.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,k=x.has(l.id)||l.watched===!0;return t("div",{ref:d?u:void 0,className:`${L.episodeItem} ${k?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",gn="_body_cys6s_116",V={shell:cn,overlay:ln,drawer:dn,handle:un,header:pn,headerCopy:fn,kicker:hn,title:mn,closeBtn:yn,body:gn};function fs({isOpen:e,onClose:r,episodes:s,currentEpisode:o,watchedEpisodes:n=[],onEpisodeClick:i,title:c,header:p}){return F(()=>{if(!e)return;const a=b=>{b.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:V.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[t("button",{className:V.overlay,type:"button",onClick:r,"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:r,"aria-label":"Close",children:t(X,{name:"times"})})]}),t("div",{className:V.body,children:t(on,{episodes:s,currentEpisode:o,watchedEpisodes:n,onEpisodeClick:i,variant:"drawer",title:c,header:p})})]})]}),document.body):null}const _n="_sourceSelectionContainer_g7xev_1",bn="_providerSelectContainer_g7xev_14",vn="_providerSelect_g7xev_14",Sn="_sourceSelect_g7xev_1",wn="_sourceButtons_g7xev_70",Cn="_sourceButton_g7xev_70",kn="_active_g7xev_95",hs={sourceSelectionContainer:_n,providerSelectContainer:bn,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:b,isMuted:x,volume:_,duration:A,isScrubbing:l,isBuffering:d,isFullscreen:k,isSpeedBoostActive:f,showControls:m,playbackLocked:y}=He(a),B=a.containerRef,h=C(null),T=C(0),N=C(Math.random().toString(36).substring(2)),g=a.setShowControls,[I,O]=P(M.getItem("autoSkipEnabled")==="true"),[K,$]=P(null),[H]=P(Lr),[Ke,ye]=P(H.fontSize),[Ue,ge]=P(H.position),[Qe,_e]=P(H.bgOpacity),[Ge,be]=P(H.bgColor),[je,ve]=P(H.textColor),[Ye,Se]=P(H.edge),[Xe,we]=P(H.bold),Ce=E((v,R)=>{if({fontSize:w=>typeof w!="number"?!1:(ye(w),!0),position:w=>typeof w!="number"?!1:(ge(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(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=C(!1),re=C(-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]),D=E((v=!1,R=!1)=>{if(J.current)return!1;const q=ne();if(!q)return!1;const w=u.current;if(!w&&!v&&n!=="iframe"||n!=="iframe"&&q.duration<=0)return!1;const W=a.getTimeline().currentTime;if(!R){if(W===0)return!1;const ee=w?Math.abs(W-re.current):0;if(!v&&w&&W!==w.duration&&ee<5)return!1}return q.currentTime=W,re.current=W,v?(async()=>{try{await Re("progress.updateProgress",q),c.invalidateQueries({queryKey:[U.playerData,r]}),c.invalidateQueries({queryKey:[U.videoSources,r,s]}),c.invalidateQueries({queryKey:[U.continueWatching]}),c.invalidateQueries({queryKey:[U.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:[U.playerData,r]})}).catch(ee=>console.error("Failed to update progress:",ee)),!0},[a,ne,n,c,r,s,p.continueWatching,u]);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 q=h;return()=>{window.removeEventListener("beforeunload",v),window.removeEventListener("pagehide",v),document.removeEventListener("visibilitychange",R),J.current||D(!0),q.current&&clearTimeout(q.current)}},[D]);const xe=E(()=>a.setShowControls(!0),[a]),Te=a.toggleFullscreen,Le=E(()=>{a.togglePlay(),g(!0)},[a,g]),Ne=E(()=>{a.toggleMute(),g(!0)},[a,g]),Pe=E(v=>{a.seekRelative(v),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>D(!1,!0),1500),g(!0)},[a,D,g]),Be=E(()=>{J.current=!1,D(!1,!0)},[D]),Ee=E(()=>{g(!0),D(!1,!0)},[D,g]);F(()=>{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;F(()=>{const v=N.current;return()=>{dt(v)}},[a,r,s]),F(()=>{if(n!=="iframe")return;D(!1,!0);const v=setInterval(()=>{D(!1,!0)},6e4);return()=>clearInterval(v)},[n,D]);const $e=E(()=>{const v=u.current;if(!v)return;const R=v.currentTime||0,q=Date.now(),w=ce(R,v.duration)&&!ce(re.current,v.duration);(w||q-T.current>6e4)&&D(!1,w)&&(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,D,a]),Ie=E(()=>{const v=ne();v&&(v.currentTime=v.duration,ut.progress.updateProgress.mutate(v).then(()=>{c.invalidateQueries({queryKey:[U.playerData,r]}),c.invalidateQueries({queryKey:[U.videoSources,r,s]}),c.invalidateQueries({queryKey:[U.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:g,setIsAutoSkipEnabled:O,setCurrentSkipInterval:$,setSubtitleFontSize:ye,setSubtitlePosition:ge,setSubtitleBgOpacity:_e,setSubtitleBgColor:be,setSubtitleTextColor:ve,setSubtitleEdge:Se,setSubtitleBold:we,setSubtitleStyle:Ce,setAvailableSubtitles:Ze,setActiveSubtitleTrack:tt,setShowSettings:nt,setShowVolumeSlider:at,flashControls:xe,sendProgressUpdate:D,setUseNativeControls:ke,resetMediaState:Ae}),[Le,Pe,Ne,Te,Be,Ee,$e,Me,D,ke,Ae,xe,Ce,g]);return{engine:a,refs:{videoRef:u,playerContainerRef:B},state:{playbackLocked:y,isPlaying:b,isMuted:x,volume:_,isFullscreen:k,duration:A,showControls:m,isScrubbing:l,isAutoSkipEnabled:I,currentSkipInterval:K,subtitleFontSize:Ke,subtitlePosition:Ue,subtitleBgOpacity:Qe,subtitleBgColor:Ge,subtitleTextColor:je,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=C(r);n.current=r;const i=C(!1),c=C(!1),p=a=>{try{if(a)return a.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};F(()=>{if(!xn())return;let a=null;const u=()=>{const b=s.playerContainerRef.current;if(p(a)){if(!n.current||!b||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]),F(()=>{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 gs({videoRef:e,canvasRef:r,delayMs:s,enabled:o}){const n=C(s);n.current=s;const i=C([]),c=C(-1),p=C(-1),a=C(!1),u=C(0),b=C(null);F(()=>{const x=f=>{if(f)try{f.close()}catch{}},_=()=>{for(const f of i.current)x(f.bitmap);i.current=[]};if(!o){_(),c.current=-1,p.current=-1,a.current=!1,u.current=0;return}let A=!1;const l=()=>{b.current!==null&&(cancelAnimationFrame(b.current),b.current=null)},d=()=>{A||(l(),b.current=requestAnimationFrame(()=>{k()}))};async function k(){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)&&(_(),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"),g=$=>{N&&N.drawImage($,0,0,m.width,m.height)};if(B<=0){_(),a.current=!1,u.current=0,g(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 K=-1;for(let $=I.length-1;$>=0;$--)if(T-I[$].capture>=B){K=$;break}if(K!==-1){for(let H=0;H<K;H++)x(I.shift()?.bitmap);const $=I.shift();$?(g($.bitmap),x($.bitmap),a.current=!0,u.current=B):g(h)}else if(!a.current)g(h);else{const $=I.shift();$?(g($.bitmap),x($.bitmap)):g(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 ze=(e,r)=>{try{M.setItem("playerVideoDelayMs",String(e)),M.setItem("playerVideoDelayEnabled",String(r))}catch{}},Oe=e=>{try{M.setItem("playerVideoDelayEnabled",String(e))}catch{}};function _s(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),b=C(null),x=C(null),_=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:_,isCalibrating:c,testClipActive:a,stopCalibration:l,openAvSyncCalibrator:()=>{b.current={enabled:n,ms:s},i(!0),Oe(!0),r?.(),p(!0)},cancelAvSyncCalibrator:()=>{const y=b.current;b.current=null,y&&(o(y.ms),i(y.enabled),ze(y.ms,y.enabled)),u(!1),p(!1)},applyAvSyncCalibrator:()=>{b.current=null,i(!0),ze(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 bs(){const[e,r]=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(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 j={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function Ln(){try{const e=M.getItem("playerAmbientLight");if(!e)return j;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??j.enabled,blur:s(r.blur,j.blur,0,120),saturation:s(r.saturation,j.saturation,0,200),brightness:s(r.brightness,j.brightness,20,120),opacity:s(r.opacity,j.opacity,10,100)}}catch{return j}}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=C(null);return F(()=>{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,b=!1;const x=()=>{if(!(c.readyState<2||!c.videoWidth))try{const d=c.videoWidth,k=c.videoHeight,f=de/ue,m=d/k;let y=d,B=k,h=0,T=0;m>f?(y=k*f,h=(d-y)/2):(B=d/f,T=(k-B)/2),p.drawImage(c,h,T,y,B,0,0,de,ue)}catch{}},_=d=>{b||c.paused||(a=requestAnimationFrame(_),!(d-u<Bn)&&(u=d,x()))},A=()=>{b||(cancelAnimationFrame(a),u=0,a=requestAnimationFrame(_))},l=()=>cancelAnimationFrame(a);return c.addEventListener("play",A),c.addEventListener("pause",l),c.addEventListener("seeked",x),c.addEventListener("loadeddata",x),a=requestAnimationFrame(_),()=>{b=!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",Fn="_swatch_1fq55_99",Dn="_swatchPicked_1fq55_114",zn="_colorInput_1fq55_120",On="_segmented_1fq55_131",z={row:En,rowHeader:An,rowLabel:$n,rowValue:In,slider:Mn,swatches:Rn,swatch:Fn,swatchPicked:Dn,colorInput:zn,segmented:On},qn=({label:e,display:r,min:s,max:o,step:n,value:i,percent:c,onChange:p,onCommit:a})=>t("div",{className:z.row,children:[t("div",{className:z.rowHeader,children:[t("span",{className:z.rowLabel,children:e}),t("span",{className:z.rowValue,children:r})]}),t("input",{type:"range",className:z.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:z.row,children:[t("div",{className:z.rowHeader,children:t("span",{className:z.rowLabel,children:e})}),t("div",{className:z.swatches,children:[r.map(n=>t("button",{type:"button","aria-label":`${e} ${n}`,"aria-pressed":s.toLowerCase()===n.toLowerCase(),onClick:()=>o(n),className:`${z.swatch} ${s.toLowerCase()===n.toLowerCase()?z.swatchPicked:""}`,style:{backgroundColor:n}},n)),t("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:z.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:z.row,children:[t("div",{className:z.rowHeader,children:t("span",{className:z.rowLabel,children:e})}),t("div",{className:z.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=C(!1),i=C(o);i.current=o,F(()=>{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=C({watch:o,selection:r,loading:s});n.current={watch:o,selection:r,loading:s};const[i,c]=P(!1),p=C(""),a=C(""),u=C(""),b=C(!1),x=!!o.session&&!o.session.host;F(()=>(!o.session&&b.current&&e.applyRemotePlayback(void 0,!1,1),b.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 _=E((A=!1)=>{const{watch:l,selection:d,loading:k}=n.current,f=e.mediaRef.current;if(!l.session||!l.room||!f)return;if(l.session.host){l.connected&&l.selfId!==u.current&&!k&&d&&f.readyState>=1&&(u.current=l.selfId,Fe(d,l.room.selection)&&e.applyRemotePlayback(l.room.position,!1,l.room.rate));return}const m=l.room,y=d&&Fe(d,m.selection);if(!l.connected||k||!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,g=Math.abs(N)>(h?1.25:.15),I=h&&!g&&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(g?T:void 0,h&&(!O||A),I),c(O&&h)},[e]);return F(()=>{if(!o.session)return;const A=()=>{const{watch:h,selection:T,loading:N}=n.current,g=e.mediaRef.current;if(!h.connected||!h.session?.host||!h.room)return;if(!T||N||!g||g.readyState<1){h.room.playing&&h.send({type:"update",...h.room,playing:!1});return}_();const I=e.getState(),O=!g.paused&&!g.ended&&!I.isBuffering,K={type:"update",selection:T,position:g.currentTime+(O?h.clock.latency/1e3*g.playbackRate:0),playing:O,rate:g.playbackRate},$=JSON.stringify(K);!O&&a.current===$||(a.current=$,h.send(K))},l=()=>{const{watch:h,selection:T,loading:N}=n.current,g=e.getState(),I=e.mediaRef.current,O=g.error||!N&&!T?"error":g.playBlocked?"blocked":N||!I||I.readyState<1?"loading":g.isBuffering?"buffering":"ready";h.connected&&`${h.selfId}:${O}`!==p.current&&(p.current=`${h.selfId}:${O}`,h.send({type:"status",status:O})),_()};let d=null;const k=["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&&(k.forEach(T=>d?.removeEventListener(T,m)),d=h,k.forEach(T=>d?.addEventListener(T,m))),l()},500),B=setInterval(A,3e3);return()=>{clearInterval(y),clearInterval(B),clearTimeout(f),k.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,_]),F(()=>{_()},[o.room,o.connected,r,s,_]),{needsPlayback:i,enablePlayback:()=>_(!0)}}export{Ss as A,ts as B,cs as C,Cs as D,ps as E,Q as F,j as 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,_s as i,gs as j,bs as k,xs as l,ys as m,vs as n,jn as o,ds as p,as as q,Jn as r,Mr as s,on as t,ms as u,Gn as v,ks as w,us as x,fs as y,ns as z};
|