@serifpersia/dango 4.0.6 → 4.0.8
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/AmbientLightMenu-CO10UIKM.js +1 -0
- package/client/dist/assets/{AnimeCard-ZMgtR741.js → AnimeCard-fC2KO9iC.js} +1 -1
- package/client/dist/assets/{AnimeInfo-CmDzxK-x.js → AnimeInfo-KjBye_qd.js} +1 -1
- package/client/dist/assets/{AnimeInfoPage-BtMHG64S.js → AnimeInfoPage-C73_sIog.js} +2 -2
- package/client/dist/assets/Asmr-Bl73R_56.js +2 -0
- package/client/dist/assets/{AsmrPopup-ER6dDxFM.js → AsmrPopup-BbvhL78t.js} +1 -1
- package/client/dist/assets/{AsmrResetProgressModal-CmDqGKma.js → AsmrResetProgressModal-DuuqDv23.js} +1 -1
- package/client/dist/assets/Home-CoBFY-dI.css +1 -0
- package/client/dist/assets/Home-DtBGTNur.js +1 -0
- package/client/dist/assets/{Insights-Dlu3LypY.js → Insights-DRgipISO.js} +1 -1
- package/client/dist/assets/{LibraryListPage-L4Lyt1BV.js → LibraryListPage-DJcL0lfR.js} +1 -1
- package/client/dist/assets/{ListeningList-CEiZWAUS.js → ListeningList-KC8x2JTx.js} +1 -1
- package/client/dist/assets/{Manga-CazCyWIh.js → Manga-DRLYjZ32.js} +1 -1
- package/client/dist/assets/{MangaInfoPage-8ZsayGOJ.js → MangaInfoPage-Dg5FyjKC.js} +1 -1
- package/client/dist/assets/{MangaReadPage-CG59Zuhi.js → MangaReadPage-CHMXWOeU.js} +1 -1
- package/client/dist/assets/{MangaResetProgressModal-CmIGgwJc.js → MangaResetProgressModal-6C_7cQ9-.js} +1 -1
- package/client/dist/assets/Mature-DintSvcm.js +1 -0
- package/client/dist/assets/{MatureConsentModal-CBGHgiBA.js → MatureConsentModal-D2QxzAd5.js} +1 -1
- package/client/dist/assets/MediaCard-B13pU_sD.js +1 -0
- package/client/dist/assets/{Player-DJSkQVjM.js → Player-D7JxeeEa.js} +6 -6
- package/client/dist/assets/{PlayerProvider-C6humJW5.js → PlayerProvider-BPOUTsvo.js} +1 -1
- package/client/dist/assets/PlayerSettings-Bn9-36NI.js +1 -0
- package/client/dist/assets/{PlayerSurface-C0SuP9xJ.js → PlayerSurface-DRZlkk9L.js} +1 -1
- package/client/dist/assets/{QueueOptionsButton-C1o8UacJ.js → QueueOptionsButton-NMKIXk8k.js} +1 -1
- package/client/dist/assets/{QueueRail-Dj_zPCND.js → QueueRail-BMqj7tA1.js} +1 -1
- package/client/dist/assets/{ReadingList-CMo85dG4.js → ReadingList-D3YqOY3n.js} +1 -1
- package/client/dist/assets/{ResetProgressModal-udBYaYWc.js → ResetProgressModal-Dw-OK0wI.js} +1 -1
- package/client/dist/assets/{Search-vE5ITchW.js → Search-BWa4iAdv.js} +1 -1
- package/client/dist/assets/{Settings-DTdakL-f.js → Settings-DGNoqBtn.js} +2 -2
- package/client/dist/assets/{SkeletonGrid-CKVHMLEB.js → SkeletonGrid-xGtg97zD.js} +1 -1
- package/client/dist/assets/{Trackers-Cbuzzhap.js → Trackers-DpD8kLrJ.js} +1 -1
- package/client/dist/assets/Tv-gfhcHTMv.js +4 -0
- package/client/dist/assets/{TvInfo-DBdRrmSJ.js → TvInfo-h4NE1IP0.js} +1 -1
- package/client/dist/assets/TvPopup-on4rxc10.js +1 -0
- package/client/dist/assets/{TvSearch-DhZt3CXR.js → TvSearch-BoWPuHhz.js} +1 -1
- package/client/dist/assets/{TvWatchlist-Dg7X14X1.js → TvWatchlist-CZsKdghE.js} +1 -1
- package/client/dist/assets/{VirtualKeyboard-BkfL6fYx.js → VirtualKeyboard-BWvLAbre.js} +1 -1
- package/client/dist/assets/{WatchAlong-D-Wdl6L6.js → WatchAlong-BQ1knfz0.js} +1 -1
- package/client/dist/assets/{WatchAlongPanel-BtiB_ErQ.js → WatchAlongPanel-D_ToyGjh.js} +1 -1
- package/client/dist/assets/{Watchlist-DFXVM31Q.js → Watchlist-4P7nHRSB.js} +1 -1
- package/client/dist/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff +0 -0
- package/client/dist/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2 +0 -0
- package/client/dist/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff +0 -0
- package/client/dist/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2 +0 -0
- package/client/dist/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff +0 -0
- package/client/dist/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2 +0 -0
- package/client/dist/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2 +0 -0
- package/client/dist/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff +0 -0
- package/client/dist/assets/bangers-latin-400-normal-BAEm-Pv0.woff +0 -0
- package/client/dist/assets/bangers-latin-400-normal-DeHY8Ncq.woff2 +0 -0
- package/client/dist/assets/bangers-latin-ext-400-normal-7BLmjjiv.woff2 +0 -0
- package/client/dist/assets/bangers-latin-ext-400-normal-CzVt_Cgx.woff +0 -0
- package/client/dist/assets/bangers-vietnamese-400-normal-BbvBhFjQ.woff2 +0 -0
- package/client/dist/assets/bangers-vietnamese-400-normal-Ll9rymNv.woff +0 -0
- package/client/dist/assets/bree-serif-latin-400-normal-DFKDEHQE.woff2 +0 -0
- package/client/dist/assets/bree-serif-latin-400-normal-Dbaz2OwO.woff +0 -0
- package/client/dist/assets/bree-serif-latin-ext-400-normal-CnorAOA2.woff +0 -0
- package/client/dist/assets/bree-serif-latin-ext-400-normal-amfO-E0k.woff2 +0 -0
- package/client/dist/assets/chakra-petch-latin-400-normal-D7EtbySE.woff +0 -0
- package/client/dist/assets/chakra-petch-latin-400-normal-SafcrIr2.woff2 +0 -0
- package/client/dist/assets/chakra-petch-latin-700-normal-CnDBPjkL.woff2 +0 -0
- package/client/dist/assets/chakra-petch-latin-700-normal-D1s_c2du.woff +0 -0
- package/client/dist/assets/chakra-petch-latin-ext-400-normal-C8u6EFkq.woff2 +0 -0
- package/client/dist/assets/chakra-petch-latin-ext-400-normal-MNNNbyh_.woff +0 -0
- package/client/dist/assets/chakra-petch-latin-ext-700-normal-BeviJPUl.woff +0 -0
- package/client/dist/assets/chakra-petch-latin-ext-700-normal-DAkvJhej.woff2 +0 -0
- package/client/dist/assets/chakra-petch-thai-400-normal-Bw1Q-fVY.woff2 +0 -0
- package/client/dist/assets/chakra-petch-thai-400-normal-KdzBjiWs.woff +0 -0
- package/client/dist/assets/chakra-petch-thai-700-normal-B7WL5pBr.woff2 +0 -0
- package/client/dist/assets/chakra-petch-thai-700-normal-vZLZ_5L8.woff +0 -0
- package/client/dist/assets/chakra-petch-vietnamese-400-normal-Cn7ya5On.woff +0 -0
- package/client/dist/assets/chakra-petch-vietnamese-700-normal-gQuUA8Wu.woff +0 -0
- package/client/dist/assets/comic-neue-latin-400-normal-BdhG8RSD.woff2 +0 -0
- package/client/dist/assets/comic-neue-latin-400-normal-CU7kPFAv.woff +0 -0
- package/client/dist/assets/comic-neue-latin-700-normal-NE4Vcoll.woff2 +0 -0
- package/client/dist/assets/comic-neue-latin-700-normal-yR9qu__P.woff +0 -0
- package/client/dist/assets/index-CqcwUuWG.js +180 -0
- package/client/dist/assets/{libraryInvalidation-DWCCaTbI.js → libraryInvalidation-CC9NocI9.js} +1 -1
- package/client/dist/assets/oswald-cyrillic-ext-wght-normal-DLWmRmaW.woff2 +0 -0
- package/client/dist/assets/oswald-cyrillic-wght-normal-C8sJyxwB.woff2 +0 -0
- package/client/dist/assets/oswald-latin-ext-wght-normal-Dj_1K-Kw.woff2 +0 -0
- package/client/dist/assets/oswald-latin-wght-normal-CzS3kehr.woff2 +0 -0
- package/client/dist/assets/oswald-vietnamese-wght-normal-Tdf5mmdl.woff2 +0 -0
- package/client/dist/assets/{playbackCompletion-DzRc-CrM.js → playbackCompletion-DasRrCt1.js} +1 -1
- package/client/dist/assets/russo-one-cyrillic-400-normal-BXZIn0h3.woff2 +0 -0
- package/client/dist/assets/russo-one-cyrillic-400-normal-rRbrNFRA.woff +0 -0
- package/client/dist/assets/russo-one-latin-400-normal-BfOuQF9V.woff2 +0 -0
- package/client/dist/assets/russo-one-latin-400-normal-CosRecV9.woff +0 -0
- package/client/dist/assets/russo-one-latin-ext-400-normal-BssN3Pxm.woff +0 -0
- package/client/dist/assets/russo-one-latin-ext-400-normal-CezFp_e4.woff2 +0 -0
- package/client/dist/assets/useAnimeInfoData-BlTijixl.js +1 -0
- package/client/dist/assets/{useMangaLibrary-DQvZO29f.js → useMangaLibrary-BMioQUxH.js} +1 -1
- package/client/dist/assets/{useMangaPopup-BiaJvL8C.js → useMangaPopup-Dzqm7EW7.js} +1 -1
- package/client/dist/assets/{useTv-Daayom0r.js → useTv-iD-DnP_2.js} +1 -1
- package/client/dist/assets/{useTvLibrary-7zDxMjFz.js → useTvLibrary-D9vDuZs7.js} +1 -1
- package/client/dist/assets/useWatchAlongPlayer-BksJHCzs.css +1 -0
- package/client/dist/assets/useWatchAlongPlayer-DC5cqK1c.js +11 -0
- package/client/dist/index.html +1 -1
- package/client/dist/subtitle-font-licenses.txt +113 -0
- package/package.json +2 -2
- package/server/dist/server.js +1 -1
- package/server/package.json +1 -1
- package/client/dist/assets/Asmr-Ct7Pp0i7.js +0 -2
- package/client/dist/assets/Home-Bmc4hGfd.css +0 -1
- package/client/dist/assets/Home-CWsXJfHc.js +0 -1
- package/client/dist/assets/Mature-Dw4DVRVT.js +0 -1
- package/client/dist/assets/MediaCard-Bd24Icus.js +0 -1
- package/client/dist/assets/OptionListMenu-BdiwBX1S.js +0 -1
- package/client/dist/assets/PlayerSettings-C3MmSKgQ.js +0 -1
- package/client/dist/assets/Tv-z-RzIer_.js +0 -4
- package/client/dist/assets/TvPopup-C_TEPZqV.js +0 -1
- package/client/dist/assets/index-hrS3r0UE.js +0 -179
- package/client/dist/assets/useAnimeInfoData-Di0AjMa7.js +0 -1
- package/client/dist/assets/useWatchAlongPlayer-BNJCb3D5.js +0 -10
- package/client/dist/assets/useWatchAlongPlayer-BsaopdPw.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{N as c,u as o,S as d}from"./vendor-core-DfaOB3Rn.js";import{I as v}from"./vendor-icons-C1Pj_eSX.js";import{M as T}from"./MediaCard-
|
|
1
|
+
import{N as c,u as o,S as d}from"./vendor-core-DfaOB3Rn.js";import{I as v}from"./vendor-icons-C1Pj_eSX.js";import{M as T}from"./MediaCard-B13pU_sD.js";import{T as g}from"./TvPopup-on4rxc10.js";import{n as m,l as f,v as i}from"./index-CqcwUuWG.js";import{b as u}from"./vendor-query-BBT5_sHx.js";const P=c(({item:e})=>{const a=e.type==="tv"||e.type==="tvSeries"||e.type==="tvMiniSeries",n=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:n,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:(s,t)=>o(g,{item:e,anchorRect:s,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,onRequestClose:t.close})})}),p=1e3*60*5,_=e=>{const a=i(),{query:n,type:s,genre:t,year:r,sort_by:l,page:y}=e;return u({...a.tv.search.queryOptions({q:n?.trim()||"",type:s||"multi",genre:t||"",year:r&&r!=="ALL"?r:"",sortBy:l||"popularity.desc",page:y||1}),staleTime:p,retry:1})},b=(e="all",a="week",n=1,s=!0)=>{const t=i(),r=u({...t.tv.trending.queryOptions({mediaType:e,timeWindow:a,page:n}),enabled:s,staleTime:p,retry:1});return{...r,data:r.data}};export{P as T,_ as a,b as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{T as p}from"./vendor-core-DfaOB3Rn.js";import{b as c,u as i,a as n}from"./vendor-query-BBT5_sHx.js";import{
|
|
1
|
+
import{T as p}from"./vendor-core-DfaOB3Rn.js";import{b as c,u as i,a as n}from"./vendor-query-BBT5_sHx.js";import{v as a,N as o,q as m,t as y,ai as g}from"./index-CqcwUuWG.js";import{i as u}from"./libraryInvalidation-CC9NocI9.js";const q=["Watching","Completed","On-Hold","Dropped","Planned"],b=(t,e)=>g(t,e),C=(t="All",e=1,r=24)=>{const s=a();return c(s.tvLibrary.list.queryOptions({status:t,page:e,limit:r}))},T=()=>{const t=a();return c({...t.tvLibrary.ids.queryOptions(),staleTime:1e3*60})},O=t=>{const e=a();return c({...e.tvLibrary.check.queryOptions({id:t||""}),enabled:!!t,staleTime:1e3*60})},k=(t=24)=>{const e=a();return c(e.tvProgress.continueWatching.queryOptions({limit:t}))},$=t=>{const e=a();return c({...e.tvProgress.getByMedia.queryOptions({mediaId:t||""}),enabled:!!t})},f=(t,e,r)=>{const s=a();return c({...s.tvProgress.latest.queryOptions({mediaId:t||"",season:e,episode:r}),enabled:!!t,staleTime:0})},h=()=>{const t=a(),e=i();return n({mutationFn:async r=>{const{silent:s,...d}=r;return y.tvLibrary.add.mutate(d)},onSuccess:(r,s)=>{s.silent||o.success("Added to TV watchlist"),e.invalidateQueries({queryKey:[m.tvLibrary]}),e.invalidateQueries(t.tvLibrary.pathFilter())},onError:r=>{o.error(`Failed to add: ${r.message}`)}})},L=()=>{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}`)}}))},R=()=>{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}`)}}))},B=()=>{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())}}))},E=()=>{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}`)}}))},I=()=>{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}`)}}))},A=()=>{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}`)}}))},w=()=>{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}`)}}))},M=()=>{const t=h(),e=L(),{data:r}=T(),s=p(()=>new Set(r?.ids||[]),[r]);return{toggle:v=>{const l=b(v.mediaType,v.tmdbId);s.has(l)?e.mutate(l):t.mutate({...v,poster:v.poster||""})},bookmarkedIds:s,pending:t.isPending||e.isPending}};export{q as T,L as a,E as b,O as c,M as d,B as e,R as f,h as g,f as h,$ as i,C as j,I as k,A as l,w as m,k as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._controls_1ne4g_1{display:flex;align-items:stretch;gap:1rem;flex-wrap:wrap;width:100%}._titleContainer_1ne4g_9{display:flex;flex-direction:column;gap:.75rem}._scheduleInfo_1ne4g_15{display:flex;gap:1rem;font-size:.95rem;color:var(--text-tertiary);align-items:center}._status_1ne4g_23{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-light);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);padding:.35rem .85rem;border-radius:var(--radius-full);font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}._nextEpisode_1ne4g_35{background:#ffffff0d;color:var(--text-secondary);padding:.35rem .85rem;border-radius:var(--radius-full);font-size:.8rem;font-weight:600;border:1px solid var(--glass-border)}._watchlistBtn_1ne4g_45{background:#ffffff0d;color:var(--text-primary);border:1px solid rgba(255,255,255,.09);padding:.55rem 1.1rem;border-radius:var(--radius-full);font-weight:600;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;gap:.5rem;font-size:.82rem;flex:0 1 auto;min-width:110px;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);letter-spacing:.01em}._watchlistBtn_1ne4g_45:hover{background:#ffffff1a;border-color:#fff3;transform:translateY(-1px);box-shadow:0 4px 12px #00000040}._watchlistBtn_1ne4g_45._inList_1ne4g_73{background:color-mix(in srgb,var(--color-success) 12%,transparent);border-color:color-mix(in srgb,var(--color-success) 35%,transparent);color:var(--color-success)}._watchlistBtn_1ne4g_45._inList_1ne4g_73:hover{background:color-mix(in srgb,var(--color-success) 18%,transparent);border-color:var(--color-success)}._queueBtn_1ne4g_84{background:color-mix(in srgb,var(--accent) 8%,transparent);border-color:color-mix(in srgb,var(--accent) 25%,transparent);color:var(--accent-light)}._queueBtn_1ne4g_84:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent-lighter)}._queueActive_1ne4g_96{background:color-mix(in srgb,var(--accent) 15%,transparent);border-color:color-mix(in srgb,var(--accent) 60%,transparent);color:var(--accent-lighter)}._modeToggleBtn_1ne4g_102{background:#ffffff0d;color:var(--text-primary);border-color:#ffffff1a;flex:0 1 auto}._modeToggleActive_1ne4g_109{background:color-mix(in srgb,var(--color-info) 12%,transparent);border-color:color-mix(in srgb,var(--color-info) 45%,transparent);color:#dbeafe}._modeToggleActive_1ne4g_109:hover{background:color-mix(in srgb,var(--color-info) 18%,transparent);border-color:color-mix(in srgb,var(--color-info) 65%,transparent)}._watchlistBtn_1ne4g_45:disabled{opacity:.7;cursor:wait;transform:none}._watchlistBtn_1ne4g_45:disabled:hover{transform:none}._markWatchedBtn_1ne4g_130{background:color-mix(in srgb,var(--color-info) 8%,transparent);border-color:color-mix(in srgb,var(--color-info) 25%,transparent);color:#93c5fd;flex:0 1 auto;justify-content:center}._markWatchedBtn_1ne4g_130:hover{background:color-mix(in srgb,var(--color-info) 14%,transparent);border-color:color-mix(in srgb,var(--color-info) 45%,transparent);color:#dbeafe}._markWatchedDone_1ne4g_144{background:color-mix(in srgb,var(--color-success) 12%,transparent);border-color:color-mix(in srgb,var(--color-success) 35%,transparent);color:var(--color-success)}._markWatchedDone_1ne4g_144:hover{background:color-mix(in srgb,var(--color-success) 18%,transparent);border-color:var(--color-success)}._streamPanel_1ne4g_155{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem 1rem;align-items:center;background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:1rem 1.25rem;box-shadow:var(--glass-shadow)}._streamPanel_1ne4g_155 ._desktopEpisodeActions_1ne4g_169{flex:0 0 auto;align-self:center;margin:0}._streamPanel_1ne4g_155 ._sourceLoader_1ne4g_175{grid-column:1 / -1;animation:none}._streamPanel_1ne4g_155>:last-child:not(:first-child){grid-column:1 / -1}._streamPanel_1ne4g_155 select{max-width:320px}._episodeActions_1ne4g_188{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0 .25rem}._desktopEpisodeActions_1ne4g_169{flex:1 1 320px;justify-content:flex-end;align-self:flex-end;margin:0}._mobileEpisodeActions_1ne4g_202{margin:.5rem 0 .25rem}._episodeNavBtn_1ne4g_206{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:.7rem 1rem;background:#ffffff0d;color:var(--text-primary);cursor:pointer;font-size:.9rem;font-weight:700;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}._episodeNavBtn_1ne4g_206:hover:not(:disabled){border-color:var(--text-secondary);background:#ffffff14}._episodeNavBtn_1ne4g_206:disabled{opacity:.5;cursor:not-allowed}._episodeNavBtn_1ne4g_206._primary_1ne4g_235{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);border-color:transparent;color:#fff}._episodeNavBtn_1ne4g_206._primary_1ne4g_235:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%)}._episodeNavBtn_1ne4g_206._secondary_1ne4g_245{background:#ffffff0a}._episodePickerBtn_1ne4g_249{display:none}._queueCountdown_1ne4g_253{position:absolute;left:50%;bottom:1.5rem;transform:translate(-50%);z-index:75;padding:.7rem 1rem;border:1px solid var(--glass-border);border-radius:var(--radius-md);background:#121216eb;color:#fff;font-weight:700;box-shadow:var(--glass-shadow)}._speedBoostBadge_1ne4g_268{position:absolute;top:1.5rem;left:50%;transform:translate(-50%);z-index:75;display:flex;align-items:center;gap:.7rem;padding:.65rem 1rem;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:var(--radius-md);background:#121216eb;color:#f5f3ff;font-weight:800;letter-spacing:.06em;text-transform:none;box-shadow:var(--glass-shadow);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}._speedBoostBadge_1ne4g_268 span{line-height:1}._speedBoostBadge_1ne4g_268 svg{display:block;flex-shrink:0}._videoContainer_1ne4g_299{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;display:flex;justify-content:center;align-items:center;container-type:inline-size}._loadingOverlay_1ne4g_312{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:10;background:#00000080;border-radius:inherit}._loadingDots_1ne4g_326{display:flex;gap:10px}._dot_1ne4g_331{width:12px;height:12px;border-radius:50%;background-color:var(--accent);animation:_bounce_1ne4g_1 1.4s infinite ease-in-out both;box-shadow:0 0 10px var(--accent-glow)}._dot_1ne4g_331:nth-child(1){animation-delay:-.32s}._dot_1ne4g_331:nth-child(2){animation-delay:-.16s}._bufferingOverlay_1ne4g_348{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:20}._bufferingSpinner_1ne4g_357{width:var(--size-48);height:var(--size-48);border-radius:var(--radius-full);background:conic-gradient(from 0deg,transparent 0deg 160deg,var(--accent) 300deg,var(--accent-lighter) 360deg),var(--track-bg);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 4px));mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 4px));filter:drop-shadow(0 0 8px var(--accent-glow));animation:_spin_1ne4g_459 var(--duration-spin) linear infinite}@keyframes _spin_1ne4g_459{to{transform:rotate(360deg)}}._videoIframe_1ne4g_381{width:100%;height:100%;border:none;position:absolute;top:0;left:0;object-fit:cover;border-radius:inherit}._videoContainer_1ne4g_299 video{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;object-fit:contain;background-color:#000;border-radius:inherit}._videoContainer_1ne4g_299 video._videoElementHidden_1ne4g_404{opacity:0;pointer-events:none}._upscalerCanvas_1ne4g_409{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;object-fit:contain;opacity:0;pointer-events:none;border-radius:inherit}._upscalerCanvas_1ne4g_409._upscalerActive_1ne4g_422{opacity:1}._upscalerStatusBadge_1ne4g_426{position:absolute;top:12px;right:12px;z-index:4;background:#000000a6;color:var(--text-primary);font-size:.75rem;font-weight:600;padding:.35em .8em;border-radius:999px;border:1px solid var(--glass-border);pointer-events:none}._subtitleOverlay_1ne4g_441{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:hidden;border-radius:inherit}._sourceLoader_1ne4g_175{padding:.75rem;display:flex;justify-content:center}._spinner_1ne4g_459{width:40px;height:40px;border:4px solid rgba(255,255,255,.1);border-left-color:var(--accent);border-radius:50%;animation:_spin_1ne4g_459 1s linear infinite}@media(max-width:768px){._titleContainer_1ne4g_9 h1{font-size:1.25rem}._episodeActions_1ne4g_188{margin-top:.25rem}._controls_1ne4g_1{gap:.5rem}._watchlistBtn_1ne4g_45,._queueBtn_1ne4g_84,._markWatchedBtn_1ne4g_130,._modeToggleBtn_1ne4g_102{flex:1 1 calc(50% - .25rem);min-width:0;padding:.5rem .75rem;font-size:.78rem;gap:.4rem;border:none}._episodeNavBtn_1ne4g_206{flex:1 1 calc(50% - .25rem);min-width:0;padding:.6rem .9rem;font-size:.8rem;min-height:44px;border:none}._episodePickerBtn_1ne4g_249{display:inline-flex;flex-basis:100%;padding:.6rem .9rem;font-size:.78rem;min-height:44px;border:none;grid-column:1 / -1}._desktopEpisodeActions_1ne4g_169{display:none}._mobileEpisodeActions_1ne4g_202{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}._streamPanel_1ne4g_155{grid-template-columns:minmax(0,1fr)}._errorOverlay_1ne4g_526{padding:1rem;gap:.5rem;overflow-y:auto}._errorOverlay_1ne4g_526 p{font-size:1rem}._retryButton_1ne4g_536{padding:.5rem 1.25rem;font-size:.9rem;margin-top:0}}@media(min-width:769px){._mobileEpisodeActions_1ne4g_202{display:none}}._detailsToggleBtn_1ne4g_549{background:transparent;border:1px solid var(--border-accent);color:var(--accent-light);padding:.5rem .9rem;border-radius:var(--radius-full);cursor:pointer;font-size:.85rem;font-weight:700;transition:all var(--transition-fast);display:flex;align-items:center;gap:.4rem;margin-top:1rem;width:fit-content}._detailsToggleBtn_1ne4g_549:hover{background:var(--accent-subtle);color:var(--accent-lighter);border-color:var(--accent)}._descriptionSection_1ne4g_572{margin-top:1.75rem;padding:1.5rem;background:#ffffff05;border-radius:var(--radius-lg);border:1px solid var(--glass-border)}._descriptionSection_1ne4g_572._synopsisFlat_1ne4g_580{margin-top:0;padding:0;background:none;border:0;border-radius:0;min-width:0}._synopsisFlat_1ne4g_580 p{max-width:80ch}._descriptionSection_1ne4g_572 h3{font-size:.95rem;font-weight:800;margin-bottom:.85rem;color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:.75rem}._descriptionSection_1ne4g_572 h3:before{content:"";width:4px;height:16px;background:var(--accent);border-radius:var(--radius-full);box-shadow:0 0 10px var(--accent-glow)}._videoContainer_1ne4g_299._fullscreenActive_1ne4g_614{border-radius:0}._videoContainer_1ne4g_299:fullscreen,._videoContainer_1ne4g_299:-webkit-full-screen{width:100vw;height:100vh;border-radius:0}._videoContainer_1ne4g_299:fullscreen video,._videoContainer_1ne4g_299:fullscreen canvas,._videoContainer_1ne4g_299:-webkit-full-screen video,._videoContainer_1ne4g_299:-webkit-full-screen canvas{border-radius:0}._errorOverlay_1ne4g_526{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#000c;color:#fff;z-index:30;padding:2rem;text-align:center;gap:1rem;border-radius:inherit}._errorOverlay_1ne4g_526 p{margin:0;font-size:1.2rem;font-weight:500}._errorSubtext_1ne4g_657{color:var(--text-tertiary)!important;font-size:.9rem!important}._retryButton_1ne4g_536{background:var(--accent);color:var(--accent-text);border:none;padding:.6rem 2rem;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:all .2s;margin-top:.5rem;box-shadow:0 4px 12px var(--accent-glow)}._retryButton_1ne4g_536:hover{background:var(--accent-light);transform:translateY(-2px)}._watchedOverlay_1ne4g_680{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1.5rem;text-align:center;color:var(--text-primary);background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 60%),#000;border-radius:inherit}._watchedTitle_1ne4g_702{margin:0;font-size:1.2rem;font-weight:700}._watchedSubtext_1ne4g_708{margin:0;color:var(--text-secondary);font-size:.9rem}._watchedActions_1ne4g_714{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;margin-top:.5rem;width:100%;max-width:560px}._watchedActions_1ne4g_714>:first-child{justify-self:end}._watchedActions_1ne4g_714>:last-child{justify-self:start}._watchedActionsCentered_1ne4g_732{display:flex;flex-wrap:wrap;justify-content:center}._watchedActionsCentered_1ne4g_732>div{display:contents}@media(max-width:480px){._watchedActions_1ne4g_714{display:flex;flex-wrap:wrap;justify-content:center}._watchedActions_1ne4g_714>div{display:contents}}._playerPageLayout_1rxx0_1{display:grid;grid-template-columns:320px 1fr;gap:2.5rem;padding:2rem;width:100%;max-width:1800px;margin:0 auto;align-items:start;min-height:calc(100vh - var(--header-height));background-color:transparent;animation:_fadeIn_1rxx0_1 .8s var(--ease-smooth)}._playerPageLayout_1rxx0_1._noSidebar_1rxx0_15{grid-template-columns:minmax(0,1fr)}._episodeSidebar_1rxx0_19{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:visible;display:flex;flex-direction:column;box-shadow:var(--glass-shadow);animation:_slideUpIn_1rxx0_1 .8s var(--ease-smooth)}._playerMain_1rxx0_32{min-width:0;display:flex;flex-direction:column;gap:1.25rem;animation:_slideUpIn_1rxx0_1 .8s .1s var(--ease-smooth) both}._videoPlayerWrapper_1rxx0_40{width:100%;padding-top:56.25%;background-color:#000;border-radius:0;overflow:clip;isolation:isolate;position:relative;box-shadow:0 20px 50px #00000080;border:1px solid var(--glass-border)}._playerInfoHeader_1rxx0_56{display:flex;gap:2rem;align-items:flex-start}._playerAnimeCard_1rxx0_62{width:160px;flex-shrink:0;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-xl);border:1px solid var(--glass-border);transform:translateZ(0);aspect-ratio:2/3;height:auto}._playerInfoContainer_1rxx0_74{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:2rem;border-radius:var(--radius-2xl);box-shadow:var(--glass-shadow);display:flex;flex-direction:column;position:relative;overflow:hidden}._playerInfoContainer_1rxx0_74:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--accent) 40%,transparent) 50%,transparent 100%);pointer-events:none}._infoColumns_1rxx0_104{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem 2.5rem;border-top:1px solid var(--border-primary);padding-top:1.5rem;margin-top:1.5rem}@media(min-width:1100px){._infoColumns_1rxx0_104:has(>:last-child:not(:first-child)){grid-template-columns:minmax(0,1.5fr) minmax(240px,1fr);align-items:start}}._playerAnimeCard_1rxx0_62 img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .4s ease}._playerAnimeCard_1rxx0_62:hover img{transform:scale(1.1)}._videoTitleSection_1rxx0_134{flex:1;display:flex;flex-direction:column;justify-content:flex-start;gap:1.25rem}._videoTitleSection_1rxx0_134 h1{margin:0;font-size:2.25rem;line-height:1.1;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}@keyframes _fadeIn_1rxx0_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_1rxx0_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1280px){._playerPageLayout_1rxx0_1{grid-template-columns:280px 1fr;padding:1.5rem;gap:1.5rem}}@media(max-width:1024px){._playerPageLayout_1rxx0_1{display:flex;flex-direction:column;gap:2rem}._episodeSidebar_1rxx0_19{width:100%;height:auto;max-height:500px;position:static;order:2;overflow-y:auto;-webkit-overflow-scrolling:touch}._playerMain_1rxx0_32{order:1;width:100%}._playerInfoHeader_1rxx0_56{padding:0}}@media(max-width:768px){._playerPageLayout_1rxx0_1{padding:1rem;gap:1.5rem}._episodeSidebar_1rxx0_19{display:none}._playerMain_1rxx0_32{gap:1.5rem}._videoPlayerWrapper_1rxx0_40{border-radius:0}._playerInfoContainer_1rxx0_74{border-radius:var(--radius-xl);padding:1.5rem}._playerInfoHeader_1rxx0_56{flex-direction:row;align-items:flex-start;text-align:left;gap:1.5rem}._videoTitleSection_1rxx0_134 h1{font-size:1.75rem}._playerAnimeCard_1rxx0_62{width:100px}}@media(max-width:480px){._playerInfoHeader_1rxx0_56{flex-direction:column;align-items:center;text-align:center}._playerAnimeCard_1rxx0_62{width:120px}}@media(max-width:480px)and (orientation:portrait){._videoPlayerWrapper_1rxx0_40{padding-top:100%;position:relative}}@media(min-width:481px)and (max-width:768px)and (orientation:portrait){._videoPlayerWrapper_1rxx0_40{padding-top:75%;position:relative}}@media(max-width:900px)and (orientation:landscape){._playerPageLayout_1rxx0_1{padding:0;gap:0}._videoPlayerWrapper_1rxx0_40{border-radius:0;height:100vh;padding-top:0}._playerInfoContainer_1rxx0_74{padding:1.5rem}}body.low-end ._playerPageLayout_1rxx0_1,body.low-end ._episodeSidebar_1rxx0_19,body.low-end ._playerInfoContainer_1rxx0_74{animation:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:none!important;background:var(--bg-secondary)!important}body.low-end ._videoPlayerWrapper_1rxx0_40{box-shadow:none!important;border-color:var(--border-primary)!important}body.low-end ._episodeSidebar_1rxx0_19{background:var(--bg-secondary)!important}._theaterMode_1rxx0_308{display:flex!important;justify-content:center!important;align-items:center!important;position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;min-height:100vh!important;max-width:none!important;padding:2.5rem!important;margin:0!important;background-color:var(--bg-main)!important;backdrop-filter:blur(24px)!important;-webkit-backdrop-filter:blur(24px)!important;animation:_fadeIn_1rxx0_1 .4s var(--ease-smooth)!important;overflow:hidden!important;z-index:var(--z-overlay)!important}._theaterMode_1rxx0_308 ._playerMain_1rxx0_32{width:90%!important;max-width:1200px!important;height:auto!important;aspect-ratio:16/9!important;gap:0!important;margin:auto!important;padding:0!important;animation:_scaleUpIn_1rxx0_1 .4s cubic-bezier(.25,1,.5,1)!important;position:relative!important;z-index:1!important}._theaterMode_1rxx0_308 ._videoPlayerWrapper_1rxx0_40{width:100%!important;height:100%!important;padding-top:0!important;border-radius:0!important;border-color:#ffffff26!important;box-shadow:0 20px 60px color-mix(in srgb,var(--accent) 15%,transparent),0 0 100px #000000e6!important;overflow:hidden!important;position:relative!important}@keyframes _scaleUpIn_1rxx0_1{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}body.theater-mode header,body.theater-mode footer{display:none!important}body.theater-mode main{padding:0!important;max-width:none!important;margin:0!important;width:100vw!important;height:100vh!important}body.theater-mode{overflow:hidden!important;background:#000!important}@media(max-width:768px){._theaterMode_1rxx0_308{padding:1rem!important}._theaterMode_1rxx0_308 ._playerMain_1rxx0_32{width:100%!important;max-width:none!important}}@font-face{font-family:Comic Neue;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/comic-neue-latin-400-normal-BdhG8RSD.woff2) format("woff2"),url(/assets/comic-neue-latin-400-normal-CU7kPFAv.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Comic Neue;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/comic-neue-latin-700-normal-NE4Vcoll.woff2) format("woff2"),url(/assets/comic-neue-latin-700-normal-yR9qu__P.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/chakra-petch-thai-400-normal-Bw1Q-fVY.woff2) format("woff2"),url(/assets/chakra-petch-thai-400-normal-KdzBjiWs.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/chakra-petch-vietnamese-400-normal-Cn7ya5On.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/chakra-petch-latin-ext-400-normal-C8u6EFkq.woff2) format("woff2"),url(/assets/chakra-petch-latin-ext-400-normal-MNNNbyh_.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/chakra-petch-latin-400-normal-SafcrIr2.woff2) format("woff2"),url(/assets/chakra-petch-latin-400-normal-D7EtbySE.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/chakra-petch-thai-700-normal-B7WL5pBr.woff2) format("woff2"),url(/assets/chakra-petch-thai-700-normal-vZLZ_5L8.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/chakra-petch-vietnamese-700-normal-gQuUA8Wu.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/chakra-petch-latin-ext-700-normal-DAkvJhej.woff2) format("woff2"),url(/assets/chakra-petch-latin-ext-700-normal-BeviJPUl.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/chakra-petch-latin-700-normal-CnDBPjkL.woff2) format("woff2"),url(/assets/chakra-petch-latin-700-normal-D1s_c2du.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Oswald Variable;font-style:normal;font-display:swap;font-weight:200 700;src:url(/assets/oswald-cyrillic-ext-wght-normal-DLWmRmaW.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Oswald Variable;font-style:normal;font-display:swap;font-weight:200 700;src:url(/assets/oswald-cyrillic-wght-normal-C8sJyxwB.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Oswald Variable;font-style:normal;font-display:swap;font-weight:200 700;src:url(/assets/oswald-vietnamese-wght-normal-Tdf5mmdl.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Oswald Variable;font-style:normal;font-display:swap;font-weight:200 700;src:url(/assets/oswald-latin-ext-wght-normal-Dj_1K-Kw.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Oswald Variable;font-style:normal;font-display:swap;font-weight:200 700;src:url(/assets/oswald-latin-wght-normal-CzS3kehr.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Bree Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bree-serif-latin-ext-400-normal-amfO-E0k.woff2) format("woff2"),url(/assets/bree-serif-latin-ext-400-normal-CnorAOA2.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Bree Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bree-serif-latin-400-normal-DFKDEHQE.woff2) format("woff2"),url(/assets/bree-serif-latin-400-normal-Dbaz2OwO.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Russo One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/russo-one-cyrillic-400-normal-BXZIn0h3.woff2) format("woff2"),url(/assets/russo-one-cyrillic-400-normal-rRbrNFRA.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Russo One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/russo-one-latin-ext-400-normal-CezFp_e4.woff2) format("woff2"),url(/assets/russo-one-latin-ext-400-normal-BssN3Pxm.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Russo One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/russo-one-latin-400-normal-BfOuQF9V.woff2) format("woff2"),url(/assets/russo-one-latin-400-normal-CosRecV9.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bangers;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bangers-vietnamese-400-normal-BbvBhFjQ.woff2) format("woff2"),url(/assets/bangers-vietnamese-400-normal-Ll9rymNv.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bangers;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bangers-latin-ext-400-normal-7BLmjjiv.woff2) format("woff2"),url(/assets/bangers-latin-ext-400-normal-CzVt_Cgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bangers;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bangers-latin-400-normal-DeHY8Ncq.woff2) format("woff2"),url(/assets/bangers-latin-400-normal-BAEm-Pv0.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}._statusArea_1xccu_1{display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;background:var(--bg-secondary);border:1px solid var(--border-primary);padding:.75rem 1.25rem;border-radius:var(--radius-lg);margin-top:.5rem;margin-bottom:0;color:var(--text-secondary);box-shadow:var(--shadow-lg);width:fit-content;max-width:100%;-webkit-user-select:none;user-select:none;flex-wrap:wrap}._toggleBtn_1xccu_20{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:none;color:var(--text-secondary);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;padding:.15rem .25rem;border-radius:var(--radius-sm);transition:color var(--transition-fast);pointer-events:auto}._toggleBtn_1xccu_20:hover{color:var(--text-primary)}._toggleBtn_1xccu_20 svg{color:var(--accent)}._shortcuts_1xccu_46{display:flex;gap:1.5rem;align-items:center;flex-wrap:wrap;padding-top:.6rem;border-top:1px solid var(--border-primary);width:100%}._shortcutGroup_1xccu_56{display:flex;gap:1rem;align-items:center;flex-wrap:nowrap}._shortcut_1xccu_46{display:flex;align-items:center;gap:.3rem;white-space:nowrap}._key_1xccu_70{background:#ffffff14;padding:.15rem .4rem;border-radius:5px;border:1px solid rgba(255,255,255,.1);font-weight:800;color:var(--text-primary);font-size:.75rem;min-width:1.4rem;height:1.4rem;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);box-shadow:0 1.5px #0000004d}._key_1xccu_70+._key_1xccu_70{margin-left:-.15rem}._label_1xccu_91{color:var(--text-tertiary);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}@media(max-width:768px){._statusArea_1xccu_1{display:none}}._episodeListContainer_11isr_1{display:flex;flex-direction:column;height:100%;min-height:0;background:transparent}._drawerContainer_11isr_9{height:auto;min-height:100%}._episodeListHeader_11isr_14{background:transparent;padding:var(--space-6);border-bottom:1px solid var(--glass-border)}._drawerHeader_11isr_20{position:sticky;top:0;z-index:5;background:#0c0c0ffa;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}._episodeListTitle_11isr_29{margin:0 0 var(--space-5) 0;font-size:.85rem;font-weight:800;color:var(--text-tertiary);display:flex;align-items:center;gap:var(--space-3);letter-spacing:.1em;text-transform:uppercase}._rangeSelector_11isr_41{display:flex;flex-wrap:wrap;gap:var(--space-2)}._rangeButton_11isr_47{background:#ffffff0a;border:1px solid var(--border-primary);color:var(--text-secondary);padding:.35rem .65rem;border-radius:var(--radius-full);font-size:.76rem;font-weight:600;transition:all var(--transition-fast);cursor:pointer}._rangeButton_11isr_47:hover{border-color:#ffffff40;color:var(--text-primary);background:#ffffff14}._rangeButton_11isr_47:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._rangeButton_11isr_47._active_11isr_70{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent-light);border-color:color-mix(in srgb,var(--accent) 50%,transparent);box-shadow:0 0 8px var(--accent-glow)}._episodeList_11isr_1{flex:1;display:flex;flex-direction:column;padding:var(--space-4);overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.14) transparent}._drawerList_11isr_90{overflow:visible;-webkit-overflow-scrolling:auto;touch-action:pan-y}._episodeList_11isr_1::-webkit-scrollbar{width:6px}._episodeList_11isr_1::-webkit-scrollbar-track{background:transparent}._episodeList_11isr_1::-webkit-scrollbar-thumb{background:#ffffff24;background-clip:padding-box;border-radius:var(--radius-full);border:2px solid transparent}._episodeList_11isr_1:hover::-webkit-scrollbar-thumb{background-color:#ffffff47}._episodeList_11isr_1::-webkit-scrollbar-thumb:hover{background-color:var(--accent)}._episodeItem_11isr_119{padding:var(--space-3) var(--space-4);margin-bottom:6px;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);color:var(--text-secondary);font-weight:600;display:flex;justify-content:space-between;align-items:center;font-size:.88rem;border:1px solid transparent;background:#ffffff05}._episodeItem_11isr_119:hover{background:#ffffff12;color:var(--text-primary);transform:translate(4px);border-color:#ffffff1f}._episodeItem_11isr_119:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._episodeItem_11isr_119._watched_11isr_147{color:var(--text-muted);opacity:.55}._episodeItem_11isr_119._watched_11isr_147:hover{opacity:.85}._episodeItem_11isr_119._active_11isr_70{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-light);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);box-shadow:0 2px 10px var(--accent-glow)}._episodeItem_11isr_119._active_11isr_70:hover{transform:none;background:color-mix(in srgb,var(--accent) 18%,transparent);border-color:color-mix(in srgb,var(--accent) 50%,transparent)}._episodeItem_11isr_119 span{display:flex;align-items:center;gap:var(--space-3)}._episodeThumb_11isr_175{width:76px;aspect-ratio:16 / 9;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0;background:var(--bg-tertiary);border:1px solid rgba(255,255,255,.08)}._episodeText_11isr_185{flex-direction:column!important;align-items:flex-start!important;gap:2px!important;min-width:0;flex:1}._episodeLabel_11isr_193{font-weight:700;color:inherit}._episodeSub_11isr_198{font-size:.78rem;font-weight:500;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}._shell_cys6s_1{position:fixed;inset:0;z-index:var(--z-drawer);display:flex;align-items:flex-end;justify-content:center}._overlay_cys6s_10{position:absolute;inset:0;border:0;padding:0;background:#0000008f;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);animation:_fadeIn_cys6s_1 .2s ease-out}._drawer_cys6s_21{position:relative;z-index:1;width:min(100vw,100%);max-height:86vh;background:#0c0c0ffa;border-radius:var(--radius-lg) var(--radius-lg) 0 0;border:1px solid var(--glass-border);border-bottom:none;display:flex;flex-direction:column;overflow:hidden;animation:_slideUpIn_cys6s_1 .25s ease-out}@keyframes _fadeIn_cys6s_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_cys6s_1{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}._handle_cys6s_56{width:52px;height:5px;border-radius:999px;background:#ffffff2e;margin:.7rem auto 0}._header_cys6s_64{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1rem .9rem;border-bottom:1px solid var(--glass-border)}._headerCopy_cys6s_73{display:flex;flex-direction:column;gap:.25rem}._kicker_cys6s_79{color:var(--text-tertiary);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.14em}._title_cys6s_87{margin:0;font-size:1.1rem;font-weight:800;color:var(--text-primary)}._closeBtn_cys6s_94{width:38px;height:38px;border-radius:999px;border:1px solid var(--glass-border);background:#ffffff0d;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}._closeBtn_cys6s_94:hover{background:#ffffff1a}._closeBtn_cys6s_94:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._body_cys6s_116{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}._sourceSelectionContainer_g7xev_1{display:flex;flex-direction:column;gap:1rem;background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:1.25rem 1.5rem;border-radius:var(--radius-xl);width:100%}._providerSelectContainer_g7xev_14{display:flex;flex-direction:column;gap:.6rem;width:100%}._providerSelect_g7xev_14,._sourceSelect_g7xev_1{height:40px;padding:0 1rem;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;font-family:inherit;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast);width:100%;max-width:400px}._providerSelect_g7xev_14:hover,._sourceSelect_g7xev_1:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._providerSelect_g7xev_14:focus,._sourceSelect_g7xev_1:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}._providerSelect_g7xev_14 option,._sourceSelect_g7xev_1 option{background:var(--bg-tertiary);color:var(--text-primary)}._sourceSelectionContainer_g7xev_1 h4,._providerSelectContainer_g7xev_14 h4{margin:0;color:var(--text-tertiary);font-weight:700;text-transform:uppercase;font-size:.7rem;letter-spacing:.1em}._sourceButtons_g7xev_70{display:flex;flex-wrap:wrap;gap:.5rem}._sourceButton_g7xev_70{background:#ffffff0a;color:var(--text-secondary);border:1px solid var(--glass-border);padding:.55rem 1.1rem;border-radius:var(--radius-md);cursor:pointer;font-size:.875rem;font-weight:600;transition:all var(--transition-fast)}._sourceButton_g7xev_70:hover{background:#ffffff17;border-color:#ffffff4d;color:var(--text-primary);transform:translateY(-1px)}._sourceButton_g7xev_70._active_g7xev_95{background:color-mix(in srgb,var(--accent) 14%,transparent);border-color:color-mix(in srgb,var(--accent) 55%,transparent);color:var(--accent-lighter);box-shadow:0 2px 12px var(--accent-glow)}._theaterAmbient_x9t0o_1{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;transform:scale(1.15)!important;pointer-events:none!important;z-index:0!important}body.low-end ._theaterAmbient_x9t0o_1{display:none!important}._row_1fq55_1{display:flex;flex-direction:column;gap:.3rem;padding:.5rem .75rem .6rem;min-width:0}._rowHeader_1fq55_9{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;min-width:0}._rowLabel_1fq55_17{font-size:.68rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._rowValue_1fq55_28{font-size:.72rem;font-weight:600;color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}._slider_1fq55_36{width:100%;min-width:8rem;cursor:pointer;-webkit-appearance:none;appearance:none;background:transparent;height:1.375rem;margin:0;touch-action:pan-y}._slider_1fq55_36::-webkit-slider-runnable-track{width:100%;height:4px;background:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--slider-percent, 0%),rgba(255,255,255,.25) var(--slider-percent, 0%),rgba(255,255,255,.25) 100%);border-radius:4px;border:none}._slider_1fq55_36::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;background-color:#fff;border:2px solid var(--accent);border-radius:50%;cursor:pointer;margin-top:-4px;box-shadow:0 0 8px #00000080}._slider_1fq55_36::-moz-range-track{width:100%;height:4px;background:#ffffff40;border-radius:4px;border:none}._slider_1fq55_36::-moz-range-progress{height:4px;background:var(--accent);border-radius:4px}._slider_1fq55_36::-moz-range-thumb{width:10px;height:10px;background-color:#fff;border:2px solid var(--accent);border-radius:50%;cursor:pointer;box-shadow:0 0 8px #00000080}._swatches_1fq55_99{display:flex;gap:.375rem;align-items:center}._swatch_1fq55_99{width:1.25rem;height:1.25rem;padding:0;border-radius:50%;cursor:pointer;flex:0 0 auto}._swatchPicked_1fq55_114{box-shadow:0 0 0 2px var(--panel-bg, #141416),0 0 0 3.5px var(--accent)}._colorInput_1fq55_120{width:1.75rem;height:1.25rem;padding:0;border:none;border-radius:.3rem;background:transparent;cursor:pointer;flex:0 0 auto}._segmented_1fq55_131{display:flex;gap:.25rem;background:#ffffff0d;border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:.2rem}._segmented_1fq55_131 button{flex:1 1 0;min-width:0;background:transparent;border:none;border-radius:calc(var(--radius-sm) - 2px);color:var(--text-secondary);font-size:.72rem;font-weight:700;text-transform:capitalize;padding:.3rem .25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.3rem;white-space:nowrap}._segmented_1fq55_131 button:hover{color:var(--text-primary)}._segmented_1fq55_131 button[aria-pressed=true]{background:color-mix(in srgb,var(--accent) 25%,transparent);color:var(--accent-light)}@media(pointer:coarse){._row_1fq55_1{gap:.4rem;padding:.6rem .85rem .7rem}._slider_1fq55_36{height:1.875rem}._slider_1fq55_36::-webkit-slider-thumb{width:16px;height:16px;margin-top:-6px}._slider_1fq55_36::-moz-range-thumb{width:14px;height:14px}._swatch_1fq55_99{width:1.5rem;height:1.5rem}._segmented_1fq55_131 button{padding:.5rem .25rem;min-height:2.5rem}}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{u as t,d as C,A as k,T as ee,h as D,$ as ht,q as P}from"./vendor-core-DfaOB3Rn.js";import{p as E,aj as mt,S as Ke,B as Y,F as gt,a5 as re,v as yt,ak as qe,q as Q,ab as _t,t as bt,j as vt,a7 as St,al as He,am as wt}from"./index-CqcwUuWG.js";import{I as j}from"./vendor-icons-C1Pj_eSX.js";import{s as ce,u as Ct,d as xt,m as le}from"./PlayerProvider-BPOUTsvo.js";import{u as kt}from"./vendor-query-BBT5_sHx.js";import{i as de,d as Lt}from"./playbackCompletion-DasRrCt1.js";const Tt="_controls_1ne4g_1",Nt="_titleContainer_1ne4g_9",At="_scheduleInfo_1ne4g_15",Et="_status_1ne4g_23",Bt="_nextEpisode_1ne4g_35",$t="_watchlistBtn_1ne4g_45",Pt="_inList_1ne4g_73",It="_queueBtn_1ne4g_84",Rt="_queueActive_1ne4g_96",Mt="_modeToggleBtn_1ne4g_102",Ot="_modeToggleActive_1ne4g_109",Ft="_markWatchedBtn_1ne4g_130",Dt="_markWatchedDone_1ne4g_144",Wt="_streamPanel_1ne4g_155",qt="_desktopEpisodeActions_1ne4g_169",Ht="_sourceLoader_1ne4g_175",zt="_episodeActions_1ne4g_188",Vt="_mobileEpisodeActions_1ne4g_202",Kt="_episodeNavBtn_1ne4g_206",Ut="_primary_1ne4g_235",Qt="_secondary_1ne4g_245",jt="_episodePickerBtn_1ne4g_249",Gt="_queueCountdown_1ne4g_253",Yt="_speedBoostBadge_1ne4g_268",Xt="_videoContainer_1ne4g_299",Jt="_loadingOverlay_1ne4g_312",Zt="_loadingDots_1ne4g_326",en="_dot_1ne4g_331",tn="_bounce_1ne4g_1",nn="_bufferingOverlay_1ne4g_348",rn="_bufferingSpinner_1ne4g_357",sn="_spin_1ne4g_459",an="_videoIframe_1ne4g_381",on="_videoElementHidden_1ne4g_404",cn="_upscalerCanvas_1ne4g_409",ln="_upscalerActive_1ne4g_422",dn="_upscalerStatusBadge_1ne4g_426",un="_subtitleOverlay_1ne4g_441",fn="_spinner_1ne4g_459",pn="_errorOverlay_1ne4g_526",hn="_retryButton_1ne4g_536",mn="_detailsToggleBtn_1ne4g_549",gn="_descriptionSection_1ne4g_572",yn="_synopsisFlat_1ne4g_580",_n="_fullscreenActive_1ne4g_614",bn="_errorSubtext_1ne4g_657",vn="_watchedOverlay_1ne4g_680",Sn="_watchedTitle_1ne4g_702",wn="_watchedSubtext_1ne4g_708",Cn="_watchedActions_1ne4g_714",xn="_watchedActionsCentered_1ne4g_732",Jr={controls:Tt,titleContainer:Nt,scheduleInfo:At,status:Et,nextEpisode:Bt,watchlistBtn:$t,inList:Pt,queueBtn:It,queueActive:Rt,modeToggleBtn:Mt,modeToggleActive:Ot,markWatchedBtn:Ft,markWatchedDone:Dt,streamPanel:Wt,desktopEpisodeActions:qt,sourceLoader:Ht,episodeActions:zt,mobileEpisodeActions:Vt,episodeNavBtn:Kt,primary:Ut,secondary:Qt,episodePickerBtn:jt,queueCountdown:Gt,speedBoostBadge:Yt,videoContainer:Xt,loadingOverlay:Jt,loadingDots:Zt,dot:en,bounce:tn,bufferingOverlay:nn,bufferingSpinner:rn,spin:sn,videoIframe:an,videoElementHidden:on,upscalerCanvas:cn,upscalerActive:ln,upscalerStatusBadge:dn,subtitleOverlay:un,spinner:fn,errorOverlay:pn,retryButton:hn,detailsToggleBtn:mn,descriptionSection:gn,synopsisFlat:yn,fullscreenActive:_n,errorSubtext:bn,watchedOverlay:vn,watchedTitle:Sn,watchedSubtext:wn,watchedActions:Cn,watchedActionsCentered:xn},kn="_playerPageLayout_1rxx0_1",Ln="_noSidebar_1rxx0_15",Tn="_episodeSidebar_1rxx0_19",Nn="_playerMain_1rxx0_32",An="_videoPlayerWrapper_1rxx0_40",En="_playerInfoHeader_1rxx0_56",Bn="_playerAnimeCard_1rxx0_62",$n="_playerInfoContainer_1rxx0_74",Pn="_infoColumns_1rxx0_104",In="_videoTitleSection_1rxx0_134",Rn="_theaterMode_1rxx0_308",Zr={playerPageLayout:kn,noSidebar:Ln,episodeSidebar:Tn,playerMain:Nn,videoPlayerWrapper:An,playerInfoHeader:En,playerAnimeCard:Bn,playerInfoContainer:$n,infoColumns:Pn,videoTitleSection:In,theaterMode:Rn},ge={default:{label:"Default",family:""},"comic-neue":{label:"Comic Neue",family:"'Comic Neue', sans-serif"},"chakra-petch":{label:"Chakra Petch",family:"'Chakra Petch', sans-serif"},oswald:{label:"Oswald",family:"'Oswald Variable', sans-serif"},"bree-serif":{label:"Bree Serif",family:"'Bree Serif', serif"},"russo-one":{label:"Russo One",family:"'Russo One', sans-serif"},bangers:{label:"Bangers",family:"'Bangers', sans-serif"},"atkinson-hyperlegible":{label:"Atkinson Hyperlegible",family:"'Atkinson Hyperlegible', sans-serif"}};function Ue(e){return typeof e=="string"&&Object.hasOwn(ge,e)}const oe={font:"subtitleFont",fontSize:"subtitleFontSize",position:"subtitlePosition",bgOpacity:"subtitleBgOpacity",bgColor:"subtitleBgColor",textColor:"subtitleTextColor",edge:"subtitleEdge",outlineWidth:"subtitleOutlineWidth",outlineColor:"subtitleOutlineColor",bold:"subtitleBold"},z={font:"default",fontSize:1.8,position:0,bgOpacity:.5,bgColor:"#000000",textColor:"#ffffff",edge:"shadow",outlineWidth:1,outlineColor:"#000000",bold:!1},he=(e,n,r)=>Math.max(n,Math.min(r,e)),ie=e=>typeof e=="string"&&/^#[0-9a-fA-F]{6}$/.test(e),se=(e,n,r,o)=>{try{const s=E.getItem(e);if(s===null)return n;const i=parseFloat(s);return Number.isFinite(i)?he(i,r,o):n}catch{return n}};function Mn(){let e=z.font,n=z.edge,r=z.bgColor,o=z.textColor,s=z.outlineColor,i=z.bold;try{const c=E.getItem(oe.font);Ue(c)&&(e=c);const d=E.getItem("subtitleEdge");(d==="shadow"||d==="outline"||d==="none")&&(n=d);const a=E.getItem("subtitleBgColor");ie(a)&&(r=a);const l=E.getItem("subtitleTextColor");ie(l)&&(o=l);const g=E.getItem(oe.outlineColor);ie(g)&&(s=g);const w=E.getItem("subtitleBold");w!==null&&(i=w==="true")}catch{}return{font:e,fontSize:se("subtitleFontSize",z.fontSize,.5,10),position:se("subtitlePosition",z.position,0,100),bgOpacity:se("subtitleBgOpacity",z.bgOpacity,0,1),bgColor:r,textColor:o,edge:n,outlineWidth:se(oe.outlineWidth,z.outlineWidth,.5,4),outlineColor:s,bold:i}}function ye(e,n){const r=`rgba(0, 0, 0, ${he(n,0,1)})`;if(!ie(e))return r;const o=parseInt(e.slice(1,3),16),s=parseInt(e.slice(3,5),16),i=parseInt(e.slice(5,7),16);return`rgba(${o}, ${s}, ${i}, ${he(n,0,1)})`}function Qe(e,n,r){return e==="none"?"none":e==="outline"?[`-${n}px 0 0 ${r}`,`${n}px 0 0 ${r}`,`0 -${n}px 0 ${r}`,`0 ${n}px 0 ${r}`,`-${n}px -${n}px 0 ${r}`,`${n}px -${n}px 0 ${r}`,`-${n}px ${n}px 0 ${r}`,`${n}px ${n}px 0 ${r}`,`0 0 6px ${ye(r,.9)}`].join(", "):"0 0 4px black, 0 1px 2px rgba(0, 0, 0, 0.8)"}function es(e){return`
|
|
2
|
+
video::cue {
|
|
3
|
+
${e.font==="default"?"":`font-family: ${ge[e.font].family} !important;`}
|
|
4
|
+
font-size: ${e.fontSize}rem !important;
|
|
5
|
+
color: ${e.textColor} !important;
|
|
6
|
+
background-color: ${ye(e.bgColor,e.bgOpacity)} !important;
|
|
7
|
+
font-weight: ${e.bold?"bold":"normal"} !important;
|
|
8
|
+
text-shadow: ${Qe(e.edge,e.outlineWidth,e.outlineColor)} !important;
|
|
9
|
+
}
|
|
10
|
+
`}function ts(e){return[...e.font==="default"?[]:[`font-family: ${ge[e.font].family}`],`font-size: ${e.fontSize}rem`,`color: ${e.textColor}`,`background-color: ${ye(e.bgColor,e.bgOpacity)}`,`font-weight: ${e.bold?"700":"400"}`,`text-shadow: ${Qe(e.edge,e.outlineWidth,e.outlineColor)}`,"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(`;
|
|
11
|
+
`)+";"}const On=new Set(["b","i","u","strong","em"]);function ns(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/<(\/?)([a-zA-Z]+)>/g,(r,o,s)=>On.has(s.toLowerCase())?`<${o}${s.toLowerCase()}>`:r)}function rs(e){return e.replace(/<[^>]*>/g,"")}const ss=["#ffffff","#ffff00","#7CFC00","#00e5ff","#ff9ff3","#ffa502"],as=["#000000","#1e272e","#2f3542","#3d0c02","#0c3d2e","#ffffff"],os=["#000000","#ffffff","#ffff00","#00e5ff","#ff9ff3","#ffa502"];function is(e,n){const r=Number.isFinite(e)?e*16:z.fontSize*16;return!Number.isFinite(n)||n<=0?r/16:Math.min(r,Math.max(13,n*.07))/16}function cs(e){const n=Math.abs(e/1e3).toFixed(1);return e>0?`+${n}s`:e<0?`-${n}s`:"0.0s"}function ls(e,n){const r=e.clientWidth||0,o=e.clientHeight||0,s=e.videoWidth>0&&e.videoHeight>0?e.videoWidth/e.videoHeight:0;let i=o;s>0&&r>0&&o>0&&(i=r/o>s?o:r/s);const c=Math.max(0,(o-i)/2),d=Math.max(0,Math.min(100,Number(n)||0))/100*i;return c+d}const ds=({isOpen:e,onClose:n,title:r,heading:o,message:s,children:i})=>t(Ke,{isOpen:e,onClose:n,title:r,width:"sm",children:t("div",{style:{padding:"1rem",textAlign:"center"},children:[t("button",{type:"button",className:mt.closeButton,onClick:n,"aria-label":"Close",children:t(j,{name:"times",size:16})}),t(j,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),t("p",{style:{fontSize:"1.1rem",fontWeight:600},children:o}),t("p",{style:{color:"var(--text-secondary)"},children:s}),i&&t("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center",flexWrap:"wrap"},children:i})]})}),us=({isOpen:e,onClose:n,title:r,message:o,resumeLabel:s="Resume",restartLabel:i="Start Over",onResume:c,onRestart:d})=>t(Ke,{isOpen:e,onClose:n,title:r,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:d,children:i}),t(Y,{onClick:c,children:s})]})]})}),fs=({visible:e,title:n,episode:r,server:o,mode:s,audio:i,subtitles:c,onBack:d,classes:a})=>t("div",{className:`${a.overlay} ${e?"":a.hidden} `,"data-speed-boost-ignore":"true",style:{pointerEvents:"none",background:"none"},children:t("div",{className:a.top,onClick:l=>l.stopPropagation(),children:[t("button",{className:a.backBtn,onClick:l=>{l.stopPropagation(),d()},title:"Back","aria-label":"Back",children:t(j,{name:"chevron-left"})}),t("div",{className:`${a.titleInfo} ${ce.topBarTitleInfo}`,children:[t("span",{className:a.title,children:n}),r&&t("span",{className:a.episode,children:r}),(s||o||i||c)&&t("div",{className:ce.streamDetails,children:[s&&t("span",{className:ce.modeTag,children:s.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]})]})]})]})}),Fn=e=>(e.language??e.lang??"").toLowerCase(),Dn=e=>(e.label??"").toLowerCase(),Wn=e=>`${e.language??e.lang??""}|||${e.label??""}`,qn=e=>Fn(e).startsWith("en")||Dn(e).includes("english");function ps(e,n){if(e.length===0||n?.enabled===!1)return-1;const r=n?.lastKey??null;if(r){const s=e.findIndex(c=>Wn(c)===r);if(s>=0)return s;const i=r.indexOf("|||");if(i>=0){const c=r.slice(0,i),d=r.slice(i+3),a=e.findIndex(l=>{const g=l.language??l.lang??"",w=l.label??"";return d!==""&&w===d||c!==""&&c!=="undefined"&&(g===c||w===c)});if(a>=0)return a}else{const c=e.findIndex(d=>d.label===r||d.language===r||d.lang===r);if(c>=0)return c}}const o=e.findIndex(qn);return o>=0?o:0}const Hn="_statusArea_1xccu_1",zn="_toggleBtn_1xccu_20",Vn="_shortcuts_1xccu_46",Kn="_shortcutGroup_1xccu_56",Un="_shortcut_1xccu_46",Qn="_key_1xccu_70",jn="_label_1xccu_91",S={statusArea:Hn,toggleBtn:zn,shortcuts:Vn,shortcutGroup:Kn,shortcut:Un,key:Qn,label:jn},hs=({showTheater:e=!0})=>{const[n,r]=C(!1);return t("div",{className:S.statusArea,children:[t("button",{type:"button",className:S.toggleBtn,onClick:()=>r(o=>!o),"aria-expanded":n,"aria-controls":"player-shortcuts",children:[t(j,{name:"keyboard",size:14}),t("span",{children:"Keyboard Shortcuts"}),n?t(j,{name:"chevron-up",size:12}):t(j,{name:"chevron-down",size:12})]}),n&&t("div",{id:"player-shortcuts",className:S.shortcuts,children:[t("div",{className:S.shortcutGroup,children:[t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"↑"}),t("span",{className:S.key,children:"↓"}),t("span",{className:S.label,children:"Volume"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"←"}),t("span",{className:S.key,children:"→"}),t("span",{className:S.label,children:"Seek"})]})]}),t("div",{className:S.shortcutGroup,children:[t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"Space"}),t("span",{className:S.label,children:"Play/Pause"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"F"}),t("span",{className:S.label,children:"Fullscreen"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"M"}),t("span",{className:S.label,children:"Mute"})]}),e&&t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"T"}),t("span",{className:S.label,children:"Theater"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"P"}),t("span",{className:S.label,children:"Previous"})]}),t("div",{className:S.shortcut,children:[t("span",{className:S.key,children:"N"}),t("span",{className:S.label,children:"Next"})]})]})]})]})},Gn="_episodeListContainer_11isr_1",Yn="_drawerContainer_11isr_9",Xn="_episodeListHeader_11isr_14",Jn="_drawerHeader_11isr_20",Zn="_episodeListTitle_11isr_29",er="_rangeSelector_11isr_41",tr="_rangeButton_11isr_47",nr="_active_11isr_70",rr="_episodeList_11isr_1",sr="_drawerList_11isr_90",ar="_episodeItem_11isr_119",or="_watched_11isr_147",ir="_episodeThumb_11isr_175",cr="_episodeText_11isr_185",lr="_episodeLabel_11isr_193",dr="_episodeSub_11isr_198",x={episodeListContainer:Gn,drawerContainer:Yn,episodeListHeader:Xn,drawerHeader:Jn,episodeListTitle:Zn,rangeSelector:er,rangeButton:tr,active:nr,episodeList:rr,drawerList:sr,episodeItem:ar,watched:or,episodeThumb:ir,episodeText:cr,episodeLabel:lr,episodeSub:dr},ur=({episodes:e,currentEpisode:n,watchedEpisodes:r=[],onEpisodeClick:o,variant:s="sidebar",title:i="Episodes",header:c})=>{const[d,a]=C(0),l=k(null),g=ee(()=>e.map(u=>typeof u=="string"?{id:u,label:`Episode ${u}`}:u),[e]),w=ee(()=>new Set(r),[r]);D(()=>{const u=l.current;if(!u)return;let f=u.parentElement;for(;f;){const y=window.getComputedStyle(f);if((y.overflowY==="auto"||y.overflowY==="scroll")&&f.scrollHeight>f.clientHeight)break;f=f.parentElement}if(!f)return;const T=f.getBoundingClientRect(),p=u.getBoundingClientRect();f.scrollTop+=p.top+p.height/2-(T.top+f.clientHeight/2)},[n,d]);const L=ee(()=>{if(g.length<=100)return[];const u=[];for(let f=0;f<g.length;f+=100){const T=f+1,p=Math.min(f+100,g.length);u.push(`${T}-${p}`)}return u},[g]),I=ee(()=>{if(L.length===0)return g;const u=L[d];if(!u)return g;const[f,T]=u.split("-"),p=parseInt(f,10),y=parseInt(T,10);return g.slice(p-1,y)},[g,L,d]);return t("div",{className:`${x.episodeListContainer} ${s==="drawer"?x.drawerContainer:""}`,children:[t("div",{className:`${x.episodeListHeader} ${s==="drawer"?x.drawerHeader:""}`,children:[c,t("h3",{className:x.episodeListTitle,children:i}),L.length>0&&t("div",{className:x.rangeSelector,children:L.map((u,f)=>t("button",{className:`${x.rangeButton} ${d===f?x.active:""}`,onClick:()=>a(f),children:u},u))})]}),t("div",{className:`${x.episodeList} ${s==="drawer"?x.drawerList:""}`,children:I.map(u=>{const f=u.id===n,T=w.has(u.id)||u.watched===!0;return t("div",{ref:f?l:void 0,className:`${x.episodeItem} ${T?x.watched:""} ${f?x.active:""}`,onClick:()=>o(u.id),children:[u.thumbnail&&t(gt,{src:u.thumbnail,alt:"",loading:"lazy",decoding:"async",className:x.episodeThumb}),t("span",{className:x.episodeText,children:[t("span",{className:x.episodeLabel,children:u.label??`Episode ${u.id}`}),u.sublabel&&t("span",{className:x.episodeSub,children:u.sublabel})]})]},u.id)})})]})},ms=({variant:e="sidebar",count:n=12})=>t("div",{className:`${x.episodeListContainer} ${e==="drawer"?x.drawerContainer:""}`,children:[t("div",{className:`${x.episodeListHeader} ${e==="drawer"?x.drawerHeader:""}`,children:[t("h3",{className:x.episodeListTitle,children:"Episodes"}),t("div",{className:x.rangeSelector,children:[t(re,{width:"60px",height:"28px",variant:"rectangular"}),t(re,{width:"60px",height:"28px",variant:"rectangular"}),t(re,{width:"60px",height:"28px",variant:"rectangular"})]})]}),t("div",{className:`${x.episodeList} ${e==="drawer"?x.drawerList:""}`,children:Array.from({length:n}).map((r,o)=>t("div",{className:x.episodeItem,style:{border:"none",background:"transparent"},children:t(re,{width:"120px",height:"1.2rem",variant:"text"})},o))})]}),fr="_shell_cys6s_1",pr="_overlay_cys6s_10",hr="_drawer_cys6s_21",mr="_handle_cys6s_56",gr="_header_cys6s_64",yr="_headerCopy_cys6s_73",_r="_kicker_cys6s_79",br="_title_cys6s_87",vr="_closeBtn_cys6s_94",Sr="_body_cys6s_116",K={shell:fr,overlay:pr,drawer:hr,handle:mr,header:gr,headerCopy:yr,kicker:_r,title:br,closeBtn:vr,body:Sr};function gs({isOpen:e,onClose:n,episodes:r,currentEpisode:o,watchedEpisodes:s=[],onEpisodeClick:i,title:c,header:d}){return D(()=>{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?ht(t("div",{className:K.shell,role:"dialog","aria-modal":"true","aria-label":"Episode picker",children:[t("button",{className:K.overlay,type:"button",onClick:n,"aria-label":"Close episodes"}),t("aside",{className:K.drawer,children:[t("div",{className:K.handle}),t("div",{className:K.header,children:[t("div",{className:K.headerCopy,children:[t("span",{className:K.kicker,children:"Episode picker"}),t("h3",{className:K.title,children:"Choose an episode"})]}),t("button",{className:K.closeBtn,type:"button",onClick:n,"aria-label":"Close",children:t(j,{name:"times"})})]}),t("div",{className:K.body,children:t(ur,{episodes:r,currentEpisode:o,watchedEpisodes:s,onEpisodeClick:i,variant:"drawer",title:c,header:d})})]})]}),document.body):null}const wr="_sourceSelectionContainer_g7xev_1",Cr="_providerSelectContainer_g7xev_14",xr="_providerSelect_g7xev_14",kr="_sourceSelect_g7xev_1",Lr="_sourceButtons_g7xev_70",Tr="_sourceButton_g7xev_70",Nr="_active_g7xev_95",ys={sourceSelectionContainer:wr,providerSelectContainer:Cr,providerSelect:xr,sourceSelect:kr,sourceButtons:Lr,sourceButton:Tr,active:Nr},_s=({skipIntervals:e,showId:n,episodeNumber:r,episodeCount:o,sourceType:s,showMeta:i})=>{const c=kt(),d=yt(),{engine:a,mediaRef:l}=Ct({volumeKey:"playerVolume",mutedKey:"playerMuted"}),{isPlaying:g,isMuted:w,volume:L,duration:I,isScrubbing:u,isBuffering:f,isFullscreen:T,isSpeedBoostActive:p,showControls:y,playbackLocked:_}=xt(a),B=a.containerRef,h=k(null),N=k(0),F=k(Math.random().toString(36).substring(2)),b=a.setShowControls,[$,W]=C(E.getItem("autoSkipEnabled")==="true"),[U,A]=C(null),[H]=C(Mn),[je,_e]=C(H.font),[Ge,be]=C(H.fontSize),[Ye,ve]=C(H.position),[Xe,Se]=C(H.bgOpacity),[Je,we]=C(H.bgColor),[Ze,Ce]=C(H.textColor),[et,xe]=C(H.edge),[tt,ke]=C(H.outlineWidth),[nt,Le]=C(H.outlineColor),[rt,Te]=C(H.bold),Ne=P((v,R)=>{if({font:m=>Ue(m)?(_e(m),!0):!1,fontSize:m=>typeof m!="number"?!1:(be(m),!0),position:m=>typeof m!="number"?!1:(ve(m),!0),bgOpacity:m=>typeof m!="number"?!1:(Se(m),!0),bgColor:m=>typeof m!="string"?!1:(we(m),!0),textColor:m=>typeof m!="string"?!1:(Ce(m),!0),edge:m=>m!=="shadow"&&m!=="outline"&&m!=="none"?!1:(xe(m),!0),outlineWidth:m=>typeof m!="number"?!1:(ke(m),!0),outlineColor:m=>typeof m!="string"?!1:(Le(m),!0),bold:m=>typeof m!="boolean"?!1:(Te(m),!0)}[v](R))try{E.setItem(oe[v],String(R))}catch{}},[]),[st,at]=C([]),[ot,it]=C(null),[ct,lt]=C(!1),[dt,ut]=C(!1),[ft,Ae]=C(()=>{try{return E.getItem("playerUseNativeControls")==="true"}catch{return!1}}),X=k(!1),te=k(-1),ne=P(()=>{const v=l.current;return!n||!r||!i?.name?null:{showId:n,episodeNumber:r,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:s==="iframe",sessionId:F.current,isAdult:i.isAdult}},[a,l,n,r,o,i,s]),M=P((v=!1,R=!1)=>{if(X.current)return!1;const q=ne();if(!q)return!1;const m=l.current;if(!m&&!v&&s!=="iframe"||s!=="iframe"&&q.duration<=0)return!1;const V=a.getTimeline().currentTime;if(!R){if(V===0)return!1;const Z=m?Math.abs(V-te.current):0;if(!v&&m&&V!==m.duration&&Z<5)return!1}return q.currentTime=V,te.current=V,v?(async()=>{try{await qe("progress.updateProgress",q),c.invalidateQueries({queryKey:[Q.playerData,n]}),c.invalidateQueries({queryKey:[Q.videoSources,n,r]}),c.invalidateQueries({queryKey:[Q.continueWatching]}),c.invalidateQueries({queryKey:[Q.thisWeekSchedule]}),c.invalidateQueries(d.continueWatching.pathFilter())}catch(Z){console.error("Failed to update progress:",Z)}})():qe("progress.updateProgress",q).then(()=>{de(q.currentTime,q.duration)&&c.invalidateQueries({queryKey:[Q.playerData,n]})}).catch(Z=>console.error("Failed to update progress:",Z)),!0},[a,ne,s,c,n,r,d.continueWatching,l]);D(()=>{const v=()=>{X.current||M(!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),X.current||M(!0),q.current&&clearTimeout(q.current)}},[M]);const Ee=P(()=>a.setShowControls(!0),[a]),Be=a.toggleFullscreen,$e=P(()=>{a.togglePlay(),b(!0)},[a,b]),Pe=P(()=>{a.toggleMute(),b(!0)},[a,b]),Ie=P(v=>{a.seekRelative(v),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>M(!1,!0),1500),b(!0)},[a,M,b]),Re=P(()=>{X.current=!1,M(!1,!0)},[M]),Me=P(()=>{b(!0),M(!1,!0)},[M,b]);D(()=>{X.current=!1,te.current=-1,N.current=0,F.current=Math.random().toString(36).substring(2),a.reset()},[a,n,r]);const Oe=a.reset;D(()=>{const v=F.current;return()=>{_t(v)}},[a,n,r]),D(()=>{if(s!=="iframe")return;M(!1,!0);const v=setInterval(()=>{M(!1,!0)},6e4);return()=>clearInterval(v)},[s,M]);const Fe=P(()=>{const v=l.current;if(!v)return;const R=v.currentTime||0,q=Date.now(),m=de(R,v.duration)&&!de(te.current,v.duration);(m||q-N.current>6e4)&&M(!1,m)&&(N.current=q);const V=e.find(J=>R>=J.start_time&&R<J.end_time)||null;A(J=>J?.skip_id!==V?.skip_id?V:J),$&&V&&!v.paused&&!a.getState().playbackLocked&&(a.seek(V.end_time),A(null))},[l,e,$,M,a]),De=P(()=>{const v=ne();v&&(v.currentTime=v.duration,bt.progress.updateProgress.mutate(v).then(()=>{c.invalidateQueries({queryKey:[Q.playerData,n]}),c.invalidateQueries({queryKey:[Q.videoSources,n,r]}),c.invalidateQueries({queryKey:[Q.continueWatching]})}).catch(R=>console.error("Failed to send final progress:",R)))},[ne,c,n,r]),We=P(()=>{X.current=!0,De()},[De]),pt=ee(()=>({togglePlay:$e,seek:Ie,toggleMute:Pe,toggleFullscreen:Be,onPlay:Re,onPause:Me,formatTime:vt,onTimeUpdate:Fe,onEnded:We,setShowControls:b,setIsAutoSkipEnabled:W,setCurrentSkipInterval:A,setSubtitleFont:_e,setSubtitleFontSize:be,setSubtitlePosition:ve,setSubtitleBgOpacity:Se,setSubtitleBgColor:we,setSubtitleTextColor:Ce,setSubtitleEdge:xe,setSubtitleOutlineWidth:ke,setSubtitleOutlineColor:Le,setSubtitleBold:Te,setSubtitleStyle:Ne,setAvailableSubtitles:at,setActiveSubtitleTrack:it,setShowSettings:lt,setShowVolumeSlider:ut,flashControls:Ee,sendProgressUpdate:M,setUseNativeControls:Ae,resetMediaState:Oe}),[$e,Ie,Pe,Be,Re,Me,Fe,We,M,Ae,Oe,Ee,Ne,b]);return{engine:a,refs:{videoRef:l,playerContainerRef:B},state:{playbackLocked:_,isPlaying:g,isMuted:w,volume:L,isFullscreen:T,duration:I,showControls:y,isScrubbing:u,isAutoSkipEnabled:$,currentSkipInterval:U,subtitleFont:je,subtitleFontSize:Ge,subtitlePosition:Ye,subtitleBgOpacity:Xe,subtitleBgColor:Je,subtitleTextColor:Ze,subtitleEdge:et,subtitleOutlineWidth:tt,subtitleOutlineColor:nt,subtitleBold:rt,availableSubtitles:st,activeSubtitleTrack:ot,showSettings:ct,showVolumeSlider:dt,isBuffering:f,isSpeedBoostActive:p,useNativeControls:ft},actions:pt}};function Ar(){try{return typeof navigator<"u"&&/android/i.test(navigator.userAgent)}catch{return!1}}function bs(e,n){const{refs:r,actions:o}=e,s=k(n);s.current=n;const i=k(!1),c=k(!1),d=a=>{try{if(a)return a.matches}catch{}try{return window.innerWidth>window.innerHeight}catch{return!1}};D(()=>{if(!Ar())return;let a=null;const l=()=>{const g=r.playerContainerRef.current;if(d(a)){if(!s.current||!g||le(r.videoRef.current)||c.current)return;i.current=!0,o.toggleFullscreen()}else c.current=!1,i.current&&(i.current=!1,le(r.videoRef.current)&&o.toggleFullscreen())};try{a=window.matchMedia("(orientation: landscape)"),a.addEventListener?a.addEventListener("change",l):a.addListener(l)}catch{}return l(),()=>{try{a&&(a.removeEventListener?a.removeEventListener("change",l):a.removeListener(l))}catch{}}},[o,r.playerContainerRef,r.videoRef,n]),D(()=>{const a=()=>{if(!le(r.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)}},[r.videoRef])}const Er=e=>Math.max(8,Math.min(40,Math.ceil(e/16.7)+4));function vs({videoRef:e,canvasRef:n,delayMs:r,enabled:o}){const s=k(r);s.current=r;const i=k([]),c=k(-1),d=k(-1),a=k(!1),l=k(0),g=k(null);D(()=>{const w=p=>{if(p)try{p.close()}catch{}},L=()=>{for(const p of i.current)w(p.bitmap);i.current=[]};if(!o){L(),c.current=-1,d.current=-1,a.current=!1,l.current=0;return}let I=!1;const u=()=>{g.current!==null&&(cancelAnimationFrame(g.current),g.current=null)},f=()=>{I||(u(),g.current=requestAnimationFrame(()=>{T()}))};async function T(){if(I)return;const p=e.current,y=n.current;if(!p||!y||p.videoWidth===0){f();return}if(p.paused||p.ended||document.hidden||p.readyState<HTMLMediaElement.HAVE_CURRENT_DATA){f();return}const _=p.getVideoPlaybackQuality().totalVideoFrames;if(_===c.current){f();return}(p.seeking||d.current>=0&&Math.abs(p.currentTime-d.current)>.5)&&(L(),a.current=!1,l.current=0,c.current=-1),d.current=p.currentTime,(y.width!==p.videoWidth||y.height!==p.videoHeight)&&(y.width=p.videoWidth,y.height=p.videoHeight);const B=Math.max(0,s.current||0);B>l.current&&(a.current=!1);try{const h=await createImageBitmap(p);if(I){w(h);return}c.current=_;const N=performance.now(),F=y.getContext("2d"),b=A=>{F&&F.drawImage(A,0,0,y.width,y.height)};if(B<=0){L(),a.current=!1,l.current=0,b(h),w(h),f();return}const $=i.current;$.push({bitmap:h,capture:N});const W=Er(B);for(;$.length>W;)w($.shift()?.bitmap);let U=-1;for(let A=$.length-1;A>=0;A--)if(N-$[A].capture>=B){U=A;break}if(U!==-1){for(let H=0;H<U;H++)w($.shift()?.bitmap);const A=$.shift();A?(b(A.bitmap),w(A.bitmap),a.current=!0,l.current=B):b(h)}else if(!a.current)b(h);else{const A=$.shift();A?(b(A.bitmap),w(A.bitmap)):b(h)}}catch{}f()}return f(),()=>{I=!0,u();for(const p of i.current)try{p.bitmap.close()}catch{}i.current=[]}},[o,e,n])}const ze=(e,n)=>{try{E.setItem("playerVideoDelayMs",String(e)),E.setItem("playerVideoDelayEnabled",String(n))}catch{}},Ve=e=>{try{E.setItem("playerVideoDelayEnabled",String(e))}catch{}};function Ss(e,n){const[r,o]=C(()=>{try{const _=Number(E.getItem("playerVideoDelayMs"));if(Number.isFinite(_)&&_>=0&&_<=500)return Math.round(_)}catch{}return 180}),[s,i]=C(()=>{try{return E.getItem("playerVideoDelayEnabled")==="true"}catch{return!1}}),[c,d]=C(!1),[a,l]=C(!1),g=k(null),w=k(null),L=_=>{const B=Math.max(0,Math.min(500,Math.round(_)));o(B);try{E.setItem("playerVideoDelayMs",String(B))}catch{}},I=_=>{i(_),Ve(_)},u=P(()=>{l(!1),d(!1)},[]);return{videoDelayMs:r,videoDelayEnabled:s,setDelayEnabled:I,handleVideoDelayChange:L,isCalibrating:c,testClipActive:a,stopCalibration:u,openAvSyncCalibrator:()=>{g.current={enabled:s,ms:r},i(!0),Ve(!0),n?.(),d(!0)},cancelAvSyncCalibrator:()=>{const _=g.current;g.current=null,_&&(o(_.ms),i(_.enabled),ze(_.ms,_.enabled)),l(!1),d(!1)},applyAvSyncCalibrator:()=>{g.current=null,i(!0),ze(r,!0),l(!1),d(!1)},toggleTestClip:()=>{if(a){l(!1);return}const _=e.current;_&&!isNaN(_.currentTime)&&(w.current=_.currentTime),l(!0)},calibReturnRef:w,effectiveVideoDelayMs:s?r:0}}function ws(){const[e,n]=C(()=>{try{return E.getItem("playerTheaterMode")==="true"}catch{return!1}});D(()=>{try{e?document.body.classList.add("theater-mode"):document.body.classList.remove("theater-mode")}catch(s){console.error(s)}return()=>{try{document.body.classList.remove("theater-mode")}catch(s){console.error(s)}}},[e]);const r=P(()=>{n(s=>{const i=!s;try{E.setItem("playerTheaterMode",i.toString())}catch{}return i})},[]),o=P(s=>{if(e&&s.target===s.currentTarget){n(!1);try{E.setItem("playerTheaterMode","false")}catch{}}},[e]);return{isTheaterMode:e,toggleTheaterMode:r,handleLayoutClick:o}}const G={enabled:!0,blur:60,saturation:150,brightness:70,opacity:60};function Br(){try{const e=E.getItem("playerAmbientLight");if(!e)return G;const n=JSON.parse(e),r=(o,s,i,c)=>{const d=Number(o);return Number.isFinite(d)?Math.max(i,Math.min(c,d)):s};return{enabled:n.enabled??G.enabled,blur:r(n.blur,G.blur,0,120),saturation:r(n.saturation,G.saturation,0,200),brightness:r(n.brightness,G.brightness,20,120),opacity:r(n.opacity,G.opacity,10,100)}}catch{return G}}function Cs(){const[e,n]=C(Br),r=P(o=>{n(s=>{const i={...s,...o};try{E.setItem("playerAmbientLight",JSON.stringify(i))}catch{}return i})},[]);return{settings:e,update:r}}const $r="_theaterAmbient_x9t0o_1",Pr={theaterAmbient:$r},ue=160,fe=90,Ir=120,xs=({videoRef:e,active:n,settings:r,className:o})=>{const s=k(null);return D(()=>{if(!n)return;const i=s.current,c=e.current;if(!i||!c)return;const d=i.getContext("2d",{alpha:!1});if(!d)return;let a=0,l=0,g=!1;const w=()=>{if(!(c.readyState<2||!c.videoWidth))try{const f=c.videoWidth,T=c.videoHeight,p=ue/fe,y=f/T;let _=f,B=T,h=0,N=0;y>p?(_=T*p,h=(f-_)/2):(B=f/p,N=(T-B)/2),d.drawImage(c,h,N,_,B,0,0,ue,fe)}catch{}},L=f=>{g||c.paused||(a=requestAnimationFrame(L),!(f-l<Ir)&&(l=f,w()))},I=()=>{g||(cancelAnimationFrame(a),l=0,a=requestAnimationFrame(L))},u=()=>cancelAnimationFrame(a);return c.addEventListener("play",I),c.addEventListener("pause",u),c.addEventListener("seeked",w),c.addEventListener("loadeddata",w),a=requestAnimationFrame(L),()=>{g=!0,cancelAnimationFrame(a),c.removeEventListener("play",I),c.removeEventListener("pause",u),c.removeEventListener("seeked",w),c.removeEventListener("loadeddata",w)}},[n,e]),n?t("canvas",{ref:s,width:ue,height:fe,"aria-hidden":"true",className:o??Pr.theaterAmbient,style:{filter:`blur(${r.blur}px) saturate(${r.saturation}%) brightness(${r.brightness}%)`,opacity:r.opacity/100}}):null},Rr="_row_1fq55_1",Mr="_rowHeader_1fq55_9",Or="_rowLabel_1fq55_17",Fr="_rowValue_1fq55_28",Dr="_slider_1fq55_36",Wr="_swatches_1fq55_99",qr="_swatch_1fq55_99",Hr="_swatchPicked_1fq55_114",zr="_colorInput_1fq55_120",Vr="_segmented_1fq55_131",O={row:Rr,rowHeader:Mr,rowLabel:Or,rowValue:Fr,slider:Dr,swatches:Wr,swatch:qr,swatchPicked:Hr,colorInput:zr,segmented:Vr},Kr=({label:e,display:n,min:r,max:o,step:s,value:i,percent:c,onChange:d,onCommit:a})=>t("div",{className:O.row,children:[t("div",{className:O.rowHeader,children:[t("span",{className:O.rowLabel,children:e}),t("span",{className:O.rowValue,children:n})]}),t("input",{type:"range",className:O.slider,min:r,max:o,step:s,value:i,"aria-label":e,"data-speed-boost-ignore":"true",onInput:l=>d(Number(l.target.value)),onMouseDown:l=>l.stopPropagation(),onPointerDown:l=>l.stopPropagation(),onTouchStart:l=>l.stopPropagation(),onPointerUp:a,onPointerCancel:a,onTouchEnd:a,onKeyUp:a,onBlur:a,style:{"--slider-percent":`${c}%`}})]}),ks=({label:e,colors:n,value:r,onChange:o})=>t("div",{className:O.row,children:[t("div",{className:O.rowHeader,children:t("span",{className:O.rowLabel,children:e})}),t("div",{className:O.swatches,children:[n.map(s=>t("button",{type:"button","aria-label":`${e} ${s}`,"aria-pressed":r.toLowerCase()===s.toLowerCase(),onClick:()=>o(s),className:`${O.swatch} ${r.toLowerCase()===s.toLowerCase()?O.swatchPicked:""}`,style:{backgroundColor:s}},s)),t("input",{type:"color","aria-label":`Custom ${e.toLowerCase()}`,className:O.colorInput,value:r,"data-speed-boost-ignore":"true",onInput:s=>o(s.target.value),onMouseDown:s=>s.stopPropagation(),onPointerDown:s=>s.stopPropagation(),onTouchStart:s=>s.stopPropagation()})]})]});function Ls({label:e,options:n,value:r,onChange:o}){return t("div",{className:O.row,children:[t("div",{className:O.rowHeader,children:t("span",{className:O.rowLabel,children:e})}),t("div",{className:O.segmented,role:"group","aria-label":e,children:n.map(s=>t("button",{type:"button","aria-pressed":r===s,onClick:()=>o(s),children:[t("span",{children:s}),r===s&&t(j,{name:"check",size:10})]},s))})]})}const ae=10,me=500,pe=e=>Math.max(0,Math.min(me,Math.round(e))),Ts=({isOpen:e,ms:n,onChange:r,onApply:o,onClose:s,testClipActive:i,onTestClip:c})=>e?t("div",{role:"dialog","aria-label":"Calibrate audio video sync","data-speed-boost-ignore":"true",onClick:d=>d.stopPropagation(),style:{position:"absolute",right:8,bottom:112,width:"min(260px, calc(100% - 16px))",maxHeight:"calc(100% - 124px)",overflowY:"auto",overflowX:"hidden",zIndex:60,display:"flex",flexDirection:"column",alignItems:"center",gap:8,padding:12,borderRadius:"var(--radius-lg)",border:"1px solid var(--glass-border)",background:"rgba(18, 18, 22, 0.95)",boxShadow:"var(--glass-shadow)",backdropFilter:"blur(14px)",WebkitBackdropFilter:"blur(14px)",boxSizing:"border-box"},children:[t("div",{style:{fontSize:"0.8rem",fontWeight:800,color:"var(--text-primary)"},children:"A/V sync"}),t("div",{children:t(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:()=>r(pe(n-ae)),"aria-label":"Decrease delay by 10 milliseconds",children:["− ",ae,"ms"]}),t("div",{style:{fontSize:"1.1rem",fontWeight:800,minWidth:64,textAlign:"center"},children:[n,"ms"]}),t(Y,{size:"sm",onClick:()=>r(pe(n+ae)),"aria-label":"Increase delay by 10 milliseconds",children:["+ ",ae,"ms"]})]}),t(Kr,{label:"Video delay",display:`${n}ms`,min:0,max:me,step:5,value:n,percent:n/me*100,onChange:d=>r(pe(d))}),t("div",{style:{display:"flex",gap:8,justifyContent:"center",flexWrap:"wrap"},children:[t(Y,{size:"sm",variant:"secondary",onClick:s,children:"Cancel"}),t(Y,{size:"sm",onClick:o,children:["Apply ",n,"ms"]})]})]}):null;function Ns({videoRef:e,sourceType:n,resetKey:r,onEnd:o}){const s=k(!1),i=k(o);i.current=o,D(()=>{s.current=!1},[r]);const c=P(()=>{const a=e.current?.duration;!a||!Number.isFinite(a)||console.info(`[playback] duration ${a.toFixed(2)}s`)},[e]);return{checkEnd:P((a=!1)=>{const l=e.current;!l||n==="iframe"||s.current||!a&&!Lt(l.currentTime,l.duration)||(s.current=!0,console.info(`[playback] end reached at ${l.currentTime.toFixed(2)}s / ${l.duration.toFixed(2)}s`),i.current())},[n,e]),logDuration:c}}function As(e,n,r){const o=St(),s=k({watch:o,selection:n,loading:r});s.current={watch:o,selection:n,loading:r};const[i,c]=C(!1),d=k(""),a=k(""),l=k(""),g=k(!1),w=!!o.session&&!o.session.host;D(()=>(!o.session&&g.current&&e.applyRemotePlayback(void 0,!1,1),g.current=!!o.session,e.setPlaybackLocked(!!o.session&&(w||!o.connected)),o.session&&!o.connected&&e.applyRemotePlayback(void 0,!1,1),()=>e.setPlaybackLocked(!1)),[e,w,o.connected,o.session]);const L=P((I=!1)=>{const{watch:u,selection:f,loading:T}=s.current,p=e.mediaRef.current;if(!u.session||!u.room||!p)return;if(u.session.host){u.connected&&u.selfId!==l.current&&!T&&f&&p.readyState>=1&&(l.current=u.selfId,He(f,u.room.selection)&&e.applyRemotePlayback(u.room.position,!1,u.room.rate));return}const y=u.room,_=f&&He(f,y.selection);if(!u.connected||T||!_||p.readyState<1){e.applyRemotePlayback(void 0,!1,y.rate);return}const B=Date.now()+u.clock.offset-y.updatedAt<15e3;if(y.playing&&!B){e.applyRemotePlayback(void 0,!1,y.rate);return}const h=y.playing&&y.hostOnline&&B,N=Math.min(p.duration||1/0,wt({...y,playing:h},Date.now()+u.clock.offset)),F=N-p.currentTime,b=Math.abs(F)>(h?1.25:.15),$=h&&!b&&Math.abs(F)>.15?Math.min(4,Math.max(.25,y.rate*(F>0?1.03:.97))):y.rate,W=e.getState().playBlocked;e.applyRemotePlayback(b?N:void 0,h&&(!W||I),$),c(W&&h)},[e]);return D(()=>{if(!o.session)return;const I=()=>{const{watch:h,selection:N,loading:F}=s.current,b=e.mediaRef.current;if(!h.connected||!h.session?.host||!h.room)return;if(!N||F||!b||b.readyState<1){h.room.playing&&h.send({type:"update",...h.room,playing:!1});return}L();const $=e.getState(),W=!b.paused&&!b.ended&&!$.isBuffering,U={type:"update",selection:N,position:b.currentTime+(W?h.clock.latency/1e3*b.playbackRate:0),playing:W,rate:b.playbackRate},A=JSON.stringify(U);!W&&a.current===A||(a.current=A,h.send(U))},u=()=>{const{watch:h,selection:N,loading:F}=s.current,b=e.getState(),$=e.mediaRef.current,W=b.error||!F&&!N?"error":b.playBlocked?"blocked":F||!$||$.readyState<1?"loading":b.isBuffering?"buffering":"ready";h.connected&&`${h.selfId}:${W}`!==d.current&&(d.current=`${h.selfId}:${W}`,h.send({type:"status",status:W})),L()};let f=null;const T=["play","pause","seeked","ratechange","playing","waiting","canplay","ended"];let p;const y=()=>{clearTimeout(p),p=setTimeout(I,100)},_=setInterval(()=>{const h=e.mediaRef.current;f!==h&&(T.forEach(N=>f?.removeEventListener(N,y)),f=h,T.forEach(N=>f?.addEventListener(N,y))),u()},500),B=setInterval(I,3e3);return()=>{clearInterval(_),clearInterval(B),clearTimeout(p),T.forEach(N=>f?.removeEventListener(N,y));const{watch:h}=s.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,L]),D(()=>{L()},[o.room,o.connected,n,r,L]),{needsPlayback:i,enablePlayback:()=>L(!0)}}export{xs as A,as as B,fs as C,z as D,ms as E,Ue as F,G,Kr as M,os as O,hs as P,us as R,ge as S,ss as T,ys as a,es as b,ts as c,ls as d,rs as e,is as f,As as g,Ss as h,vs as i,ws as j,Ns as k,bs as l,Cs as m,Zr as n,ds as o,ps as p,ur as q,ns as r,Wn as s,Jr as t,_s as u,Ts as v,gs as w,cs as x,ks as y,Ls as z};
|
package/client/dist/index.html
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
background-color: #0c0d12;
|
|
34
34
|
}
|
|
35
35
|
</style>
|
|
36
|
-
<script type="module" crossorigin src="/assets/index-
|
|
36
|
+
<script type="module" crossorigin src="/assets/index-CqcwUuWG.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-C1Pj_eSX.js">
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
Subtitle font notices
|
|
2
|
+
|
|
3
|
+
Comic Neue
|
|
4
|
+
Copyright 2014 The Comic Neue Project Authors (https://github.com/crozynski/comicneue)
|
|
5
|
+
|
|
6
|
+
Chakra Petch
|
|
7
|
+
Copyright 2018 The Chakra Petch Project Authors (https://github.com/m4rc1e/Chakra-Petch.git)
|
|
8
|
+
|
|
9
|
+
Oswald
|
|
10
|
+
Copyright 2016 The Oswald Project Authors (https://github.com/googlefonts/OswaldFont)
|
|
11
|
+
|
|
12
|
+
Bree Serif
|
|
13
|
+
Copyright (c) 2011, TypeTogether (www.type-together.com), with Reserved Font Names "Bree" and "Bree Serif"
|
|
14
|
+
|
|
15
|
+
Russo One
|
|
16
|
+
Copyright (c) 2011-2012, Jovanny Lemonad (lemonad@jovanny.ru), with Reserved Font Name "Russo"
|
|
17
|
+
|
|
18
|
+
Bangers
|
|
19
|
+
Copyright 2010 The Bangers Project Authors (https://github.com/googlefonts/bangers)
|
|
20
|
+
|
|
21
|
+
Atkinson Hyperlegible
|
|
22
|
+
Copyright 2020 Braille Institute of America, Inc.
|
|
23
|
+
|
|
24
|
+
All fonts listed above are licensed under the SIL Open Font License, Version 1.1.
|
|
25
|
+
This license is copied below, and is also available with a FAQ at:
|
|
26
|
+
http://scripts.sil.org/OFL
|
|
27
|
+
|
|
28
|
+
-----------------------------------------------------------
|
|
29
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
30
|
+
-----------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
PREAMBLE
|
|
33
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
34
|
+
development of collaborative font projects, to support the font creation
|
|
35
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
36
|
+
open framework in which fonts may be shared and improved in partnership
|
|
37
|
+
with others.
|
|
38
|
+
|
|
39
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
40
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
41
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
42
|
+
redistributed and/or sold with any software provided that any reserved
|
|
43
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
44
|
+
however, cannot be released under any other type of license. The
|
|
45
|
+
requirement for fonts to remain under this license does not apply
|
|
46
|
+
to any document created using the fonts or their derivatives.
|
|
47
|
+
|
|
48
|
+
DEFINITIONS
|
|
49
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
50
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
51
|
+
include source files, build scripts and documentation.
|
|
52
|
+
|
|
53
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
54
|
+
copyright statement(s).
|
|
55
|
+
|
|
56
|
+
"Original Version" refers to the collection of Font Software components as
|
|
57
|
+
distributed by the Copyright Holder(s).
|
|
58
|
+
|
|
59
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
60
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
61
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
62
|
+
new environment.
|
|
63
|
+
|
|
64
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
65
|
+
writer or other person who contributed to the Font Software.
|
|
66
|
+
|
|
67
|
+
PERMISSION & CONDITIONS
|
|
68
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
69
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
70
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
71
|
+
Software, subject to the following conditions:
|
|
72
|
+
|
|
73
|
+
1) Neither the Font Software nor any of its individual components,
|
|
74
|
+
in Original or Modified Versions, may be sold by itself.
|
|
75
|
+
|
|
76
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
77
|
+
redistributed and/or sold with any software, provided that each copy
|
|
78
|
+
contains the above copyright notice and this license. These can be
|
|
79
|
+
included either as stand-alone text files, human-readable headers or
|
|
80
|
+
in the appropriate machine-readable metadata fields within text or
|
|
81
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
82
|
+
|
|
83
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
84
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
85
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
86
|
+
presented to the users.
|
|
87
|
+
|
|
88
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
89
|
+
Software shall not be used to promote, endorse or advertise any
|
|
90
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
91
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
92
|
+
permission.
|
|
93
|
+
|
|
94
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
95
|
+
must be distributed entirely under this license, and must not be
|
|
96
|
+
distributed under any other license. The requirement for fonts to
|
|
97
|
+
remain under this license does not apply to any document created
|
|
98
|
+
using the Font Software.
|
|
99
|
+
|
|
100
|
+
TERMINATION
|
|
101
|
+
This license becomes null and void if any of the above conditions are
|
|
102
|
+
not met.
|
|
103
|
+
|
|
104
|
+
DISCLAIMER
|
|
105
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
106
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
107
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
108
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
109
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
110
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
111
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
112
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
113
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serifpersia/dango",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.8",
|
|
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-11-
|
|
72
|
+
"versionDate": "2026-11-12T18:56:16.352Z"
|
|
73
73
|
}
|
package/server/dist/server.js
CHANGED
|
@@ -714,7 +714,7 @@ This is a client-only function.
|
|
|
714
714
|
If you want to call this function on the server, see https://trpc.io/docs/v11/server/server-side-calls
|
|
715
715
|
`.trim();async function Cbe(e,t,r){try{let n=t.middlewares[e];return await n(it(it({},r),{},{meta:t.meta,input:r.input,next(i){var s;let o=i;return Cbe(e+1,t,it(it({},r),{},{ctx:o?.ctx?it(it({},r.ctx),o.ctx):r.ctx,input:o&&"input"in o?o.input:r.input,getRawInput:(s=o?.getRawInput)!==null&&s!==void 0?s:r.getRawInput}))}}))}catch(n){return{ok:!1,error:Go(n),marker:Ebe}}}function opt(e){async function t(r){if(!r||!("getRawInput"in r))throw new Error(spt);let n=await Cbe(0,e,r);if(!n)throw new Ye({code:"INTERNAL_SERVER_ERROR",message:"No result from middlewares - did you forget to `return next()`?"});if(!n.ok)throw n.error;return n.data}return t._def=e,t.procedure=!0,t.meta=e.meta,t}var Fm,Um,_m,pbe=typeof window>"u"||"Deno"in window||((Fm=globalThis.process)===null||Fm===void 0||(Fm=Fm.env)===null||Fm===void 0?void 0:Fm.NODE_ENV)==="test"||!!(!((Um=globalThis.process)===null||Um===void 0||(Um=Um.env)===null||Um===void 0)&&Um.JEST_WORKER_ID)||!!(!((_m=globalThis.process)===null||_m===void 0||(_m=_m.env)===null||_m===void 0)&&_m.VITEST_WORKER_ID),$G=new class jG{context(){return new jG}meta(){return new jG}create(t){var r,n,i,s,o,a;let A=it(it({},t),{},{transformer:Kye((r=t?.transformer)!==null&&r!==void 0?r:Mm),isDev:(n=t?.isDev)!==null&&n!==void 0?n:((i=globalThis.process)===null||i===void 0?void 0:i.env.NODE_ENV)!=="production",allowOutsideOfServer:(s=t?.allowOutsideOfServer)!==null&&s!==void 0?s:!1,errorFormatter:(o=t?.errorFormatter)!==null&&o!==void 0?o:Lm,isServer:(a=t?.isServer)!==null&&a!==void 0?a:pbe,$types:null});var u;if(!((u=t?.isServer)!==null&&u!==void 0?u:pbe)&&t?.allowOutsideOfServer!==!0)throw new Error("You're trying to use @trpc/server in a non-server environment. This is not supported by default.");return{_config:A,procedure:Ibe({meta:t?.defaultMeta}),middleware:Z0t(),router:xG(A),mergeRouters:Xye,createCallerFactory:vG()}}};function Le(e){return new Ye({code:"BAD_REQUEST",message:e})}function Al(e){return new Ye({code:"NOT_FOUND",message:e})}function mr(e){return new Ye({code:"INTERNAL_SERVER_ERROR",message:e})}function ul(e){return new Ye({code:"SERVICE_UNAVAILABLE",message:e})}function Bbe(e){return new Ye({code:"TOO_MANY_REQUESTS",message:e})}function ybe(e){return new Ye({code:"CONFLICT",message:e})}function bbe(e){return new Ye({code:"UNAUTHORIZED",message:e})}function NA(e){return new Ye({code:"FORBIDDEN",message:"AUTH_REQUIRED",cause:{code:"AUTH_REQUIRED",provider:e}})}function Qbe(){return new Ye({code:"UNAUTHORIZED",message:"LAN_AUTH_REQUIRED",cause:{code:"LAN_AUTH_REQUIRED"}})}li();var sv=$G.context().create({errorFormatter:({shape:e,error:t})=>({...e,data:{...e.data,cause:t.cause??null}})}),dt=sv.router,wbe=sv.mergeRouters,apt=sv.middleware(({ctx:e,next:t})=>{if(!e.lanAuthed)throw Qbe();return t({ctx:e})}),ee=sv.procedure.use(apt),Vo=ee.use(({next:e})=>{if(He.getStore()?.owner===!1)throw new Ye({code:"FORBIDDEN",message:"Owner access required"});return e()});li();In();var Sbe=new Ao({ttlSeconds:10080*60,maxKeys:5e3});function Apt(e){return e.split(" ").map((t,r)=>r!==0&&["x","and","or","the","a","an","of","in","on","with"].includes(t.toLowerCase())?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1)).join(" ").replace(/\bX\b/g,"x")}function upt(e){let t=e.trim();return t&&Apt(t)}async function Tbe(e,t,r){let n=e.map(o=>String(o).trim()).filter(Boolean),i={},s=[];for(let o of n){let a=`${t}:${r}:${o}`,A=Sbe.get(a);A?i[o]=A:s.push(o)}if(s.length>0){let o=[];for(let a=0;a<s.length;a+=15)o.push(s.slice(a,a+15));for(let a of o){let A=a.join(`
|
|
716
716
|
`),u=`https://clients5.google.com/translate_a/t?client=dict-chrome-ex&sl=${encodeURIComponent(t)}&tl=${encodeURIComponent(r)}&dt=t&q=${encodeURIComponent(A)}`;try{let c=await fetch(u,{headers:{"User-Agent":"Mozilla/5.0"},signal:AbortSignal.timeout(5e3)});if(!c.ok)throw new Error(`translate ${c.status}`);let l=await Yt(c),h="";Array.isArray(l)&&typeof l[0]=="string"?h=l[0]:Array.isArray(l)&&Array.isArray(l[0])&&(h=l[0]?.map(g=>g[0]).join("")||"");let d=h.split(`
|
|
717
|
-
`);a.forEach((f,g)=>{let p=(d[g]??"").trim(),m=p?upt(p):f;i[f]=m,Sbe.set(`${t}:${r}:${f}`,m)})}catch{for(let c of a)i[c]||(i[c]=c)}await new Promise(c=>setTimeout(c,80))}}return i}function pe(e){return{"~standard":{version:1,vendor:"dango",types:void 0,validate(t){try{return{value:e(t)}}catch(r){return{issues:[{message:r instanceof Error?r.message:"Invalid input"}]}}}}}}function Nbe(e){if(typeof e!="object"||e===null)throw Le("Expected an object");let t=e.key;if(typeof t!="string"||t.length===0)throw Le("key must be a string");return t}function ut(e,t){let r=e[t];if(typeof r!="string"||r.length===0)throw Le(`${t} must be a string`);return r}function ue(e,t){let r=e[t];if(typeof r=="string")return r}function eo(e,t){let r=e[t];if(r==null||r==="")return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Dbe(e,t){let r=e[t];if(typeof r=="boolean")return r}function Wo(e,t){let r=e[t];if(typeof r!="string"&&typeof r!="number"||String(r).length===0)throw Le(`${t} must be a string`);return String(r)}function cl(e,t,r){let n=e[t];if(n==null||n==="")return r;let i=Math.floor(Number(n));return Number.isFinite(i)?i:r}function RA(e,t){let r=e[t];return typeof r=="string"?r:null}function Ji(e,t=1){return Math.max(cl(e,"page",t),1)}function gs(e,t=24,r=100,n="limit"){return Math.min(Math.max(cl(e,n,t),1),r)}function Ug(e){let t=Array.isArray(e)?e:KG(Ce(e),"ids",!0);if(t.length===0)throw Le("ids must be a non-empty array");return[...new Set(t.map(r=>String(r)))]}function KG(e,t,r){let n=e[t];if(!Array.isArray(n)||r&&n.length===0)throw Le(`${t} must be ${r?"a non-empty ":"an "}array`);return n.map(i=>String(i))}function Ce(e){if(typeof e!="object"||e===null)throw Le("Expected an object");return e}var Rbe=()=>pe(e=>({key:Nbe(e)})),xbe=()=>pe(e=>({id:ut(Ce(e),"id")})),ah=e=>pe(t=>({[e]:ut(Ce(t),e)})),Ah=()=>pe(e=>({showId:ut(Ce(e),"showId")})),XG=()=>pe(e=>{let t=Ce(e);return{showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}}),ov=()=>pe(e=>({ids:Ug(e)})),vbe=()=>pe(e=>{let t=Ce(e),r={id:ut(t,"id"),name:ut(t,"name")},n=ue(t,"status");n!==void 0&&(r.status=n);let i=ue(t,"thumbnail");i!==void 0&&(r.thumbnail=i);let s=ue(t,"nativeName");s!==void 0&&(r.nativeName=s);let o=ue(t,"englishName");o!==void 0&&(r.englishName=o);let a=ue(t,"type");return a!==void 0&&(r.type=a),typeof t.isAdult=="boolean"&&(r.isAdult=t.isAdult),r}),kbe=()=>pe(e=>{let t=Ce(e);return{id:ut(t,"id"),status:ut(t,"status")}}),Lbe=()=>pe(e=>{let t=Ce(e);return{ids:Ug(t),status:ut(t,"status")}});function Mbe(e){return{showName:ue(e,"showName"),showThumbnail:ue(e,"showThumbnail"),nativeName:ue(e,"nativeName"),englishName:ue(e,"englishName"),type:ue(e,"type")}}var Fbe=()=>pe(e=>{let t=Ce(e);return{...Mbe(t),showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}}),Ube=()=>pe(e=>{let t=Ce(e);return{...Mbe(t),showId:ut(t,"showId"),episodeNumbers:KG(t,"episodeNumbers",!0)}}),_be=()=>pe(e=>{let t=Ce(e);return{showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}}),Obe=()=>pe(e=>{let t=Ce(e),r={showId:ut(t,"showId")};return t.episodeNumbers!==void 0&&(r.episodeNumbers=KG(t,"episodeNumbers",!1)),r}),Pbe=()=>pe(e=>{if(!Array.isArray(e))throw Le("items must be an array");return e.map(t=>{let r=Ce(t),n={};return typeof r.id=="number"&&(n.id=r.id),r.showId!==void 0&&(n.showId=String(r.showId)),r.episodeNumber!==void 0&&(n.episodeNumber=String(r.episodeNumber)),n})}),Hbe=()=>pe(e=>{if(typeof e!="object"||e===null)throw Le("Expected an object");return{key:Nbe(e),value:e.value}}),Gbe=()=>pe(e=>{let t=Ce(e),r={showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")},n=eo(t,"currentTime");n!==void 0&&(r.currentTime=n);let i=eo(t,"duration");i!==void 0&&(r.duration=i);let s=ue(t,"showName");s!==void 0&&(r.showName=s);let o=ue(t,"showThumbnail");o!==void 0&&(r.showThumbnail=o);let a=ue(t,"nativeName");a!==void 0&&(r.nativeName=a);let A=ue(t,"englishName");A!==void 0&&(r.englishName=A);let u=t.genres;(typeof u=="string"||Array.isArray(u))&&(r.genres=(Array.isArray(u)?u:[u]).map(String));let c=eo(t,"popularityScore");c!==void 0&&(r.popularityScore=c);let l=ue(t,"type");l!==void 0&&(r.type=l);let h=ue(t,"status");h!==void 0&&(r.status=h);let d=eo(t,"episodeCount");d!==void 0&&(r.episodeCount=d);let f=Dbe(t,"isPlaying");f!==void 0&&(r.isPlaying=f);let g=ue(t,"sessionId");g!==void 0&&(r.sessionId=g);let p=Dbe(t,"isAdult");return p!==void 0&&(r.isAdult=p),r}),Ybe=()=>pe(e=>{let t=Ce(e);return{showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}});var cpt={discordRPCEnabled:"true",discordRPCHideMature:"true",ignoreAdultContent:"true",mangaIgnoreAdultContent:"true",tvIgnoreAdultContent:"true",asmrIgnoreAdultContent:"true",frozenMode:"false"},lpt=()=>pe(e=>{let t=Ce(e);if(typeof t.enabled!="boolean")throw Le("enabled must be a boolean");return{enabled:t.enabled}}),dpt=()=>pe(e=>{if(e==null)return{};let t=Ce(e);return{texts:t.texts,source:t.source,target:t.target}}),Vbe=dt({frozenStatus:ee.query(()=>({frozen:tn()})),watchAlong:ee.query(()=>({workerUrl:Ae.WATCH_ALONG_WORKER_URL})),getByKey:ee.input(Rbe()).query(async({ctx:e,input:t})=>{if(RL(t.key))throw new Ye({code:"FORBIDDEN",message:"Tracker credentials are private."});let r=await fe.getByKey(e.db,t.key);return{value:r?r.value:cpt[t.key]??null}}),set:ee.input(Hbe()).mutation(async({ctx:e,input:t})=>{let r=t.key;if(r===$L){let s=t.value==="true"||t.value===!0;return await Fe(e.db,async o=>{await fe.upsert(o,r,String(s))},void 0,{allowWhenFrozen:!0}),KL(s),{success:!0}}if(tn())return{success:!0,frozen:!0};if(r.startsWith("discord")&&He.getStore()?.owner===!1)throw new Ye({code:"FORBIDDEN",message:"Owner access required"});if(RL(r))throw new Ye({code:"FORBIDDEN",message:"Use the tracker account settings to manage credentials."});let n=String(t.value??""),i=n===""&&r==="tracker_anilist_client_id";return await Fe(e.db,async s=>{i?await fe.deleteByKey(s,r):await fe.upsert(s,r,n)}),r==="discordRPCEnabled"&&e.discordRPC.setEnabled(t.value==="true"||t.value===!0),r==="discordRPCHideMature"&&e.discordRPC.setHideMature(t.value==="true"||t.value===!0),{success:!0}}),offlineDbInfo:ee.query(async({ctx:e})=>await e.offlineDb.getOfflineDbInfo(e.db)),setOfflineDbAutoUpdate:Vo.input(lpt()).mutation(async({ctx:e,input:t})=>(await fe.upsert(e.db,"offlineDbAutoUpdateEnabled",String(t.enabled)),{success:!0,enabled:t.enabled})),triggerOfflineDbUpdate:Vo.mutation(async({ctx:e})=>{if((await e.offlineDb.getOfflineDbInfo(e.db)).isRefreshing)throw ybe("Offline database refresh already in progress");return e.offlineDb.refreshDatabase(e.db).catch(r=>{O.warn({err:r?.message},"Manual offline database update failed")}),{message:"Offline database refresh started"}}),translate:ee.input(dpt()).mutation(async({input:e})=>{let t=e.texts,r=e.source??"ja",n=e.target??"en";return!Array.isArray(t)||t.length===0?{translations:{}}:{translations:await Tbe(t,String(r),String(n))}}),malImportCancel:ee.mutation(()=>$x())});var ps={getAll:e=>re(e).all(b`
|
|
717
|
+
`);a.forEach((f,g)=>{let p=(d[g]??"").trim(),m=p?upt(p):f;i[f]=m,Sbe.set(`${t}:${r}:${f}`,m)})}catch{for(let c of a)i[c]||(i[c]=c)}await new Promise(c=>setTimeout(c,80))}}return i}function pe(e){return{"~standard":{version:1,vendor:"dango",types:void 0,validate(t){try{return{value:e(t)}}catch(r){return{issues:[{message:r instanceof Error?r.message:"Invalid input"}]}}}}}}function Nbe(e){if(typeof e!="object"||e===null)throw Le("Expected an object");let t=e.key;if(typeof t!="string"||t.length===0)throw Le("key must be a string");return t}function ut(e,t){let r=e[t];if(typeof r!="string"||r.length===0)throw Le(`${t} must be a string`);return r}function ue(e,t){let r=e[t];if(typeof r=="string")return r}function eo(e,t){let r=e[t];if(r==null||r==="")return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Dbe(e,t){let r=e[t];if(typeof r=="boolean")return r}function Wo(e,t){let r=e[t];if(typeof r!="string"&&typeof r!="number"||String(r).length===0)throw Le(`${t} must be a string`);return String(r)}function cl(e,t,r){let n=e[t];if(n==null||n==="")return r;let i=Math.floor(Number(n));return Number.isFinite(i)?i:r}function RA(e,t){let r=e[t];return typeof r=="string"?r:null}function Ji(e,t=1){return Math.max(cl(e,"page",t),1)}function gs(e,t=24,r=100,n="limit"){return Math.min(Math.max(cl(e,n,t),1),r)}function Ug(e){let t=Array.isArray(e)?e:KG(Ce(e),"ids",!0);if(t.length===0)throw Le("ids must be a non-empty array");return[...new Set(t.map(r=>String(r)))]}function KG(e,t,r){let n=e[t];if(!Array.isArray(n)||r&&n.length===0)throw Le(`${t} must be ${r?"a non-empty ":"an "}array`);return n.map(i=>String(i))}function Ce(e){if(typeof e!="object"||e===null)throw Le("Expected an object");return e}var Rbe=()=>pe(e=>({key:Nbe(e)})),xbe=()=>pe(e=>({id:ut(Ce(e),"id")})),ah=e=>pe(t=>({[e]:ut(Ce(t),e)})),Ah=()=>pe(e=>({showId:ut(Ce(e),"showId")})),XG=()=>pe(e=>{let t=Ce(e);return{showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}}),ov=()=>pe(e=>({ids:Ug(e)})),vbe=()=>pe(e=>{let t=Ce(e),r={id:ut(t,"id"),name:ut(t,"name")},n=ue(t,"status");n!==void 0&&(r.status=n);let i=ue(t,"thumbnail");i!==void 0&&(r.thumbnail=i);let s=ue(t,"nativeName");s!==void 0&&(r.nativeName=s);let o=ue(t,"englishName");o!==void 0&&(r.englishName=o);let a=ue(t,"type");return a!==void 0&&(r.type=a),typeof t.isAdult=="boolean"&&(r.isAdult=t.isAdult),r}),kbe=()=>pe(e=>{let t=Ce(e);return{id:ut(t,"id"),status:ut(t,"status")}}),Lbe=()=>pe(e=>{let t=Ce(e);return{ids:Ug(t),status:ut(t,"status")}});function Mbe(e){return{showName:ue(e,"showName"),showThumbnail:ue(e,"showThumbnail"),nativeName:ue(e,"nativeName"),englishName:ue(e,"englishName"),type:ue(e,"type")}}var Fbe=()=>pe(e=>{let t=Ce(e);return{...Mbe(t),showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}}),Ube=()=>pe(e=>{let t=Ce(e);return{...Mbe(t),showId:ut(t,"showId"),episodeNumbers:KG(t,"episodeNumbers",!0)}}),_be=()=>pe(e=>{let t=Ce(e);return{showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}}),Obe=()=>pe(e=>{let t=Ce(e),r={showId:ut(t,"showId")};return t.episodeNumbers!==void 0&&(r.episodeNumbers=KG(t,"episodeNumbers",!1)),r}),Pbe=()=>pe(e=>{if(!Array.isArray(e))throw Le("items must be an array");return e.map(t=>{let r=Ce(t),n={};return typeof r.id=="number"&&(n.id=r.id),r.showId!==void 0&&(n.showId=String(r.showId)),r.episodeNumber!==void 0&&(n.episodeNumber=String(r.episodeNumber)),n})}),Hbe=()=>pe(e=>{if(typeof e!="object"||e===null)throw Le("Expected an object");return{key:Nbe(e),value:e.value}}),Gbe=()=>pe(e=>{let t=Ce(e),r={showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")},n=eo(t,"currentTime");n!==void 0&&(r.currentTime=n);let i=eo(t,"duration");i!==void 0&&(r.duration=i);let s=ue(t,"showName");s!==void 0&&(r.showName=s);let o=ue(t,"showThumbnail");o!==void 0&&(r.showThumbnail=o);let a=ue(t,"nativeName");a!==void 0&&(r.nativeName=a);let A=ue(t,"englishName");A!==void 0&&(r.englishName=A);let u=t.genres;(typeof u=="string"||Array.isArray(u))&&(r.genres=(Array.isArray(u)?u:[u]).map(String));let c=eo(t,"popularityScore");c!==void 0&&(r.popularityScore=c);let l=ue(t,"type");l!==void 0&&(r.type=l);let h=ue(t,"status");h!==void 0&&(r.status=h);let d=eo(t,"episodeCount");d!==void 0&&(r.episodeCount=d);let f=Dbe(t,"isPlaying");f!==void 0&&(r.isPlaying=f);let g=ue(t,"sessionId");g!==void 0&&(r.sessionId=g);let p=Dbe(t,"isAdult");return p!==void 0&&(r.isAdult=p),r}),Ybe=()=>pe(e=>{let t=Ce(e);return{showId:ut(t,"showId"),episodeNumber:Wo(t,"episodeNumber")}});var cpt={discordRPCEnabled:"true",discordRPCHideMature:"true",dangoGaze:"true",ignoreAdultContent:"true",mangaIgnoreAdultContent:"true",tvIgnoreAdultContent:"true",asmrIgnoreAdultContent:"true",frozenMode:"false"},lpt=()=>pe(e=>{let t=Ce(e);if(typeof t.enabled!="boolean")throw Le("enabled must be a boolean");return{enabled:t.enabled}}),dpt=()=>pe(e=>{if(e==null)return{};let t=Ce(e);return{texts:t.texts,source:t.source,target:t.target}}),Vbe=dt({frozenStatus:ee.query(()=>({frozen:tn()})),watchAlong:ee.query(()=>({workerUrl:Ae.WATCH_ALONG_WORKER_URL})),getByKey:ee.input(Rbe()).query(async({ctx:e,input:t})=>{if(RL(t.key))throw new Ye({code:"FORBIDDEN",message:"Tracker credentials are private."});let r=await fe.getByKey(e.db,t.key);return{value:r?r.value:cpt[t.key]??null}}),set:ee.input(Hbe()).mutation(async({ctx:e,input:t})=>{let r=t.key;if(r===$L){let s=t.value==="true"||t.value===!0;return await Fe(e.db,async o=>{await fe.upsert(o,r,String(s))},void 0,{allowWhenFrozen:!0}),KL(s),{success:!0}}if(tn())return{success:!0,frozen:!0};if(r.startsWith("discord")&&He.getStore()?.owner===!1)throw new Ye({code:"FORBIDDEN",message:"Owner access required"});if(RL(r))throw new Ye({code:"FORBIDDEN",message:"Use the tracker account settings to manage credentials."});let n=String(t.value??""),i=n===""&&r==="tracker_anilist_client_id";return await Fe(e.db,async s=>{i?await fe.deleteByKey(s,r):await fe.upsert(s,r,n)}),r==="discordRPCEnabled"&&e.discordRPC.setEnabled(t.value==="true"||t.value===!0),r==="discordRPCHideMature"&&e.discordRPC.setHideMature(t.value==="true"||t.value===!0),{success:!0}}),offlineDbInfo:ee.query(async({ctx:e})=>await e.offlineDb.getOfflineDbInfo(e.db)),setOfflineDbAutoUpdate:Vo.input(lpt()).mutation(async({ctx:e,input:t})=>(await fe.upsert(e.db,"offlineDbAutoUpdateEnabled",String(t.enabled)),{success:!0,enabled:t.enabled})),triggerOfflineDbUpdate:Vo.mutation(async({ctx:e})=>{if((await e.offlineDb.getOfflineDbInfo(e.db)).isRefreshing)throw ybe("Offline database refresh already in progress");return e.offlineDb.refreshDatabase(e.db).catch(r=>{O.warn({err:r?.message},"Manual offline database update failed")}),{message:"Offline database refresh started"}}),translate:ee.input(dpt()).mutation(async({input:e})=>{let t=e.texts,r=e.source??"ja",n=e.target??"en";return!Array.isArray(t)||t.length===0?{translations:{}}:{translations:await Tbe(t,String(r),String(n))}}),malImportCancel:ee.mutation(()=>$x())});var ps={getAll:e=>re(e).all(b`
|
|
718
718
|
SELECT
|
|
719
719
|
q.id,
|
|
720
720
|
q.showId,
|
package/server/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{T as Pe,u as e,d as N,A as W,a as We,g as Ne,q as V,h as T,S as U,$ as Me,o as ea,p as aa}from"./vendor-core-DfaOB3Rn.js";import{o as je,F as ta,i as Te,aa as na,t as Be,ab as ra,B as Ie,S as sa,p as be,g as la,ac as Ce}from"./index-hrS3r0UE.js";import{I as b}from"./vendor-icons-C1Pj_eSX.js";import{T as $e}from"./ToggleSwitch-CN_ppEc9.js";import{M as oa}from"./MatureConsentModal-CBGHgiBA.js";import{M as ia,P as ca}from"./MediaCard-Bd24Icus.js";import{d as Fe,e as da,a as Ue,f as qe,g as ma,h as ua,i as pa,b as Ee,A as ha}from"./AsmrPopup-ER6dDxFM.js";import{u as ga}from"./useAsmrPopup-BBmHrx9v.js";import{u as fa,e as ya,f as _a,d as ba,g as ka,h as va,S as Oe,a as wa,i as He,j as Ca,k as Na,V as Ta,l as Ba}from"./PlayerProvider-C6humJW5.js";import{p as Y}from"./page.module-C1MlZzf3.js";import"./vendor-query-BBT5_sHx.js";import"./MediaPopupShell-BewMMT93.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./libraryInvalidation-DWCCaTbI.js";import"./usePopup-DS9jMzp6.js";const Aa="_sortSelect_1f2gy_1",Sa="_grid_1f2gy_11",La="_fetching_1f2gy_25",Ra="_thumbPlaceholder_1f2gy_64",Pa="_asmrCardWrap_1f2gy_100",Ma="_bookmarkBtn_1f2gy_105",Ia="_bookmarked_1f2gy_129",$a="_statusMsg_1f2gy_152",Ea="_skeletonCard_1f2gy_160",Oa="_skeletonThumb_1f2gy_165",Ha="_skeletonLine_1f2gy_171",Da="_shimmer_1f2gy_178",Wa="_pagination_1f2gy_192",ja="_matureToggleWrap_1f2gy_219",Fa="_matureLabel_1f2gy_226",Ua="_translateToggleWrap_1f2gy_232",qa="_filterTogglesGroup_1f2gy_239",Va="_filterBar_1f2gy_251",xa="_filterLabel_1f2gy_258",Ga="_detailOverlay_1f2gy_263",Ka="_detailModal_1f2gy_275",za="_detailClose_1f2gy_287",Ya="_detailHeader_1f2gy_303",Ja="_detailCover_1f2gy_309",Qa="_detailInfo_1f2gy_318",Za="_detailTitle_1f2gy_322",Xa="_detailRj_1f2gy_329",et="_metaRow_1f2gy_335",at="_metaLabel_1f2gy_341",tt="_tagChips_1f2gy_347",nt="_tagChip_1f2gy_347",rt="_npOverlay_1f2gy_363",st="_playerBarDocked_1f2gy_378",lt="_playerBarDockedHidden_1f2gy_392",ot="_npOverlayControlsHidden_1f2gy_403",it="_npArrow_1f2gy_403",ct="_npImageCount_1f2gy_404",dt="_npStage_1f2gy_413",mt="_sliderViewport_1f2gy_429",ut="_slide_1f2gy_429",pt="_slideImg_1f2gy_431",ht="_npStageBlank_1f2gy_450",gt="_sliderTrack_1f2gy_469",ft="_slideImgLoaded_1f2gy_502",yt="_slideSpinner_1f2gy_507",_t="_npArrowLeft_1f2gy_557",bt="_npArrowRight_1f2gy_561",kt="_chapterPanel_1f2gy_578",vt="_chapterRow_1f2gy_593",wt="_chapterRowActive_1f2gy_612",Ct="_chapterRowTime_1f2gy_616",Nt="_chapterRowLabel_1f2gy_627",Tt="_npBackdrop_1f2gy_633",Bt="_playerBtn_1f2gy_639",At="_playerBtnActive_1f2gy_639",St="_tracksSection_1f2gy_645",Lt="_tracksHeading_1f2gy_649",Rt="_trackList_1f2gy_655",Pt="_trackRow_1f2gy_664",Mt="_trackIcon_1f2gy_682",It="_trackLabel_1f2gy_687",$t="_trackType_1f2gy_692",Et="_noTracks_1f2gy_697",Ot="_playAllBtn_1f2gy_702",Ht="_detailActions_1f2gy_715",Dt="_playerBar_1f2gy_378",Wt="_playerActions_1f2gy_738",jt="_playerInfo_1f2gy_744",Ft="_playerTitle_1f2gy_749",Ut="_playerTrack_1f2gy_758",qt="_playerControls_1f2gy_764",Vt="_seekRow_1f2gy_771",xt="_playerButtons_1f2gy_779",Gt="_seekBtn_1f2gy_814",Kt="_playBtn_1f2gy_824",zt="_seekBar_1f2gy_871",Yt="_volumeBar_1f2gy_872",Jt="_timeLabel_1f2gy_964",Qt="_playerRight_1f2gy_970",Zt="_volumeIcon_1f2gy_976",Xt="_playerToggle_1f2gy_1020",a={sortSelect:Aa,grid:Sa,fetching:La,thumbPlaceholder:Ra,asmrCardWrap:Pa,bookmarkBtn:Ma,bookmarked:Ia,statusMsg:$a,skeletonCard:Ea,skeletonThumb:Oa,skeletonLine:Ha,shimmer:Da,pagination:Wa,matureToggleWrap:ja,matureLabel:Fa,translateToggleWrap:Ua,filterTogglesGroup:qa,filterBar:Va,filterLabel:xa,detailOverlay:Ga,detailModal:Ka,detailClose:za,detailHeader:Ya,detailCover:Ja,detailInfo:Qa,detailTitle:Za,detailRj:Xa,metaRow:et,metaLabel:at,tagChips:tt,tagChip:nt,npOverlay:rt,playerBarDocked:st,playerBarDockedHidden:lt,npOverlayControlsHidden:ot,npArrow:it,npImageCount:ct,npStage:dt,sliderViewport:mt,slide:ut,slideImg:pt,npStageBlank:ht,sliderTrack:gt,slideImgLoaded:ft,slideSpinner:yt,npArrowLeft:_t,npArrowRight:bt,chapterPanel:kt,chapterRow:vt,chapterRowActive:wt,chapterRowTime:Ct,chapterRowLabel:Nt,npBackdrop:Tt,playerBtn:Bt,playerBtnActive:At,tracksSection:St,tracksHeading:Lt,trackList:Rt,trackRow:Pt,trackIcon:Mt,trackLabel:It,trackType:$t,noTracks:Et,playAllBtn:Ot,detailActions:Ht,playerBar:Dt,playerActions:Wt,playerInfo:jt,playerTitle:Ft,playerTrack:Ut,playerControls:qt,seekRow:Vt,playerButtons:xt,seekBtn:Gt,playBtn:Kt,seekBar:zt,volumeBar:Yt,timeLabel:Jt,playerRight:Qt,volumeIcon:Zt,playerToggle:Xt},en=({work:r,onClose:l,onPlay:k,t:p})=>{const{data:i,isLoading:m}=Fe(r.id||null),f=je(r),{data:S}=da(f||void 0),{toggle:v,bookmarkedIds:w}=Ue(),{data:E}=qe(f||void 0),P=f?w.has(f):!!S?.inLibrary,g=Pe(()=>(i?.description||r.description||"").split(`
|
|
2
|
-
`).map(c=>{const o=c.indexOf(":");return o===-1?null:{label:c.slice(0,o),value:c.slice(o+1).trim()}}).filter(c=>!!c&&!!c.value),[i?.description,r.description]),y=i?.tracks||[],M=r.thumbnail||i?.images?.[0],L=Pe(()=>{const c=E?.progress??[];return c.length>0?c.reduce((o,B)=>o.updatedAt>=B.updatedAt?o:B):null},[E]),h=L&&L.trackIndex<y.length?L.trackIndex:null;return e("div",{className:a.detailOverlay,onClick:l,children:e("div",{className:a.detailModal,onClick:c=>c.stopPropagation(),children:[e("button",{className:a.detailClose,onClick:l,"aria-label":"Close",children:e(b,{name:"times"})}),e("div",{className:a.detailHeader,children:[M?e(ta,{className:a.detailCover,src:M,alt:r.name,decoding:"async"}):e("div",{className:`${a.detailCover} ${a.thumbPlaceholder}`}),e("div",{className:a.detailInfo,children:[e("h2",{className:a.detailTitle,children:p?p(r.name):r.name}),e("p",{className:a.detailRj,children:r.id}),g.map(c=>c.label==="Tags"?e("p",{className:a.metaRow,children:[e("span",{className:a.metaLabel,children:"Tags"}),e("span",{className:a.tagChips,children:c.value.split(", ").map(o=>e("span",{className:a.tagChip,children:o},o))})]},c.label):e("p",{className:a.metaRow,children:[e("span",{className:a.metaLabel,children:c.label}),c.value]},c.label))]})]}),e("div",{className:a.tracksSection,children:[e("h3",{className:a.tracksHeading,children:m?"Loading tracks…":`Tracks (${y.length})`}),!m&&(y.length>0?e("ul",{className:a.trackList,children:y.map((c,o)=>e("li",{children:e("button",{className:a.trackRow,onClick:()=>k(r,y,o),children:[e(b,{name:"play",className:a.trackIcon}),e("span",{className:a.trackLabel,children:c.resolutionStr}),e("span",{className:a.trackType,children:c.hls?"HLS":"MP3"})]})},c.link))}):e("p",{className:a.noTracks,children:"No audio streams available for this work."}))]}),e("div",{className:a.detailActions,children:[!m&&y.length>0&&e("button",{className:a.playAllBtn,onClick:()=>k(r,y,0),children:[e(b,{name:"play"})," Play from start"]}),!m&&h!==null&&L&&e("button",{className:a.playAllBtn,onClick:()=>k(r,y,h),children:[e(b,{name:"history"})," Resume track ",h+1," ·"," ",Te(L.currentTime),L.duration>0?` / ${Te(L.duration)}`:""]}),f&&e("button",{className:a.playAllBtn,onClick:()=>v({rjCode:f,title:r.name,thumbnail:r.thumbnail||"",isAdult:!!r.isAdult}),"aria-pressed":P,children:[e(b,{name:P?"check":"plus"})," ",P?"In listening list":"Add to listening list"]})]})]})})},an=r=>{const{engine:l}=fa({volumeKey:"asmrVolume",mutedKey:"asmrMuted"});return e(ya,{engine:l,children:e(tn,{...r})})},tn=({title:r,images:l,chapters:k,tracks:p,trackIndex:i,expanded:m,isAdult:f,rjCode:S,t:v,onTrackChange:w,onExpandedChange:E,onClose:P})=>{const g=_a(),y=g.mediaRef,{duration:M,volume:L,isPlaying:h}=ba(g),{currentTime:c}=ka(g),[o,B]=N(!0),[u,I]=N(0),[re,se]=N(new Set),[A,J]=N(!1),[le,j]=N(!0),R=W("");R.current||(R.current=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`asmr-${Date.now()}-${Math.random().toString(36).slice(2)}`);const pe=We(),O=Ne.useMemo(()=>S?na(S):"",[S]),oe=ma(),he=ua(),{data:x}=qe(O||void 0),[ke,Q]=N(!1),Z=W(""),H=W(null),ie=W(0),G=W(0),D=W(0),X=p[i],ce=X?.link,ee=X?.hls,de=X?.resolutionStr||"",ae=l.length>0,F=`${O}:${i}`,te=Ne.useMemo(()=>(x?.progress??[]).find(s=>s.trackIndex===i)??null,[x,i]),ge=W({workId:"",trackIndex:0,trackLabel:""}),fe=W(x);fe.current=x,ge.current={workId:O,trackIndex:i,trackLabel:de};const ne=V((t,s,_,$=!1)=>{!t.workId||!_||_<10||!$&&Math.abs(s-ie.current)<5||(ie.current=s,oe.mutate({workId:t.workId,trackIndex:t.trackIndex,trackLabel:t.trackLabel,currentTime:Math.floor(s),duration:Math.floor(_),title:r,thumbnail:l[0]||"",rjCode:t.workId,isAdult:f?1:0}))},[oe,r,l,f]),me=V((t=!1)=>{H.current&&(clearTimeout(H.current),H.current=null),ne(ge.current,G.current,D.current,t)},[ne]),n=W(me);n.current=me;const d=W(ne);d.current=ne,T(()=>{if(!y.current||!ce)return;const s={workId:O,trackIndex:i,trackLabel:de},_=()=>{H.current&&(clearTimeout(H.current),H.current=null),d.current(s,g.getTimeline().currentTime,g.getState().duration||D.current,!0)};G.current=0,D.current=0,ie.current=0;const $=fe.current?.progress?.find(Xe=>Xe.trackIndex===i),_e=$?.currentTime||0,ve=$?.duration||0,we=_e>=10&&ve-_e>=15,Ze=g.loadSource({url:ce,hls:ee},{autoPlay:!we});return()=>{_(),Ze()}},[g,ce,ee,O,i,de,y]),T(()=>{const t=()=>{document.visibilityState==="hidden"&&n.current()},s=()=>n.current();return document.addEventListener("visibilitychange",t),window.addEventListener("pagehide",s),()=>{document.removeEventListener("visibilitychange",t),window.removeEventListener("pagehide",s)}},[]),T(()=>{if(!te||Z.current===F||!(M>0))return;const t=te.currentTime||0,s=te.duration||M;Z.current=F,!(!(t>=10&&s-t>=15&&G.current<t)||!y.current)&&(g.seek(t),G.current=t,g.play())},[g,y,te,M,F]),T(()=>{if(m)return document.body.classList.add("asmr-player-open"),()=>document.body.classList.remove("asmr-player-open")},[m]),T(()=>{I(0)},[l]),T(()=>{m&&j(!0)},[m]),T(()=>{A&&j(!0)},[A]);const C=V(t=>{if(!r||p.length===0)return;const s=p[i],_=s?`${s.resolutionStr} (${i+1}/${p.length})`:"",$=y.current,_e=$?$.currentTime:0,ve=$&&$.duration||0,we=l[0]||"";Be.discord.asmrPresence.mutate({title:r,trackLabel:_,isPlaying:t,thumbnail:we,thumbnails:l,currentTime:_e,duration:ve,isAdult:!!f,rjCode:S||"",sessionId:R.current}).catch(()=>{}),Be.discord.heartbeat.mutate({sessionId:R.current}).catch(()=>{})},[y,r,p,i,l,f,S]);T(()=>{C(h)},[C,h,i,r,m]),T(()=>{if(!h)return;const t=window.setInterval(()=>C(!0),15e3);return()=>window.clearInterval(t)},[h,C]),T(()=>{const t=R.current,s=()=>ra(t),_=()=>s(),$=()=>{document.visibilityState==="hidden"&&s()};return window.addEventListener("pagehide",_),window.addEventListener("beforeunload",_),document.addEventListener("visibilitychange",$),()=>{window.removeEventListener("pagehide",_),window.removeEventListener("beforeunload",_),document.removeEventListener("visibilitychange",$),s()}},[]);const K=V(t=>{se(s=>{if(s.has(t))return s;const _=new Set(s);return _.add(t),_})},[]),z=V((t,s)=>{t&&t.complete&&t.naturalWidth>0&&K(s)},[K]);T(()=>{if(!m)return;const t=s=>{if(!(s.defaultPrevented||s.ctrlKey||s.metaKey||s.altKey||s.target instanceof Element&&s.target.closest('input, textarea, select, button, [role="slider"], [contenteditable="true"]'))){if(s.key==="Escape"){A?J(!1):E(!1);return}!o||l.length<2||(s.key==="ArrowLeft"&&I(_=>Math.max(0,_-1)),s.key==="ArrowRight"&&I(_=>Math.min(l.length-1,_+1)))}};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[m,o,l.length,A,E]);const ye=()=>{me(!0),i<p.length-1?w(i+1):Q(!0)},q=t=>{const s=t.currentTarget.currentTime;G.current=s,H.current&&clearTimeout(H.current),H.current=setTimeout(()=>n.current(),5e3)},xe=()=>{n.current()},Ge=t=>{const s=t.currentTarget.duration;D.current=Number.isFinite(s)?s:0},Ke=V(()=>{O&&he.mutate({rjCode:O,title:r,thumbnail:l[0]||"",status:"Completed",isAdult:!!f,silent:!0}),Q(!1),P(),pe("/")},[O,he,r,l,f,P,pe]),ze=k.reduce((t,s,_)=>c>=s.time?_:t,-1),Ye=t=>g.seek(t);va(g,()=>j(!0),!m||!o&&!A);const Je=e(U,{children:[e("div",{className:a.playerButtons,children:[e("button",{className:a.playerBtn,onClick:()=>w(Math.max(0,i-1)),disabled:i===0,"aria-label":"Previous track",children:e(b,{name:"step-backward"})}),e(Oe,{seconds:-10,className:`${a.playerBtn} ${a.seekBtn}`}),e(wa,{className:`${a.playerBtn} ${a.playBtn}`}),e(Oe,{seconds:10,className:`${a.playerBtn} ${a.seekBtn}`}),e("button",{className:a.playerBtn,onClick:()=>w(Math.min(p.length-1,i+1)),disabled:i>=p.length-1,"aria-label":"Next track",children:e(b,{name:"step-forward"})})]}),e("div",{className:a.seekRow,children:[e(He,{className:a.timeLabel}),e(Ca,{className:a.seekBar}),e(He,{className:a.timeLabel,durationOnly:!0})]})]}),Ae=e(U,{children:[e("button",{className:`${a.playerBtn} ${a.playerToggle}`,onClick:()=>E(!m),"aria-label":m?"Minimize player":"Expand player",title:m?"Minimize to browse":"Expand",children:m?e(b,{name:"chevron-down"}):e(b,{name:"chevron-up"})}),e("div",{className:a.playerInfo,children:[e(Na,{}),e("p",{className:a.playerTitle,title:r,children:v?v(r):r}),e("p",{className:a.playerTrack,children:[X?.resolutionStr||"",p.length>1?` (${i+1}/${p.length})`:""]})]}),e("div",{className:a.playerControls,children:Je}),e("div",{className:a.playerRight,children:[L===0?e(b,{name:"volume-mute",className:a.volumeIcon}):L<.5?e(b,{name:"volume-down",className:a.volumeIcon}):e(b,{name:"volume-up",className:a.volumeIcon}),e(Ta,{className:a.volumeBar})]}),e("div",{className:a.playerActions,children:[m&&ae&&e("button",{className:a.playerBtn,onClick:()=>B(t=>!t),"aria-label":o?"Hide images":"Show images",title:o?"Hide images":"Show images",children:o?e(b,{name:"eye-slash"}):e(b,{name:"image"})}),m&&k.length>0&&e("button",{className:`${a.playerBtn} ${A?a.playerBtnActive:""}`,onClick:()=>J(t=>!t),"aria-label":A?"Hide bookmarks":"Show bookmarks",title:"Timestamps",children:e(b,{name:"list-ol"})}),e("button",{className:a.playerBtn,onClick:P,"aria-label":"Close player",children:e(b,{name:"times"})})]})]}),Se=e(Ba,{preload:"metadata",onPause:xe,onTimeUpdate:q,onLoadedMetadata:Ge,onEnded:ye}),Le=e(sa,{isOpen:ke,onClose:()=>Q(!1),title:"Finished!",children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e(b,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),e("p",{style:{fontSize:"1.1rem",fontWeight:600},children:v?v(r):r}),e("p",{style:{color:"var(--text-secondary)"},children:"You finished this work!"}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(Ie,{variant:"secondary",onClick:()=>Q(!1),children:"Close"}),e(Ie,{onClick:Ke,children:"Mark Completed & Back to Home"})]})]})});if(!m)return Me(e(U,{children:[Se,e("div",{ref:g.containerRef,"data-player-root":"true",className:a.playerBar,children:Ae}),Le]}),document.body);const ue=Math.min(u,Math.max(0,l.length-1)),Re=l[ue],Qe=o&&ae&&!!Re&&!re.has(Re);return Me(e(U,{children:[Se,Le,e("div",{ref:g.containerRef,"data-player-root":"true",className:`${a.npOverlay} ${le?"":a.npOverlayControlsHidden}`,children:[e("div",{className:`${a.npStage} ${!o||!ae?a.npStageBlank:""}`,onClick:()=>j(t=>!t),children:o&&ae&&e(U,{children:[e("div",{className:a.sliderViewport,children:[e("div",{className:a.sliderTrack,style:{transform:`translateX(-${ue*100}%)`},children:l.map(t=>e("div",{className:a.slide,children:e("img",{ref:s=>z(s,t),src:t,alt:`${v?v(r):r} - work image`,loading:"lazy",decoding:"async",draggable:!1,onLoad:()=>K(t),onError:()=>K(t),className:`${a.slideImg} ${re.has(t)?a.slideImgLoaded:""}`})},t))}),Qe&&e("span",{className:a.slideSpinner,"aria-label":"Loading image"})]}),l.length>1&&e(U,{children:[e("button",{className:`${a.npArrow} ${a.npArrowLeft}`,onClick:t=>{t.stopPropagation(),I(s=>Math.max(0,s-1)),j(!0)},disabled:ue===0,"aria-label":"Previous image",children:e(b,{name:"chevron-left"})}),e("button",{className:`${a.npArrow} ${a.npArrowRight}`,onClick:t=>{t.stopPropagation(),I(s=>Math.min(l.length-1,s+1)),j(!0)},disabled:ue===l.length-1,"aria-label":"Next image",children:e(b,{name:"chevron-right"})}),e("span",{className:a.npImageCount,onClick:t=>t.stopPropagation(),children:[ue+1," / ",l.length]})]})]})}),e("div",{className:`${a.playerBar} ${a.playerBarDocked} ${le?"":a.playerBarDockedHidden}`,onClick:t=>t.stopPropagation(),children:[Ae,A&&e(U,{children:[e("div",{className:a.npBackdrop,onClick:()=>J(!1)}),e("div",{className:a.chapterPanel,children:k.map((t,s)=>e("button",{className:`${a.chapterRow} ${s===ze?a.chapterRowActive:""}`,title:v?v(t.label):t.label,onClick:()=>{Ye(t.time),J(!1)},children:[e("span",{className:a.chapterRowTime,children:Te(t.time)}),e("span",{className:a.chapterRowLabel,title:v?v(t.label):t.label,children:v?v(t.label):t.label})]},`${t.time}-${s}`))})]})]})]})]}),document.body)},Ve="asmrTranslateCache",nn=10080*60*1e3;function rn(){try{const r=be.getItem(Ve);if(!r)return new Map;const l=JSON.parse(r);return new Map(Object.entries(l))}catch{return new Map}}function sn(r){try{const l={};for(const[k,p]of r)l[k]=p;be.setItem(Ve,JSON.stringify(l))}catch{}}function De(r){return/[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF]/.test(r)}async function ln(r){const l=r.map(i=>i.trim()).filter(Boolean);if(l.length===0)return new Map;const k=await Be.settings.translate.mutate({texts:l,source:"ja",target:"en"}),p=new Map;for(const[i,m]of Object.entries(k.translations||{}))p.set(i,m);for(const i of l)p.has(i)||p.set(i,i);return p}function on(r,l){const[k,p]=N(new Map),[i,m]=N(!1),f=W(null),S=r.join("");return T(()=>{const w=S?S.split(""):[];if(!l||w.length===0){p(new Map),m(!1);return}const E=Array.from(new Set(w.map(h=>h.trim()).filter(Boolean).filter(De)));if(E.length===0){p(new Map);return}f.current||(f.current=rn());const P=Date.now(),g=new Map,y=[];for(const h of E){const c=f.current.get(h);c&&P-c.ts<nn?g.set(h,c.t):y.push(h)}if(y.length===0){p(g);return}let M=!1;m(!0);const L=[];for(let h=0;h<y.length;h+=15)L.push(y.slice(h,h+15));return(async()=>{const h=new Map;for(const o of L){try{const B=await ln(o);for(const[u,I]of B)h.set(u,I)}catch{}await new Promise(B=>setTimeout(B,120))}if(M)return;if(f.current){for(const[o,B]of h)f.current.set(o,{t:B,ts:Date.now()});sn(f.current)}const c=new Map([...g,...h]);p(c),m(!1)})(),()=>{M=!0}},[l,S]),{t:w=>!l||!w||!De(w)?w:k.get(w.trim())||w,map:k,isTranslating:i}}const cn=[{label:"Date",options:[{value:"latest",label:"Latest"},{value:"oldest",label:"Oldest"}]},{label:"Title",options:[{value:"title_asc",label:"A → Z"},{value:"title_desc",label:"Z → A"}]},{label:"Popular (Views)",options:[{value:"popular_recent",label:"Recent"},{value:"popular_week",label:"Week"},{value:"popular_month",label:"Month"},{value:"popular_6_months",label:"6 Months"},{value:"popular_year",label:"Year"},{value:"popular",label:"All Time"}]},{label:"Most Commented",options:[{value:"comments_week",label:"Week"},{value:"comments_month",label:"Month"},{value:"comments_year",label:"Year"},{value:"comments",label:"All Time"}]},{label:"Other",options:[{value:"random",label:"Random"}]}],dn=[{value:"",label:"All"},{value:"sfw",label:"SFW / 全年齢"},{value:"r-15",label:"R-15"},{value:"r-18",label:"NSFW / R18"},{value:"yuri",label:"Yuri / Girls love / 百合"},{value:"otokonoko",label:"Otoko no ko / 男の娘"},{value:"futanari",label:"Futanari / フタナリ"},{value:"r-18g",label:"R-18G / グロ"}],mn=[{value:"sfw",label:"SFW / 全年齢"}],Sn=()=>{const{rj:r}=ea(),l=We(),[k,p]=aa(),{hasConsent:i,grant:m}=la(),[f,S]=N(!1),[v,w]=N(()=>k.get("q")||""),[E,P]=N(()=>k.get("q")||""),[g,y]=N("latest"),[M,L]=N("sfw"),[h,c]=N(1),[o,B]=N(null),[u,I]=N(null),[re,se]=N(!0),[A,J]=N(()=>be.getItem("asmrTranslateEN")==="true"),{toggle:le,bookmarkedIds:j}=Ue(),{popup:R,openPopup:pe,scheduleClose:O,cancelClose:oe,closePopup:he}=ga();T(()=>{be.setItem("asmrTranslateEN",String(A))},[A]);const x=i,ke=x?M:"sfw",Q=x?dn:mn,{data:Z,isLoading:H,isError:ie,isFetching:G}=pa(E,h,g,ke),D=Ne.useMemo(()=>Z?.shows??[],[Z?.shows]),X=Z?.hasNext??!1;T(()=>{if(!r){o&&!u&&B(null);return}const n=r.toUpperCase();if(u&&(u.work.id?.toUpperCase()===n||u.work._id?.toUpperCase()===n)){o&&B(null);return}const d=D.find(C=>(C.id||C._id)?.toUpperCase()===n);d?(!o||(o.id||o._id)!==(d.id||d._id))&&B(d):(!o||(o.id||o._id)?.toUpperCase()!==n)&&B({_id:n,id:n,name:n})},[r,D,u,o]);const ce=V(()=>{l("/asmr")},[l]);T(()=>{!r&&u&&I(null)},[r,u]);const{data:ee}=Fe(u&&u.work.id||null),de=u?[u.work.thumbnail,...ee?.images||[]].filter(Boolean):[],ae=[...D.map(n=>n.name),o?.name||"",u?.work.name||"",...ee?.chapters?.map(n=>n.label)||[]].filter(Boolean),{t:F}=on(ae,A);T(()=>{const n=u?u.work.name:o?o.name:r?r.toUpperCase():"",d=n?A?F(n):n:"",C=d?`${d} - dango`:"dango";document.title=C;try{window.history.replaceState(window.history.state,C,window.location.href)}catch{}},[o,u,r,A,F]);const te=n=>{n.preventDefault(),P(v),c(1);const d=new URLSearchParams(k);v.trim()?d.set("q",v.trim()):d.delete("q"),d.delete("page"),p(d,{replace:!0})};T(()=>{const n=k.get("q")||"";w(d=>d===n?d:n),P(d=>d===n?d:n),c(1)},[k]);const ge=n=>{n.currentTarget.checked&&!i&&S(!0)},fe=()=>{m(),S(!1),c(1)},ne=()=>{S(!1)},me=V((n,d,C)=>{B(null),se(!0),I({work:n,tracks:d,index:C})},[]);return e("div",{className:`${Y.page} ${u?Y.pageWithPlayer:""}`,children:[!(u&&re)&&e(U,{children:[e("header",{className:Y.header,children:[e("h1",{className:Y.pageTitle,children:[e(b,{name:"headphones"})," ASMR"]}),e("form",{className:Y.searchForm,onSubmit:te,children:[e("input",{className:Y.searchInput,type:"text",value:v,onChange:n=>w(n.currentTarget.value),placeholder:"Search works, circles, CV… (-word excludes)","aria-label":"Search ASMR works"}),e("button",{className:Y.searchBtn,type:"submit","aria-label":"Search",children:e(b,{name:"search"})})]})]}),e("div",{className:a.filterBar,children:[e("label",{className:a.filterLabel,htmlFor:"asmr-sort",children:"Sort"}),e("select",{id:"asmr-sort",className:a.sortSelect,value:g,onChange:n=>{y(n.currentTarget.value),c(1)},children:cn.map(n=>e("optgroup",{label:n.label,children:n.options.map(d=>e("option",{value:d.value,children:d.label},d.value))},n.label))}),e("label",{className:a.filterLabel,htmlFor:"asmr-rating",children:"Type"}),e("select",{id:"asmr-rating",className:a.sortSelect,value:M,onChange:n=>{L(n.currentTarget.value),c(1)},children:Q.map(n=>e("option",{value:n.value,children:n.label},n.value))}),e("div",{className:a.filterTogglesGroup,children:[e("div",{className:a.translateToggleWrap,children:[e("span",{className:a.filterLabel,children:"JP"}),e($e,{id:"asmr-translate-toggle",isChecked:A,onChange:n=>J(n.currentTarget.checked)}),e("span",{className:a.filterLabel,children:"EN"})]}),!i&&e("div",{className:a.matureToggleWrap,children:[e("label",{className:a.matureLabel,htmlFor:"asmr-mature-toggle",children:"Mature"}),e($e,{id:"asmr-mature-toggle",isChecked:!1,onChange:ge})]})]})]}),ie?e("p",{className:a.statusMsg,children:"Failed to load works. Please try again."}):H&&D.length===0?e("div",{className:a.grid,"aria-hidden":!0,children:Array.from({length:12}).map((n,d)=>e("div",{className:a.skeletonCard,children:[e("div",{className:`${a.skeletonThumb} ${a.shimmer}`}),e("div",{className:`${a.skeletonLine} ${a.shimmer}`,style:{width:"88%"}}),e("div",{className:`${a.skeletonLine} ${a.shimmer}`,style:{width:"55%"}})]},d))}):D.length===0?e("p",{className:a.statusMsg,children:"No works found."}):e(U,{children:[e("div",{className:`${a.grid} ${G?a.fetching:""}`,children:D.map(n=>{const d=A?{...n,name:F(n.name)}:n,C=je(n),K=Ee(C),z=j.has(K),ye=`/asmr/${encodeURIComponent(C)}`;return e("div",{className:a.asmrCardWrap,children:[e(ia,{item:{id:K,title:d.name,thumbnail:n.thumbnail||"",typeBadge:C||void 0,isAdult:Ce(n)},linkTo:ye,hoverIcon:"info",layout:"horizontal",showInfoButton:!0,display:{elements:{poster:{typeBadge:!0,chapterBadge:!1,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!1,meta:!1}}},onOpenDetails:q=>pe(q,{rjCode:C,title:d.name,thumbnail:n.thumbnail||"",isAdult:Ce(n),rating:n.rating,listenTarget:ye}),onPopupHoverIntent:q=>q?oe():O(),rawThumbnail:!0}),e("button",{className:`${a.bookmarkBtn} ${z?a.bookmarked:""}`,onClick:q=>{q.preventDefault(),q.stopPropagation(),le({rjCode:C,title:n.name,thumbnail:n.thumbnail||"",isAdult:Ce(n)})},title:z?"Remove from listening list":"Add to listening list","aria-label":z?"Remove from listening list":"Add to listening list","aria-pressed":z,children:e(b,{name:z?"check":"plus",size:12})})]},n._id||n.id)})}),e("div",{className:a.pagination,children:e(ca,{page:h,canGoNext:X,onChange:n=>c(n),variant:"labeled"})})]})]}),o&&e(en,{work:o,onClose:ce,onPlay:me,t:F}),R&&e(ha,{data:R.data,anchorRect:R.rect,bookmarked:j.has(Ee(R.data.rjCode)),onToggleBookmark:()=>le({rjCode:R.data.rjCode,title:R.data.title,thumbnail:R.data.thumbnail||"",isAdult:R.data.isAdult}),onMouseEnter:oe,onMouseLeave:O,onRequestClose:he}),f&&e(oa,{isOpen:!0,scope:"section",showResetHint:!0,onClose:ne,onGrant:fe}),u&&e(an,{title:u.work.name,images:de,chapters:ee?.chapters||[],tracks:u.tracks,trackIndex:u.index,expanded:re,isAdult:!!u.work.isAdult,rjCode:u.work.id||u.work._id,t:F,onTrackChange:n=>I(d=>d&&{...d,index:n}),onExpandedChange:se,onClose:()=>{I(null),se(!0),r&&l("/asmr")}})]})};export{Sn as default};
|