@serifpersia/dango 3.7.4 → 3.7.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 (70) hide show
  1. package/README.md +10 -6
  2. package/client/dist/assets/{AnimeCard-CBxkRKU-.js → AnimeCard-a7KkMGQv.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-D3LmqzJo.js → AnimeInfo-De3gudGy.js} +1 -1
  4. package/client/dist/assets/{AnimeInfoPage-CeJHVkQ0.js → AnimeInfoPage-adJHjnqz.js} +2 -2
  5. package/client/dist/assets/{AnimeMetaDetails-D8WIiO4b.js → AnimeMetaDetails-B3-A7O5H.js} +1 -1
  6. package/client/dist/assets/Asmr-BH3j9n5n.js +2 -0
  7. package/client/dist/assets/{AsmrResetProgressModal-C13uw5lH.js → AsmrResetProgressModal-CZGzmnlI.js} +1 -1
  8. package/client/dist/assets/Home-4lO9InFx.js +1 -0
  9. package/client/dist/assets/Home-DHAkZuDf.css +1 -0
  10. package/client/dist/assets/{Insights-BZGAhYrz.js → Insights-Co9pEzWb.js} +1 -1
  11. package/client/dist/assets/{LibraryListPage-DosBFeR_.js → LibraryListPage-CgZiYRmp.js} +1 -1
  12. package/client/dist/assets/{ListeningList-nq279J8O.js → ListeningList-DX_Imiie.js} +1 -1
  13. package/client/dist/assets/{Manga-DiCcXa9I.js → Manga-tDOa59vQ.js} +1 -1
  14. package/client/dist/assets/{MangaInfoPage-sZn0qDxf.js → MangaInfoPage-D_3Rx6rr.js} +1 -1
  15. package/client/dist/assets/{MangaReadPage-ChgW4VO8.js → MangaReadPage-D0satiXp.js} +1 -1
  16. package/client/dist/assets/{MangaResetProgressModal-BkNHdClw.js → MangaResetProgressModal-Bd_lIuFo.js} +1 -1
  17. package/client/dist/assets/{Mature-D7bJH6LQ.js → Mature-DhozU6BP.js} +1 -1
  18. package/client/dist/assets/{MatureConsentModal-B3u3RgAE.js → MatureConsentModal-RZ_j_2BD.js} +1 -1
  19. package/client/dist/assets/{MediaCard-B1llLoho.js → MediaCard-BODgA6ir.js} +1 -1
  20. package/client/dist/assets/{OptionListMenu-1QikgQ8d.js → OptionListMenu-CGazCg0C.js} +1 -1
  21. package/client/dist/assets/Player-M3yMiFzg.js +56 -0
  22. package/client/dist/assets/PlayerProvider-N2pT5gty.css +1 -0
  23. package/client/dist/assets/PlayerProvider-pi0at080.js +1 -0
  24. package/client/dist/assets/PlayerSettings-k4bqwbns.js +1 -0
  25. package/client/dist/assets/{QueueOptionsButton-Cpm6Jovo.js → QueueOptionsButton-C-y5QFrT.js} +1 -1
  26. package/client/dist/assets/{QueueRail-DpUQ2Ba2.js → QueueRail-DGFI6xTM.js} +1 -1
  27. package/client/dist/assets/{ReadingList-DMxkudSM.js → ReadingList-BB_fA_j0.js} +1 -1
  28. package/client/dist/assets/{ResetProgressModal-6X8ciSFl.js → ResetProgressModal-DEnbScHS.js} +1 -1
  29. package/client/dist/assets/{Search-CbXvziWY.js → Search-Dikasx2q.js} +1 -1
  30. package/client/dist/assets/{Settings-BEZZSWsj.js → Settings-CCoAhBc0.js} +1 -1
  31. package/client/dist/assets/{SkeletonGrid-BDR-fKs1.js → SkeletonGrid-w6TsxWu7.js} +1 -1
  32. package/client/dist/assets/Trackers-CoM-8Hz9.js +2 -0
  33. package/client/dist/assets/Trackers-CvO6aWVx.css +1 -0
  34. package/client/dist/assets/Tv-BLUeZ2n8.js +4 -0
  35. package/client/dist/assets/{TvInfo-WNJynk-5.js → TvInfo-BjFZ57fG.js} +1 -1
  36. package/client/dist/assets/{TvPopup-Q9_MFJdx.js → TvPopup-D6UvGI7M.js} +1 -1
  37. package/client/dist/assets/{TvSearch-C-RBZ1iq.js → TvSearch-BDNZjbZo.js} +1 -1
  38. package/client/dist/assets/{TvWatchlist-BXE6yUS0.js → TvWatchlist-er5RKLmv.js} +1 -1
  39. package/client/dist/assets/{Watchlist-7x__Rf-s.js → Watchlist-BiJ1SCAH.js} +1 -1
  40. package/client/dist/assets/{index-B7katXv0.css → index-5x1mF1nD.css} +1 -1
  41. package/client/dist/assets/index-BP1z44Uk.js +178 -0
  42. package/client/dist/assets/{libraryInvalidation-BFqNv8Cx.js → libraryInvalidation-CVK2SYUR.js} +1 -1
  43. package/client/dist/assets/{useAnimeInfoData-D_qedrui.js → useAnimeInfoData-8RI9qMzw.js} +1 -1
  44. package/client/dist/assets/{useAsmr-CrshwDPO.js → useAsmr-ClAcWwjW.js} +1 -1
  45. package/client/dist/assets/{useAsmrPopup-HwNC-ZRo.js → useAsmrPopup-CDcDqi0C.js} +1 -1
  46. package/client/dist/assets/useMangaLibrary-D3Foz2m_.js +1 -0
  47. package/client/dist/assets/{useMangaPopup-DdueqAi5.js → useMangaPopup-kZzwoCN6.js} +1 -1
  48. package/client/dist/assets/usePlaybackEnd-BMf_H2dw.css +1 -0
  49. package/client/dist/assets/usePlaybackEnd-DmvZ__Ut.js +10 -0
  50. package/client/dist/assets/{useProviders-_ilIsyde.js → useProviders-OKWPunZg.js} +1 -1
  51. package/client/dist/assets/{useTv-C558DPdT.js → useTv-BgO7EV-p.js} +1 -1
  52. package/client/dist/assets/{useTvLibrary-CNQcDI7O.js → useTvLibrary-C6rSJQi_.js} +1 -1
  53. package/client/dist/index.html +2 -2
  54. package/package.json +2 -2
  55. package/server/dist/server.js +251 -246
  56. package/server/dist/shipped-defaults.js +1 -1
  57. package/server/package.json +1 -1
  58. package/client/dist/assets/Asmr-CrHIKmJ4.js +0 -2
  59. package/client/dist/assets/Home-C5eTe3jP.css +0 -1
  60. package/client/dist/assets/Home-CC9XyO9O.js +0 -1
  61. package/client/dist/assets/Player-hVrgi0J1.js +0 -56
  62. package/client/dist/assets/PlayerSettings-CWc5Tf-B.js +0 -1
  63. package/client/dist/assets/Trackers-D5XBOCDp.css +0 -1
  64. package/client/dist/assets/Trackers-DO0mA01O.js +0 -2
  65. package/client/dist/assets/Tv-DP4rcV9T.js +0 -4
  66. package/client/dist/assets/hls-DIyfUbGZ.js +0 -1
  67. package/client/dist/assets/index-D0DdVatn.js +0 -178
  68. package/client/dist/assets/useMangaLibrary-BPSi9vcc.js +0 -1
  69. package/client/dist/assets/usePlaybackEnd-DLFOYx3Q.css +0 -1
  70. package/client/dist/assets/usePlaybackEnd-DjZq1szR.js +0 -10
@@ -0,0 +1,10 @@
1
+ import{u as t,A as S,q as B,h as j,d as k,T as X,$ as nt}from"./vendor-core-DfaOB3Rn.js";import{M as Fe,B as V,S as ee,i as st,Y as $e,q as G,W as at,t as ot,g as it}from"./index-BP1z44Uk.js";import{I as K}from"./vendor-icons-DrybRNxP.js";import{S as Ie,a as ct,f as Re,m as lt,h as dt,d as ut,s as Y,k as pt,u as ft,n as ae}from"./PlayerProvider-pi0at080.js";import{u as ht}from"./vendor-query-BBT5_sHx.js";import{a as mt}from"./playbackCompletion-IPHm9fp5.js";const bt="_controls_pcbjf_1",gt="_titleContainer_pcbjf_9",yt="_scheduleInfo_pcbjf_15",_t="_status_pcbjf_23",vt="_nextEpisode_pcbjf_35",St="_watchlistBtn_pcbjf_45",wt="_inList_pcbjf_72",Ct="_queueBtn_pcbjf_83",kt="_queueActive_pcbjf_95",xt="_modeToggleBtn_pcbjf_101",Tt="_modeToggleActive_pcbjf_108",Nt="_markWatchedBtn_pcbjf_129",Lt="_markWatchedDone_pcbjf_143",Bt="_streamPanel_pcbjf_154",Et="_desktopEpisodeActions_pcbjf_168",At="_sourceLoader_pcbjf_174",Pt="_episodeActions_pcbjf_187",$t="_mobileEpisodeActions_pcbjf_201",It="_episodeNavBtn_pcbjf_205",Mt="_primary_pcbjf_235",jt="_secondary_pcbjf_245",Ft="_episodePickerBtn_pcbjf_249",Rt="_queueCountdown_pcbjf_253",Dt="_speedBoostBadge_pcbjf_268",Ot="_videoContainer_pcbjf_299",Ht="_loadingOverlay_pcbjf_312",qt="_loadingDots_pcbjf_326",Wt="_dot_pcbjf_331",zt="_bounce_pcbjf_1",Vt="_bufferingOverlay_pcbjf_348",Kt="_bufferingSpinner_pcbjf_357",Ut="_spin_pcbjf_444",Qt="_videoIframe_pcbjf_366",Gt="_videoElementHidden_pcbjf_389",Yt="_upscalerCanvas_pcbjf_394",Xt="_upscalerActive_pcbjf_407",Jt="_upscalerStatusBadge_pcbjf_411",Zt="_subtitleOverlay_pcbjf_426",er="_spinner_pcbjf_444",tr="_errorOverlay_pcbjf_505",rr="_retryButton_pcbjf_515",nr="_detailsToggleBtn_pcbjf_528",sr="_descriptionSection_pcbjf_551",ar="_synopsisFlat_pcbjf_559",or="_fullscreenActive_pcbjf_593",ir="_errorSubtext_pcbjf_636",qn={controls:bt,titleContainer:gt,scheduleInfo:yt,status:_t,nextEpisode:vt,watchlistBtn:St,inList:wt,queueBtn:Ct,queueActive:kt,modeToggleBtn:xt,modeToggleActive:Tt,markWatchedBtn:Nt,markWatchedDone:Lt,streamPanel:Bt,desktopEpisodeActions:Et,sourceLoader:At,episodeActions:Pt,mobileEpisodeActions:$t,episodeNavBtn:It,primary:Mt,secondary:jt,episodePickerBtn:Ft,queueCountdown:Rt,speedBoostBadge:Dt,videoContainer:Ot,loadingOverlay:Ht,loadingDots:qt,dot:Wt,bounce:zt,bufferingOverlay:Vt,bufferingSpinner:Kt,spin:Ut,videoIframe:Qt,videoElementHidden:Gt,upscalerCanvas:Yt,upscalerActive:Xt,upscalerStatusBadge:Jt,subtitleOverlay:Zt,spinner:er,errorOverlay:tr,retryButton:rr,detailsToggleBtn:nr,descriptionSection:sr,synopsisFlat:ar,fullscreenActive:or,errorSubtext:ir},cr="_playerPageLayout_13s1u_1",lr="_noSidebar_13s1u_15",dr="_episodeSidebar_13s1u_19",ur="_playerMain_13s1u_32",pr="_videoPlayerWrapper_13s1u_40",fr="_playerInfoHeader_13s1u_56",hr="_playerAnimeCard_13s1u_62",mr="_playerInfoContainer_13s1u_74",br="_infoColumns_13s1u_86",gr="_videoTitleSection_13s1u_114",yr="_theaterMode_13s1u_288",Wn={playerPageLayout:cr,noSidebar:lr,episodeSidebar:dr,playerMain:ur,videoPlayerWrapper:pr,playerInfoHeader:fr,playerAnimeCard:hr,playerInfoContainer:mr,infoColumns:br,videoTitleSection:gr,theaterMode:yr},_r={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},de=(e,n,s)=>Math.max(n,Math.min(s,e)),ue=e=>typeof e=="string"&&/^#[0-9a-fA-F]{6}$/.test(e),oe=(e,n,s,i)=>{try{const r=localStorage.getItem(e);if(r===null)return n;const o=parseFloat(r);return Number.isFinite(o)?de(o,s,i):n}catch{return n}};function vr(){let e=q.edge,n=q.bgColor,s=q.textColor,i=q.bold;try{const r=localStorage.getItem("subtitleEdge");(r==="shadow"||r==="outline"||r==="none")&&(e=r);const o=localStorage.getItem("subtitleBgColor");ue(o)&&(n=o);const c=localStorage.getItem("subtitleTextColor");ue(c)&&(s=c);const u=localStorage.getItem("subtitleBold");u!==null&&(i=u==="true")}catch{}return{fontSize:oe("subtitleFontSize",q.fontSize,.5,10),position:oe("subtitlePosition",q.position,0,100),bgOpacity:oe("subtitleBgOpacity",q.bgOpacity,0,1),bgColor:n,textColor:s,edge:e,bold:i}}function De(e,n){const s=`rgba(0, 0, 0, ${de(n,0,1)})`;if(!ue(e))return s;const i=parseInt(e.slice(1,3),16),r=parseInt(e.slice(3,5),16),o=parseInt(e.slice(5,7),16);return`rgba(${i}, ${r}, ${o}, ${de(n,0,1)})`}function Oe(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 zn(e){return`
2
+ video::cue {
3
+ font-size: ${e.fontSize}rem !important;
4
+ color: ${e.textColor} !important;
5
+ background-color: ${De(e.bgColor,e.bgOpacity)} !important;
6
+ font-weight: ${e.bold?"bold":"normal"} !important;
7
+ text-shadow: ${Oe(e.edge,e.bgOpacity)} !important;
8
+ }
9
+ `}function Vn(e){return[`font-size: ${e.fontSize}rem`,`color: ${e.textColor}`,`background-color: ${De(e.bgColor,e.bgOpacity)}`,`font-weight: ${e.bold?"700":"400"}`,`text-shadow: ${Oe(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 Sr=new Set(["b","i","u","strong","em"]);function Kn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&lt;(\/?)([a-zA-Z]+)&gt;/g,(s,i,r)=>Sr.has(r.toLowerCase())?`<${i}${r.toLowerCase()}>`:s)}function Un(e){return e.replace(/<[^>]*>/g,"")}const Qn=["#ffffff","#ffff00","#7CFC00","#00e5ff","#ff9ff3","#ffa502"],Gn=["#000000","#1e272e","#2f3542","#3d0c02","#0c3d2e","#ffffff"];function Yn(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 Xn(e){const n=Math.abs(e/1e3).toFixed(1);return e>0?`+${n}s`:e<0?`-${n}s`:"0.0s"}function Jn(e,n){const s=e.clientWidth||0,i=e.clientHeight||0,r=e.videoWidth>0&&e.videoHeight>0?e.videoWidth/e.videoHeight:0;let o=i;r>0&&s>0&&i>0&&(o=s/i>r?i:s/r);const c=Math.max(0,(i-o)/2),u=Math.max(0,Math.min(100,Number(n)||0))/100*o;return c+u}const Zn=({isOpen:e,onClose:n,title:s,heading:i,message:r,children:o})=>t(Fe,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t(K,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),t("p",{style:{fontSize:"1.1rem",fontWeight:600},children:i}),t("p",{style:{color:"var(--text-secondary)"},children:r}),o&&t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center",flexWrap:"wrap"},children:o})]})}),es=({isOpen:e,onClose:n,title:s,message:i,resumeLabel:r="Resume",restartLabel:o="Start Over",onResume:c,onRestart:u})=>t(Fe,{isOpen:e,onClose:n,title:s,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t("p",{children:i}),t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[t(V,{variant:"secondary",onClick:u,children:o}),t(V,{onClick:c,children:r})]})]})}),wr="_centerControls_bxt8c_1",Cr="_centerSkipBtn_bxt8c_15",kr="_centerPlayPause_bxt8c_37",te={centerControls:wr,centerSkipBtn:Cr,centerPlayPause:kr},ts=()=>t("div",{className:te.centerControls,onClick:e=>e.stopPropagation(),children:[t(Ie,{seconds:-10,className:te.centerSkipBtn}),t(ct,{className:te.centerPlayPause,"data-speed-boost-ignore":"true"}),t(Ie,{seconds:10,className:te.centerSkipBtn})]}),rs=({visible:e,title:n,episode:s,onBack:i,classes:r})=>t("div",{className:`${r.overlay} ${e?"":r.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none"},children:t("div",{className:r.top,onClick:o=>o.stopPropagation(),children:[t("button",{className:r.backBtn,onClick:o=>{o.stopPropagation(),i()},title:"Back","aria-label":"Back",children:t(K,{name:"chevron-left"})}),t("div",{className:r.titleInfo,children:[t("span",{className:r.title,children:n}),s&&t("span",{className:r.episode,children:s})]})]})});function xr(e){return e instanceof Element&&!!e.closest('button, input, select, textarea, a, [role="button"], [role="slider"], [data-player-ui="true"]')}function ns({engine:e,topBar:n,centerControls:s,bottomBar:i,settingsPanel:r,overlays:o,isInteracting:c=!1,nativeControls:u=!1,chromeDisabled:a=!1,className:l,onStageClick:g,children:C}){const y=Re(e),E=lt(),p=S(void 0),d=S(void 0),N=S(0),f=S(c);f.current=c;const w=B(()=>{clearTimeout(p.current),p.current=void 0},[]),h=B(()=>{w();const x=e.getState();!x.isPlaying||x.isScrubbing||f.current||u||(p.current=setTimeout(()=>{const P=e.getState();f.current||P.isScrubbing||!P.isPlaying||e.setShowControls(!1)},E?5e3:3e3))},[e,E,u,w]),L=B(()=>{e.setShowControls(!0),h()},[e,h]);dt(e,L,!u&&!a),j(()=>(c||y.isScrubbing||!y.isPlaying?(e.setShowControls(!0),w()):h(),w),[e,c,y.isPlaying,y.isScrubbing,y.showControls,w,h]),j(()=>()=>{clearTimeout(d.current)},[]);const A=x=>{if(xr(x.target)||u||a)return;g?.();const P=Date.now();if(P-N.current<280){clearTimeout(d.current),d.current=void 0,N.current=0,e.toggleFullscreen();return}N.current=P,clearTimeout(d.current),d.current=setTimeout(()=>{d.current=void 0,e.setShowControls(!e.getState().showControls),h()},280)},F=y.showControls||y.isScrubbing||c||!y.isPlaying;return t(ut,{engine:e,children:t("div",{ref:e.containerRef,"data-player-root":"true",className:`${Y.shell} ${y.isFullscreen?Y.shellFullscreen:""} ${l??""}`,style:{cursor:!F&&y.isFullscreen?"none":"default"},onContextMenu:x=>x.preventDefault(),onPointerMove:x=>{x.pointerType==="mouse"&&L()},onFocusIn:L,onMouseLeave:()=>{window.matchMedia?.("(hover: hover) and (pointer: fine)").matches&&e.getState().isPlaying&&!f.current&&e.setShowControls(!1)},children:[t("div",{className:Y.stage,onClick:A,children:C}),o,(y.error||y.playBlocked)&&t("div",{className:Y.engineStatus,"data-player-ui":"true",children:t(pt,{})}),!a&&!u&&t("div",{className:Y.uiLayer,children:[t("div",{"data-player-ui":"true",children:n}),F&&s&&t("div",{"data-player-ui":"true",children:s}),t("div",{"data-player-ui":"true",children:i}),r&&t("div",{"data-player-ui":"true",children:r})]})]})})}const Tr=e=>(e.language??e.lang??"").toLowerCase(),Nr=e=>(e.label??"").toLowerCase(),Lr=e=>`${e.language??e.lang??""}|||${e.label??""}`,Br=e=>Tr(e).startsWith("en")||Nr(e).includes("english");function ss(e,n){if(e.length===0||n?.enabled===!1)return-1;const s=n?.lastKey??null;if(s){const r=e.findIndex(o=>Lr(o)===s);if(r>=0)return r}const i=e.findIndex(Br);return i>=0?i:0}const Er="_statusArea_1xccu_1",Ar="_toggleBtn_1xccu_20",Pr="_shortcuts_1xccu_46",$r="_shortcutGroup_1xccu_56",Ir="_shortcut_1xccu_46",Mr="_key_1xccu_70",jr="_label_1xccu_91",_={statusArea:Er,toggleBtn:Ar,shortcuts:Pr,shortcutGroup:$r,shortcut:Ir,key:Mr,label:jr},as=({showTheater:e=!0})=>{const[n,s]=k(!1);return t("div",{className:_.statusArea,children:[t("button",{type:"button",className:_.toggleBtn,onClick:()=>s(i=>!i),"aria-expanded":n,"aria-controls":"player-shortcuts",children:[t(K,{name:"keyboard",size:14}),t("span",{children:"Keyboard Shortcuts"}),n?t(K,{name:"chevron-up",size:12}):t(K,{name:"chevron-down",size:12})]}),n&&t("div",{id:"player-shortcuts",className:_.shortcuts,children:[t("div",{className:_.shortcutGroup,children:[t("div",{className:_.shortcut,children:[t("span",{className:_.key,children:"↑"}),t("span",{className:_.key,children:"↓"}),t("span",{className:_.label,children:"Volume"})]}),t("div",{className:_.shortcut,children:[t("span",{className:_.key,children:"←"}),t("span",{className:_.key,children:"→"}),t("span",{className:_.label,children:"Seek"})]})]}),t("div",{className:_.shortcutGroup,children:[t("div",{className:_.shortcut,children:[t("span",{className:_.key,children:"Space"}),t("span",{className:_.label,children:"Play/Pause"})]}),t("div",{className:_.shortcut,children:[t("span",{className:_.key,children:"F"}),t("span",{className:_.label,children:"Fullscreen"})]}),t("div",{className:_.shortcut,children:[t("span",{className:_.key,children:"M"}),t("span",{className:_.label,children:"Mute"})]}),e&&t("div",{className:_.shortcut,children:[t("span",{className:_.key,children:"T"}),t("span",{className:_.label,children:"Theater"})]}),t("div",{className:_.shortcut,children:[t("span",{className:_.key,children:"N"}),t("span",{className:_.label,children:"Next"})]})]})]})]})},Fr="_episodeListContainer_9tyin_1",Rr="_drawerContainer_9tyin_9",Dr="_episodeListHeader_9tyin_14",Or="_drawerHeader_9tyin_20",Hr="_episodeListTitle_9tyin_29",qr="_rangeSelector_9tyin_41",Wr="_rangeButton_9tyin_47",zr="_active_9tyin_70",Vr="_episodeList_9tyin_1",Kr="_drawerList_9tyin_89",Ur="_episodeItem_9tyin_118",Qr="_watched_9tyin_145",Gr="_episodeThumb_9tyin_167",Yr="_episodeText_9tyin_176",Xr="_episodeLabel_9tyin_184",Jr="_episodeSub_9tyin_189",v={episodeListContainer:Fr,drawerContainer:Rr,episodeListHeader:Dr,drawerHeader:Or,episodeListTitle:Hr,rangeSelector:qr,rangeButton:Wr,active:zr,episodeList:Vr,drawerList:Kr,episodeItem:Ur,watched:Qr,episodeThumb:Gr,episodeText:Yr,episodeLabel:Xr,episodeSub:Jr},Zr=({episodes:e,currentEpisode:n,watchedEpisodes:s=[],onEpisodeClick:i,variant:r="sidebar",title:o="Episodes",header:c})=>{const[u,a]=k(0),l=S(null),g=X(()=>e.map(p=>typeof p=="string"?{id:p,label:`Episode ${p}`}:p),[e]),C=X(()=>new Set(s),[s]);j(()=>{const p=l.current;if(!p)return;let d=p.parentElement;for(;d;){const w=window.getComputedStyle(d);if((w.overflowY==="auto"||w.overflowY==="scroll")&&d.scrollHeight>d.clientHeight)break;d=d.parentElement}if(!d)return;const N=d.getBoundingClientRect(),f=p.getBoundingClientRect();d.scrollTop+=f.top+f.height/2-(N.top+d.clientHeight/2)},[n,u]);const y=X(()=>{if(g.length<=100)return[];const p=[];for(let d=0;d<g.length;d+=100){const N=d+1,f=Math.min(d+100,g.length);p.push(`${N}-${f}`)}return p},[g]),E=X(()=>{if(y.length===0)return g;const p=y[u];if(!p)return g;const[d,N]=p.split("-"),f=parseInt(d,10),w=parseInt(N,10);return g.slice(f-1,w)},[g,y,u]);return t("div",{className:`${v.episodeListContainer} ${r==="drawer"?v.drawerContainer:""}`,children:[t("div",{className:`${v.episodeListHeader} ${r==="drawer"?v.drawerHeader:""}`,children:[c,t("h3",{className:v.episodeListTitle,children:o}),y.length>0&&t("div",{className:v.rangeSelector,children:y.map((p,d)=>t("button",{className:`${v.rangeButton} ${u===d?v.active:""}`,onClick:()=>a(d),children:p},p))})]}),t("div",{className:`${v.episodeList} ${r==="drawer"?v.drawerList:""}`,children:E.map(p=>{const d=p.id===n,N=C.has(p.id)||p.watched===!0;return t("div",{ref:d?l:void 0,className:`${v.episodeItem} ${N?v.watched:""} ${d?v.active:""}`,onClick:()=>i(p.id),children:[p.thumbnail&&t("img",{src:p.thumbnail,alt:"",loading:"lazy",decoding:"async",className:v.episodeThumb}),t("span",{className:v.episodeText,children:[t("span",{className:v.episodeLabel,children:p.label??`Episode ${p.id}`}),p.sublabel&&t("span",{className:v.episodeSub,children:p.sublabel})]})]},p.id)})})]})},os=({variant:e="sidebar",count:n=12})=>t("div",{className:`${v.episodeListContainer} ${e==="drawer"?v.drawerContainer:""}`,children:[t("div",{className:`${v.episodeListHeader} ${e==="drawer"?v.drawerHeader:""}`,children:[t("h3",{className:v.episodeListTitle,children:"Episodes"}),t("div",{className:v.rangeSelector,children:[t(ee,{width:"60px",height:"28px",variant:"rectangular"}),t(ee,{width:"60px",height:"28px",variant:"rectangular"}),t(ee,{width:"60px",height:"28px",variant:"rectangular"})]})]}),t("div",{className:`${v.episodeList} ${e==="drawer"?v.drawerList:""}`,children:Array.from({length:n}).map((s,i)=>t("div",{className:v.episodeItem,style:{border:"none",background:"transparent"},children:t(ee,{width:"120px",height:"1.2rem",variant:"text"})},i))})]}),en="_shell_cys6s_1",tn="_overlay_cys6s_10",rn="_drawer_cys6s_21",nn="_handle_cys6s_56",sn="_header_cys6s_64",an="_headerCopy_cys6s_73",on="_kicker_cys6s_79",cn="_title_cys6s_87",ln="_closeBtn_cys6s_94",dn="_body_cys6s_116",H={shell:en,overlay:tn,drawer:rn,handle:nn,header:sn,headerCopy:an,kicker:on,title:cn,closeBtn:ln,body:dn};function is({isOpen:e,onClose:n,episodes:s,currentEpisode:i,watchedEpisodes:r=[],onEpisodeClick:o,title:c,header:u}){return j(()=>{if(!e)return;const a=g=>{g.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?nt(t("div",{className:H.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[t("button",{className:H.overlay,type:"button",onClick:n,"aria-label":"Close episodes"}),t("aside",{className:H.drawer,children:[t("div",{className:H.handle}),t("div",{className:H.header,children:[t("div",{className:H.headerCopy,children:[t("span",{className:H.kicker,children:"Episode picker"}),t("h3",{className:H.title,children:"Choose an episode"})]}),t("button",{className:H.closeBtn,type:"button",onClick:n,"aria-label":"Close",children:t(K,{name:"times"})})]}),t("div",{className:H.body,children:t(Zr,{episodes:s,currentEpisode:i,watchedEpisodes:r,onEpisodeClick:o,variant:"drawer",title:c,header:u})})]})]}),document.body):null}const un="_sourceSelectionContainer_1am19_1",pn="_providerSelectContainer_1am19_14",fn="_providerSelect_1am19_14",hn="_sourceSelect_1am19_1",mn="_sourceButtons_1am19_70",bn="_sourceButton_1am19_70",gn="_active_1am19_95",cs={sourceSelectionContainer:un,providerSelectContainer:pn,providerSelect:fn,sourceSelect:hn,sourceButtons:mn,sourceButton:bn,active:gn},ls=({skipIntervals:e,showId:n,episodeNumber:s,episodeCount:i,sourceType:r,showMeta:o})=>{const c=ht(),u=st(),{engine:a,mediaRef:l}=ft({volumeKey:"playerVolume",mutedKey:"playerMuted"}),{isPlaying:g,isMuted:C,volume:y,duration:E,isScrubbing:p,isBuffering:d,isFullscreen:N,isSpeedBoostActive:f,showControls:w}=Re(a),h=a.containerRef,L=S(null),A=S(0),F=S(Math.random().toString(36).substring(2)),x=a.setShowControls,[P,O]=k(localStorage.getItem("autoSkipEnabled")==="true"),[ne,W]=k(null),[T]=k(vr),[J,fe]=k(T.fontSize),[He,he]=k(T.position),[qe,me]=k(T.bgOpacity),[We,be]=k(T.bgColor),[ze,ge]=k(T.textColor),[Ve,ye]=k(T.edge),[Ke,_e]=k(T.bold),ve=B((b,I)=>{if({fontSize:m=>typeof m!="number"?!1:(fe(m),!0),position:m=>typeof m!="number"?!1:(he(m),!0),bgOpacity:m=>typeof m!="number"?!1:(me(m),!0),bgColor:m=>typeof m!="string"?!1:(be(m),!0),textColor:m=>typeof m!="string"?!1:(ge(m),!0),edge:m=>m!=="shadow"&&m!=="outline"&&m!=="none"?!1:(ye(m),!0),bold:m=>typeof m!="boolean"?!1:(_e(m),!0)}[b](I))try{localStorage.setItem(_r[b],String(I))}catch{}},[]),[Ue,Qe]=k([]),[Ge,Ye]=k(null),[Xe,Je]=k(!1),[Ze,et]=k(!1),[tt,Se]=k(()=>{try{return localStorage.getItem("playerUseNativeControls")==="true"}catch{return!1}}),U=S(!1),se=S(-1),Z=B(()=>{const b=l.current;return!n||!s||!o?.name?null:{showId:n,episodeNumber:s,episodeCount:i,currentTime:a.getTimeline().currentTime,duration:a.getState().duration,showName:o.name,showThumbnail:o.thumbnail,nativeName:o.names?.native,englishName:o.names?.english,genres:Array.isArray(o.genres)?o.genres.map(I=>typeof I=="string"?I:I?.name).filter(Boolean):void 0,popularityScore:o.score,type:o.type,isPlaying:b?!b.paused:r==="iframe",sessionId:F.current,isAdult:o.isAdult}},[a,l,n,s,i,o,r]),$=B((b=!1,I=!1)=>{if(U.current)return!1;const R=Z();if(!R)return!1;const m=l.current;if(!m&&!b&&r!=="iframe"||r!=="iframe"&&R.duration<=0)return!1;const D=a.getTimeline().currentTime;if(!I){if(D===0)return!1;const Q=m?Math.abs(D-se.current):0;if(!b&&m&&D!==m.duration&&Q<5)return!1}return R.currentTime=D,se.current=D,b?(async()=>{try{await $e("progress.updateProgress",R),c.invalidateQueries({queryKey:[G.videoSources,n,s]}),c.invalidateQueries({queryKey:[G.continueWatching]}),c.invalidateQueries({queryKey:[G.thisWeekSchedule]}),c.invalidateQueries(u.continueWatching.pathFilter())}catch(Q){console.error("Failed to update progress:",Q)}})():$e("progress.updateProgress",R).catch(Q=>console.error("Failed to update progress:",Q)),!0},[a,Z,r,c,n,s,u.continueWatching,l]);j(()=>{const b=()=>{U.current||$(!0)};window.addEventListener("beforeunload",b),window.addEventListener("pagehide",b);const I=()=>{document.visibilityState==="hidden"&&b()};document.addEventListener("visibilitychange",I);const R=L;return()=>{window.removeEventListener("beforeunload",b),window.removeEventListener("pagehide",b),document.removeEventListener("visibilitychange",I),U.current||$(!0),R.current&&clearTimeout(R.current)}},[$]);const we=B(()=>a.setShowControls(!0),[a]),Ce=a.toggleFullscreen,ke=B(()=>{a.togglePlay(),x(!0)},[a,x]),xe=B(()=>{a.toggleMute(),x(!0)},[a,x]),Te=B(b=>{a.seekRelative(b),L.current&&clearTimeout(L.current),L.current=setTimeout(()=>$(!1,!0),1500),x(!0)},[a,$,x]),Ne=B(()=>{U.current=!1,$(!1,!0)},[$]),Le=B(()=>{x(!0),$(!1,!0)},[$,x]);j(()=>{U.current=!1,se.current=-1,A.current=0,F.current=Math.random().toString(36).substring(2),a.reset()},[a,n,s]);const Be=a.reset;j(()=>{const b=F.current;return()=>{at(b)}},[a,n,s]),j(()=>{if(r!=="iframe")return;$(!1,!0);const b=setInterval(()=>{$(!1,!0)},6e4);return()=>clearInterval(b)},[r,$]);const Ee=B(()=>{const b=l.current;if(!b)return;const I=b.currentTime||0,R=Date.now();R-A.current>6e4&&$()&&(A.current=R);const m=e.find(D=>I>=D.start_time&&I<D.end_time)||null;W(D=>D?.skip_id!==m?.skip_id?m:D),P&&m&&!b.paused&&(b.currentTime=m.end_time,W(null))},[l,e,P,$]),Ae=B(()=>{const b=Z();b&&(b.currentTime=b.duration,ot.progress.updateProgress.mutate(b).then(()=>{c.invalidateQueries({queryKey:[G.videoSources,n,s]}),c.invalidateQueries({queryKey:[G.continueWatching]})}).catch(I=>console.error("Failed to send final progress:",I)))},[Z,c,n,s]),Pe=B(()=>{U.current=!0,Ae()},[Ae]),rt=X(()=>({togglePlay:ke,seek:Te,toggleMute:xe,toggleFullscreen:Ce,onPlay:Ne,onPause:Le,formatTime:it,onTimeUpdate:Ee,onEnded:Pe,setShowControls:x,setIsAutoSkipEnabled:O,setCurrentSkipInterval:W,setSubtitleFontSize:fe,setSubtitlePosition:he,setSubtitleBgOpacity:me,setSubtitleBgColor:be,setSubtitleTextColor:ge,setSubtitleEdge:ye,setSubtitleBold:_e,setSubtitleStyle:ve,setAvailableSubtitles:Qe,setActiveSubtitleTrack:Ye,setShowSettings:Je,setShowVolumeSlider:et,flashControls:we,sendProgressUpdate:$,setUseNativeControls:Se,resetMediaState:Be}),[ke,Te,xe,Ce,Ne,Le,Ee,Pe,$,Se,Be,we,ve,x]);return{engine:a,refs:{videoRef:l,playerContainerRef:h},state:{isPlaying:g,isMuted:C,volume:y,isFullscreen:N,duration:E,showControls:w,isScrubbing:p,isAutoSkipEnabled:P,currentSkipInterval:ne,subtitleFontSize:J,subtitlePosition:He,subtitleBgOpacity:qe,subtitleBgColor:We,subtitleTextColor:ze,subtitleEdge:Ve,subtitleBold:Ke,availableSubtitles:Ue,activeSubtitleTrack:Ge,showSettings:Xe,showVolumeSlider:Ze,isBuffering:d,isSpeedBoostActive:f,useNativeControls:tt},actions:rt}};function yn(){try{return typeof navigator<"u"&&/android/i.test(navigator.userAgent)}catch{return!1}}function ds(e,n){const{refs:s,actions:i}=e,r=S(n);r.current=n;const o=S(!1),c=S(!1),u=a=>{try{if(a)return a.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};j(()=>{if(!yn())return;let a=null;const l=()=>{const g=s.playerContainerRef.current;if(u(a)){if(!r.current||!g||ae(s.videoRef.current)||c.current)return;o.current=!0,i.toggleFullscreen()}else c.current=!1,o.current&&(o.current=!1,ae(s.videoRef.current)&&i.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{}}},[i,s.playerContainerRef,s.videoRef,n]),j(()=>{const a=()=>{if(!ae(s.videoRef.current)){o.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 _n=e=>Math.max(8,Math.min(40,Math.ceil(e/16.7)+4));function us({videoRef:e,canvasRef:n,delayMs:s,enabled:i}){const r=S(s);r.current=s;const o=S([]),c=S(-1),u=S(-1),a=S(!1),l=S(0),g=S(null);j(()=>{const C=f=>{if(f)try{f.close()}catch{}},y=()=>{for(const f of o.current)C(f.bitmap);o.current=[]};if(!i){y(),c.current=-1,u.current=-1,a.current=!1,l.current=0;return}let E=!1;const p=()=>{g.current!==null&&(cancelAnimationFrame(g.current),g.current=null)},d=()=>{E||(p(),g.current=requestAnimationFrame(()=>{N()}))};async function N(){if(E)return;const f=e.current,w=n.current;if(!f||!w||f.videoWidth===0){d();return}if(f.paused||f.ended||document.hidden||f.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){d();return}const h=f.getVideoPlaybackQuality().totalVideoFrames;if(h===c.current){d();return}(f.seeking||u.current>=0&&Math.abs(f.currentTime-u.current)>.5)&&(y(),a.current=!1,l.current=0,c.current=-1),u.current=f.currentTime,(w.width!==f.videoWidth||w.height!==f.videoHeight)&&(w.width=f.videoWidth,w.height=f.videoHeight);const L=Math.max(0,r.current||0);L>l.current&&(a.current=!1);try{const A=await createImageBitmap(f);if(E){C(A);return}c.current=h;const F=performance.now(),x=w.getContext("2d"),P=T=>{x&&x.drawImage(T,0,0,w.width,w.height)};if(L<=0){y(),a.current=!1,l.current=0,P(A),C(A),d();return}const O=o.current;O.push({bitmap:A,capture:F});const ne=_n(L);for(;O.length>ne;)C(O.shift()?.bitmap);let W=-1;for(let T=O.length-1;T>=0;T--)if(F-O[T].capture>=L){W=T;break}if(W!==-1){for(let J=0;J<W;J++)C(O.shift()?.bitmap);const T=O.shift();T?(P(T.bitmap),C(T.bitmap),a.current=!0,l.current=L):P(A)}else if(!a.current)P(A);else{const T=O.shift();T?(P(T.bitmap),C(T.bitmap)):P(A)}}catch{}d()}return d(),()=>{E=!0,p();for(const f of o.current)try{f.bitmap.close()}catch{}o.current=[]}},[i,e,n])}const Me=(e,n)=>{try{localStorage.setItem("playerVideoDelayMs",String(e)),localStorage.setItem("playerVideoDelayEnabled",String(n))}catch{}},je=e=>{try{localStorage.setItem("playerVideoDelayEnabled",String(e))}catch{}};function ps(e,n){const[s,i]=k(()=>{try{const h=Number(localStorage.getItem("playerVideoDelayMs"));if(Number.isFinite(h)&&h>=0&&h<=500)return Math.round(h)}catch{}return 180}),[r,o]=k(()=>{try{return localStorage.getItem("playerVideoDelayEnabled")==="true"}catch{return!1}}),[c,u]=k(!1),[a,l]=k(!1),g=S(null),C=S(null),y=h=>{const L=Math.max(0,Math.min(500,Math.round(h)));i(L);try{localStorage.setItem("playerVideoDelayMs",String(L))}catch{}},E=h=>{o(h),je(h)},p=B(()=>{l(!1),u(!1)},[]);return{videoDelayMs:s,videoDelayEnabled:r,setDelayEnabled:E,handleVideoDelayChange:y,isCalibrating:c,testClipActive:a,stopCalibration:p,openAvSyncCalibrator:()=>{g.current={enabled:r,ms:s},o(!0),je(!0),n?.(),u(!0)},cancelAvSyncCalibrator:()=>{const h=g.current;g.current=null,h&&(i(h.ms),o(h.enabled),Me(h.ms,h.enabled)),l(!1),u(!1)},applyAvSyncCalibrator:()=>{g.current=null,o(!0),Me(s,!0),l(!1),u(!1)},toggleTestClip:()=>{if(a){l(!1);return}const h=e.current;h&&!isNaN(h.currentTime)&&(C.current=h.currentTime),l(!0)},calibReturnRef:C,effectiveVideoDelayMs:r?s:0}}function fs(){const[e,n]=k(()=>{try{return localStorage.getItem("playerTheaterMode")==="true"}catch{return!1}});j(()=>{try{e?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(r){console.error(r)}return()=>{try{document.body.classList.remove("theater-mode")}catch(r){console.error(r)}}},[e]);const s=B(()=>{n(r=>{const o=!r;try{localStorage.setItem("playerTheaterMode",o.toString())}catch{}return o})},[]),i=B(r=>{if(e&&r.target===r.currentTarget){n(!1);try{localStorage.setItem("playerTheaterMode","false")}catch{}}},[e]);return{isTheaterMode:e,toggleTheaterMode:s,handleLayoutClick:i}}const z={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function vn(){try{const e=localStorage.getItem("playerAmbientLight");if(!e)return z;const n=JSON.parse(e),s=(i,r,o,c)=>{const u=Number(i);return Number.isFinite(u)?Math.max(o,Math.min(c,u)):r};return{enabled:n.enabled??z.enabled,blur:s(n.blur,z.blur,0,120),saturation:s(n.saturation,z.saturation,0,200),brightness:s(n.brightness,z.brightness,20,120),opacity:s(n.opacity,z.opacity,10,100)}}catch{return z}}function hs(){const[e,n]=k(vn),s=B(i=>{n(r=>{const o={...r,...i};try{localStorage.setItem("playerAmbientLight",JSON.stringify(o))}catch{}return o})},[]);return{settings:e,update:s}}const Sn="_theaterAmbient_x9t0o_1",wn={theaterAmbient:Sn},ie=160,ce=90,Cn=120,ms=({videoRef:e,active:n,settings:s,className:i})=>{const r=S(null);return j(()=>{if(!n)return;const o=r.current,c=e.current;if(!o||!c)return;const u=o.getContext("2d",{alpha:!1});if(!u)return;let a=0,l=0,g=!1;const C=()=>{if(!(c.readyState<2||!c.videoWidth))try{const d=c.videoWidth,N=c.videoHeight,f=ie/ce,w=d/N;let h=d,L=N,A=0,F=0;w>f?(h=N*f,A=(d-h)/2):(L=d/f,F=(N-L)/2),u.drawImage(c,A,F,h,L,0,0,ie,ce)}catch{}},y=d=>{g||c.paused||(a=requestAnimationFrame(y),!(d-l<Cn)&&(l=d,C()))},E=()=>{g||(cancelAnimationFrame(a),l=0,a=requestAnimationFrame(y))},p=()=>cancelAnimationFrame(a);return c.addEventListener("play",E),c.addEventListener("pause",p),c.addEventListener("seeked",C),c.addEventListener("loadeddata",C),a=requestAnimationFrame(y),()=>{g=!0,cancelAnimationFrame(a),c.removeEventListener("play",E),c.removeEventListener("pause",p),c.removeEventListener("seeked",C),c.removeEventListener("loadeddata",C)}},[n,e]),n?t("canvas",{ref:r,width:ie,height:ce,"aria-hidden":"true",className:i??wn.theaterAmbient,style:{filter:`blur(${s.blur}px) saturate(${s.saturation}%) brightness(${s.brightness}%)`,opacity:s.opacity/100}}):null},kn="_row_1fq55_1",xn="_rowHeader_1fq55_9",Tn="_rowLabel_1fq55_17",Nn="_rowValue_1fq55_28",Ln="_slider_1fq55_36",Bn="_swatches_1fq55_99",En="_swatch_1fq55_99",An="_swatchPicked_1fq55_114",Pn="_colorInput_1fq55_120",$n="_segmented_1fq55_131",M={row:kn,rowHeader:xn,rowLabel:Tn,rowValue:Nn,slider:Ln,swatches:Bn,swatch:En,swatchPicked:An,colorInput:Pn,segmented:$n},In=({label:e,display:n,min:s,max:i,step:r,value:o,percent:c,onChange:u,onCommit:a})=>t("div",{className:M.row,children:[t("div",{className:M.rowHeader,children:[t("span",{className:M.rowLabel,children:e}),t("span",{className:M.rowValue,children:n})]}),t("input",{type:"range",className:M.slider,min:s,max:i,step:r,value:o,"aria-label":e,"data-speed-boost-ignore":"true",onInput:l=>u(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":`${c}%`}})]}),bs=({label:e,colors:n,value:s,onChange:i})=>t("div",{className:M.row,children:[t("div",{className:M.rowHeader,children:t("span",{className:M.rowLabel,children:e})}),t("div",{className:M.swatches,children:[n.map(r=>t("button",{type:"button","aria-label":`${e} ${r}`,"aria-pressed":s.toLowerCase()===r.toLowerCase(),onClick:()=>i(r),className:`${M.swatch} ${s.toLowerCase()===r.toLowerCase()?M.swatchPicked:""}`,style:{backgroundColor:r}},r)),t("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:M.colorInput,value:s,"data-speed-boost-ignore":"true",onInput:r=>i(r.target.value),onMouseDown:r=>r.stopPropagation(),onPointerDown:r=>r.stopPropagation(),onTouchStart:r=>r.stopPropagation()})]})]});function gs({label:e,options:n,value:s,onChange:i}){return t("div",{className:M.row,children:[t("div",{className:M.rowHeader,children:t("span",{className:M.rowLabel,children:e})}),t("div",{className:M.segmented,role:"group","aria-label":e,children:n.map(r=>t("button",{type:"button","aria-pressed":s===r,onClick:()=>i(r),children:[t("span",{children:r}),s===r&&t(K,{name:"check",size:10})]},r))})]})}const re=10,pe=500,le=e=>Math.max(0,Math.min(pe,Math.round(e))),ys=({isOpen:e,ms:n,onChange:s,onApply:i,onClose:r,testClipActive:o,onTestClip:c})=>e?t("div",{role:"dialog","aria-label":"Calibrate audio video sync","data-speed-boost-ignore":"true",onClick:u=>u.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(V,{size:"sm",variant:"secondary",onClick:c,children:o?"Back to video":"Preview test clip"})}),t("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap"},children:[t(V,{size:"sm",onClick:()=>s(le(n-re)),"aria-label":"Decrease delay by 10 milliseconds",children:["− ",re,"ms"]}),t("div",{style:{fontSize:"1.1rem",fontWeight:800,minWidth:64,textAlign:"center"},children:[n,"ms"]}),t(V,{size:"sm",onClick:()=>s(le(n+re)),"aria-label":"Increase delay by 10 milliseconds",children:["+ ",re,"ms"]})]}),t(In,{label:"Video delay",display:`${n}ms`,min:0,max:pe,step:5,value:n,percent:n/pe*100,onChange:u=>s(le(u))}),t("div",{style:{display:"flex",gap:8,justifyContent:"center",flexWrap:"wrap"},children:[t(V,{size:"sm",variant:"secondary",onClick:r,children:"Cancel"}),t(V,{size:"sm",onClick:i,children:["Apply ",n,"ms"]})]})]}):null;function _s({videoRef:e,sourceType:n,resetKey:s,onEnd:i}){const r=S(!1),o=S(i);o.current=i,j(()=>{r.current=!1},[s]);const c=B(()=>{const a=e.current?.duration;!a||!Number.isFinite(a)||console.info(`[playback] duration ${a.toFixed(2)}s`)},[e]);return{checkEnd:B((a=!1)=>{const l=e.current;!l||n==="iframe"||r.current||!a&&!mt(l.currentTime,l.duration)||(r.current=!0,console.info(`[playback] end reached at ${l.currentTime.toFixed(2)}s / ${l.duration.toFixed(2)}s`),o.current())},[n,e]),logDuration:c}}export{ms as A,Gn as B,ts as C,q as D,os as E,z as F,In as M,ns as P,es as R,bs as S,Qn as T,rs as a,cs as b,zn as c,Vn as d,Jn as e,Yn as f,Un as g,ps as h,us as i,fs as j,_s as k,ds as l,hs as m,Wn as n,Zn as o,ss as p,Zr as q,Kn as r,Lr as s,qn as t,ls as u,ys as v,as as w,is as x,Xn as y,gs as z};
@@ -1 +1 @@
1
- import{T as o}from"./vendor-core-DfaOB3Rn.js";import{b as a}from"./vendor-query-BBT5_sHx.js";import{q as i,J as n}from"./index-D0DdVatn.js";const l=300*1e3,c=()=>{const e=a({queryKey:[i.providers],queryFn:()=>n("/api/providers"),staleTime:l,retry:1}),r=Array.isArray(e.data)?e.data:null,s=o(()=>r&&r.length>0?r.filter(t=>t.loaded):[],[r]);return{...e,options:s,isFallback:!r||r.length===0}};export{c as u};
1
+ import{T as o}from"./vendor-core-DfaOB3Rn.js";import{b as a}from"./vendor-query-BBT5_sHx.js";import{q as i,J as n}from"./index-BP1z44Uk.js";const l=300*1e3,c=()=>{const e=a({queryKey:[i.providers],queryFn:()=>n("/api/providers"),staleTime:l,retry:1}),r=Array.isArray(e.data)?e.data:null,s=o(()=>r&&r.length>0?r.filter(t=>t.loaded):[],[r]);return{...e,options:s,isFallback:!r||r.length===0}};export{c as u};
@@ -1 +1 @@
1
- import{N as l,u as o,S as d}from"./vendor-core-DfaOB3Rn.js";import{I as v}from"./vendor-icons-DrybRNxP.js";import{M as T}from"./MediaCard-B1llLoho.js";import{T as g}from"./TvPopup-Q9_MFJdx.js";import{c as m,i as f}from"./useTvLibrary-CNQcDI7O.js";import{b as i}from"./vendor-query-BBT5_sHx.js";import{i as p}from"./index-D0DdVatn.js";const _=l(({item:e})=>{const a=e.type==="tv"||e.type==="tvSeries"||e.type==="tvMiniSeries",s=m(e.type,e.id);return o(T,{item:{id:String(e.id),title:e.title,thumbnail:e.image,typeBadge:a?"TV":"Movie",isAdult:f(e)},linkTo:s,hoverIcon:"info",showInfoButton:!0,metaRow:o(d,{children:[e.year&&o("span",{style:{opacity:.75},children:e.year}),e.vote_average!=null&&o("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:[o(v,{name:"star",size:10}),Number(e.vote_average).toFixed(1)]})]}),renderPopup:(n,t)=>o(g,{item:e,anchorRect:n,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,onRequestClose:t.close})})}),u=1e3*60*5,b=e=>{const a=p(),{query:s,type:n,genre:t,year:r,sort_by:y,page:c}=e;return i({...a.tv.search.queryOptions({q:s?.trim()||"",type:n||"multi",genre:t||"",year:r&&r!=="ALL"?r:"",sortBy:y||"popularity.desc",page:c||1}),staleTime:u,retry:1})},A=(e="all",a="week",s=1,n=!0)=>{const t=p(),r=i({...t.tv.trending.queryOptions({mediaType:e,timeWindow:a,page:s}),enabled:n,staleTime:u,retry:1});return{...r,data:r.data}};export{_ as T,b as a,A as u};
1
+ import{N as l,u as o,S as d}from"./vendor-core-DfaOB3Rn.js";import{I as v}from"./vendor-icons-DrybRNxP.js";import{M as T}from"./MediaCard-BODgA6ir.js";import{T as g}from"./TvPopup-D6UvGI7M.js";import{c as m,i as f}from"./useTvLibrary-C6rSJQi_.js";import{b as i}from"./vendor-query-BBT5_sHx.js";import{i as p}from"./index-BP1z44Uk.js";const _=l(({item:e})=>{const a=e.type==="tv"||e.type==="tvSeries"||e.type==="tvMiniSeries",s=m(e.type,e.id);return o(T,{item:{id:String(e.id),title:e.title,thumbnail:e.image,typeBadge:a?"TV":"Movie",isAdult:f(e)},linkTo:s,hoverIcon:"info",showInfoButton:!0,metaRow:o(d,{children:[e.year&&o("span",{style:{opacity:.75},children:e.year}),e.vote_average!=null&&o("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:[o(v,{name:"star",size:10}),Number(e.vote_average).toFixed(1)]})]}),renderPopup:(n,t)=>o(g,{item:e,anchorRect:n,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,onRequestClose:t.close})})}),u=1e3*60*5,b=e=>{const a=p(),{query:s,type:n,genre:t,year:r,sort_by:y,page:c}=e;return i({...a.tv.search.queryOptions({q:s?.trim()||"",type:n||"multi",genre:t||"",year:r&&r!=="ALL"?r:"",sortBy:y||"popularity.desc",page:c||1}),staleTime:u,retry:1})},A=(e="all",a="week",s=1,n=!0)=>{const t=p(),r=i({...t.tv.trending.queryOptions({mediaType:e,timeWindow:a,page:s}),enabled:n,staleTime:u,retry:1});return{...r,data:r.data}};export{_ as T,b as a,A as u};
@@ -1 +1 @@
1
- import{T as p}from"./vendor-core-DfaOB3Rn.js";import{b as v,u as i,a as n}from"./vendor-query-BBT5_sHx.js";import{i as a,A as o,q as y,t as g}from"./index-D0DdVatn.js";import{i as u}from"./libraryInvalidation-BFqNv8Cx.js";const l=t=>String(t).toLowerCase()==="movie"?"movie":"tv",h=(t,e)=>`${l(t)}:${e}`,Q=(t,e)=>{const r=l(t);return`/tv/${e}?type=${r}`},$=(t,e,r,s)=>{const c=new URLSearchParams;return c.set("type",l(t)),r!==void 0&&c.set("s",String(r)),s!==void 0&&c.set("e",String(s)),`/tv/${e}/watch?${c.toString()}`},O=t=>t.adult===!0||t.adult===1,R={10759:"Action & Adventure",16:"Animation",35:"Comedy",80:"Crime",99:"Documentary",18:"Drama",10751:"Family",10762:"Kids",9648:"Mystery",10765:"Sci-Fi & Fantasy",37:"Western"},f={28:"Action",12:"Adventure",16:"Animation",35:"Comedy",80:"Crime",99:"Documentary",18:"Drama",10751:"Family",14:"Fantasy",36:"History",27:"Horror",9648:"Mystery",10749:"Romance",878:"Sci-Fi",53:"Thriller",10752:"War",37:"Western"},A=["Watching","Completed","On-Hold","Dropped","Planned"],T=(t,e)=>h(t,e),E=(t="All",e=1,r=24)=>{const s=a();return v(s.tvLibrary.list.queryOptions({status:t,page:e,limit:r}))},b=()=>{const t=a();return v({...t.tvLibrary.ids.queryOptions(),staleTime:1e3*60})},k=t=>{const e=a();return v({...e.tvLibrary.check.queryOptions({id:t||""}),enabled:!!t,staleTime:1e3*60})},M=(t=24)=>{const e=a();return v(e.tvProgress.continueWatching.queryOptions({limit:t}))},B=t=>{const e=a();return v({...e.tvProgress.getByMedia.queryOptions({mediaId:t||""}),enabled:!!t})},I=(t,e,r)=>{const s=a();return v({...s.tvProgress.latest.queryOptions({mediaId:t||"",season:e,episode:r}),enabled:!!t,staleTime:0})},F=()=>{const t=a(),e=i();return n({mutationFn:async r=>{const{silent:s,...c}=r;return g.tvLibrary.add.mutate(c)},onSuccess:(r,s)=>{s.silent||o.success("Added to TV watchlist"),e.invalidateQueries({queryKey:[y.tvLibrary]}),e.invalidateQueries(t.tvLibrary.pathFilter())},onError:r=>{o.error(`Failed to add: ${r.message}`)}})},S=()=>{const t=a(),e=i();return n(t.tvLibrary.remove.mutationOptions({onSuccess:()=>{o.success("Removed from TV watchlist"),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to remove: ${r.message}`)}}))},w=()=>{const t=a(),e=i();return n(t.tvLibrary.setStatus.mutationOptions({onSuccess:()=>{o.success("Status updated"),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to update status: ${r.message}`)}}))},D=()=>{const t=a(),e=i();return n(t.tvProgress.save.mutationOptions({onSuccess:()=>{u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())}}))},W=()=>{const t=a(),e=i();return n(t.tvProgress.remove.mutationOptions({onSuccess:()=>{o.success("Progress reset"),u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to reset progress: ${r.message}`)}}))},V=()=>{const t=a(),e=i();return n(t.tvLibrary.batchStatus.mutationOptions({onSuccess:r=>{o.success(`Status updated for ${r.updated??0} items`),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to update statuses: ${r.message}`)}}))},_=()=>{const t=a(),e=i();return n(t.tvLibrary.removeMany.mutationOptions({onSuccess:r=>{const s=r.removed??0;o.success(`Removed ${s} ${s===1?"item":"items"} from TV watchlist`),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to remove: ${r.message}`)}}))},U=()=>{const t=a(),e=i();return n(t.tvProgress.removeMany.mutationOptions({onSuccess:r=>{const s=r.removed??0;o.success(`Reset progress for ${s} ${s===1?"item":"items"}`),u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to reset progress: ${r.message}`)}}))},H=()=>{const t=F(),e=S(),{data:r}=b(),s=p(()=>new Set(r?.ids||[]),[r]);return{toggle:d=>{const m=T(d.mediaType,d.tmdbId);s.has(m)?e.mutate(m):t.mutate({...d,poster:d.poster||""})},bookmarkedIds:s,pending:t.isPending||e.isPending}};export{f as M,R as T,S as a,W as b,Q as c,h as d,k as e,H as f,D as g,w as h,O as i,F as j,I as k,B as l,E as m,l as n,V as o,_ as p,U as q,A as r,$ as t,M as u};
1
+ import{T as p}from"./vendor-core-DfaOB3Rn.js";import{b as v,u as i,a as n}from"./vendor-query-BBT5_sHx.js";import{i as a,A as o,q as y,t as g}from"./index-BP1z44Uk.js";import{i as u}from"./libraryInvalidation-CVK2SYUR.js";const l=t=>String(t).toLowerCase()==="movie"?"movie":"tv",h=(t,e)=>`${l(t)}:${e}`,Q=(t,e)=>{const r=l(t);return`/tv/${e}?type=${r}`},$=(t,e,r,s)=>{const c=new URLSearchParams;return c.set("type",l(t)),r!==void 0&&c.set("s",String(r)),s!==void 0&&c.set("e",String(s)),`/tv/${e}/watch?${c.toString()}`},O=t=>t.adult===!0||t.adult===1,R={10759:"Action & Adventure",16:"Animation",35:"Comedy",80:"Crime",99:"Documentary",18:"Drama",10751:"Family",10762:"Kids",9648:"Mystery",10765:"Sci-Fi & Fantasy",37:"Western"},f={28:"Action",12:"Adventure",16:"Animation",35:"Comedy",80:"Crime",99:"Documentary",18:"Drama",10751:"Family",14:"Fantasy",36:"History",27:"Horror",9648:"Mystery",10749:"Romance",878:"Sci-Fi",53:"Thriller",10752:"War",37:"Western"},A=["Watching","Completed","On-Hold","Dropped","Planned"],T=(t,e)=>h(t,e),E=(t="All",e=1,r=24)=>{const s=a();return v(s.tvLibrary.list.queryOptions({status:t,page:e,limit:r}))},b=()=>{const t=a();return v({...t.tvLibrary.ids.queryOptions(),staleTime:1e3*60})},k=t=>{const e=a();return v({...e.tvLibrary.check.queryOptions({id:t||""}),enabled:!!t,staleTime:1e3*60})},M=(t=24)=>{const e=a();return v(e.tvProgress.continueWatching.queryOptions({limit:t}))},B=t=>{const e=a();return v({...e.tvProgress.getByMedia.queryOptions({mediaId:t||""}),enabled:!!t})},I=(t,e,r)=>{const s=a();return v({...s.tvProgress.latest.queryOptions({mediaId:t||"",season:e,episode:r}),enabled:!!t,staleTime:0})},F=()=>{const t=a(),e=i();return n({mutationFn:async r=>{const{silent:s,...c}=r;return g.tvLibrary.add.mutate(c)},onSuccess:(r,s)=>{s.silent||o.success("Added to TV watchlist"),e.invalidateQueries({queryKey:[y.tvLibrary]}),e.invalidateQueries(t.tvLibrary.pathFilter())},onError:r=>{o.error(`Failed to add: ${r.message}`)}})},S=()=>{const t=a(),e=i();return n(t.tvLibrary.remove.mutationOptions({onSuccess:()=>{o.success("Removed from TV watchlist"),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to remove: ${r.message}`)}}))},w=()=>{const t=a(),e=i();return n(t.tvLibrary.setStatus.mutationOptions({onSuccess:()=>{o.success("Status updated"),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to update status: ${r.message}`)}}))},D=()=>{const t=a(),e=i();return n(t.tvProgress.save.mutationOptions({onSuccess:()=>{u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())}}))},W=()=>{const t=a(),e=i();return n(t.tvProgress.remove.mutationOptions({onSuccess:()=>{o.success("Progress reset"),u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to reset progress: ${r.message}`)}}))},V=()=>{const t=a(),e=i();return n(t.tvLibrary.batchStatus.mutationOptions({onSuccess:r=>{o.success(`Status updated for ${r.updated??0} items`),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to update statuses: ${r.message}`)}}))},_=()=>{const t=a(),e=i();return n(t.tvLibrary.removeMany.mutationOptions({onSuccess:r=>{const s=r.removed??0;o.success(`Removed ${s} ${s===1?"item":"items"} from TV watchlist`),u(e,"tv"),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to remove: ${r.message}`)}}))},U=()=>{const t=a(),e=i();return n(t.tvProgress.removeMany.mutationOptions({onSuccess:r=>{const s=r.removed??0;o.success(`Reset progress for ${s} ${s===1?"item":"items"}`),u(e,"tv",!0),e.invalidateQueries(t.tvLibrary.pathFilter()),e.invalidateQueries(t.tvProgress.pathFilter())},onError:r=>{o.error(`Failed to reset progress: ${r.message}`)}}))},H=()=>{const t=F(),e=S(),{data:r}=b(),s=p(()=>new Set(r?.ids||[]),[r]);return{toggle:d=>{const m=T(d.mediaType,d.tmdbId);s.has(m)?e.mutate(m):t.mutate({...d,poster:d.poster||""})},bookmarkedIds:s,pending:t.isPending||e.isPending}};export{f as M,R as T,S as a,W as b,Q as c,h as d,k as e,H as f,D as g,w as h,O as i,F as j,I as k,B as l,E as m,l as n,V as o,_ as p,U as q,A as r,$ as t,M as u};
@@ -33,11 +33,11 @@
33
33
  background-color: #0c0d12;
34
34
  }
35
35
  </style>
36
- <script type="module" crossorigin src="/assets/index-D0DdVatn.js"></script>
36
+ <script type="module" crossorigin src="/assets/index-BP1z44Uk.js"></script>
37
37
  <link rel="modulepreload" crossorigin href="/assets/vendor-core-DfaOB3Rn.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/vendor-query-BBT5_sHx.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/vendor-icons-DrybRNxP.js">
40
- <link rel="stylesheet" crossorigin href="/assets/index-B7katXv0.css">
40
+ <link rel="stylesheet" crossorigin href="/assets/index-5x1mF1nD.css">
41
41
  </head>
42
42
 
43
43
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serifpersia/dango",
3
- "version": "3.7.4",
3
+ "version": "3.7.6",
4
4
  "description": "A web application for watching anime.",
5
5
  "main": "orchestrator.js",
6
6
  "repository": {
@@ -69,5 +69,5 @@
69
69
  "allowScripts": {
70
70
  "esbuild@0.28.2": true
71
71
  },
72
- "versionDate": "2026-10-22T16:29:29.266Z"
72
+ "versionDate": "2026-10-23T19:40:16.958Z"
73
73
  }